專利名稱:保護(hù)存儲(chǔ)器的方法、裝置和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于保護(hù)存儲(chǔ)器免受未授權(quán)訪問的技術(shù)。
背景技術(shù):
計(jì)算機(jī)通過使用多程序系統(tǒng)利用了諸如存儲(chǔ)器和中央處理器單元(CPU)之類的各種資源,多程序系統(tǒng)通過在多個(gè)進(jìn)程之間進(jìn)行切換來執(zhí)行多個(gè)進(jìn)程,例如程序、任務(wù)和工作。
這種計(jì)算機(jī)包含的風(fēng)險(xiǎn)是,特定進(jìn)程所使用的存儲(chǔ)器中的數(shù)據(jù)能夠被另一進(jìn)程訪問或者覆蓋并被損害。
為了保護(hù)數(shù)據(jù)免受這種風(fēng)險(xiǎn),z/Architechture Principles ofOperation(IBM;SA22-7832-00;2000年12月;頁3-9到3-12)公開了一種典型技術(shù),該技術(shù)通過預(yù)先存儲(chǔ)關(guān)于每個(gè)預(yù)定大小(例如4千字節(jié))的存儲(chǔ)器區(qū)域的存儲(chǔ)密鑰,并檢驗(yàn)進(jìn)程的存儲(chǔ)密鑰與該進(jìn)程要訪問的存儲(chǔ)器的密鑰是否符合,從而確定可訪問性。
然而,使用存儲(chǔ)密鑰的存儲(chǔ)器保護(hù)方法除了需要其中存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器之外,還需要其中存儲(chǔ)密鑰的存儲(chǔ)器。因此增加了硬件的數(shù)量。
而且,由于數(shù)據(jù)是按照4千字節(jié)的頁為單位進(jìn)行保護(hù)的,因此小數(shù)據(jù)的保護(hù)浪費(fèi)了一些未被使用的存儲(chǔ)器區(qū)域。盡管通過用更小的單元來分配存儲(chǔ)密鑰能夠解決該問題,但是該解決方案將需要更多的存儲(chǔ)器來存儲(chǔ)該存儲(chǔ)密鑰。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,一種用于保護(hù)存儲(chǔ)器的裝置包括奇偶校驗(yàn)(parity)生成器,其生成要寫入到所述存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn);奇偶校驗(yàn)加法器,其通過將所述奇偶校驗(yàn)加入到所述第一數(shù)據(jù)來獲得第二數(shù)據(jù);訪問密鑰寄存器,其保存對(duì)于請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器或者將數(shù)據(jù)從所述存儲(chǔ)器中讀出的請(qǐng)求源而言唯一的訪問密鑰,由所述請(qǐng)求源設(shè)定所述訪問密鑰并用于訪問所述存儲(chǔ)器;第一操作單元,其通過計(jì)算所述第二數(shù)據(jù)和所述訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;寫入單元,其將所述第三數(shù)據(jù)寫入所述存儲(chǔ)器;第二操作單元,其通過計(jì)算所述訪問密鑰和所述第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)從所述存儲(chǔ)器中讀出的所述請(qǐng)求源在所述訪問密鑰寄存器設(shè)定所述訪問密鑰;校正子(syndrome)計(jì)算器,其從所述第三數(shù)據(jù)計(jì)算校正子;以及確定單元,其根據(jù)所計(jì)算的校正子確定是否將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
根據(jù)本發(fā)明的另一個(gè)方面,一種用于保護(hù)存儲(chǔ)器的系統(tǒng)包括處理器;存儲(chǔ)器控制器;以及保護(hù)外部存儲(chǔ)器的存儲(chǔ)器保護(hù)裝置。所述存儲(chǔ)器保護(hù)裝置包括奇偶校驗(yàn)生成器,其生成要寫入到所述存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn);奇偶校驗(yàn)加法器,其通過將所述奇偶校驗(yàn)加入到所述第一數(shù)據(jù)來獲得第二數(shù)據(jù);訪問密鑰寄存器,其保存對(duì)于請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的請(qǐng)求源而言唯一的訪問密鑰,由所述請(qǐng)求源設(shè)定所述訪問密鑰,并且所述訪問密鑰用于訪問所述存儲(chǔ)器;第一操作單元,其通過計(jì)算所述第二數(shù)據(jù)和所述訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;寫入單元,其將所述第三數(shù)據(jù)寫入所述存儲(chǔ)器;第二操作單元,其通過計(jì)算所述訪問密鑰和所述第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)從所述存儲(chǔ)器中讀出的所述請(qǐng)求源在所述訪問密鑰寄存器設(shè)定所述訪問密鑰;校正子計(jì)算器,其從所述第三數(shù)據(jù)計(jì)算校正子;以及確定單元,根據(jù)所計(jì)算的校正子確定是否將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
根據(jù)本發(fā)明的另一個(gè)方面,一種用于保護(hù)存儲(chǔ)器的系統(tǒng)包括存儲(chǔ)器控制器;以及保護(hù)外部存儲(chǔ)器的存儲(chǔ)器保護(hù)裝置。所述存儲(chǔ)器保護(hù)裝置包括奇偶校驗(yàn)生成器,其生成要寫入到所述存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn);奇偶校驗(yàn)加法器,其通過將所述奇偶校驗(yàn)加入到所述第一數(shù)據(jù)來獲得第二數(shù)據(jù);訪問密鑰寄存器,其保存對(duì)于請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器或者將數(shù)據(jù)從所述存儲(chǔ)器中讀出的請(qǐng)求源而言唯一的訪問密鑰,由所述請(qǐng)求源設(shè)定所述訪問密鑰,并且所述訪問密鑰用于訪問所述存儲(chǔ)器;第一操作單元,其通過計(jì)算所述第二數(shù)據(jù)和所述訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;寫入單元,將所述第三數(shù)據(jù)寫入所述存儲(chǔ)器;第二操作單元,其通過計(jì)算所述訪問密鑰和所述第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)從所述存儲(chǔ)器中讀出的所述請(qǐng)求源在所述訪問密鑰寄存器設(shè)定所述訪問密鑰;校正子計(jì)算器,其從所述第三數(shù)據(jù)計(jì)算校正子;以及確定單元,其根據(jù)所計(jì)算的校正子確定是否將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
根據(jù)本發(fā)明的另一個(gè)方面,一種用于保護(hù)存儲(chǔ)器的系統(tǒng)包括存儲(chǔ)器;以及保護(hù)所述存儲(chǔ)器的存儲(chǔ)器保護(hù)裝置。所述存儲(chǔ)器保護(hù)裝置包括奇偶校驗(yàn)生成器,其生成要寫入到所述存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn);奇偶校驗(yàn)加法器,其通過將所述奇偶校驗(yàn)加入到所述第一數(shù)據(jù)來獲得第二數(shù)據(jù);訪問密鑰寄存器,其保存對(duì)于請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器或者將數(shù)據(jù)從所述存儲(chǔ)器中讀出的請(qǐng)求源而言唯一的訪問密鑰,由所述請(qǐng)求源設(shè)定所述訪問密鑰,并且所述訪問密鑰用于訪問所述存儲(chǔ)器;第一操作單元,其通過計(jì)算所述第二數(shù)據(jù)和所述訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;寫入單元,其將所述第三數(shù)據(jù)寫入所述存儲(chǔ)器;第二操作單元,其通過計(jì)算所述訪問密鑰和所述第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)從所述存儲(chǔ)器中讀出的所述請(qǐng)求源在所述訪問密鑰寄存器設(shè)定所述訪問密鑰;校正子計(jì)算器,其從所述第三數(shù)據(jù)計(jì)算校正子;以及確定單元,其根據(jù)所計(jì)算的校正子確定是否將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
根據(jù)本發(fā)明的另一個(gè)方面,一種保護(hù)存儲(chǔ)器的方法包括生成要寫入到所述存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn);通過將所述奇偶校驗(yàn)加入到所述第一數(shù)據(jù)來獲得第二數(shù)據(jù);設(shè)定對(duì)于請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器或者將數(shù)據(jù)從所述存儲(chǔ)器中讀出的請(qǐng)求源而言唯一的訪問密鑰,由所述請(qǐng)求源設(shè)定所述訪問密鑰,并且所述訪問密鑰用于訪問所述存儲(chǔ)器;通過計(jì)算所述第二數(shù)據(jù)和所述訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;將所述第三數(shù)據(jù)寫入所述存儲(chǔ)器;通過計(jì)算所述訪問密鑰和所述第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)從所述存儲(chǔ)器中讀出的所述請(qǐng)求源在所述訪問密鑰寄存器設(shè)定所述訪問密鑰;從所述第三數(shù)據(jù)計(jì)算校正子;以及根據(jù)所計(jì)算的校正子確定是否將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
圖1是根據(jù)本發(fā)明的第一實(shí)施例的存儲(chǔ)器保護(hù)裝置的方框圖;圖2是用于解釋將數(shù)據(jù)寫入到存儲(chǔ)器中的過程的示意圖;圖3是用于解釋將數(shù)據(jù)從存儲(chǔ)器中讀出的過程的示意圖;圖4是將數(shù)據(jù)寫入到存儲(chǔ)器中的過程的流程圖;圖5是解釋寫入過程中的數(shù)據(jù)流的示意圖;圖6是將數(shù)據(jù)從存儲(chǔ)器中讀出的過程的流程圖;圖7是解釋將數(shù)據(jù)從存儲(chǔ)器中讀出的過程的示意圖;圖8是根據(jù)本發(fā)明的第三實(shí)施例的存儲(chǔ)器保護(hù)裝置的方框圖;圖9是根據(jù)本發(fā)明的第四實(shí)施例的存儲(chǔ)器保護(hù)裝置的方框圖;圖10是根據(jù)本發(fā)明的第五實(shí)施例的存儲(chǔ)器保護(hù)裝置的方框圖;圖11是根據(jù)本發(fā)明的第八實(shí)施例的存儲(chǔ)器保護(hù)裝置的方框圖;圖12是在寫入訪問密鑰(write-access-key)表中的數(shù)據(jù)配置的示意圖;圖13是根據(jù)本發(fā)明的第九實(shí)施例的存儲(chǔ)器保護(hù)裝置的方框圖;圖14是在讀出訪問密鑰(read-access-key)表中的數(shù)據(jù)配置的示意圖;圖15是用于解釋選擇訪問密鑰的方法的示意圖;圖16是根據(jù)本發(fā)明的第十二實(shí)施例的存儲(chǔ)器保護(hù)裝置的方框圖;圖17是用于解釋由數(shù)據(jù)編輯單元所執(zhí)行的過程的示意圖;以及圖18是根據(jù)本發(fā)明的第十三實(shí)施例的存儲(chǔ)器保護(hù)裝置的方框圖。
具體實(shí)施例方式
以下參考附圖詳細(xì)解釋本發(fā)明的示例性實(shí)施例。本發(fā)明并不局限于以下所述的實(shí)施例。
如圖1所示,根據(jù)本發(fā)明的第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1包括保護(hù)處理單元10、處理器20、存儲(chǔ)器控制器30和存儲(chǔ)器40。存儲(chǔ)器控制器30和處理器20通過處理器總線21連接。保護(hù)處理單元10是安裝在存儲(chǔ)器控制器30與存儲(chǔ)器40之間的獨(dú)立設(shè)備。更具體而言,保護(hù)處理單元10能夠是獨(dú)立的大規(guī)模集成電路(LSI)芯片。
存儲(chǔ)器40包括糾錯(cuò)碼,即錯(cuò)誤控制碼(ECC)。在此參考圖2和3解釋ECC。ECC已經(jīng)廣泛用作提高存儲(chǔ)器可靠性的一種方法。
通常,如圖2所示,將要一次從存儲(chǔ)器中讀出或者寫入到存儲(chǔ)器中的n比特的數(shù)據(jù)D加上m比特的奇偶校驗(yàn)。奇偶檢驗(yàn)是從數(shù)據(jù)D的值中計(jì)算出來的。將大小為n+m比特的數(shù)據(jù)D′寫入到存儲(chǔ)器中。
如圖3所示,要從存儲(chǔ)器中讀出數(shù)據(jù)D′,通過用奇偶校驗(yàn)矩陣H中的轉(zhuǎn)置矩陣乘以數(shù)據(jù)D′來計(jì)算m比特的值。m比特的值稱為校正子。當(dāng)校正子為0時(shí),n比特的數(shù)據(jù)正確。當(dāng)校正子不為0時(shí),則n比特的數(shù)據(jù)包含至少一個(gè)錯(cuò)誤。如果該錯(cuò)誤是可糾正的則糾正該錯(cuò)誤。
ECC能夠以各種方法執(zhí)行。奇偶校驗(yàn)位的數(shù)量、計(jì)算該數(shù)量的方法、用于計(jì)算校正子的奇偶校驗(yàn)矩陣、以及用于根據(jù)校正子來發(fā)現(xiàn)被糾正的錯(cuò)誤的比特位置的方法隨著方法不同而不同。單錯(cuò)糾正雙錯(cuò)檢測(cè)(SEC-DED)碼廣泛地用于計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中。
根據(jù)SEC-DED碼,當(dāng)數(shù)據(jù)或者其奇偶校驗(yàn)包含單個(gè)錯(cuò)誤時(shí),定位該錯(cuò)誤。當(dāng)數(shù)據(jù)或者其奇偶校驗(yàn)包含兩個(gè)錯(cuò)誤時(shí),檢測(cè)到錯(cuò)誤但是不能夠定位錯(cuò)誤。
通常,將32比特的數(shù)據(jù)加上7比特的奇偶校驗(yàn)作為ECC。64比特的數(shù)據(jù)加上8比特的奇偶校驗(yàn),128比特的數(shù)據(jù)加上9比特的奇偶校驗(yàn)。
根據(jù)如何計(jì)算奇偶校驗(yàn)和如何生成奇偶校驗(yàn)矩陣來以各種方法執(zhí)行SEC-DED碼。最普通的方法是擴(kuò)展?jié)h明碼和Hsiao碼。在Cambridge University Press,2003中Richard E.Blahut寫的AlgebraicCode for Data Transmission的63頁描述了擴(kuò)展?jié)h明碼。在IBM Journalof Research and Development,July 1970中M.Y.Hsiao寫的A Class ofOptimal Minimum Odd-weight-column SEC-DED Codes的395-401頁中描述了Hsiao碼。這兩種SEC-DED碼在解釋校正子的值的方法上不同;但是它們?cè)诩m錯(cuò)和檢錯(cuò)能力上等同。
根據(jù)SEC-DED碼,當(dāng)數(shù)據(jù)正確時(shí),校正子的值為0。當(dāng)數(shù)據(jù)包含單個(gè)錯(cuò)誤時(shí),校正子表示非0值并且該值一對(duì)一地對(duì)應(yīng)錯(cuò)誤比特位置。通常該值等于與錯(cuò)誤比特位置相對(duì)應(yīng)的奇偶校驗(yàn)矩陣中的行的值。
同時(shí),根據(jù)擴(kuò)展?jié)h明碼,由奇偶校驗(yàn)計(jì)算方法和奇偶校驗(yàn)矩陣所指定的奇偶校驗(yàn)中的比特值始終是1,并且根據(jù)Hsiao碼,校正子始終包括奇數(shù)個(gè)表示為1的比特。
當(dāng)數(shù)據(jù)包含兩個(gè)錯(cuò)誤時(shí),校正子的值也不為0。在該情況下,根據(jù)擴(kuò)展?jié)h明碼,由奇偶校驗(yàn)計(jì)算方法和奇偶校驗(yàn)矩陣所指定的奇偶校驗(yàn)中的比特值始終是0。根據(jù)Hsiao碼,校正子始終包含偶數(shù)個(gè)表示為1的比特。
當(dāng)使用SEC-DED碼時(shí),通常不考慮數(shù)據(jù)包含兩個(gè)以上錯(cuò)誤的情況。這是因?yàn)槿缦滤觯袝r(shí)不能將具有三個(gè)或者更多錯(cuò)誤的數(shù)據(jù)與具有一個(gè)或者兩個(gè)錯(cuò)誤的數(shù)據(jù)區(qū)分開。
當(dāng)數(shù)據(jù)包含等于或者多于三個(gè)的奇數(shù)個(gè)錯(cuò)誤時(shí),根據(jù)擴(kuò)展?jié)h明碼,由奇偶校驗(yàn)計(jì)算方法和奇偶校驗(yàn)矩陣所指定的奇偶校驗(yàn)中的比特值始終是1。根據(jù)Hsiao碼,校正子始終包含奇數(shù)個(gè)表示為1的比特。其結(jié)果與單個(gè)錯(cuò)誤的情況相同。該結(jié)果表示至少包含一個(gè)錯(cuò)誤;然而,在很多情況下難以確定存在單個(gè)錯(cuò)誤還是多個(gè)錯(cuò)誤。
當(dāng)數(shù)據(jù)包含等于或者多于四個(gè)的偶數(shù)個(gè)錯(cuò)誤時(shí),根據(jù)擴(kuò)展?jié)h明碼,由奇偶校驗(yàn)計(jì)算方法和奇偶校驗(yàn)矩陣所指定的奇偶校驗(yàn)中的比特值始終是0。根據(jù)Hsiao碼,校正子始終包含偶數(shù)個(gè)表示為1的比特。其結(jié)果與兩個(gè)錯(cuò)誤的情況相同。
然而,在兩個(gè)錯(cuò)誤的情況中校正子從不表示為0,而在存在四個(gè)或者更多偶數(shù)個(gè)錯(cuò)誤時(shí),有時(shí)校正子能夠表示為0。因此,就存在盡管包含錯(cuò)誤但是沒有檢測(cè)到錯(cuò)誤的風(fēng)險(xiǎn)。
第一實(shí)施例是假設(shè)將SEC-DED碼用作ECC來進(jìn)行解釋的。在此所使用的SEC-DED是Hsiao碼。然而,也能夠使用擴(kuò)展?jié)h明碼。還能夠使用除了SEC-DED碼之外的ECC。
返回對(duì)圖1的解釋,保護(hù)處理單元10通過對(duì)交疊(overlay)有ECC和用于存儲(chǔ)器保護(hù)的信息的數(shù)據(jù)進(jìn)行存儲(chǔ)來實(shí)現(xiàn)存儲(chǔ)器保護(hù)。由于使用了ECC,存儲(chǔ)器保護(hù)的單位為32比特或者64比特,其等于ECC的單位。因此,是采用與傳統(tǒng)技術(shù)相比更小的單位來保護(hù)存儲(chǔ)器的。
保護(hù)處理單元10包括奇偶校驗(yàn)生成電路100、第一XOR電路102、訪問密鑰寄存器110、第二XOR電路120、校正子計(jì)算電路122和糾錯(cuò)電路124。
奇偶校驗(yàn)生成電路100生成用于通過存儲(chǔ)器控制器30從處理器20獲得的數(shù)據(jù)的奇偶校驗(yàn),并將該奇偶校驗(yàn)加到數(shù)據(jù)上。訪問密鑰寄存器110中保留在處理器20中工作的進(jìn)程所設(shè)定的訪問密鑰。訪問密鑰是訪問存儲(chǔ)器40的密鑰。
工作在存儲(chǔ)器保護(hù)裝置1上的操作系統(tǒng)包括在多個(gè)程序之間進(jìn)行切換的功能,以實(shí)現(xiàn)多程序。操作系統(tǒng)管理每個(gè)進(jìn)程與其訪問密鑰之間的對(duì)應(yīng)關(guān)系。訪問密鑰包含對(duì)于該進(jìn)程而言唯一的值。換而言之,不同的進(jìn)程具有不同的訪問密鑰。
第一XOR電路102計(jì)算包括由奇偶校驗(yàn)生成電路100所生成的奇偶校驗(yàn)的數(shù)據(jù)與在訪問密鑰寄存器110中所保留的訪問密鑰之間的XOR。然后第一XOR電路102將結(jié)果寫入存儲(chǔ)器40。換而言之,第一XOR電路102用作寫入單元。
第二XOR電路120計(jì)算在存儲(chǔ)器40中的數(shù)據(jù)與在訪問密鑰寄存器110中所保留的訪問密鑰之間的XOR。校正子計(jì)算電路122從第XOR電路120的計(jì)算結(jié)果中計(jì)算校正子。糾錯(cuò)電路124根據(jù)校正子計(jì)算電路122所計(jì)算的校正子的值根據(jù)需要來糾正錯(cuò)誤。換而言之,糾錯(cuò)電路124用作輸出確定單元。
存儲(chǔ)器控制器30能夠包含ECC電路。如果是該情況,則保護(hù)處理單元10不需要包含奇偶校驗(yàn)生成電路100、校正子計(jì)算電路122和糾錯(cuò)電路124。在存儲(chǔ)器控制器30中的ECC電路用于取代它們。
參考圖4解釋將數(shù)據(jù)寫入存儲(chǔ)器40的過程。為了切換進(jìn)程(在步驟S100為“是”),將切換后的訪問密鑰設(shè)定到訪問密鑰寄存器110(步驟S102)。
奇偶校驗(yàn)生成電路100生成奇偶校驗(yàn)并將其加到要寫入存儲(chǔ)器40中的數(shù)據(jù)上(步驟S104)。第一XOR電路102計(jì)算加上奇偶校驗(yàn)的數(shù)據(jù)與在訪問密鑰寄存器110中保留的訪問密鑰之間的XOR(步驟S106),并將所計(jì)算的數(shù)據(jù)寫入到存儲(chǔ)器40(步驟S108)。
如圖5所示,當(dāng)活動(dòng)進(jìn)程將數(shù)據(jù)D寫入到存儲(chǔ)器40時(shí),ECC加上奇偶校驗(yàn)以生成帶有奇偶校驗(yàn)的數(shù)據(jù)D′。
將等于帶有奇偶校驗(yàn)的數(shù)據(jù)D′與由該進(jìn)程寫入到訪問密鑰寄存器110中的訪問密鑰Ka的XOR的值D′XOR Ka,即所存儲(chǔ)數(shù)據(jù)D″寫入到存儲(chǔ)器40中。
參考圖6解釋將數(shù)據(jù)從存儲(chǔ)器40讀出的過程。為了切換進(jìn)程(步驟S200為“是”),將切換后的訪問密鑰設(shè)定到訪問密鑰寄存器110(步驟S202)。
第二XOR電路120從存儲(chǔ)器40讀出所存儲(chǔ)的數(shù)據(jù)D″(步驟S204),并計(jì)算所存儲(chǔ)的數(shù)據(jù)D″與在訪問密鑰寄存器110中保留的訪問密鑰之間的XOR(步驟S206)。
校正子計(jì)算電路使用ECC計(jì)算校正子(步驟S208)。當(dāng)校正子的值為0時(shí),即當(dāng)沒有檢測(cè)到錯(cuò)誤時(shí)(步驟S210為“是”),讀出數(shù)據(jù)D(步驟S212)。
當(dāng)檢測(cè)到一個(gè)錯(cuò)誤時(shí)(步驟S210為“否”,步驟S214為“是”),即校正子的值不為0、校正子中表示為1的比特?cái)?shù)量為奇數(shù)個(gè)并且校正子的值等于奇偶校驗(yàn)矩陣中任意行時(shí),糾錯(cuò)電路124糾正錯(cuò)誤(步驟S216)并且讀出所糾正的數(shù)據(jù)D(步驟S212)。當(dāng)檢測(cè)到兩個(gè)錯(cuò)誤時(shí)(步驟S210為“否”,步驟S214為“否”),即當(dāng)校正子的值不為0并且校正子中表示為1的比特?cái)?shù)量為偶數(shù)時(shí)或者當(dāng)校正子中表示為1的比特?cái)?shù)量為奇數(shù)并且校正子的值不同于奇偶校驗(yàn)矩陣中任意行時(shí),輸出0數(shù)據(jù)而不是數(shù)據(jù)D(步驟S218)。
如圖7所示,當(dāng)活動(dòng)進(jìn)程從存儲(chǔ)器40讀出數(shù)據(jù)D時(shí),計(jì)算等于所存儲(chǔ)數(shù)據(jù)D″,即D′XOR Ka與該進(jìn)程寫入到訪問密鑰寄存器110中的訪問密鑰Kb之間XOR的值D″XOR Kb(=D′XOR Ka XOR Kb)。將ECC根據(jù)校正子計(jì)算電路122的計(jì)算結(jié)果而對(duì)其執(zhí)行錯(cuò)誤檢測(cè)和糾錯(cuò)的值讀出。
當(dāng)寫入和讀出采用相同訪問密鑰(Ka=Kb)時(shí),能夠讀出正確數(shù)據(jù)D。當(dāng)寫入和讀出采用的訪問密鑰不同時(shí)(Ka≠Kb),從存儲(chǔ)器40中讀出的所存儲(chǔ)數(shù)據(jù)D″包括與其中Ka XOR Kb等于1的比特?cái)?shù)量相同數(shù)量的錯(cuò)誤。在該情況下,糾錯(cuò)電路124輸出0數(shù)據(jù)。
當(dāng)讀出和寫入之間的訪問密鑰不同時(shí),糾錯(cuò)電路124能夠不輸出數(shù)據(jù)而不是輸出0數(shù)據(jù)。
訪問密鑰包括對(duì)于相應(yīng)進(jìn)程而言唯一的值。當(dāng)特定進(jìn)程試圖讀出由另一進(jìn)程寫入的數(shù)據(jù)時(shí),根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1保護(hù)該特定進(jìn)程不被讀出。采用該方式,存儲(chǔ)器保護(hù)裝置1保護(hù)數(shù)據(jù)不受其他進(jìn)程影響。
多個(gè)進(jìn)程能夠共享單個(gè)訪問密鑰。通過共享訪問密鑰,進(jìn)程能夠共享數(shù)據(jù)并且能夠保護(hù)該數(shù)據(jù)不受其他進(jìn)程影響。
訪問密鑰能夠是等于或者小于存儲(chǔ)器中數(shù)據(jù)長度(n比特)與奇偶校驗(yàn)長度(m比特)總和(即n+m比特)的任意大小。
如上所述,存儲(chǔ)器保護(hù)裝置1防止未授權(quán)的進(jìn)程讀出數(shù)據(jù),并保護(hù)了該數(shù)據(jù),從而僅僅授權(quán)的進(jìn)程能夠?qū)懭朐摂?shù)據(jù)。更具體而言,在將數(shù)據(jù)寫入存儲(chǔ)器40之前,存儲(chǔ)器保護(hù)裝置1讀出存儲(chǔ)器40中的數(shù)據(jù)。存儲(chǔ)器保護(hù)裝置1取得控制,從而使得數(shù)據(jù)不能被寫入到由于訪問密鑰不匹配從而該進(jìn)程不能訪問讀出的地址中。這就通過小單位實(shí)現(xiàn)了寫入訪問的保護(hù)。
作為本發(fā)明的第二實(shí)施例,在存儲(chǔ)器保護(hù)裝置1中的保護(hù)處理單元10能夠是安裝在任意類型的系統(tǒng)LSI中而不是獨(dú)立LSI芯片中的知識(shí)產(chǎn)權(quán)(IP)。
根據(jù)第二實(shí)施例的存儲(chǔ)器保護(hù)裝置1其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
如圖8所示,根據(jù)本發(fā)明的第三實(shí)施例的存儲(chǔ)器保護(hù)裝置800包括系統(tǒng)LSI 11和存儲(chǔ)器40。系統(tǒng)LSI 11包括保護(hù)處理單元10、處理器20和存儲(chǔ)器控制器30。
存儲(chǔ)器控制器30轉(zhuǎn)換處理器總線21與存儲(chǔ)器40之間的協(xié)議。嵌入保護(hù)處理單元10以連接存儲(chǔ)器控制器30與存儲(chǔ)器40。保護(hù)處理單元10能夠作為額外功能而嵌入到存儲(chǔ)器控制器30中。
存儲(chǔ)器保護(hù)裝置800在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
如圖9所示,根據(jù)本發(fā)明的第四實(shí)施例的存儲(chǔ)器保護(hù)裝置900包括處理器20、橋LSI 12和存儲(chǔ)器40。橋LSI 12包括存儲(chǔ)器控制器30和保護(hù)處理單元10。
橋LSI 12安裝在處理器20與存儲(chǔ)器40之間,并連接存儲(chǔ)器40和處理器20。
存儲(chǔ)器保護(hù)裝置900在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
如圖10所示,根據(jù)本發(fā)明的第五實(shí)施例的存儲(chǔ)器保護(hù)裝置1000包括處理器20、存儲(chǔ)器控制器30和存儲(chǔ)器芯片13。存儲(chǔ)器芯片13包括保護(hù)處理單元10和存儲(chǔ)器40。
由于保護(hù)處理單元10耦合到存儲(chǔ)器40,因此存儲(chǔ)器芯片13能夠檢測(cè)訪問密鑰的不一致,并防止數(shù)據(jù)被從存儲(chǔ)器芯片13中讀出。存儲(chǔ)器芯片13能夠包含ECC電路。如果是這樣,則在存儲(chǔ)器芯片13中的保護(hù)處理單元10不需要包含奇偶校驗(yàn)生成電路100、校正子計(jì)算電路122和糾錯(cuò)電路124。存儲(chǔ)器控制器30中的ECC電路用于取代它們。
存儲(chǔ)器保護(hù)裝置1000在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
根據(jù)本發(fā)明的第六個(gè)實(shí)施例,單個(gè)進(jìn)程能夠包括多個(gè)訪問密鑰,并且多個(gè)進(jìn)程能夠共享單個(gè)密鑰。
當(dāng)需要與設(shè)定到訪問密鑰寄存器110的訪問密鑰不同的訪問密鑰時(shí),將所需要的訪問密鑰設(shè)定到訪問密鑰寄存器110。更具體而言,例如,操作系統(tǒng)能夠?qū)⑺枰脑L問密鑰設(shè)定到訪問密鑰寄存器110。
根據(jù)第六實(shí)施例的存儲(chǔ)器保護(hù)裝置1在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
根據(jù)本發(fā)明的第七實(shí)施例,存儲(chǔ)器保護(hù)裝置1能夠防止在多處理中的多個(gè)處理器之間的未授權(quán)訪問。通過對(duì)每個(gè)處理器設(shè)定訪問密鑰能夠防止來自未授權(quán)處理器的訪問。
此外,存儲(chǔ)器保護(hù)裝置1能夠防止進(jìn)程和輸入/輸出(I/O)設(shè)備之間的未授權(quán)訪問,或者在進(jìn)程、處理器和I/O設(shè)備之間的未授權(quán)訪問。
根據(jù)第七實(shí)施例的存儲(chǔ)器保護(hù)裝置1在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
如圖11所示,根據(jù)本發(fā)明的第八實(shí)施例的存儲(chǔ)器保護(hù)裝置1100還包括寫入訪問密鑰表112和寫入允許單元114。
如圖12所示,寫入訪問密鑰表112將每個(gè)訪問密鑰與存儲(chǔ)器起始地址號(hào)和存儲(chǔ)器結(jié)束地址號(hào)相關(guān)聯(lián)。寫入允許單元114允許將數(shù)據(jù)寫入到與從處理器20獲得的訪問密鑰相關(guān)聯(lián)的存儲(chǔ)器起始地址號(hào)與存儲(chǔ)器結(jié)束地址號(hào)之間的存儲(chǔ)器區(qū)域中,并且禁止將數(shù)據(jù)寫入到任何其他區(qū)域中。寫入訪問密鑰表112優(yōu)選地由操作系統(tǒng)生成并存儲(chǔ)在保護(hù)處理單元10中。
存儲(chǔ)器保護(hù)裝置1100在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
如圖13所示,根據(jù)本發(fā)明的第九實(shí)施例的存儲(chǔ)器保護(hù)裝置1300中的保護(hù)處理單元1310還包括讀出訪問密鑰表116和訪問密鑰選擇單元118。
如圖14所示,讀出訪問密鑰表116將每個(gè)訪問密鑰與存儲(chǔ)器起始地址號(hào)相關(guān)聯(lián)。當(dāng)處理器20指定特定存儲(chǔ)器起始地址號(hào)時(shí),訪問密鑰選擇單元118選擇與該存儲(chǔ)器起始地址號(hào)相關(guān)聯(lián)的訪問密鑰,并將所選擇的訪問密鑰設(shè)定到訪問密鑰寄存器110。讀出訪問密鑰表116優(yōu)選地由操作系統(tǒng)設(shè)定。
與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1相同,存儲(chǔ)器保護(hù)裝置1300保護(hù)數(shù)據(jù)免受未授權(quán)進(jìn)程影響。此外,由于為每個(gè)存儲(chǔ)器地址分配了唯一的訪問密鑰,因此能夠通過存儲(chǔ)器地址的預(yù)定單元來保護(hù)數(shù)據(jù)。
此外,由于訪問密鑰是對(duì)于每個(gè)存儲(chǔ)器地址進(jìn)行管理的,因此即使是在進(jìn)程并不如同第六實(shí)施例中所述那樣與訪問密鑰一一對(duì)應(yīng)時(shí),也能夠防止未授權(quán)訪問。
存儲(chǔ)器保護(hù)裝置1300在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
根據(jù)本發(fā)明的第十實(shí)施例的存儲(chǔ)器保護(hù)裝置1設(shè)定每個(gè)訪問密鑰,從而使得ECC能夠檢測(cè)到用與對(duì)其進(jìn)行寫入所使用的訪問密鑰不同的不正確訪問密鑰進(jìn)行的讀出。
為了通過ECC檢測(cè)到用不正確訪問密鑰進(jìn)行的讀出,如下所述,選擇訪問密鑰Ka和Kb,從而使得當(dāng)使用訪問密鑰Kb讀出使用任意訪問密鑰Ka寫入的數(shù)據(jù)時(shí),由D′XOR Ka XOR Kb計(jì)算得到的校正子始終檢測(cè)為兩個(gè)錯(cuò)誤。能夠被檢測(cè)為單個(gè)錯(cuò)誤的一對(duì)訪問密鑰并不合乎要求,因?yàn)閱蝹€(gè)錯(cuò)誤是通過糾錯(cuò)電路124進(jìn)行糾正的。
當(dāng)使用Hsiao SEC-DED碼時(shí),當(dāng)在校正子中表示為1的比特?cái)?shù)為偶數(shù)并等于或者大于2時(shí),檢測(cè)到2個(gè)錯(cuò)誤。選擇訪問密鑰Ka和Kb,以使得在校正子中表示為1的比特?cái)?shù)為偶數(shù)并等于或者大于2。
為了使通過D′XOR Ka XOR Kb計(jì)算得到的校正子始終被檢測(cè)為兩個(gè)錯(cuò)誤,需要確定訪問密鑰Ka和Kb從而使得在從Ka XOR Kb計(jì)算得到的校正子中表示為1的比特?cái)?shù)為偶數(shù)并等于或者大于2。
此外,為了使在從Ka XOR Kb計(jì)算得到的校正子中表示為1的比特?cái)?shù)始終為偶數(shù)并等于或者大于2,需要滿足以下兩個(gè)條件。第一個(gè)條件是要選擇Ka和Kb從而使得從訪問密鑰Ka計(jì)算得到的校正子不同于從訪問密鑰Kb計(jì)算得到的校正子。第二個(gè)條件是從各個(gè)訪問密鑰計(jì)算得到的校正子中表示為1的比特?cái)?shù)固定為偶數(shù)或者奇數(shù)。
例如,當(dāng)將8個(gè)比特?cái)?shù)據(jù)加入到64比特?cái)?shù)據(jù)中并根據(jù)條件選擇訪問密鑰時(shí),每次能夠存在的訪問密鑰的數(shù)量等于能夠用8個(gè)比特表示并包括偶數(shù)個(gè)(或者奇數(shù)個(gè))表示為1的比特的校正子的數(shù)量,即128。
單個(gè)訪問密鑰能夠?yàn)?2(64+8)比特。每次在2的72次方個(gè)訪問密鑰中滿足校正子的條件的訪問密鑰有128個(gè)。
根據(jù)本發(fā)明的第十實(shí)施例的存儲(chǔ)器保護(hù)裝置1在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
根據(jù)本發(fā)明的第十一實(shí)施例的存儲(chǔ)器保護(hù)裝置1設(shè)定防止存儲(chǔ)器40中的數(shù)據(jù)被不適當(dāng)讀出的訪問密鑰。根據(jù)其他實(shí)施例,存儲(chǔ)器保護(hù)裝置1中存儲(chǔ)了通過XOR進(jìn)行交迭(overlap)的用于ECC的信息和用于保護(hù)存儲(chǔ)器40的信息。因此,只要用正確的訪問密鑰來讀出數(shù)據(jù),通常就執(zhí)行根據(jù)ECC的檢錯(cuò)和糾錯(cuò),其中,糾正單個(gè)錯(cuò)誤并查出兩個(gè)錯(cuò)誤。
然而,當(dāng)使用與寫入數(shù)據(jù)時(shí)所使用的訪問密鑰不同的不正確的訪問密鑰對(duì)數(shù)據(jù)進(jìn)行讀出并且同時(shí)在存儲(chǔ)器中發(fā)生了一個(gè)或者兩個(gè)錯(cuò)誤時(shí),能夠讀出數(shù)據(jù),就好像使用正確密鑰進(jìn)行讀出或者好像檢測(cè)出單個(gè)錯(cuò)誤。在該情況下,數(shù)據(jù)能夠被不適當(dāng)?shù)刈x出。
為了避免這種風(fēng)險(xiǎn),選擇訪問密鑰使得任意兩個(gè)訪問密鑰之間的漢明距離等于或者大于4。漢明距離是兩個(gè)值之間的不同比特的數(shù)量。如第十實(shí)施例中所述,必須確定訪問密鑰Ka和Kb以使得在從KaXOR Kb計(jì)算得到的校正子中表示為1的比特?cái)?shù)為偶數(shù)并等于或者大于2。
根據(jù)該條件,漢明距離能夠?yàn)?。然而,如果漢明距離為2并且在存儲(chǔ)器中發(fā)生單個(gè)錯(cuò)誤,則能夠糾正單個(gè)錯(cuò)誤并檢測(cè)出另一個(gè)錯(cuò)誤。在該情況下,不希望的是所檢測(cè)出的單個(gè)錯(cuò)誤被糾正并將數(shù)據(jù)輸出。因此,漢明距離必須等于或者大于4。
總結(jié)所述條件,選擇合乎要求的訪問密鑰以使得從各個(gè)訪問密鑰計(jì)算得到的校正子不同,從各個(gè)訪問密鑰計(jì)算得到的校正子中表示為1的比特?cái)?shù)固定為偶數(shù)或者奇數(shù),并且兩個(gè)密鑰之間的漢明距離等于或者大于4。
當(dāng)漢明距離等于或者大于4時(shí),使用不同訪問密鑰讀出的數(shù)據(jù)始終包括至少4個(gè)錯(cuò)誤。即使是發(fā)生一個(gè)或者兩個(gè)錯(cuò)誤,在數(shù)據(jù)中至少檢測(cè)到兩個(gè)錯(cuò)誤。這就避免了未授權(quán)進(jìn)程通過對(duì)單個(gè)錯(cuò)誤的不適當(dāng)糾正來讀出正確的數(shù)據(jù)。
參考圖15描述了根據(jù)以上所述的條件選擇訪問密鑰的一種方法。給出的說明是假設(shè)存儲(chǔ)器訪問的單位是64比特,使用了HsiaoSEC-DED碼,并且將8比特的奇偶校驗(yàn)加到64比特的數(shù)據(jù)上。該方法應(yīng)用到對(duì)不同大小的存儲(chǔ)器進(jìn)行訪問并使用另一種ECC方法的其他情況。
將57比特的數(shù)準(zhǔn)備為訪問密鑰的種子。選擇該數(shù)以使得同時(shí)存在的多個(gè)密鑰相互不同。該數(shù)是根據(jù)需要由計(jì)數(shù)器等生成的。
另外,能夠通過生成隨機(jī)數(shù)并在這些隨機(jī)數(shù)中選擇唯一的數(shù)來選擇該數(shù)。能夠?qū)⒃?7比特分為多個(gè)區(qū)域,并且隨機(jī)數(shù)或者計(jì)數(shù)器能夠用于選擇在每個(gè)區(qū)域中的值。所期望的是,基于安全考慮,將該數(shù)作為盡可能接近隨機(jī)數(shù)來使用。
將根據(jù)SEC-DED碼的奇偶校驗(yàn)加到57比特的值上。由于SEC-DED碼的特性,這樣就在64比特的值之間提供了等于或者大于4的漢明距離,所述64比特的值每個(gè)都包括不同的57比特值加上7比特的奇偶校驗(yàn)。7比特的奇偶校驗(yàn)在64比特值中的位置是預(yù)先確定的。奇偶校驗(yàn)不必一定是最后7位。
當(dāng)將64比特值寫入到存儲(chǔ)器40時(shí),加上8比特的奇偶校驗(yàn)。計(jì)算8比特的奇偶校驗(yàn)并將其加到該64比特值上,生成72比特值。從該72比特值中計(jì)算得到的校正子為0。
確定期望與訪問密鑰相對(duì)應(yīng)的校正子。如上所述,在8比特的奇偶校驗(yàn)的情況下,從128個(gè)數(shù)中選擇有效訪問密鑰,所述128個(gè)數(shù)中每個(gè)包括偶數(shù)個(gè)(或者奇數(shù)個(gè))表示為1的比特。訪問密鑰的校正子必須不同于任何其他訪問密鑰的校正子。為了選擇生成唯一的校正子的訪問密鑰,期望使用表等來管理訪問密鑰。
根據(jù)Hsiao SEC-DED碼,在與奇偶校驗(yàn)比特位置相對(duì)應(yīng)的奇偶校驗(yàn)矩陣中,列矢量在單一行中為1而在其他行中為0。換而言之,在8比特奇偶校驗(yàn)中的每個(gè)比特與8比特的校正子中的每個(gè)比特一一對(duì)應(yīng)。
對(duì)奇偶校驗(yàn)中的單個(gè)比特的轉(zhuǎn)換使校正子中的相應(yīng)的比特發(fā)生轉(zhuǎn)換。因此,計(jì)算在72比特值中的奇偶校驗(yàn)和所期望的訪問密鑰的XOR,并將其嵌入到72比特值的奇偶校驗(yàn)區(qū)域中。采用該方式生成的訪問密鑰的校正子滿足所述條件。
根據(jù)第十一實(shí)施例的存儲(chǔ)器保護(hù)裝置1在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
如圖16所示,根據(jù)本發(fā)明的第十二實(shí)施例的存儲(chǔ)器保護(hù)裝置1600中的保護(hù)處理單元1610還包括數(shù)據(jù)編輯單元104。
如上所述,通過在存儲(chǔ)器40中存儲(chǔ)奇偶校驗(yàn)與訪問密鑰的XOR,能夠防止來自其他進(jìn)程的訪問。然而,存在的風(fēng)險(xiǎn)是,由于存儲(chǔ)器錯(cuò)誤能夠?qū)蓚€(gè)錯(cuò)誤檢測(cè)為三個(gè)錯(cuò)誤(或者一個(gè)錯(cuò)誤)并能夠糾正該數(shù)據(jù)并將其輸出。如果是該情況,則不能讀出正確數(shù)據(jù)。然而,所讀出的數(shù)據(jù)包括部分正確的數(shù)據(jù)。
存儲(chǔ)器保護(hù)裝置1600中存儲(chǔ)了采用在部分正確的數(shù)據(jù)被讀出時(shí)可對(duì)其進(jìn)行管理的形式的數(shù)據(jù)。
如圖17所示,數(shù)據(jù)編輯單元104采用4個(gè)比特a、b、c和d來表示單個(gè)比特x。換而言之,用四個(gè)字來表示單比特值。在此的字定義為ECC的單位。當(dāng)存儲(chǔ)器40包括以64比特為單位的ECC時(shí),單個(gè)字包括64比特。
任何單個(gè)比特值被選擇作為a、b、c和d中的每一個(gè),從而使得其對(duì)于要被記錄的比特值x滿足x=a XOR b XOR c XOR d。期望這4個(gè)值是盡可能無規(guī)律地隨機(jī)進(jìn)行選擇的。
所選擇的a、b、c和d存儲(chǔ)在不同的字中。在圖17中,將所述值存儲(chǔ)在字W1、W2、W3和W4中。
值a和b存儲(chǔ)在比特位置xi中。值c和d存儲(chǔ)在比特位置xi-1中。
在字W1和W2中將a和b記錄在比特位置xi中的同時(shí),將0記錄在字W3的xi中,將1記錄在字W4的xi中。
類似的,將0記錄在字W1的xi-1中,將1記錄在字W2的xi-1中。
例如,當(dāng)在比特位置xi發(fā)生永久故障時(shí),可能存在存儲(chǔ)器錯(cuò)誤,即,從任意一個(gè)表示為0和1的字中讀出值1。
在該情況下,當(dāng)將一個(gè)比特劃分為4個(gè)單個(gè)比特值a、b、c和d并且將每個(gè)值記錄在比特位置xi和xi-1中的一個(gè)中時(shí),字W3的比特位置xi中的0轉(zhuǎn)換為1,并在字W3中檢測(cè)到一個(gè)錯(cuò)誤。因此,不能檢測(cè)到值c,并且由此,不能獲得能采用c通過XOR進(jìn)行計(jì)算得到的比特值x。即使是當(dāng)不論存儲(chǔ)器錯(cuò)誤如何而讀出正確的數(shù)據(jù)時(shí),重建所記錄數(shù)據(jù)的可能性將進(jìn)一步降低。采用該方式,存儲(chǔ)器保護(hù)裝置1600降低了讀出所有4個(gè)字的可能性。
這4個(gè)比特a、b、c和d的排列并不局限于第十二實(shí)施例。比特位置僅僅需要滿足以下條件。所有的4個(gè)比特具有不同的值,并且4個(gè)比特中至少一個(gè)位于不同的比特位置中。此外,0和1中任意一個(gè)記錄在與另一字中的另一比特值相同的比特位置中。
此外,兩個(gè)比特位置不必須相鄰,4個(gè)字不必須連續(xù)。
存儲(chǔ)器保護(hù)裝置1600在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
訪問密鑰由根據(jù)本發(fā)明的第十三實(shí)施例的存儲(chǔ)器保護(hù)裝置1800中保護(hù)處理單元生成。
如圖18所示,根據(jù)本發(fā)明的第十三實(shí)施例的存儲(chǔ)器保護(hù)裝置1800中的保護(hù)處理單元1810還包括訪問密鑰生成單元130和訪問密鑰管理表132,其中訪問密鑰生成單元130生成訪問密鑰,訪問密鑰管理表132保留由訪問密鑰生成單元130所生成的訪問密鑰。
訪問密鑰生成單元130通過存儲(chǔ)器控制器30從處理器20獲得生成新訪問密鑰的指令。在獲得該指令后,訪問密鑰生成單元130生成隨機(jī)數(shù),并根據(jù)該隨機(jī)數(shù)生成訪問密鑰。優(yōu)選地采用第十和第十一實(shí)施例中的任意一個(gè)中所描述的方法來生成訪問密鑰。為了防止使用與已有訪問密鑰相同的訪問密鑰,訪問密鑰生成單元130生成與在訪問密鑰管理表132中所保留的任意一個(gè)訪問密鑰不相同的訪問密鑰。
訪問密鑰生成單元130將所生成的訪問密鑰通過存儲(chǔ)器控制器30返回到處理器20,并同時(shí)將其注冊(cè)到訪問密鑰管理表132。處理器20采用所獲得的訪問密鑰訪問存儲(chǔ)器40。
存儲(chǔ)器保護(hù)裝置1800在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
當(dāng)訪問密鑰返回到處理器20時(shí),由處理器操作系統(tǒng)來管理該訪問密鑰,并且應(yīng)用程序能夠找到該訪問密鑰。為了避免這種風(fēng)險(xiǎn),根據(jù)本發(fā)明的第十四實(shí)施例的存儲(chǔ)器保護(hù)裝置1返回標(biāo)識(shí)相應(yīng)訪問密鑰的訪問密鑰標(biāo)識(shí)(ID),而不是返回訪問密鑰本身。
根據(jù)第十四實(shí)施例的存儲(chǔ)器保護(hù)裝置1800中的保護(hù)處理單元1810包括將訪問密鑰與訪問密鑰ID關(guān)聯(lián)的訪問密鑰ID表。保護(hù)處理單元1810使用訪問密鑰ID表來根據(jù)訪問密鑰ID識(shí)別訪問密鑰,并將訪問密鑰設(shè)定到訪問密鑰寄存器110。由于處理器20上的軟件不能識(shí)別訪問密鑰的真實(shí)值,因此這就提高了數(shù)據(jù)的安全性。
此外,訪問密鑰ID表能夠采用特定的訪問密鑰而被存儲(chǔ)在存儲(chǔ)器40中。這就防止了進(jìn)程查詢?cè)L問密鑰ID表,除非該進(jìn)程具有特定的ID表,從而提高了安全性。優(yōu)選的是,特定訪問密鑰能夠由保護(hù)處理單元1810單獨(dú)查詢,并不能夠被其他進(jìn)程使用。
根據(jù)第十四實(shí)施例的存儲(chǔ)器保護(hù)裝置1800在其他方面配置為與根據(jù)第十三實(shí)施例的存儲(chǔ)器保護(hù)裝置1800類似。
如第十實(shí)施例中所述,將8比特的奇偶校驗(yàn)加到64比特的數(shù)據(jù)上,有效訪問密鑰的最大數(shù)量為128。根據(jù)本發(fā)明的第十五實(shí)施例的存儲(chǔ)器保護(hù)裝置1合并多個(gè)訪問密鑰,以在不改變存儲(chǔ)器中數(shù)據(jù)寬度的情況下增加有效密鑰數(shù)。
很多處理器包括緩存存儲(chǔ)器,并一次從緩存存儲(chǔ)器讀出多個(gè)字。例如,假設(shè)緩存線大小為256比特,處理器順序地從緩存存儲(chǔ)器讀出4個(gè)64比特字。
換而言之,緩存存儲(chǔ)器中的數(shù)據(jù)是以256比特為單位切分并按單位讀出的。將4個(gè)訪問密鑰分配給被順序地讀出的4個(gè)字。根據(jù)第十五實(shí)施例的存儲(chǔ)器保護(hù)裝置1提供了控制,從而使得如果訪問密鑰即使與4個(gè)字中的一個(gè)不一致,就不讀出4個(gè)字中的任一個(gè)。這就像使用了128的4次方個(gè)訪問密鑰,從而實(shí)現(xiàn)了良好的效果。
根據(jù)第十四實(shí)施例的存儲(chǔ)器保護(hù)裝置1在其他方面配置為與根據(jù)第一實(shí)施例的存儲(chǔ)器保護(hù)裝置1類似。
本領(lǐng)域技術(shù)人員將容易得到其他優(yōu)點(diǎn)和修改。因此,本發(fā)明在其廣泛的各個(gè)方面內(nèi)并不局限于在此所示和所述的特定細(xì)節(jié)和代表性實(shí)施例。因此,在不脫離由所附權(quán)利要求及其等同所定義的普遍發(fā)明性概念的精神和范圍的情況下可以進(jìn)行各種修改。
權(quán)利要求
1.一種用于保護(hù)存儲(chǔ)器的裝置,包括奇偶校驗(yàn)生成器,其生成要寫入所述存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn);奇偶校驗(yàn)加法器,其通過將所述奇偶校驗(yàn)加入到所述第一數(shù)據(jù)來獲得第二數(shù)據(jù);訪問密鑰寄存器,其保存對(duì)于請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器或者將數(shù)據(jù)從所述存儲(chǔ)器中讀出的請(qǐng)求源而言唯一的訪問密鑰,由所述請(qǐng)求源設(shè)定所述訪問密鑰,并且所述訪問密鑰用于訪問所述存儲(chǔ)器;第一操作單元,其通過計(jì)算所述第二數(shù)據(jù)和所述訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;寫入單元,其將所述第三數(shù)據(jù)寫入所述存儲(chǔ)器;第二操作單元,其通過計(jì)算所述訪問密鑰和所述第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)從所述存儲(chǔ)器讀出的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;校正子計(jì)算器,其從所述第三數(shù)據(jù)計(jì)算校正子;以及確定單元,其根據(jù)所計(jì)算的校正子確定是否將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
2.如權(quán)利要求1所述的裝置,還包括獲取單元,其從所述請(qǐng)求源獲取生成所述訪問密鑰的指令;密鑰生成器,其在獲取所述指令后,生成對(duì)于所述請(qǐng)求源而言唯一的所述訪問密鑰;以及密鑰發(fā)送單元,其將所生成的訪問密鑰發(fā)送到所述請(qǐng)求源。
3.如權(quán)利要求2所述的裝置,其中所述密鑰生成器生成滿足以下條件的所述訪問密鑰即使當(dāng)從所述第二數(shù)據(jù)、要生成的訪問密鑰與任意一個(gè)已有訪問密鑰之間的XOR計(jì)算所述校正子時(shí),校正子也被檢測(cè)為兩個(gè)錯(cuò)誤。
4.如權(quán)利要求3所述的裝置,其中所述密鑰生成器生成所述訪問密鑰,以使得要生成的訪問密鑰與任意一個(gè)已有訪問密鑰之間的漢明距離等于或者大于4。
5.如權(quán)利要求2所述的裝置,其中所述密鑰生成器為與所述請(qǐng)求源訪問所述存儲(chǔ)器的單位相對(duì)應(yīng)的多個(gè)字中的每一個(gè)生成所述訪問密鑰。
6.如權(quán)利要求1所述的裝置,還包括寫入訪問密鑰表,其存儲(chǔ)與所述訪問密鑰相關(guān)聯(lián)的所述存儲(chǔ)器的存儲(chǔ)器地址區(qū)域;以及寫入允許單元,其允許將所述第三數(shù)據(jù)寫入到在所述寫入訪問密鑰表中、與所述訪問密鑰相關(guān)聯(lián)的存儲(chǔ)器地址區(qū)域中,所述訪問密鑰由所述請(qǐng)求源設(shè)定,其中所述寫入單元將所述第三數(shù)據(jù)寫入到允許將所述第三數(shù)據(jù)寫入到其中的存儲(chǔ)器地址區(qū)域中。
7.如權(quán)利要求1所述的裝置,還包括讀出訪問密鑰表,其存儲(chǔ)與所述訪問密鑰相關(guān)聯(lián)的所述存儲(chǔ)器的存儲(chǔ)器地址;以及密鑰選擇單元,其在接收到來自所述請(qǐng)求源的所述存儲(chǔ)器地址的指定時(shí),從所述讀出訪問密鑰表中選擇與所指定的存儲(chǔ)器地址相關(guān)聯(lián)的所述訪問密鑰,其中所述訪問密鑰寄存器保存所選擇的訪問密鑰。
8.如權(quán)利要求1所述的裝置,還包括生成數(shù)據(jù)的數(shù)據(jù)編輯單元,所述數(shù)據(jù)通過4比特?cái)?shù)據(jù)的XOR來表示要寫入到所述存儲(chǔ)器的單個(gè)比特?cái)?shù)據(jù),將所述4比特中的每一個(gè)放置在不同的字中,將第一比特和第二比特放置在第一比特位置中,將第三比特和第四比特放置在第二比特位置中,分別將0和1放置在包含所述第一比特和所述第二比特的所述字的所述第二比特位置中,以及分別將0和1放置在包含所述第三比特和所述第四比特的所述字的所述第一比特位置中,其中所述奇偶校驗(yàn)生成器為由所述數(shù)據(jù)編輯單元所獲得的每個(gè)所述字生成奇偶校驗(yàn)。
9.如權(quán)利要求1所述的裝置,其中所述第二操作單元在獲取來自所述請(qǐng)求源的寫入所述第一數(shù)據(jù)的請(qǐng)求時(shí),執(zhí)行所述訪問密鑰與所述第三數(shù)據(jù)之間的XOR操作;以及當(dāng)所述確定單元根據(jù)所計(jì)算的校正子確定將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出時(shí),所述奇偶校驗(yàn)生成器為所述第一數(shù)據(jù)生成所述奇偶校驗(yàn)。
10.如權(quán)利要求1所述的裝置,其中所述請(qǐng)求源是處理器和進(jìn)程中的一個(gè)。
11.一種用于保護(hù)存儲(chǔ)器的系統(tǒng),所述系統(tǒng)包括處理器;存儲(chǔ)器控制器;以及保護(hù)外部存儲(chǔ)器的存儲(chǔ)器保護(hù)裝置,其中所述存儲(chǔ)器保護(hù)裝置包括奇偶校驗(yàn)生成器,其生成要寫入到所述存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn);奇偶校驗(yàn)加法器,其通過將所述奇偶校驗(yàn)加入到所述第一數(shù)據(jù)來獲得第二數(shù)據(jù);訪問密鑰寄存器,其保存對(duì)于請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的請(qǐng)求源而言唯一的訪問密鑰,由所述請(qǐng)求源設(shè)定所述訪問密鑰,并且所述訪問密鑰用于訪問所述存儲(chǔ)器;第一操作單元,其通過計(jì)算所述第二數(shù)據(jù)和所述訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;寫入單元,其將所述第三數(shù)據(jù)寫入所述存儲(chǔ)器;第二操作單元,其通過計(jì)算所述訪問密鑰和所述第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)從所述存儲(chǔ)器讀出的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;校正子計(jì)算器,其從所述第三數(shù)據(jù)計(jì)算校正子;以及確定單元,其根據(jù)所計(jì)算的校正子確定是否將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
12.一種用于保護(hù)存儲(chǔ)器的系統(tǒng),所述系統(tǒng)包括存儲(chǔ)器控制器;以及保護(hù)外部存儲(chǔ)器的存儲(chǔ)器保護(hù)裝置,其中所述存儲(chǔ)器保護(hù)裝置包括奇偶校驗(yàn)生成器,其生成要寫入到所述存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn);奇偶校驗(yàn)加法器,其通過將所述奇偶校驗(yàn)加入到所述第一數(shù)據(jù)來獲得第二數(shù)據(jù);訪問密鑰寄存器,其保存對(duì)于請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器或者將數(shù)據(jù)從所述存儲(chǔ)器中讀出的請(qǐng)求源而言唯一的訪問密鑰,由所述請(qǐng)求源設(shè)定所述訪問密鑰,并且所述訪問密鑰用于訪問所述存儲(chǔ)器;第一操作單元,其通過計(jì)算所述第二數(shù)據(jù)和所述訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;寫入單元,其將所述第三數(shù)據(jù)寫入所述存儲(chǔ)器;第二操作單元,其通過計(jì)算所述訪問密鑰和所述第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)從所述存儲(chǔ)器讀出的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;校正子計(jì)算器,其從所述第三數(shù)據(jù)計(jì)算校正子;以及確定單元,其根據(jù)所計(jì)算的校正子確定是否將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
13.一種用于保護(hù)存儲(chǔ)器的系統(tǒng),所述系統(tǒng)包括存儲(chǔ)器;以及保護(hù)所述存儲(chǔ)器的存儲(chǔ)器保護(hù)裝置,其中所述存儲(chǔ)器保護(hù)裝置包括奇偶校驗(yàn)生成器,其生成要寫入到所述存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn);奇偶校驗(yàn)加法器,其通過將所述奇偶校驗(yàn)加入到所述第一數(shù)據(jù)來獲得第二數(shù)據(jù);訪問密鑰寄存器,其保存對(duì)于請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器或者將數(shù)據(jù)從所述存儲(chǔ)器中讀出的請(qǐng)求源而言唯一的訪問密鑰,由所述請(qǐng)求源設(shè)定所述訪問密鑰,并且所述訪問密鑰用于訪問所述存儲(chǔ)器;第一操作單元,其通過計(jì)算所述第二數(shù)據(jù)和所述訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;寫入單元,其將所述第三數(shù)據(jù)寫入所述存儲(chǔ)器;第二操作單元,其通過計(jì)算所述訪問密鑰和所述第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)從所述存儲(chǔ)器讀出的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;校正子計(jì)算器,其從所述第三數(shù)據(jù)計(jì)算校正子;以及確定單元,其根據(jù)所計(jì)算的校正子確定是否將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
14.一種保護(hù)存儲(chǔ)器的方法,其包括生成要寫入到所述存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn);通過將所述奇偶校驗(yàn)加入到所述第一數(shù)據(jù)來獲得第二數(shù)據(jù);在訪問密鑰寄存器中設(shè)定對(duì)于請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器或者將數(shù)據(jù)從所述存儲(chǔ)器中讀出的請(qǐng)求源而言唯一的訪問密鑰,由所述請(qǐng)求源設(shè)定所述訪問密鑰,并且所述訪問密鑰用于訪問所述存儲(chǔ)器;通過計(jì)算所述第二數(shù)據(jù)和所述訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入所述存儲(chǔ)器的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;將所述第三數(shù)據(jù)寫入所述存儲(chǔ)器;通過計(jì)算所述訪問密鑰和所述第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)從所述存儲(chǔ)器中讀出的所述請(qǐng)求源在所述訪問密鑰寄存器中設(shè)定所述訪問密鑰;從所述第三數(shù)據(jù)計(jì)算校正子;以及根據(jù)所計(jì)算的校正子確定是否將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
15.如權(quán)利要求14所述的方法,還包括從所述請(qǐng)求源獲取生成所述訪問密鑰的指令;在獲得所述指令時(shí),生成對(duì)于所述請(qǐng)求源而言唯一的所述訪問密鑰;以及將所生成的訪問密鑰發(fā)送到所述請(qǐng)求源。
16.如權(quán)利要求14所述的方法,還包括允許將所述第三數(shù)據(jù)寫入到與在寫入訪問密鑰表中的、與由所述請(qǐng)求源所設(shè)定的訪問密鑰相關(guān)聯(lián)的存儲(chǔ)器地址區(qū)域中,所述寫入訪問密鑰表存儲(chǔ)與所述訪問密鑰相關(guān)聯(lián)的所述存儲(chǔ)器的存儲(chǔ)器地址區(qū)域;以及將所述第三數(shù)據(jù)寫入到允許將所述第三數(shù)據(jù)寫入到其中的存儲(chǔ)器地址區(qū)域中。
17.如權(quán)利要求14所述的方法,還包括在接收到來自所述請(qǐng)求源的存儲(chǔ)器地址的指定時(shí),從寫入訪問密鑰表中選擇與所指定的存儲(chǔ)器地址相關(guān)聯(lián)的訪問密鑰,所述寫入訪問密鑰表保存了與所述訪問密鑰相關(guān)聯(lián)的所述存儲(chǔ)器的存儲(chǔ)器地址;以及保存所選擇的訪問密鑰。
18.如權(quán)利要求14所述的方法,還包括生成數(shù)據(jù),所述數(shù)據(jù)通過4比特?cái)?shù)據(jù)的XOR來表示要寫入到所述存儲(chǔ)器的單個(gè)比特?cái)?shù)據(jù),將所述4比特中的每一個(gè)放置在不同的字中,將第一比特和第二比特放置在第一比特位置中,將第三比特和第四比特放置在第二比特位置中,分別將0和1放置在包含所述第一比特和所述第二比特的所述字的所述第二比特位置中,以及分別將0和1放置在包含所述第三比特和所述第四比特的所述字的所述第一比特位置中,以及為每個(gè)所生成的字生成所述奇偶校驗(yàn)。
19.如權(quán)利要求14所述的方法,還包括在獲取來自所述請(qǐng)求源的寫入所述第一數(shù)據(jù)的請(qǐng)求時(shí),執(zhí)行所述訪問密鑰與所述第三數(shù)據(jù)之間的XOR操作;以及當(dāng)所述確定單元根據(jù)所計(jì)算的校正子確定將所述第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出時(shí),為所述第一數(shù)據(jù)生成所述奇偶校驗(yàn)。
20.如權(quán)利要求14所述的方法,其中所述請(qǐng)求源是處理器和進(jìn)程中的一個(gè)。
全文摘要
奇偶校驗(yàn)加法器通過將要寫入到存儲(chǔ)器的第一數(shù)據(jù)的奇偶校驗(yàn)加入到第一數(shù)據(jù)中來獲得第二數(shù)據(jù)。訪問密鑰寄存器保存對(duì)于請(qǐng)求源而言唯一的訪問密鑰。第一操作單元,其通過計(jì)算第二數(shù)據(jù)和訪問密鑰之間的XOR來獲得第三數(shù)據(jù),由請(qǐng)求將數(shù)據(jù)寫入存儲(chǔ)器的請(qǐng)求源設(shè)定所述訪問密鑰。第二操作單元通過計(jì)算訪問密鑰和第三數(shù)據(jù)之間的XOR來獲得第四數(shù)據(jù)。校正子計(jì)算器從第三數(shù)據(jù)計(jì)算校正子。確定單元根據(jù)所計(jì)算的校正子確定是否將第三數(shù)據(jù)作為所述第一數(shù)據(jù)輸出。
文檔編號(hào)G06F12/14GK1975697SQ200610160469
公開日2007年6月6日 申請(qǐng)日期2006年11月28日 優(yōu)先權(quán)日2005年11月28日
發(fā)明者金井達(dá)德 申請(qǐng)人:株式會(huì)社東芝