首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂的加密/解密模型--这可能吗?

复杂的加密/解密模型--这可能吗?
EN

Stack Overflow用户
提问于 2011-06-27 11:08:43
回答 4查看 434关注 0票数 1

假设我有一个服务器,它将信息(例如通过消息总线)发布给四方: A、B、C和D。任何一方都可以以加密形式发现所有通信量。为了利用这些信息,显然需要解密:

  • 甲方应能读取所有信息(即解密提供给甲、乙和丙的信息)
  • 乙方应能阅读供乙方和丙方使用的信息
  • 甲方只能阅读甲方的信息
  • 甲方应能阅读乙方和乙方的信息

显然,这可以通过为每一方拥有完全独立的公钥/私钥对来实现,然后按照上面的要求共享私钥。不幸的是,这并没有很好地扩展到数百个缔约方。

有更好的方法吗?

编辑

基本上,我想做的是让每个人都拥有他们的私钥,当我加密一条消息时,我要说它是用key = A | B | C加密的,这意味着一个拥有A、B或C密钥的人可以解密它。想象一下,一个可以安装n锁的后备箱,任何一个都可以打开后备箱。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-28 04:13:17

您想要的可以使用基于公钥加密的普通协议来实现。弹跳城堡隐形眼镜API支持OpenPGPCMS,两者都可以从Scala中运行。

准备好一切:

  • 每一方都会得到一对公开/私钥。
代码语言:javascript
复制
- No one EVER shares the private key.  The private key must stay private

  • 每一方都知道对方的私钥

这些协议允许使用多个公钥进行加密。例如,如果您使用类似于PGPEncryptedDataGenerator的内容,那么您将为希望解密消息的每个收件人调用addMethod(PGPPublicKey)方法。

API有很多细微差别,但是单元测试和示例将真正帮助您导航它们。

实现细节

这两种协议的工作方式基本上是相同的。

  1. 安全地生成随机对称密钥
  2. 对于每个收件人,使用收件人的公钥加密对称密钥。所有加密的公钥都写入消息头中。
  3. 使用对称密钥加密消息。这将成为消息内容。

接收方反向处理以解密消息。

  1. 搜索消息头以找到指向self的密钥。
  2. 使用私钥解密对称密钥。
  3. 使用对称密钥解密邮件内容。
票数 1
EN

Stack Overflow用户

发布于 2011-06-27 11:33:33

想象一下超市。每个架子都是独立储存的。有一百个架子堆放工,每个人堆放许多架子。这些堆叠工人有经理,他们可以查看他们所有下属的货架。这些股票经理的部门经理可能有复杂的关系,例如经理A能够看到经理B的一个子集的货架。有几个商店经理什么都能看得到。

我不认为可伸缩性问题来自于使用公钥密码。它来自于需求的复杂性(希望有这么多可配置的组)。

如果你要向数百个用户发送同样的加密消息,并且其中可能有一个任意的子集来读取它,并且你希望以后能够修改这些权限,那么你需要给每个人自己的密钥对。

然后,您将发送对称加密的消息(带有随机会话密钥)以及为所有收件人加密的会话密钥副本。

如果您经常看到您处理的是完全相同的子集,则可以将这些会话键的有效性扩展到跨多个消息。然后,您不需要每次都发送所有的密钥(不过,过了一段时间后,它们仍然会过期)。

货架堆叠工、库存经理、部门经理或商店经理都不会有任何关于公钥/私钥密码学的线索。

他们的软件/设备会处理这件事。

票数 3
EN

Stack Overflow用户

发布于 2011-06-27 11:43:25

这里有一种方法需要n个密钥交换,但是保持消息本身与双方通信一样小。

假设您的问题的一般形式是:

  • 有n个政党,通过p_1通过p_n编号
  • 消息具有安全级别m,因此只有p_1到p_m的各方才能解密消息。

您可以使用此密钥交换步骤:

  • 生成n个AES键,编号为k_1到k_n。
  • 将每个密钥k_i安全地交给所有各方,p_1给p_i。

然后,要发送具有安全级别m的消息,只需使用密钥k_m对其进行加密。

这个方案的一个副作用是,派对p_b没有能力阻止p_a解密如果a< b所发送的消息,希望这是可以的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6491916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档