一、 定义
重放攻击(Replay Attacks)又称为重播攻击、回放攻击,一样平常是攻击者截获数据包后,无法解密数据,但可以把数据包和业务间的关系进行预测,重新发送相同数据包,来达到欺骗系统的目的,紧张用于身份认证过程、毁坏认证的精确性。
重放攻击可以由发起者、或拦截方进行。拦截方进行的重放攻击又称为中间人攻击。
重放攻击基于网络嗅探。很多时候嗅探到的数据是加密过的,但攻击者虽然无法解密,但如果攻击者知道数据的意义,就可以发送这些数据来攻击吸收端。

在物联网场景中,攻击者可以利用这种攻击掌握用户的设备。
二、类型根据重放的吸收方与的原定吸收方的关系,重放攻击可分为3种:
直接重放,即重放原来的验证端,直接重放的发送方和吸收方均不变反向重放,将原来发给吸收方的反向重放给发送方第三方重放,将重放给域内的其它验证端。三、防御方案1. 加随机数noncenonce是仅一次有效的随机字符串,一样平常可以利用韶光戳和客户端其它唯一性参数进行哈希运算。优点:认证双方不须要韶光同步,双方记住利用过的随机数,如果报文中有以前利用过的随机数,认为是重放攻击。缺陷:须要额外保存利用过的随机数,须要保存和查询开销,做事器端存放hash值的库会越来越大,要进行定期清理。定期清理后重放攻击大概会生效。
2. 加韶光戳timestamp在通讯中加入韶光戳,韶光差大于一定阈值的要求视为攻击。
优点:不须要额外保存信息缺陷:双方须要准确的韶光同步,同步越好,受攻击的可能性越小。对付分布式的分布,同步精确的韶光并不随意马虎;其余很多小型物联网设备,可能短缺精确的计时时钟。
3. 加流水号双方在报文中添加一个逐步递增的整数,只要吸收到一个不连续的流水号报文(太大或太小),就认定有重放威胁。优点:不须要韶光同步,保存的信息量小缺陷:攻击者如果对报文解密成功,就可以得到流水号,从而假造数据。
4. 寻衅-应答机制客户端要求做事器做事器先成一个随机数,发给客户端,每次随机数都有变革客户端带上这个随机数,访问做事器做事器验证如果随机数相同,不是重放攻击5. 一次性口令机制6. SSL/TLS对付web或socket通讯,加上SSL/TLS 可以有效防止基于中间人的重放攻击。
每个socket连接须要利用证书校验,新建的socket连接握手后是新的密钥利用双向认证可以更好地提高安全性SSL/TLS可以防止中间人的重放攻击,但攻击者霸占设备时仍可以自己建立联接、一直发起某个要求,业务层面还是须要其余的防重放攻击机制。(比如一个转账要求,攻击者直接在自己手机上截获要求并重发,做事器该当在SSL/TLS外还进行业务层面的限定)。7. 联合方案实际运用中常将1、2组合利用,保存某个韶光段内的所有随机数,而且韶光戳的同步也不须要太精确。验证流程(PHP代码示例):
//判断stime参数是否有效if( $now - $stime > 60){ die("要求超时");}//判断nonce参数是否在“凑集”已存在if( in_array($nonce,$nonceArray) ){ die("要求仅一次有效");}//验证数字署名 if ( $sign != md5($uid.$token.$stime.$nonce) ){ die("数字署名验证失落败");}//判断是否须要清理nonce凑集if( $now - $nonceArray->lastModifyTime > 60 ){ $nonceArray = null;}//记录本次要求的nonce参数$nonceArray.push($nonce);//开始处理合法的要求
四、注册上岸过程加强安全1. 注册用户提交的密码在客户端进行一次sha256运算运算后的值,在做事器与随机天生的繁芜盐值合并,再进行sha256存入数据库2. 上岸进入上岸页面时,天生一个随机码,在客户端、做事端保存;客户端上岸,将sha256之后的密码与随机码拼接,再次打算sha256,把这个数据和韶光戳提交做事端:提交的到做事器的数据=sha256(sha256(密码明文)+随机码))做事端吸收到要求,不仅较验运算后的密码,还要校验随机数、韶光戳的有效性。