【发布时间】:2012-01-29 20:10:11
【问题描述】:
*澄清:我的问题与在现实世界中就密钥(读取密码)达成一致的两方之间建立“安全”通信渠道有关。只有使用 RSA 才允许 MITM 攻击(如果我没记错的话),所以我想在将公钥发送给各方之前用 AES(双方都同意的密钥)加密公钥 *
我目前正在尝试构建两个相互通信的应用程序。为了保护交换的消息,我正在考虑使用 RSA,其中每个应用程序都有自己的一组密钥。
在两个应用程序之间开始通信之前,它们确实需要交换密钥。这应该不是问题,但我正在考虑使用 AES 加密公钥,然后再通过 Internet 发送它们。
我知道公共这个词(如公钥)的含义,但我认为这会确保正确的应用程序/计算机获得密钥,而没有其他人。
所以我想交换密钥并保护它们免受 MITM 攻击。
如果有人能提供更好的建议(顺便说一句,我正在使用 LibCrypto 库),我会全力以赴。
谢谢。
最好的问候 /托马斯·古斯塔夫森
【问题讨论】:
-
如果您已经获得了预先建立的对称密钥,为什么还要进行非对称加密?您需要以某种方式创建 AES 会话密钥,最好是一种不易受到 MITM 攻击并且不会将您的主密钥暴露于危险的方法。但我认为这是错误的论坛,请尝试 crypto.stackexchange.com
-
哦,密码不是密钥。它可以被转换为到一个键,例如使用像 PBKDF2 这样的基于密码的密钥派生函数,但它不一样。例如,使用您的密码作为密钥可能会导致相关的密钥攻击。
-
好的,查了一下,可能密码作为密钥仍然不能用作相关的密钥攻击,但是您肯定将密码限制为密钥大小,这意味着您也在限制密钥空格(例如在暴力攻击中搜索的键数)。
标签: encryption rsa aes public-key-encryption encryption-asymmetric