网络通信需要安全
所谓的网络通信就是进程与进程之间的通信
然而进程的通信一般可以分成两类: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.双方互相结束通信:
原文地址:http://blog.51cto.com/weidehong/2094980