Encryption
什麼是“已知答案測試”(KAT)?
在閱讀密鑰封裝協議SIKE時遇到了這個概念,但無法找到對已知答案測試的正式解釋。
什麼是已知答案測試,它為什麼有用?
什麼是已知答案測試
它似乎是一組公開可用的參數和值,可讓您檢查實現的正確性。
如果是這樣,那麼它們通常被稱為“測試向量”。
為什麼有用?
由於密碼算法的輸出幾乎總是被認為是“隨機的”,因此僅通過查看輸出就很難知道事情是否正常執行。
對於已知正確的輸出,您可以向軟體提供相應的參數,並根據已知的正確答案測試您的輸出。
如果兩者不匹配,那麼您正在測試的實現有問題。
如果兩者確實匹配,那麼實現很可能(至少部分)正確。
由於某種程式錯誤,一個測試通過而另一個測試失敗是可能的,因此單元測試通過並不意味著實現100%肯定是正確的(但如果它通過了所有測試,它很可能是正確的測試)。