Encryption

有哪些簡單但萬無一失的方法可以確保 AES 加密算法按預期工作並且沒有錯誤/開發人員錯誤潛入?

  • December 30, 2019

作為一名開發人員,當涉及到加密時,程序員可以將大量的弱點/錯誤/錯誤添加到加密算法中。

因此,對於加密專家來說,這是一個非常普遍的問題,你們是否有一個清單/測試案例,在將 AES-Rijndael-CBC 實施到任何應用程序/程序中以確保它正常工作之後,你會經歷這些檢查表/測試案例。

這樣做的原因是當我使用任何類型的程式語言(例如 python)時,我和可能大多數其他人只是使用預建構的庫進行加密,例如 AES CBC,並相信它可以正常工作並且是安全的。但實際上,我不知道,因為它只是輸出中的亂碼數據……

是否有一個值得信賴的線上工具或分析技術或類似的東西,我們可以比較結果以確實看到我們的加密工作與例外一樣好。例如,我將 IV 設為全零並使用線上 aes 程序,密文確實相同,因此我確信我的程序執行正常。但這是對字元串 -> 密碼的最簡單測試……當我們向程序添加更多功能(例如派生密鑰等)時,發現我們可能不小心放入程序中的錯誤變得越來越難。

我們是否可以分析密文中字節的隨機性以確定熵是否高且隨機等…以確保我們的加密仍然可以正常工作?

預先感謝任何提示:)

對於這類問題,密碼算法/協議設計者通常會為他們的設計提供測試向量。你也可以在書中找到其中的一些。

在您的情況下,AES 於 2002 年 5 月 26 日由 NIST 標準化,它們在NIST 800-38A的附錄 F 中為各種加密模式提供了測試向量。

在 2001 年 11 月 26 日標準化之前,NIST FIPS 197文件

在附錄 C 中提供了範例向量。這是每輪的更詳細的向量,而不僅僅是輸入和輸出。

input: cipher input
start: state at start of round[r]
s_box: state after SubBytes()
s_row: state after ShiftRows()
m_col: state after MixColumns()
k_sch: key schedule value for round[r]
output: cipher output

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