重放攻击的概念

根据百科的解释:重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(Freshness Attacks),是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。

它是一种攻击类型,这种攻击会不断恶意或欺诈性地重复一个有效的数据传输,重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。从这个解释上理解,加密可以有效防止会话劫持,但是却防止不了重放攻击。重放攻击任何网络通讯过程中都可能发生。重放攻击是计算机世界黑客常用的攻击方式之一,它的书面定义对不了解密码学的人来说比较抽象。

概念性的几个防御手段

时间戳

“时戳”──代表当前时刻的数

基本思想──A接收一个消息当且仅当其包含一个对A而言足够接近当前时刻的时戳

原理──重放的时戳将相对远离当前时刻

时钟要求──通信各方的计算机时钟保持同步

处理方式──设置大小适当的时间窗(间隔),越大越能包容网络传输延时,越小越能防重放攻击

适用性──用于非连接性的对话(在连接情形下双方时钟若偶然出现不同步,则正确的信息可能会被误判为重放信息而丢弃,而错误的重放信息可能会当作最新信息而接收)

序号

通信双方通过消息中的序列号来判断消息的新鲜性

要求通信双方必须事先协商一个初始序列号,并协商递增方法

提问与应答

“现时”──与当前事件有关的一次性随机数N(互不重复即可)

基本做法──期望从B获得消息的A 事先发给B一个现时N,并要求B应答的消息中包含N或f(N),f是A、B预先约定的简单函数

原理──A通过B回复的N或f(N)与自己发出是否一致来判定本次消息是不是重放的

时钟要求──无

适用性──用于连接性的对话

重放攻击是对协议的攻击中危害最大、最常见的一种攻击形式。

以登陆为例看具体的例子

常规流程

1.前端web页面用户输入账号、密码,点击登录。

2.请求提交之前,web端首先通过客户端脚本如javascript对密码原文进行md5加密。

3.提交账号、md5之后的密码

4.请求提交至后端,验证账号与密码是否与数据库中的一致,一致则认为登录成功,反之失败。

有什么问题呢?

上述流程看似安全,认为传输过程中的密码是md5之后的,即使被监听截取到,由于md5的不可逆性,密码明文也不会泄露。其实不然!监听者无需解密出密码明文即可登录!监听者只需将监听到的url(如:http://****/login.do?method=login&password=md5之后的密码&userid=登录账号)重放一下,即可冒充你的身份登录系统。

稍微安全点的方式

1.进入登陆页面时,生成一个随机码(称之为盐值),在客户端页面和session中各保存一份。

2.客户端提交登录请求时,将md5之后的密码与该随机码拼接后,再次执行md5,然后提交(提交的密码=md5(md5(密码明文)+随机码))。

3.后端接收到登录请求后,将从数据库中查询出的密码与session中的随机码拼接后,md5运算,然后与前端传递的结果进行比较。

为何要这样?

该登录方式,即使登录请求被监听到,回放登录URL,由于随机码不匹配(监听者的session中的随机码与被监听者的session中的随机码相同概率可忽略),无法登录成功。

该登录方式,由于传输的密码是原密码md5之后与随机码再次md5之后的结果,即使监听者采用暴力破解的方式,也很难解密出密码明文。

更进一步

考虑到密码输入的方便性,好多用户的密码都设置的很短,并且不够复杂,往往是6位数字字母组合,这样的密码md5之后保存到数据库,一旦数据库数据泄露,简单密码的md5结果很容易通过暴力破解的方式给解密出来,何况md5出现了这么多年,可能已经有不少字典了!同时为了方便用户登录的方便性,我们的系统一般不可能要求用户设置很长、很复杂的密码!怎么办?加固定盐值。1.系统设置一个固定的盐值,该盐值最好足够复杂,如:1qaz2wsx3edc4rfv!@#$%^&qqtrtRTWDFHAJBFHAGFUAHKJFHAJHFJHAJWRFA

2.用户注册、修改密码时,将用户的原始密码与我们的固定盐值拼接,然后做md5运算。

3.传递至后端,保存进数据库(数据库中保存的密码是用户的原始密码拼接固定盐值后,md5运算后的结果)。

4.登录时,将用户的原始密码与我们的固定盐值进行拼接,然后做md5运算,运算后的结果再拼接上我们的随机码,再次md5运算,然后提交。

5.后端接收到登录请求后,将从数据库中查询出的密码与session中的随机码拼接后,md5运算,然后与前端传递的结果进行比较。

再再进一步

1.加登录验证码,可预防人为地暴力登录破解

2.账户锁定,如果用户密码输入错误次数达到一定量后(如6次),则可以锁定该账号

转自:http://www.jb51.net/hack/546644.html

老生常谈重放攻击的概念(必看篇)相关推荐

  1. java 动态编译_老生常谈Java动态编译(必看篇)

    一.动态编译简介 new创建对象是静态加载类,在编译时刻就需要加载所有可能使用到的类. 一百个类,有一个类错了,都无法编译. 通过动态加载类可以解决该问题 二.代码实例 2.1 OfficeBette ...

  2. IO多路复用之select全面总结(必看篇)

    转载:http://www.jb51.net/article/101057.htm 1.基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程.IO多路复用适用如 ...

  3. 一个牛人给Java初学者的建议(必看篇)

    给初学者之一:浅谈Java及应用学java 从不知java为何物到现在一个小小的j2ee项目经理虽说不上此道高手,大概也算有点斤两了吧每次上网,泡bbs逛论坛,没少去java相关的版 面总体感觉初学者 ...

  4. php thrift 报错,thrift安装遇到的问题以及解决方法(必看篇)

    1. 必须安装boost.最新的稳定版是1.48.0. 1.1.先下载:http://sourceforge.NET/projects/boost/files/boost/1.48.0/ 选择tar. ...

  5. PHP项目部署在tomcat,在Tomcat中部署Web项目的操作方法(必看篇)

    在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Manager Web应用程序 一:部署解包的webapp目录 将Web项目部署到Tom ...

  6. python的难点_初学python的操作难点总结(新手必看篇)

    如下所示: 1 在cmd下 盘与盘之间的切换 直接 D或d: 就好 2 查找当前盘或者文件下面的目录 直接 dir 3 想在一个盘下进去一个文件夹,用cd空格目标文件 cd p 4 写文件的第一个字母 ...

  7. 怎么安装python_零基础入门必看篇:浅析python,PyCharm,Anaconda三者之间关系

    今天为大家带来的内容是:零基础入门必看篇:浅析python ,PyCharm,Anaconda三者之间关系 众所周知,Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C, ...

  8. phonegap html 缩放,phonegap常用事件总结(必看篇)

    在任何PhoneGap项目中,首先应该侦听deviceready事件.事件触发表示DOM已经加载和PhoneGapAPI已加载,此时可以检测其他事件或者处理其他内容. 其他事件: PhoneGap r ...

  9. python新手入门总结_初学python的操作难点总结(新手必看篇)

    如下所示: 1 在cmd下 盘与盘之间的切换 直接 D或d: 就好 2 查找当前盘或者文件下面的目录 直接 dir 3 想在一个盘下进去一个文件夹,用cd空格目标文件 cd p 4 写文件的第一个字母 ...

最新文章

  1. 将 Mac 直接连接到 Windows 电脑
  2. WebClient UI的Automatic Delta Handling是什么意思
  3. Java四大函数式接口
  4. win7一直显示正在启动_win7系统中提高启动速度并且禁用某些软件启动的操作小技巧...
  5. 想做一个程序员 这600个单词是你必须掌握的!
  6. python各个模块
  7. python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
  8. MeasureSpec详解
  9. 如何正确使用TM1652驱动共阴极数码管
  10. CAD工程制图基础命令(简洁版)
  11. 如何实现对合同进行智能化管理?
  12. MATLAB Smoothing Spline 拟合
  13. matlab牛顿法解非线性方程组,matlab实现牛顿迭代法求解非线性方程组.pdf
  14. 当局者迷旁观者清红警游戏反杀局案例分析
  15. win8 安装 iis 笔记
  16. 2021年中国综艺赞助情况回顾及未来发展趋势:品牌更乐于与成熟的综N代合作,未来合作方式更多元化[图]
  17. 机器学习算法(二十七):贝叶斯网络
  18. L2-040 哲哲打游戏 (25 分)(分析题目意思,读懂题)
  19. carmaker主要模块使用说明
  20. 关于自建数据中心机房和租用云服务器各方面对比分析

热门文章

  1. 用自信克服恐惧心理——职场人士寓言(15)
  2. html中的width无效,css max-width失效
  3. mangos S3 代码
  4. Centos7 bg与fg命令
  5. MATLAB 仿真实现任意(n,k,m)卷积码译码
  6. 有意思的MyHeritage
  7. 马云成功的九大秘籍与经典语录[收藏]
  8. 红黑树(Red–black tree)
  9. xp系统打开计算机配置文件,xp电脑重启后所有设置都还原了。
  10. 【linux】循序渐进学运维-基础篇-扩展swap分区