Side-Channel-Attack
恆定時間空字元串驗證
檢查 null 需要
==
檢查。如果您有一個字元串秘密(例如一個十六進制編碼的密鑰)並且您想檢查它是否為空以進行驗證,您是否應該將其與""
恆定時間進行比較?在這些情況下,您不會聽說恆定時間等於。
我認為這是指像 Java 或 C# 這樣的語言,其中檢查空參數是司空見慣的。我也猜想閱讀這樣的部落格文章/文章會激發這種擔憂。
- 建議使用空值檢查以獲得良好的驗證(例如,拋出方便的異常消息)。當您不檢查 null 時,IDE 可能會顯示警告。
- 所述語言的密碼庫包括空值檢查。
- 恆定時間比較函式通常檢查被比較的數組的長度。這相當於做
if (string.Length == 0) { return error; }
.總之,檢查 null 和字元串是否為空應該是完全可以的。