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