硬體防護鑰匙發展:從Key Pro到Google OpenSK開放專案

作者:陸向陽

在正式說明正題前先談一個資訊界的古老物Key Pro。Key Pro是一種防盜版的電子硬體裝置,體積與打火機、火柴盒相仿,用來接在電腦的印表機介面上,只要電腦上執行某一套應用程式,程式啟動的過程中會去查核電腦是否有接上Key Pro?若無則表示該套應用程式為盜版並強制中斷執行,唯有正版購買者可以拿到實體的Key Pro並正常執行。

Key Pro通常用在防範昂貴高單價的軟體被盜版,不過也有人修改盜版取得的應用程式,使其啟動過程中自動跳過Key Pro連接的查核,如此Key Pro等於失效,所以Key Pro僅持續在少許領域中使用,未曾普及盛行。

典型Key Pro(source

Google推出Titan安全金鑰

然而隨著時代改變,印表機介面已被USB介面所統合,同時資訊軟硬體技術的進步也使攔截修改變得困難。而近年來軟體逐漸往雲端轉移,軟體盜版安裝執行的問題已減緩,真正更大的問題是自己的帳號密碼被竊取而被盜登入,包含登入電腦、手機,也包含登入雲端的網站及服務等,成為新的頭痛問題。

對此Google於2018年推出Titan Security Key(泰坦安全金鑰),類似過去的Key Pro,只要將Titan接上電腦(運用USB、藍牙或NFC通訊連接),並事先進行設定,往後要登入電腦、網站時,即會自動確認Titan是否有接上電腦,若無則拒絕登入。

Google Titan其實合乎FIDO2標準,在FIDO2之前的FIDO標準主要在於統合現有多種辨識登入技術,例如臉部解鎖、指紋解鎖等,過去每個業者各做一套辨識技術與程序,使裝置系統商難以轉換、難以整合,而FIDO標準頒佈後,所有業者依據標準實現辨識登入技術,問題即獲緩解。而FIDO2延續FIDO標準,將裝置的單機登入,擴展延伸到遠端網站的帳密登入。

Google Titan安全金鑰(source

其他業者推出硬體防護鑰匙

Google不僅將Titan技術用於個人電腦上,也將其用於機房伺服器與手機上,Google Cloud Platform(簡稱GCP)服務的機房的伺服器即有配置Titan晶片,避免不明人士胡亂更新伺服器韌體,而Google的官方手機自Pixel 3開始也內建Titan M晶片,可避免他人胡亂刷ROM改機。

Titan雖立意良善但卻有一點讓人顧慮,新聞報導Titan晶片是由中國大陸晶片商飛天誠信(Feitian)所設計生產,在中美貿易戰的氛圍下不被信任,即便Google公開表明沒有安全疑慮,但仍難讓人取信。

而除了Google外也有其他業者推出合乎FIDO/FIDO2規範的硬體防護鑰匙,甚至是採行開放硬體策略,例如Solokeys,在網路上可以直接找到Solokeys的邏輯等效電路圖、實體零件布局電路圖、使用何種晶片(Microchip的SAML11+),與之搭配的韌體軟體,統統開放。

Solokey開放專案網址:https://github.com/solokeys

Solokeys的邏輯等效電路圖(source

會採行開放亦有其考量,因為有太多網路瀏覽器需要改版改寫才能支援與使用硬體安全金鑰,而在區塊鏈、數位加密貨幣日益流行的今天,也有一些用戶是以冷錢包(Cold Wallet)進行交易,此同樣需要接上一個特殊的USB(或其他介面)硬體裝置,確認裝置內有正確的金鑰方能進行交易,開放的好處是不需知會與洽談合作等程序,即可儘快吸引大眾共同支持響應Solokeys。

或許是Google與飛天誠信間現行的合作條約不允許,也或許是要擺脫飛天誠信受人質疑安全性,或價格因素、交付因素(Titan至2020年1月僅在英美加法日等5國購買提供運送),總之Google在已有Titan的情況下,於2020年1月另行提出OpenSK的開放硬體安全金鑰專案,成為Google公開支持的另一種FIDO2硬體方案。

何為 OpenSK?

首先OpenSK改用挪威Nordic公司的nRF52840晶片,不再是飛天誠信的晶片,然後韌體、軟體方面也比照Solokeys的方式開放。

OpenSK運作上使用輕量的即時作業系統TockOS,其上則執行以Rust撰寫成的程式,Google表示Rust有較佳的記憶體防護性,減少受攻擊的可能,且以抽象層方式運作的額外負擔很少,此稱為zero cost abstraction。

另外TockOS有沙箱(sandbox)機制,可以把小型應用程式(applet,即用RUST撰寫成,在硬體金鑰上執行)、驅動程式、核心程式相互隔離,同樣是以增強安全防護為著眼而提供。

最後,OpenSK專案也開放個徹底,除了軟體、韌體、電路開放外,機構外殼部分的設計資料也是開放的,只要下載回來後,載入到使用光固化(Stereolithography, SLA)技術的3D印表機上,即可用3D列印印出其外殼,達到100%自製的效果。

Google OpenSK以3D列印方式實現的外殼(source

Google OpenSK專案網址:https://github.com/google/OpenSK

OepnSK展示:

(責任編輯:王姵文)

陸向陽

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *