重放攻击是指网络犯罪分子窃听安全网络通信,拦截通信,然后用欺诈手段延迟或重新发送通信,以误导接收者执行黑客想要的操作。重放攻击的额外危险在于,黑客从网络中捕获消息后,甚至不需要高级技能即可解密消息。只需重新发送整个内容,攻击就可能成功。
原理
考虑以下真实世界攻击示例。一名公司职员向公司的财务管理员发送加密消息,要求进行财务转账。一名攻击者窃听到此消息,将其捕获,而且现在能够重新发送。由于这是真实消息,只是被重新发送而已,因此该消息的加密正确,并且在财务管理员看来是合法的。
在这种情况下,财务管理员很可能会回应这个新要求,除非有充分的理由怀疑其真实性。回应可能包括向攻击者的银行账户汇一大笔钱。
阻止重放攻击
防止此类攻击的关键在于采用正确的加密方法。加密的消息中携带有“密钥”,在传输结束时对密钥进行解码,从而打开消息。在重放攻击中,拦截原始消息的攻击者是否可以读取或破译密钥并不重要。攻击者只需捕获并重新发送整个内容,包括消息和密钥。
为了应对这种可能性,发送方和接收方都应该建立一个完全随机的会话密钥,该类型的密钥仅对一个事务有效,不能再次使用。
另一种预防此类攻击的措施是在所有消息中使用时间戳。这可以防止黑客重新发送超过一定时间长度之前发送的消息,从而缩小攻击者窃听、截获和重新发送消息的机会窗口。
另一个避免成为受害者的方法是为每个事务都设置一个只使用一次就丢弃的密码。这可以确保即使消息被攻击者记录并重新发送,加密代码也已经过期,不再起作用。