[AN208] 使用芯片的UID實現產品加密功能
概述
現在有些存儲類的芯片都有一個唯一ID的數據(以下簡稱UID)在芯片內部.
UID具備唯一性, 也就是每個芯片的UID數據都不一樣. 是芯片出廠之前就固化在芯片內的一段只讀數據, 不可以修改, 也不可以復制到其他芯片.
我們可以使用UID來給產品進行加密, 防止產品被非法復制(盜版).
基本原理
使用芯片的UID為數據源, 通過一定的加密運算, 得到一串加密數據. 并將加密數據保存到芯片的存儲區.
因每個芯片UID數據都不一樣, 那么加密數據也會不一樣, 這樣一批產品中, 每個芯片存儲的內容都會不一樣. 即任意一個芯片的內容(加密數據部分)只能與該芯片的UID匹配, 如果有人將芯片內容復制到其他芯片, 就會呈現加密數據與UID不匹配的情況.
因此: 我們可以在產品運行時, 通過檢查芯片的UID與加密數據是否匹配來判斷產品是否為非法復制.
功能實現
要實現UID加密功能, 需要處理兩個部分:
1. 在芯片中保存基于UID的加密數據, 這部分可以在存儲芯片燒錄時通過燒錄器完成. 流程如下:
上述燒錄操作可以使用碩飛的SP328P編程器完成.
2. 在用戶產品運行時, 檢查UID與加密數據是否匹配, 來判斷產品是否合法. 流程如下:
注意: 產品運行代碼使用的UID加密算法需與編程器一致.
碩飛SP328P編程器UID加密數據處理
碩飛的SP328P編程器提供了UID加密處理功能.
可以在燒錄存儲芯片時, 根據當前芯片的UID生成加密數據, 并寫入到芯片中;
其內置有SHA256和MD5算法, 可選額外的附加KEY參與加密運算.
加密數據可保存在芯片主存儲區任何位置, 由用戶設置來指定; 如果芯片具有OTP區域, 也可以保存到OTP區域.
如果需要使用其他加密算法, 還可以向碩飛定制軟件.
SP328P編程器軟件操作步驟:
1. 在軟件中選帶有UID型號(以W25Q128FV為示例)
2. 開啟并設置UID安全加密功能
3. 經過上述設置, 在燒錄芯片時, 編程器將自動讀取芯片的UID并進行加密運算, 并將數據保存到0x1FFF00開始的地方.
關于附加KEY:
編程器支持附加KEY數據參與加密運算, 這個是可選的內容, 用戶可以保留”附加KEY”輸入框為空白, 則在加密運算時, 不使用附加KEY參數.
當使用了附加KEY時, 編程器將此參數附加在UID的后面進加密運算, 以下是示意圖:
- 上一篇:SP32系列編程器已升級支持2Gb NAND Flash 2018/5/18
- 下一篇:碩飛SP32系列和SP16系列編程器參數表 2018/3/23