Known-Plaintext-Attack
如果我以純文字和加密形式發布我的韌體,我的 XTEA 加密密鑰是否安全?
我正在使用這個實現 XTEA 加密的引導載入程序,將加密的韌體上傳到小型 MCU:
https://github.com/nyholku/diolan-plus2
實際的 XTEA 程式碼在這裡:
https://github.com/nyholku/diolan-plus2/blob/master/fw/xtea.asm
這不是我的程式碼,但對我來說,它看起來使用 16 字節密鑰和 64 次迭代,並且似乎幾乎等同於維基百科 XTEA C 實現。
現在我的問題是,如果我將韌體發佈為純目標程式碼(即純文字和加密),我的加密密鑰是否安全?
韌體大小如果最大為 48kB,其中最後的幾千字節將為 0xFF。
如果多年來我發布了(<50)個這樣的純文字/加密文本對呢?
我從網際網路上讀到這應該是安全的,但因為這個主題非常複雜,我想確保我不會犯新手錯誤。
您所描述的稱為已知明文攻擊。如果對手選擇明文進行加密,現代密碼甚至應該是安全的。這將被稱為選擇明文攻擊 (CPA),而保護免受攻擊的密碼稱為 CPA-secure。實際上,它甚至比這更進一步:IND_CPA 意味著即使對手選擇明文,密文與隨機也無法區分。
基本上你可以發布任意數量的對並且仍然是安全的。如果密碼被破解,當然不再是這種情況。如果可以通過 CPA 攻擊檢索密鑰,則密碼將被完全破解。幸運的是,目前還沒有針對 XTEA 的此類攻擊。但請注意,沒有可以證明是安全的密碼。
但是,XTEA 是一種分組密碼。分組密碼本身並不是通用密碼。它需要一種操作模式才能變成真正的密碼。這種操作模式應該使用初始化向量進行初始化。如果沒有唯一的或隨機的初始化向量,密文可能會洩漏有關明文的資訊。例如,如果您要加密同一韌體的兩個不同版本,您可以看到更改的位置。