時序攻擊

什麼是時序攻擊?

在密碼學中,時序攻擊是一種側信道攻擊,攻擊者試圖通過分析加密算法的時間執行來推導出密碼。每一個邏輯運算在計算機需要時間來執行,根據輸入不同,精確測量執行時間,根據執行時間反推出密碼。

$expected  = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$correct   = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$incorrect = crypt('apple',  '$2a$07$usesomesillystringforsalt$');

var_dump(hash_equals($expected, $correct));
var_dump(hash_equals($expected, $incorrect));

進行比較,那麼兩個字符串是從第一位開始逐一進行比較的,發現不同就立即返回 false,那麼通過計算返回的速度就知道了大概是哪一位開始不同的,這樣就實現了電影中經常出現的按位破解密碼的場景。而使用 hash_equals 比較兩個字符串,無論字符串是否相等,函數的時間消耗是恆定的,這樣可以有效的防止時序攻擊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章