[AN208] 使用(yòng)芯片的(de±★™)UID實現(xiàn)産品加密功能(néng)
概述
現(xiàn)在有(yǒu)些(xiē)π→≤存儲類的(de)芯片都(dōu)有(yǒu)一(yī)個(gè)唯一(yīΩ₽¶)ID的(de)數(shù)據(以下(xià)簡稱UID)在芯片內(→→•nèi)部.
UID具備唯一(yī)性, 也(yě)就(jiù)是(shì)每個(gè☆₽)芯片的(de)UID數(shù)據都(dōu)不(b★©•ù)一(yī)樣. 是(shì)芯片出廠(chǎn•×g)之前就(jiù)固化(huà)在芯片內(nèi)的(de)一(yī)段隻± ∏讀(dú)數(shù)據, 不(bù)可(kě)以修改, 也(yě)不(bù÷≥™)可(kě)以複制(zhì)到(dào)¥β¶其他(tā)芯片.
我們可(kě)以使用(yòng)UID來(lái)給産品≠₩進行(xíng)加密, 防止産品被非法複制(zhì)(盜版).
基本原理(lǐ)
使用(yòng)芯片的(de)UID為 ∑↑(wèi)數(shù)據源, 通(tōng)過一(yī)定± β•的(de)加密運算(suàn), 得(de)到(dào)←$一(yī)串加密數(shù)據. 并将加≤¶€♣密數(shù)據保存到(dào)芯片的(de)存儲區(qū).
因每個(gè)芯片UID數(shù)據γγ都(dōu)不(bù)一(yī)樣, 那(nà)麽加↔λ↑密數(shù)據也(yě)會(huì)不(bù)一(yī)樣, 這(zhèπ♥&)樣一(yī)批産品中, 每個(gè)芯片存儲的(dγ®e)內(nèi)容都(dōu)會(huì)不(bù)一(yī)樣. 即任意 ♠一(yī)個(gè)芯片的(de)內(nèi)容≠§♥(加密數(shù)據部分(fēn))隻能(néng)與該芯片的(de)U↓β©βID匹配, 如(rú)果有(yǒu)人(rén)✘γ₹将芯片內(nèi)容複制(zhì)到(dào)其他(tā)芯片, 就>₩ε→(jiù)會(huì)呈現(xiàn)加密數€<£(shù)據與UID不(bù)匹配的(de)情況.
因此: 我們可(kě)以在産品運行(xíng)時(sh"∏í), 通(tōng)過檢查芯片的(de)UID與加密數(shù)據是(≈ shì)否匹配來(lái)判斷産品是(shì)否為(wèi)非法複制(zhΩ★ì).
功能(néng)實現(xiàn)
要(yào)實現(xiàn)UID加密功能(néng)ε×, 需要(yào)處理(lǐ)兩個(gè)部分(fēn)£₩☆:
1. 在芯片中保存基→×于UID的(de)加密數(shù)據, ♣±≥ 這(zhè)部分(fēn)可(kě)以在存儲芯片燒錄時(sh§£í)通(tōng)過燒錄器(qì)完成. 流程如(rú)下∞≥®(xià):
上(shàng)述燒錄操作(zuò)可(kěε×α)以使用(yòng)碩飛(fēi)的(de)SP328∑♣★P編程器(qì)完成.
2. 在用(yòng$<)戶産品運行(xíng)時(shí), 檢查UID與加密數(shù)據是(γφλ€shì)否匹配, 來(lái)判斷産品是(shì)否合法ε↓₹. 流程如(rú)下(xià):
注意: 産品運行(xíng)代碼使用(yòng)的(d>✘φe)UID加密算(suàn)法需與編程器(qì)$₽一(yī)緻.
碩飛(fēi)SP328P編程器(qì)UID加密數(shù)據處理( ₹≠lǐ)
碩飛(fēi)的(de)SP328P編程器(★φ€←qì)提供了(le)UID加密處理(lǐ)功能(néng).α€¥δ
可(kě)以在燒錄存儲芯片時(shí), π$根據當前芯片的(de)UID生(shēng)成加密數(s←★hù)據, 并寫入到(dào)芯片中;
其內(nèi)置有(yǒu)SHA256和(h✘ βé)MD5算(suàn)法, 可(kě)選額外(wài)的♦•≥♠(de)附加KEY參與加密運算(suàn).
加密數(shù)據可(kě)保存在芯片主存儲區(qū)任何位置, ♥÷®由用(yòng)戶設置來(lái)指定; ≥'§如(rú)果芯片具有(yǒu)OTP區(qū)域, 也(yě)可(kě)以保存€•₽£到(dào)OTP區(qū)域.
如(rú)果需要(yào)使用(yòng)其他ε∑(tā)加密算(suàn)法, 還(hái)可(kě)以向碩飛(§<←→fēi)定制(zhì)軟件(jiàn).
SP328P編程器(qì)軟件(jiàn)操作(zuò)步驟:
1. 在軟件(jiàπ₩πn)中選帶有(yǒu)UID型号(以W25Q128FV為σΩ$(wèi)示例)
2. &nbs♠©∏p; 開(kāi)啓并設置UID安全加密功能(néng)
3. 經過上(shàn'¥∑g)述設置, 在燒錄芯片時(shí), 編程器(qì)将自(zì)動讀(dú)¶₹®取芯片的(de)UID并進行(xíng)加密運算(suàn), 并×≤÷ 将數(shù)據保存到(dào)0x1FFF00開(kāi)始的(de→§)地(dì)方.
關于附加KEY:
編程器(qì)支持附加KEY數(shù)據參與加密運算(suàn),≥∏ 這(zhè)個(gè)是(shì)可(kě)選的(de)內(nèi)容, ≥ 用(yòng)戶可(kě)以保留”附加KEY”輸入框為(wèi)空∑>α'(kōng)白(bái), 則在加密運算( ∞₹suàn)時(shí), 不(bù)使用(yònβ&g)附加KEY參數(shù).
當使用(yòng)了(le)附加KEY時(shí), 編程器(qì)&→↕将此參數(shù)附加在UID的(de)後面進加密運算(s≠£λuàn), 以下(xià)是(shì)示意♦>£↑圖:
- 上(shàng)一(yī)篇:SP32系列編程器(qì)已升級支持2Gb NANπ₩•D Flash 2018/5/18
- 下(xià)一(yī)篇:SP328/SP328P高(gāo)速量産編程器(qì)正式上(shà™÷ng)市(shì) 2018/1/6