什么加密算法,可以使用2个键: 管理员 - 加密解密& 和 用户 - 仅解密?加密算法:用户只解密
1
A
回答
0
编辑:这是不正确(请参阅Daniel的评论)。
您可以修改任何算法以允许通过生成会话密钥来允许两个密钥,使用该密钥加密有效负载,然后使用两个密钥对会话密钥进行加密。
例如,如果Ak
是管理的关键,Uk
是用户的关键,Sk
是随机会话密钥,并e(k, p)
是对称加密功能,那么你可以使用:
ciphertext = e(Ak, Sk) . e(Uk, Sk) . e(Sk, p)
2
你可以做这与RSA通过使用私钥进行加密(就好像你将签名一样)。元组(d,n)
将是管理密钥(通常称为私钥),(e,n)
将是用户密钥(通常称为公钥)。管理密钥用于加密,用于解密的用户密钥。只有管理员拥有管理员密钥,而用户和管理员都知道用户密钥。现在只有管理员可以加密,而用户只能解密。
注意,我特意选择了加密管理的关键,而不是反之亦然指数d
,因为e
通常选择为获得更好的性能非常小,如果你这样做与管理的关键,而不是用户密钥,那么系统将被破坏。
请注意,如果为此构建混合系统,则仅需要解密属性就会中断,因为用户也可以获得对称会话密钥并修改消息。
我怀疑你可能希望只用解密的属性来真正实现潜在的大量加密数据的认证(即,使用户知道数据必须来自管理员并且没有被篡改)。如果是这样,你真正需要的是一个更复杂的方案,它具有适当的数字签名(提供认证)和某种形式的机密性加密。使用对称密码进行批量加密以及例如RSA用于加密对称密钥。
但是,在设计像这样的密码系统时,您应该非常小心,因为存在可能出错并且完全危及系统安全性的事情lot。寻求专家意见。
相关问题
- 1. McEliece加密/解密算法
- 2. iPhone:支持的加密/解密算法
- 3. 加密算法
- 4. 加密算法
- 5. 加密算法
- 6. 加密算法
- 7. AES解密算法
- 8. 用户输入加密/解密
- 9. 如何计算经过时间的加密和解密算法?
- 10. pycrypto加密/解密,解密
- 11. 用未知的加密算法base64解密
- 12. 加密与C++和WinCrypt(RSA算法)库和解密使用C#
- 13. 在Botan库中使用XTS算法进行加密/解密
- 14. 无法解密RSA加密密钥
- 15. AES CBC加密/解密只解密前16个字节
- 16. AES ECB加密/解密只解密前16个字节
- 17. OpenSSL加密/解密只解密前7个字符?
- 18. 解密 - 加密加密JS
- 19. 加密算法iphone
- 20. C#加密算法
- 21. 加密/解密文件。用于加密/解密的ASCII +1
- 22. 如何解密通过加密AES算法加密的字符串
- 23. 使用加密算法来存储和检索用户名和用户密码
- 24. 加密,使用Rails解密
- 25. 使用Carrierwave加密/解密
- 26. 加密/解密使用EVP_ *
- 27. 使用AES加密/解密
- 28. Java - 从配置文件加密/解密用户名和密码
- 29. 如何?在ASP.NET中加密和解密用户成员密码
- 30. 解密EMV证书算法
您的提议没有用户只能解密的期望属性。由于用户可以解密Sk,他们可以使用Sk来加密不同的有效载荷p,并从中构造一个新的密文。 – 2013-01-21 17:01:51
D'oh!你说得很对。谢谢。我将在这里留下我的答案,作为警告如何不这样做。 – 2013-01-21 18:11:29