中间人攻击(英語:Man-in-the-middle attack,缩写:MITM)在密码学计算机安全领域中是指攻击者与通讯的两端分别建立独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。在许多情况下这是很简单的(例如,在一个未加密的Wi-Fi 无线接入点的接受范围内的中间人攻击者,可以将自己作为一个中间人插入这个网络)。

一个中间人攻击能成功的前提条件是攻击者能将自己伪装成每一个参与会话的终端,并且不被其他终端识破。中间人攻击是一个(缺乏)相互认证的攻击。大多数的加密协议都专门加入了一些特殊的认证方法以阻止中间人攻击。例如,SSL协议可以验证参与通讯的一方或双方使用的证书是否是由权威的受信任的数字证书认证机构颁发,并且能执行双向身份认证。

需要通过一个安全的通道做额外的传输

与連鎖協議不同,所有能抵御中间人攻击的加密系统都需要通过一个安全通道来传输或交换一些额外的信息。为了满足不同安全通道的不同安全需求,许多密钥交换协议已经被研究了出来。

攻击示例

http://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Man_in_the_middle_attack.svg/400px-Man_in_the_middle_attack.svg.png

中间人攻击示意图

假设爱丽丝(Alice)希望与鲍伯(Bob)通信。同时,马洛里(Mallory)希望拦截窃会话以进行窃听并可能在某些时候传送给鲍伯一个虚假的消息。

首先,爱丽丝会向鲍勃索取他的公钥。如果Bob将他的公钥发送给Alice,并且此时马洛里能够拦截到这个公钥,就可以实施中间人攻击。马洛里发送给爱丽丝一个伪造的消息,声称自己是鲍伯,并且附上了马洛里自己的公钥(而不是鲍伯的)。

爱丽丝收到公钥后相信这个公钥是鲍伯的,于是爱丽丝将她的消息用马洛里的公钥(爱丽丝以为是鲍伯的)加密,并将加密后的消息回给鲍伯。马洛里再次截获爱丽丝回给鲍伯的消息,并使用马洛里自己的私钥对消息进行解密,如果马洛里愿意,她也可以对消息进行修改,然后马洛里使用鲍伯原先发给爱丽丝的公钥对消息再次加密。当鲍伯收到新加密后的消息时,他会相信这是从爱丽丝那里发来的消息。

1.爱丽丝发送给鲍伯一条消息,卻被马洛里截获:

爱丽丝“嗨,鲍勃,我是爱丽丝。给我你的公钥” --> 马洛里  鲍勃

2.马洛里将这条截获的消息转送给鲍伯;此时鲍伯並無法分辨这条消息是否从真的爱丽丝那里发来的:

爱丽丝  马洛里“嗨,鲍勃,我是爱丽丝。给我你的公钥” --> 鲍伯

3.鲍伯回应爱丽丝的消息,并附上了他的公钥:

爱丽丝  马洛里<-- [鲍伯的公钥]-- 鲍伯

4.马洛里用自己的密钥替换了消息中鲍伯的密钥,并将消息转发给爱丽丝,声称这是鲍伯的公钥: