Encryption
如何使用對稱密鑰算法解密使用隨機數加密的密文
我們使用真隨機數生成器作為加密密鑰的來源。我無法理解的是:在對稱密鑰算法的情況下如何解密這個密文,因為我們需要相同的隨機數來解密密文。
我能猜到的是:
- 這個隨機數是否用作會話密鑰並使用任何非對稱密鑰算法傳輸?
- PRNG 和真隨機數生成器是否用作種子?
通常,對稱密鑰與公鑰密碼術(非對稱)交換。
引用自維基百科:
由於非對稱加密的計算複雜性,它通常只用於小塊數據,通常是對稱加密密鑰(例如會話密鑰)的傳輸。然後使用此對稱密鑰對可能較長的消息序列的其餘部分進行加密。對稱加密/解密基於更簡單的算法並且速度更快。
關於密碼學中的隨機數生成器:
當密碼方案的設計需要隨機數時,通常使用密碼安全的偽隨機數生成器。這些包括即:
正如您已經猜到的那樣,任何機率加密方案(即產生隨機密文輸出的方案)都要求您隨消息一起傳輸隨機性的種子。該值稱為初始化向量 (IV) 或隨機數,並且需要密鑰和 IV/隨機數的組合來解密消息。
圖中描繪了這對於密碼塊連結 (CBC) 中的塊密碼如何工作的圖片:
這 $ \bigoplus $ 符號表示 XOR 操作。從該圖中可以很明顯地看出,選擇不同的隨機 IV(並將其與輸入異或)將導致非常不同的密文值。
假設我正在向您發送一條消息,並且我們已經共享了一個密鑰。我會生成一個隨機 IV 值並使用該密鑰/IV 對加密消息。我會將 IV 和密文傳輸給您,然後您將使用預共享密鑰和特定於消息的 IV 來解密密文。
IV/nonce 輸入的要求因加密模式和密碼而異。一般來說,IV 應該是安全的隨機值,並且 nonce 只需要是唯一的(因此只要您不為同一個鍵重複相同的 nonce,計數器就可以工作)。
請注意,雖然上面的範例說明了塊密碼,但機率流密碼將類似地使用 IV/nonce 和密鑰。IV 將置換流的初始狀態,使得每個加密都是唯一的。