加密金鑰 FIDO 惡意軟體

Google密碼匙雖可旁路攻陷 超高難度證實仍最安全

監測電磁場反推晶片內碼 Titan硬體金鑰慘遭破解

2021-04-22
Google Titan是一款執行安全密碼運算的專用防竄改硬體,會在內部產生加密金鑰,可加密使用者傳送給它的資料,還能匯出加密的資料,但無法匯出金鑰本身的密碼部分。看似安全滴水不漏,但法國研究人員找到了破解的方法。

 

在使用Yubico安全金鑰產品來進行雙因素驗證(2FA)多年後,Google宣布以自有產品進軍這個市場,該產品稱為Google Titan。在Fast IDentity Online Alliance(FIDO)聯盟出現之後,這種金鑰通常被稱為FIDO金鑰。FIDO制定了一系列認證技術的技術規範,以「促進認證和設備認證標準的發展、使用和遵循」。可以這麼說,FIDO的目標是「幫助避免過度依賴密碼」。

認識Google Titan

Google Titan裝置就像瑞典公司Yubico和中國公司Feitian(實際上製造Titan的硬體)的類似產品一樣,看起來像一個微型遙控鑰匙,其中包含執行安全密碼運算的專用防竄改硬體,如圖1所示。

圖1  Google Store的Titan產品圖片。

就像信用卡上的晶片(實際上,Titan金鑰與某些智慧卡都使用了相同的安全處理器)或手機中的SIM(Subscriber Identity Module)卡一樣,Titans在設計上是以一種非常特殊的方式進行加密。

Titan會在內部自行產生加密金鑰,可以加密你傳送給它的資料(或是進行數位簽章),還能夠匯出加密(或簽章)的資料。但是,它們無法匯出金鑰本身的密碼部分,因為後者已經被牢牢地鎖定在晶片內部。

或許大家會認為,這就可以實現安全的登入,而且:

‧不需要記住複雜的密碼,因為必要的加密密碼已儲存在Titan金鑰上。

‧每次登入時提交用於驗證的資料都是不同的,這要歸功於該程序中進行的加密計算,這與每次都使用相同的通用密碼是不同的。

‧無法在無意間向其他人洩露密碼,因為它是在金鑰內部產生的,並且無法取得。

‧如果沒有金鑰就無法登入,這一點使其成為第二個驗證要素。套用業界的行話來說,就是「你有的東西」以及「你知道的東西」,例如你的使用者名稱和密碼。

簡而言之,金鑰本身不僅產生還會安全地儲存自己的加密密碼,這意味著這個加密密碼無法被複製或抄寫(就理論來說)。

這個反複製功能可提供強大的防護功能,防範如網路釣魚,亦即欺騙使用者在假網站上輸入密碼,以及鍵盤側錄,也就是惡意軟體感染後監視按鍵,並在輸入密碼時竊取密碼。

當然,這個反複製保護的核心都基於兩個重要的假設,即Titan金鑰確實是防複製的,並且攻擊者無法取得私密的內部資料。但是,這個假設剛剛已經被推翻了!

一家公司NinjaLab的法國研究人員Victor Lomne和Thomas Roche剛剛發表了一篇有趣的文章,標題為《泰坦之旅:對Google Titan安全金鑰的旁路攻擊》(A Side Journey to Titan: Side-Channel Attack on the Google Titan Security Key.)(https://ninjalab.io/wp-content/uploads/2021/01/a_side_journey_to_titan.pdf)。

在這份公認非常技術性的文章(需要強大的數學背景)中,他們解釋了如何繞過Titan的反複製保護,並找到一種從裝置中擷取秘密資料的方法。

特別是,Titan金鑰支援一種稱為ECDSA(橢圓曲線數位簽章演算法)的公開金鑰加密演算法,該裝置本身會產生一個公開-私密金鑰配對,但僅匯出公開金鑰,將私密金鑰保留在裝置內部、使用者無法取得之處。

但令人驚訝的是,這些研究人員想出了一種不容易且速度不快的技術,利用金鑰操作時,電子在裝置內作動時會發出微小、雜散無線電波的副作用,透過偵測電磁輻射猜測Titan處理器晶片在執行加密運算時的內部狀態。

最終,他們發現了如何在晶片執行驗證操作時(裝置被設計成隨時可用)監控它。透過統計數千次密碼運算時的電磁輻射,就能夠推斷出該過程中使用的私密金鑰。

有趣的是,他們的電磁監聽並不是直接顯示私密金鑰的位元,而是能夠猜出隨機數(即nonce,只使用一次的數字)某些位元的值。每次運算數位簽章時,都會在乘法運算內部產生並使用隨機數。

乘法演算法是出了名的難寫,因為無論怎麼乘,它們都應該始終如一的運作。

假設你知道了輸入資料、公開金鑰和輸出資料,再知道在每個數位簽章完成後就被丟棄不用的隨機數,就足以反推出私密金鑰。

這個攻擊有多嚴重?

在對數以千計的數位簽章中成千上萬個隨機數進行取樣之後,他們獲得了每個ECDSA運算內部狀態的足夠資訊,可以推測出私密金鑰。

這是個壞消息:事實證明,如果攻擊者有辦法取得你的Titan金鑰,並將其連接到他們的監控裝置一段時間,就可以取得目前的ECDSA私密金鑰,並用它來製作Titan金鑰的軟體複本。

將原始金鑰歸還給你之後,詐騙份子可能會監視你,因為如果你不知道自己已經被駭,可能會像往常一樣繼續登入。

事實證明,Titans內部的晶片不是防篡改的,也沒有防電磁監聽的保護。

綜合這兩種因素,才衍生出所謂的旁路攻擊(Side Channel Attack)。之所以如此定義,是因為它利用的是裝置執行運算時的各種副作用,而不是直接追蹤運算結果。因此,從技術上來看,研究人員已經成功地破解了Google Titan金鑰。

好消息是:這種攻擊非常不切實際。

首先,需要大約10,000美元的專業設備,這些設備還得經過仔細架設才能執行精確的無線電測量,如圖2所示。

圖2  研究人員的電磁監聽設備。 (圖片來源:https://ninjalab.io/wp-content/uploads/2021/01/a_side_journey_to_titan.pdf)

如果放大監聽裝置的圖片,則可以看到電磁傳輸測頭(從紅∕金盒中露出的金屬尖)和精密定位設備(標記有「Thorlabs」的黑色板),如圖3所示。

圖3  Thorlabs定位器和Langer無線電傳輸測頭。 (圖片來源:https://ninjalab.io/wp-content/uploads/2021/01/a_side_journey_to_titan.pdf)

Langer ICR HH 500-6電磁傳輸測頭的檢測線圈直徑僅為半毫米(mm),可以精確地定位從2GHz至6Hz之間的無線電發射。

Thorlabs PT3/M 3軸(X-Y-Z)手動微型機器臂可以在百分之一毫米內準確定位(10微米或僅4/10,000英寸)。

其次,需要拆開Titan金鑰。研究人員認為這很容易做到,但沒辦法將裝置重新組裝並物歸原主後不被發現。

研究人員找不到用手術刀或其他精密刀具拆開裝置而不破壞它的方法,除非他們先用熱風槍軟化塑膠,然後留下明顯的破壞痕跡,如圖4所示。

圖4  分離後的Titan金鑰本體。 (圖片來源:https://ninjalab.io/wp-content/uploads/2021/01/a_side_journey_to_titan.pdf)

第三,必須使用一種腐蝕性化學物質,該化學物質將溶解設備內部安全晶片上的塑料塗層,又不能過度腐蝕並完全破壞晶片(或你的肺部)。

研究人員使用了發煙硝酸,這是一種危險的腐蝕性物質,曾經被用作火箭燃料。

第四,需要在晶片內執行大約6,000次數位簽章運算,以便收集足夠的資料。以該裝置的處理速度計算,這個動作大約需要6個小時。

接下來,就是從監聽到的資料反推出隱藏的私密金鑰。這些動作需要進行大量的統計運算和深度學習運算,但它們可以將重組Titan金鑰歸還後再「離線」完成,同時希望所有者沒有找過它,也不會注意到它看起來好像放在陽光直射後的汽車儀表板上曬過一樣。

該如何防範?

請注意,任何已經擁有你的使用者名稱、密碼和Titan金鑰的人,都可以用你的身分登入,因為它們同時具有2FA的兩個因素,即「你知道什麼」(密碼)和「你擁有什麼」(Titan金鑰)。

目前的Titan金鑰沒有生物特徵保護功能,無法阻止他人使用它們。因此,偷到某人的金鑰就可以進入他們的帳戶。因此,這種攻擊僅對想要複製你的Titan金鑰的人有意義,以便他們可以:

‧伺機而動。如果他們還沒有取得你的密碼,就先保留複製的金鑰,但會鎖定你,找機會竊取密碼。

‧持續使用你的帳戶,不會鎖定帳戶或以其他方式引起注意。

或許有惡意人士(想必財力雄厚)想要長期使用及監控你的帳戶,但幸運的是,FIDO驗證標準提供了一種偵測金鑰是否已被複製的方法來預防這一點。

FIDO金鑰產生的每一次驗證回應,都包括該金鑰到目前為止已計算出多少次回應,以及該計數的數位簽章。

每當攻擊者使用複製金鑰登入時,他們都必須猜測金鑰中計數器的當前值,新增一(次),然後再使用該值登入。如果他們猜錯了,則追蹤每個使用者金鑰計數器編號的線上服務會在攻擊者登入之前就發現他們。

但如果猜對了,那麼下次登入時,金鑰中的計數器就會少了一次(或更多),這也會引起警報。

因此,針對這種不切實際的攻擊,最明顯的預防措施是:

‧請保護好個人的安全金鑰,除非它具有某種強大的生物識別功能或其他鎖定功能,可以防止其他人使用它。如果有人可以竊取你的金鑰這麼久,然後使用這種方式來複製它,那麼他們也可能在不複製金鑰的情況下使用你的帳戶。出門在外時,盡量將金鑰放在身上,或者在不使用時將其鎖上。

‧如果你認為自己的金鑰已被破壞,就假定它已經被破壞!立即採取預防措施,例如換一個尚未被破壞的金鑰。正如研究人員指出的,他們發現很難拆開裝置以接觸晶片,又不會留下非常明顯痕跡的方法。

‧詢問你的帳號提供者是否有追蹤FIDO金鑰計數器。如果答案為否,則他們應該立刻考慮這樣做,因為已經有金鑰複製攻擊出現了(即使不太可行)。駭客在觸發追蹤計數器錯誤警告之前至少可以存取一次,但這還是值得的預防措施。

‧可以繼續使用Titan金鑰。研究人員自己說:「使用你的Google Titan安全金鑰(或其他受影響的產品)登入,顯然比使用Google帳戶等其他方式登入更安全。」

受影響的機型

該文章列出一份研究人員認為易受攻擊的裝置,或由於使用相同晶片(NXP A700X)而假定有危險的裝置列表。

完整列表位於「https://ninjalab.io/a-side-journey-to-titan/」,含括所有Google Titan金鑰、Yubikey的Neo產品以及各種Feitian設備,這包括了MultiPass FIDO和ePass FIDO金鑰。

<本文作者:Paul Ducklin是一位熱情的安全推廣大使,就像是個技術佈道者,猶有過之!他將電腦安全視為生命,並很樂意看到您也這樣做。>

 


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!