|
1> 為什么要加密,如何加密?
當(dāng)您的產(chǎn)品推向市場(chǎng)的時(shí)候,您的競(jìng)爭(zhēng)對(duì)手就開始盯上它了,如果您的產(chǎn)品硬件很容易被模仿,而且您使用的MSP430單片機(jī)沒有被加密的話,
那么您辛辛苦苦的勞動(dòng)成功就很容易成為您競(jìng)爭(zhēng)對(duì)手的產(chǎn)品了,使用JTAG調(diào)試工具FET雖然可以將程序下載到芯片內(nèi)部,但只有使用專業(yè)編程器能夠防止程序被竊取。
2> JTAG、BSL、BOOTLOADER、熔絲的區(qū)別和關(guān)系是什么?
JTAG接口能夠訪問MSP430單片機(jī)內(nèi)部所有資源,通過JTAG可以對(duì)芯片進(jìn)行程序下載、代碼調(diào)試、內(nèi)存修改等等,通過JTAG還能燒斷加密熔絲,熔絲一旦被燒斷,
JTAG接口絕大部分功能失效,就再也不能通過它進(jìn)行編程了。
BSL接口是利用芯片內(nèi)部駐留的bootloader程序?qū)崿F(xiàn)的自編程,通過特定的時(shí)序使得CPU進(jìn)入bootloader代碼斷,然后利用每個(gè)MSP430芯片內(nèi)部都有的Timer A構(gòu)成一個(gè)軟件串口
來與上位機(jī)通訊,這樣可以將代碼下載到芯片內(nèi)部。實(shí)現(xiàn)BSL除了JTAG接口的一些引腳外,還需要用到兩個(gè)TA0功能引腳,因此在設(shè)計(jì)產(chǎn)品時(shí)如果需要加密,則應(yīng)該考慮將這兩個(gè)
引腳也連出來。要燒斷熔絲(加密)必須使用JTAG接口;燒斷熔絲后只能通過BSL或者用戶代碼來實(shí)現(xiàn)編程更新。
3> BSL的驗(yàn)證密碼是怎么回事?
BSL也能讀出芯片內(nèi)部的代碼,這樣可以實(shí)現(xiàn)編程后的校驗(yàn)等功能。通過BSL擦除所有Flash信息時(shí)不需要驗(yàn)證密碼,但是要進(jìn)一步操作,就得輸入32字節(jié)密碼進(jìn)行驗(yàn)證。
BSL的協(xié)議規(guī)定這32字節(jié)密碼為芯片F(xiàn)LASH區(qū)域的最高32字節(jié),也就是程序的16個(gè)中斷向量,如果您擁有這段程序的最后32字節(jié),就能通過BSL將芯片內(nèi)部所有代碼讀取出來。
4> 為什么要使用高級(jí)加密?
32字節(jié)的密碼看似幾乎完全沒可能使用窮舉法來實(shí)現(xiàn)破解,但是各位別忘了,msp430的16個(gè)中斷向量未必每一個(gè)都用到了,沒用到的中斷向量為0xffff,如果您的程序只用到
了復(fù)位向量,那么破解者只需嘗試最多32768次(中斷向量為偶數(shù),所以除以2)就能將其破解,另外,如果芯片本身Flash容量較小,比如4K字節(jié),那么破解者只需嘗試最多2K次
就能將其破解。這對(duì)自動(dòng)操作的計(jì)算機(jī)來說幾乎是一瞬間的事情。那么如果用到的中斷向量越多,就越難破解,最好的辦法就是將所有未用到的中斷向量全部填充為隨機(jī)數(shù)據(jù),這就是“高級(jí)加密”。
|
|