Encryption
這叫什麼:加密XXX帶鑰匙和和E, 解密XXX帶鑰匙DDD?
我是一名對使用密碼學開發應用程序感興趣的軟體開發人員。我可以解釋我想要完成什麼,但我不知道我正在尋找的加密功能的技術術語。許多Google搜尋對我沒有幫助。有人可以幫我用正確的密碼術語來尋找我正在尋找的東西,這樣我就知道在我的研究中要搜尋什麼?
這是我正在尋找的:
- 使用密鑰快速加密大量數據 $ E $ .
- 加密目前是牢不可破的,並且據我們所知預計將保持不變。
- 加密的數據不能用密鑰解密 $ E $ .
- 加密數據只能用密鑰解密 $ D $ .
- 鑰匙 $ E $ 是通過傳遞密鑰創建的 $ D $ 進入算法/函式。
- 最好是鍵 $ D $ 可以少於 20 個字元,並且可以從普通電腦鍵盤的鍵上可見的內容鍵入。(又名……密碼)
謝謝!
正如評論中正確指出的那樣:該術語是非對稱密碼學,也稱為公鑰密碼學。
我們怎麼知道它是非對稱加密?
在對稱加密中,加密密鑰和解密密鑰是相同的,這意味著您可以使用與加密數據相同的密鑰來解密數據。
另一方面,在非對稱加密中,加密密鑰和解密密鑰彼此不同( $ K_{Enc} \ne K_{Dec} $ ) 並在您的範例中說明:
加密的數據不能用密鑰解密 $ E $ .
如何創建 $ E $ 從 $ D $
這可以通過以下過程來實現:
- 創建密鑰 $ K $ 使用您的密碼具有密鑰派生功能。您可以將此功能視為鍵拉伸功能。KDF 可用於將密鑰拉伸為更長的密鑰或獲取所需格式的密鑰。這對於獲得對於第 2 步來說“足夠隨機”的輸入很重要。
- 您現在可以使用這個創建的密鑰 $ K $ 作為 PRNG(偽隨機數生成器)的種子。這裡重要的是pseudo一詞,這意味著給定相同的種子它將始終返回相同的創建數字。
- PRNG 用於密鑰對生成算法,然後返回公鑰 $ K_{Public} $ (在你的例子中 $ E $ 用於加密)和私鑰 $ K_{Private} $ (在你的例子中 $ D $ 用於解密)。
- 您現在可以將此生成的密鑰用於任何非對稱加密方法,一些眾所周知的範例是:
- ECDH(橢圓曲線-Diffie-Hellman)。
- RSA
**重要提示:**我忽略了您必須使用不同的密鑰對生成算法,具體取決於您將使用的非對稱加密方案。
此過程在理論上可行,但從計算角度來看非常昂貴,因為您只使用非對稱加密。在實踐中,這個問題是通過實現混合密碼系統來解決的:
混合密碼系統是一種結合了公鑰密碼系統的便利性和對稱密鑰密碼系統的效率的密碼系統。
一個值得注意的例子是ECIES(橢圓曲線集成加密方案),其安全性基於Diffie-Hellman 問題。該方案允許兩方創建(隨機)會話密鑰,允許對稱加密。