Encryption

如何使用對稱密鑰算法解密使用隨機數加密的密文

  • August 28, 2018

我們使用真隨機數生成器作為加密密鑰的來源。我無法理解的是:在對稱密鑰算法的情況下如何解密這個密文,因為我們需要相同的隨機數來解密密文。

我能猜到的是:

  • 這個隨機數是否用作會話密鑰並使用任何非對稱密鑰算法傳輸?
  • PRNG 和真隨機數生成器是否用作種子?

通常,對稱密鑰與公鑰密碼術(非對稱)交換。

引用自維基百科

由於非對稱加密的計算複雜性,它通常只用於小塊數據,通常是對稱加密密鑰(例如會話密鑰)的傳輸。然後使用此對稱密鑰對可能較長的消息序列的其餘部分進行加密。對稱加密/解密基於更簡單的算法並且速度更快。

關於密碼學中的隨機數生成器:

當密碼方案的設計需要隨機數時,通常使用密碼安全的偽隨機數生成器。這些包括即:

正如您已經猜到的那樣,任何機率加密方案(即產生隨機密文輸出的方案)都要求您隨消息一起傳輸隨機性的種子。該值稱為初始化向量 (IV) 或隨機數,並且需要密鑰和 IV/隨機數的組合來解密消息。

圖中描繪了這對於密碼塊連結 (CBC) 中的塊密碼如何工作的圖片:

CBC模式圖

這 $ \bigoplus $ 符號表示 XOR 操作。從該圖中可以很明顯地看出,選擇不同的隨機 IV(並將其與輸入異或)將導致非常不同的密文值。

假設我正在向您發送一條消息,並且我們已經共享了一個密鑰。我會生成一個隨機 IV 值並使用該密鑰/IV 對加密消息。我會將 IV 和密文傳輸給您,然後您將使用預共享密鑰和特定於消息的 IV 來解密密文。

IV/nonce 輸入的要求因加密模式和密碼而異。一般來說,IV 應該是安全的隨機值,並且 nonce 只需要是唯一的(因此只要您不為同一個鍵重複相同的 nonce,計數器就可以工作)。

請注意,雖然上面的範例說明了塊密碼,但機率流密碼將類似地使用 IV/nonce 和密鑰。IV 將置換流的初始狀態,使得每個加密都是唯一的。

引用自:https://crypto.stackexchange.com/questions/61785