一、密码学
块密码:是一种对称密钥,是将报文处理为k比特的块,每块进行独立加密。块密码应用于多种因特网协议的加密中,包括PGP、SSL。
DES使用使用具有56比特密钥的64比特块,AES使用128比特块,能够用128、192以及256比特长的密钥进行操作
公开密钥加密:一方将自己的公钥发给另一方,另一方使用该公钥加密后,将加密数据报发回给他,他再通过自己的私钥进行解密。
1.1 RSA
是一种公开密钥密码,它广泛的使用了模n算术运算
但是它要求的指数运算相当耗费时间,因此将对数据加密转变为了对密钥加密,对密钥加密的就称为会话密钥。
1.2 报文完整性和数字签名
密码散列函数:MD5
确定收发双方身份,加上双方共享的鉴别密钥,通过密码散列函数进行加密之后得到的散列值为报文鉴别码(mac密钥)。
数字签名:私钥进行加密,公钥用来解密,确定签署人。引入了散列函数,将数据报的散列函数进行加密,减轻加解密开销。
公钥认证:将公钥与特定实体进行绑定,由认证中心完(CA)成
端点鉴别:一个实体经过计算机向另一个实体证明其身份的过程。ap4.0才用了在收发数据中添加不重复序号,防止入侵者冒充用户访问。
1.3 PGP
电子邮件加密方案,pgp允许用户选择是否对报文进行数字签名、加密报文,或同时进行数字签名和加密
1.4 SSL
安全套接字层(SSL)是TCP的强化版本,提供包括机密性、数据完整性以及端点鉴别的传输层安全服务。
过程:
握手
- 客户发送它支持的密码算法列表,以及一个不重复数。
- 从该列表中,服务器选择一种对称算法、一种公钥算法、一种MAC算法。它把自己的选择、证书以及不重复数返回给客户。
- 客户验证证书,并提取服务器公钥,生成前主密钥,用服务器公钥进行加密,并将加密后的pms发送给服务器
- 使用相同的密钥导出函数,客户和服务器独立的从PMS和不重复数中计算出主密钥(MS),再进行切片形成两个密码以及两个MAC密钥。客户和服务器之间的所有报文均被加密和鉴别。
- 客户发送所有握手报文的mac,服务器发送所有握手报文的mac
终止对话,在ssl类型字段中指出该记录是否用于终止该ssl会话。
1.5 IPsec
许多机构使用IPsec创建了VPN。
鉴别首部协议(AH)以及封装安全性载荷协议(ESP),AH提供源鉴别和数据完整性服务,ESP提供源鉴别、数据完整性以及机密性服务。esp协议使用更广泛
安全关联
在源实体向目的实体发送IPsec数据报之前,源和目的实体创建了一个网络层的逻辑连接,又称安全关联(SA)。如果两个实体之间需要互发数据,就要创建2个SA。
在上图中,路由器将维护有关SA的状态信息,包括:
- SA的32比特标识符,称为安全参数索引
- SA的初始接口(即200.168.1.100)和SA的目的接口(即193.68.2.23)
- 将使用的加密类型
- 加密密钥
- 完整性的检查类型
- 鉴别密钥
当它需要构建一个IPsec时,它会根据状态信息进行加密和鉴别。
一个IPsec实体在安全关联数据库(SAD)中维护其所有的SA状态信息。SAD在操作系统内核中是一种数据结构。
IPsec有两种分组形式,一种是隧道模式,一种是运输模式。
从一个普通IPV4数据报转换为IPsec数据报的过程:
- 在初始的IPV4数据报后面附上ESP尾部
- 使用算法和由SA规定的密钥加密该数据报
- 在加密量前面加上ESP首部字段
- 使用算法和由SA规定的密钥生成一个覆盖整个目前得到的数据报的鉴别mac
- 该mac附加到整个数据报的后面
- 最后,生成一个具有IPV4首部字段的全新IP首部,并将该首部加到数据报之前
在新加入的IPV4首部中的ip地址实际是位于隧道两端点的源和目的地路由器的接口,也就是200.168.1.100以及193.68.2.23。这个首部字段中的协议号不被设置为TCP、UDP或SMTP,而是被设置为50,表示该数据报是一个使用ESP的IPsec数据报。
解析:
- esp尾部包含了三个字段:填充、填充长度、下一个首部,填充是一段无意义的字节,使报文称为块的整数倍,下一个首部指的是载荷数据字段中数据的类型(如UDP)。载荷数据回合esp尾部一同加密
- ESP首部由两部分组成:SPI、序号。SPI字段指示接受实体数据报属于哪个SA,接收实体能够用该SPI索引其SAD确定适当的解密/鉴别算法和密钥。序号字段则是防止重放攻击
在R2接收到该IPsec数据报之后的处理过程:
- 通过ESP首部中的SPI知道该数据报属于哪个SA
- 计算MAC,与ESPmac作对比,确定数据报是否遭到篡改
- 检查序号字段,确定该数据报是全新的
- 使用与SA相关联的解密算法以及密钥解密数据报
- 删除填充,并抽取初始的IP数据报
- 将最后得到的IP数据报转发给真正的接收人。
另:SPD:安全策略库,在发送方的路由器中,SPD指示那些类型(协议类型)的数据报将被IPsec处理,并决定这些被IPsec处理的数据包应当使用哪个SA。