你無法盜取一個並不存在的金鑰

2017年11月21日

Ben Smith 作者: Ben Smith
Maxim Integrated嵌入式安全事業部資深工程師  


DNA是個非常有意思的東西——它將我們與地球上的其他人類聯繫在一起,同時又使我們每個人獨一無二。世界上沒有任何一個人的DNA與您的相同,一個也沒有。

近年來,我們已經知道如何利用這種獨特性作為一種絕對身份識別的手段。有些被錯誤定罪的人得益於DNA證據而擺脫罪名,有些人則因為DNA提供了犯罪證據而受到應有懲罰。可以說,我們每個人身體中的每個細胞都攜帶有個人身份的絕對證明。

這與技術世界形成了鮮明的對比。在這個世界中,每種設備的個體之間必須完全相同,哪怕是一個微米、微伏特或位元組。每部設備都必須擁有相同的外觀及功能。大多數情況下,這是一件好事——作為現代技術的創造者,您必須提供一致的用戶體驗。但同時,這種千篇一律也可能對安全性帶來徹底的摧毀。

如何確保真實性?

由於各個設備都完全相同,難以知道聲稱來自於某台設備的消息是否真的源自於該設備。這些消息可能來自於另一台假冒設備。例如,某個房門執行器從門禁鍵盤上接收到一條消息,且輸入的密碼正確,那麼該門就應打開。但該執行器如何知道消息是真實可信的呢?

在面對面溝通中,這從來都不是問題。我們之所以認識正在交談的人,是因為我們熟悉其下巴形狀、耳朵大小以及說話的聲音——也就是說,我們知道其DNA物理特徵的表示形式,正是這點使我們每個人獨一無二。如果每台設備也都具有這樣的獨特性就好了。

這正是Maxim研發ChipDNA技術的原因。採用ChipDNA技術的設備包含使其獨一無二的元素,即使各個設備的功能都完全相同。配備有ChipDNA的設備內部是測量晶片本身特定物理特徵的電路元件。現在,這些物理特徵在時間上是穩定的,但在各個設備之間卻又是不同的。ChipDNA邏輯利用這些元件相關的變化計算一個值,該值在每次計算時保持相同,但該值對於每個具體設備都是獨一無二的。該值能夠唯一地確認設備,就像您的DNA能夠唯一地確認您的身份一樣。

為了更好的理解確保發送方身份和消息完整性的重要性,我們以一個簡單的場景為例。假如您在遠端位置有一個感測器,感測器發送消息說存在某項問題。您如何相信該消息是真實的?您有幾種選擇:

選擇一:共用金鑰

您在部署感測器之前就應設置一個金鑰——可能是密碼。然後,當感測器發送消息時,以一定的方式將金鑰合併到消息中。您接收到消息時,檢查發送的密碼是否正確;如果密碼正確,則接受該消息。

問題是,如果所有此類場景下的密碼都相同,那麼對手就可能對設備執行反向工程,並盜取密碼。然後對手就能夠假冒來自於任何類型、任何設備的消息。更為糟糕的是,如果密碼在發送時未經加密,對手根本就無需接觸設備——只需監聽會話即可獲得密碼。這就意味著能夠假冒部署範圍內任何地點的任何感測器。所以,共用金鑰不是解決問題的方法。

選擇二:公開金鑰加密

如果您在設備中設置私密金鑰,設備即可利用私密金鑰對消息進行數位簽章,並可利用對應的公開金鑰進行驗證。採用這種方式簽名的消息近乎可以實現安全認證。經過簽名的消息是幾乎不可能更改或偽造的,所謂幾乎不可能是指在沒有簽名方私密金鑰的情況下,沒有已知方法能夠在合理時間內模仿簽名。

問題是,金鑰、私密金鑰必須存在於目標設備儲存空間中的某處。如果攻擊者能夠置入惡意軟體,惡意軟體就很容易洩露私密金鑰。在開發出惡意軟體之後,即可利用韌體升級方法傳播惡意軟體,很快就會有大量受影響設備受到威脅。這種方法比簡單的共用金鑰方法好,但仍然不是最佳選擇。

選擇三:ChipDNA技術

ChipDNA技術克服了傳統公開金鑰-私密金鑰系統存在的問題,其私密金鑰永遠無法洩露,甚至無法洩露給自己。實際上,在實際需要私密金鑰之前,設備中根本就不存在私密金鑰。只有在準備對消息進行簽名時,才在硬體中產生ChipDNA邏輯計算的值,並且立即銷毀。計算值從不會出現在微控制器的記憶體映射中。以下是您可能使用ChipDNA技術的方式:

設備製造商在部署物聯網(IoT)設備之前,使ChipDNA硬體計算一個與ChipDNA值(私密金鑰)對應的公開金鑰,而實際的ChipDNA值絕不會洩露。設備製造商然後利用其企業私密金鑰對公開金鑰進行簽名,產生一個證書,然後將其寫入到設備。該證書隨後可證明設備提供的公開金鑰與工廠計算的公開金鑰相同,因為沒有人能夠在無企業公開金鑰的情況下生成有效的證書。

完成部署之後,如果IoT設備想要發送消息,則重新計算ChipDNA值並將其作為私密金鑰,然後對消息進行簽名。如果消息的接收方擁有該設備的公開金鑰,則能夠以非常高的可信度確認消息是真實的、未經篡改以及來自於特定的設備。

ChipDNA技術

ChipDNA技術基於物理不可克隆函數(PUF)

但是,自然環境下有數以百萬計的IoT設備,每台IoT設備都配備一個公開金鑰,由誰來管理這個龐大的公開金鑰資料庫呢?接收到某台IoT設備消息的所有接收方不可能都擁有特定設備的公開金鑰。但是接收方可向設備本身發送請求,詢問設備的公開金鑰證書。當設備發送證書時,接收方可通過兩步來驗證證書的有效性:首先,接收方使用簽名方的公開金鑰驗證證書的簽名。驗證證書的合法性之後,接收方可繼續第二步:使用證書中包含的公開金鑰,測試設備消息的有效性。儘管看起來像是一套非常複雜的系統,但整個過程所需時間卻不到1秒鐘。

防止IoT遭受侵入式攻擊

問題來了,該系統到底有多安全?考慮一下以下場景:在測量晶片的物理屬性之前,私密金鑰甚至根本不存在,並且在使用完私密金鑰後立即將其銷毀。由於私密金鑰僅存在於安全、完全隔離的硬體中,從來不會出現在微控制器的實際儲存空間內,所以不能利用流氓韌體發現私密金鑰。即使攻擊方試圖探測晶片本身,探測元件的行為將改變元件的特性,而元件特性決定了ChipDNA值,因此將摧毀恢復私密金鑰的任何企圖。

我們以上討論了如何利用ChipDNA來絕對保證某台IoT設備消息的真實性且未經篡改,但ChipDNA也可用於從驗證韌體映射到管理設備合法使用的其他諸多過程。對於任何需要絕對保證相關設備身份的事務,ChipDNA都能大顯身手—— 擁有無窮無盡的可能性。

因此,在您考慮下一產品的安全需求時,不要將就,一定要採用最嚴格、最強大的保護—ChipDNA技術。因為,你無法盜取一個並不存在的金鑰!