重放攻击(Replay Attack)是一种网络攻击手段,攻击者通过捕获并重复发送有效的数据包或消息,来欺骗系统或网络,以达到未经授权的访问、操作或者获取信息的目的。这种攻击利用了信息的有效性不随时间改变这一特性,即在网络通信中,一个有效且经过认证的数据包,在一段时间内重新发送依然会被系统认为是有效的。
重放攻击的常见场景包括但不限于:
-
身份验证系统:攻击者捕获用户的登录凭证(如用户名和密码或一次性口令),然后在有效期内或更晚些时候重新发送,以假冒该用户身份登录系统。
-
金融交易:攻击者可以拦截并记录一次成功的转账请求,稍后重复发送相同的请求,导致资金被多次非法转移。
-
授权指令:在物联网(IoT)设备或工业控制系统中,攻击者可能重放控制指令,如开启或关闭某些设备,造成物理世界的操作混乱或损坏。
防止重放攻击的常见方法有:
- 时间戳:在消息中加入时间戳,并要求接收方验证消息的新鲜度,拒绝接受过期的消息。
- 序列号:为每个发送的消息分配一个递增的序列号,接收方验证序列号的唯一性和连续性,拒绝重复或顺序错误的消息。
- 一次性密码(OTP):使用只能使用一次的密码,即使被截获也无法再次使用。
- 挑战-响应认证:系统向请求方提出挑战(如随机数),请求方必须根据这个挑战计算出一个正确的响应,这使得之前的记录无法再次使用。
- 会话密钥:在会话开始时协商一个临时密钥,后续通信使用该密钥加密,且密钥仅在会话期间有效,过期作废。