緩衝套接字發送會抵抗定時攻擊嗎
我一直在閱讀和思考對密碼系統的定時攻擊。這個問題的答案提到了以下幾點:
“防禦定時攻擊的方法是確保執行加密操作所花費的時間不依賴於任何秘密資訊。”
我的問題是,假設對手通過網路連接到預言機的模型,是否會在應用程序級別寫入緩衝 socket.send 以僅每 x 毫秒發生一次,以防止加密操作洩露數據?
我的想法是每 0.01 秒使用一次select 系統呼叫來處理任何讀取和寫入。由於數據只會以恆定的時間間隔離開伺服器,因此是否使用短路比較等是否重要?
我能想到的最明顯的缺點是它會給所有應用程序網路請求增加一些延遲,甚至是與加密無關的請求。
在網路傳遞查詢/響應的情況下,這是否有效防禦側通道攻擊?
它只會在一定程度上有所幫助。
如果你想防止密文攻擊,你不能只添加隨機時間。原因是您添加的隨機時間可能在一個範圍內。或者在您的情況下,通話之間的時間段將在一定範圍內。
這意味著如果您有足夠大的樣本集,您可以計算出呼叫的偏差。假設您找出最大超時時間。如果呼叫需要最大值 + x,則 x 將是加密操作所需的時間。
當然,要讓這成為一個問題,您需要擁有更大的數據集。然而,電腦和網路的速度非常快,因此通常創建更大的數據集通常不是問題。
如果您嘗試弄亂諸如緩衝網路數據之類的事情,您可能還必須防止攻擊者試圖規避緩衝問題。網路是攻擊者的初始介面,因此它將成為主要的攻擊面。
網路緩沖和加密計算沒有直接關係。該解決方案將網路實施與加密算法的保護聯繫起來。這可能不是您想要維持的關係。
您的解決方案也不能防止 DPA 攻擊或對 CPU 本身的攻擊(使用從使用者帳戶訪問 CPU)。因此保護僅限於網路介面。
另一個問題是 CPU 調度可能非常令人討厭。有時,一項操作可能需要比平均時間長得多的時間。在這種情況下,超時可能不夠。
總而言之,這絕對不應該是針對側通道攻擊的唯一保護,並且應該很好地理解該方法的局限性。