用于檢測數(shù)據(jù)項讀取中的錯誤的方法
【專利摘要】一種檢測數(shù)據(jù)項讀取中的錯誤的方法,該方法包括:a)在電子存儲器的第一區(qū)域中存儲數(shù)據(jù)項的第一副本,和在電子存儲器的第二區(qū)域中存儲數(shù)據(jù)項的第二副本,b)分別讀取(68)在第一區(qū)域中的數(shù)據(jù)項的第一副本的值和在第二區(qū)域中的數(shù)據(jù)項的第二副本的值,c)比較(74)數(shù)據(jù)項的第一副本和第二副本的讀取值,e)如果第一副本和第二副本的讀取值不同,則重復(fù)(78、80)上述步驟b)和c),然后,f)如果在步驟e)中的讀取值相同,則檢測到(82)該數(shù)據(jù)項讀取中的錯誤,否則,該數(shù)據(jù)項讀取中未檢測到錯誤。
【專利說明】用于檢測數(shù)據(jù)項讀取中的錯誤的方法
[0001]本發(fā)明涉及一種用于檢測數(shù)據(jù)項讀取中的錯誤的方法和一種用于保護(hù)安全處理器的方法。本發(fā)明還涉及一種用于實施所述方法的信息存儲介質(zhì)和安全處理器。
[0002]已知的方法通過執(zhí)行以下步驟來檢測讀取錯誤:
[0003]a)在電子存儲器的第一區(qū)域中存儲數(shù)據(jù)項的第一副本,和在電子存儲器的第二區(qū)域中存儲數(shù)據(jù)項的第二副本,
[0004]響應(yīng)于讀取數(shù)據(jù)項的請求:
[0005]b)分別讀取在第一區(qū)域中的數(shù)據(jù)項的第一副本的值和在第二區(qū)域中的數(shù)據(jù)項的第二副本的值,
[0006]c)比較數(shù)據(jù)項的第一副本和第二副本的讀取值,
[0007]d)如果第一副本和第二副本的讀取值相同,則該數(shù)據(jù)項讀取中未檢測到錯誤。
[0008]存儲器的區(qū)域或存儲區(qū)域是電子存儲器或劃分為幾個存儲塊的電子存儲器的部分。每個存儲塊旨在包含數(shù)據(jù)項。通常,存儲塊是頁或整數(shù)倍的頁。頁是在單次寫入操作中可以寫入的最小數(shù)量的八位位組。因此,即使頁中存儲的數(shù)據(jù)項具有小于頁的大小,也認(rèn)為頁的全部被該數(shù)據(jù)項占據(jù),而且不能在該頁中存儲任何額外數(shù)據(jù)。
[0009]涉及這些已知方法的現(xiàn)有技術(shù)例如在以下專利申請中公開:GB 2 404 261、US2006 053308、WO 2008 23297、US 2007 0033417、US 2005 0160310、US2008/140962A1 和US2009/113546A1。
[0010]已知方法的目的僅在于防范存儲塊故障的后果。因此,如果第一副本和第二副本的值不同,則發(fā)出出錯信號并觸發(fā)糾正措施。常規(guī)糾正措施之一在于糾正存儲的數(shù)據(jù)項的值。然而,這些方法也檢測數(shù)據(jù)項讀取中的錯誤。在數(shù)據(jù)項讀取中出錯的情況下,數(shù)據(jù)項的第一副本和第二副本的值不相等并不是起源于存儲在存儲區(qū)域中數(shù)據(jù)的損壞,而是起源于讀取這些數(shù)據(jù)的期間的錯誤。此處,術(shù)語“損壞”或“損壞的數(shù)據(jù)”在該數(shù)據(jù)項的物理存儲值由于存儲塊故障而出錯時使用。因此,雖然第一副本和第二副本的存儲值完全相同,但是在上述步驟c)中觀察到所述值是不同的。例如,讀取錯誤可以由讀取總線的信號干擾引起,或由非易失性存儲器中的被讀入到非易失性存儲區(qū)域后的復(fù)制的數(shù)據(jù)的損壞引起。
[0011]已知方法并不區(qū)分這兩種類型的錯誤,且在檢測到錯誤之后系統(tǒng)地開始相同的糾正措施。通常,糾正措施在于糾正錯誤的值。然而,在讀取錯誤的情況下,這種糾正是無效的,并且轉(zhuǎn)變?yōu)橛嬎銠C(jī)資源、例如微處理器實施該糾正的時間的浪費(fèi)。
[0012]在安全處理器領(lǐng)域,還有區(qū)別這兩種類型的錯誤的另一個好的理由。安全處理器是被加強(qiáng)以盡可能地抵擋黑客的電子處理器。因此,其通常用于存儲機(jī)密數(shù)據(jù)。目前,針對安全處理器的常規(guī)攻擊在于損壞存儲的數(shù)據(jù)來引起安全處理器不可預(yù)料的行為,這樣可能暴露其包含的機(jī)密數(shù)據(jù)的部分或全部。但是,對黑客來說引起讀取錯誤比損壞存儲數(shù)據(jù)更容易。當(dāng)黑客故意通過利用電壓峰或激光束或其它方式引起讀取錯誤時,據(jù)說安全處理器為讀取攻擊的受害者。因而,在安全處理器的情況下,讀取錯誤使得能夠十分確定地檢測到對密碼分析的嘗試,而存儲塊故障可以是例如由老化造成的偶然故障。
[0013]本發(fā)明的目的在于糾正該缺點。因此,其主題是根據(jù)權(quán)利要求1的一種用于檢測讀取錯誤的方法。
[0014]上述方法使得能夠?qū)⒆x取錯誤與由存儲數(shù)據(jù)的損壞造成的錯誤區(qū)分開,因而檢測出讀取錯誤。實際上,在上述步驟b)和c)的第二迭代中,第一副本和第二副本的值在這些值中的至少一個損壞時必然不同。相反地,在步驟b)和c)的第二迭代中這些值相同確定地識別出數(shù)據(jù)項讀取中的錯誤。
[0015]因此,能夠?qū)嵤┎煌倪m當(dāng)措施來響應(yīng)讀取錯誤或存儲數(shù)據(jù)的損壞。例如,檢測到讀取錯誤的事實使得能夠避免在存儲數(shù)據(jù)沒有損壞時無用地實施目的為糾正存儲數(shù)據(jù)的措施。此外,在安全處理器的情況下,讀取錯誤的檢測使得能夠觸發(fā)阻止密碼分析的對策的實施。
[0016]該檢測方法的實施方案可以包括從屬權(quán)利要求的一個或更多個特征。
[0017]上述檢測方法的實施方案還具有以下優(yōu)點:
[0018]-使用檢錯碼使得即使在存儲塊故障之后也能夠恢復(fù)用于檢測讀取錯誤的方法的功能,
[0019]-使用糾錯碼使得即使數(shù)據(jù)項的第一副本和第二副本的值已經(jīng)損壞之后也能夠恢復(fù)用于檢測讀取錯誤的方法的功能,同時限制存儲的糾錯碼的數(shù)量,
[0020]-僅從未存儲為有故障的存儲塊中選擇用于存儲新的數(shù)據(jù)項的存儲塊使得能夠避免再次使用有故障的存儲塊來存儲數(shù)據(jù),
[0021]-在第一存儲區(qū)域中存儲與第二存儲區(qū)域中的存儲值不同的變換值使得發(fā)生讀取攻擊時能夠增加第一副本和第二副本的讀取值不同的可能性。
[0022]本發(fā)明的另一個主題是根據(jù)權(quán)利要求6的一種用于保護(hù)安全處理器免受讀取攻擊的方法。
[0023]本發(fā)明的另一個主題是一種信息存儲介質(zhì),該信息存儲介質(zhì)包括在被電子計算機(jī)執(zhí)行時用于實施上述檢測或保護(hù)方法的指令。
[0024]最后,本發(fā)明的另一個主題是根據(jù)權(quán)利要求8的一種安全處理器。
[0025]該安全處理器的實施方案可以包括從屬權(quán)利要求的一個或更多個特征。
[0026]在通過閱讀僅以非限制性實例并參照附圖給出的以下描述后,會更好地理解本發(fā)明,其中:
[0027]-圖1是一種用于與安全處理器相關(guān)聯(lián)的加擾多媒體內(nèi)容的接收終端的示意圖,
[0028]-圖2是圖1中安全處理器的存儲器結(jié)構(gòu)的示意圖,
[0029]-圖3是將數(shù)據(jù)寫入到圖2中的存儲器中的階段的流程圖,
[0030]-圖4是一種用于保護(hù)圖1中的安全處理器的方法的流程圖;和,
[0031]-圖5是用于保護(hù)圖1中的安全處理器的方法的另一個實施方案的流程圖。
[0032]在這些圖中,相同的附圖標(biāo)記用來表示相同的要素。
[0033]在該描述的其余部分中,未詳細(xì)描述本領(lǐng)域技術(shù)人員熟知的特征和功能。此外,所使用的術(shù)語為用于多媒體內(nèi)容的條件接收系統(tǒng)的術(shù)語。對于關(guān)于該術(shù)語的更多信息,讀者可以參考以下文件:
[0034]“Functional Model of Conditional Access System”,EBU Review, TechnicalEuropean Broadcasting Union,布魯塞爾,BE,n° 266,21st,1995 年 12 月。
[0035]本發(fā)明特別適用于提供付費(fèi)多媒體內(nèi)容、例如付費(fèi)電視的接收控制的領(lǐng)域。[0036]同時播送幾個多媒體內(nèi)容是已知的。為此,每一多媒體內(nèi)容在其自己的頻道上播送。頻道通常對應(yīng)于電視頻道。
[0037]在本說明書中,“多媒體內(nèi)容”更具體地表示旨在以人類可直接感知和理解的方式還原的聲音內(nèi)容和/或視覺內(nèi)容。通常,多媒體內(nèi)容對應(yīng)于形成電影、電視節(jié)目或一些廣告的一系列圖像。多媒體內(nèi)容還可以是互動式內(nèi)容,例如游戲。
[0038]為了改善安全性并使多媒體內(nèi)容在一定條件下、例如訂購付費(fèi)會員資格時可視化,多媒體內(nèi)容以加擾形式和非明文形式播送。
[0039]更確切地說,每一多媒體內(nèi)容被分成一系列密碼周期。在密碼周期的整個持續(xù)期間,加擾的多媒體內(nèi)容的接收條件保持不變。特別地,在密碼周期的整個持續(xù)期間,多媒體內(nèi)容以相同的控制字加擾。通常,一個密碼周期與下一個密碼周期的控制字不同。
[0040]此外,控制字通常是特定于多媒體內(nèi)容的,下一個控制字隨機(jī)或偽隨機(jī)地產(chǎn)生。
[0041]此處,術(shù)語“加擾”和“加密”被認(rèn)為是同義詞。對于術(shù)語“解擾”和“解密”同樣如此。
[0042]明文形式的多媒體內(nèi)容對應(yīng)于加擾之前的多媒體內(nèi)容。因此,加擾之前的多媒體內(nèi)容對于人類是可以直接理解的,無需憑借解擾操作并且無需使其可視化受制于特定條件。
[0043]用于解擾多媒體內(nèi)容的必要控制字以同步方式與多媒體內(nèi)容傳輸。為此,例如,控制字與加擾多媒體內(nèi)容多路復(fù)用。
[0044]為了改善控制字傳輸?shù)陌踩?,控制字以包含在ECM (授權(quán)控制信息)中的密碼的形式傳輸至終端。此處,“密碼”表示憑借其本身不足以恢復(fù)明文控制字的信息項。因此,如果控制字的傳輸被截獲,僅知道控制字的密碼不能夠恢復(fù)使多媒體內(nèi)容能夠解擾的控制字。
[0045]為了恢復(fù)明文控制字,即、能夠直接解擾多媒體內(nèi)容的控制字,其必須結(jié)合秘密信息項。例如,控制字的密碼是通過利用密鑰加密明文控制字來獲得的。在這種情況下,秘密信息項是使得能夠解密密碼的密鑰??刂谱值拿艽a還可以是存儲在包含大量可能控制字的表格中的控制字的參照。在這種情況下,秘密信息項為使明文控制字與每一參照相關(guān)聯(lián)的表格。
[0046]秘密信息項必須保存在安全的地方。為此,已經(jīng)提出將秘密信息項存儲在直接與每個終端連接的安全處理器、例如智能卡中。
[0047]圖1描繪了旨在在這樣的條件接收控制系統(tǒng)中使用的終端8。終端8解擾頻道以使其在顯示器上以明文方式顯示。
[0048]終端8包含播送的多媒體內(nèi)容的接收器10。該接收器10連接到解復(fù)器12的輸入端,解復(fù)器12將多媒體內(nèi)容傳輸?shù)浇鈹_器14,并將ECM和EMM(授權(quán)管理信息)傳輸?shù)桨踩幚砥?6。
[0049]解擾器14基于由處理器16傳輸?shù)目刂谱謱⒓訑_的多媒體內(nèi)容解擾。解擾的多媒體內(nèi)容被傳輸?shù)綄ζ溥M(jìn)行解碼的解碼器18。解壓縮或解碼的多媒體內(nèi)容被傳輸?shù)津?qū)動該多媒體內(nèi)容在配備有屏幕24的顯示器22上顯示的顯卡20。顯示器22在屏幕24上以明文形式顯示多媒體內(nèi)容。例如,顯示器22為電視機(jī)、計算機(jī)或者固定電話或移動電話。此處,顯示器22為電視機(jī)。[0050]通常,終端8和處理器16之間的接口包括由接收控制模塊28管理的閱讀器26。此處,閱讀器26為智能卡閱讀器。模塊28特別地管理:
[0051 ]-解復(fù)用的ECM和EMM到處理器16的傳輸,和
[0052]-由處理器16解密的控制字的接收及其到解擾器14的傳輸。
[0053]處理器16處理機(jī)密信息,例如密鑰或多媒體內(nèi)容接收授權(quán)。為了保持該信息的機(jī)密性,其設(shè)計為對黑客進(jìn)行的攻擊嘗試盡可能地穩(wěn)健。因此,其針對這些攻擊比終端8的其它部件更為穩(wěn)健。特別地,處理器16包括的存儲器僅可被該處理器16訪問并使用。此處,處理器16為智能卡30的安全處理器。
[0054]處理器16特別地包括借助于信息傳輸總線34連接到易失性電子存儲器36和非易失性電子存儲器38的可編程電子計算機(jī)32。
[0055]存儲器36通常以縮寫RAM(隨機(jī)存取存儲器)為人所知。存儲器38即使在處理器16缺乏電力的情況下也保存存儲的數(shù)據(jù)。此外,存儲器38為可重寫存儲器。通常,其為EEPROM(電可擦可編程只讀存儲器)或閃存。存儲器38包含解擾多媒體內(nèi)容所需的機(jī)密信息。此處,其還包含用于執(zhí)行圖4和圖5中方法的必要指令。
[0056]圖2更詳細(xì)地描繪了存儲器38的各個區(qū)域。此處,存儲器38包括以下存儲區(qū)域:
[0057]-控制區(qū)域42,
[0058]-第一數(shù)據(jù)存儲區(qū)域44,和
[0059]-第二數(shù)據(jù)存儲區(qū)域46。
[0060]每個存儲區(qū)域由起始地址和結(jié)束地址來定義。此處,每個區(qū)域占據(jù)存儲器38中一系列連續(xù)的地址。每個區(qū)域被分成幾個存儲塊。例如,區(qū)域42、44和46各包含超過100或400個存儲塊。每個存儲塊的大小為幾個八位位組。此處,這些區(qū)域的存儲塊全部是同樣大小的。例如,該大小大于或等于64ο或128ο。區(qū)域44和46的大小相同。
[0061]區(qū)域44被分成P個同樣大小的存儲塊Blj,其中下標(biāo)j識別存儲塊Blj相對于區(qū)域44起始地址的起始位置。
[0062]區(qū)域46也被分成P個與塊Blj同樣大小的存儲塊B2j。下標(biāo)j識別存儲塊B2j相對于區(qū)域46的起始地址的起始位置。此處,為了簡化實施方案,塊B2j的起始和區(qū)域46的起始地址之間的偏移量與存在于塊Blj的起始和區(qū)域44的起始地址之間的偏移量相同。在這些條件下,塊Bu和B。被稱為“成對的”。
[0063]區(qū)域42包含2P個同樣大小的存儲塊CBijtl每個塊CBij與區(qū)域44或46的塊Bij相關(guān)聯(lián)。下標(biāo)i取值“ I ”來識別區(qū)域44,取值“ 2 ”來識別區(qū)域46。
[0064]此處,每個塊CBij特別地包含以下信息:
[0065]-關(guān)聯(lián)的塊Bu是否空閑,即其是否可以用來存儲新數(shù)據(jù)項的指示,
[0066]-在適用情況下,下一個與該塊Bu相連的存儲塊的指示,或者塊該Bu是一系列相連塊的最后一個塊的指不,
[0067]-檢錯碼CDij,
[0068]-覆蓋掩碼MRij,和,
[0069]-指示塊Bij是否有故障的標(biāo)記MDijt5
[0070]碼僅從包含在塊Bu的數(shù)據(jù)項的值中構(gòu)建。該碼將足夠的冗余添加到包含在塊Bu中的數(shù)據(jù)項,使其能夠檢測存儲在該塊中的數(shù)據(jù)項的值中的一個或更多個錯誤位。
[0071]例如,碼⑶u為以縮寫CRC更為人所知的循環(huán)冗余校驗。例如,碼OTij為CRC32。
[0072]覆蓋掩碼MRu為用來將待存儲于塊Bu中的數(shù)據(jù)項的值Du可逆地變換為存儲于該塊^中的變換值D’ 的值。該變換是可逆的,使得由掩碼MRu的值和變換值D’ 的值能夠獲取數(shù)據(jù)項的值Dijtl
[0073]標(biāo)記MDij使得能夠?qū)KBij是否有故障存儲。例如,有故障的塊Bij為包含其值不能再被重寫或修改的信息位的存儲塊,這導(dǎo)致在該存儲塊中的存儲值中出現(xiàn)錯誤。
[0074]區(qū)域42還包含糾錯碼CCQ、CC1和CC2。碼CCtl從區(qū)域44和46的內(nèi)容中構(gòu)建。碼CCtl將足夠的冗余添加到存儲在區(qū)域44和46的內(nèi)容,使其不僅能夠檢測而且能夠糾正存儲在所述區(qū)域44和46中的數(shù)據(jù)的一個或更多個錯誤位。類似地,碼CC1和CC2分別將足夠的冗余添加到區(qū)域44和46的內(nèi)容,使得能夠分別糾正在區(qū)域44和46中的k個錯誤位,其中,k是大于或等于I的自然整數(shù),優(yōu)選為大于或等于5或10。與碼CCtl相反,碼CC1和CC2僅能分別糾正區(qū)域44和46中的錯誤位。例如,這些糾錯碼為Reed Solomon碼。
[0075]圖3描繪了在存儲器38中存儲機(jī)密數(shù)據(jù)項的階段50。機(jī)密數(shù)據(jù)項通常是用于解密控制字或接收權(quán)利的授權(quán)或不授權(quán)接收和解擾多媒體內(nèi)容的密鑰。
[0076]如果數(shù)據(jù)項的大小大于存儲塊的大小,則數(shù)據(jù)項首先被分為幾個部分,每個大小都小于存儲塊的大小,這樣來達(dá)到數(shù)據(jù)項具有小于存儲塊的大小的情況。在這種情況下,相同數(shù)據(jù)項的各個部分例如通過在每個塊BCu中指出下一個存儲塊的地址鏈接到一起。
[0077]首先,在步驟52 中,計算機(jī)32從區(qū)域44和46的各個存儲塊中選擇一對滿足以下條件的存儲塊BCij:
[0078]-存儲塊Blj和B2j是成對的,
[0079]-存儲塊Blj和B2j是空閑的,和,
[0080]-存儲塊Blj和B2j未被標(biāo)記為有故障。
[0081 ] 計算機(jī)32基于包含在控制區(qū)域42的塊BClj和BC2j中的信息驗證選擇的塊Blj和B2j是空閑且無故障的。
[0082]在下文中,待存儲于塊Bu和B。中的數(shù)據(jù)項的值分別表示為Du和Dy這些值是相同的。
[0083]在步驟54中,計算機(jī)32計算碼OTlj和OT2j的新值,使得能夠分別檢測值Dlj和D2j中的錯誤。在該步驟54中,計算機(jī)32還計算糾錯碼CQ、CC1和CC2的新值,并將其存儲到區(qū)域42中。
[0084]碼OTlj和OT2j的新值分別存儲于塊BClj和BC2j中。
[0085]計算機(jī)32還在其塊BCu和中存儲指示,根據(jù)該指示存儲塊Bu和B。不再是空閑的。
[0086]然后,在步驟56中,值Dlj和D2j分別根據(jù)掩碼MRlj和MR2j的值分別變換為值D’ ^和D’2j。掩碼MRlj和MR2j的值包含在塊BClj和BC2j中。掩碼MRlj和MR2j的值是不同的,使得變換值D’ 和0’μ是不同的。
[0087]例如,利用以下關(guān)系進(jìn)行變換:D’ ,j = DuMRu,其中“”是異或運(yùn)算。
[0088]然后,在步驟58中,值D’ u和D’ 2J分別物理地存儲于存儲塊Blj和B2j中。然后階段50結(jié)束。[0089]在使用時,處理器16執(zhí)行例如用于解密控制字的程序。在執(zhí)行該程序時,指令需要讀取存儲在存儲器38中的數(shù)據(jù)項,例如密鑰或接收授權(quán)。于是執(zhí)行圖4中的方法。
[0090]首先,在步驟66中,將要讀取的存儲塊的地址存儲在非易失性讀取地址寄存器中。例如,該寄存器包含在存儲器38中。
[0091]然后是讀取存儲器38中的特定地址處的數(shù)據(jù)項的步驟68。更確切地說,在操作70中,讀取分別包含在成對存儲塊Bu和B2^中的值D’ u和D’ 2j。
[0092]然后,在操作72中,計算機(jī)32對圖3中方法的步驟56中被應(yīng)用的值應(yīng)用逆變換。為此,其使用掩碼MRu和MI^.的值。通過對值D’ u和D’ 2J應(yīng)用該逆變換獲得的值分別表示為值Du和Dy要注意的是,在存儲數(shù)據(jù)讀取錯誤或損壞的情況下,值Du和&不一定與在寫入階段50中存儲的值Dlj和D2j相同。
[0093]在步驟74中,比較讀取值DulP D2^如果這些值相等,則接下來是步驟76,在該步驟期間,通過處理器16執(zhí)行的程序?qū)χ礑lj進(jìn)行處理并繼續(xù)其正常執(zhí)行。例如,計算機(jī)32利用值Du解密控制字。在步驟76中,未檢測到讀取錯誤。此外,在步驟76中,讀取地址寄存器被擦除。
[0094]相反地,如果讀取值Dlj和D2j不相同,則正在執(zhí)行的程序被中斷,由計算機(jī)32執(zhí)行驗證例程。例如,重啟安全處理器,在安全處理器重啟期間,如果讀取地址寄存器不是空的,則系統(tǒng)地執(zhí)行驗證例程。在程序執(zhí)行中有錯誤的情況下驗證例程還可以通過重新路由來啟動。
[0095]一旦啟動該驗證例程,在步驟78中,計算機(jī)32繼續(xù)進(jìn)行讀取存儲在存儲器38中的數(shù)據(jù)項的新嘗試。新的讀取嘗試在于讀取與存儲在讀取地址寄存器中的地址對應(yīng)的數(shù)據(jù)項。例如,步驟78與步驟68相同。
[0096]然后,在步驟80中,計算機(jī)繼續(xù)進(jìn)行在步驟78中讀取的新值DuIP D2^的新比較。
[0097]如果這回值01.和0^是相同的,則在步驟82中,檢測到讀取錯誤。實際上,在步驟68中讀取的值Dlj和D2j之間的不同并不起源于存儲在存儲器38中的數(shù)據(jù)的損壞。事實上,在安全處理器的情況下,檢測到讀取錯誤表明有非常高的可能性步驟68中的第一讀取嘗試已經(jīng)由于讀取攻擊而失敗。
[0098]因此,作為響應(yīng),在步驟84中,計算機(jī)32觸發(fā)限制將多媒體內(nèi)容解擾的對策。此處,利用處理器16來暫時地或永久地阻止多媒體內(nèi)容的解擾。為此通常禁止控制字的解
LU O
[0099]更確切地說,對策可以是以下對策中的一種:
[0100]-擦除包含在存儲器38中的機(jī)密數(shù)據(jù),例如密鑰和接收授權(quán),
[0101]-觸發(fā)處理器16的自毀以致使其永久地?zé)o法使用,和
[0102]-暫時地或永久地停止控制字的解密。
[0103]在步驟84中,如果盡管實施了對策而處理器16仍然可用,則擦除讀取地址寄存器。
[0104]如果在步驟78中讀取的值D u和D2^是不同的,則這意味著存儲的數(shù)據(jù)必定是損壞的。因此,這不是讀取錯誤。
[0105]在這種情況下,在步驟86中,計算機(jī)32利用碼CTlj驗證值Dlj是否是錯誤的。
[0106]如果值Dlj不是錯誤的,則接下來是在區(qū)域44和46的新的成對存儲塊中存儲值Dlj的步驟88。例如,步驟88以與寫入階段50相似的方式執(zhí)行。因此,正是存儲在這些新塊中的值會在相同數(shù)據(jù)項的下一次讀取期間使用。
[0107]然后,在步驟90中,標(biāo)記MDlj和MD2j被更新以指示之前的塊Blj和B2j是有故障的并存儲在存儲器中。此處,塊Blj表示為有故障的,而其中已經(jīng)存儲的值是正確的。這使得能夠繼續(xù)以簡單的方式管理存儲塊的配對。
[0108]在步驟90中,還擦除讀取地址寄存器。然后,值Dlj由通過步驟76繼續(xù)其執(zhí)行的程序處理。
[0109]如果在步驟86中值Dlj是錯誤的,則接下來是利用碼OT2j來驗證值D2j正確還是錯誤的步驟92。
[0110]如果數(shù)據(jù)項D2j是正確的,則接下來是與步驟88相同的步驟94,除了用值D2j代替值Dljtl步驟94的接下來也是步驟90。
[0111]如果值Du和Du是錯誤的,則計算機(jī)繼續(xù)進(jìn)行步驟98,在該步驟期間,利用碼CCtl執(zhí)行糾正這些值的第一嘗試。該步驟98使得計算機(jī)32能夠糾正分布在區(qū)域44和46中的k個錯誤位。如果有比k少的錯誤位,則認(rèn)為糾正已經(jīng)成功。在這種情況下,分別得到值Dlj和D2j的糾正值DdjP Dm。
[0112]在這種情 況下,在步驟100中,計算機(jī)32比較值Delj和Dc^。
[0113]如果值Delj和De2j相同,則在步驟102中,值Delj分別存儲在區(qū)域44和46的兩個新存儲塊中。例如,該步驟與步驟88相同,除了使用值Dm代替值Dlj。
[0114]然后是步驟104,在該步驟期間,塊Blj和B2j被標(biāo)記為有故障的。例如,該步驟104與步驟90相同。然后本方法返回步驟76。
[0115]如果值Delj和De2j是不同的或如果利用碼CCtl的錯誤糾正未成功,則計算機(jī)32繼續(xù)進(jìn)行步驟108,在該步驟期間,計算機(jī)設(shè)法利用碼CC1糾正區(qū)域44的數(shù)據(jù)。如果糾正是成功的,則計算機(jī)32獲得值Dlj的糾正值Delj。然后是與步驟102相同的步驟110。步驟110之后為步驟104。
[0116]如果步驟108是不成功的且未使得能夠糾正值Du,則計算機(jī)執(zhí)行步驟112,在該步驟期間,計算機(jī)嘗試?yán)么aCC2糾正值Dy如果該步驟112成功了,則計算機(jī)32獲得糾正值D&。然后是與步驟94相同的步驟114,除了用值Dc^來代替值D2^步驟114之后是步驟 104。
[0117]如果已經(jīng)不可能糾正值Dlj或值D2j,則在步驟116中,由于數(shù)據(jù)項是錯誤的且不能被糾正,計算機(jī)32確定數(shù)據(jù)項丟失。在該步驟116中,計算機(jī)32將存儲塊Bu和B。標(biāo)記為有故障的。相對于步驟90執(zhí)行該操作。然后,不管程序是否能夠管理數(shù)據(jù)項的值的缺失,在這種情況下都繼續(xù)程序的執(zhí)行。如果程序的執(zhí)行不能在沒有數(shù)據(jù)項的值的情況下繼續(xù),則停止程序的執(zhí)行,并且例如重啟安全處理器。
[0118]圖5描繪了一種與圖4中的方法相同的用于保護(hù)處理器16的方法,除了沒有使用糾錯碼。因此,在該方法中省略步驟98到114。此外,在值Du和&都被檢測為有錯誤的情況下,直接繼續(xù)進(jìn)行步驟116。
[0119]許多其它實施方案也是可能的。例如,可以省略存儲值的變換操作。在這種情況下,省略步驟56和72。
[0120]存儲器的分配可以是存儲器的邏輯或物理分配。[0121]用于檢測值Dlj中錯誤的算法可以與用于檢測值D2j中錯誤的算法不同。在這種情況下,碼CDlj和CD2j的值不同。
[0122]在一個變化方案中,還在利用糾錯碼糾正存儲值之后使用檢錯碼。這使得能夠在有需要時驗證糾正值是正確的。
[0123]在另一個變化方案中,省略碼CCtl,或相反地,省略碼CC1和CC2,或者不使用糾錯碼。
[0124]在另一個變化方案中,糾錯碼僅用于單個存儲區(qū)域。 [0125]糾錯碼不一定是整個存儲區(qū)域共用的。在一個變化方案中,糾錯碼被構(gòu)建為用于存儲區(qū)域的幾個塊的有限組。糾錯碼也可以被構(gòu)建為用于每個存儲塊和僅用于該存儲塊。在這種情況下,優(yōu)選糾錯碼替代檢錯碼。實際上,幾乎所有的糾錯碼也都允許錯誤的檢測。
[0126]糾錯碼也可以是值Dlj和D2j共用的。
[0127]糾錯碼也可以根據(jù)其它算法、例如Hamming算法或Turbo碼來構(gòu)建。
[0128]當(dāng)存儲塊Bu被檢測為有故障的,與其配對的存儲塊B。不必也被系統(tǒng)地標(biāo)記為也是有故障的。在一個變化方案中,只有在與塊B。相關(guān)聯(lián)的碼CD。確認(rèn)其包含的數(shù)據(jù)項也錯誤時,該塊才被標(biāo)記為有故障的。在相反的情況下,表格使每個塊B。的地址與每個塊Blj的地址相關(guān)聯(lián)。在這種情況下,修改該表格以使在塊B2j的地址處與使用來代替之前的塊Bu的新塊B’ U相關(guān)聯(lián)。
[0129]控制區(qū)域42可以存儲在區(qū)域44的塊中。在這些條件下,如同該區(qū)域44的所有塊,其在區(qū)域46中被復(fù)制。因此,這使得能夠以與所述區(qū)域44和46的任何其它塊相同的方式保護(hù)控制區(qū)域免受數(shù)據(jù)損壞或讀取錯誤。
[0130]值Dij到值D’ u的變換可以省略或僅對區(qū)域44或46之一實施。
[0131]此處描述的特定操作或步驟的順序可以修改。例如,檢錯碼的計算在值Du到變換值D’ u的變換之后執(zhí)行。在這種情況下,在讀取期間,讀取的數(shù)據(jù)項是正確或錯誤的驗證基于值D’ ^而不是值0〃來進(jìn)行。
[0132]在一個變化方案中,在更新故障塊的標(biāo)記MDij之前,計算機(jī)驗證塊Bij確實是故障的。例如,其執(zhí)行以下操作:
[0133]α)在關(guān)注的塊Bij中寫入值Dij,然后,
[0134]β )讀取存儲在該塊Bij中的值Dij,
[0135]X)比較寫入值和讀取值,然后,
[0136]δ )如果這些值相等,則重復(fù)操作a)至c)至少N次。否則,更新標(biāo)記MDij來指示塊Bu是有故障的。
[0137]通常,數(shù)量N大于2,優(yōu)選大于10。
[0138]如果上述操作a)至d)經(jīng)常實施用于同一個塊Bij,但是上述驗證每次都得到塊Bij仍為有用的,則可以將特定值分配到標(biāo)記MDij,指出該塊Bij不是非常安全。在這些條件下,于是盡可能地不選擇塊Bu用于存儲新數(shù)據(jù)。另一方面,如果不再有任何其它更安全的有效存儲塊,則塊Bu會用于存儲數(shù)據(jù)項。
[0139]此處描述的每個存儲器都可以以單電子元件或彼此獨立地連接到計算機(jī)32的幾個電子元件的結(jié)合的形式制造。例如,區(qū)域44和46可以對應(yīng)于兩個物理分離的存儲器,每個存儲器都通過其自己的讀取總線連接到計算機(jī)32。[0140]可以實施超過兩個的冗余存儲器。在這種情況下,在這些存儲區(qū)域的每一個中復(fù)制在該存儲器中復(fù)制的數(shù)據(jù)項的值。上述方法可以容易地適合于W個存儲區(qū)域的情況,其中W為嚴(yán)格大于2的整數(shù)。
[0141]上述描述的主題也適用于非易失性存儲器。
【權(quán)利要求】
1.一種用于檢測數(shù)據(jù)項讀取中的錯誤的方法,所述方法包括: a)在電子存儲器的第一區(qū)域中存儲(50)所述數(shù)據(jù)項的第一副本,和在電子存儲器的第二區(qū)域中存儲所述數(shù)據(jù)項的第二副本, 響應(yīng)于讀取所述數(shù)據(jù)項的請求: b)分別讀取(68)在所述第一區(qū)域中的所述數(shù)據(jù)項的第一副本的值和在所述第二區(qū)域中的所述數(shù)據(jù)項的第二副本的值, c)比較(74)所述數(shù)據(jù)項的第一副本和第二副本的讀取值, d)如果所述第一副本和第二副本的讀取值相同,則所述數(shù)據(jù)項讀取中未檢測到錯誤, 其特征在于: e)如果所述第一副本和第二副本的讀取值不同,則重復(fù)(78、80)上述步驟b)和C),然后, f)如果步驟e)中的所述讀取值相同,則檢測到(82)所述數(shù)據(jù)項的讀取中的錯誤,否則,所述數(shù)據(jù)項讀取中未檢測到錯誤。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述方法包括: -使檢錯碼與所述數(shù)據(jù)項的第一副本的值相關(guān)聯(lián)(54),所述檢錯碼向所述數(shù)據(jù)項添加冗余并使得能夠檢測所述數(shù)據(jù)項的值中的錯誤, -如果在步驟f)中,所述第一副本和第二副本的讀取值不同,則所述方法包括利用與所述值相關(guān)聯(lián)的所述檢錯碼來驗證(86)所述第一副本的讀取值是錯誤的還是相反地為正確的,和 -如果所述第一副本的讀取值是正確的,則在與發(fā)現(xiàn)所述數(shù)據(jù)項的之前的第二副本的存儲塊不同的第二存儲區(qū)域的存儲塊中存儲(88)所述第一副本的值,以便形成所述數(shù)據(jù)項的新的第二副本,然后, -在步驟b)和c)的所有新的迭代中,使用所述數(shù)據(jù)項的新的第二副本代替之前的第二副本。
3.根據(jù)前述權(quán)利要求之一所述的方法,其中,所述方法包括: -使檢錯碼與所述數(shù)據(jù)項的第一副本和第二副本相關(guān)聯(lián)(54),所述檢錯碼向所述第一副本和第二副本的值添加足夠的冗余以使得能夠糾正所述數(shù)據(jù)項的這些副本中每一個的值中的一個或更多個錯誤位, -如果在步驟f)中,所述第一副本和第二副本的讀取值不同,則所述方法包括: ?利用糾錯碼糾正(98)所述數(shù)據(jù)項的第一副本和第二副本的值來獲得所述第一副本和第二副本的糾正值,然后, ?比較(100)所述第一副本和第二副本的糾正值,和, ?如果糾正值相同,則在與其中發(fā)現(xiàn)所述數(shù)據(jù)項的之前的第一副本和第二副本的存儲塊不同的分別來自第一存儲區(qū)域和第二存儲區(qū)域的新的存儲塊中存儲(102)所述數(shù)據(jù)項第一副本的糾正值,以便形成所述數(shù)據(jù)項的新的第一副本和第二副本,然后, 在步驟b)和c)的所有新的迭代中,使用所述新的第一副本和第二副本代替之前的第一副本和第二副本。
4.根據(jù)權(quán)利要求3或4所述的方法,其中,對于其中發(fā)現(xiàn)所述數(shù)據(jù)項的之前的副本的每個存儲塊,所述方法包括:-將所述存儲塊存儲(90、104、116)為有故障的,和, -當(dāng)在用于存儲信息項的存儲區(qū)域之一中分配新的存儲塊時,僅從該區(qū)域的未存儲為有故障的存儲塊中選擇(52)該存儲塊。
5.根據(jù)前述權(quán)利要求中任一項所述的方法,其中, -當(dāng)存儲所述數(shù)據(jù)項的第一副本時,首先利用可逆掩碼函數(shù)對所述數(shù)據(jù)項的值進(jìn)行變換(56)來獲得與非變換值不同且與所述第二副本的存儲值不同的變換值,然后,在第一區(qū)域中存儲的正是該變換值,和, -當(dāng)讀取所述第一副本時,對存儲的變換值實施逆變換(72)來獲得第一副本的讀取值。
6.一種用于保護(hù)安全處理器免受讀取攻擊的方法,所述安全處理器利用存儲在所述安全處理器的第一存儲區(qū)域和第二存儲區(qū)域中的機(jī)密數(shù)據(jù)項來執(zhí)行(76)加密或解密信息項的例程,其特征在于: -所述安全處理器通過實施根據(jù)前述權(quán)利要求中任一項所述的方法來檢測(82)所述機(jī)密數(shù)據(jù)項讀取中的錯誤, -如果未檢測到所述機(jī)密數(shù)據(jù)項讀取中的錯誤,則所述安全處理器繼續(xù)利用讀取的機(jī)密數(shù)據(jù)項來加密或解密(76)所述信息項,否則, -相對于未檢測到所述機(jī)密數(shù)據(jù)項讀取中的錯誤的情況,響應(yīng)于檢測到讀取錯誤,所述安全處理器自動觸發(fā)(86)限制利用所述讀取的機(jī)密數(shù)據(jù)項來加密或解密所述信息項的對策。
7.一種信息存儲介質(zhì)(38),其特征在于,所述信息存儲介質(zhì)包括在被電子計算機(jī)執(zhí)行時用于實施根據(jù)前述權(quán)利要求中任一項所述的方法的指令。
8.一種安全處理器,包括: -電子存儲器的第一(44)區(qū)域和第二(46)區(qū)域, -電子計算機(jī)(32),其編程為: a)在所述第一區(qū)域中存儲數(shù)據(jù)項的第一副本,和在所述第二區(qū)域中存儲所述數(shù)據(jù)項的第二副本, 響應(yīng)于讀取所述數(shù)據(jù)項的請求: b)分別讀取在所述第一區(qū)域中的所述數(shù)據(jù)項的第一副本的值和在所述第二區(qū)域中的所述數(shù)據(jù)項的第二副本的值, c)比較所述數(shù)據(jù)項的第一副本和第二副本的讀取值,和, d)如果所述第一副本和第二副本的讀取值相同,則所述數(shù)據(jù)項讀取中未檢測到錯誤。 其特征在于,所述電子計算機(jī)還編程為: e)如果所述第一副本和第二副本的讀取值不同,則重復(fù)上述步驟b)和C),然后, f)如果在步驟e)中的所述讀取值相同,則檢測到所述數(shù)據(jù)項讀取中的錯誤,否則,表示無讀取錯誤。
9.根據(jù)權(quán)利要求8所述的安全處理器,其中,所述安全處理器為智能卡(30)的安全處理器。
10.根據(jù)權(quán)利要求8和9之一所述的處理器,其中,已知為第一存儲器的電子存儲器(38)為非易失性存儲器,所述安全處理器包括第二易失性存儲器(36),其中,在所述第一`存儲器(38)中讀取的數(shù)據(jù)被系統(tǒng)地復(fù)制以便由所述電子計算機(jī)(32)處理。
【文檔編號】G06F11/16GK103959250SQ201280059140
【公開日】2014年7月30日 申請日期:2012年11月29日 優(yōu)先權(quán)日:2011年12月1日
【發(fā)明者】伊曼紐爾·巴羅, 帕特里克·索凱 申請人:維亞塞斯公司