【发布时间】:2012-11-11 18:11:23
【问题描述】:
我想保护我的数据不被未经授权的人更改或读取。环顾四周,我发现 Authenticated Encryption(AE) 是一种解决方案。
我知道我可以使用 CCM、GCM 或 EAX 中的任何一个在 Crypto++ 中进行 AE。但我注意到他们使用相同的密钥来加密和解密数据。我不希望这样,我宁愿使用非对称密钥来加密和解密我的数据。
如果我使用非对称算法对数据进行签名,然后使用对称算法对其进行加密,我将实现我想要的(这应该是安全的,因为它是 AtE 方法,对吧?)。
但在我这样做之前,是否有任何加密库可以满足我的需求?
【问题讨论】:
-
Authenticate-Then-Encrypt 往往会出现问题。我宁愿签署明文,然后使用经过身份验证的加密进行加密。
-
@CodesInChaos,这就是我最初想到的,但这不是我需要做的过度吗?
-
@owlstead 如果我错了,请纠正我。 RSA 使用公钥加密数据,因此,每个人都应该能够生成 AES 密钥,用 RSA 加密,执行 GCM 并将其发送给 Bob。 Bob 会认为这是来自 Alice 的有效消息,因为他可以解密密钥并将其与 GCM 一起使用来验证发送的消息。
-
但是对于数据签名,RSA 使用私钥。这就是唱歌的想法的来源。
标签: c++ authentication encryption cryptography crypto++