專利名稱:非易失性存儲器保護(hù)系統(tǒng)和保護(hù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及非易失性存儲器的數(shù)據(jù)/程序編程、數(shù)據(jù)/程序校驗、地址加密、數(shù)據(jù) /程序解密的保護(hù)系統(tǒng)和保護(hù)方法。
背景技術(shù):
傳統(tǒng)的非易失性存儲器加密方式主要有以下三類(1)通過編譯器對存儲器的數(shù) 據(jù)進(jìn)行軟件加密,該方法實現(xiàn)的存儲器加密容易通過信號和通訊協(xié)議的解析進(jìn)行破解;(2) 通過在存儲器中設(shè)置硬件加密模塊,加密模塊采用固定的特定加密算法實現(xiàn),該方法實現(xiàn) 的存儲器加密不夠靈活,對于不同的存儲器代碼使用相同的加密方式;(3)通過掩模的方 式將密鑰固化在一個ROM存儲器內(nèi)部,該方法實現(xiàn)的存儲器加密如果需要修改,必須在芯 片級進(jìn)行修正,相對第二種方式,改方法修改加密密鑰的代價要小很多,可做到只修改掩 模,從而改變密鑰,但硬件修改對于批量產(chǎn)品而言,不能做到每一個產(chǎn)品使用不同密鑰,同 時密鑰修改需要一定得時間和成本。
發(fā)明內(nèi)容
本發(fā)明旨在解決現(xiàn)有技術(shù)的不足,提出了對存儲器數(shù)據(jù)/程序編程、存儲器數(shù)據(jù)/ 程序校驗、存儲器地址加密以及存儲器數(shù)據(jù)/程序解密進(jìn)行分級、多重保護(hù),便于批量實現(xiàn) 的非易失性存儲器保護(hù)系統(tǒng)。本發(fā)明還提出了非易失性存儲器的保護(hù)方法。同時本發(fā)明還提出了用于存儲器保護(hù)系統(tǒng)和保護(hù)方法的控制單元。一種非易失性存儲器保護(hù)系統(tǒng)為存儲器編程/校驗裝置,其包括編程/校驗單 元、控制單元和存儲器所述的控制單元包括存儲器控制模塊、密鑰/保護(hù)碼寄存器組、存儲器地址選擇 模塊以及保護(hù)模塊,其中存儲器控制模塊通過控制單元的控制輸入端口一和第一輸入控制信號線(W15c) 連接編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器編程或者存儲器校驗指令;存儲器控制模塊通過控制單元的地址輸入端口一和第一輸入地址線(W16a)連接 編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器尋址地址;存儲器地址選擇模塊通過控制單元的地址輸入端口一和第一輸入地址線(W16a) 連接編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器尋址地址;保護(hù)模塊通過控制單元的數(shù)據(jù)輸入端口一和第一輸入數(shù)據(jù)線(wl3d)連接編程/ 校驗單元,接收編程/校驗單元輸出的編程數(shù)據(jù)/程序;保護(hù)模塊通過控制單元的數(shù)據(jù)輸出端口一和第一輸出數(shù)據(jù)線(w37d)連接存儲 器,根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)編程地址的保護(hù)碼,進(jìn)行下列操作中的一種(1)當(dāng) 保護(hù)碼允許訪問時,向存儲器輸出編程數(shù)據(jù)/程序;(2)當(dāng)保護(hù)碼禁止訪問時,向存儲器輸 出經(jīng)保護(hù)碼保護(hù)后變更的,且不改變存儲器內(nèi)容的數(shù)據(jù)/程序;(3)當(dāng)保護(hù)碼禁止訪問時,不向存儲器輸出編程數(shù)據(jù)/程序;保護(hù)模塊通過控制單元的數(shù)據(jù)輸入端口二和第二輸入數(shù)據(jù)線(w07d)連接存儲 器,根據(jù)存儲器地址選擇模塊輸出的校驗地址,接收存儲器提供校驗數(shù)據(jù)/程序;密鑰/保護(hù)碼寄存器組通過控制單元的數(shù)據(jù)輸入端口 二和第二輸入數(shù)據(jù)線 (w07d)連接存儲器,根據(jù)存儲器地址選擇模塊輸出的保護(hù)碼地址,接收存儲器提供的對應(yīng) 地址的保護(hù)碼,或者在進(jìn)行編程/校驗之前從存儲器獲得對應(yīng)地址的保護(hù)碼,保護(hù)碼再通 過保護(hù)碼數(shù)據(jù)線(w43d)傳遞給保護(hù)模塊。保護(hù)模塊通過控制單元的數(shù)據(jù)輸出端口二和第二輸出數(shù)據(jù)線(w31d)連接編程/ 校驗單元,根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)校驗地址的保護(hù)碼,進(jìn)行下列操作中的一種 (1)當(dāng)保護(hù)碼允許訪問時,向編程/校驗單元輸出校驗數(shù)據(jù)/程序;(2)當(dāng)保護(hù)碼禁止訪問 時,向編程/校驗單元輸出經(jīng)保護(hù)碼保護(hù)后變更的數(shù)據(jù);(3)當(dāng)保護(hù)碼禁止訪問時,不向編 程/校驗單元輸出校驗數(shù)據(jù)/程序;存儲器控制模塊通過控制單元的控制輸出端口一和第一輸出控制信號線(w57c) 連接存儲器,控制存儲器進(jìn)行編程或校驗;進(jìn)一步當(dāng)編程或者校驗的地址是存儲器保護(hù)區(qū) 的地址時,存儲器控制模塊還可以禁止第一輸入控制信號線(W15c)作用;存儲器地址選擇模塊通過控制單元的地址輸出端口一和第一輸出地址線(w67a) 連接存儲器,地址輸出端口向存儲器選擇輸出保護(hù)碼地址或編程地址/校驗尋址地址;存儲器控制模塊通過選擇控制線(w56c)和選擇地址線(w56a)連接存儲器地址選 擇模塊,控制地址選擇模塊選擇輸出保護(hù)碼地址、編程地址或者校驗地址。存儲器控制模塊通過寄存器控制線(w54c)連接密鑰/保護(hù)碼寄存器組,控制密鑰 /保護(hù)碼寄存器組更新保護(hù)碼命令;密鑰/保護(hù)碼寄存器組通過寄存器數(shù)據(jù)線(w45d)連接存儲器控制模塊,將更新后 的保護(hù)碼提供給存儲器控制模塊。一種非易失性存儲器保護(hù)系統(tǒng)為存儲器加密/解密裝置,其包括CPU、加密/解密 單元、控制單元和存儲器所述的加密/解密單元通過CPU控制信號線(w02c)連接CPU,接收CPU發(fā)出的指 令;加密/解密單元通過CPU地址線(W02a)連接CPU,接收CPU發(fā)出的存儲器待加密地址 或存儲器待解密數(shù)據(jù)/程序的地址;加密/解密單元通過CPU數(shù)據(jù)線(w02d)將解密后的存 儲器數(shù)據(jù)/程序提供給CPU ;所述的控制單元包括存儲器控制模塊、密鑰/保護(hù)碼寄存器組以及存儲器地址選 擇模塊,其中存儲器控制模塊通過控制單元的控制輸入端口二和第二輸入控制信號線(W25c) 連接加密/解密單元,接收加密/解密單元發(fā)出的存儲器地址加密或者存儲器數(shù)據(jù)解密指 令;存儲器控制模塊通過控制單元的地址輸入端口二和第二輸入地址線(W25a)連接 加密/解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;存儲器地址選擇模塊通過控制單元的地址輸入端口三和第三輸入地址線(W26a) 連接加密/解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;密鑰/保護(hù)碼寄存器組通過控制單元的數(shù)據(jù)輸入端口 二和第二輸入數(shù)據(jù)線(w07d)連接存儲器,根據(jù)存儲器地址選擇模塊輸出的密鑰地址,接收存儲器提供的存儲器 地址加密密鑰或者存儲器數(shù)據(jù)/程序解密密鑰。密鑰/保護(hù)碼寄存器組通過控制單元的數(shù)據(jù)輸出端口三和第三輸出數(shù)據(jù)線 (w42d)連接加密/解密單元,向加密/解密單元提供數(shù)據(jù)/程序解密密鑰或地址加密密鑰;存儲器控制模塊通過控制單元的控制輸出端口一和第一輸出控制信號線(w57c) 連接存儲器,控制存儲器進(jìn)行存儲器地址加密或存儲器數(shù)據(jù)/程序解密;存儲器地址選擇模塊通過控制單元的地址輸出端口一和第一輸出地址線(w67a) 連接存儲器,地址輸出端口根據(jù)存儲器控制模塊向其發(fā)出的控制信號和地址信號,向存儲 器輸出加密地址或者解密數(shù)據(jù)/程序地址;存儲器控制模塊通過選擇控制線(w56c)和選擇地址線(w56a)連接存儲器地址選 擇模塊,控制地址選擇模塊選擇輸出加密地址或者解密數(shù)據(jù)/程序地址。存儲器控制模塊通過寄存器控制線(w54c)連接密鑰/保護(hù)碼寄存器組,控制密鑰 /保護(hù)碼寄存器組更新密鑰命令;密鑰/保護(hù)碼寄存器組通過寄存器數(shù)據(jù)線(w45d)連接存儲器控制模塊,將更新后 的密鑰提供給存儲器控制模塊。存儲器通過第二輸入數(shù)據(jù)線(w07d)連接加密/解密單元,向加密/解密單元提供
需要解密數(shù)據(jù)/程序。進(jìn)一步,加密/解密單元從密鑰/保護(hù)碼寄存器組取得保護(hù)碼,通過CPU控制信號 線(W02c)和CPU地址線(W02a)判斷是否是CPU輸出用戶操作程序是否是授權(quán)的用戶操作 程序,如果不是授權(quán)的用戶程序,則禁止存儲器訪問。一種非易失性存儲器保護(hù)系統(tǒng)包括編程/校驗單元、CPU、加密/解密單元、控制 單元和存儲器存儲器控制模塊通過控制單元的控制輸入端口一和第一輸入控制信號線(W15c) 連接編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器編程或者存儲器校驗指令;存儲器控制模塊通過控制單元的地址輸入端口一和第一輸入地址線(W16a)連接 編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器尋址地址;存儲器地址選擇模塊通過控制單元的地址輸入端口一和第一輸入地址線(W16a) 連接編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器尋址地址;保護(hù)模塊通過控制單元的數(shù)據(jù)輸入端口一和第一輸入數(shù)據(jù)線(wl3d)連接編程/ 校驗單元,接收編程/校驗單元輸出的編程數(shù)據(jù)/程序;保護(hù)模塊通過控制單元的數(shù)據(jù)輸出端口一和第一輸出數(shù)據(jù)線(w37d)連接存儲 器,根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)編程地址的保護(hù)碼,進(jìn)行下列操作中的一種(1)當(dāng) 保護(hù)碼允許訪問時,向存儲器輸出編程數(shù)據(jù)/程序;(2)當(dāng)保護(hù)碼禁止訪問時,向存儲器輸 出經(jīng)保護(hù)碼保護(hù)后變更的,且不改變存儲器內(nèi)容的數(shù)據(jù)/程序;(3)當(dāng)保護(hù)碼禁止訪問時, 不向存儲器輸出編程數(shù)據(jù)/程序;保護(hù)模塊通過控制單元的數(shù)據(jù)輸入端口 二和第二輸入數(shù)據(jù)線(w07d)連接存儲 器,根據(jù)存儲器地址選擇模塊輸出的校驗地址,接收存儲器提供校驗數(shù)據(jù)/程序;密鑰/保護(hù)碼寄存器組通過控制單元的數(shù)據(jù)輸入端口 二和第二輸入數(shù)據(jù)線 (w07d)連接存儲器,根據(jù)存儲器地址選擇模塊輸出的保護(hù)碼、密鑰地址,接收存儲器提供對應(yīng)的保護(hù)碼、密鑰,或者在進(jìn)行編程、校驗、解密、加密之前從存儲器獲得編程數(shù)據(jù)/程序或 者校驗數(shù)據(jù)/程序?qū)?yīng)的保護(hù)碼、地址加密密鑰、存儲器數(shù)據(jù)解密密鑰,保護(hù)碼再通過保護(hù) 碼數(shù)據(jù)線(w43d)傳遞給保護(hù)模塊。保護(hù)模塊通過控制單元的數(shù)據(jù)輸出端口二和第二輸出數(shù)據(jù)線(w31d)連接編程/ 校驗單元,根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)校驗地址的保護(hù)碼,進(jìn)行下列操作中的一種 (1)當(dāng)保護(hù)碼允許訪問時,向編程/校驗單元輸出校驗數(shù)據(jù)/程序;(2)當(dāng)保護(hù)碼禁止訪問 時,向編程/校驗單元輸出經(jīng)保護(hù)碼保護(hù)后變更的數(shù)據(jù);(3)當(dāng)保護(hù)碼禁止訪問時,不向編 程/校驗單元輸出校驗數(shù)據(jù)/程序;存儲器控制模塊通過控制單元的控制輸入端口二和第二輸入控制信號線(W25c) 連接加密/解密單元,接收加密/解密單元發(fā)出的存儲器地址加密或者存儲器數(shù)據(jù)解密指 令;存儲器控制模塊通過控制單元的地址輸入端口二和第二輸入地址線(W25a)連接 加密/解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;存儲器地址選擇模塊通過控制單元的地址輸入端口三和第三輸入地址線(W26a) 連接加密/解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;密鑰/保護(hù)碼寄存器組通過控制單元的數(shù)據(jù)輸出端口三和第三輸出數(shù)據(jù)線 (w42d)連接加密/解密單元,向加密/解密單元提供數(shù)據(jù)/程序解密密鑰或地址加密密鑰;存儲器控制模塊通過控制單元的控制輸出端口一和第一輸出控制信號線(w57c) 連接存儲器,控制存儲器進(jìn)行編程、校驗、地址加密或存儲器數(shù)據(jù)/程序解密,進(jìn)一步當(dāng)編 程或者校驗的地址是存儲器保護(hù)區(qū)的地址時,存儲器控制模塊還可以禁止第一輸入控制信 號線(W15c)作用;存儲器地址選擇模塊通過控制單元的地址輸出端口一和第一輸出地址線(w67a) 連接存儲器,地址輸出端口根據(jù)存儲器控制模塊向其發(fā)出的控制信號和地址信號,在編程/ 校驗狀態(tài)下向存儲器輸出保護(hù)碼地址或編程/校驗尋址地址,在存儲器地址加密/數(shù)據(jù)解 密狀態(tài)下向存儲器輸出加密地址或者解密數(shù)據(jù)/程序地址;存儲器控制模塊通過選擇控制線(w56c)和選擇地址線(w56a)連接存儲器地址選 擇模塊,在編程/校驗狀態(tài)下控制地址選擇模塊選擇輸出保護(hù)碼地址、編程地址或者校驗 地址,,在存儲器地址加密或數(shù)據(jù)/程序解密狀態(tài)下控制地址選擇模塊選擇輸出加密地址 或者解密數(shù)據(jù)/程序地址。存儲器控制模塊通過寄存器控制線(w54c)連接密鑰/保護(hù)碼寄存器組,控制密鑰 /保護(hù)碼寄存器組更新保護(hù)碼命令;密鑰/保護(hù)碼寄存器組通過寄存器數(shù)據(jù)線(w45d)連接存儲器控制模塊,將更新后 的保護(hù)碼提供給存儲器控制模塊。存儲器通過第二輸入數(shù)據(jù)線(w07d)連接加密/解密單元,向加密/解密單元提供
需要解密數(shù)據(jù)/程序。進(jìn)一步,加密/解密單元從密鑰/保護(hù)碼寄存器組取得保護(hù)碼,通過CPU控制信號 線(W02c)和地址線(W02a)判斷是否是CPU輸出用戶操作程序是否是授權(quán)的用戶操作程 序,如果不是授權(quán)的用戶程序,則禁止存儲器訪問。一種非易失性存儲器保護(hù)方法為存儲器數(shù)據(jù)/程序編程方法,其包括如下步驟
(1)編程/校驗單元通過第一輸入控制信號線(W15c)連接控制單元的存儲器控制 模塊,向控制單元發(fā)出編程指令;編程/校驗單元通過第一輸入地址線(W16a)連接控制單 元的存儲器地址選擇模塊和存儲器控制模塊,輸出編程數(shù)據(jù)/程序?qū)?yīng)的尋址地址;編程/ 校驗單元的編程數(shù)據(jù)/程序輸出端通過第一輸入數(shù)據(jù)線(wl3d)連接控制單元的保護(hù)模塊, 輸出編程數(shù)據(jù)/程序;(2)控制單元的存儲器控制模塊接收到編程指令后,存儲器控制模塊通過選擇 地址線(w56a)向存儲器地址選擇模塊輸出保護(hù)碼存儲地址,存儲器控制模塊通過選擇控 制線(w56c)控制存儲器地址選擇模塊向第一輸出地址線(w67a)輸出尋址地址對應(yīng)的保 護(hù)碼存儲地址,同時存儲器控制模塊通過控制線(w57c)控制存儲器通過第二輸入數(shù)據(jù)線 (w07d)向密鑰/保護(hù)碼寄存器組提供對應(yīng)地址的保護(hù)碼,密鑰/保護(hù)碼寄存器組在寄存器 控制線(w54c)的控制下更新保護(hù)碼,更新后的保護(hù)碼通過寄存器數(shù)據(jù)線(w45d)提供給存 儲器控制模塊,并通過數(shù)據(jù)線(w43d)提供保護(hù)模塊;(3)存儲器控制模塊根據(jù)接收到的保護(hù)碼判斷編程/校驗單元發(fā)出的尋址地址是 否為存儲器保護(hù)區(qū)的地址如果尋址地址不是保護(hù)區(qū)地址,存儲器控制模塊通過選擇控制 線(w56c)通知存儲器地址選擇模塊選擇第一輸入地址線(W16a)發(fā)出的編程地址,存儲器 地址選擇模塊通過第一輸出地址線(w67a)將編程地址提供給存儲器,保護(hù)模塊將編程數(shù) 據(jù)/程序通過第一輸出數(shù)據(jù)線(w37d)提供給存儲器,存儲器在控制線(w57c)的控制下,將 編程數(shù)據(jù)/程序存儲在對應(yīng)的存儲器地址中;如果尋址地址是存儲器保護(hù)區(qū)的地址,存儲 器控制模塊屏蔽編程/校驗單元第一輸入控制信號線(W15c)發(fā)出的編程控制信號,或者密 鑰/保護(hù)碼寄存器組輸出保護(hù)碼干擾保護(hù)模塊輸出的編程數(shù)據(jù)/程序,而不改變存儲器的 內(nèi)容。進(jìn)一步,編程/校驗單元提供的編程數(shù)據(jù)/程序為加密數(shù)據(jù)/程序。一種非易失性存儲器保護(hù)方法為存儲器數(shù)據(jù)校驗方法,其包括如下步驟(1)編程/校驗單元通過第一輸入控制信號線(W15c)連接控制單元的存儲器控制 模塊,向控制單元發(fā)出校驗指令;編程/校驗單元通過第一輸入地址線(W16a)連接控制單 元的存儲器地址選擇模塊和存儲器控制模塊,輸出校驗數(shù)據(jù)/程序?qū)?yīng)的尋址地址;(2)控制單元的存儲器控制模塊接收到校驗指令后,存儲器控制模塊通過選擇 地址線(w56a)向存儲器地址選擇模塊輸出保護(hù)碼存儲地址,存儲器控制模塊通過選擇控 制線(w56c)控制存儲器地址選擇模塊向第一輸出地址線(w67a)輸出尋址地址對應(yīng)的保 護(hù)碼存儲地址,同時存儲器控制模塊通過控制線(w57c)控制存儲器通過第二輸入數(shù)據(jù)線 (w07d)向密鑰/保護(hù)碼寄存器組提供對應(yīng)地址的保護(hù)碼,密鑰/保護(hù)碼寄存器組在寄存器 控制線(w54c)的控制下更新保護(hù)碼,更新后的保護(hù)碼通過寄存器數(shù)據(jù)線(w45d)提供給存 儲器控制模塊,并通過數(shù)據(jù)線(w43d)提供給保護(hù)模塊;(3)存儲器控制模塊根據(jù)接收到的保護(hù)碼判斷編程/校驗單元發(fā)出的尋址地址 是否為存儲器保護(hù)區(qū)的地址如尋址地址不是保護(hù)區(qū)的地址,存儲器控制模塊通過選擇控 制線(w56c)通知存儲器地址選擇模塊選擇第一輸入地址線(W16a)發(fā)出的校驗地址,存儲 器地址選擇模塊通過第一輸出地址線(w67a)將校驗地址提供給存儲器,存儲器在控制線 (w57c)的控制下將尋址地址對應(yīng)的校驗數(shù)據(jù)/程序通過數(shù)據(jù)線(w07d)提供給保護(hù)模塊,保 護(hù)模塊通過第二輸出數(shù)據(jù)線(w31d)提供給編程/校驗單元進(jìn)行校驗;如果尋址地址是存儲器保護(hù)區(qū)的地址,存儲器控制模塊屏蔽編程/校驗單元通過第一輸入控制信號線(W15c)發(fā) 出的校驗控制信號,或者密鑰/保護(hù)碼寄存器組輸出保護(hù)碼干擾保護(hù)模塊輸出的校驗數(shù)據(jù)
/程序。存儲器數(shù)據(jù)校驗方法可以單獨進(jìn)行,也可以在存儲器編程數(shù)據(jù)/程序之后進(jìn)行。一種存儲器保護(hù)方法為存儲器地址加密方法,其包括如下步驟(1)加密/解密單元通過CPU控制信號線(w02c)連接CPU,接收CPU發(fā)出的指令; 加密/解密單元通過CPU地址線(W02a)連接CPU,接收CPU發(fā)出的存儲器待加密地址;(2)加密/解密單元從控制單元的密鑰/保護(hù)碼寄存器組中獲得對應(yīng)地址的加 密密鑰,利用地址加密密鑰對CPU發(fā)出的存儲器待加密地址進(jìn)行加密,加密/解密單元將 加密后的地址通過第二輸入地址信號線(W25a)輸出給存儲器控制模塊,通過地址信號線 (w26a)輸出給存儲器地址選擇模塊;加密/解密單元通過第二輸入控制信號線(W25c)連 接控制單元的存儲控制模塊,向存儲器控制模塊發(fā)出指令;(3)若存儲器控制模塊接收到的加密后的地址為存儲器保護(hù)區(qū)的地址,則存儲器 控制模塊中斷第二輸出地址信號線(w25a)發(fā)出的加密地址,若存儲器控制模塊接收到的 加密后地址為存儲器非保護(hù)區(qū)的地址,存儲器控制模塊通過選擇控制線(w56c)通知存儲 器地址選擇模塊選擇加密/解密單元通過第三輸入地址線(W26a)提供的加密后地址,存儲 器地址選擇模塊將加密地址通過第一輸出地址線(w67a)提供給存儲器;進(jìn)一步,步驟(1)還包括加密/解密單元從密鑰/保護(hù)碼寄存器組取得保護(hù)碼,通 過CPU控制信號線(W02C)和CPU地址線(W02a)判斷是否是CPU輸出用戶操作程序是否是 授權(quán)的用戶操作程序,如果不是授權(quán)的用戶程序,則禁止存儲器訪問,如果是授權(quán)的用戶 操作程序,則繼續(xù)步驟(2)。一種非易失性存儲器保護(hù)方法為存儲器數(shù)據(jù)/程序解密方法,其包括如下步驟(1)加密/解密單元通過CPU控制信號線(w02c)連接CPU,接收CPU發(fā)出的讀取 存儲器數(shù)據(jù)指令;加密/解密單元通過CPU地址線(W02a)連接CPU,接收CPU發(fā)出的存儲 器中需解密數(shù)據(jù)/程序?qū)?yīng)的尋址地址;(2)加密/解密單元通過第二輸入控制信號線(W25c)連接控制單元的存儲器控 制模塊,向控制單元發(fā)出讀取存儲器數(shù)據(jù)/程序指令;加密/解密單元通過第二輸入地址線 (W25a)連接控制單元的存儲器控制模塊,通過第三輸入地址線(w26a)連接存儲器地址選 擇模塊,輸出需解密數(shù)據(jù)/程序?qū)?yīng)的尋址地址;(3)存儲器控制模塊通過選擇控制線(w56c)控制存儲器地址選擇模塊選擇加密 /解密單元通過第三輸入地址線(W26a)輸出的尋址地址,存儲器地址選擇模塊通過第一輸 出地址線(w67a)將尋址地址提供給存儲器,存儲器在第一輸出控制信號線(w57c)的控制 下,通過第二輸入數(shù)據(jù)線(w07d)向加密/解密單元提供尋址地址對應(yīng)的存儲數(shù)據(jù);(4)加密/解密單元將第三輸出數(shù)據(jù)線(w42d)輸出的數(shù)據(jù)/程序解密密鑰和接收 到的存儲器數(shù)據(jù)按照預(yù)先設(shè)定的方式解密,解密后的數(shù)據(jù)/程序提供給CPU。進(jìn)一步,步驟(1)還包括加密/解密單元從密鑰/保護(hù)碼寄存器組組取得保護(hù)碼, 通過CPU控制線(W02C)和CPU地址線(W02a)判斷是否是CPU輸出用戶操作程序是否是授 權(quán)的用戶操作程序,如果不是授權(quán)的用戶程序,則禁止存儲器訪問,如果是授權(quán)的用戶操作 程序,則繼續(xù)步驟(2)。
本發(fā)明所述的密鑰和保護(hù)碼的更新,除本發(fā)明上述所述的更新外,還可以在下列 任意情況下更新(1)系統(tǒng)復(fù)位或者讀序列重新開始時,讀出存儲器保護(hù)區(qū)的保護(hù)碼或密鑰,將保護(hù) 區(qū)的各個保護(hù)碼或密鑰調(diào)入到控制單元對應(yīng)的密鑰/保護(hù)碼寄存器組;(2)進(jìn)行存儲器數(shù)據(jù)/程序校驗、存儲器地址加密、存儲器數(shù)據(jù)/程序解密前讀出 存儲器保護(hù)區(qū)的保護(hù)碼或密鑰,將保護(hù)區(qū)的各個保護(hù)碼或密鑰調(diào)入到控制單元對應(yīng)的密鑰 /保護(hù)碼寄存器組,該種情況下的更新要求操作過程可以容忍密鑰和保護(hù)碼的獲取時間;(3)利用空閑時間,該空閑是比較長的一段時間,如系統(tǒng)處于休眠或者待機(jī)的模式 等不占用存儲器的場合,讀出存儲器保護(hù)區(qū)的保護(hù)碼或密鑰,將保護(hù)區(qū)的各個保護(hù)碼或密 鑰調(diào)入到控制單元對應(yīng)的密鑰/保護(hù)碼寄存器組。本發(fā)明所述的編程/校驗單元連接外部控制,所述的外部控制為PC、CPU、FPGA、 CPLD中的任意一種。本發(fā)明的有益效果是通過存儲器數(shù)據(jù)/程序編程、存儲器數(shù)據(jù)/程序校驗、存儲 器地址加密以及存儲器數(shù)據(jù)/程序解密實行了分級保護(hù),其中本發(fā)明提供的存儲器數(shù)據(jù)/程序編程裝置及其編程方法,通過控制單元的控制從 存儲器中調(diào)出保護(hù)碼,限制未授權(quán)用戶對存儲器的保護(hù)區(qū)地址中的數(shù)據(jù)/程序編程;輸入 存儲器的數(shù)據(jù)為加密數(shù)據(jù),加密的過程通過上位機(jī)進(jìn)行,并將密鑰一同編程到存儲器,可以 實現(xiàn)不同的存儲器具有不同的密鑰,加密方法也不局限于一種,對于不同的地址也可以提 供不同的密鑰保護(hù),如果需要對密鑰進(jìn)行修改,不需要更換硬件,只需要通過編程進(jìn)行。本發(fā)明提供的存儲器數(shù)據(jù)/程序校驗裝置及其校驗方法,通過控制單元的控制從 存儲器中調(diào)出保護(hù)碼,有效地限制未授權(quán)用戶對存儲器的保護(hù)區(qū)地址中的數(shù)據(jù)/程序校 驗。本發(fā)明提供的存儲器地址加密裝置及其加密方法,通過地址加密密鑰對存儲器地 址的加密,使得未授權(quán)用戶訪問存儲器地址存儲器的數(shù)據(jù)為擾亂數(shù)據(jù)。本發(fā)明提供的存儲器數(shù)據(jù)/程序解密裝置及其解密方法,通過數(shù)據(jù)/程序解密密 鑰對存儲器數(shù)據(jù)/程序的解密,防止未授權(quán)用戶非法獲得的數(shù)據(jù)后解析。利用發(fā)明提供的非易失性存儲器的存儲控制單元可以同時實現(xiàn)上述的各種保護(hù), 其控制簡單、節(jié)省成本。
圖1為本發(fā)明提出的一種非易失性存儲器保護(hù)系統(tǒng),其實現(xiàn)存儲器編程/校驗;圖2為本發(fā)明提出的一種非易失性存儲器保護(hù)系統(tǒng),其實現(xiàn)存儲器加密/解密;圖3為本發(fā)明提出的一種非易失性存儲器保護(hù)系統(tǒng),其實現(xiàn)存儲器編程/校驗以 及存儲器加密/解密;
圖4為本發(fā)明提出的一種非易失性存儲器保護(hù)系統(tǒng)的密鑰/寄存器保護(hù)碼寄存器組
具體實施例方式以下結(jié)合附圖對本發(fā)明內(nèi)容進(jìn)一步說明。一種非易失性存儲器保護(hù)系統(tǒng)為存儲器編程/校驗裝置如圖1所示,其包括編程/校驗單元(01)、控制單元(02)和存儲器(07)所述的控制單元(02)包括存儲器控制模塊(05)、密鑰/保護(hù)碼寄存器組(04)、存 儲器地址選擇模塊(06)以及保護(hù)模塊(03),其中存儲器控制模塊(05)通過控制單元(02)的控制輸入端口 一和第一輸入控制信號 線(W15c)連接編程/校驗單元(01),接收編程/校驗單元(01)發(fā)出的存儲器編程或者存 儲器校驗指令;存儲器控制模塊(05)通過控制單元(02)的地址輸入端口 一和第一輸入地址線 (W16a)連接編程/校驗單元(01),接收編程/校驗單元(01)發(fā)出的存儲器尋址地址;存儲器地址選擇模塊(06)通過控制單元(02)的地址輸入端口一和第一輸入地址 線(W16a)連接編程/校驗單元(01),接收編程/校驗單元(01)發(fā)出的存儲器尋址地址;保護(hù)模塊(03)通過控制單元(02)的數(shù)據(jù)輸入端口 一和第一輸入數(shù)據(jù)線(wl3d) 連接編程/校驗單元(01),接收編程/校驗單元(01)輸出的編程數(shù)據(jù)/程序;保護(hù)模塊(03)通過控制單元(02)的數(shù)據(jù)輸出端口一和第一輸出數(shù)據(jù)線(w37d) 連接存儲器,根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)編程地址的保護(hù)碼,進(jìn)行下列操作中的一 種⑴當(dāng)保護(hù)碼允許訪問時,向存儲器輸出編程數(shù)據(jù)/程序;⑵當(dāng)保護(hù)碼禁止訪問時,向 存儲器輸出經(jīng)保護(hù)碼保護(hù)后變更的,且不改變存儲器內(nèi)容的數(shù)據(jù)/程序;(3)當(dāng)保護(hù)碼禁止 訪問時,不向存儲器輸出編程數(shù)據(jù)/程序;保護(hù)模塊(03)通過控制單元(02)的數(shù)據(jù)輸入端口 二和第二輸入數(shù)據(jù)線(w07d) 連接存儲器,根據(jù)存儲器地址選擇模塊(06)輸出的校驗地址,接收存儲器提供校驗數(shù)據(jù)/ 程序;密鑰/保護(hù)碼寄存器組(04)通過控制單元(02)的數(shù)據(jù)輸入端口二和第二輸入數(shù) 據(jù)線(w07d)連接存儲器,根據(jù)存儲器地址選擇模塊(06)輸出的保護(hù)碼地址,接收存儲器提 供的對應(yīng)地址的保護(hù)碼,或者在進(jìn)行編程/校驗之前從存儲器獲得對應(yīng)地址的保護(hù)碼,保 護(hù)碼再通過保護(hù)碼數(shù)據(jù)線(w43d)傳遞給保護(hù)模塊(03)。保護(hù)模塊(03)通過控制單元(02)的數(shù)據(jù)輸出端口二和第二輸出數(shù)據(jù)線(w31d) 連接編程/校驗單元(01),根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)校驗地址的保護(hù)碼,進(jìn)行下 列操作中的一種(1)當(dāng)保護(hù)碼允許訪問時,向編程/校驗單元(01)輸出校驗數(shù)據(jù)/程序; (2)當(dāng)保護(hù)碼禁止訪問時,向編程/校驗單元(01)輸出經(jīng)保護(hù)碼保護(hù)后變更的數(shù)據(jù);(3)當(dāng) 保護(hù)碼禁止訪問時,不向編程/校驗單元(01)輸出校驗數(shù)據(jù)/程序;存儲器控制模塊(05)通過控制單元(02)的控制輸出端口一和第一輸出控制信號 線(w57c)連接存儲器,控制存儲器進(jìn)行編程或校驗;進(jìn)一步當(dāng)編程或者校驗的地址是存儲 器保護(hù)區(qū)的地址時,存儲器控制模塊(05)還可以禁止第一輸入控制信號線(W15c)作用;存儲器地址選擇模塊(06)通過控制單元(02)的地址輸出端口一和第一輸出地址 線(w67a)連接存儲器,地址輸出端口向存儲器選擇輸出保護(hù)碼地址或編程地址/校驗尋址 地址;存儲器控制模塊(05)通過選擇控制線(w56c)和選擇地址線(w56a)連接存儲器 地址選擇模塊(06),控制地址選擇模塊選擇輸出保護(hù)碼地址、編程地址或者校驗地址。存儲器控制模塊(05)通過寄存器控制線(w54c)連接密鑰/保護(hù)碼寄存器組 (04),控制密鑰/保護(hù)碼寄存器組(04)更新保護(hù)碼命令;
密鑰/保護(hù)碼寄存器組(04)通過寄存器數(shù)據(jù)線(w45d)連接存儲器控制模塊 (05),將更新后的保護(hù)碼提供給存儲器控制模塊(05)。一種非易失性存儲器保護(hù)系統(tǒng)為存儲器加密/解密裝置,其包括CPU、加密/解密 單元、控制單元(02)和存儲器所述的加密/解密單元通過CPU控制信號線(w02c)連接CPU,接收CPU發(fā)出的指 令;加密/解密單元通過CPU地址線(W02a)連接CPU,接收CPU發(fā)出的存儲器待加密地址 或存儲器待解密數(shù)據(jù)/程序的地址;加密/解密單元通過CPU數(shù)據(jù)線(w02d)將解密后的存 儲器數(shù)據(jù)/程序提供給CPU ;所述的控制單元(02)包括存儲器控制模塊(05)、密鑰/保護(hù)碼寄存器組(04)以 及存儲器地址選擇模塊(06),其中存儲器控制模塊(05)通過控制單元(02)的控制輸入端口二和第二輸入控制信號 線(W25c)連接加密/解密單元,接收加密/解密單元發(fā)出的存儲器地址加密或者存儲器數(shù) 據(jù)解密指令;存儲器控制模塊(05)通過控制單元(02)的地址輸入端口 二和第二輸入地址線 (W25a)連接加密/解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;存儲器地址選擇模塊(06)通過控制單元(02)的地址輸入端口三和第三輸入地址 線(W26a)連接加密/解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;密鑰/保護(hù)碼寄存器組(04)通過控制單元(02)的數(shù)據(jù)輸入端口二和第二輸入數(shù) 據(jù)線(w07d)連接存儲器,根據(jù)存儲器地址選擇模塊(06)輸出的密鑰地址,接收存儲器提供 的存儲器地址加密密鑰或者存儲器數(shù)據(jù)/程序解密密鑰。密鑰/保護(hù)碼寄存器組(04)通過控制單元(02)的數(shù)據(jù)輸出端口三和第三輸出數(shù) 據(jù)線(w42d)連接加密/解密單元,向加密/解密單元提供數(shù)據(jù)/程序解密密鑰或地址加密 密鑰;存儲器控制模塊(05)通過控制單元(02)的控制輸出端口一和第一輸出控制信號 線(w57c)連接存儲器,控制存儲器進(jìn)行存儲器地址加密或存儲器數(shù)據(jù)/程序解密;存儲器地址選擇模塊(06)通過控制單元(02)的地址輸出端口一和第一輸出地址 線(w67a)連接存儲器,地址輸出端口根據(jù)存儲器控制模塊(05)向其發(fā)出的控制信號和地 址信號,向存儲器輸出加密地址或者解密數(shù)據(jù)/程序地址;存儲器控制模塊(05)通過選擇控制線(w56c)和選擇地址線(w56a)連接存儲器 地址選擇模塊(06),控制地址選擇模塊選擇輸出加密地址或者解密數(shù)據(jù)/程序地址。存儲器控制模塊(05)通過寄存器控制線(w54c)連接密鑰/保護(hù)碼寄存器組
(04),控制密鑰/保護(hù)碼寄存器組(04)更新密鑰命令;密鑰/保護(hù)碼寄存器組(04)通過寄存器數(shù)據(jù)線(w45d)連接存儲器控制模塊
(05),將更新后的密鑰提供給存儲器控制模塊(05)。存儲器通過第二輸入數(shù)據(jù)線(w07d)連接加密/解密單元,向加密/解密單元提供
需要解密數(shù)據(jù)/程序。進(jìn)一步,加密/解密單元從密鑰/保護(hù)碼寄存器組(04)取得保護(hù)碼,通過CPU控 制信號線(W02c)和CPU地址線(W02a)判斷是否是CPU輸出用戶操作程序是否是授權(quán)的用 戶操作程序,如果不是授權(quán)的用戶程序,則禁止存儲器訪問。
一種非易失性存儲器保護(hù)系統(tǒng)包括編程/校驗單元(01)、CPU、加密/解密單元、 控制單元(02)和存儲器存儲器控制模塊(05)通過控制單元(02)的控制輸入端口 一和第一輸入控制信號 線(W15c)連接編程/校驗單元(01),接收編程/校驗單元(01)發(fā)出的存儲器編程或者存 儲器校驗指令;存儲器控制模塊(05)通過控制單元(02)的地址輸入端口 一和第一輸入地址線 (W16a)連接編程/校驗單元(01),接收編程/校驗單元(01)發(fā)出的存儲器尋址地址;存儲器地址選擇模塊(06)通過控制單元(02)的地址輸入端口 一和第一輸入地址 線(W16a)連接編程/校驗單元(01),接收編程/校驗單元(01)發(fā)出的存儲器尋址地址;保護(hù)模塊(03)通過控制單元(02)的數(shù)據(jù)輸入端口 一和第一輸入數(shù)據(jù)線(wl3d) 連接編程/校驗單元(01),接收編程/校驗單元(01)輸出的編程數(shù)據(jù)/程序;保護(hù)模塊(03)通過控制單元(02)的數(shù)據(jù)輸出端口一和第一輸出數(shù)據(jù)線(w37d) 連接存儲器,根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)編程地址的保護(hù)碼,進(jìn)行下列操作中的一 種⑴當(dāng)保護(hù)碼允許訪問時,向存儲器輸出編程數(shù)據(jù)/程序;⑵當(dāng)保護(hù)碼禁止訪問時,向 存儲器輸出經(jīng)保護(hù)碼保護(hù)后變更的,且不改變存儲器內(nèi)容的數(shù)據(jù)/程序;(3)當(dāng)保護(hù)碼禁止 訪問時,不向存儲器輸出編程數(shù)據(jù)/程序;保護(hù)模塊(03)通過控制單元(02)的數(shù)據(jù)輸入端口 二和第二輸入數(shù)據(jù)線(w07d) 連接存儲器,根據(jù)存儲器地址選擇模塊(06)輸出的校驗地址,接收存儲器提供校驗數(shù)據(jù)/ 程序;密鑰/保護(hù)碼寄存器組(04)通過控制單元(02)的數(shù)據(jù)輸入端口二和第二輸入數(shù) 據(jù)線(w07d)連接存儲器,根據(jù)存儲器地址選擇模塊(06)輸出的保護(hù)碼、密鑰地址,接收存 儲器提供對應(yīng)的保護(hù)碼、密鑰,或者在進(jìn)行編程、校驗、解密、加密之前從存儲器獲得編程數(shù) 據(jù)/程序或者校驗數(shù)據(jù)/程序?qū)?yīng)的保護(hù)碼、地址加密密鑰、存儲器數(shù)據(jù)解密密鑰,保護(hù)碼 再通過保護(hù)碼數(shù)據(jù)線(w43d)傳遞給保護(hù)模塊(03)。保護(hù)模塊(03)通過控制單元(02)的數(shù)據(jù)輸出端口二和第二輸出數(shù)據(jù)線(w31d) 連接編程/校驗單元(01),根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)校驗地址的保護(hù)碼,進(jìn)行下 列操作中的一種(1)當(dāng)保護(hù)碼允許訪問時,向編程/校驗單元(01)輸出校驗數(shù)據(jù)/程序; (2)當(dāng)保護(hù)碼禁止訪問時,向編程/校驗單元(01)輸出經(jīng)保護(hù)碼保護(hù)后變更的數(shù)據(jù);(3)當(dāng) 保護(hù)碼禁止訪問時,不向編程/校驗單元(01)輸出校驗數(shù)據(jù)/程序; 存儲器控制模塊(05)通過控制單元(02)的控制輸入端口 二和第二輸入控制信號 線(W25c)連接加密/解密單元,接收加密/解密單元發(fā)出的存儲器地址加密或者存儲器數(shù) 據(jù)解密指令;存儲器控制模塊(05)通過控制單元(02)的地址輸入端口 二和第二輸入地址線 (W25a)連接加密/解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;存儲器地址選擇模塊(06)通過控制單元(02)的地址輸入端口三和第三輸入地址 線(W26a)連接加密/解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;密鑰/保護(hù)碼寄存器組(04)通過控制單元(02)的數(shù)據(jù)輸出端口三和第三輸出數(shù) 據(jù)線(w42d)連接加密/解密單元,向加密/解密單元提供數(shù)據(jù)/程序解密密鑰或地址加密 密鑰;
17
存儲器控制模塊(05)通過控制單元(02)的控制輸出端口一和第一輸出控制信號 線(w57c)連接存儲器,控制存儲器進(jìn)行編程、校驗、地址加密或存儲器數(shù)據(jù)/程序解密,進(jìn) 一步當(dāng)編程或者校驗的地址是存儲器保護(hù)區(qū)的地址時,存儲器控制模塊(05)還可以禁止 第一輸入控制信號線(W15c)作用;存儲器地址選擇模塊(06)通過控制單元(02)的地址輸出端口一和第一輸出地址 線(w67a)連接存儲器,地址輸出端口根據(jù)存儲器控制模塊(05)向其發(fā)出的控制信號和地 址信號,在編程/校驗狀態(tài)下向存儲器輸出保護(hù)碼地址或編程/校驗尋址地址,在存儲器地 址加密/數(shù)據(jù)解密狀態(tài)下向存儲器輸出加密地址或者解密數(shù)據(jù)/程序地址;存儲器控制模塊(05)通過選擇控制線(w56c)和選擇地址線(w56a)連接存儲器 地址選擇模塊(06),在編程/校驗狀態(tài)下控制地址選擇模塊選擇輸出保護(hù)碼地址、編程地 址或者校驗地址,,在存儲器地址加密或數(shù)據(jù)/程序解密狀態(tài)下控制地址選擇模塊選擇輸 出加密地址或者解密數(shù)據(jù)/程序地址。存儲器控制模塊(05)通過寄存器控制線(w54c)連接密鑰/保護(hù)碼寄存器組
(04),控制密鑰/保護(hù)碼寄存器組(04)更新保護(hù)碼命令;密鑰/保護(hù)碼寄存器組(04)通過寄存器數(shù)據(jù)線(w45d)連接存儲器控制模塊
(05),將更新后的保護(hù)碼提供給存儲器控制模塊(05)。存儲器通過第二輸入數(shù)據(jù)線(w07d)連接加密/解密單元,向加密/解密單元提供
需要解密數(shù)據(jù)/程序。進(jìn)一步,加密/解密單元從密鑰/保護(hù)碼寄存器組(04)取得保護(hù)碼,通過CPU控 制信號線(W02c)和地址線(W02a)判斷是否是CPU輸出用戶操作程序是否是授權(quán)的用戶操 作程序,如果不是授權(quán)的用戶程序,則禁止存儲器訪問。一種非易失性存儲器保護(hù)方法為存儲器數(shù)據(jù)/程序編程方法,其包括如下步驟(4)編程/校驗單元(01)通過第一輸入控制信號線(W15c)連接控制單元(02)的 存儲器控制模塊(05),向控制單元(02)發(fā)出編程指令;編程/校驗單元(01)通過第一輸 入地址線(W16a)連接控制單元(02)的存儲器地址選擇模塊(06)和存儲器控制模塊(05), 輸出編程數(shù)據(jù)/程序?qū)?yīng)的尋址地址;編程/校驗單元(01)的編程數(shù)據(jù)/程序輸出端通過 第一輸入數(shù)據(jù)線(wl3d)連接控制單元(02)的保護(hù)模塊(03),輸出編程數(shù)據(jù)/程序;(5)控制單元(02)的存儲器控制模塊(05)接收到編程指令后,存儲器控制模 塊(05)通過選擇地址線(w56a)向存儲器地址選擇模塊(06)輸出保護(hù)碼存儲地址,存儲 器控制模塊(05)通過選擇控制線(w56c)控制存儲器地址選擇模塊(06)向第一輸出地 址線(w67a)輸出尋址地址對應(yīng)的保護(hù)碼存儲地址,同時存儲器控制模塊(05)通過控制 線(w57c)控制存儲器通過第二輸入數(shù)據(jù)線(w07d)向密鑰/保護(hù)碼寄存器組(04)提供對 應(yīng)地址的保護(hù)碼,密鑰/保護(hù)碼寄存器組(04)在寄存器控制線(w54c)的控制下更新保護(hù) 碼,更新后的保護(hù)碼通過寄存器數(shù)據(jù)線(w45d)提供給存儲器控制模塊(05),并通過數(shù)據(jù)線 (w43d)提供保護(hù)模塊(03);(6)存儲器控制模塊(05)根據(jù)接收到的保護(hù)碼判斷編程/校驗單元(01)發(fā)出 的尋址地址是否為存儲器保護(hù)區(qū)的地址如果尋址地址不是保護(hù)區(qū)地址,存儲器控制模塊 (05)通過選擇控制線(w56c)通知存儲器地址選擇模塊(06)選擇第一輸入地址線(W16a) 發(fā)出的編程地址,存儲器地址選擇模塊(06)通過第一輸出地址線(w67a)將編程地址提供給存儲器,保護(hù)模塊(03)將編程數(shù)據(jù)/程序通過第一輸出數(shù)據(jù)線(w37d)提供給存儲器,存 儲器在控制線(w57c)的控制下,將編程數(shù)據(jù)/程序存儲在對應(yīng)的存儲器地址中;如果尋址 地址是存儲器保護(hù)區(qū)的地址,存儲器控制模塊(05)屏蔽編程/校驗單元(01)第一輸入控 制信號線(W15c)發(fā)出的編程控制信號,或者密鑰/保護(hù)碼寄存器組(04)輸出保護(hù)碼干擾 保護(hù)模塊(03)輸出的編程數(shù)據(jù)/程序,而不改變存儲器的內(nèi)容。進(jìn)一步,編程/校驗單元(01)提供的編程數(shù)據(jù)/程序為加密數(shù)據(jù)/程序。一種非易失性存儲器保護(hù)方法為存儲器數(shù)據(jù)校驗方法,其包括如下步驟(4)編程/校驗單元(01)通過第一輸入控制信號線(W15c)連接控制單元(02)的 存儲器控制模塊(05),向控制單元(02)發(fā)出校驗指令;編程/校驗單元(01)通過第一輸 入地址線(W16a)連接控制單元(02)的存儲器地址選擇模塊(06)和存儲器控制模塊(05), 輸出校驗數(shù)據(jù)/程序?qū)?yīng)的尋址地址;(5)控制單元(02)的存儲器控制模塊(05)接收到校驗指令后,存儲器控制模 塊(05)通過選擇地址線(w56a)向存儲器地址選擇模塊(06)輸出保護(hù)碼存儲地址,存儲 器控制模塊(05)通過選擇控制線(w56c)控制存儲器地址選擇模塊(06)向第一輸出地 址線(w67a)輸出尋址地址對應(yīng)的保護(hù)碼存儲地址,同時存儲器控制模塊(05)通過控制 線(w57c)控制存儲器通過第二輸入數(shù)據(jù)線(w07d)向密鑰/保護(hù)碼寄存器組(04)提供對 應(yīng)地址的保護(hù)碼,密鑰/保護(hù)碼寄存器組(04)在寄存器控制線(w54c)的控制下更新保護(hù) 碼,更新后的保護(hù)碼通過寄存器數(shù)據(jù)線(w45d)提供給存儲器控制模塊(05),并通過數(shù)據(jù)線 (w43d)提供給保護(hù)模塊(03);(6)存儲器控制模塊(05)根據(jù)接收到的保護(hù)碼判斷編程/校驗單元(01)發(fā)出 的尋址地址是否為存儲器保護(hù)區(qū)的地址如尋址地址不是保護(hù)區(qū)的地址,存儲器控制模塊 (05)通過選擇控制線(w56c)通知存儲器地址選擇模塊(06)選擇第一輸入地址線(W16a) 發(fā)出的校驗地址,存儲器地址選擇模塊(06)通過第一輸出地址線(w67a)將校驗地址提供 給存儲器,存儲器在控制線(w57c)的控制下將尋址地址對應(yīng)的校驗數(shù)據(jù)/程序通過數(shù)據(jù)線 (w07d)提供給保護(hù)模塊(03),保護(hù)模塊(03)通過第二輸出數(shù)據(jù)線(w31d)提供給編程/校 驗單元(01)進(jìn)行校驗;如果尋址地址是存儲器保護(hù)區(qū)的地址,存儲器控制模塊(05)屏蔽編 程/校驗單元(01)通過第一輸入控制信號線(W15c)發(fā)出的校驗控制信號,或者密鑰/保 護(hù)碼寄存器組(04)輸出保護(hù)碼干擾保護(hù)模塊(03)輸出的校驗數(shù)據(jù)/程序。存儲器數(shù)據(jù)校驗方法可以單獨進(jìn)行,也可以在存儲器編程數(shù)據(jù)/程序之后進(jìn)行。一種存儲器保護(hù)方法為存儲器地址加密方法,其包括如下步驟(4)加密/解密單元通過CPU控制信號線(w02c)連接CPU,接收CPU發(fā)出的指令; 加密/解密單元通過CPU地址線(W02a)連接CPU,接收CPU發(fā)出的存儲器待加密地址;(5)加密/解密單元從控制單元(02)的密鑰/保護(hù)碼寄存器組(04)中獲得對應(yīng) 地址的加密密鑰,利用地址加密密鑰對CPU發(fā)出的存儲器待加密地址進(jìn)行加密,加密/解密 單元將加密后的地址通過第二輸入地址信號線(W25a)輸出給存儲器控制模塊(05),通過 地址信號線(w26a)輸出給存儲器地址選擇模塊(06);加密/解密單元通過第二輸入控制 信號線(W25c)連接控制單元(02)的存儲控制模塊,向存儲器控制模塊(05)發(fā)出指令;(6)若存儲器控制模塊(05)接收到的加密后的地址為存儲器保護(hù)區(qū)的地址,則存 儲器控制模塊(05)中斷第二輸出地址信號線(w25a)發(fā)出的加密地址,若存儲器控制模塊(05)接收到的加密后地址為存儲器非保護(hù)區(qū)的地址,存儲器控制模塊(05)通過選擇控制 線(w56c)通知存儲器地址選擇模塊(06)選擇加密/解密單元通過第三輸入地址線(W26a) 提供的加密后地址,存儲器地址選擇模塊(06)將加密地址通過第一輸出地址線(w67a)提 供給存儲器;進(jìn)一步,步驟(1)還包括加密/解密單元從密鑰/保護(hù)碼寄存器組(04)取得保護(hù) 碼,通過CPU控制信號線(W02C)和CPU地址線(W02a)判斷是否是CPU輸出用戶操作程序 是否是授權(quán)的用戶操作程序,如果不是授權(quán)的用戶程序,則禁止存儲器訪問,如果是授權(quán)的 用戶操作程序,則繼續(xù)步驟(2)。一種非易失性存儲器保護(hù)方法為存儲器數(shù)據(jù)/程序解密方法,其包括如下步驟(5)加密/解密單元通過CPU控制信號線(w02c)連接CPU,接收CPU發(fā)出的讀取 存儲器數(shù)據(jù)指令;加密/解密單元通過CPU地址線(W02a)連接CPU,接收CPU發(fā)出的存儲 器中需解密數(shù)據(jù)/程序?qū)?yīng)的尋址地址;(6)加密/解密單元通過第二輸入控制信號線(W25c)連接控制單元(02)的存儲 器控制模塊(05),向控制單元(02)發(fā)出讀取存儲器數(shù)據(jù)/程序指令;加密/解密單元通過 第二輸入地址線(W25a)連接控制單元(02)的存儲器控制模塊(05),通過第三輸入地址線 (w26a)連接存儲器地址選擇模塊(06),輸出需解密數(shù)據(jù)/程序?qū)?yīng)的尋址地址;(7)存儲器控制模塊(05)通過選擇控制線(w56c)控制存儲器地址選擇模塊(06) 選擇加密/解密單元通過第三輸入地址線(W26a)輸出的尋址地址,存儲器地址選擇模塊
(06)通過第一輸出地址線(w67a)將尋址地址提供給存儲器,存儲器在第一輸出控制信號 線(w57c)的控制下,通過第二輸入數(shù)據(jù)線(w07d)向加密/解密單元提供尋址地址對應(yīng)的 存儲數(shù)據(jù);(8)加密/解密單元將第三輸出數(shù)據(jù)線(w42d)輸出的數(shù)據(jù)/程序解密密鑰和接收 到的存儲器數(shù)據(jù)按照預(yù)先設(shè)定的方式解密,解密后的數(shù)據(jù)/程序提供給CPU。進(jìn)一步,步驟(1)還包括加密/解密單元從密鑰/保護(hù)碼寄存器組(04)組取得保 護(hù)碼,通過CPU控制線(W02C)和CPU地址線(W02a)判斷是否是CPU輸出用戶操作程序是 否是授權(quán)的用戶操作程序,如果不是授權(quán)的用戶程序,則禁止存儲器訪問,如果是授權(quán)的 用戶操作程序,則繼續(xù)步驟(2)。如圖4所示,本發(fā)明如上所述的存儲器為非易失性存儲器,如一次性可編程存儲 器、Flash等,其分為^f呆護(hù)區(qū),用于存儲存儲器數(shù)據(jù)/程序解密密鑰、存儲器地址加密密鑰以及保護(hù)碼;——非保護(hù)區(qū),用于存儲不需要保護(hù)的數(shù)據(jù)。所述的保護(hù)區(qū)還可以進(jìn)一步保護(hù)用戶自定的需要保護(hù)的數(shù)據(jù)或程序。所述的存儲器數(shù)據(jù)/程序解密密鑰、存儲器地址加密密鑰以及保護(hù)碼編程在某個 預(yù)先確定地址的存儲器中;所述的存儲器不同的地址存儲的數(shù)據(jù)或程序?qū)?yīng)不同的保護(hù)碼和密鑰,也可以部 分不同地址存儲的數(shù)據(jù)或程序?qū)?yīng)的相同的保護(hù)碼和密鑰,當(dāng)然也可以存儲器的所有地址 存儲的數(shù)據(jù)或程序?qū)?yīng)相同的保護(hù)碼和密鑰。應(yīng)該理解到的是,上述實施例只是對本發(fā)明的說明,而不是對本發(fā)明的限制,任何 不超出本發(fā)明實質(zhì)精神范圍內(nèi)的發(fā)明創(chuàng)造,均落入本發(fā)明保護(hù)范圍之內(nèi)。
20
權(quán)利要求
非易失性存儲器保護(hù)系統(tǒng),其特征在于實現(xiàn)存儲器編程/校驗,其包括編程/校驗單元、控制單元和存儲器所述的控制單元包括存儲器控制模塊、密鑰/保護(hù)碼寄存器組、存儲器地址選擇模塊以及保護(hù)模塊,其中存儲器控制模塊通過控制單元的控制輸入端口一和第一輸入控制信號線(W15c)連接編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器編程或者存儲器校驗指令;存儲器控制模塊通過控制單元的地址輸入端口一和第一輸入地址線(W16a)連接編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器尋址地址;存儲器地址選擇模塊通過控制單元的地址輸入端口一和第一輸入地址線(W16a)連接編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器尋址地址;保護(hù)模塊通過控制單元的數(shù)據(jù)輸入端口一和第一輸入數(shù)據(jù)線(w13d)連接編程/校驗單元,接收編程/校驗單元輸出的編程數(shù)據(jù)/程序;保護(hù)模塊通過控制單元的數(shù)據(jù)輸出端口一和第一輸出數(shù)據(jù)線(w37d)連接存儲器,根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)編程地址的保護(hù)碼,進(jìn)行下列操作中的一種(1)當(dāng)保護(hù)碼允許訪問時,向存儲器輸出編程數(shù)據(jù)/程序;(2)當(dāng)保護(hù)碼禁止訪問時,向存儲器輸出經(jīng)保護(hù)碼保護(hù)后變更的,且不改變存儲器內(nèi)容的數(shù)據(jù)/程序;(3)當(dāng)保護(hù)碼禁止訪問時,不向存儲器輸出編程數(shù)據(jù)/程序;保護(hù)模塊通過控制單元的數(shù)據(jù)輸入端口二和第二輸入數(shù)據(jù)線(w07d)連接存儲器,根據(jù)存儲器地址選擇模塊輸出的校驗地址,接收存儲器提供校驗數(shù)據(jù)/程序;密鑰/保護(hù)碼寄存器組通過控制單元的數(shù)據(jù)輸入端口二和第二輸入數(shù)據(jù)線(w07d)連接存儲器,根據(jù)存儲器地址選擇模塊輸出的保護(hù)碼地址,接收存儲器提供的對應(yīng)地址的保護(hù)碼,或者在進(jìn)行編程/校驗之前從存儲器獲得對應(yīng)地址的保護(hù)碼,保護(hù)碼再通過保護(hù)碼數(shù)據(jù)線(w43d)傳遞給保護(hù)模塊。保護(hù)模塊通過控制單元的數(shù)據(jù)輸出端口二和第二輸出數(shù)據(jù)線(w31d)連接編程/校驗單元,根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)校驗地址的保護(hù)碼,進(jìn)行下列操作中的一種(1)當(dāng)保護(hù)碼允許訪問時,向編程/校驗單元輸出校驗數(shù)據(jù)/程序;(2)當(dāng)保護(hù)碼禁止訪問時,向編程/校驗單元輸出經(jīng)保護(hù)碼保護(hù)后變更的數(shù)據(jù);(3)當(dāng)保護(hù)碼禁止訪問時,不向編程/校驗單元輸出校驗數(shù)據(jù)/程序;存儲器控制模塊通過控制單元的控制輸出端口一和第一輸出控制信號線(w57c)連接存儲器,控制存儲器進(jìn)行編程或校驗;存儲器地址選擇模塊通過控制單元的地址輸出端口一和第一輸出地址線(w67a)連接存儲器,地址輸出端口向存儲器選擇輸出保護(hù)碼地址或編程地址/校驗尋址地址;存儲器控制模塊通過選擇控制線(w56c)和選擇地址線(w56a)連接存儲器地址選擇模塊,控制地址選擇模塊選擇輸出保護(hù)碼地址、編程地址或者校驗地址。存儲器控制模塊通過寄存器控制線(w54c)連接密鑰/保護(hù)碼寄存器組,控制密鑰/保護(hù)碼寄存器組更新保護(hù)碼命令;密鑰/保護(hù)碼寄存器組通過寄存器數(shù)據(jù)線(w45d)連接存儲器控制模塊,將更新后的保護(hù)碼提供給存儲器控制模塊。
2.如權(quán)利要求1所述的非易失性存儲器保護(hù)系統(tǒng),其特征在于當(dāng)編程或者校驗的地址是存儲器保護(hù)區(qū)的地址時,存儲器控制模塊禁止第一輸入控制信號線(W15c)作用。
3.如權(quán)利要求1所述的非易失性存儲器保護(hù)系統(tǒng),其特征在于所述的編程/校驗單元 提供的編程數(shù)據(jù)/程序為加密數(shù)據(jù)/程序。
4.非易失性存儲器保護(hù)系統(tǒng),其特征在于勇于存儲器加密/解密,其包括CPU、加密/ 解密單元、控制單元和存儲器所述的加密/解密單元通過CPU控制信號線(w02c)連接CPU,接收CPU發(fā)出的指令; 加密/解密單元通過CPU地址線(W02a)連接CPU,接收CPU發(fā)出的存儲器待加密地址或存 儲器待解密數(shù)據(jù)/程序的地址;加密/解密單元通過CPU數(shù)據(jù)線(w02d)將解密后的存儲器 數(shù)據(jù)/程序提供給CPU ;所述的控制單元包括存儲器控制模塊、密鑰/保護(hù)碼寄存器組以及存儲器地址選擇模 塊,其中存儲器控制模塊通過控制單元的控制輸入端口二和第二輸入控制信號線(W25c)連接 加密/解密單元,接收加密/解密單元發(fā)出的存儲器地址加密或者存儲器數(shù)據(jù)解密指令;存儲器控制模塊通過控制單元的地址輸入端口二和第二輸入地址線(W25a)連接加密 /解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;存儲器地址選擇模塊通過控制單元的地址輸入端口三和第三輸入地址線(W26a)連接 加密/解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;密鑰/保護(hù)碼寄存器組通過控制單元的數(shù)據(jù)輸入端口二和第二輸入數(shù)據(jù)線(w07d)連 接存儲器,根據(jù)存儲器地址選擇模塊輸出的密鑰地址,接收存儲器提供的存儲器地址加密 密鑰或者存儲器數(shù)據(jù)/程序解密密鑰。密鑰/保護(hù)碼寄存器組通過控制單元的數(shù)據(jù)輸出端口三和第三輸出數(shù)據(jù)線(w42d)連 接加密/解密單元,向加密/解密單元提供數(shù)據(jù)/程序解密密鑰或地址加密密鑰;存儲器控制模塊通過控制單元的控制輸出端口一和第一輸出控制信號線(w57c)連接 存儲器,控制存儲器進(jìn)行存儲器地址加密或存儲器數(shù)據(jù)/程序解密;存儲器地址選擇模塊通過控制單元的地址輸出端口一和第一輸出地址線(w67a)連接 存儲器,地址輸出端口根據(jù)存儲器控制模塊向其發(fā)出的控制信號和地址信號,向存儲器輸 出加密地址或者解密數(shù)據(jù)/程序地址;存儲器控制模塊通過選擇控制線(w56c)和選擇地址線(w56a)連接存儲器地址選擇模 塊,控制地址選擇模塊選擇輸出加密地址或者解密數(shù)據(jù)/程序地址。存儲器控制模塊通過寄存器控制線(w54c)連接密鑰/保護(hù)碼寄存器組,控制密鑰/保 護(hù)碼寄存器組更新密鑰命令;密鑰/保護(hù)碼寄存器組通過寄存器數(shù)據(jù)線(w45d)連接存儲器控制模塊,將更新后的密 鑰提供給存儲器控制模塊。存儲器通過第二輸入數(shù)據(jù)線(w07d)連接加密/解密單元,向加密/解密單元提供需要 解密數(shù)據(jù)/程序。
5.如權(quán)利要求4所述的非易失性存儲器保護(hù)系統(tǒng),其特征在于加密/解密單元從密鑰 /保護(hù)碼寄存器組取得保護(hù)碼,通過CPU控制信號線(W02C)和CPU地址線(W02a)判斷是否是CPU輸出用戶操作程序是否是授權(quán)的用戶操作程序,如果不是授權(quán)的用戶程序,則 禁止存儲器訪問。
6.非易失性存儲器保護(hù)系統(tǒng),其特征在于包括編程/校驗單元、CPU、加密/解密單 元、控制單元和存儲器存儲器控制模塊通過控制單元的控制輸入端口一和第一輸入控制信號線(W15c)連接 編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器編程或者存儲器校驗指令;存儲器控制模塊通過控制單元的地址輸入端口 一和第一輸入地址線(W16a)連接編程 /校驗單元,接收編程/校驗單元發(fā)出的存儲器尋址地址;存儲器地址選擇模塊通過控制單元的地址輸入端口 一和第一輸入地址線(W16a)連接 編程/校驗單元,接收編程/校驗單元發(fā)出的存儲器尋址地址;保護(hù)模塊通過控制單元的數(shù)據(jù)輸入端口一和第一輸入數(shù)據(jù)線(wl3d)連接編程/校驗 單元,接收編程/校驗單元輸出的編程數(shù)據(jù)/程序;保護(hù)模塊通過控制單元的數(shù)據(jù)輸出端口一和第一輸出數(shù)據(jù)線(w37d)連接存儲器,根 據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)編程地址的保護(hù)碼,進(jìn)行下列操作中的一種(1)當(dāng)保護(hù)碼 允許訪問時,向存儲器輸出編程數(shù)據(jù)/程序;(2)當(dāng)保護(hù)碼禁止訪問時,向存儲器輸出經(jīng)保 護(hù)碼保護(hù)后變更的,且不改變存儲器內(nèi)容的數(shù)據(jù)/程序;(3)當(dāng)保護(hù)碼禁止訪問時,不向存 儲器輸出編程數(shù)據(jù)/程序;保護(hù)模塊通過控制單元的數(shù)據(jù)輸入端口二和第二輸入數(shù)據(jù)線(w07d)連接存儲器,根 據(jù)存儲器地址選擇模塊輸出的校驗地址,接收存儲器提供校驗數(shù)據(jù)/程序;密鑰/保護(hù)碼寄存器組通過控制單元的數(shù)據(jù)輸入端口 二和第二輸入數(shù)據(jù)線(w07d)連 接存儲器,根據(jù)存儲器地址選擇模塊輸出的保護(hù)碼、密鑰地址,接收存儲器提供對應(yīng)的保護(hù) 碼、密鑰,或者在進(jìn)行編程、校驗、解密、加密之前從存儲器獲得編程數(shù)據(jù)/程序或者校驗數(shù) 據(jù)/程序?qū)?yīng)的保護(hù)碼、地址加密密鑰、存儲器數(shù)據(jù)解密密鑰,保護(hù)碼再通過保護(hù)碼數(shù)據(jù)線 (w43d)傳遞給保護(hù)模塊;保護(hù)模塊通過控制單元的數(shù)據(jù)輸出端口二和第二輸出數(shù)據(jù)線(w31d)連接編程/校驗 單元,根據(jù)密鑰/保護(hù)寄存器提供的對應(yīng)校驗地址的保護(hù)碼,進(jìn)行下列操作中的一種(1) 當(dāng)保護(hù)碼允許訪問時,向編程/校驗單元輸出校驗數(shù)據(jù)/程序;(2)當(dāng)保護(hù)碼禁止訪問時, 向編程/校驗單元輸出經(jīng)保護(hù)碼保護(hù)后變更的數(shù)據(jù);(3)當(dāng)保護(hù)碼禁止訪問時,不向編程/ 校驗單元輸出校驗數(shù)據(jù)/程序;存儲器控制模塊通過控制單元的控制輸入端口二和第二輸入控制信號線(W25c)連接 加密/解密單元,接收加密/解密單元發(fā)出的存儲器地址加密或者存儲器數(shù)據(jù)解密指令;存儲器控制模塊通過控制單元的地址輸入端口 二和第二輸入地址線(W25a)連接加密 /解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;存儲器地址選擇模塊通過控制單元的地址輸入端口三和第三輸入地址線(W26a)連接 加密/解密單元,接收加密/解密單元發(fā)出的存儲器尋址地址;密鑰/保護(hù)碼寄存器組通過控制單元的數(shù)據(jù)輸出端口三和第三輸出數(shù)據(jù)線(w42d)連 接加密/解密單元,向加密/解密單元提供數(shù)據(jù)/程序解密密鑰或地址加密密鑰;存儲器控制模塊通過控制單元的控制輸出端口一和第一輸出控制信號線(w57c)連接 存儲器,控制存儲器進(jìn)行編程、校驗、地址加密或存儲器數(shù)據(jù)/程序解密,進(jìn)一步當(dāng)編程或 者校驗的地址是存儲器保護(hù)區(qū)的地址時,存儲器控制模塊還可以禁止第一輸入控制信號線 (W15c)作用;存儲器地址選擇模塊通過控制單元的地址輸出端口一和第一輸出地址線(w67a)連接 存儲器,地址輸出端口根據(jù)存儲器控制模塊向其發(fā)出的控制信號和地址信號,在編程/校 驗狀態(tài)下向存儲器輸出保護(hù)碼地址或編程/校驗尋址地址,在存儲器地址加密/數(shù)據(jù)解密 狀態(tài)下向存儲器輸出加密地址或者解密數(shù)據(jù)/程序地址;存儲器控制模塊通過選擇控制線(w56c)和選擇地址線(w56a)連接存儲器地址選擇 模塊,在編程/校驗狀態(tài)下控制地址選擇模塊選擇輸出保護(hù)碼地址、編程地址或者校驗地 址,,在存儲器地址加密或數(shù)據(jù)/程序解密狀態(tài)下控制地址選擇模塊選擇輸出加密地址或 者解密數(shù)據(jù)/程序地址。存儲器控制模塊通過寄存器控制線(w54c)連接密鑰/保護(hù)碼寄存器組,控制密鑰/保 護(hù)碼寄存器組更新保護(hù)碼命令;密鑰/保護(hù)碼寄存器組通過寄存器數(shù)據(jù)線(w45d)連接存儲器控制模塊,將更新后的保 護(hù)碼提供給存儲器控制模塊;存儲器通過第二輸入數(shù)據(jù)線(w07d)連接加密/解密單元,向加密/解密單元提供需要 解密數(shù)據(jù)/程序。
7.如權(quán)利要求6所述的非易失性存儲器保護(hù)系統(tǒng),其特征在于當(dāng)編程或者校驗的地址 是存儲器保護(hù)區(qū)的地址時,存儲器控制模塊禁止第一輸入控制信號線(W15c)作用。
8.如權(quán)利要求6所述的非易失性存儲器保護(hù)系統(tǒng),其特征在于所述的編程/校驗單元 提供的編程數(shù)據(jù)/程序為加密數(shù)據(jù)/程序。
9.如權(quán)利要求6所述的非易失性存儲器保護(hù)系統(tǒng),其特征在于所述的加密/解密單元 從密鑰/保護(hù)碼寄存器組取得保護(hù)碼,通過CPU控制信號線(W02C)和地址線(W02a)判斷 是否是CPU輸出用戶操作程序是否是授權(quán)的用戶操作程序,如果不是授權(quán)的用戶程序,則 禁止存儲器訪問。
10.非易失性存儲器保護(hù)方法,其特征在于進(jìn)行存儲器數(shù)據(jù)/程序編程,其包括如下步驟(1)編程/校驗單元通過第一輸入控制信號線(W15C)連接控制單元的存儲器控制模 塊,向控制單元發(fā)出編程指令;編程/校驗單元通過第一輸入地址線(W16a)連接控制單元 的存儲器地址選擇模塊和存儲器控制模塊,輸出編程數(shù)據(jù)/程序?qū)?yīng)的尋址地址;編程/校 驗單元的編程數(shù)據(jù)/程序輸出端通過第一輸入數(shù)據(jù)線(wl3d)連接控制單元的保護(hù)模塊,輸 出編程數(shù)據(jù)/程序;(2)控制單元的存儲器控制模塊接收到編程指令后,存儲器控制模塊通過選擇地址 線(w56a)向存儲器地址選擇模塊輸出保護(hù)碼存儲地址,存儲器控制模塊通過選擇控制線 (w56c)控制存儲器地址選擇模塊向第一輸出地址線(w67a)輸出尋址地址對應(yīng)的保護(hù)碼存 儲地址,同時存儲器控制模塊通過控制線(w57c)控制存儲器通過第二輸入數(shù)據(jù)線(w07d) 向密鑰/保護(hù)碼寄存器組提供對應(yīng)地址的保護(hù)碼,密鑰/保護(hù)碼寄存器組在寄存器控制線 (w54c)的控制下更新保護(hù)碼,更新后的保護(hù)碼通過寄存器數(shù)據(jù)線(w45d)提供給存儲器控 制模塊,并通過數(shù)據(jù)線(w43d)提供保護(hù)模塊;(3)存儲器控制模塊根據(jù)接收到的保護(hù)碼判斷編程/校驗單元發(fā)出的尋址地址是否 為存儲器保護(hù)區(qū)的地址如果尋址地址不是保護(hù)區(qū)地址,存儲器控制模塊通過選擇控制線 (w56c)通知存儲器地址選擇模塊選擇第一輸入地址線(W16a)發(fā)出的編程地址,存儲器地址選擇模塊通過第一輸出地址線(w67a)將編程地址提供給存儲器,保護(hù)模塊將編程數(shù)據(jù)/ 程序通過第一輸出數(shù)據(jù)線(w37d)提供給存儲器,存儲器在控制線(w57c)的控制下,將編 程數(shù)據(jù)/程序存儲在對應(yīng)的存儲器地址中;如果尋址地址是存儲器保護(hù)區(qū)的地址,存儲器 控制模塊屏蔽編程/校驗單元第一輸入控制信號線(W15c)發(fā)出的編程控制信號,或者密鑰 /保護(hù)碼寄存器組輸出保護(hù)碼干擾保護(hù)模塊輸出的編程數(shù)據(jù)/程序,而不改變存儲器的內(nèi) 容。
11.如權(quán)利要求10所述的非易失性存儲器保護(hù)方,其特征在于編程/校驗單元提供的 編程數(shù)據(jù)/程序為加密數(shù)據(jù)/程序。
12.非易失性存儲器保護(hù)方法,其特征在于進(jìn)行存儲器數(shù)據(jù)校驗方法,其包括如下步驟(1)編程/校驗單元通過第一輸入控制信號線(W15C)連接控制單元的存儲器控制模 塊,向控制單元發(fā)出校驗指令;編程/校驗單元通過第一輸入地址線(W16a)連接控制單元 的存儲器地址選擇模塊和存儲器控制模塊,輸出校驗數(shù)據(jù)/程序?qū)?yīng)的尋址地址;(2)控制單元的存儲器控制模塊接收到校驗指令后,存儲器控制模塊通過選擇地址 線(w56a)向存儲器地址選擇模塊輸出保護(hù)碼存儲地址,存儲器控制模塊通過選擇控制線 (w56c)控制存儲器地址選擇模塊向第一輸出地址線(w67a)輸出尋址地址對應(yīng)的保護(hù)碼存 儲地址,同時存儲器控制模塊通過控制線(w57c)控制存儲器通過第二輸入數(shù)據(jù)線(w07d) 向密鑰/保護(hù)碼寄存器組提供對應(yīng)地址的保護(hù)碼,密鑰/保護(hù)碼寄存器組在寄存器控制線 (w54c)的控制下更新保護(hù)碼,更新后的保護(hù)碼通過寄存器數(shù)據(jù)線(w45d)提供給存儲器控 制模塊,并通過數(shù)據(jù)線(w43d)提供給保護(hù)模塊;(3)存儲器控制模塊根據(jù)接收到的保護(hù)碼判斷編程/校驗單元發(fā)出的尋址地址是否 為存儲器保護(hù)區(qū)的地址如尋址地址不是保護(hù)區(qū)的地址,存儲器控制模塊通過選擇控制 線(w56c)通知存儲器地址選擇模塊選擇第一輸入地址線(W16a)發(fā)出的校驗地址,存儲 器地址選擇模塊通過第一輸出地址線(w67a)將校驗地址提供給存儲器,存儲器在控制線 (w57c)的控制下將尋址地址對應(yīng)的校驗數(shù)據(jù)/程序通過數(shù)據(jù)線(w07d)提供給保護(hù)模塊,保 護(hù)模塊通過第二輸出數(shù)據(jù)線(w31d)提供給編程/校驗單元進(jìn)行校驗;如果尋址地址是存儲 器保護(hù)區(qū)的地址,存儲器控制模塊屏蔽編程/校驗單元通過第一輸入控制信號線(W15c)發(fā) 出的校驗控制信號,或者密鑰/保護(hù)碼寄存器組輸出保護(hù)碼干擾保護(hù)模塊輸出的校驗數(shù)據(jù) /程序。
13.如權(quán)利要求12所述的非易失性存儲器保護(hù)方法,其特征在步驟(2)所述的密鑰/ 保護(hù)碼寄存器組的更新方法作如下三種中的任意一種替換(1)系統(tǒng)復(fù)位或者讀序列重新開始時,讀出存儲器保護(hù)區(qū)的保護(hù)碼,將保護(hù)區(qū)的各個保 護(hù)碼或密鑰調(diào)入到控制單元對應(yīng)的密鑰/保護(hù)碼寄存器組;(2)進(jìn)行存儲器數(shù)據(jù)/程序校驗前讀出存儲器保護(hù)區(qū)的保護(hù)碼或密鑰,將保護(hù)區(qū)的各 個保護(hù)碼調(diào)入到控制單元對應(yīng)的密鑰/保護(hù)碼寄存器組;(3)利用空閑時間,讀出存儲器保護(hù)區(qū)的保護(hù)碼,將保護(hù)區(qū)的各個保護(hù)碼調(diào)入到控制單 元對應(yīng)的密鑰/保護(hù)碼寄存器組。
14.如權(quán)利要求12所述的非易失性存儲器保護(hù)方法,其特征在于該方法是權(quán)利要求10 的存儲器編程數(shù)據(jù)/程序之后進(jìn)行。
15.非易失性存儲器保護(hù)方法,其特征在于進(jìn)行存儲器地址加密,其包括如下步驟(1)加密/解密單元通過CPU控制信號線(w02c)連接CPU,接收CPU發(fā)出的指令;加密 /解密單元通過CPU地址線(W02a)連接CPU,接收CPU發(fā)出的存儲器待加密地址;(2)加密/解密單元從控制單元的密鑰/保護(hù)碼寄存器組中獲得對應(yīng)地址的加密密鑰, 利用地址加密密鑰對CPU發(fā)出的存儲器待加密地址進(jìn)行加密,加密/解密單元將加密后的 地址通過第二輸入地址信號線(w25a)輸出給存儲器控制模塊,通過地址信號線(w26a)輸 出給存儲器地址選擇模塊;加密/解密單元通過第二輸入控制信號線(W25c)連接控制單元 的存儲控制模塊,向存儲器控制模塊發(fā)出指令;(3)若存儲器控制模塊接收到的加密后的地址為存儲器保護(hù)區(qū)的地址,則存儲器控制 模塊中斷第二輸出地址信號線(w25a)發(fā)出的加密地址,若存儲器控制模塊接收到的加密 后地址為存儲器非保護(hù)區(qū)的地址,存儲器控制模塊通過選擇控制線(w56c)通知存儲器地 址選擇模塊選擇加密/解密單元通過第三輸入地址線(W26a)提供的加密后地址,存儲器地 址選擇模塊將加密地址通過第一輸出地址線(w67a)提供給存儲器。
16.如權(quán)利要求15所述的非易失性存儲器保護(hù)方法,其特征在于步驟(1)還包括加密 /解密單元從密鑰/保護(hù)碼寄存器組取得保護(hù)碼,通過CPU控制信號線(W02C)和CPU地址 線(W02a)判斷是否是CPU輸出用戶操作程序是否是授權(quán)的用戶操作程序,如果不是授權(quán)的 用戶程序,則禁止存儲器訪問,如果是授權(quán)的用戶操作程序,則繼續(xù)步驟(2)。
17.一種非易失性存儲器保護(hù)方法,其特征在于進(jìn)行存儲器數(shù)據(jù)/程序解密方法,其包 括如下步驟(1)加密/解密單元通過CPU控制信號線(w02c)連接CPU,接收CPU發(fā)出的讀取存儲 器數(shù)據(jù)指令;加密/解密單元通過CPU地址線(W02a)連接CPU,接收CPU發(fā)出的存儲器中 需解密數(shù)據(jù)/程序?qū)?yīng)的尋址地址;(2)加密/解密單元通過第二輸入控制信號線(W25c)連接控制單元的存儲器控制 模塊,向控制單元發(fā)出讀取存儲器數(shù)據(jù)/程序指令;加密/解密單元通過第二輸入地址線 (W25a)連接控制單元的存儲器控制模塊,通過第三輸入地址線(w26a)連接存儲器地址選 擇模塊,輸出需解密數(shù)據(jù)/程序?qū)?yīng)的尋址地址;(3)存儲器控制模塊通過選擇控制線(w56c)控制存儲器地址選擇模塊選擇加密/解密 單元通過第三輸入地址線(W26a)輸出的尋址地址,存儲器地址選擇模塊通過第一輸出地 址線(w67a)將尋址地址提供給存儲器,存儲器在第一輸出控制信號線(w57c)的控制下,通 過第二輸入數(shù)據(jù)線(w07d)向加密/解密單元提供尋址地址對應(yīng)的存儲數(shù)據(jù);(4)加密/解密單元將第三輸出數(shù)據(jù)線(w42d)輸出的數(shù)據(jù)/程序解密密鑰和接收到的 存儲器數(shù)據(jù)按照預(yù)先設(shè)定的方式解密,解密后的數(shù)據(jù)/程序提供給CPU。
18.如權(quán)利要求17所述的非易失性存儲器保護(hù)方法,步驟(1)還包括加密/解密單元 從密鑰/保護(hù)碼寄存器組組取得保護(hù)碼,通過CPU控制線(W02c)和CPU地址線(W02a)判 斷是否是CPU輸出用戶操作程序是否是授權(quán)的用戶操作程序,如果不是授權(quán)的用戶程序, 則禁止存儲器訪問,如果是授權(quán)的用戶操作程序,則繼續(xù)步驟(2)。
全文摘要
本發(fā)明提供的非易失性存儲器保護(hù)系統(tǒng)和保護(hù)方法,通過控制單元從存儲器中調(diào)出保護(hù)碼,限制未授權(quán)用戶對保護(hù)區(qū)數(shù)據(jù)/程序編程或校驗,同時輸入存儲器的數(shù)據(jù)為加密數(shù)據(jù),實現(xiàn)不同存儲器具有不同的密鑰,加密方法也不局限于一種,對于不同的地址也可以提供不同的密鑰保護(hù),如果需要對密鑰進(jìn)行修改,不需要更換硬件,只需要通過編程進(jìn)行;本發(fā)明通過地址加密密鑰對存儲器地址加密,使未授權(quán)用戶訪問存儲器地址存儲器的數(shù)據(jù)為擾亂數(shù)據(jù);通過數(shù)據(jù)/程序解密密鑰對存儲器數(shù)據(jù)/程序解密,防止未授權(quán)用戶非法獲得數(shù)據(jù)及后解析。
文檔編號G11C7/24GK101901629SQ200910098918
公開日2010年12月1日 申請日期2009年5月25日 優(yōu)先權(quán)日2009年5月25日
發(fā)明者徐國柱 申請人:杭州士蘭微電子股份有限公司