一般來(lái)說(shuō),存儲(chǔ)在MCU的程序二進(jìn)制代碼是非經(jīng)加密的,如果讀出來(lái)經(jīng)反匯編,是可以閱讀的。如果有一個(gè)MCU能將片內(nèi)存儲(chǔ)的二進(jìn)制程序代碼或數(shù)據(jù)以密文存儲(chǔ),邊解密邊運(yùn)行,外部不可見,您是不是很驚喜?
PRINCE是什么?
PRINCE看做是Flash控制器上面的加密引擎,一旦使能,PRINCE就會(huì)過(guò)濾Flash讀寫路徑的數(shù)據(jù),并進(jìn)行實(shí)時(shí)加解密。
在LPC55S69內(nèi)部含有640KB Flash空間,PRINCE將其分成3個(gè)部分,分別是256KB、256KB、128KB。每個(gè)部分加密用的鑰匙是單獨(dú)提供,這可以保證即使一個(gè)部分的鑰匙被破解了,其他部分依舊安全。
在每個(gè)部分里面,PRINCE 又繼續(xù)細(xì)分成更小的空間,每個(gè)空間僅僅8KB大小。這樣可以讓客戶使用起來(lái)更靈活,可以讓第n個(gè)8KB空間加密,而第n+1個(gè)8KB空間不加密,靈活控制加密區(qū)域。
PRINCE的加密算法和秘鑰
PRINCE既然是一個(gè)數(shù)據(jù)加密引擎,那么它就有加密算法和秘鑰。
PRINCE采用一種對(duì)稱加密算法,加密塊是64位,秘鑰是128位。采用CTR模式,需要初始化向量和秘鑰。
與另一個(gè)對(duì)稱加密AES加密對(duì)比,PRINCE最大的優(yōu)勢(shì)是延時(shí)極小,不需要額外的RAM空間。不用將數(shù)據(jù)搬到RAM中加密或者解密完再搬回來(lái)。這將給用戶帶來(lái)很大的方便性。
值得關(guān)注的是,PRINCE的秘鑰是通過(guò)片內(nèi)的PUF模塊來(lái)產(chǎn)生的。秘鑰直接通過(guò)硬件總線傳輸,軟件無(wú)法訪問(wèn)。掉電之后秘鑰自動(dòng)消失,使用時(shí)再操作PUF產(chǎn)生。這種方式下,攻擊者很難找到秘鑰,更難解密Flash中的密文,從而讓數(shù)據(jù)更加安全。
PRINCE啟動(dòng)的四個(gè)步驟
啟用PRINCE功能大致有四個(gè)步驟:
設(shè)置PRINCE加解密的大區(qū)域和子區(qū)域;
初始化PUF,讓PUF產(chǎn)生秘鑰和初始化向量給到PRINCE;
使能PRINCE;
編程或者讀寫Flash。
PRINCE對(duì)程序區(qū)加密的示例。將一個(gè)NXP Logo的圖片數(shù)據(jù)放入程序區(qū),在顯示屏上顯示數(shù)據(jù)和圖片如下:
加密之后的數(shù)據(jù)和圖片,就是一堆亂碼了,如下所示:
-
芯片
+關(guān)注
關(guān)注
453文章
50251瀏覽量
421112 -
程序
+關(guān)注
關(guān)注
116文章
3766瀏覽量
80766
原文標(biāo)題:新技能!把你的程序密文存儲(chǔ)在芯片內(nèi)!
文章出處:【微信號(hào):Zlgmcu7890,微信公眾號(hào):周立功單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論