Qubes U2F代理是一個利用Web瀏覽器使用U2F雙因素身份驗證設備的安全代理,有它在瀏覽器將不會被暴露給完整的USB堆棧。

什麼是U2F?

U2F是“Universal second Factor”的縮寫,它是一個使用硬件設備(U2F令牌)作爲“second factors”進行身份驗證的框架,即你所擁有的內容與你所知道的內容(如密碼)相反。這種額外的控制在密碼被盜的情況下提供了良好的保護(例如通過網絡釣魚或鍵盤記錄)。雖然密碼破解對用戶來說可能不是很明顯,但對於惡意破解人來說則增加了一個環節:必須獲得無法複製的物理設備。儘管如此,還是需要注意U2F無法全方位保證面臨威脅時主機系統的安全性。(例如在對手控制下感染惡意軟件的操作系統)。

U2F規範定義了從USB到瀏覽器API的多層協議,整個堆棧用於與瀏覽器中的Web應用程序(最常見的網站)。在大多數情況下,令牌是USB加密狗。協議非常簡單,允許設備在內部存儲非常少的狀態(因此令牌可能相當便宜),同時驗證幾乎無限數量的服務(因此每個人只需要一個令牌,而不是每個應用程序一個令牌)。用戶界面通常限於單個LED和按鈕,按下按鈕即確認事務,因此設備本身也易於使用。

目前,最常見的兩步身份驗證形式是由用戶手動輸入到web應用程序中的數字代碼組成。這些代碼通常由用戶智能手機上的應用程序生成或通過SMS發送。到目前爲止,衆所周知,這種兩步身份驗證的形式很容易受到網絡釣魚和中間人攻擊,因爲請求兩步身份驗證代碼的應用程序本身通常不會由用戶進行身份驗證。(換句話說,用戶可能會不小心將代碼交給攻擊者,因爲他們並不總是知道真正請求代碼的是誰。)相比之下,在U2F模型中,瀏覽器確保令牌接收關於請求身份驗證的web應用程序的有效信息,這樣令牌就知道它正在驗證哪個應用程序。儘管如此,即使使用U2F,一些攻擊仍然是可能實現的。

特點

在傳統的設置中,web瀏覽器和USB堆棧(U2F令牌與之相連)都在同一個單片操作系統中運行。由於U2F模型假定瀏覽器是可信的,因此操作系統中的任何瀏覽器都能夠訪問存儲在U2F令牌上的任何密鑰。用戶無法知道哪個瀏覽器爲哪個服務訪問了哪個密鑰。如果有任意一個瀏覽器受到攻擊,令牌的所有密鑰都可能受到攻擊。(但是,如果U2F設備有一個特殊的顯示器向用戶顯示正在進行身份驗證的內容,則可以減輕此問題。)此外,由於USB堆棧在同一個單片操作系統中,系統很容易受到類似BadUSB的攻擊。

相比之下,在Qubes操作系統中,可以安全地將瀏覽器劃分到一個qube中,而將USB堆棧劃分到另一個qube中,這樣它們就可以始終保持獨立。然後,Qubes U2F代理允許連接到一個qube中的USB堆棧的令牌在一個單獨的qube中與瀏覽器通信。假設USB堆棧從瀏覽器的角度來看是不受信任的,並且令牌不會盲目地信任瀏覽器。因此,令牌永遠不會與瀏覽器處於同一個qube中。代理僅轉發實際執行身份驗證所需的數據,將所有不必要的數據都刪除,因此它不會成爲攻擊的載體。

Qubes U2F代理有兩個部分:前端和後端。前端與瀏覽器在同一個qube中運行,並使用僞造的類似USB的HID設備uhid。後端運行sys-usb並且表現得像瀏覽器。這是使用u2flib_host參考庫完成的。所有的代碼都用Python編寫。標準qrexec策略負責將調用定向到適當的域。

圖中vault底部帶有虛線的qube描述了開發者計劃在隔離的qube中使用軟件令牌而不是物理硬件令牌實現Qubes U2F代理的未來工作。這類似於Split GPG允許我們在沒有物理智能卡的情況下模擬智能卡模型的方式。

U2F的一個非常重要的假設是瀏覽器驗證發送到U2F令牌的每個請求,特別是發送認證請求的Web應用程序與將通過回答該請求進行認證的應用程序匹配(以便例如防止網上誘騙網站向您的銀行網站發送身份驗證請求)。但是,藉助Chrome中的WebUSB功能,惡意網站可以通過直接連接到令牌而不是使用瀏覽器的U2F API 來繞過這個安全措施。

Qubes U2F 代理還通過實施額外的驗證層來防止此類攻擊。例如,此驗證層允許您強制執行twitterqube中的Web瀏覽器只能訪問與之關聯的U2F密鑰https://twitter.com。這意味着如果用戶twitterqube中的任何內容遭到破壞,它仍然無法訪問用戶的令牌上的U2F密鑰以用於任何其他網站或服務,比如電子郵件和銀行帳戶。這是相對於單片系統的另一個顯著的安全優勢。爲了獲得更多保護,還可以將U2F代理與Qubes防火牆結合使用,通過配置Qubes防火牆以防止銀行qube訪問任何其他網站,以降低其他網站在嘗試繞過U2F身份驗證時破壞瀏覽器的風險。

本文由 黑客視界 綜合網絡整理,圖片源自網絡;轉載請註明“轉自黑客視界”,並附上鍊接。

查看原文 >>
相關文章