Nonce、Timestamp——解决Replay-Attack问题
来源:互联网 发布:渠道管理 知乎 编辑:程序博客网 时间:2024/06/05 06:16
Nonce、Timestamp——解决Replay-Attack问题
Nonce是由服务器生成的一个随机数,在客户端第一次请求页面时将其发回客户端;客户端拿到这个Nonce,将其与用户密码串联在一起并进行非可逆加密(MD5、SHA1等等),然后将这个加密后的字符串和用户名、Nonce、加密算法名称一起发回服务器;服务器使用接收到的用户名到数据库搜索密码,然后跟客户端使用同样的算法对其进行加密,接着将其与客户端提交上来的加密字符串进行比较,如果两个字符串一致就表示用户身份有效。这样就解决了用户密码明文被窃取的问题,攻击者就算知道了算法名和nonce也无法解密出密码。
每个nonce只能供一个用户使用一次,这样就可以防止攻击者使用重放攻击,因为该Http报文已经无效。可选的实现方式是把每一次请求的Nonce保存到数据库,客户端再一次提交请求时将请求头中得Nonce与数据库中得数据作比较,如果已存在该Nonce,则证明该请求有可能是恶意的。然而这种解决方案也有个问题,很有可能在两次正常的资源请求中,产生的随机数是一样的,这样就造成正常的请求也被当成了攻击,随着数据库中保存的随机数不断增多,这个问题就会变得很明显。所以,还需要加上另外一个参数Timestamp(时间戳)。
Timestamp是根据服务器当前时间生成的一个字符串,与nonce放在一起,可以表示服务器在某个时间点生成的随机数。这样就算生成的随机数相同,但因为它们生成的时间点不一样,所以也算有效的随机数。
问题又来了,随着用户访问的增加,数据库中保存的nonce/timestamp/username数据量会变得非常大。对于这个问题,可选的解决方案是对数据设定一个“过期时间”,比如说在数据库中保存超过一天的数据将会被清除。如果是这样的,攻击者可以等待一天后,再将拦截到的HTTP报文提交到服务器,这时候因为nonce/timestamp/username数据已被服务器清除,请求将会被认为是有效的。要解决这个问题,就需要给时间戳设置一个超时时间,比如说将时间戳与服务器当前时间比较,如果相差一天则认为该时间戳是无效的。
- Nonce、Timestamp——解决Replay-Attack问题
- Nonce与Timestamp 解决Replay-Attack问题
- Replay attack
- 重放攻击简单介绍 ( replay attack )
- heartbeat报错 attempted replay attack
- timestamp应用(解决并发问题)——乐观锁和悲观锁
- timestamp应用(解决并发问题)——乐观锁和悲观锁【转】
- SmbRelay3 NTLM Replay Attack Tool/Exploit (MS08-068)
- nonce和timestamp在Http安全协议中的作用
- nonce和timestamp在Http安全协议中的作用
- nonce和timestamp在Http安全协议中的作用
- nonce和timestamp在Http安全协议中的作用
- nonce和timestamp在Http安全协议中的作用
- nonce和timestamp在Http安全协议中的作用
- nonce和timestamp在Http安全协议中的作用
- nonce和timestamp在Http安全协议中的作用
- 基于timestamp和nonce的防止重放攻击方案
- nonce和timestamp在Http安全协议中的作用
- java中long类型转换为int类型
- 苏嵌单片机(一)
- 卡尔曼滤波的原理说明
- GSON 报错HibernateProxy. Forgot to register a type adapter?
- dao--4.连接池
- Nonce、Timestamp——解决Replay-Attack问题
- Vue.Js2.0建议学习路线
- html标签一
- Gogs使用详解
- 最邻近规则分类算法(KNN)
- Java实现逆波兰表达式(Evaluate Reverse Polish Notation)
- Firefox定位网页元素工具
- 学openGL必知道的图形学知识
- 决策树之信息熵的理解