首页 > 解决方案 > 单密钥加密和多密钥解密

问题描述

我正在寻找一种使用单一密钥进行加密的机制。但对于解密它需要多个密钥 2、3、4 和 5。请注意,我希望所有(2、3、4 和 5)密钥都需要解密。我想在python中实现它。但我在网上找不到混凝土材料。我根据它找到了具有多个密钥的答案 加密/解密, 我可以为此目的使用 GnuPG。我读了 GnuPG,但我找不到答案。我找到了Shamir's Secret Sharing我相信它可以解决我的问题。但我找不到它在密码学或其他流行的 python 包中的实现。我已准备好实现 Shamir 的秘密共享的 Wikipedia 页面中给出的代码。但我有一个问题。我不确定它的实施是否安全?

标签: python-3.xencryptioncryptography

解决方案


请注意,我希望所有(2、3、4 和 5)密钥都需要解密。
找到Shamir的秘密分享我相信它可以解决我的问题

Shamir's Secret Sharing 也可以解决您的问题,但它可以做的更多(恢复只有密钥子集的解密密钥)。这样做是以牺牲复杂性和性能为代价的。如果您考虑将来使用共享(子集)的任何选项,恕我直言,来自 Kelalaka 的链接可能是您可以获得的最佳案例。

如果您需要所有密钥进行解密,您可以简化代码以使用任何安全操作(XOR、哈希、无剩余加法......)从 N 个随机密钥(更快、更简单)派生加密密钥。我更喜欢使用简单的 XOR,因为它是一种可交换操作,快速且开箱即用

例子:

  • 生成 N 个随机解密密钥
  • XOR所有解密密钥以获得加密密钥

笔记。您的第一个链接(使用多个密钥进行加密/解密)是使用 GPG 分别为多个收件人(公钥)加密单个加密密钥,因此任何收件人都可以恢复加密密钥


推荐阅读