计算机网络:网络安全

首先,SKa数字签名确保发送方的身份,再通过PKb加密,经过互联网的传输,接收方核实签名、解密。

但对较长的报文进行数字签名会加大计算机的计算量,需要较长时间。因此,提出了使用密码散列函数

即使H(X)被截获了,截获者也无法伪造出Y  使H(X)=H(Y)

改进后的加密过程如上图,对报文不需要加密,仅把散列H用密钥K加密。散列H的长度远小于报文X的长度,因此无需消耗很多计算资源。鉴别码MAC能够很方便地保护报文的完整性。

实体鉴别

对自己和通信方实体的一次验证,引入了不重数

1. A-->B 发送 其身份A,不重数RA

2. B-->A 用共享密钥K[AB]加密后的不重数RA'  , 并用B的私钥SK[B]进行签名RA' ,不重RB

// A用B的公钥PB[B]核实签名,就能得出自己发送的RA,核实了和自己通信的是B

3. A-->B 用共享密钥K[AB]加密后的不重数RB' ,并用A的私钥SK[A]进行签名RB'

// B用A的公钥PB[A]核实签名,就能得出自己发送的RB,核实了和自己通信的是A

但这种通信方式有个很大的缺陷---- 中间人攻击

 

          1/ A发送身份A给B,被C截获                                   C --> B  2/ C原封不动把A的身份信息给B

                                                                                            C <-- B  3/ B选择不重数RB发给A,被C截获

          4/ C把RB转发给A                                                      C --> B  5/ C用私钥SKc对RB加密后,发给B

          6/ A用私钥SKa对RB加密后,发给B 被C丢弃           C <-- B  7/ B向A索要公钥PKA

          8/ C向A索要公钥PKA                                                C --> B  9/ C把自己的公钥PKc发给B,B以为收到的是A的公钥

         10/ A向B发送自己的公钥PKA ,被C截获                  C <-- B  11/ B把data用PKc加密后发给A

                                                                      12.C收到data后用自己的私钥SKc解密,复制一份用PKA加密,发给A

         13/ A收到C(以为是B)发来的data,用私钥SKa解密,得到data原数据

整个过程就实现了AB之间的通信,且C截获了数据 但AB毫无察觉

原文地址:https://www.cnblogs.com/l20902/p/10610957.html