什麼是Nonce

在密碼學中,於同一把金鑰下只使用一次的值,意思是number used once,中文常稱為隨機數(nonce)。在CTR模式與GCM中,若同一組金鑰與nonce使用兩次,金鑰串流就會相同而洩漏明文的XOR,因此要用計數器等方法讓值不重複。CBC模式使用的初始向量(IV)不僅不能重複,還必須是攻擊者無法預測的值。兩者都不需要保密,通常與密文一起傳送。在驗證程序中,為防止舊回應被重複使用(重放)而送出的新亂數,也稱為nonce。

日文名稱: ナンス

「Nonce」出現在2領域的6道練習題中(密碼學基礎與應用, 硬體安全的進階主題與趨勢等)。

這個名詞所屬的領域: 密碼學基礎與應用

練習Nonce的題目

以CBC模式使用AES時,初始向量(IV)的處理方式中,適當的是下列何者?

  1. AIV與金鑰一樣要保密,所有訊息都持續使用相同的值
  2. BIV不需要保密,但每則訊息都要重新選擇攻擊者無法預測的隨機值
  3. CIV不需要保密,每次都固定使用與對方事先約定的相同值(例如全部為0)即可
查看答案與解析

正確答案:B. IV不需要保密,但每則訊息都要重新選擇攻擊者無法預測的隨機值

CBC模式中,各明文區塊先與前一個密文區塊XOR後再加密,第一個區塊則與IV做XOR。IV通常附加在密文的開頭傳送,因此不需要保密。但是,若每次都使用相同的IV,開頭相同的訊息,其密文的開頭也會相同,會洩漏內容有一部分相同。此外,已知若攻擊者能預測下一個要使用的IV,就可以讓對方加密自己選擇的明文來推測內容(例如針對TLS 1.0的BEAST攻擊)。

在CTR模式中,誤用相同的金鑰與相同的nonce加密了兩則訊息。就某個位置的位元組而言,第1則明文 P₁ 為 01001000(ASCII的「H」),其密文 C₁ 為 01110100,第2則密文 C₂ 為 01010101。攻擊者知道 P₁ 時,相同位置的第2則明文 P₂ 為下列何者?

  1. A00100001
  2. B00111100
  3. C01101001
查看答案與解析

正確答案:C. 01101001

金鑰與nonce相同時金鑰串流 K 也相同,因此 C₁ = P₁ ⊕ K、C₂ = P₂ ⊕ K。先由 K = P₁ ⊕ C₁ = 01001000 ⊕ 01110100 = 00111100 得知金鑰串流,再得 P₂ = C₂ ⊕ K = 01010101 ⊕ 00111100 = 01101001(ASCII的「i」)。即使不知道金鑰,只要知道其中一則明文,就能直接求出另一則明文。因此在CTR模式與GCM中,同一把金鑰絕不重複使用相同的nonce,是不可或缺的條件。

解析中的「Nonce」

出現「Nonce」的題目(6題)

  1. 以CBC模式使用AES時,初始向量(IV)的處理方式中,適當的是下列何者?
  2. 在CTR模式中,誤用相同的金鑰與相同的nonce加密了兩則訊息。就某個位置的位元組而言,第1則明文 P₁ 為 01001000(ASCII的「H」),其密文 C₁ 為 01110100,第2則密文 C₂ 為 01010101。攻擊者知道 P₁ 時,相同位置的第2則明文 P₂ 為下列何者?
  3. 關於AES-GCM所使用的96位元nonce(IV)的說明,正確的是下列何者?
  4. 在對稱式加密中,關於區塊加密與串流加密之差異的說明,正確的是下列何者?
  5. 關於區塊加密的CTR模式(計數器模式)的特徵,正確的是下列何者?
  6. 在機密運算中,使用者的驗證伺服器(驗證者)確認從VM型TEE收到的證明報告後,才交付解密資料的金鑰。驗證者要確認的內容組合,最適當的是下列何者?

相關名詞

區塊加密操作模式 AES(進階加密標準) 鑑別加密(AEAD) TLS 對稱式加密 機密運算 TEE(可信執行環境) 生日攻擊 信封加密 前向保密

前往名詞解釋列表