什麼加密算法,可以使用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. 加密和解密使用Base64算法
- 3. iPhone:支持的加密/解密算法
- 4. Android中的AES加密解密算法
- 5. 如何選擇加密算法來加密/解密文件?
- 6. 加密算法
- 7. 加密算法
- 8. 加密算法
- 9. 加密算法
- 10. AES解密算法
- 11. 加密與密碼算法顯示解密錯誤
- 12. 用戶輸入加密/解密
- 13. CakePHP用戶名加密/解密
- 14. 如何計算經過時間的加密和解密算法?
- 15. mysql用戶密碼算法
- 16. 數只散列或加密解密
- 17. pycrypto加密/解密,解密
- 18. 如何使用X509Certificate和AES-256算法加密/解密文本
- 19. 加密與C++和WinCrypt(RSA算法)庫和解密使用C#
- 20. 在iOS中使用MD5算法解密加密字符串
- 21. 用未知的加密算法base64解密
- 22. 在Botan庫中使用XTS算法進行加密/解密
- 23. 無法解密RSA加密密鑰
- 24. AES CBC加密/解密只解密前16個字節
- 25. OpenSSL加密/解密只解密前7個字符?
- 26. AES ECB加密/解密只解密前16個字節
- 27. 加密算法加密作業
- 28. 解密 - 加密加密JS
- 29. C#加密算法
- 30. J2ME加密算法
您的提議沒有用戶只能解密的期望屬性。由於用戶可以解密Sk,他們可以使用Sk來加密不同的有效載荷p,並從中構造一個新的密文。 – 2013-01-21 17:01:51
D'oh!你說得很對。謝謝。我將在這裏留下我的答案,作爲警告如何不這樣做。 – 2013-01-21 18:11:29