側通道攻擊是如何執行的?攻擊者需要什麼來執行邊通道攻擊?
我一直在閱讀有關Wikipedia 上的側通道攻擊的資訊,其中一些似乎只能在受害者的電腦上執行。(我特別詢問維基百科頁面上列出的側通道攻擊以及理論上可能的任何其他攻擊)
攻擊者需要什麼來執行每個側通道攻擊?
側通道攻擊是如何執行的?
這是一個非常簡單的定時側通道攻擊,您甚至可能在電影中看到。假設您嘗試使用密碼登錄電腦,並且受害者逐字節比較您的密碼,但如果不匹配則提前停止:
for (i = 0; i < n; i++) if (password[i] != input[i]) return EFAIL;
你如何攻擊這個?
試試類似的密碼
aaaaaaa
,然後用秒錶測量需要多長時間;然後嘗試baaaaaa
,caaaaaa
, 等等,無論哪個花費的時間最長——比如說haaaaaa
——告訴你第一個字母是什麼。當然,時序中可能存在噪音,因此您可能需要嘗試多次並統計數據才能通過噪音看到信號,或者仔細安排
input[i]
在未映射或未記憶體的虛擬頁面中以放大信號是否比較常式到達它。
hbaaaaa
然後用,等重複hcaaaaa
,直到找到; 然後; 然後; 直到你得到密碼。huaaaaa``hunaaaa``huntaaa
你如何防禦這樣的攻擊? 標準對策:在恆定時間內重寫邏輯,以使所有輸入所花費的時間相同,和/或明智地將問題隨機化,以使時間的任何變化都與輸入的變化無關。
這只是眾多類型的邊通道中的一種。這裡有一些其他的例子,大致上你需要什麼來完成它們:
如果該軟體愚蠢地通過壓縮傳遞秘密並顯示結果長度,那麼您需要一個 JavaScript 程序在使用者的瀏覽器中執行以觸發對某些目標站點的 HTTPS 請求,以及網路上的竊聽者來監視它們。
(大多數瀏覽器不再做這種簡單的壓縮,因為這樣的攻擊!)
- 像 Serge Vaudenay 這樣的填充 oracle 攻擊利用不同類型的錯誤消息(填充錯誤與身份驗證失敗)作為消息秘密內容的側通道。
如果協議設計不當(如原始 SSL 協議)並且軟體在填充錯誤和身份驗證失敗(如早期的 SSL 實現)方面表現不同,那麼您需要網路上的 MITM 可以攔截線路上的數據包並修改它們查看對等方的行為。
(現代 TLS 不再使用易受此類填充錯誤影響的密碼系統,舊版本 TLS/SSL 的現代實現需要付出額外努力來避免填充預言機——但即使是對策有時也會承認其他側通道攻擊,例如幸運十三。)
- Spectre類攻擊利用了由 CPU 中的推測執行時間產生的旁通道。
如果 CPU 像過去 20 年中基本上所有大眾市場的台式機、筆記型電腦和伺服器 CPU一樣天真地實現了推測執行,並且如果該軟體沒有廣泛的對策來阻止此類攻擊,那麼您需要一個 JavaScript 程序在瀏覽器中執行並訪問一個相當高解析度的計時器(通過額外的努力,可以使用一個較低解析度的計時器來模擬)來設置一個 Spectre 小工具並測量它——*即使所有的密碼都是安全的,它也能工作在沒有自己的側通道的情況下實現,*例如下面的定時攻擊,因為它通過使用 CPU 的推測執行來訪問它根本不應該訪問的記憶體來工作。
(幽靈是 baaaaaaaaaaaad 新聞。)
對密碼系統的定時攻擊利用與秘密相關的執行時間作為秘密的側通道的計算。計算可能需要依賴於秘密的時間的原因有很多,這是Kocher 的開創性論文中報導的一類邊通道:
- 計算時,例如RSA 私鑰操作 $ x^d \bmod n $ 為秘密 $ d $ , 使用標準的平方和乘法算法來檢查是很有誘惑力的 $ (d \mathbin\gg i) \mathbin& 1 $ 決定是否乘以 $ x $ 或不在 $ i^{\mathit{th}} $ 步。首先,CPU 不擅長將分支決策保密;跳過乘法可以更大幅度地改變時間,這可能會揭示哪些位 $ d $ 被設置。 您需要利用它的是一個響應(例如)加密查詢的自動化系統和一個秒錶。
- 在計算(例如,AES)時,很容易使用與秘密相關的表查找。CPU 不擅長將記憶體地址保密——CPU 記憶體對於現代 CPU 性能至關重要,但也可用作側通道。 您需要利用它的是 Web 瀏覽器中的 JavaScript 程序,它可以在目標密鑰下觸發 AES 操作,例如觸發和測量磁碟加密時間的能力,如 Tromer、Osvik 和 Shamir 所展示的(無需付費)。
- 在檢查攻擊者提供的消息驗證碼是否與合法消息驗證碼匹配以驗證消息或將其作為偽造品丟棄時,天真的實現可能會逐字節檢查程式碼並在第一次不匹配時提前停止
for (i = 0; i < n; i++) if (p[i] != q[i]) return EFAIL;
:如果軟體做到了這一點,您需要一個帶有秒錶的 MITM 來嘗試偽造並逐字節猜測所需偽造的正確 MAC,就像電影中的黑客逐字母計算密碼一樣。EFAIL攻擊利用OpenPGP 和 S/MIME 中的加密缺陷來選擇性地修改加密的電子郵件消息,以便收件人的郵件閱讀器將對修改後的消息採取行動,直接洩露秘密。 您需要應用的是 OpenPGP 和 S/MIME 實現生態系統的垃圾箱之火。
(也就是說,大多數 OpenPGP 實現現在已經修復了啟用該漏洞的加密缺陷。)
- 電腦有時聽起來會有所不同,具體取決於它們正在執行的操作和數據,從而導致聲學密碼分析(免費預印本)。這可能聽起來有些牽強,因為您需要一個與對手物理上接近的感測器……但人們似乎莫名地興奮地從 Apple、Amazon 和 Google 購買遠端監控麥克風並將它們放在家裡!或者,您可以向打開電腦麥克風的受害者提供 JavaScript 程序嗎?
這不是對側通道的全面研究。還有其他完整類別的側通道,例如電磁輻射或功率分析或主動故障攻擊。然而,這些作為遠端利用向量的吸引力稍差——功率分析(無論是簡單的功率分析還是差分功率分析)和故障攻擊與智能卡最相關,例如,對手可以物理訪問設備開始和。
這也不是對利用側通道所需的全面研究。可能有適當的對策使它們變得更難。可能會有噪音使它們變得更難。嘗試起草概念證明時,您可能會失去耐心。我起草了一個 Meltdown 漏洞利用,但對 Spectre 失去了耐心,當他們第一次發佈時,反之亦然,我忘記了。這是一個有趣的下午玩具。但是,您有耐心實際利用的側通道只是對手(擁有現成的開發工具市場)可能利用的側通道的一小部分。