重放攻击-实例解析

主要讲两点,是么是重放攻击?

                  ,怎么样防止重放攻击?

,重放攻击:顾名思义,重:再次放的意思。

主机A要给主机B发送报文,中间重放攻击的主人可以是A,或者是攻击者C

:当是A时,表示A会重复发送相同的报文给B,

:当是C时,表示C截获了A发送给B的报文,然后再伪装成A给B发送其截获的报文

重放攻击的含义:主机A给主机B发送的报文被攻击者C截获了,然后C伪装成A给B发送其截获来的报文,而B会误以为C就是A,就把回应报文发送给了C。

虽然A是加密的,但C根本不用破译。

实例分析:登录验证

登录验证的基本流程:(4步)

1,前端:

     用户输入账号,密码,然后登录

2,用户在发送登录请求之前,web端会首先对明文密码进行md5加密(而加密后的密码会储存于后端的数据库中)

3,提交账号及md5加密后的密码

4,请求到达后端,将 从数据库中提取的账号与密码和现在提交的账号与密码进行比较,如果相同,则登录成功。

那么在这中间会出现什么问题呢?

思考:这个过程安全吗?

我们知道,在此过程中传输的是经过md5加密后的密码,即使被监听者截取到,而md5是不可逆的,明文密码也不会泄露的 。

其实不然,监听者无需解出密码明文,即可登录——因为监听者只需将监听到的URL(uniform )重放一下,即可冒充你的身份登录系统。

下面我们讲解一下稍微安全一点的登录:

关键是:进行了两次加密,且攻击者的session中的随机码与数据库中的随机码相同的概率可以忽略。

1,进入前端用户登陆界面时生成一个随机码(盐值)(此随机码会在客户端和后端session中各保存一个)

2,用户在发送登录请求之前,web端首先会对明文密码进行md5加密,存于数据库中,然后加密后的密码再与盐值连接,再进行md5加密

最后密码=md5{[md5(明文密码)]+随机码}

3,请求到达后端后,将 从数据库中提取的md5加密后的密码+后端session中的盐值进行md5加密,与发送来的密文进行对比,若相同,则成功。

 更安全的登陆流程:

1,系统随机生成一个固定盐值,uerooejioeueo%@*?.,*6hgk,>ikuolm 足够复杂

2,当用户注册,修改密码时,明文密码会先于固定盐值连接,进行md5加密,然后再与随机码连接再次进行md5加密

最后密码=md5{【md5(明文密码+固定盐值)】+随机码}

最后更加完善的方式:

1,设置登陆验证码、

2,错误达到一定次数,锁定账号几分钟

3,存数据库前再加一次盐,然后再md5一次,防止拖库被猜密码

,防御方案:

1,加随机数:双方只需要记住各自使用过的随机数,不能有重复数,如果报文中有以前使用过的随机数,则被认为是重放攻击

                      优点:双方不需要保持时间的同步,

                      缺点:需要额外保存使用过的随机数,则需要保存和查询开销

2,加时间戳:时戳——代表当前时刻的数

                       而重放的时戳将相对远离当前时刻

                      优点:不需要内存开销

                      缺点:通信各方的计算机时钟必须保持同步(同步越好,受攻击的可能性越小)

3,加流水号:双方在报文中添加一个逐步递增的整数,则只要收到一个不连续的流水号报文(太大或者太小)就认为有重放威胁

                       优点:不需要时间同步,保存的信息量小

                       缺点:攻击者如果对报文解密成功,就获得了流水号进而会伪造数据

转载于:https://www.cnblogs.com/sharphui2018727-WYH/p/10068383.html

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值