AES加密,公钥和私钥是什么?

32
在AES加密(.Net Framework)中,公钥和私钥如何使用?
公钥和私钥是否组合成完整的密钥,然后算法使用公钥+私钥来加密数据?
(以下是用于示例目的的简化键)
例如: 公钥=12345 私钥=67890
因此,在生成加密结果时使用的密钥为:1234567890
5个回答

97

如其他人所说,AES是一个对称算法 (私钥密码学)。这涉及到一个单一的密钥,这是发送方和接收方之间共享的秘密。一个类比是一个没有信槽的锁定邮箱。任何想要留言或阅读邮件的人都需要有一个邮箱的钥匙。

如果你真的想知道AES的详细内容,有一部极好的漫画可以引导你了解。

公钥加密涉及到每个接收者使用两个相关的密钥 - 一个私钥,只有接收者才知道,以及一个相关的公钥,所有发送者都知道。

发送方使用接收者的公钥来加密消息。只有拥有与公钥匹配的私钥的接收者才能解密该消息。

公钥加密的一个比喻是一个带有邮槽的锁定邮箱。邮槽暴露且可供所有人访问。它的位置(街道地址)是公钥。任何知道街道地址的人都可以到门口通过邮槽投递书面信息。但是,只有拥有私钥的人才能打开邮箱并阅读消息。


11
这漫画真是太棒了。既有趣又富有教育意义。让我的一天都变得美好起来了。 - Mario B

24

AES是一种对称算法,因此它没有公钥和私钥 - 只有一个共享密钥。


5

最简单的形式:

AES是一种对称算法,它使用相同的密钥进行加密和解密。因此,拥有密钥的人可以读取您的消息。

私钥和公钥用于非对称算法,如RSA,通常人们使用公钥进行加密,使用私钥进行解密(只有HMAC或MAC会使用私钥进行加密,使用公钥进行解密)。公钥为所有人所知,私钥仅为您自己所知,因此没有人可以读取发送给您的消息。


5
我不知道 .net 框架的具体工作方式(这个问题可能应该被标记为 .net),但从你的问题中可以看出它实现了公钥/私钥加密,只是在对称部分使用了 AES。
通常进行公钥加密的模式如下:
- 生成对称密钥 - 使用对称算法如 AES 加密数据 - 使用非对称算法如 RSA 加密对称密钥 - 将加密后的对称密钥与加密后的数据捆绑在一起
对于数据本身,对称算法比非对称算法更受欢迎的原因在于非对称算法非常慢。
考虑到他们无法测试安全性(他们真正拥有的只是对几个候选者的攻击不存在的证明),选择 Rijndael 作为 AES 的原因主要是出于性能方面的考虑。

你能给我一个链接来参考这个实践过程吗?谢谢。 - hanan

3
一个公钥与一个私钥相对应。公钥(RSA)分发到“公共领域”,任何想要发送加密文件的人(在这里泛指)都将请求公钥并根据其进行编码。即使获得了公钥,任何访问文件的人都无法阅读密文。
需要私钥来解密文件。只要保持私钥私有,静态地很难有人会猜测或攻击密钥。虽然不是不可能,但是概率很小。
真正的问题是保持私钥的私密性。大多数破解都是通过社交工程学完成的。勒索、记录器和中间人公钥转换等方式比暴力破解密码或密钥更有可能。
在你回复Brawndo的评论中,你问道:

那么如果两者都能解密其他人的文件,拥有公钥和私钥的意义是什么?为什么不都使用同一个密钥?

你所描述的是对称密钥算法,其中AES就是其中之一。公私钥的原因在于使用对称密钥算法时,如何在未经安全保护的网络、邮件、电话等传递对称密钥而不被拦截。也许可以加密密钥,但那么如何传递该密钥呢?通过公私钥组合,这变得不那么重要了。
“在大多数情况下,太阳烧尽所有计算机能够强制破解256位密钥所需的所有信息之前,有更大的可能性。” AccessData Corp的副总裁Jon Hansen说道,该公司位于犹他州林登市,该公司开发了DNA软件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接