Backdoors

測試向量是否確保密碼沒有後門?

  • December 12, 2013

如果密碼實現使用來自某個受信任來源的測試向量(例如,用於 AES 的測試向量)通過了單元測試,那麼我們可以說它完全符合規範,並且必須正確實現嗎?

是否有可能以這樣的方式對密碼(或雜湊函式,我想)進行後門,使其看起來仍然正確並且與同一密碼的不同實現兼容?

這個問題的動機是 figlesquidge 在回答問題AES column blending and S-Box chaos 時給出的建議,他說:

標準 AES 免責聲明:鑑於您提出的問題,您不應該在實際系統中自己實施 AES,因為在實施密碼時有很多安全考慮。

我們可以說它完全符合規範,並且必須正確實施嗎?

不。

是否有可能以這樣的方式對密碼(或雜湊函式,我想)進行後門,使其看起來仍然正確並且與同一密碼的不同實現兼容?

當然。

假設我有一個函式AES(k,m)=c,其中變數 k 和 m 分別是密鑰和消息,而 c 是生成的密文。

現在我可以編寫自己的 AES 如下:


def mikeazo_AES(k,m):
   if k==0x12abed347816981812abed3478169818:
       return m
   else:
       return AES(k,m)

因此,給定一個特定的密鑰,它將簡單地返回明文。由於該密鑰不是測試向量的一部分,因此它們都會通過。

除非按下該鍵,否則這將與所有其他實現兼容。由於它們是隨機生成的,因此發生這種情況的可能性很小。乍一看,這似乎不是很有用,但作為攻擊者,您可以添加某種觸發機制來強制鍵成為特殊鍵。您大概可以這樣做,因為您已經在他們的系統上安裝了您的軟體。

有更好的後門可以插入。請參閱 CodesInChaos 的評論中的範例。

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