SST89E/V58RD2和SST89E/V516RD2的安全性設(shè)計(jì)
1 硬件加鎖
當(dāng)SST89E/V58RD2/SST89E/V516RD2內(nèi)部存儲(chǔ)器的一個(gè)存儲(chǔ)塊被硬件加鎖后,有下面的安全特性:
①M(fèi)OVc命令從駐留在非加鎖區(qū)(外部程序空間通常也是認(rèn)為沒(méi)加鎖)執(zhí)行或者以軟加密的Flash空間執(zhí)行,不允許訪(fǎng)問(wèn)在硬件保護(hù)Flash塊的目標(biāo)地址。這可使硬件保護(hù)區(qū)的代碼難以接觸,防止軟件被非法復(fù)制。
②所有外部主機(jī)模式和IAP指令(除了chip-Erase/Prog-SBX)禁止操作硬件加鎖的Flash塊。
③在復(fù)位時(shí)EA被鎖存,防止在代碼執(zhí)行中被切換和跳到外部程序空間。
2 軟件加鎖
軟件加鎖允許Flash內(nèi)容在安全的環(huán)境下被讀取和改寫(xiě)。被軟件加密的Flash塊有以下安全特性:
①M(fèi)OVC命令從駐留在非加鎖區(qū)(外部程序空間通常也是認(rèn)為沒(méi)加鎖)執(zhí)行,不允許訪(fǎng)問(wèn)在軟件加鎖Flash塊的地址空間。這可使硬件保護(hù)區(qū)的代碼難以接觸,防止軟件被非法復(fù)制。
②從非加鎖區(qū)產(chǎn)生的IAP指令被禁止。
③從軟件加鎖區(qū)產(chǎn)生的IAP指令對(duì)另外一個(gè)相同安全等級(jí)或相比較低的Flash塊是允許的。從硬件加鎖區(qū)產(chǎn)生的IAP指令對(duì)另一個(gè)軟件加鎖的Flash塊的訪(fǎng)問(wèn)也是允許的。
④在復(fù)位時(shí)EA被鎖存,防止在代碼執(zhí)行中被切換和跳到外部程序空間。
3 安全加密指導(dǎo)
3.1 安全加密位的編程
在燒寫(xiě)安全加密位時(shí)有6個(gè)注意要點(diǎn):
①SST89E/V58RD2/SSTB9E/V516RD2的加密由三個(gè)安全加密位SB1、SB2和SB3控制。
②3個(gè)安全加密位可以通過(guò)外部主機(jī)模式或IAP的Prog-SB1、Prog sB2和Prog-SB3來(lái)編程改寫(xiě)。安全加密位可以隨意改變,不用考慮當(dāng)前安全等級(jí)。
③一旦某個(gè)加密位已經(jīng)被編寫(xiě)后,只能通過(guò)外部主機(jī)模式或IAP的Chip-Erase命令來(lái)擦除所有3位加密位。
④在任何時(shí)候的安全加密位狀態(tài)都是透過(guò)特殊功能寄存器SFST[7:5]查詢(xún)的。
⑤安全加密位有8種組合,安全等級(jí)3有兩個(gè)選擇,每個(gè)選擇有兩種組合。這樣就共有6種不同安全加密選擇。
⑥6個(gè)安全加密選擇分成4個(gè)不同安全等級(jí)。
3.2 IAP指令的影響
IAP指令對(duì)安全加鎖功能的影響如下:
①?gòu)母甙踩燃?jí)執(zhí)行的IAP命令可以訪(fǎng)問(wèn)低安全等級(jí)Flash塊的內(nèi)容。
②從軟加密或不加密安全等級(jí)的IAP命令可以訪(fǎng)問(wèn)相同等級(jí)的其他Flash塊。
③從Flash塊1或外部的程序空間執(zhí)行IAP的安全指令不受安全等級(jí)的限制。
④外部程序空間執(zhí)行IAP的整片擦除指令chipr-Erase不受安全等級(jí)的限制。
4 安全等級(jí)
4.1 安全等級(jí)1――不加鎖
當(dāng)全部3個(gè)加密位都沒(méi)有被燒寫(xiě)時(shí),就是安全等級(jí)l。這也是通過(guò)外部主機(jī)模式或IAP執(zhí)行整片擦除指令chip-Erase后的默認(rèn)安全狀態(tài)。在安全狀態(tài)1,安全狀態(tài)
位SFST[7:5]是000b,內(nèi)部Flash塊的安全特性被禁止,MOVC指令和外部主機(jī)模式和IAP指令可以訪(fǎng)問(wèn)內(nèi)部的2塊Flash空間。
4.2 安全等級(jí)2――防止代碼的誤操作
在安全等級(jí)1下,通過(guò)外部主機(jī)模式或IAP Prog-SBI燒寫(xiě)加密位SB1,其余兩個(gè)加密位不燒寫(xiě),可以去到安全等級(jí)2。在安全等級(jí)2:
①2個(gè)Flash塊都被軟加密。
②安全狀態(tài)位SFST[7:5]是100b。
③外部主機(jī)模式和IAP的字節(jié)校驗(yàn)指令Byte_Verifycommand可以執(zhí)行。允許在Blockl和Bloclk2的程序執(zhí)行IAP指令。
④不允許從外部程序空間執(zhí)行對(duì)內(nèi)部Flash塊的MOVC命令,但是從BLocK0或BLocK1可以執(zhí)行對(duì)自己或另外Flash塊和外部程序空間的MOVC命令。
4.3 安全等級(jí)3
安全等級(jí)3是對(duì)代碼誤操作和軟件版權(quán)的保護(hù),可控制代碼升級(jí),包括了6個(gè)安全加密選擇的3個(gè)等級(jí)。在每一種加密方式中,從外部程序空間執(zhí)行的MOVC命令都被禁止,麗在復(fù)位時(shí)被取樣和鎖存,防止有人在代碼執(zhí)行中間切換并跳帶外部代碼。
(1)Soft Lock/Soft Lock
這個(gè)安全狀態(tài)只能從安全等級(jí)1通過(guò)外部主機(jī)模式或IAP Prog-SB2指令燒寫(xiě)加密位SB2而獲得,其他2個(gè)加密位沒(méi)有燒寫(xiě)。在安全等級(jí)3:
①2個(gè)Flash塊被軟加密。
②安全狀態(tài)位SFST[7:5]是010b。
③所有主機(jī)模式命令(除了chip-Erase和Prog-SBx)都被禁止。
④所有BlockO和Block1執(zhí)行的IAP命令(除了lAPchip-Erase)都是允許的。
⑤外部程序空間執(zhí)行對(duì)內(nèi)部Flash空間的MOVC指令都被禁止,而在內(nèi)部Block0或Block1執(zhí)行對(duì)內(nèi)部或外部程序空間的MOVC指令都允許。
駐留在內(nèi)部Flash塊的程序代碼可以防止被復(fù)制,因?yàn)橥膺叺馁Y源不能訪(fǎng)問(wèn)到內(nèi)部代碼,而2個(gè)塊的代碼還是可以在可控制的環(huán)境中升級(jí)的。在Block1執(zhí)行的代碼可以升級(jí)Block0的代碼,反之亦然。不管什么方式,由于在每個(gè)BLocK的代碼可以通過(guò)IAP被改寫(xiě),實(shí)現(xiàn)這些IAP指令的代碼存在會(huì)被誤用的可能性。
(2)Hard Lock/Soft Lock
這個(gè)安全加密選擇可以從安全等級(jí)1、2和3升級(jí)上來(lái)。在安全等級(jí)3:
①Block1被硬件加密,BlockO被軟件加密。
②加密狀態(tài)位SFST[7:5]是001b或110b。
③所有主機(jī)模式命令(除了chip-Erase和Prog-SBx)都被禁止。
④只有Block1對(duì)]BlockO做IAP操作。在外部存儲(chǔ)空間IAP Chip-Erase可以對(duì)內(nèi)部Flash塊操作。
⑤Block0對(duì)Block1的MOVC:命令被禁止,但是Block1對(duì)BlockO的MOVC命令是允許的。由于在Block1的代碼被硬件加密,不能被改寫(xiě),可以防止代碼的誤操作。由于外部不能訪(fǎng)問(wèn),在Block 1和Block 0的代碼完全被保護(hù),防止被復(fù)制。不過(guò),用戶(hù)還可以運(yùn)行Block1的IAP命令對(duì)BlockO修改實(shí)現(xiàn)代碼的升級(jí)。-
|
(3)Hard Lock/Hard Lock
這個(gè)安全等級(jí)可以從安全等級(jí)l、2和3升級(jí)。如果SST89E/V58RD2/SST89E/V516RD2的當(dāng)前狀態(tài)是等級(jí)3(ll0b),它能升級(jí)的狀態(tài)只有安全等級(jí)4 Hard Lock/Hard Lock。在安全等級(jí)3:
①2個(gè)Flash塊都被硬件加密。
②加密狀態(tài)位SFST[7:5]是011b或101b。
③所有主機(jī)模式命令(除了chip-Erase和Prog-SBx)都被禁止。
④從外部程序空間對(duì)內(nèi)部Flash的MOVC,被禁止,但是Block0或Block1對(duì)內(nèi)部或外部的MOVC:指令是允許的。在這個(gè)模式,由于所有的編程和擦除命令(除了chip-Erase和Prog-SBx)被禁止,2個(gè)Flash塊都被保護(hù)。
5 安全等級(jí)4
安全等級(jí)4是Hard Lock/Hard Lock最高加密等級(jí)。它可以從任何一個(gè)安全設(shè)置通過(guò)外部主機(jī)模式或IAP指令燒寫(xiě)3個(gè)加密位SB1、SB2和SB3。在安全等級(jí)4:
①內(nèi)部2個(gè)Flash塊被硬加密。
②加密狀態(tài)位SFST[7:5]是011b或101b。
③外部主機(jī)模式的所有命令(除了Chip_Erase命令)被禁止。
④所有IAP指令被禁止。
⑤從外部程序空間對(duì)內(nèi)部Flash塊的MOVC指令被禁止,但是從BLockO和Block1執(zhí)行的對(duì)內(nèi)部Flash和外部存儲(chǔ)空間可以執(zhí)行。
⑥不允許執(zhí)行外部程序代碼,不管EA是1或0,除非代碼調(diào)到內(nèi)部空間不存在的地址代碼(對(duì)SST89E/V58RD2,從8000H到DFFFH)。
因?yàn)榻箖?nèi)部Flash被擦除和編程,而且內(nèi)部代碼不能被訪(fǎng)問(wèn)到,在這個(gè)加密狀態(tài),內(nèi)部代碼可以防止被誤改寫(xiě)或復(fù)制。另外,這時(shí)MCU只可以從內(nèi)部Flash空間用戶(hù)代碼開(kāi)始啟動(dòng)。
評(píng)論