加密算法:仅限用户解密



什么加密算法可以使用2个密钥:管理员-加密&解密用户-仅解密

您可以使用RSA通过使用私钥进行加密来实现这一点(就像您要签名一样)。元组(d,n)将是管理密钥(通常命名为私钥),(e,n)将是用户密钥(通常名称为公钥)。管理密钥用于加密,用户密钥用于解密。只有管理员拥有管理密钥,而用户和管理员都知道用户密钥。现在只有管理员可以加密,而用户只能解密。

请注意,我故意选择指数d作为加密管理密钥,而不是相反,因为e通常选择得很小以获得更好的性能,如果使用管理密钥而不是用户密钥进行加密,那么系统就会崩溃。

请注意,如果为此构建一个混合系统,则所需的仅解密属性会中断,因为用户也可以获得对称会话密钥并修改消息。

我怀疑您可能希望仅解密属性能够真正实现对潜在大量加密数据的身份验证(即,让用户知道数据必须来自管理员并且未被篡改)。如果是这样的话,您真正需要的是一个更复杂的方案,该方案具有适当的数字签名(提供身份验证)和某种形式的保密加密,例如使用对称密码进行批量加密的混合方案,以及使用RSA对对称密钥进行加密的方案。

然而,在设计这样的加密系统时,您应该非常小心,有很多东西可能会出错,并完全危及系统的安全。寻求专家建议。

编辑:这是不正确的(请参阅Daniel的评论)。

您可以修改任何算法以允许使用两个密钥,方法是生成会话密钥,使用该密钥加密有效负载,然后使用这两个密钥分别加密会话密钥。

例如,如果Ak是管理密钥,Uk是用户的密钥,Sk是随机会话密钥,而e(k, p)是对称加密函数,那么您将使用:

ciphertext = e(Ak, Sk) . e(Uk, Sk) . e(Sk, p)

最新更新