Java 多个未知收件人的文本加密
Java Text Encryption for Multiple Unknown Recipients
我有一个应用程序可以很好地使用共享 public/secret 私钥来加密任意大文本字符串。
我在
中使用 BouncyCastle
private static final String ALGORITHM = "RSA";
private static final String UTF_8 = "UTF-8";
private static final int KEY_SIZE = 2048;
所以以 Bob 和 Annie 为例
Annie 和 Bob 共享 public 个密钥...
Annie 可以使用 Bob 的 public 密钥向 Bob 发送加密消息来加密她的消息。随着鲍勃愉快地使用他的私钥解密。
Bob 可以回复一条用 Annies public 密钥加密的消息。
但是,安妮如何向未知收件人发送加密邮件?
Annie 如何 "publish" 向未知收件人列表发送消息?
这可能吗?
根据 public 密钥加密原理,Annie 无法将加密消息发布给一组技术上未知的收件人。她必须有 public 密钥(证书)可用。
您或您的应用程序不必负责密钥管理,只要受信任的第三方证书颁发机构和注册机构可以管理它们即可。如果这在您的环境中可行,您最多必须对每个 public 密钥证书执行路径验证,而不是直接管理 material.
如果不了解至少一个关于他们的事情,你就不能真正地向某人发送任何东西。那一件事不一定是 public 键。也可以是别的。
RSA 和基于 EC 的同行并不是非对称加密领域的唯一参与者。
基于身份的加密 (IBE) 使任何人都可以为只知道 "identity" 的人加密某些内容,这是一个简单的字符串。对于许多人来说,他们的身份与他们的电子邮件地址紧密相关,因此您可以使用它。当然,它不一定是。它只需要是一个唯一的字符串。
受信任的第三方稍后会检查申请其私钥的客户端的身份,如果身份匹配,它将生成私钥用于解密。考虑到它已经存在了多长时间,我确定在 Java 附近的某个地方有 IBE 实施。
IBE 的一个问题是您仍然可能需要向每个预期的收件人发送许多邮件。
基于属性的加密 (ABE) 在这方面更好,因为您可以使用策略加密一些明文(在基于属性的访问控制中sense)并且只有当接收者持有必要的属性密钥时才能解密。这称为密文策略 ABE。 Here描述的更详细一点。
您仍然需要一个受信任的第三方,但现在您可以轻松地根据属性为群组加密。私钥生成可以在加密之后发生。 JCPABE 库是用 Java 编写的,在 Java 中可以完全运行。它基于jPBC,但可以通过额外安装原始C版本的libpbc来加速。
我有一个应用程序可以很好地使用共享 public/secret 私钥来加密任意大文本字符串。
我在
中使用 BouncyCastleprivate static final String ALGORITHM = "RSA";
private static final String UTF_8 = "UTF-8";
private static final int KEY_SIZE = 2048;
所以以 Bob 和 Annie 为例
Annie 和 Bob 共享 public 个密钥...
Annie 可以使用 Bob 的 public 密钥向 Bob 发送加密消息来加密她的消息。随着鲍勃愉快地使用他的私钥解密。
Bob 可以回复一条用 Annies public 密钥加密的消息。
但是,安妮如何向未知收件人发送加密邮件?
Annie 如何 "publish" 向未知收件人列表发送消息?
这可能吗?
根据 public 密钥加密原理,Annie 无法将加密消息发布给一组技术上未知的收件人。她必须有 public 密钥(证书)可用。
您或您的应用程序不必负责密钥管理,只要受信任的第三方证书颁发机构和注册机构可以管理它们即可。如果这在您的环境中可行,您最多必须对每个 public 密钥证书执行路径验证,而不是直接管理 material.
如果不了解至少一个关于他们的事情,你就不能真正地向某人发送任何东西。那一件事不一定是 public 键。也可以是别的。
RSA 和基于 EC 的同行并不是非对称加密领域的唯一参与者。
基于身份的加密 (IBE) 使任何人都可以为只知道 "identity" 的人加密某些内容,这是一个简单的字符串。对于许多人来说,他们的身份与他们的电子邮件地址紧密相关,因此您可以使用它。当然,它不一定是。它只需要是一个唯一的字符串。
受信任的第三方稍后会检查申请其私钥的客户端的身份,如果身份匹配,它将生成私钥用于解密。考虑到它已经存在了多长时间,我确定在 Java 附近的某个地方有 IBE 实施。
IBE 的一个问题是您仍然可能需要向每个预期的收件人发送许多邮件。
基于属性的加密 (ABE) 在这方面更好,因为您可以使用策略加密一些明文(在基于属性的访问控制中sense)并且只有当接收者持有必要的属性密钥时才能解密。这称为密文策略 ABE。 Here描述的更详细一点。
您仍然需要一个受信任的第三方,但现在您可以轻松地根据属性为群组加密。私钥生成可以在加密之后发生。 JCPABE 库是用 Java 编写的,在 Java 中可以完全运行。它基于jPBC,但可以通过额外安装原始C版本的libpbc来加速。