1. 程式人生 > >加密芯片那些事兒

加密芯片那些事兒

被攻擊 讓我 自身 我們 fin 系列 號稱 tro 金屬網

一個好的安全加密芯片不但要有安全可靠,不可被破解的物理硬件,還要有可靈活設計的軟件。二者缺一不可,否則再好的硬件,會因為軟件設計的限制,被破解。再好的軟件設計方案,也會因為,硬件安全程度不夠,被侵入者全盤復制。
https://files.cnblogs.com/files/walta99/%E5%8A%A0%E5%AF%86%E8%8A%AF%E7%89%87%E9%82%A3%E4%BA%9B%E4%BA%8B%E5%84%BF.pdf

加密芯片那些事兒

作者:武者

目錄

一、 為什麽要用加密芯片... 2

二、 加密芯片安全性考慮要素... 3

三、 加密芯片的硬件安全性... 3

四、 加密芯片的軟件安全性... 5

1. 真值點判斷工作模式... 5

2. 數據加解密工作模式... 6

3. 功能運算工作模式... 8

五、 結束語... 9

一、 為什麽要用加密芯片

原因很簡單:MCU很容易被破解! 圖一為本人定期收到一家芯片解密公司的廣告。不斷有新的芯片被解密成功。破解一顆芯片,便宜的幾百元,貴的幾萬元。記得15年前Cypress的一款USB芯片Cy63001,號稱不可被破解,當時我也問過市面上各家芯片破解公司,都說無法破解。後來我興致勃勃地把它開發出來,並快活的收取著licese費用。沒想到好景不長,只過了2年,這顆芯片就可以被破解,破解費5萬元。這後又過1年,這顆芯片的破解費迅速降到500元!下降速度超過中國股市……

圖1:定期收到芯片解密廣告

這些芯片破解公司可以非常容易的破解MCU,提取芯片裏面的二進制代碼,還可以將代碼進行反匯編,進行跟蹤、調試。

如果在設計方案上加一顆加密芯片,並讓主控MCU在工作的時候,跟這顆加密芯片有交互。這樣即使主控MCU被破解,整套方案,沒有了這顆加密芯片也是運轉不起來的。

那麽問題來了,這顆加密芯片是否安全可靠,是否能夠不被破解?這就下面要講的內容。

二、 加密芯片安全性考慮要素

加密芯片承載著整套方案的安全重任,其本身是否安全可靠,至關重要。衡量一顆加密芯片是否足夠安全,主要考慮2方面:硬件、軟件。

市面上的加密芯片五花八門,種類繁多,讓我們看的眼花繚亂。一個加密芯片是否足夠安全,加密芯片本身的硬件結構,至關重要。如果加密芯片自身能夠像主控MCU一樣被破解,那麽整套方案就毫無安全可言。

在加密芯片硬件可靠的基礎上,使用的是哪種軟件方案也同樣重要。有一些加密芯片硬件安全度很高,不可被破解,但使用的軟件方案不好,這樣也會被搞芯片破解的人,輕而易舉的改動主控芯片的二進制碼,跳過加密芯片運行,或者在功能上模擬出一樣的加密芯片,從而破解整套方案。

一個好的安全加密芯片不但要有安全可靠,不可被破解的物理硬件,還要有可靈活設計的軟件。二者缺一不可,否則再好的硬件,會因為軟件設計的限制,被破解。再好的軟件設計方案,也會因為,硬件安全程度不夠,被侵入者全盤復制。

三、 加密芯片的硬件安全性

上世紀70年代初期,嵌入式系統是由分離部件如:CPU、ROM、RAM、I/O緩存、串口和其他通信與控制接口組成的。我們可通過早期的單板機,清楚地看到,如圖:

圖2:早期單板機

有一些加密芯片,使用比較偏門的MCU實現(甚至一些MCU訂制廠商,同時也在賣加密芯片)。這些加密芯片,再偏門,也能夠被芯片破解者通過侵入式或非侵入式攻擊,輕松得到加密芯片的內部代碼,然後破解者從加密芯片廠商購買同樣加密芯片,自行燒錄,從實現整套方案破解。

目前智能卡芯片內核的加密芯片,最為安全可靠。其他的內核芯片,都有可能被破解。智能卡內核之所以最安全,是因為其使用了存儲器總線加密技術,頂層金屬網絡設計,混合邏輯設計等,並且智能卡芯片提供了很多的防止攻擊保護,如:防止電源噪聲攻擊,時鐘噪聲攻擊等等。有興趣的可以搜索一篇《MCU芯片加密歷程》的文章。

圖3:智能卡存儲器總線加密技術,存儲器中的數據都是密文存儲,

即使被入侵者得到,也無法使用。

目前銀行卡、電信SIM卡,社保卡等涉及到錢的安全領域,基本上都是使用智能卡芯片,並且各自都有其行業規範。就是因為智能卡芯片的安全程度最高,物理上被攻擊的可能性極小。

如何判斷加密芯片是否為智能卡內核的加密芯片?

由於智能卡的高安全性,不排除一些加密芯片供應商,會說自己的芯片使用的是智能卡內核。判斷其真偽,很簡單,只要問他們加密芯片是否能提供智能卡通信接口(即:ISO7816接口),如果提供,則買一個智能卡讀寫器,操作一下即可。如果不提供ISO7816接口,則肯定不是智能卡內核的。另外還有個判斷依據,問其加密芯片內部,是否提供硬件的DES算法寄存器,DES算法硬件支持,是銀行卡,社保卡等智能卡的標配。我所了解的智能卡內核的加密芯片有:中巨的SMEC98SC、淩科芯安的LKT4100F、ATMEL的AT88SC、Infineon的SLE 77CF1200S等等。

四、 加密芯片的軟件安全性

在加密芯片硬件不可破解的基礎上,我們再談談加密芯片的軟件方案。加密芯片物理硬件不可破解後,並不是就萬事大吉了,軟件設計的好壞,同樣會影響到整套方案的安全。加密芯片的軟件工作原理,我分為三個類型:1. 真值點判斷類型; 2. 數據加解密類型; 3. 功能運算類型。下面列舉一些簡單的例子,解釋其軟件工作原理。

1. 真值點判斷工作模式

主控MCU在工作時,判斷一下外部的加密芯片是否合法,然後決定自身是否要正常工作,我把這一類加密芯片工作方式,統稱為真值點判斷類型。

這類判斷加密芯片是否合法的方式有:PIN碼驗證,對稱算法運算(AES,DES等),非對稱算法運算(RSA,ECC等),散列算法(HMAC-MD5, HMAC-SHA,HMAC-SM3等),挑戰碼方式(如ATMEL的AT88SC系列芯片)……

真值點判斷方式,操作簡單,對主控芯片原有代碼改動較小。加密芯片提供者甚至可以提供簡單配置一下密鑰,就能工作起來。但這類方式有個致命弱點,如果侵入者將主控MCU的代碼,反匯編,並作改動就可以繞過加密芯片,實現破解。如下面的反匯編代碼中,將C:0x0420地址代碼,改成直接挑磚指令:SJMP 0x042C,將完美繞過加密芯片。

所有這類型工作方式,都存在被破解的可能性,破解難度取決於找到對應真值點的位置,一旦找到,整套方案就被破解了。

圖4:加密芯片工作在真值點判斷模式下的原代碼

將此處代碼直接改成:

SJMP C:042C

將直接跳過加密芯片,正常工作!

圖5:加密芯片工作在真值點判斷模式下的反匯編

將C:0x0420地址代碼,改成直接挑磚指令:SJMP 0x042C,將完美繞過加密芯片

2. 數據加解密工作模式

將一部分數據密文存放在加密芯片中,當主控MCU工作時,從加密芯片密文讀出,然後在主控芯片中再解成明文使用,這一類統稱為數據加解密類型。常見的加解密算法有對稱算法(AES,DES等),非對稱算法運算(RSA,ECC)等等。

這類工作模式,同樣有漏洞,要求入侵者能夠調試反匯編的代碼。如圖7,在C:0x01C0處打斷點,將變量bDecryptData中的明文數據得到,也將成功破解整套方案。

圖6:加密芯片工作在數據加解密模式下的原代碼

在此處打斷點,可獲取解密後數據!

圖7:加密芯片工作在數據加解密模式下的反匯編

將C:0x01C0地址打斷點,並把對應地址變量內容讀出,

然後替換匯編代碼,也將成功破解

3. 功能運算工作模式

將主控芯片的一部關鍵代碼放在加密芯片中,當主控MCU工作時,傳入參數,請求加密芯片執行運算,並獲取計算結果。這一類工作方式,統稱為功能運算類型。

這類工作模式,是將一部分代碼放入加密芯片中運行,例如圖8中,計算圓周長的代碼在加密芯片中,主控芯片只需要傳給加密芯片圓的半徑,就能夠得到圓的周長。即使入侵者把主控MCU的反匯編代碼,每一行都理解透,在不知道“圓周長”計算公式下,他們就算有通天的本事,也無法解密整套方案。

圖8:加密芯片工作在功能運算模式下的原代碼

圖9:加密芯片工作在功能運算模式下的反匯編

五、 結束語

一個好的加密方案,即少不了安全可靠的物理硬件的支持,也少不了靈活可變的軟件支持。一些加密芯片廠商,一味的強調自己的硬件多麽強大,支持算法種類多麽的多,算法密鑰長度多麽的長,然而沒有提供很好的軟件開發支持,只能夠配置密鑰數據等,再強大的硬件,也可被輕松軟件破解;另外一些加密芯片廠商,一味的強調自己的軟件開發,多麽靈活多變,速度多麽的快,然而其硬件只是普通較偏門的MCU,不是智能卡內核芯片,這樣再完善的軟件算法,也無法擋住入侵者直接破解其硬件,將整個加密芯片的二進制碼全盤復制,並采購其一樣的加密芯片,實現整個方案的破解。

加密芯片那些事兒