重放攻击是指攻击者发送一个目的主机已经接收过的包来达到欺骗系统的目的,主要用于身份认证的过程,破坏认证的正确性。
例子
当你在咖啡厅里,悠闲地喝着咖啡,蹭着网(咖啡厅里的公共网络)。这时你登录某个网站时,被第三方劫持到你发给服务器的请求,此时第三方可以将这个请求重新发给服务器,使用你的账号登录了网站,第三方可以替你买很多东西,你却浑然不知。
防御手段
- 随机数+数字签名
- 时间戳+数字签名
随机数+数字签名
客户端发送请求到服务端,服务端生成一个与id对应的随机数,然后返还给客户端。客户端利用该随机数+盐作为密钥对参数进行数字签名,再次请求服务端。
优点: 不依赖时钟同步
缺点: 需要两次请求
时间戳+数字签名
客户端利用时间戳+盐作为密钥对参数进行数字签名,请求服务端。服务端设置一个时间窗口,该窗口内请求有效,其他请求无效。
优点: 请求一次
缺点: 依赖时钟同步,时间窗口内,扔可重放攻击