一般來說,存儲在MCU的程序二進制代碼是非經加密的,如果讀出來經反匯編,是可以閱讀的。如果有一個MCU能將片內存儲的二進制程序代碼或數據以密文存儲,邊解密邊運行,外部不可見,您是不是很驚喜?
PRINCE是什么?
PRINCE看做是Flash控制器上面的加密引擎,一旦使能,PRINCE就會過濾Flash讀寫路徑的數據,并進行實時加解密。
在LPC55S69內部含有640KB Flash空間,PRINCE將其分成3個部分,分別是256KB、256KB、128KB。每個部分加密用的鑰匙是單獨提供,這可以保證即使一個部分的鑰匙被破解了,其他部分依舊安全。

在每個部分里面,PRINCE 又繼續細分成更小的空間,每個空間僅僅8KB大小。這樣可以讓客戶使用起來更靈活,可以讓第n個8KB空間加密,而第n+1個8KB空間不加密,靈活控制加密區域。
PRINCE的加密算法和秘鑰
PRINCE既然是一個數據加密引擎,那么它就有加密算法和秘鑰。
PRINCE采用一種對稱加密算法,加密塊是64位,秘鑰是128位。采用CTR模式,需要初始化向量和秘鑰。
與另一個對稱加密AES加密對比,PRINCE最大的優勢是延時極小,不需要額外的RAM空間。不用將數據搬到RAM中加密或者解密完再搬回來。這將給用戶帶來很大的方便性。
值得關注的是,PRINCE的秘鑰是通過片內的PUF模塊來產生的。秘鑰直接通過硬件總線傳輸,軟件無法訪問。掉電之后秘鑰自動消失,使用時再操作PUF產生。這種方式下,攻擊者很難找到秘鑰,更難解密Flash中的密文,從而讓數據更加安全。

PRINCE啟動的四個步驟
啟用PRINCE功能大致有四個步驟:
設置PRINCE加解密的大區域和子區域;
初始化PUF,讓PUF產生秘鑰和初始化向量給到PRINCE;
使能PRINCE;
編程或者讀寫Flash。
PRINCE對程序區加密的示例。將一個NXP Logo的圖片數據放入程序區,在顯示屏上顯示數據和圖片如下:
加密之后的數據和圖片,就是一堆亂碼了,如下所示:
-
芯片
+關注
關注
463文章
54010瀏覽量
465990 -
程序
+關注
關注
117文章
3846瀏覽量
85238
原文標題:新技能!把你的程序密文存儲在芯片內!
文章出處:【微信號:Zlgmcu7890,微信公眾號:周立功單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
國密加密全解析
中移芯昇攜手達實物聯網,共創基于RISC-V架構的國密門禁新篇章
什么是DRAM存儲芯片
GMSSL:國密算法SM2、SM3、SM4的高效實現
看懂C語言程序中的內聚和耦合
內密控絕對值編碼器:工業精密定位的“智慧之眼”
劃片機在存儲芯片制造中的應用
國芯科技與信大壹密聯合推出抗量子密碼芯片
解鎖BNC插頭拆卸新技能,輕松應對維修難題
部署WoSign SSL國密RSA雙證書,實現國密HTTPS加密
新技能GET!把你的程序密文存儲在芯片內!
評論