1、题目中这几种安全协议分别位于应用层、运输层、网络层,那么为什么需要在每一层提供安全性功能?仅在网络层提供安全性还不够吗?(1)IP层安全性并不能提供用户级别安全性,比如商业站点不能依赖IP层安全性来鉴别一个顾客(2)在协议层较高层部署新的因特网服务(如安全性服务)较为容易。
2、安全电子邮件
拿Alice和Bob举例,他俩通信最需要的安全性的三个方面是:机密性(别人截取了也无法破译看不懂)、发送方鉴别(确实是对方发的不是别人伪造的身份)、完整性(信件没被篡改)
先说机密性
如上图,Alice发给Bob的消息中:用对称密钥Ks加密报文,用Bob的公钥加密对称密钥Ks,两部分级联成一个包发给Bob;Bob收到包时,先用他的私钥解密得到对称密钥Ks,再用Ks解密报文m.
完整性和发送方鉴别
如上图,此时先不考虑报文的机密性,Alice用一个散列函数H(如MD5)对报文m 进行签名得到一个报文摘要,用她的私钥把报文摘要加密得到一个数字签名,报文m和数字签名级联成一个包发给Bob;Bob收到包时:用Alice的公钥作用于被签名的抱文摘要上,将摘要与自己对该报文散列H进行比较。
机密性、完整性及发送方鉴别结合如下图
先对原始报文算摘要及签名然后再对数据包加密。Alice两次用了公开密钥密码一次是她自己私钥,一次是Bob公钥,Bob 也用了两次一次自己私钥一次Alice公钥。
PGP就是一个电子邮件加密方案,此处不多说了。
3、使TCP 连接安全:SSL
SSL (Secure Socket Layer)即安全套接字,SSL3的一个稍加修改的版本称为TLS(Transport Layer Security )运输层安全性。
SSL得到了所有流行web浏览器和web服务器的支持基本上被所有因特网商业站点使用。
采用机密性、完整性、服务器鉴别、客户端鉴别来强化TCP 。
3.1 SSL宏观描述(此处简化版本称为类SSL)
SSL具有三个阶段:握手、密钥导出、数据传输。
握手
经过TCP三次握手后,Bob发送一个hello,Alice用证书响应,里面含有她的公钥,该公钥已被CA证实过,然后Bob产生一个主密钥MS,用Alice公钥加密MS生成EMS,Alice收到后用自己私钥解密。这之后双方都知道了这次SSL会话的主密钥。
密钥导出
有了MS后,可以用作后续加密和数据完整性检查的对称会话密钥,但对于Alice和Bob使用不同密钥,对于加密和完整性检查也使用不同密钥,更安全。因此使用MS生成4个密钥:
数据传输
TCP数据是一个流那么何时鉴别数据完整性?SSL将数据分割成一个个的记录,对每一个记录附加一个MAC用于完整性检查,再对记录+MAC进行加密。
这样还存在一个缺陷就是,攻击者截取到其中一个记录时,她可以删除、重放或者调换几个记录的顺序,而TCP层以及SSL子层均认为正常。
为解决这个问题,另外在每个记录里加上序号,没发送一个记录序号加1,MAC现在是数据➕MAC密钥MB➕当前序列号的散列。阻止了攻击者重排序重放报文段以及删除。
SSL记录结构如下
3.2 SSL更完整的描述
SSL握手
(1)客户发送它支持的密码算法列表以及一个不重数
(2)服务器选择一种对称算法、一种公钥算法和一种MAC算法,把它的选择以及证书和一个服务器不重数返给客户
(3)客户验证该证书,提取公钥,生成前主密钥(PMS),用公钥加密PMS,发给服务器
(4)使用相同密钥导出函数,客户和服务器独立的从PMS和不重数中计算出主密钥(MS),该MS被切片以生成两个密码和两个MAC密钥。此外,当选择的对称密码应用于CBC(3DES或AES)则两个初始化向量(IV)也是从MS获得。他们分别用于该连接的两端
(5)客户端发送所有握手的报文的一个MAC
(6)服务器端发送所有握手报文的一个MAC
说明:(1)最后两个步骤是为了使握手免受篡改危害
(2)不重数的作用是啥?序号不足以防止报文段重放攻击吗?对啊。假如Trudy前一天嗅探了Alice和Bob的所有报文,第二天Trudy冒充Bob发送正好是前一天Bob向Alice发送的相同的报文序列。Alice如果没有用不重数,她将以完全相同报文序列进行响应,不会发现异常。在SSL中,不重数用于防御“连接重放”。
连接关闭
用TCP FIN报文来终止SSL会话可以吗?
这样会为截断攻击创造条件,Trudy可以介入会话发送TCP FIN 结束会话。
解决方法:在类型字段中指出该记录是否用于终止该SSL会话。
尽管是明文,但接收方可以使用记录的MAC对他进行完整性鉴别。
4、IPSec介绍