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