网络通信需要安全
所谓的网络通信就是进程与进程之间的通信
然而进程的通信一般可以分成两类:1、同一主机之间的进程通信
2、不同主机之间的进程通信
同一主机之间的通信有这些:管道、命名管道、消息队列、信号量、共享内核
管道:用于有亲缘关系(附属关系、父子关系等)的进程间通信
命名管道:以用于无关进程之间的数据交换
消息队列:存放在内核中的消息的链接表,由QID进行标识
信号量:是一个计数器;用于实现进程间的互斥与同步
共享内核:指两个及以上的进程或线程共享一个给定的内存存储区域
不同主机之间的通信有这些:套接字,Socket,IP:PORT,进程地址标识,即:一个套接字就是指某个特定主机上的特定应用程序;
套接字又可以分为3种:1、流套接字
2、数据报套接字
3、原始套接字
流套接字:ocket_Stream,基于TCP协议通信的套接字
数据报套接字:Socket_Dgram,基于UDP协议通信的套接字
原始套接字:裸套接字,Socket_Raw,基于更底层的协议(如:IP)通信的套接字;
安全实现的目标:
机密性:confidenciality,保证数据信息不泄露;
完整性:integrity,保证数据信息不被篡改;
可用性:availability,保证数据信息的内在价值;
威胁安全的行为:
威胁机密性的***行为:窃听,嗅探,通信量分析;
威胁完整性的***行为:篡改,伪装,重放,否认;
威胁可用性的***行为:拒绝服务(DoS),分布式拒绝服务(DDoS);
安全解决方案:技术与服务
技术:加密和解密
加密和解密有两种方法:1、传统的:置换加密、替换加密
2、现代的:块加密
服务: 用于抵御***而提供的为了实现上述安全目标而特别设计的安全服务;
1、 身份认证;
2、访问控制;
加密方案:
因素:1、加密算法和协议;
2、加密密钥
加密算法和协议有:1、对称加密算法:加密和解密使用同一密钥
2、公钥加密算法(非对称加密算法):
3、单向加密算法(Hash加密算法,数据指纹算法);
4、认证协议;
加密算法的应用:
1.通信双方互相交换各自的证书,并到信任的CA进行证书有效性认证;
2.如果证书认证有有效,发送方使用某种协商好的对称加密算法进行数据加密;对加密后的数据进行特征值抽取;再用自己的私钥加密抽取出来的特征值,以证明数据来源可靠性;发送方利用接收方的公钥加密对称加密算法的密钥;
3.接收方在收到数据报文之后,先用自己的私钥解密对称加密算法的密钥;然后用发送方的公钥解密被加密的特征值,以证明数据来源可靠;再利用相同的单向加密算法计算数据的特征值,比较两个特征值,以证明数据完整性;再用对称密钥解密加密的数据即可;
以CA为核心生成的一套安全架构体系:
PKI:Public Key Infrastructure,公钥基础设施;其包含的内容:
1.签证机构:CA
2.注册机构:RA
3.证书吊销列表:CRL
4.证书存储库:CR
国际标准化组织(ISO)定义了证书的结构和认证标准:X.509协议标准:
证书的组成包括:
证书的版本号;
证书的序列号;
有效期限;
签发算法的ID;
签发CA的名称;
主体的名称;
主体的公钥;
主体唯一标识符;
发证者的唯一标识符;
发证者的数字签名;
扩展信息;
CA如何发挥作用?
1.通信双方互相交换证书;
2.双方验证证书的真伪;
3.双方协商加密算法;
4.用CA颁发的公钥解密证书的中CA的签名,能解密说明证书来源可靠;
5.用CA的加密算法加密证书,并取得特征值;与解密出来的特征值进行比较,如果相同,说明证书完整性有保证;
6.检查证书的有效期是否合法,如果在有效期内,则证书可用;
7.检查证书的主体名称和此次通信的目标是否能够对应;
8.检查证书是否被吊销;
能够实现上述安全加密功能的协议:
SSL:Security Socket Layer,安全套接字层;
1994年,Netscape(网景)公司最先声明并实施;
SSL V1.0
SSL V2.0
SSL V3.0
TLS:Transport Layer Security,传输层安全协议;
IETF:Internet Engineering Task Force,互联网工程项目小组;
1999年提出TLS V1.0
2006年提出TLS V1.1
2008年提出TLS V1.2草案,添加了椭圆曲线加密算法;
分层设计方案:
1.最底层:规定了基础算法的原语的实现;包括:AES, md5, sha,...
2.向上一层:各种算法的基本实现;
3.再向上一层:各种算法组合实现的半成品;
4.最高层:用各种组件拼装而成的各种成品密码学协议软件;
SSL/TLS的handshake的四个阶段:
1.客户端向服务器索要证书并验证证书;
发送Client Hello的消息,此消息主要内容:
支持的协议的版本,如:SSL v3.0或TLS v1.2;
客户端生成一个随机数,稍后用于生成回话密钥;
支持的加密算法,如:DES,3DES,AES,RSA,....
支持的压缩算法,如:gzip,bzip2,deflate,...
2.双方协商生成会话密钥:
发送Server Hello消息,此消息主要内容:
确认使用的协议的版本,如:TLS v1.2
服务器也生成一个随机数,稍后用于生成会话密钥;
确认加密算法和压缩算法;
服务器的证书;
3.双方采用以及生成的会话密钥进行安全加密的数据通信:
客户端验证服务器证书,在确认无误后,取出其中的服务器公钥;
验证服务器证书的步骤:
验证发证机构(CA);
验证证书的完整性;
验证证书的持有者信息;
验证证书的有效期;
验证CA的吊销列表中是否有此证书;
客户端发送信息给服务器端;
客户端再次生成一个随机数,用于公钥加密;
编码格式的变更通知,表示以后的信息都将采用双方已经协商好的加密算法和压缩算法;
客户端握手结束;
服务器收到客户端发送来的第三个随机数(Pre_Master_key),计算生成此次会话用到的会话密钥,向客户端发送相关信息;
编码格式的变更通知,表示以后的信息都将采用双方已经协商好的加密算法和压缩算法;
服务器端握手结束;
4.双方互相结束通信:
转载于:https://blog.51cto.com/weidehong/2094980