「兩軍的低語靜靜傳來/固定的哨兵幾乎能接收/彼此守夜的秘密耳語;/火光回應火光,透過蒼白的火焰/每一方都看見對方赭色的臉。」——莎士比亞《亨利五世》第四幕

「最佳化就是拿一個能用的東西,換成一個幾乎能用但比較便宜的東西。」——尼德漢(Roger Needham)

側通道無所不在#

電腦與手機這類電子裝置以各式各樣的方式洩漏資訊。

側通道攻擊無所不在,而其中三四種已造成數十億美元的損失:

  1. 傳導或輻射的電磁訊號,能在本地、偶爾也在較遠距離危及資訊。這些「Tempest」攻擊讓北約各國政府從 1960 年代起每年花數十億美元屏蔽設備。冷戰結束後,人們開始意識到通常根本沒有人在聽。
  2. 側通道在單一裝置的工作之間、或在緊密耦合的裝置之間洩漏資料;它們能利用功耗與時序資訊,也能利用共享系統資源的爭用。1990 年代末差分功耗分析的發現,在人們意識到當時在售的所有卡片都有漏洞後,把智慧卡在銀行等領域的部署拖延了兩三年。
  3. 第三起數十億美元事件始於 2018 年 1 月「Spectre」與「Meltdown」攻擊的公布,它們利用推測執行,讓 CPU 上的一個行程能窺探另一個(例如竊取其密碼金鑰)。這大概會迫使所有超純量 CPU 在 2020–25 年間重新設計。
  4. 利用共享本地實體資源的攻擊,例如手機聆聽附近鍵盤上的敲擊、甚至聆聽自己觸控螢幕上的鍵盤——不論感測是用麥克風、加速度計與陀螺儀,還是相機。另一個例子是雷射脈衝能在麥克風上造成一次點擊,所以語音指令能透過窗戶下給家用助理。
  5. 利用共享社會資源的攻擊。 一個例子是從通訊模式、位置歷史、甚至只是知道某人何時去度假,就從一份「據稱匿名」的資料集中辨識出他。這導致了許多糟糕的政策決定,以及大量關於「個資能否被充分匿名化以逃離隱私法」的一廂情願。

一位想長期保護系統、又不想忽視真實且可規模化之威脅、也不想花錢追逐影子的安全工程師,必須理解基本原理。

發射安全(Emsec)#

發射安全(Emsec)是關於防止利用「危害性發射」(傳導或輻射的電磁訊號)的攻擊。

主要是軍事組織擔心 Tempest——電腦與其他電子設備發出的雜散射頻被對手接收、用來重建正在處理的資料。

它也成了投票機的議題:一個荷蘭團體發現他們能在一段距離外分辨選民在投票機上選了哪個政黨;對 ATM 的攻擊也已被展示(雖然那些並不真的能規模化)。

從法蘭德斯的泥濘到「電視偵測車」:Emsec 的歷史

電話線之間的串音,19 世紀的電話先驅們就很清楚;他們學會每隔一段距離把線交叉,把每條電路變成雙絞線。

野戰電話線被鋪設來連接陷在法蘭德斯泥濘中的部隊,常常延伸數英里、與幾百碼外的敵軍戰壕平行。一戰早期的電話電路是單芯絕緣電纜,採用大地回路以把電纜重量與體積減半。

很快就發現大地漏電造成串音,包括來自敵方的訊息。 監聽哨迅速建立,並引入了雙絞線等保護措施。到 1915 年,真空管放大器已把大地漏電的監聽距離延伸到電話 100 碼、摩斯電碼 300 碼。

人們發現無人地帶那團被遺棄的電報線是如此好的通訊通道、洩漏了如此多流量,以致清除它成了要用人命去換的任務。到 1916 年,距前線 3,000 碼內已廢除大地回路電路。

情報界在二戰前後發現了對密碼設備的側通道攻擊:貝爾賣給美國政府一台把一次性紙帶加到電報流量上的混合器,結果發現明文洩漏在密文之中。

整個 1950 年代,美英都在努力壓制自家密碼機的電磁與聲學發射。1960 年,英國首相在加入歐洲經濟共同體的談判期間下令監視法國大使館,其安全部門的科學家注意到大使館的加密流量帶有微弱的明文訊號,並建造了設備把它還原出來。

1960 年代北約開始制訂 Tempest 標準;美英給歐洲盟邦選擇性且不完整的安全建議,好讓自己能繼續監視他們。同時俄國人發展出精熟的雜散發射利用能力,把他們全都監視了一遍。

「電腦資料也可能洩漏」這件事在 1985 年進入公眾視野,當時荷蘭研究者 Wim van Eck 發表文章,描述如何用改裝的電視機在一段距離外重建 VDU 上的畫面。

技術監控與反制#

在深入 Tempest 的細節之前,值得注意:使用電磁頻譜最簡單也最廣泛的攻擊,並不是利用無害設備的非預期射頻發射,而是攻擊者放進去一個竊聽裝置(或較近期地,目標裝置被惡意程式攻陷)。

市面上的竊聽器與反制工具

市面上有種類驚人的竊聽器:

  • 低端:幾十美元能買到簡單的無線電麥克風,你可以在拜訪目標時黏在桌子底下。電池壽命是主要限制,典型射程只有幾百碼、壽命數天到數週。
  • 從市電、電話線或其他外部電源取電的裝置,因而能無限期運作。歷史例子:蘇伊士危機期間英國安全部門進入埃及駐倫敦大使館,改裝了電話,好在職員把當日金鑰設定輸入密碼機時竊聽。 有些現代等價物夾在鍵盤線上、看起來像個接頭;有些看起來像電源轉接器,卻把音訊與影像送回給主人。多數現在使用手機技術:可以看成被撥號時就聽與看的客製手機。
  • 一件展示在米德堡 NSA 博物館的奇特裝置,是 1946 年一班學童送給美國駐莫斯科大使的美國國璽木製複製品,大使把它掛在官邸辦公室牆上。1952 年,人們發現它含有一個共振腔,在被建築外的微波照射時會充當麥克風,並轉播他辦公室裡的對話。
  • 1984 年,美國駐莫斯科大使館的 IBM Selectric 打字機中發現了十六個竊聽器,每個儲存八次按鍵,然後一次性地傳出去。
  • 雷射麥克風:把雷射光束照向目標對話所在房間的反射或半反射表面(如窗玻璃)。聲波在表面誘發振動,調變了反射光,這能在遠處被接收解碼。
  • 然而如今全球監控的大宗,很可能是靠「creepware」——由熟練攻擊者遠端、或由脅迫或操縱性的家人、有時甚至作為就業條件,安裝在目標手機上的軟體。

技術監控反制(TSCM)專家有一整袋工具:

  • 較好的監控接收機每隔幾十秒掃過約 10 KHz 到 3 GHz 的無線電頻譜,尋找無法用廣播、警用、航管等解釋的訊號。但監控接收機的效果受限於「使用與合法手機相同頻率與協定的竊聽器」。 許多組織試圖禁用手機,但多半放棄了;連皇家海軍最後也不得不允許水兵在艦上開手機,因為離職的人太多了。
  • 非線性接面偵測器能在近距離找到隱藏裝置:它廣播一個微弱的無線電訊號並聆聽奇特的諧波,那是設備中的電晶體、二極體等非線性接面整流該訊號時產生的。然而若竊聽器被種在合法設備之中或附近,它就幫不上多少忙。
  • 打斷視線(例如在實驗室周圍種樹)能有效對抗雷射麥克風,但往往不切實際。
  • 有些設施有屏蔽室,好讓即使竊聽器被放進去,其訊號也傳不出來。在北約國家,最高機密材料應存放在**機密隔離資訊設施(SCIF)**中,兼具實體安全與聲學屏蔽,並定期掃查竊聽器。

但這比看起來難。 莫斯科一棟新的美國大使館建築因結構中被發現大量麥克風而不得不放棄;而英國反情報部門在發現某建築承包商的一名員工過去與臨時愛爾蘭共和軍有往來後,決定拆掉並重建新總部大樓的一大部分,成本約五千萬美元。

隨著越來越多裝置取得智慧與短距無線或紅外線通訊——隨著「物聯網(Internet of Things)」變成「標的網(Internet of Targets)」——透過「已經在那裡的設備」而非「為此目的擺放的東西」進行攻擊的空間就越來越大。

NSA 禁止 Furby 玩具進入其建築,因為 Furby 會記住(並隨機複述)在它面前說過的話。Cayla 會說話的娃娃在德國被禁,因為陌生人能用它遠端聽小孩說話,也能對小孩說話。

被動攻擊#

電磁攻擊大致分兩類:訊號可以透過某種電路(電源線或電話線)傳導,或以射頻能量輻射。軍方分別稱之為「Hijack」與「Tempest」。它們並不互斥:電腦發出的無線電訊號能被市電接收並傳導進附近建築。

透過電源與訊號線洩漏#

用軍方術語說,紅色設備(承載機密資料)必須用濾波器與屏蔽與黑色設備(能直接向外界送訊號)隔離。 同時有紅色與黑色連接的設備(如密碼機)很難做對。

但成本不止於此。 一個空軍基地的作戰室可能有數百條電纜引出;把它們全部濾波、並施加嚴格的組態管理以保持紅/黑分離,可能花上數百萬。

透過射頻訊號洩漏#

一位同學有個更好的點子:他寫了一組長度不同的副程式,好讓電腦能靠依序呼叫它們來演奏一首曲子。當時我們從沒想過這能被用來搗蛋。

到 2000 年代初仍作為螢幕使用的 VDU,自然會發出一個電視訊號——一個被當前顯示影像調變的 VHF 或 UHF 無線電訊號。給定一台寬頻接收機,這些發射就能被接收並重組為影像。

其他研究者開始實驗窺探從傳真機、屏蔽 RS-232 電纜到乙太網路的一切。Hans-Georg Wolf 展示了一次能在八公尺外從提款機還原卡片與 PIN 資料的 Tempest 攻擊。

多數商業部門就是忽略這個問題,因為屏蔽與干擾這類對策要做好既困難又昂貴。最終在 2006 年 10 月,一個反對電子投票機的荷蘭團體展示了「用來蒐集荷蘭 90% 選票的機器能在數十公尺外被竊聽」,這導致荷蘭政府要求投票設備必須通過「Zone 1 − 12dB」等級的 Tempest 測試。

  • Zone 0 認證的設備在一公尺距離外不應發出任何可利用的訊號;即使對手在隔壁房間、而牆只是石膏板這種脆弱的東西,它也應保護資料不被電子竊聽。
  • Zone 1 設備應能抵擋 20 公尺外的對手。所以荷蘭的「Zone 1 − 12dB」標準意味著投票機不應向 5 公尺外的竊聽者洩漏投了什麼票。
  • Zone 2 與 Zone 3 分別是 120 與 1,200 公尺。

史諾登文件揭露,美國主要的 Tempest 目標是紐約的聯合國外交使團,而即使在那裡,這類技術也只用於少數幾個「電腦無法用惡意程式攻陷」的國家。

各國政府意識到自己一直在「屏蔽一切」上浪費數十億,而成本削減迫使他們幾乎一切都改用商用現貨(COTS)設備。COTS 設備測試起來通常是 Zone 2,某些特別吵的裝備是 Zone 3。知道哪些設備輻射什麼,你就能把最敏感的資料放在離設施周界最遠的設備上,只在真正必要時才屏蔽。分區大幅削減了發射安全的成本。

Soft Tempest:用字型低通濾波換掉一整個分區

Markus Kuhn 與作者開發了一項較低成本的保護技術「Soft Tempest」,曾一度部署在從電子郵件加密程式到荷蘭投票機的一些產品中。它用軟體技術過濾或遮蔽電腦系統中帶有資訊的電磁發射。

這對使用者所見的螢幕內容幾乎沒有可察覺的影響,但所發射的射頻差異劇烈。在 VDU 上使用 Soft Tempest 技術,相當於差了一整個分區。 對現代平面螢幕能做的較少,但對某些裝置或許仍有可觀的收益。

他們在 IBM 1401 上觀察到的現象——一個合適的程式能把電腦變成無線電廣播發射機——在現代電腦上很容易重現。

利用這類把戲,惡意程式能感染一台與網際網路實體隔離的機器,並把資料外洩給藏在附近的無線電接收機。 而情報界知道這件事:1995 年一部電視紀錄片報導過 CIA 在經濟間諜活動中使用基於軟體的射頻利用。

NSA 因資訊自由法請求而解密的材料顯示,代號 Teapot 指的是「對電信與自動化資訊系統設備之刻意危害性發射(即由敵意誘發或挑起者)的調查、研究與控制」。

惡意程式的可能性正是為什麼 Tempest 測試不只被動聆聽受測裝置,還要對它注入訊號來模擬「對手已用軟體漏洞接管裝置並試圖建立隱蔽通道」的最壞情況攻擊。

最後一類古典 Emsec 攻擊是利用「被附近射頻源意外誘發的射頻發射」,美軍稱之為 Nonstop。

Nonstop 攻擊也是艦船與飛機的主要 Emsec 顧慮。 由於軍用船艦與飛機常載有極強力的無線電與雷達,必須小心它們的訊號不會意外被調變上對敵人有用的東西。有個案例中,蘇聯間諜船被發現在三海里線外聆聽美軍在關島的資料。

這類裝置的設計要求並不包括「抵擋一個帶著像樣無線電設備坐在隔壁房間、有能力有動機的對手」;所以 2015 年有人描述如何用被動射頻監測在一段距離外從智慧手機萃取私鑰時,本不該令人意外。

這類攻擊的主要困難是手機時脈頻率通常隨負載變化;若這個頻率能被以某種方式固定(例如靠惡意程式),攻擊就容易得多——事實上,它就化約成一個標準的時序攻擊。

電腦之間與電腦之內的攻擊#

如多層級安全一章所述,Butler Lampson 1973 年指出隱蔽通道可能讓 high 的行程向 low 傳訊。

簡單例子:high 行程可以在時刻 t_i 讓某個共享資源保持忙碌,以示意秘密金鑰的第 i 個位元是 1。 如果一台機器由 high 與 low 共用、且資源不是固定時間片分配,high 行程就能靠把磁碟塞滿(有人稱為儲存通道)或用掉大量 CPU 週期(時序通道)來傳訊。

還有許多其他通道:序列化的行程 ID、共享檔案鎖、檔案的最後存取時間——要把這些全部以多層級安全的方式重新實作,是一項龐大的工作。

而在「軟體能主動發起網路通訊」的分散式系統中,隱蔽通道更難分析與封鎖。 例如 DNS 支援隱蔽通道,由於該服務有正當用途而難以封鎖,但已被惡意程式用來外洩信用卡號——這類通道的頻寬綽綽有餘地能偷渡密碼金鑰。

時序分析#

做冪運算時,軟體通常一次一個位元地走過秘密指數,而若下一個位元是 1 就做一次乘法。 Paul 的想法是一次猜一個位元的指數,推導這個猜測對時序量測的後果,看看它是否降低了變異數。

這個聰明的訊號處理技術被穩定地精煉。到 2003 年,Brumley 與 Boneh 對使用 OpenSSL 的 Apache 實作了時序攻擊,展示如何靠對約一百萬次解密計時,從遠端伺服器萃取私鑰。

有些公開金鑰演算法實作使用**盲化(blinding)**來防止這類攻擊(OpenSSL 提供了選項,但 Apache 沒用)。

1998 年就有人指出,後來成為 AES 的 Rijndael 演算法易受基於快取未命中的時序攻擊:攻擊者能靠「預測猜測值是否會在 S-box 查表時造成快取未命中、再與觀察比對」來驗證對密碼第一回合輸出的猜測。

此後研究者穩定改良這項攻擊,而一個天真的 AES 實作能靠觀察幾百次加密就被攻破。許多密碼函式庫與工具組都有這個問題;你得弄清楚它們對你的應用是否構成問題,若是,你打算怎麼辦。

而且洩漏的不只是演算法:填充與錯誤處理這類協定與實作特性也會洩漏秘密。

功耗分析#

時序攻擊能遠距運作,但若你能靠近目標設備,能做的就多得多。

這稱為功耗分析軌噪分析,可能只需要在接地線上插一個電阻、並在其上接一台數位儲存示波器來觀察裝置的電流汲取。

在許多情況下,主要的資料相關貢獻來自相當大的匯流排驅動電晶體。 依設計而定,匯流排上每一個狀態改變的位元,可能讓電流在數百奈秒間變化數百微安。因此每個資料位元組與匯流排上前一個位元組之差的漢明權重(轉換計數)對攻擊者是可見的。

EEPROM 讀寫能給出更強的訊號。 若猜錯 PIN 導致 PIN 重試計數器被遞減,這可能在電荷幫浦準備寫記憶體時造成電流汲取的急遽上升(此時攻擊者甚至可以重置卡片、再試另一個 PIN)。

這項技術稱為差分功耗分析(DPA),做法是把一組功耗軌跡分割成子集合,然後計算這些子集合平均值的差。若子集合與感興趣的資訊相關,這個差就應該不為零。

DPA 的具體做法,以及業界的對策

具體例子:攻擊者可能對目標卡片蒐集幾百條交易軌跡(明文或密文已知),然後猜測密碼的部分內部狀態。

以 DES 而言,密碼的每一回合有八次表查詢:當前輸入的六個位元與金鑰的六個位元互斥或,然後用來查出一個四位元輸出。所以若攻擊者能取得密文,他會猜最後一回合某個 S-box 的六個輸入位元。

功耗軌跡接著依這個猜測被分成兩組並對齊,計算平均軌跡再比較。兩條平均軌跡之差稱為「差分軌跡」。

對該目標 S-box 的 64 種可能六位元輸入重複這個過程。 正確的輸入值——它把功耗軌跡依 S-box 輸出值不同分成兩組——通常會給出一條有明顯尖峰的差分軌跡;錯誤的猜測則把軌跡隨機分組,差分軌跡看起來像隨機雜訊。

如此就能找出送進該 S-box 的六個金鑰位元,接著是最後一回合所用的其他位元。以 DES 而言,這給出 56 個金鑰位元中的 48 個,其餘的能輕易找出。

所以一旦攻擊者費心理解了一張卡並設計出木馬終端機,就能以極低的邊際成本攻陷大量卡片。

Paul 的發現讓智慧卡在銀行的部署停滯了兩三年,人們忙著研究防禦。事實上,他的公司為許多最佳防禦申請了專利,最後授權給了多數密碼廠商。

其他防禦包括隨機化時脈(讓軌跡對齊更難)與遮罩(masking)——你在每一回合引入一些偏移,並重算 S-box 來補償它們,這樣密碼的實作每次被呼叫時都不一樣。

以公開金鑰演算法而言,遮罩還有更強的理由,因為它們也有助於緩解故障攻擊。

還有許多變體:

  • 基於快取未命中的攻擊能量測功耗而非只是加密所耗時間,因為一次未命中會啟動大量讀取非揮發記憶體的電路——所以你不能光靠用計時器確保每次加密耗費相同時脈週期,就擋掉對 AES 的快取攻擊。
  • 另一個變體是使用不同的感測器:Samyde 與 Quisquater 創造了電磁分析,把一個微小的拾波線圈移過晶片表面以擷取局部訊號,而非單純倚賴整個裝置的電流汲取。
  • DPA 也能與光學探測結合:Sergei Skorobogatov 的「光學增強位置鎖定功耗分析」用雷射在一半的測試回合中照亮單一目標電晶體,讓攻擊者取得的不只是計算的漢明權重,而是單一個被瞄準的位元。

飛利浦還犯了其他幾個錯誤:倚賴單一把存在於數百萬台低成本裝置中的 AES 金鑰來保護更新、對 CBC 與 MAC 使用同一把金鑰、以及所用燈光連結協定中的兩個 bug。

由於更新能透過 ZigBee 傳播,惡意程式能像連鎖反應一樣從一顆燈泡擴散到下一顆;作者們展示在巴黎這樣的城市裡,燈泡多到足以讓這種連鎖反應自我維持——就像核分裂一樣。

毛刺與差分故障分析#

例如早期銀行應用所用的某款智慧卡有個特性:過高的時脈頻率要持續若干週期才觸發重置(好讓暫態較不易造成誤警)。你可以用兩個窄得多的脈衝取代單一個時脈脈衝而不觸發重置,卻迫使處理器執行一個 NOP 而非它該執行的指令。

這產生了「選擇性程式碼執行攻擊」:攻擊者能跨過跳躍指令以繞過存取控制,或用卡片自身程式碼中找到的片段(gadget)拼出自己的程式。

例如做 RSA 簽章時,秘密計算 S = h(m)^d (mod pq) 是先模 p、再模 q 做,然後把結果組合起來(因為那快得多)。但如果卡片回傳一個「模 p 正確、模 q 錯誤」的瑕疵簽章 S_p,那麼

p = gcd(pq, S_p^e − h(m))

立刻就攻破了整個系統。

光學探測正是做這件事的工具,而「用雷射把金鑰位元一次一個設成零」如今已成常規的逆向工程技術。

Kevin Fu 等人發現,把雷射筆用口語指令調變,就能在數十公尺外啟動這類裝置——所以他們能從花園裡透過窗戶照射雷射筆,命令 Alexa 打開房子的前門鎖。

Rowhammer、CLKscrew 與 Plundervolt#

2014 年 CMU 的 Yoongu Kim 等人發現 2012–13 年製造的 DRAM 易受擾動錯誤影響:反覆存取現代 DRAM 晶片中的某一列,會在實體相鄰的列中、在一貫可預測的位元位置造成位元翻轉——這項攻擊如今稱為 Rowhammer。

  • 隔年,Mark Seaborn 與 Thomas Dullien 發現這個硬體錯誤能被應用程式碼利用以取得核心權限。
  • 再隔年,Kaveh Razavi 等人展示如何用這項技術把一把強公鑰換成弱的——效果是一台虛擬機能靠顛覆共置目標機器的 OpenSSH 公鑰認證來攻擊它,並靠偽造來自可信金鑰的 GPG 簽章來攻陷軟體更新機制。
  • 2020 年,Andrew Kwong 等人發現這個機制能用來而不只是寫:攻擊者能利用「Rowhammer 誘發的位元翻轉」與「相鄰列位元」之間的依存關係來推導那些位元——更甚者,即使 ECC 記憶體偵測並更正了每一次位元翻轉,這招仍然有效。

為了省電,許多現代 CPU 隨負載改變頻率並相應調整電壓。

  • 2017 年的 CLKscrew 攻擊:研究者超頻 Nexus 6 上的 Arm 處理器以擊敗 TrustZone,萃取密碼金鑰並提權。
  • 2019 年的 Plundervolt:利用 Intel Core 處理器中一個未公開的電壓調整介面造成欠壓,在乘法與 AES-NI 運算中誘發故障,讓 RSA 與 AES 金鑰能用故障分析萃取出來,也造成指標運算的錯誤而從 SGX 飛地洩漏任意記憶體內容。

長期而言,硬體安全將需要更具防禦性的設計。這並不容易:單純提高 DRAM 更新率會增加裝置功耗,較不積極的頻率調整也是。

鑑於廠商把裝置推向物理所設之邊界時,新晶片技術中會潛伏越來越多側通道,半導體安全需要一套更有原則的取徑。晶片廠商正在痛苦地學到:他們需要在設計階段就找好的安全工程師參與,而不是只指望日後打補丁。

Meltdown、Spectre 與飛地側通道#

衝擊晶片商(乃至整個資安界)的最新海嘯,是一族基於 CPU 微架構的攻擊。

從快取未命中到分支預測:微架構攻擊的十五年鋪陳
  • 2005 年,Colin Percival 發現 AES 快取未命中能被攻擊者用來觀察同一顆 Intel CPU 上另一個超執行緒中的加密操作:把資料拉進 L1 快取,然後過一會兒量測存取同一份資料要多久,你就能看出你的資料是否被另一個超執行緒逐出。
  • 兩年後,有人發明了分支預測分析(BPA)。現代高效能 CPU 有超純量架構,CPU 不再一次抓取執行一個指令,而是有一條預先抓取多達十幾個指令的管線,並試圖預測程式碼會走哪個分支。BPA 讓一個間諜執行緒能靠觀察 CPU 的分支預測狀態,從平行的密碼執行緒萃取出秘密金鑰;當時一次預測失誤會造成 20 個週期的懲罰,在最佳情況下,只觀察一次簽章就能萃取出 RSA 私鑰。
  • 2015 年,有人展示 L3 快取讓實用的「prime and probe」跨核心攻擊得以還原 GPG 私鑰。
  • 2017 年,Cachezoom 攻擊讓攻擊者能從 SGX 飛地萃取金鑰。

這是一個歷經十多年、許多想法匯聚在一起的領域;CPU 廠商本該多加留意。

它們嚴重到讓 Intel 與 Arm 都宣布將重新設計其 CPU 來封鎖它們;但那要花好幾年,而在此期間,軟體緩解(在有的情況下)在某些工作負載上可能造成 15% 的效能損失與偶發的重開機。

鑑於全球資料中心大概消耗全部電力的 3%,這潛在地是件大事。

Spectre 實際上是一個(仍在成長的)利用分支預測邏輯的漏洞家族——那是推測執行的一個特例。這套邏輯試圖猜測條件跳躍後會走哪條程式碼路徑,而流氓軟體能訓練它做出錯誤預測。

CPU 於是會抓取永遠不會被執行的指令,而若其中某些執行了禁止的操作(例如使用者程式讀取受保護的核心記憶體),受保護的頁面就可能被抓進快取。即使它們從未被讀取(所以存取控制檢查從未進行),這也給出一個可靠的時序側通道,讓攻擊者能觀察到密碼金鑰材料。

簡言之:即使一顆 CPU 的執行在形式上正確,各種較低層的最佳化都可能讓時序取決於秘密資料。

Meltdown 直接讀取目標行程的資料;Spectre 則誘騙目標行程經由側通道洩漏自己的資料。

如今幾乎所有 CPU(除了最小的)都使用分支預測,而且已複雜到有大量側通道。

在設計階段找出它們並不容易,因為晶片商為驗證設計而開發的工具,只檢查邏輯給出正確答案——而非它花多久時間。 之所以現在被找出來,是因為微架構隱蔽通道這個原本沉睡的死水,突然成為安全研究最熱門的主題,數百位聰明的研究生突然開始認真地看。

修好他們找到的一切要花好幾年,而以這項技術的本質,作者懷疑一切永遠都能被修好。

很可能所有具規模的 CPU 都會取得密碼處理器,配備以固定時間做 AES、ECDH、ECDSA 等運算的硬體引擎。(但那又會打開好幾罐新的蟲子。)

環境側通道#

過去二十年出現了大量利用人類行為與裝置環境的側通道攻擊。

這類攻擊利用聲學、光學、裝置運動與各種組合;一旦攻擊者想出如何從打字聲還原文字,他們就能把同樣的技術應用到以其他方式觀察到的擊鍵時序上——例如在網路上、或靠量測裝置運動。

聲學側通道#

一連串的研究進展:

  • 2001 年,有人展示擊鍵的時序含有足夠資訊,讓對手光靠觀察 SSH 加密下的流量就能還原大量資訊。由於 SSH 互動模式下每次擊鍵都在獨立封包中送出,加密封包時序給出精確的擊鍵間時間,即使只用一個簡單的隱藏馬可夫模型,每對擊鍵也能給出約一位元的內容資訊——這讓攻擊者在猜測其所觀察到之加密密碼時取得約 50 倍的優勢。
  • 2004 年,有人展示電腦鍵盤上不同的鍵發出充分不同的聲音,訓練神經網路辨識目標鍵盤上的按鍵敲擊,得出「某人的打字能從聲學發射中被擷取,錯誤率只有幾個百分點」的結論。
  • 2005 年,Zhuang、Zhou 與 Tygar 把這些線索結合成更強大的攻擊:給定某人在一個未知鍵盤上打約十分鐘英文的錄音,他們辨識出個別按鍵,然後用按鍵間時間與已知的英文統計推算出哪個鍵是哪個。於是他們能從一個從未接觸過的鍵盤的錄音中解出文字。
  • 2012 年開始的深度神經網路革命,讓人能從這類訊號中榨出多得多的資訊。 到 2016 年,有人展示若你在用 Skype 跟人講話時打字,對方能重建你打的很多內容;同年也有人展示,你在智慧手機上打字時,手指運動會以「改變 wifi 多路徑行為到足以調變通道狀態資訊」的方式干擾射頻訊號,讓一個流氓 wifi 熱點能推斷擊鍵資訊。

這類**到達時間差(TDOA)**處理過去是精密電子戰裝備的領域;如今它出現在你的口袋裡,讓一個流氓 app 能偷走你的網銀密碼——即使密碼輸入機制實作在可信執行環境中、惡意程式無法直接竊取它。

光學側通道#

2002 年 Markus Kuhn 展示答案是「幾乎什麼都能」:他把一支高效能光電倍增管接上示波器,發現常見 VDU 映像管所用藍色與綠色磷光體的光在幾微秒後衰減。因此漫射的反射光暈在時域中編碼了大部分的螢幕資訊。

於是給定一台望遠鏡、一支光電倍增管與合適的影像處理軟體,就有可能靠解碼從一位銀行家臉上或襯衫上散射的光,讀出他正在看的電腦螢幕。(據史諾登,這是 NSA 用來監視外國大使館的技術之一,代號「Ocean」。)

他們發現其中相當多都在用光學方式傳送序列資料:測試的 12 台數據機中有 11 台、7 台路由器中有 2 台,以及一台資料儲存裝置。設計者只是把指示燈直接接在序列資料線上驅動,沒有停下來意識到 LED 有足夠頻寬把資料傳給一台等候的望遠鏡。

與從窗戶接收聲音的雷射麥克風不同,這完全是被動的,而且對方向的敏感度較低。

其他側通道#

熱、指紋油漬、加速度計、陀螺儀與智慧手錶

他的實驗顯示,除非機器擁有者採取對策,否則任何能從它取得精確時間戳的人都能量測其 CPU 負載;這引出一個問題:攻擊者能否找出一台隱藏機器在世界上的位置?經度來自時區,緯度(較慢地)來自季節。所以躲在 Tor 這類匿名服務後面,可能沒有看起來那麼容易。

Adam 也發展出把智慧手機加速度計當側通道使用,發現使用者打字時手機的搖晃運動會透露顯著資訊。即使在不受控的環境中(使用者行走時),他的模型也能在五次嘗試內分類出 20% 的 PIN 與 40% 的解鎖圖形。

加速度計先前已被用來解碼附近傳統電腦鍵盤的振動。 後來有人同時研究加速度計與陀螺儀,發現後者更有效,能讓四位數 PIN 的猜測比隨機好約 80 倍。

Laurent Simon 與作者接著玩起把相機變成虛擬陀螺儀(因為你輸入 PIN 時手機會傾斜),發現相機加麥克風在擊鍵推斷上與陀螺儀一樣好。

2015 年 Apple Watch 的出現激勵更多人研究智慧手錶側通道;到當年底,已有人展示智慧手錶不只讓你能對智慧手機的 PIN 輸入做加速度計推斷攻擊,還能重建在一般鍵盤上輸入的文字——不過若你戴在左手腕上,左手字母的準確度會較高。

Joel Reardon 等人研究了 Google Play 商店的 88,000 個 app,2019 年報告:雖然超過 12,000 個具備利用側通道觀察其他 app 或系統資料、或以不該有的方式通訊的手段,實際這麼做的只有 61 個。

然而安全工程師必須保持警覺:隨著我們轉向智慧手機這類有豐富感測器的裝置,我們就得到一組豐富的側通道,讓「把資訊侷限在特定 app 與脈絡中」變得越來越難。隨著我們走向一個有無數智慧物件的世界,側通道的數量與種類會倍增。我們可以預期這總有一天會給我們一個難堪的驚喜。

社會側通道#

許多側通道發生在應用層,而且常被忽略。

一個更微妙的例子:在英國,來自泌尿生殖醫學診所就診的個人健康資訊被視為特別敏感,未經病患同意不得與家醫分享。有一個案例中,一位女性造訪泌尿生殖診所的事實洩漏了——因為保險公司未召回她做家醫認為該做的抹片檢查:保險公司知道診所已經做過抹片,不想付兩次錢。

政策制定者與科技業多年來都假裝相信:把病歷這類敏感資料去識別化就讓它變成非敏感、因而適合被當作工業原料對待。一樁又一樁醜聞已明白告訴我們,事實斷非如此——這也是導向歐盟《一般資料保護規則》的原因之一。

多數造成真實傷害的隱私失敗,都源於資訊從一個脈絡(如診所)跑到了另一個脈絡(如報紙)。

有複雜側通道的無所不在裝置並不是唯一的議題;為廣告而大規模蒐集資料、卻沒有有效的選擇退出機制,導致了多得多的洩漏。

小結#

側通道洩漏是個龐大的主題,而隨著我們把軟體與感測器放進幾乎每樣東西裡,它只會變得更複雜。

哪些側通道構成真實威脅當然取決於應用,而它們多數在多數時候仍會停留在學術興趣的層次。但偶爾,它們會咬人。所以安全工程師必須意識到風險。

研究問題#

這對古典 Tempest 攻擊也適用:軟體無線電——在中頻階段把訊號數位化、其後全部用軟體處理的無線電——已不再是昂貴的軍事珍品,而是無所不在於行動基地台、GPS 接收器、IoT 裝置,乃至業餘者的臥室。

機器學習興趣的爆發必然會有影響,從 Tempest、功耗分析到社會通道的利用,處處改善攻擊。很難預測哪些側通道會規模化成另一個十億美元級的議題,但可以打賭其中有些會。