你的晶元,能抵擋住幾次攻擊?

2021-10-02 20:45:57 字數 3067 閱讀 6885

如果大家看過速度與激情這部電影,一定對下面這一幕有深刻的印象:黑客通過遠端控制上千輛的殭屍車輛,去自動攔截搶奪握有核發射密碼的人! 然後掌控人類的命運。

現實生活中可能沒有電影裡這麼戲劇化,不過危機卻在我們身邊時刻不停地在上演。大品牌的電子產品被仿冒造成的損失是不可估量的。同時,將來隨著物聯網,自動駕駛等技術的普及,其核心晶元的安全問題越來越重要,一旦被破解,遭受攻擊,後果難以想象。

然而,晶元的安全性確是大多數工程師往往忽略,或者說不太重視的問題。這裡我們對晶元如何被破解進行乙個簡單的**,從而大家可以有針對性地採取一些防護手段。

大家知道乙個電子產品,硬體電路被複製是幾乎沒有什麼難度的,即使打磨掉晶元上的字元。所以最關鍵的是獲得晶元內部儲存的**,因為**是整個系統執行的靈魂。

現在大多數晶元都有加密位,在設定加密位後,通過程式設計工具是沒有辦法讀出**的。但我們不要低估了壞人的**,他們會想盡種種辦法來進行攻擊。從總體上來說可以歸結為兩種方法:侵入式攻擊和非侵入式攻擊。如果用保險箱來比喻,盜取鑰匙開啟保險箱可以說是非侵入式攻擊,拿電鋸鋸開保險箱就屬於侵入式攻擊了。

加密後的晶元一般允許整體擦除(mass erase)。如果在整體擦除晶元時,控制擦除的時間,在剛剛好擦除掉加密位的時候停止(比如掉電),那麼晶元就被解密了。

是在晶元電源引腳故意輸入毛刺,使得晶元執行受到影響,使其執行跳過某些指令或發生錯誤的操作,從而使晶元資訊洩露。

利用欠壓,過壓,時鐘的瞬態跳變,使晶元產生異常,影響晶元的正常執行,使保護電路失效。

**在處理不同的資料,或走不同的流程時,時間上是不同的。時序攻擊利用這一特點可以反推金鑰。

晶元在執行不同的指令的時候,消耗的功率是不一樣的。功率分析正是利用種特性,在**執行密碼相關運算時,用高解析度功率測量儀器從外部測量晶元功率的變化,從而提取加密金鑰。

在spa的基礎上,收集已有的密碼運算時的功率變化資料,在多次統計的基礎上進行分析。是比spa更有效的攻擊。

2.7硬解密

這是最暴力,最不好防範的攻擊方法。它用溶劑溶解晶元外面的殼體,把晶元暴露出來,然後用高倍顯微鏡和聚焦離子束 fib(focused ion beam)找到加密位置,把它改變為非加密狀態,然後讀出晶元內容,然後進行解密,反彙編。

看了這些攻擊手段,是不是開始出冷汗了呢?別擔心,這只是一部分大家都熟悉的方法,哈哈。不過隨著進攻之矛越來越鋒利,防禦之盾也越來越堅固。在講防禦辦法前,我們先對相關的加密演算法做乙個簡單的介紹吧。

它的作用是把任意長度的明文,通過單向加密函式,生成固定長度的資訊摘要。如果明文發生變化,那麼會引起資訊摘要的變化。從資訊摘要無法反推出明文。

常用演算法: md5,sha-1。

用相同的金鑰進行加密和解密。如同乙個保險櫃,乙個人用一把鑰匙把檔案鎖進去,另乙個人需要用相同的鑰匙開啟保險櫃,才能看到檔案裡寫的什麼。這種演算法的關鍵是金鑰的儲存,分發,防止非授權的人獲得金鑰。

常用演算法: des, aes,rcx

所謂非對稱指的是加密方和解密方使用的金鑰不同。如同乙個保險櫃有兩個門,乙個是入口,乙個是出口,用入口的鑰匙只可以把明文放進去,用出口的鑰匙可以把明文取出。這種演算法帶來的好處是可以把入口的鑰匙公開出來(公鑰),大家都可以用公鑰進行加密,但是除了掌管私鑰的人,其他人是沒有辦法看到保險櫃中的內容的。

常用演算法: rsa,ecc

hash 主要用於數字簽名。據說最早的應用之一是美蘇互相把**儀放到對方,監控對方有沒有進行核試驗。雙方對對方都不放心啊,所以用這種演算法把資料做數字簽名,大家都能看到資料,而且不能篡改。

對稱加密演算法運算速度快,一般用來對大量資料加解密。

公鑰演算法運算速度比較慢,消耗資源多。它常常在開始階段用來分發對稱演算法使用的金鑰,之後通訊切換到對稱加解密演算法。

理論上所有加密演算法都是可以被破解的,只是花費的時間和代價的問題。

只有一種加密方法是完全無法破解的,那就是一次一密。加密者和解密者使用相同的密碼本,金鑰是真隨機數,而且長度和明文相等,每乙個明文本母用乙個金鑰字母加密成密文,密碼本使用一次後既廢棄。據說很多間諜就是用的這種加密方法。

5. 如何保護晶元

假如我們寫了乙份機密檔案,怎樣才能不被別人得到呢?首先想到的還是保險櫃,我們可以把檔案鎖進保險櫃裡,當然保險櫃有不同級別,有的還有監控功能,比如發現有人敲擊,挪動,高溫(切割)等就發出報警,或者把檔案銷毀。當然越高階的保險櫃**越高。再有就是我們把寫的內容加密,即使間諜拿到了也看不懂。最後為了更保險,我們還可以把檔案分為兩份,分別鎖進兩個保險櫃裡。

對於**來說,也是類似的。把**放入晶元後設定加密位,使別人無法讀出;或者用晶元的唯一序列號用演算法加密後存入特定位址,執行前做比對;或者把**(或**的一部分)加密後存入外部儲存器,只傳送給握有金鑰的主晶元;這就會用到前面我們介紹的幾種演算法之一,或幾種的組合。我們可以根據產品的價值來使用不同等級的保護方法。下面是一些從硬體到軟體需要考慮的地方:

如果猜測出一部分明文,將會導致破解變得容易。

如 stm32l562的以下特性可以用來提高系統的防禦能力:

arm trustzone 核心

電壓跌落檢測 brownout reset

帶入侵檢測暫存器 tamper and backup registers (tamp)

支援安全啟動 unique boot entry and hide protection area

主動入侵檢測(active tamper and protection against temperature, voltage and frequency attacks)

真隨機數發生器(true random number generator nist sp800- 90b compliant)

全球唯一序列號(96-bit unique id)

雜湊演算法加速器(hash hardware accelerator)

aes協處理器

公鑰演算法加速器(public key accelerator)

好了,希望這些對大家有些幫助,以後有機會進行更進一步的**。

其它 Coder專屬的15個謎語 你能猜中幾個?

深夜造訪 打一網路安全術語 連勝六場又贏了 打一知名作業系統 小公尺大合唱 打一著名網際網路廠商 月老難扯二人姻緣 打一網路技術 悟空出了五指山 打一技術用語 e 打一開發語言 話又說回來了 打一網路完全術語 禽流感 打一常見 pc 伺服器故障 不達目的誓不罷休 打一著名網路解決方案提供商 夢中交談...

vip位址能ping不通 ping不通的幾種情況

一 為什麼ping 不通?ping 不通也有好幾種返回資訊的 ping 不成功的返回資訊有 request timed out destination net unreachable 和 ba d ip address 還有 source quench received request timed ...

介紹幾款本人使用的usb轉串列埠晶元

1.ft232rl ftdi的產品。目前市面上應該是最穩定,相容性最好的一 款ic了,外圍非常簡單,可以設定不同的輸出電平。不過 也比較 貴。本人採用它作過小批量的通訊工具。剛開始第一版有問題。長時 間通訊會出現無故停止的狀態,後來跟 商聯絡,更改pcb,同時將 usb口外殼接地,bug排除。目前執...