对于Alice和Bob之间的安全通信,如果他们有预共享密码。为什么该密码不应该用作通信的会话密钥?为什么不应该使用密码作为会话密钥
回答
因为在此通信会话中,您可能会传输大量数据。这些数据可以用来发现密码。
如果您使用会话密钥,它仅在一个会话期间有效,所以即使密码被泄露,密码也会保持安全。此外,发现此会话密钥的可能性较小,因为它会定期更改,因此攻击者可用的数据量将受到限制。
“*此数据可用于发现密码*” - 会话数据如何与密码相关? – SomeWittyUsername 2013-03-07 09:08:40
如果使用相同的密码来加密数据,攻击者可能会收集大量密码数据并使用某种线性分析来发现该密码。所以重点不在于会话数据和密码之间有关系。 – kamituel 2013-03-07 09:12:29
@icepack随着密钥加密的数据量的增加,密钥暴露的风险也随之上升。我想这里的建议是,更大量的示例数据使得密码分析更容易。 – 2013-03-07 09:12:40
密码通常是太短了,他们远不是随机因此其熵可以被攻击,并且他们保持一样的,所以获得的知识可能在将来的会话中使用。你最终得到的是一种自1850年以来已知可以破解的Vigenère-cipher。你必须自己决定,这是否“足够好”。
想象一下,攻击者发现从用户发送到服务器的数据。如果您将密码用作会话密钥,则攻击者可以完全访问您的帐户。
如果使用随机密钥,攻击者将只能期间会话密钥有效的时间访问到您的帐户(有些分钟,小时左右)。
这可能是密码被其他网站也使用(邮件为例),因此攻击者可以获取到更加帐户的访问。
然而,这个例子并不现实,因为会话密钥通常与用户的IP和其他相关信息相关联。这意味着攻击者必须伪造自己的IP才能使用会话密钥。
这也是为什么有些网站不允许您在未输入旧密码的情况下更改密码。这是因为如果攻击者劫持您的会话,他将无法劫持您的帐户。您的帐户(电子邮件,密码等)中的每个重要更改都应该使用“输入密码”字段进行保护,以便会话劫持不会成为严重的安全问题(这是一个安全问题,但只是暂时的而不是关键) 。
- 1. 使用GUID作为会话密钥?
- 2. 使用变量作为会话密钥
- 3. 为什么解密的密钥与加密密钥不一样?
- 4. 使用django会话的会话密钥作为外键
- 5. 为什么我们应该使用webapi密钥
- 6. 为什么我不应该使用md5()来输入密码?
- 7. 为什么CherryPy会话不需要密钥?
- 8. 为什么ASP.NET会员供应商不加密我的密码
- 9. 使用会话密钥加密Xml
- 10. 什么是Facebook会话密钥?
- 11. 为什么git使用GPG密钥而不是使用SSH密钥签名?
- 12. 使用“userData.uid”作为密钥
- 13. 密钥库:为什么getCertificateChain(..)不需要密码,而getKey需要密码?
- 14. 为密钥输入密码
- 15. 解密OpenPGP会话密钥
- 16. 为什么推介密钥?
- 17. 什么时候应该使用密码保护强名密钥文件?
- 18. 在node.js中为什么我应该使用readFileSync作为ssl证书和密钥?使用readFile有什么缺陷?
- 19. 我应该使用什么作为文档密钥来保持幂等性?
- 20. 为什么只使用webApps userID +密码而不是密码?
- 21. php mycrypt使用会话ID作为密钥
- 22. 为什么我的会话密钥在php中无效?
- 23. 为什么不同的密钥也可以解密JCE加密
- 24. 当使用256bit密钥调用aes128密码时,libgcrypt会有什么不同?
- 25. 生成会话密钥为facebook连接
- 26. AWS使用什么密码/密钥进行AES-256加密?
- 27. 为什么containsKey找不到密钥?
- 28. .Net将密钥作为密钥
- 29. 为什么Capistrano的要求SSH密钥的密码两次?
- 30. 为什么使用API密钥和秘密?
投票结束为“脱离主题”。这似乎不是一个编程特定的问题。 – 2013-03-07 09:10:16
确实,这将更适合我们的姊妹站点http://crypto.stackexchange.com – 2013-03-07 10:50:02