网络安全密钥是什么?小编教你安全密匙的加密消息认证码详解[推荐]( 二 )


五、防止数据篡改与消息认证码
假设有个坏家伙H,虽然不能发现A和B交换的秘密,但是他可以干预并且破坏他们的对话 。
举例来说,如果H位于A和B之间,他可以选择让大多数的消息返回以及向前继续传输没有改变,但是破坏了特定位的消息 。
A--> H hello
H--> B hello
B--> H Hi, I‘m B, B’s-certificate
H--> A Hi, I‘m B, B’s-certificate
A--> H prove it
H--> B prove it
B--> H A, This Is B{ digest[A, This Is B] } B‘s-private-key
H--> A A, This Is B{ digest[A, This Is B] } B’s-private-key
A--> H ok B, here is a secret B‘s-public-key
H--> B ok B, here is a secret B’s-public-key
B--> H {some message}secret-key
H--> A Garble[ {some message}secret-key ]
H一直让数据没有改变的通过,直到A和B分享一个秘密 。 然后H通过改变B发送给A的消息来进入这个方式中 。 这时候A是相信B的,因此她就可能相信这个改变的消息,然后按照它来做 。 注意H并不知道这个秘密-他能做的所有事就是破坏用这个秘密的密钥加密的数据 。 他可能不能利用这个协议制造出一条有效的消息,但是下一次,他可能会幸运一点 。
为了防止这种破坏,A和B在他们的协议中引入了一种消息认证码(MAC) 。 MAC是根据秘密的密钥和传输的数据计算出来的,上面描述的摘要算法的属性正好可以用于构造抵抗H的MAC功能 。
MAC := Digest[ some message, secret ]
因为H不知道这个秘密的密钥,所以他无法计算出这个摘要的正确数值 。 即使H随机的改变消息,如果摘要数据很大的话,他成功的可能性也很小 。 举例来说,通过使用MD5,A和B能和他们的消息一起发送128位的MAC值 。 H猜中这个正确的MAC值的几率是 18,446,744,073,709,551,616 分之1 。
下面是样本协议,又订正了一次:
A--> B hello
B--> A Hi, I‘m B, B’s-certificate
A--> B prove it
B--> A {digest[A, This Is B] } B‘s-private-key
ok B, here is a secret B’s-public-key
{some message,MAC}secret-key
H现在有麻烦了,H可以改变任何的消息,但是MAC的计算将揭露他的欺诈行为 。 A和B能发现伪造的MAC值并停止会话,H就不能伪造B的消息了 。
但是这样同样不能防范H鹦鹉学舌 。 如果H记录了会话的过程,他虽然可能不知道会话的内容,但是他可以重放这些会话 。 实际上,H能在A和B之间做一些真正龌龊的事 。
【网络安全密钥是什么?小编教你安全密匙的加密消息认证码详解[推荐]】以上内容就是关于网络安全密钥是什么?小编教你安全密匙的加密消息认证码详解[推荐]的详细内容,更过关于电脑系统百科的教程请关注我们!

推荐阅读