欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

應(yīng)用塊鏈接和塊重新排序的帶有外部存儲(chǔ)器的安全處理器的制作方法

文檔序號(hào):6414603閱讀:249來源:國知局
專利名稱:應(yīng)用塊鏈接和塊重新排序的帶有外部存儲(chǔ)器的安全處理器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于在一安全電路和一外部存儲(chǔ)設(shè)備之間有效并安全地傳輸程序信息塊的裝置。為了獲得更牢靠的加密、執(zhí)行迷惑并減少額外的鑒別數(shù)據(jù),將程序信息以塊鏈形式進(jìn)行傳輸。
在一個(gè)實(shí)施例中,程序信息以密碼塊鏈形式被加密并可選地進(jìn)行鑒別。
在另一個(gè)實(shí)施例中,程序信息以塊鏈形式被鑒別并可選地被加密。塊鏈極大地減少了額外的鑒別數(shù)據(jù)??梢詰?yīng)用地址加密來增加安全性。
還可以應(yīng)用對(duì)每個(gè)鏈中以及在全部鏈接中的諸如塊或字節(jié)的字段的重新排序來提供進(jìn)一步的安全性。
在另一個(gè)實(shí)施例中,向安全電路提供多個(gè)程序信息塊以產(chǎn)生一個(gè)密鑰。該密鑰可用于對(duì)數(shù)據(jù)傳輸進(jìn)行解密。
本發(fā)明尤其適用于防止對(duì)專有軟件算法的復(fù)制和逆向工程(reverseengineering),以及保證加密應(yīng)用例如付費(fèi)電視節(jié)目等的解擾的安全性。
現(xiàn)提供如下定義安全電路安全電路是一個(gè)加密集成電路(IC),其中,甚至包括所有者的任何人都不能訪問包含在該IC中的內(nèi)部總線、寄存器和其他電路。IC可以保存敏感密鑰、標(biāo)識(shí)和其他數(shù)據(jù),但安全電路不必一定局限于為IC。例如,它可以是在網(wǎng)絡(luò)計(jì)算機(jī)中的執(zhí)行一個(gè)來自通過網(wǎng)絡(luò)訪問的共享存儲(chǔ)設(shè)備的程序的個(gè)人計(jì)算機(jī)(PC)。網(wǎng)絡(luò)計(jì)算機(jī)可以通過訪問一個(gè)服務(wù)器來實(shí)時(shí)地運(yùn)行應(yīng)用程序。將應(yīng)用程序的各個(gè)部分逐步地傳送給網(wǎng)絡(luò)計(jì)算機(jī)。網(wǎng)絡(luò)可允許多個(gè)計(jì)算機(jī)同時(shí)訪問相同的應(yīng)用程序。所有者應(yīng)用一個(gè)PC可以訪問接收到的已解密和/或已鑒別和/或重新排序的程序信息。此外,安全電路可以處理未加密但鑒別過的數(shù)據(jù)。
存儲(chǔ)設(shè)備存儲(chǔ)設(shè)備是各種類型的一分立存儲(chǔ)器件,例如一個(gè)IC。但是,在如上所述的PC例子中,存儲(chǔ)設(shè)備可以是一個(gè)大容量存儲(chǔ)設(shè)備,例如位于本地或遠(yuǎn)端的硬盤驅(qū)動(dòng)器。如果是位于遠(yuǎn)端的,則數(shù)據(jù)可以通過一個(gè)類似Ethernet的網(wǎng)絡(luò)或者例如根據(jù)IEEE1394標(biāo)準(zhǔn)在該存儲(chǔ)設(shè)備和安全電路之間傳輸。對(duì)大容量存儲(chǔ)設(shè)備的本地訪問例如可以通過PC的ISA、VESA或PCI數(shù)據(jù)總線進(jìn)行,或者甚至可以通過一個(gè)SCSI、串行或并行接口進(jìn)行。大容量存儲(chǔ)設(shè)備可以由其他的網(wǎng)絡(luò)計(jì)算機(jī)或安全電路來訪問。該存儲(chǔ)設(shè)備也可以是Jazz(TM)驅(qū)動(dòng)器、磁帶、CD-ROM、DVD、個(gè)人計(jì)算機(jī)存儲(chǔ)卡接口適配器(PCMCIA)、智能卡或任何其他類型的大容量存儲(chǔ)設(shè)備。
例如,在網(wǎng)絡(luò)計(jì)算機(jī)的情況下,有可能通過網(wǎng)絡(luò)來訪問只讀的程序信息。為了外部存儲(chǔ)安全的目的,可以應(yīng)用允許讀/寫能力的本地存儲(chǔ)設(shè)備,例如存儲(chǔ)器。因此,存儲(chǔ)設(shè)備可以是這些設(shè)備類型的任意組合。并且,在網(wǎng)絡(luò)存儲(chǔ)設(shè)備的情況下,程序信息可以被逐步地復(fù)制到一個(gè)更快的本地存儲(chǔ)器,該本地存儲(chǔ)器可以是同步動(dòng)態(tài)存儲(chǔ)器。
程序信息程序信息一般是指在一程序執(zhí)行中由安全電路使用的任何信息。這可以包括指令,例如在機(jī)器碼中的操作代碼(op-codes),或者包括偽碼或解釋碼,例如Java(TM)。程序信息還可以包括查找表、存儲(chǔ)的密鑰和各種臨時(shí)數(shù)據(jù),例如中間計(jì)算值和安全電路的狀態(tài)。
程序信息甚至還可以包括一些或所有的用于加密/解密或驗(yàn)證/鑒別在塊鏈中的剩下的程序信息的初始化向量和密鑰。這可以允許在不同的密鑰下加密相同的向量和密鑰信息,以使得不同的安全電路可以單個(gè)地或作為選定組訪問相同的程序信息,并具有導(dǎo)出的或被傳送的不同的密鑰。
該信息可以包括與如何將塊中的字節(jié)、鏈中的塊以及鏈存儲(chǔ)在存儲(chǔ)設(shè)備中的性質(zhì)有關(guān)的密鑰信息和數(shù)據(jù)。這可以包括一個(gè)鏈或鏈序列中的各種字段的順序置換信息,這在后面將詳細(xì)說明。
散列散列并不是嚴(yán)格地意味著一個(gè)單向函數(shù)。雖然一個(gè)嚴(yán)格的單向函數(shù)是一種可能性,該函數(shù)在一個(gè)保密密鑰下也可以是可逆的,或者是一個(gè)捕獲門(trap-door)單向函數(shù),或者是一個(gè)非常簡單的函數(shù),例如XOR操作。
數(shù)據(jù)傳輸和加密處理數(shù)據(jù)傳輸用于各種類型的文本、消息、視頻和音頻信號(hào)。這些包括通過通信信道的來自廣播和交互電視和無線電、節(jié)目預(yù)告、新聞服務(wù)以及交互消息通訊的文本、消息、視頻和音頻,但并不僅限于這些。加擾的數(shù)據(jù)傳輸可以以各種方式發(fā)送,例如通過廣播、衛(wèi)星、電纜、電話或其他通信線路,或者通過一個(gè)可移動(dòng)的大容量存儲(chǔ)介質(zhì),例如數(shù)字視頻磁盤、磁帶、激光磁盤(CD)、軟盤或其他安全電路,并且由一個(gè)解擾接收機(jī)接收,例如解碼器,諸如在消費(fèi)者家中的機(jī)頂盒、播放機(jī)或個(gè)人計(jì)算機(jī)。
數(shù)據(jù)傳輸可以僅僅是對(duì)一個(gè)口令(challenge)的響應(yīng)。該口令使得安全電路用某種類型的加密處理來變換口令信息,以產(chǎn)生一個(gè)驗(yàn)證安全電路確實(shí)保存了某些保密或?qū)S妹荑€的輸出。
在安全電路中的內(nèi)部寄存器可以增加或減少??梢耘c保密或?qū)S妹荑€一起計(jì)算這些值,以計(jì)算出要輸出的值。這種口令和響應(yīng)技術(shù)一般可以用于在給予一個(gè)服務(wù)之前鑒別有效安全電路的存在。
加密處理這是由一個(gè)安全電路執(zhí)行的處理,其結(jié)果一般是產(chǎn)生一個(gè)密鑰。該密鑰然后可以用在很多方面對(duì)數(shù)據(jù)傳輸進(jìn)行加擾和解擾,由客戶或主機(jī)進(jìn)行身份驗(yàn)證,等等。該密鑰不必總是保存在安全電路中。例如,可以將其從安全電路發(fā)送出去以用于驗(yàn)證。
現(xiàn)在提出在現(xiàn)有技術(shù)方案中存在的各種問題。
問題各種專有算法可以被竊取以很大的代價(jià)辛苦開發(fā)出來的軟件可以輕易地從外部存儲(chǔ)設(shè)備上復(fù)制出來。由于開放的網(wǎng)絡(luò)例如因特網(wǎng)允許被侵權(quán)的代碼迅速而廣泛地分布,這個(gè)問題更加嚴(yán)重。
隨著通用處理器芯片的速度的提高,有一種將許多以前在硬件上完成的處理任務(wù)在軟件上執(zhí)行的趨勢(shì)。軟件通過使用分立的存儲(chǔ)元件和/或包括大容量存儲(chǔ)設(shè)備的存儲(chǔ)設(shè)備來傳輸。通過僅僅執(zhí)行不同的軟件,可以便于為不同的應(yīng)用程序快速重構(gòu)處理系統(tǒng)。但這種趨勢(shì)被這樣一個(gè)事實(shí)所阻礙,即由于軟件可以容易地復(fù)制、分解、逆向工程、并且接著被散布,從而剝奪了開發(fā)者和/或發(fā)明者對(duì)于該知識(shí)產(chǎn)權(quán)的利益。
并且,隨著網(wǎng)絡(luò)的速度和可靠性的提高,例如Ethernet從10兆比特每秒提高到100兆比特每秒,等等,可以實(shí)現(xiàn)在網(wǎng)絡(luò)上實(shí)施系統(tǒng),其中軟件可以實(shí)時(shí)地執(zhí)行。這種所謂的網(wǎng)絡(luò)計(jì)算機(jī)將總能訪問一個(gè)裝在一個(gè)基于網(wǎng)絡(luò)的服務(wù)器上的應(yīng)用程序的最新修訂版。在這個(gè)服務(wù)器的檔案中的任何應(yīng)用程序都能夠很快地被訪問。但這種服務(wù)器容許某些人下載和存儲(chǔ)整個(gè)應(yīng)用程序,從而剝奪了服務(wù)提供者現(xiàn)在的收入。軟件一旦被下載,就會(huì)很容易地與其他人共享。
因此,需要使軟件分析和逆向工程、以及由通用處理器進(jìn)行軟件復(fù)制和再應(yīng)用變得更加困難。
問題加密密鑰發(fā)生器加密應(yīng)用程序一般涉及基于保密或?qū)S妹荑€信息的密鑰的產(chǎn)生/導(dǎo)出。
典型的加密密鑰發(fā)生器在數(shù)據(jù)傳輸上執(zhí)行加密處理。由于需要阻止未授權(quán)的人(例如侵權(quán)者)獲得對(duì)數(shù)據(jù)傳輸?shù)脑L問,因此對(duì)數(shù)據(jù)傳輸進(jìn)行加擾變得越來越重要。無論數(shù)據(jù)是如何被發(fā)送或傳送的,加密處理的出現(xiàn)就是為了確保數(shù)據(jù)的提供者、例如加擾發(fā)送者從他們發(fā)送的知識(shí)產(chǎn)權(quán)中獲得報(bào)酬。在通信網(wǎng)絡(luò)的情況下,可以對(duì)消息加擾以確保該消息的保密,并且鑒別發(fā)送者和接收者。它可以為不可否認(rèn)(non-repudiation)創(chuàng)造條件,以防止接收者后來宣稱他們未要求該數(shù)據(jù)。不可否認(rèn)對(duì)于提供者是非常重要的,因?yàn)樗麄儗?duì)于獲得報(bào)酬有較高的期望。其他任何人都不象誠意購買者一樣具有鑒別消息所必須的加密密鑰。在一個(gè)或多個(gè)保密加擾密鑰下進(jìn)行傳輸之前,數(shù)據(jù)傳輸被加密處理,例如被加擾。經(jīng)加密處理的數(shù)據(jù)傳輸由一個(gè)加密解處理器(解擾接收機(jī))接收,例如消費(fèi)者家中的機(jī)頂盒、媒體播放機(jī)或個(gè)人計(jì)算機(jī)。
諸如由一個(gè)解擾接收機(jī)完成的加密處理一般在一個(gè)安全電路中完成。該安全電路在制造或應(yīng)用程序的安裝和初始化時(shí)裝有所需的密鑰,并且執(zhí)行一種授權(quán)訪問數(shù)據(jù)傳輸?shù)奶幚?。如果訪問被允許,則導(dǎo)出解密密鑰。當(dāng)與有關(guān)硬件或軟件解密模塊一起使用該解密密鑰時(shí),數(shù)據(jù)傳輸被解擾,例如,變得可觀看或其他適合于用戶的方式。
解擾硬件或軟件可以包括在安全電路、例如一個(gè)專用IC(ASIC)中。
同樣,對(duì)諸如信用卡號(hào)等信息進(jìn)行加擾以便通過因特網(wǎng)傳送給貿(mào)易商的加擾發(fā)送者,例如某些人家中的PC,使用在制造或應(yīng)用程序安裝和初始化時(shí)加載上的所需密鑰來導(dǎo)出對(duì)要發(fā)送的敏感數(shù)據(jù)進(jìn)行加擾的密鑰。
在PC實(shí)例中,加擾可以在一個(gè)軟件模塊中完成,但加擾實(shí)際上并不能取代所說的安全電路。在任何一種情況下(加擾或解擾)導(dǎo)出的密鑰可以從安全電路輸出到硬件或軟件加擾/解擾模塊,或者在安全電路內(nèi)部帶有解密模塊時(shí)將密鑰保存在安全電路的內(nèi)部。密鑰最好保存在安全電路內(nèi)部并且在安全電路內(nèi)部執(zhí)行加擾/解擾。
如果將密鑰從安全電路輸出,該密鑰會(huì)非常迅速的變化,甚至一秒鐘內(nèi)幾次,從而使得只能在非常短的時(shí)間內(nèi)應(yīng)用其內(nèi)容。硬件加擾/解擾硬件或軟件模塊可以位于離導(dǎo)出用于對(duì)數(shù)據(jù)傳輸進(jìn)行加擾/解擾的密鑰的安全電路較遠(yuǎn)的地方。
對(duì)于一個(gè)通過網(wǎng)絡(luò)執(zhí)行指令的PC,安全電路可以是PC本身,解擾單元可以僅僅是一個(gè)軟件模塊,該軟件模塊與合適的密鑰和加密函數(shù)識(shí)別符一起接收例如在內(nèi)部或外部存儲(chǔ)器中的一條消息的長度和指針。
由安全電路中的加密處理執(zhí)行的函數(shù)應(yīng)用公知的散列算法和公用密鑰加密法來進(jìn)行消息散列、符號(hào)化以及簽名鑒別。
在上述的ASIC和PC兩種情況下,一般都采用一個(gè)微處理器來實(shí)施訪問控制、執(zhí)行散列、簽名驗(yàn)證、符號(hào)化和鑒別功能。該處理驗(yàn)證安全電路確實(shí)被授權(quán)對(duì)數(shù)據(jù)傳輸進(jìn)行解密。如果已授權(quán),則微處理器為數(shù)據(jù)傳輸導(dǎo)出解擾密鑰。安全電路一般具有一個(gè)內(nèi)部存儲(chǔ)設(shè)備,例如用于存儲(chǔ)由微處理器使用的解擾程序信息的存儲(chǔ)器,用于存儲(chǔ)解擾密鑰數(shù)據(jù)和解碼器狀態(tài)的存儲(chǔ)器,以及用于存儲(chǔ)中間計(jì)算值和臨時(shí)數(shù)據(jù)的暫存器。解擾接收機(jī)、例如解碼器的狀態(tài)可以指示解碼器是否被調(diào)諧到一特定頻道和頻道識(shí)別符。解擾接收機(jī)的狀態(tài)還可以存儲(chǔ)其是否被授權(quán)接收該頻道,以及調(diào)諧到的節(jié)目是預(yù)定的、按觀看次數(shù)收費(fèi)的還是請(qǐng)求式觀看的。
因此希望使侵權(quán)者對(duì)于帶有外部存儲(chǔ)器的加密密鑰發(fā)生器執(zhí)行的攻擊變得更加困難。
問題使用內(nèi)部ROM和RAM容量方案的不靈活性對(duì)于一個(gè)ASIC,由IC用來存儲(chǔ)程序信息的內(nèi)部存儲(chǔ)器可以產(chǎn)生于只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、閃速存儲(chǔ)器或帶有后備電池的隨機(jī)存取存儲(chǔ)器。一般地,用于制造具有最小幾何形狀和最快電路的ASIC的制造工藝最初是為基于ROM和RAM的技術(shù)開發(fā)和表征的。EEPROM和閃速能力在后來才出現(xiàn)。因此,通過使用基于ROM和RAM的技術(shù)來設(shè)計(jì)ASIC,可以獲得優(yōu)于其他技術(shù)的性能。而且,對(duì)于VLSI鑄造,由于帶有ROM和RAM的設(shè)備的設(shè)計(jì)更簡單,所以制造這種設(shè)備比制造帶有EEPROM和閃速的設(shè)備更容易。因此,以基于ROM和RAM的設(shè)計(jì),設(shè)計(jì)者可以實(shí)現(xiàn)較低的制造成本。
制造一個(gè)完全出自帶有備用電池的RAM的內(nèi)部存儲(chǔ)器一般來說是不實(shí)用的,因?yàn)橐粋€(gè)具有允許對(duì)數(shù)據(jù)讀寫能力的RAM單元比一個(gè)只允許讀數(shù)據(jù)的ROM單元要包含更多的門,并且一般有一個(gè)大得多的結(jié)構(gòu)。因此,RAM存儲(chǔ)器存儲(chǔ)的編程信息要遠(yuǎn)遠(yuǎn)少于同樣尺寸的ROM存儲(chǔ)器。
然而,由于必須替換整個(gè)ASIC才能改變編程信息,所以將編程信息存儲(chǔ)在內(nèi)部ROM中也有缺陷。例如,對(duì)于修理軟件問題(例如故障)或者為不同用戶提供新的或定制特征,這也許是必須的或所期望的。為了達(dá)到這一點(diǎn),必須制造一個(gè)帶有程序信息的變化的新的芯片。
而且,無論在安全電路例如ASIC中安裝的任何類型的存儲(chǔ)容量為多少,對(duì)于任一給定應(yīng)用程序來說都會(huì)太大或太小。如果存儲(chǔ)容量比需要的大,安全電路的價(jià)格就會(huì)比所需的高。如果存儲(chǔ)容量比需要的小,則或者對(duì)于該任務(wù)不適合,或者必須省略某些特征以使得軟件合適。存儲(chǔ)容量的大小很少是剛好合適的。
因此,需要提供一種方案,用于修改存儲(chǔ)設(shè)備的容量,例如存儲(chǔ)器數(shù)量,并且用于容易且便宜地更新諸如一個(gè)加密芯片的安全電路的程序信息。該系統(tǒng)將程序信息存儲(chǔ)在安全電路外部的一個(gè)存儲(chǔ)設(shè)備中,并且在存儲(chǔ)設(shè)備和安全電路之間提供安全有效的傳送。即使通過網(wǎng)絡(luò),程序信息的傳送也應(yīng)該足夠快,以適應(yīng)代碼執(zhí)行的需要。此外,應(yīng)該限制使安全電路工作所需的內(nèi)部存儲(chǔ)器的數(shù)量。系統(tǒng)可以使用有限數(shù)量的可以支持安全電路、監(jiān)視器錯(cuò)誤條件、解釋偽碼、或者處理實(shí)時(shí)處理事件的快速存取內(nèi)部程序信息。然而,如果該內(nèi)部程序信息是以一種固定形式存儲(chǔ)的,例如ROM或只讀CD-ROM,則不能象外部存儲(chǔ)的程序信息一樣容易地改變。
問題保障外部存儲(chǔ)-額外鑒別在過去,已經(jīng)在字節(jié)和塊上使用了各種加密技術(shù)。但侵權(quán)者采用了各種各樣的“攻擊”(attack)來破壞系統(tǒng)的安全性。一種攻擊是企圖使安全電路讀取加密的存儲(chǔ)器并將其寫到一個(gè)空白區(qū),在這里可以捕獲程序信息然后對(duì)其進(jìn)行分析。這種類型的攻擊實(shí)際上采用了解密電路本身對(duì)程序信息解密,排除了進(jìn)行更廣泛分析的需要。
另一種攻擊試圖破壞應(yīng)用程序本身的安全性,通過改變應(yīng)用程序的執(zhí)行,以使得在這種情況下在解擾接收機(jī)中的安全電路對(duì)高級(jí)服務(wù)進(jìn)行解擾,而不必支付適當(dāng)?shù)念A(yù)定費(fèi)。為了完成這些和其它攻擊,侵權(quán)者試圖修改外部存儲(chǔ)設(shè)備例如存儲(chǔ)器的內(nèi)容。為了完成這一點(diǎn)采用的一種技術(shù)是“試探法”,其中,在外部存儲(chǔ)設(shè)備中的程序信息被以一種試探和錯(cuò)誤逼近的方法來處理。侵權(quán)者不知道哪個(gè)或哪些保密密鑰被用來對(duì)程序信息加密,但設(shè)法處理在外部存儲(chǔ)設(shè)備中的程序信息,直到獲得了一個(gè)有用的結(jié)果。
為了防止這些或其它攻擊成功,可以采用鑒別、更強(qiáng)的加密、鏈字段的重新排序或上述的任何組合。
鑒別可以被用于檢驗(yàn)程序信息的起點(diǎn)。在采用鑒別的系統(tǒng)中安全電路將不會(huì)處理未伴隨著正確的鑒別信息的程序信息。在現(xiàn)有技術(shù)中的強(qiáng)(strong)鑒別比較昂貴。但是,鑒別信息量必須足夠大以提供一個(gè)合當(dāng)?shù)陌踩?jí)。在常規(guī)的采用字節(jié)加密或塊加密的存儲(chǔ)器加密方案中,對(duì)于芯片從外部存儲(chǔ)設(shè)備中取出的每個(gè)字節(jié)或塊都需要鑒別信息。對(duì)于單個(gè)字節(jié)的程序信息需要幾個(gè)字節(jié)的鑒別信息來防止試探。換句話說,該字節(jié)需要被擴(kuò)展以包括附加的鑒別信息。如果一個(gè)8位字節(jié)的程序信息被擴(kuò)展到只包括8位附加鑒別信息,則由于對(duì)于每字節(jié)8位的情況只有28=256種可能的試探組合,鑒別信息會(huì)很容易地由試探法確定。為了提供可與數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)相當(dāng)?shù)陌踩?jí),可以采用56位(7個(gè)字節(jié))來提供鑒別信息的256=7.2×1016種可能的組合。于是,鑒別信息將代表全部存儲(chǔ)量的(7/(1+7))或87%。該額外數(shù)據(jù)量是非常低效的。
采用塊加密,將幾個(gè)字節(jié)的數(shù)據(jù)在一個(gè)塊中聚集并進(jìn)行鑒別。例如,可以采用大小為8個(gè)數(shù)據(jù)字節(jié)的塊。則對(duì)于8字節(jié)的鑒別信息,額外數(shù)據(jù)量仍高達(dá)全部存儲(chǔ)量的(7/(7+8))或47%。由于需要相當(dāng)大的存儲(chǔ)設(shè)備僅用來處理鑒別信息,這種過多的額外數(shù)據(jù)會(huì)嚴(yán)重地影響整個(gè)系統(tǒng)的成本。這對(duì)于必須以盡可能低的成本制造的消費(fèi)者電子設(shè)備、例如手持游戲、蜂窩電話、以及電視解碼器來說是無法接受的。特別地,存儲(chǔ)設(shè)備的成本通常是一個(gè)重要的限制因素。因此,對(duì)于現(xiàn)有的數(shù)據(jù)鑒別方案,額外的鑒別信息量大得難以接受。
因此,需要有一種能使安全傳送程序信息所需的鑒別信息(例如,校驗(yàn)位)量最小的系統(tǒng)。
問題不合適的程序信息加密對(duì)一單個(gè)加密字節(jié)的程序信息的試探攻擊是很容易執(zhí)行的。仍假設(shè)一個(gè)8位字節(jié),對(duì)于該程序信息這只需要試探28=256種可能性就可獲得一個(gè)確切的結(jié)果。但是,對(duì)于某些侵權(quán)攻擊,僅僅改變程序信息使其與原來不同的能力是一個(gè)目標(biāo)。在這個(gè)例子中,僅僅是試探一單個(gè)字節(jié)值而不影響其他字節(jié)的能力將會(huì)導(dǎo)致一個(gè)成功的侵權(quán)攻擊。
對(duì)一單個(gè)加密程序信息塊的試探攻擊有一些困難,但仍然是易處理的。例如,大的通用精減指令集計(jì)算(RISC)處理器具有長度為64位的指令。假設(shè)每塊8字節(jié),每字節(jié)8位,對(duì)于侵權(quán)者來說,改變一個(gè)程序信息塊并且只影響一個(gè)指令是相對(duì)容易的。
即使對(duì)于寬度只有一半大小、例如32位的指令,也只有兩個(gè)指令被影響。所謂的復(fù)雜指令集計(jì)算(CISC)處理器同樣也有受到攻擊的危險(xiǎn)。被稱為“8位處理器”的CISC處理器并不是真的是8位,因?yàn)檫@種處理器一般需要取出一個(gè)、兩個(gè)或三個(gè)程序信息的操作數(shù),這使得任何指令都在8位到32位之間,其平均大約為20位,但這取決于對(duì)程序所使用的指令的選擇。因此,對(duì)于所謂的“8位”指令,試探一個(gè)8字節(jié)塊的加密值可能只影響三個(gè)指令。
因此,希望有一種更牢靠的加密算法來安全地傳送程序信息。
問題即使加密,執(zhí)行也是可觀察到的即使程序信息塊可以被加密或鑒別,有些人通過觀察在一通信裝置、例如總線或網(wǎng)絡(luò)上的數(shù)據(jù)傳輸,也可以得出程序信息的函數(shù)和設(shè)計(jì)。侵權(quán)者能夠得到有關(guān)程序信息的信息越多,他就會(huì)有更多的方法來改變程序執(zhí)行。通過訪問來自一個(gè)內(nèi)部存儲(chǔ)電路例如高速緩存的或者只進(jìn)行了解密、或者進(jìn)行了解密和鑒別、或者只進(jìn)行了鑒別的數(shù)據(jù),而不是必須還從外部取出程序信息,該內(nèi)部存儲(chǔ)電路可以迷惑(obfuscate)一些函數(shù)和設(shè)計(jì)。
但是,因?yàn)閷⒊绦蛐畔⑤d入第一位置的高速緩存的原始通信序列可以被觀察到,所以又出現(xiàn)了一個(gè)問題。沒有高速緩存的系統(tǒng)更容易分析,因?yàn)樵谕獠拷涌谏峡梢钥吹窖h(huán)代碼、例如循環(huán)(loop)??梢院苋菀椎乜匆娤嗤谋患用堋⒈患用芗拌b別、或者僅僅被鑒別的程序信息一次又一次地被傳送。高速緩存通過使傳送在高速緩存內(nèi)部進(jìn)行而不會(huì)在通信裝置上被看到,隱蔽了該操作。然而,一個(gè)聰明的侵權(quán)者會(huì)注意到?jīng)]有外部傳送發(fā)生,因而作出結(jié)論,即出現(xiàn)了某種內(nèi)部操作。原則上講,不希望讓侵權(quán)者知道有關(guān)正在執(zhí)行的算法的任何信息。這包括全部結(jié)構(gòu),例如字節(jié)到塊、塊到鏈或鏈到程序信息序列的聯(lián)系,處理順序,例如總是在引導(dǎo)操作執(zhí)行特定的程序信息,以及程序信息的組織,例如數(shù)據(jù)表組織。
因此,希望有用于迷惑加密的、鑒別的或任何程序信息鏈的執(zhí)行的技術(shù)。希望以這樣一種方式來傳送程序信息,即打亂安全電路的真實(shí)的執(zhí)行順序。該順序可以在個(gè)塊、鏈或程序信息序列內(nèi)被打亂。
也就是說,希望打亂組成一個(gè)塊的字節(jié)的順序、組成一個(gè)鏈的塊的順序、以及組成一個(gè)程序信息序列的鏈的順序。順序置換可以是固定的,但在字節(jié)和字節(jié)之間、塊和塊之間、鏈和鏈之間、或者程序信息序列的基礎(chǔ)上是不同的。希望將順序打亂推廣到更深一步,即比一個(gè)塊要大,例如在兩個(gè)塊或整個(gè)鏈上進(jìn)行。同樣希望將其用在所有其他字段上。
問題順序置換算法可能被發(fā)現(xiàn)任何在硬件上實(shí)現(xiàn)的順序置換算法都可以被侵權(quán)者用探測(cè)VLSI或其他分析來發(fā)現(xiàn)。置換函數(shù)可以用密鑰加密,并且依賴于地址和單位。但是,這并不能防止一確定侵權(quán)者發(fā)現(xiàn)密鑰和依賴關(guān)系是什么。
因此,還希望有一種使對(duì)順序置換的分析和逆向工程更加困難的方法。
問題基礎(chǔ)順序并不改變-地址單元總是相同的即使采用順序置換,侵權(quán)者也可以觀察到在存儲(chǔ)設(shè)備之間的每一次通信,知道哪些字節(jié)屬于哪些塊以及哪些塊屬于哪些鏈。也就是說,在存儲(chǔ)設(shè)備中的一特定地址單元是與一特定字節(jié)、塊或鏈序列相聯(lián)系的。地址單元將總是包含相同的信息。由于順序打亂,侵權(quán)者可能不知道確切的位置信息是什么,但他知道它與其他字節(jié)、塊或鏈的關(guān)系是固定的。侵權(quán)者不需要知道存儲(chǔ)在一特定單元的程序信息的值是什么。侵權(quán)者可以試探在該存儲(chǔ)單元的值。雖然由于順序置換技術(shù)存儲(chǔ)單元在不同時(shí)間被訪問,侵權(quán)者可以通過搜索所有值來有計(jì)劃地完成這一工作。
因此,希望有一種用于動(dòng)態(tài)地改變存儲(chǔ)著表示一特定字節(jié)、塊或鏈序列的數(shù)據(jù)的存儲(chǔ)設(shè)備中的地址單元的方案,以防止某些人有計(jì)劃地試探代碼。
問題每次傳送都是相關(guān)的侵權(quán)者可以觀察在存儲(chǔ)設(shè)備之間的每次程序信息傳送,并得知其是加密的、鑒別的、順序置換的還是上述的全部。
對(duì)于其他迷惑,希望與傳送的程序信息一起傳送“假信息”或不是必須需要的數(shù)據(jù)。
問題所需的雙向?qū)懞妥x存儲(chǔ)設(shè)備可以是只讀的,但也有許多原因表明存儲(chǔ)設(shè)備也應(yīng)該是可寫的。不同的加密和未加密但為獨(dú)有的應(yīng)用程序?qū)τ跀?shù)據(jù)存儲(chǔ)有著不同的要求。
現(xiàn)代的加密應(yīng)用程序常常采用公用密鑰加密,這通常比保密密鑰加密法需要更大的密鑰。加擾發(fā)送機(jī)或解擾接收機(jī)可以執(zhí)行某種類型的加密應(yīng)用程序,該應(yīng)用程序可以在一個(gè)開放的網(wǎng)絡(luò)例如因特網(wǎng)上交互,可能需要存儲(chǔ)許多例如來自一個(gè)根特權(quán)(Root Authority)或驗(yàn)證特權(quán)(Certification Authority)的各種公用密鑰。而且,對(duì)于付費(fèi)電視解碼器,有多個(gè)用于訪問控制系統(tǒng)和/或解碼器制造商的公用密鑰。隨著時(shí)間的變化,會(huì)有更多的公用密鑰作為在網(wǎng)絡(luò)上交互的結(jié)果需要被存儲(chǔ)。這些密鑰中的一些密鑰可能會(huì)很長,例如,如果公用密鑰為2048、4096位或更大。因此,需要大容量存儲(chǔ)設(shè)備、例如大量的讀/寫存儲(chǔ)器來存儲(chǔ)密鑰和其他相關(guān)信息,以影響一個(gè)可行的加密應(yīng)用程序。
這對(duì)于許多專有的應(yīng)用程序來說也是一樣的。趨勢(shì)就是處理越來越多的數(shù)據(jù)。由于現(xiàn)有的存儲(chǔ)器只能用于讀程序信息,因此希望對(duì)于用于寫程序信息和以后檢索程序信息的存儲(chǔ)器的類型和數(shù)量有很大的靈活性。
因此,希望在一個(gè)外部存儲(chǔ)設(shè)備和一個(gè)安全電路之間有一種安全雙向通信,其具有適應(yīng)對(duì)于附加程序信息存儲(chǔ)的不斷增長的需求的靈活性,而不需改變安全電路的設(shè)計(jì)。并且整個(gè)設(shè)備的安全性不會(huì)減小。
問題與非保密外界的通信和備用安全模式安全電路可能必須與沒有解密裝置的顯示設(shè)備、外圍電路或計(jì)算機(jī)連接。在涉及與一個(gè)人交互時(shí)這是很重要的。例如,如果一個(gè)用戶輸入了一個(gè)錯(cuò)誤的個(gè)人識(shí)別號(hào)(PIN)代碼,則安全電路必須將這個(gè)問題通知給該用戶,以便可以重新輸入PIN。這可能需要與主機(jī)設(shè)備進(jìn)行通信,將錯(cuò)誤條件或錯(cuò)誤消息適當(dāng)?shù)仫@示在一屏幕上。在專用于外部通信的引腳、通信端口或總線上存在著一種缺陷。
一些程序信息的執(zhí)行可以具有減少的執(zhí)行等待時(shí)間要求,需要除了由鏈進(jìn)行的一個(gè)備用通信模式。而且,安全電路可能需要與具有不同安全方案的其它設(shè)備進(jìn)行互操作。
還希望提供一種條件無加密模式,從而不執(zhí)行程序信息的加密/解密、鑒別產(chǎn)生/驗(yàn)證、或順序置換。該條件無加密模式不僅允許一個(gè)可能的芯片調(diào)試工具,還允許安全電路與世界自由地進(jìn)行聯(lián)系,即發(fā)送和接收明文數(shù)據(jù),例如與顯示設(shè)備、其它計(jì)算機(jī)等進(jìn)行聯(lián)系,從而允許通信裝置不僅僅被用作為程序信息的運(yùn)輸工具。這將減少用于外部通信的分離引腳、通信端口和總線的數(shù)目。
還希望換掉程序信息的鏈加密/解密、鑒別產(chǎn)生/驗(yàn)證、或順序置換,而采用不是基于鏈的不同類型的加密/解密、鑒別/驗(yàn)證、或順序置換。例如,不是采用鏈,而是可以采用字節(jié)或塊處理。
問題鏈長度的檢測(cè)侵權(quán)者也許能夠分析程序信息的執(zhí)行,以確定何種程序信息屬于一特定鏈。該認(rèn)識(shí)可以允許侵權(quán)者以一種更富選擇性的形式來試探程序信息。原則上,這是一種防止一個(gè)潛在的侵權(quán)者得到任何有關(guān)程序信息是如何執(zhí)行的信息的好主意。
因此,希望以隨機(jī)序列從一個(gè)鏈到下一個(gè)鏈傳送帶有可變鏈長度的程序信息塊,而不對(duì)所執(zhí)行的程序信息進(jìn)行任何特別的考慮。
問題不同的等待時(shí)間要求實(shí)時(shí)中斷子程序具有與背景或維護(hù)程序不同的執(zhí)行等待時(shí)間要求?,F(xiàn)在設(shè)計(jì)者有一種自然的趨勢(shì),就是為所有程序信息設(shè)計(jì)更短的鏈,只為了處理實(shí)時(shí)中斷子程序的更快的執(zhí)行要求。但減少所有程序信息的鏈長度會(huì)不必要地增加存儲(chǔ)設(shè)備的存儲(chǔ)容量,以容納增大的鑒別信息量。
因此,希望以塊鏈傳送程序信息塊和相關(guān)的鑒別信息,其中,可以采用不同的鏈長度來傳送具有不同等待時(shí)間要求的不同類型的程序信息。放置在較低地址單元中的程序可以具有較低的等待時(shí)間,而在存儲(chǔ)設(shè)備的較高地址單元中的那些可以具有較高的等待時(shí)間要求。
問題一般的通信/存儲(chǔ)等待時(shí)間要求雖然某些程序具有特定的執(zhí)行等待時(shí)間考慮,等待時(shí)間對(duì)于某些應(yīng)用程序來說仍然是太長了。因此,必須研究出一些裝置以便于更有效的程序信息傳送和存儲(chǔ)。
為了幫助減少程序信息等待時(shí)間以提高執(zhí)行速度,希望將某些特征設(shè)計(jì)進(jìn)通信裝置和安全電路的結(jié)構(gòu)中。
問題鑒別/驗(yàn)證等待時(shí)間要求雖然某些程序具有特定的執(zhí)行等待時(shí)間考慮,用于鑒別/驗(yàn)證的等待時(shí)間對(duì)于某些應(yīng)用程序來說仍然是太長了。因此,必須研究出一些裝置以便于更有效的鑒別/驗(yàn)證。
因此,希望將某些特征設(shè)計(jì)進(jìn)鑒別/驗(yàn)證函數(shù)中,以幫助減少程序信息執(zhí)行等待時(shí)間。
問題加密/解密等待時(shí)間要求雖然某些程序具有特定的執(zhí)行等待時(shí)間考慮,用于加密/解密的等待時(shí)間對(duì)于某些應(yīng)用程序來說仍然是太長了。因此,必須研究出一些裝置以便于更有效的加密/解密。
因此,希望將某些特征設(shè)計(jì)進(jìn)加密/解密函數(shù)中,以幫助減少程序信息執(zhí)行等待時(shí)間。
本發(fā)明提供了一種具有上述和其它優(yōu)點(diǎn)的系統(tǒng)。
依據(jù)本發(fā)明,提供了一種裝置,用于在一存儲(chǔ)設(shè)備和一安全處理電路之間以密碼塊鏈安全地傳送加密的程序信息塊。
提供了一種裝置,用于在一存儲(chǔ)設(shè)備和一安全處理電路之間以塊鏈安全地傳送鑒別的程序信息塊。
提供了一種裝置,用于在一存儲(chǔ)設(shè)備和一安全處理電路之間以鏈接安全地傳送程序信息的重新排序字段。
本發(fā)明還提供了一種裝置,用于加密地產(chǎn)生一密鑰,從而可以使用該密鑰來獲得對(duì)數(shù)據(jù)傳輸?shù)鹊脑L問。
在本發(fā)明的一個(gè)方面中,一種用于在一存儲(chǔ)設(shè)備和一安全電路之間安全地傳送程序信息塊的裝置包括用于提供至少一個(gè)程序信息塊的裝置,其中該程序信息塊包括一包含具有第一字節(jié)序列的多個(gè)字節(jié)的特定塊。
由于數(shù)據(jù)可以被順序地處理,每次處理一個(gè)數(shù)據(jù)塊,一個(gè)大小能存儲(chǔ)一個(gè)數(shù)據(jù)塊的塊緩沖器就是一個(gè)最小的實(shí)施裝置所需的全部。
還提供了用于在存儲(chǔ)設(shè)備中存儲(chǔ)程序信息塊的裝置,例如一個(gè)地址發(fā)生器。
密碼塊鏈接是一種牢靠的加密算法,因?yàn)樵谝粋€(gè)塊中的變化將接連導(dǎo)致其他塊的變化,因而對(duì)于侵權(quán)者來說實(shí)現(xiàn)對(duì)程序信息的簡單改變變得很困難。
密碼塊鏈接可以用在用于保密的散列和加密中??梢栽诩用艿蔫b別塊上對(duì)最新的明文塊進(jìn)行異或操作(XOR),以提供整個(gè)密碼塊鏈接對(duì)鑒別塊的解密的依賴性。
例如,可以以兩個(gè)或更多八字節(jié)塊來傳送程序信息和鑒別信息。由于鑒別信息相對(duì)于已鑒別數(shù)據(jù)的相對(duì)較低的額外量,所以塊鏈接是比較有效的。鑒別信息與最新的明文數(shù)據(jù)(例如,程序信息)塊進(jìn)行XOR,并且可選地被解密,以產(chǎn)生一驗(yàn)證值。將該值與一個(gè)由硬件已知的值進(jìn)行比較,以驗(yàn)證該鑒別數(shù)據(jù)是正確的。該值可以對(duì)于不同的鏈?zhǔn)遣煌?,也可以?duì)于所有的鏈都是固定的。為了提供在密鑰之間的附加獨(dú)立性,用于對(duì)鑒別信息進(jìn)行解密的密鑰與用于對(duì)已鑒別的信息進(jìn)行解密的密鑰可以是不同的。而且,可以在每一次解密操作以地址修改密鑰,以提供在一個(gè)鏈內(nèi)的每個(gè)塊對(duì)地址的依賴性。
密碼塊鏈接可以與另一種散列算法一起使用,來獲得更牢靠的安全性。由于每個(gè)塊必須以一種順序方式處理,所以完成這些不會(huì)花費(fèi)另外的等待時(shí)間。當(dāng)?shù)谝粔K被解密時(shí),不僅將其與第二塊的密文進(jìn)行XOR,還將其送至鑒別電路。最后一塊為多個(gè)鑒別位,不需要將其送到鑒別電路,而只是對(duì)其解密,并與在硬件中保存的一個(gè)值進(jìn)行比較。
提供第一通信路徑例如一總線,以便在外部存儲(chǔ)設(shè)備和一個(gè)或多個(gè)塊緩沖器之間以一個(gè)鏈來傳送程序信息和鑒別信息塊。由于數(shù)據(jù)可以串行處理,每次一個(gè)塊,所以一個(gè)大小能存儲(chǔ)一個(gè)數(shù)據(jù)塊的塊緩沖器就是一最小實(shí)施設(shè)備所需要的全部。鑒別信息由鑒別電路讀入并驗(yàn)證。
如果需要,在一個(gè)與鑒別電路相連的解密電路中對(duì)程序信息進(jìn)行解密。來自一相關(guān)的存儲(chǔ)設(shè)備的加密密鑰數(shù)據(jù)可以被用于此目的。
如果侵權(quán)者為了試探而改變了鏈中的前面塊中的任何數(shù)據(jù),則計(jì)算出的與鑒別信息進(jìn)行比較的散列數(shù)據(jù)將是不正確的,所得的驗(yàn)證值將不匹配。安全電路,例如一個(gè)ASIC或PC,就會(huì)得知出現(xiàn)了竄改,從而可以采取對(duì)抗措施。
有多種方式可以實(shí)現(xiàn)鑒別操作。散列法可以以密鑰加密,例如使用一個(gè)保密密鑰,而鑒別信息是以明文出現(xiàn),或者散列法不以密鑰加密,而鑒別信息被加密,或者為了更牢靠的安全性,對(duì)散列法以密鑰加密,同時(shí)鑒別信息被加密??梢允褂貌煌拿荑€來用于散列和解密。散列密鑰可以是一個(gè)保密密鑰,而鑒別信息可以在一個(gè)公用密鑰下加密。用于對(duì)鑒別信息進(jìn)行加密的相同的密鑰也可以用于對(duì)被鑒別的程序信息加密。其優(yōu)點(diǎn)是可以以與程序信息相似的方式來處理鑒別信息。然而,使用單獨(dú)的密鑰可以增加安全的級(jí)別。
在另一個(gè)實(shí)施例中,使用塊加密用于保密。這些塊在解密時(shí)被鑒別。使用的鑒別技術(shù)可以是一種散列,這可能需要一個(gè)嚴(yán)格順序的散列,例如,塊#1被散列,然后以塊#1的散列輸出對(duì)塊#2進(jìn)行散列,以此類推??梢允褂靡阎乃惴ɡ鏜D5和SHA用于這種類型的嚴(yán)格的散列。
雖然可以應(yīng)用這種散列法,由于操作的串行特性,散列法會(huì)引入一等待時(shí)間。可以提供一種簡化的散列函數(shù),執(zhí)行所有明文塊的XOR。該散列值可以用鑒別信息來驗(yàn)證。事實(shí)上,鑒別信息可以作為一個(gè)塊與程序信息一起被XOR。這種技術(shù)改進(jìn)了程序信息執(zhí)行等待時(shí)間,這對(duì)于實(shí)時(shí)操作系統(tǒng)是很重要的。這里,在為整個(gè)鏈計(jì)算散列的同時(shí),每個(gè)數(shù)據(jù)塊不僅可以如同在由FIPS調(diào)用的電子碼書中那樣被獨(dú)立地加密,還可以被獨(dú)立地XOR。這種被稱為“簡單塊鏈接”的技術(shù)重點(diǎn)在于減少執(zhí)行等待時(shí)間。
對(duì)非法操作代碼或非法解釋代碼命令的檢測(cè)可以被用作鑒別的一種形式。在接收到一個(gè)非法操作代碼或命令之后,系統(tǒng)可以確定如何響應(yīng),例如復(fù)位、增量計(jì)數(shù)器或一些其它行動(dòng)。
由侵權(quán)者生成一非法操作代碼依賴于一給定處理器的指令集。有些指令集是完全開發(fā)的,只有很少的未定義的或非法的操作代碼,而另一些指令集是精減的,具有較多未定義的或非法的操作代碼。例如,如果一個(gè)指令集具有20%的未定義或非法操作代碼,則意味著侵權(quán)者有80%的隨機(jī)生成一合法操作代碼的機(jī)會(huì)。這并不是說侵權(quán)者產(chǎn)生了一特定操作代碼而不只是一個(gè)合法操作代碼。但一隨機(jī)合法操作代碼而不是一想要的代碼就可以形成一次成功的侵權(quán)攻擊。例如,如果目標(biāo)是原始操作代碼的簡單無效,則將是這種情況。由于具有80%對(duì)侵權(quán)者有利的可能性,這種僅僅檢測(cè)非法操作代碼的方法還存在著很多問題需要考慮。
因?yàn)殡S著在一特定鏈中的每個(gè)后續(xù)塊被影響,侵權(quán)者生成一非法操作代碼的可能性增加,所以非法操作代碼檢測(cè)作為鑒別的一種形式與密碼塊鏈接一起使用則更有效。例如,如果在一個(gè)鏈中有十六個(gè)指令塊,則如果侵權(quán)者改變了鏈中的第一個(gè)塊,侵權(quán)者成功的可能性如下(.8)16=0.028。情況發(fā)生了變化,現(xiàn)在侵權(quán)者失敗的機(jī)會(huì)大約為97%。由于這個(gè)原因,密碼塊鏈接是一種更牢靠的加密方法-這隱含著通過檢測(cè)非法操作代碼來進(jìn)行鑒別。但密碼塊鏈接更好的原因還在于,它使得侵權(quán)者試探程序信息的加密以便隔離對(duì)一單個(gè)塊所作的任何改變、從而增加生成帶有不想要的副作用的非故意的操作代碼的機(jī)會(huì)變得更加困難。
一個(gè)問題是外部存儲(chǔ)設(shè)備存儲(chǔ)的不只是操作代碼。只有操作代碼可以由CPU的指令解碼電路來驗(yàn)證。更牢靠的安全性需要明確的鑒別。
可以通過鑒別信息與明文數(shù)據(jù)塊的散列的XOR來執(zhí)行鑒別,以產(chǎn)生一驗(yàn)證值,接著將該驗(yàn)證值與一預(yù)先存儲(chǔ)的值進(jìn)行比較,或者也可以僅僅將鑒別信息與散列的程序信息進(jìn)行比較。
鑒別函數(shù)可選地將以明文傳送的多個(gè)程序信息塊散列,以便與解密的鑒別信息進(jìn)行XOR。為了防止侵權(quán)者使用一種已知的散列算法生成他們自己的已鑒別的程序信息,必須使用一個(gè)加密密鑰。這可以用兩種方式來完成一對(duì)散列法用密鑰加密或?qū)﹁b別用密鑰加密,或者兩者兼而有之。
作為解決等待時(shí)間問題的另一種技術(shù),簡單塊鏈接對(duì)每個(gè)程序信息塊使用一種單獨(dú)的塊加密。于是,每個(gè)塊被獨(dú)立地加密和解密,所以處理可以并行地進(jìn)行。此外,整個(gè)塊鏈或塊組被鑒別。一種散列方法是將程序信息塊一起與鑒別信息進(jìn)行XOR。這都可以立刻完成。
為了獲得更牢靠的安全性,可以采用更復(fù)雜的散列法,但這些方法會(huì)引入一順序依賴性,從而一個(gè)塊可能需要在另一個(gè)塊之前進(jìn)行散列。如上所述的使用加密和鑒別處理的簡單塊鏈接,與密碼塊鏈接一樣,減少了額外鑒別位,但當(dāng)采用并行解碼電路時(shí),可以避免密碼塊鏈接的等待時(shí)間問題。如果只使用一單個(gè)塊緩沖器,則密碼塊鏈接和簡單塊鏈接的等待時(shí)間大約相同,唯一的區(qū)別是,一個(gè)塊解密的輸出是與下一個(gè)塊解密的輸出進(jìn)行XOR(對(duì)于簡單塊鏈接),而不是與下一個(gè)塊解密的輸入進(jìn)行XOR(對(duì)于密碼塊鏈接)。
應(yīng)用明文塊的XOR進(jìn)行解密和鑒別的簡單塊鏈接方法存在的問題是任可一個(gè)塊可以被重新排序出序列,而鑒別仍會(huì)檢驗(yàn)出來。所以雖然解密和鑒別操作可以并行地完成,但引入了一個(gè)潛在的問題。應(yīng)該將帶有地址依賴性的加密與應(yīng)用簡單XOR散列函數(shù)的簡單塊鏈接一起使用。
這就是說,在鏈中的每個(gè)塊使用的密鑰與作為特定塊地址的一個(gè)函數(shù)的密鑰不同。如果使用DES加密,則為了試探而改變一個(gè)塊的任何程序信息都將導(dǎo)致解密輸出的大約一半的位改變,導(dǎo)致鑒別驗(yàn)證檢驗(yàn)不出來。沒有密鑰的情況,侵權(quán)者找到正確的鑒別信息來校正將是很困難的。
在減少程序信息執(zhí)行等待時(shí)間的嘗試中,可以使用有密鑰的散列或鑒別信息的加密在密文數(shù)據(jù)上執(zhí)行鑒別。解密和鑒別可以同時(shí)進(jìn)行,而不是在加密之后進(jìn)行鑒別。對(duì)于簡單塊鏈接,這存在著一個(gè)問題,就是依賴于地址的解密將不會(huì)已在程序信息上執(zhí)行,有可能使其容易出現(xiàn)解碼器無序的情況。
在外部存儲(chǔ)設(shè)備和安全電路通信期間,可以使用在一個(gè)鏈內(nèi)的字節(jié)的隨機(jī)順序置換。這里提供了用于與安全電路進(jìn)行程序信息通信的裝置,例如數(shù)據(jù)總線或網(wǎng)絡(luò)。
提供與安全電路相連的裝置,以便對(duì)該鏈的重新排序字段進(jìn)行重新排序,來恢復(fù)在第一字段序列中的字段。一個(gè)程序信息鏈可以被重新排序成兩個(gè)或多個(gè)字段,可以提供重新排序。
也就是說,可以在外部存儲(chǔ)設(shè)備和塊緩沖器之間以一種不反映安全電路的塊的真實(shí)執(zhí)行順序的隨機(jī)的非順序序列來傳送塊。而且,重新排序可以在一個(gè)或多個(gè)塊內(nèi)的字節(jié)中進(jìn)行,也可以在整個(gè)鏈中進(jìn)行。任何字段都可以重新排序。
這種非順序傳送在阻止侵權(quán)者確定在安全電路中執(zhí)行的程序信息結(jié)構(gòu)、順序和編排中是非常有效的。通過用一個(gè)程序信息序列或多個(gè)程序信息序列中的一個(gè)鏈或多個(gè)鏈或整個(gè)鏈的相對(duì)位置對(duì)任何字段進(jìn)行重新排序,可以阻止侵權(quán)者檢測(cè)關(guān)于在處理電路中的程序信息的執(zhí)行順序的信息。應(yīng)用重新排序,可以阻止侵權(quán)者容易地得到程序信息的正確的明文或密文,使得完成某些加密攻擊變得更加困難。程序信息最好被加密,以增加分析的困難。
該裝置的另一個(gè)實(shí)施例從存儲(chǔ)設(shè)備向安全電路傳送程序信息塊,同時(shí)對(duì)一個(gè)程序信息序列的字段進(jìn)行大體上隨機(jī)的重新排序。采用一個(gè)新順序?qū)⒆侄螐陌踩娐穫魉突卮鎯?chǔ)設(shè)備,從而改變了與存儲(chǔ)設(shè)備中一特定存儲(chǔ)單元相聯(lián)系的字段。在安全電路的內(nèi)部提供了用于存儲(chǔ)在存儲(chǔ)設(shè)備中的程序信息的新的“真實(shí)”序列。
然后將一程序信息序列的字段的新的基本序列順序存儲(chǔ)在安全設(shè)備中,這樣在將來向相同塊的傳送將允許基于安全電路中的新序列進(jìn)行正確的重新排序。這里提供了用于與安全處理電路進(jìn)行程序信息通信的裝置,例如數(shù)據(jù)總線或網(wǎng)絡(luò)。
雖然當(dāng)字節(jié)在存儲(chǔ)設(shè)備和安全電路之間進(jìn)行傳送時(shí)可以使用上面的序列重新排序技術(shù)進(jìn)行重新排序,但程序信息的每個(gè)字節(jié)仍然是與一特定存儲(chǔ)單元相聯(lián)系的。例如,一個(gè)程序信息序列的第一鏈的第一塊的第一字節(jié)總是存儲(chǔ)在一特定存儲(chǔ)單元,即使由于重新排序侵權(quán)者可能無法確定事實(shí)上它就是第一塊的第一字節(jié)。則侵權(quán)者還是可以以一種系統(tǒng)的和有組織的方式來試探該特定存儲(chǔ)單元(例如,地址)中的值。
改變存儲(chǔ)設(shè)備中的數(shù)據(jù)的基本存儲(chǔ)單元可以防止侵權(quán)者試探存儲(chǔ)在存儲(chǔ)設(shè)備的一特定單元中的程序信息。通過在每次使用之后動(dòng)態(tài)地改變存儲(chǔ)設(shè)備中的程序信息單元,則侵權(quán)者對(duì)于在存儲(chǔ)設(shè)備的一特定單元中的程序信息的試探在每次并不是都精確地涉及相同的程序信息。因此這種攻擊變得難以控制。
在本發(fā)明的另一個(gè)方面中,數(shù)據(jù)子字段、字節(jié)、塊、鏈和程序信息序列可以是固定的,不是隨機(jī)的。對(duì)于訪問的每個(gè)字節(jié)、塊、鏈或程序信息序列,順序可以不同。這是在輸入的程序信息上的合適的字段上不同地執(zhí)行的置換。由于沒有隨機(jī)化,這種置換功能可以容易地在硬件中實(shí)現(xiàn)。
在一特定實(shí)施例中,安全電路使用程序信息來產(chǎn)生一加密密鑰。
使用密碼塊鏈接對(duì)程序信息進(jìn)行加密,并可選地進(jìn)行鑒別和/或重新排序。在另一個(gè)實(shí)施例中,對(duì)程序信息進(jìn)行鑒別,并可選地使用塊鏈接進(jìn)行加密和/或重新排序。在另一個(gè)實(shí)施例中,對(duì)程序信息進(jìn)行鑒別,并可選地使用塊鏈接進(jìn)行加密和/或重新排序。
在軟件中可以使用密鑰來對(duì)一數(shù)據(jù)傳輸進(jìn)行解密或解擾。通過鑒別指令,阻止侵權(quán)者向安全電路提供假程序信息來解擾數(shù)據(jù)傳輸。
在本發(fā)明的另一個(gè)方面中,一安全電路使用程序信息來產(chǎn)生一加密密鑰。該密鑰可以被用于在硬件中對(duì)一數(shù)據(jù)傳輸進(jìn)行解擾。該解擾可以在內(nèi)部或外部完成,這取決于安全電路的分布。
可以產(chǎn)生密鑰并將其傳送給一軟件模塊,以便對(duì)數(shù)據(jù)傳輸進(jìn)行加擾。軟件模塊可以在安全電路內(nèi)部,或者在安全電路外部。
在上述的兩個(gè)例子中,安全電路可以包括一個(gè)集成電路(IC),具有一鑒別電路、一中央處理器單元(CPU)以及一個(gè)或多個(gè)適于存儲(chǔ)一個(gè)或多個(gè)程序信息塊的塊緩沖器。
外部存儲(chǔ)設(shè)備可以是閃速存儲(chǔ)器、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、帶有后備電池的隨機(jī)存取存儲(chǔ)器(RAM)、RAM、或者上述的組合。它也可以是硬盤驅(qū)動(dòng)器、CDROM或者任何類型的大容量存儲(chǔ)設(shè)備。外部存儲(chǔ)設(shè)備也存儲(chǔ)當(dāng)被接收到安全電路中時(shí)用于鑒別程序信息的鑒別信息(例如,校驗(yàn)位)。在一些實(shí)施例中,希望將存儲(chǔ)設(shè)備的內(nèi)容復(fù)制到一個(gè)較快的存儲(chǔ)設(shè)備中,例如同步動(dòng)態(tài)存儲(chǔ)器,以使得安全電路可以從較快的存儲(chǔ)設(shè)備例如動(dòng)態(tài)存儲(chǔ)器中取出程序信息,而不是從具有相關(guān)的等待時(shí)間的較慢的存儲(chǔ)設(shè)備中取出程序信息。例如,一網(wǎng)絡(luò)計(jì)算機(jī)可以通過網(wǎng)絡(luò)從服務(wù)器復(fù)制程序信息。在網(wǎng)絡(luò)計(jì)算機(jī)的情況下,較快的存儲(chǔ)設(shè)備可以是本地的,而較慢的存儲(chǔ)器可以是遠(yuǎn)端的,通過網(wǎng)絡(luò)進(jìn)行訪問。
為了減少實(shí)時(shí)執(zhí)行代碼的執(zhí)行的整個(gè)等待時(shí)間,第一通信路徑可以具有一足夠的帶寬,以使得兩個(gè)或多個(gè)串、一個(gè)或多個(gè)塊、或者一個(gè)或多個(gè)鏈可以基本上同時(shí)與塊緩沖器進(jìn)行通信。
因?yàn)榇嬖谥粋€(gè)瓶頸問題,程序信息總線一般不比指令帶寬寬。CPU只以一特定速率執(zhí)行。程序信息必須存儲(chǔ)在某些地方。然而,當(dāng)存在著與其它處理-加密或鑒別-有關(guān)的等待時(shí)間時(shí),這可以幫助減少整個(gè)等待時(shí)間。
例如,安全電路本質(zhì)上可以同時(shí)讀取不止一個(gè)程序信息塊,其中使用不止一個(gè)塊緩沖器來存儲(chǔ)另外的塊,例如每塊一個(gè)緩沖器。在安全電路中,鑒別電路從一個(gè)或多個(gè)塊緩沖器接收程序信息和鑒別信息,用于鑒別程序信息。在IC中的第二通信路徑中,將來自鑒別電路的已鑒別的程序信息提供給CPU執(zhí)行,從而對(duì)加擾的數(shù)據(jù)傳輸解密。程序信息可以包括多個(gè)指令串,例如成行的計(jì)算機(jī)代碼,或者包括相關(guān)的數(shù)據(jù)序列,這些數(shù)據(jù)序列是要由CPU連續(xù)地處理的。
可以將一個(gè)高速緩存安排在第二通信路徑中,以便在將已鑒別的程序信息提供給CPU之前臨時(shí)存儲(chǔ)這些信息。高速緩存可以存儲(chǔ)至少一個(gè)程序信息串,以使得可以將至少兩個(gè)程序信息串基本上同時(shí)提供給CPU(例如,存儲(chǔ)的串和最新的已鑒別和已解碼的串)。以這種方式,程序信息與CPU有效地進(jìn)行通信。高速緩存的優(yōu)點(diǎn)是CPU可以從高速緩存中取出已經(jīng)鑒別的程序信息,而不是使用外部存儲(chǔ)設(shè)備通信裝置,例如總線或網(wǎng)絡(luò),在這些裝置中牽涉到各種等待時(shí)間。
當(dāng)一第一鏈和后續(xù)的第二鏈從外部存儲(chǔ)設(shè)備向一個(gè)或多個(gè)塊存儲(chǔ)器傳送時(shí),鑒別電路對(duì)第一和第二密碼塊鏈進(jìn)行鑒別,以提供相應(yīng)的已鑒別的程序信息。另外,CPU可以處理來自第一鏈的已鑒別的程序信息的至少一個(gè)部分,同時(shí)鑒別電路鑒別第二鏈的程序信息的至少一個(gè)部分。同樣,在需要時(shí)對(duì)程序信息進(jìn)行的解碼也可以以一種重疊的方式來執(zhí)行。
該裝置的另一個(gè)實(shí)施例在存儲(chǔ)設(shè)備和安全電路之間傳送程序信息字段,同時(shí)傳送不是由安全電路處理的立即(例如,當(dāng)前的或下一個(gè))程序信息序列所使用的字段。這種迷惑技術(shù)使用假的數(shù)據(jù)字節(jié),這些數(shù)據(jù)字節(jié)可以僅僅是干擾字節(jié),例如在任何程序信息執(zhí)行期間都不會(huì)由安全電路使用,或者可以是其他程序信息序列的一部分,僅僅在當(dāng)前不在安全電路和存儲(chǔ)設(shè)備之間進(jìn)行處理。這里提供了與安全電路相聯(lián)系的裝置,用來消除特定塊的假字節(jié),以恢復(fù)第一字節(jié)序列中的字節(jié)以及剩下的塊中的后續(xù)的字節(jié)序列。在由安全電路接收之后,在消除之前,在解密和/或鑒別期間可選地使用假字節(jié)。另外,提供了可以以相同的方式去除的塊和鏈。
這里所說的密碼塊鏈接或簡單塊鏈接可以用在用于保密的散列和加密中。例如,程序信息和鑒別信息可以用兩個(gè)或更多個(gè)八字節(jié)塊來傳送。由于其相對(duì)于已鑒別的數(shù)據(jù)來說相對(duì)低的鑒別信息的額外量,塊鏈接是有效的。鑒別信息與最后一個(gè)明文數(shù)據(jù)(例如程序信息)塊進(jìn)行XOR,并可選地被解密,產(chǎn)生一驗(yàn)證值。將該值與由硬件所知的一個(gè)值進(jìn)行比較,以驗(yàn)證鑒別數(shù)據(jù)是正確的。該值對(duì)于不同的鏈可以是不同的,也可以對(duì)于所有鏈?zhǔn)枪潭ǖ摹?br> 在加密和散列中使用密碼塊鏈接是減少與安全功能相聯(lián)系的硬件量的一種方式。由于需要的所有塊可以以串行方式來處理,所以只需要一個(gè)緩沖器。XOR功能比簡單塊鏈接中完成的功能更牢靠,因?yàn)樵谝粋€(gè)塊中作出改變是很困難的,可以通過改變另一個(gè)塊來補(bǔ)償。由于XOR是在解碼步驟之前完成的,控制一個(gè)塊來取消所作出的任何改變則更加困難。但這需要串行處理。
附圖簡要說明

圖1是依據(jù)本發(fā)明的一加密密鑰發(fā)生器/解擾接收機(jī)裝置的示意圖。
圖2是依據(jù)本發(fā)明的密碼塊鏈接加密方案的圖解表示。
圖3是依據(jù)本發(fā)明的密碼塊鏈接解密方案的圖解表示。
圖4是依據(jù)本發(fā)明的簡單塊鏈接加密方案的圖解表示。
圖5是依據(jù)本發(fā)明的簡單塊鏈接解密方案的圖解表示。
圖6是依據(jù)本發(fā)明的另一個(gè)加密密鑰發(fā)生器/解擾接收機(jī)裝置的示意圖。
這里提出了一種用于安全處理器的裝置。最佳實(shí)施例重點(diǎn)在于安全性。
加密的、鑒別的、以及順序置換的程序信息塊和假數(shù)據(jù)在一外部存儲(chǔ)器和一加密ASIC之間以密碼塊鏈進(jìn)行安全地傳送。對(duì)程序信息的處理允許ASIC導(dǎo)出一個(gè)用于對(duì)收費(fèi)電視的視頻和音頻數(shù)字包進(jìn)行解密的密鑰。
圖1是依據(jù)本發(fā)明的一加密密鑰發(fā)生器/解擾接收機(jī)裝置的示意圖。在總體上如100所示的解擾接收機(jī)包括一安全電路,例如,一個(gè)諸如ASIC的集成電路(IC)105,還包括一存儲(chǔ)設(shè)備,例如處于ASIC105外部的存儲(chǔ)器110。由于存儲(chǔ)器110不是封在ASIC組件中的,則存儲(chǔ)器110處于ASIC105外部。例如,存儲(chǔ)器110和ASIC105可以是在解碼器母板上的分離組件。
在另一種情況下,可以通過移去或替換存儲(chǔ)器IC來增加或減少存儲(chǔ)器110,而不會(huì)影響或修改安全電路105。另外,新程序信息例如插入碼可以通過電話線、衛(wèi)星連接或有線電視連接等下載到外部存儲(chǔ)器110?;蛘?,程序信息可以在本地例如通過一智能卡安裝在解擾接收機(jī)內(nèi),或者由插口連接或者焊在同一塊板上?;蛘?,存儲(chǔ)器110本身可以處于一智能卡中,在這種情況下,可以以相對(duì)較低的成本提供一個(gè)新的智能卡來更新一解碼器。這種安排允許存儲(chǔ)在外部存儲(chǔ)設(shè)備110中的程序信息(例如,軟件或固件)容易地被更新或修改,以提供新特征或修理軟件問題,從而提供了相當(dāng)大的益處。
例如,外部存儲(chǔ)設(shè)備110可以被容易地替換或修改,以便為商業(yè)和個(gè)人提供定制特征,或者根據(jù)諸如人口統(tǒng)計(jì)分布、地理位置、時(shí)區(qū)等因素向團(tuán)體提供專用特征。
相反,如果存儲(chǔ)器110為ROM并在ASIC105內(nèi)部,則必須替換整個(gè)ASIC,因而會(huì)產(chǎn)生相當(dāng)大的成本和延遲??梢圆捎檬褂肦AM和ROM技術(shù)的高級(jí)VLSI工藝來制造ASIC,以便不僅為在ASIC和外部存儲(chǔ)器之間的程序信息傳送達(dá)到高的處理和位傳輸速率,而且為由高速緩存進(jìn)行的內(nèi)部執(zhí)行以及對(duì)視頻和音頻數(shù)字包進(jìn)行解擾達(dá)到高的處理和位傳輸速率。用RAM和ROM技術(shù)生成的ASIC與用其他技術(shù)生成的ASIC相比可以對(duì)更高位速率的成組數(shù)據(jù)進(jìn)行解密。因此外部存儲(chǔ)器給ASIC提供了更大的靈活性。
外部存儲(chǔ)設(shè)備110可以是閃速存儲(chǔ)器、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)或帶有后備電池的易失性存儲(chǔ)器,例如隨機(jī)存取存儲(chǔ)器(RAM)?;蛘?,也可以使用常規(guī)的只讀存儲(chǔ)器(ROM)。
EPROM允許在存儲(chǔ)器中的編程可以由在強(qiáng)紫外線下暴光來反變換。以一種被稱為再燒(re-burning)的工藝可以很容易地將新代碼存儲(chǔ)在EPROM中。可以通過使用大電流對(duì)內(nèi)部存儲(chǔ)單元復(fù)位來改變EEPROM。通過使用EEPROM或帶有后備電池的RAM,外部存儲(chǔ)器還可以用于存儲(chǔ)短期或長期數(shù)據(jù)。存儲(chǔ)器空間還可以被劃分,以提供不同的物理器件,這樣不同的存儲(chǔ)類型可以一起使用。在有電源的情況下,非易失性存儲(chǔ)器可以被復(fù)制到快得多的存儲(chǔ)器例如同步動(dòng)態(tài)存儲(chǔ)器中。這可以減少外部存儲(chǔ)器的讀/寫操作的等待時(shí)間。
外部存儲(chǔ)設(shè)備110可以使用密碼塊鏈接來加密,或者使用簡單塊鏈接來鑒別并可選地加密。程序信息可以由ASIC105用來對(duì)加擾數(shù)據(jù)傳輸進(jìn)行解碼。程序信息可以包括要由ASIC105中的一中央處理單元(CPU)170執(zhí)行的代碼行(例如串)。每一行代表一可執(zhí)行的命令或者由程序使用的數(shù)據(jù)。代碼可以遵守一精減指令集計(jì)算機(jī)(RISC)結(jié)構(gòu),其中每行代碼可以在一單個(gè)芯片時(shí)鐘周期內(nèi)執(zhí)行。
使用密碼塊鏈接來處理程序信息。塊加密方法是三次(triple)DES。有三個(gè)密鑰可供使用。一個(gè)密鑰用于高位地址線。另一個(gè)密鑰用于低位地址線。這就提供了與地址有關(guān)的解密。第三個(gè)密鑰可以是與單位有關(guān)的。
散列算法可以使用雙前饋散列(double feed-forward hash)(DFFH),例如,如同在1995年12月22日申請(qǐng)的美國專利申請(qǐng)08/577,922中所描述的。散列是用密鑰加密的。該密鑰可以是地址和單位密鑰的XOR,以便為鑒別提供對(duì)地址和單位的依賴性??梢允褂貌煌纳⒘兴惴ǎ瑥亩荑€可以是一起附帶的,而不是進(jìn)行了XOR的。
在最佳實(shí)施例中,由指令解碼器172處理產(chǎn)生的操作代碼。非法操作代碼可以由指令解碼器編碼器172中的非法操作代碼檢測(cè)器174來進(jìn)行標(biāo)記,并采取適當(dāng)?shù)男袆?dòng)。例如,CPU170可以向報(bào)警電路162發(fā)送一信號(hào),該報(bào)警電路162又向存儲(chǔ)初始化向量、解碼密鑰和鑒別密鑰的存儲(chǔ)設(shè)備150發(fā)送一消滅(擦除)信號(hào)。
應(yīng)用密碼塊鏈接,任何對(duì)程序信息的試探將使得對(duì)每個(gè)后續(xù)塊進(jìn)行不同的解密。
此外,可以對(duì)外部存儲(chǔ)設(shè)備的地址線進(jìn)行加擾,以使得程序信息的順序塊是非順序地存儲(chǔ)的。也就是說,例如,每個(gè)包括八位的字節(jié)可以存儲(chǔ)在非順序的存儲(chǔ)器的地址單元中。于是,外部存儲(chǔ)設(shè)備110被稱為是加擾的存儲(chǔ)器。這里同樣可以使用密鑰。密鑰對(duì)于各個(gè)組或單位可以是不同的。
存儲(chǔ)設(shè)備110還存儲(chǔ)用于通過總線115將程序信息安全地傳送給ASIC105的塊緩沖器130、132和134的鑒別信息。鑒別信息也被稱為校驗(yàn)位,被傳送到ASIC105的校驗(yàn)位塊緩沖器136。
鑒別信息是附加在一個(gè)消息例如程序信息鏈后面的數(shù)據(jù),用以允許接收機(jī)驗(yàn)證該消息應(yīng)該作為可靠信息被接受。鑒別信息是消息(例如,鏈)內(nèi)容的一個(gè)函數(shù),例如何時(shí)使用一散列值或加密校驗(yàn)和(checksum)。散列值是通過用一公用函數(shù)映射一任意長度的數(shù)據(jù)鏈而獲得的固定長度值。在最佳實(shí)施例中,散列法用密鑰加密,鑒別信息在一個(gè)不同的密鑰下被加密。
外部存儲(chǔ)設(shè)備110的程序信息通過總線115傳送給一個(gè)或N個(gè)塊緩沖器,例如包括塊緩沖器130、132和134。雖然顯示了多個(gè)塊緩沖器,但最小只需要一個(gè)。
提供了加密/解密電路120來對(duì)這些塊進(jìn)行加密或解密。例如,當(dāng)由塊緩沖器或其他源接收明文數(shù)據(jù)、并且需要對(duì)明文數(shù)據(jù)進(jìn)行加密時(shí),電路120還可以提供編碼。編碼的數(shù)據(jù)接著可以通過緩沖器被發(fā)送到外部存儲(chǔ)設(shè)備。
鑒別電路125使用例如上述的DFFH功能對(duì)程序信息的明文塊進(jìn)行散列。隨著這些塊被解密,可以以一種同時(shí)串行的方式來執(zhí)行鑒別。當(dāng)塊1被解密時(shí),可以將其散列。當(dāng)塊2被解密時(shí),可以用第一塊的散列輸出對(duì)其進(jìn)行散列,以此類推。數(shù)據(jù)的散列用密鑰加密,以便只有知道了一保密或?qū)S妹荑€才能產(chǎn)生正確的散列?;蛘?,如上所述,對(duì)與鑒別過的數(shù)據(jù)(例如程序信息)進(jìn)行了XOR的鑒別信息(例如校驗(yàn)位)進(jìn)行解密,產(chǎn)生可以由硬件驗(yàn)證的一已知值。鑒別電路125和加密/解密電路120可以相互通信,并且可以共享相同的電路。
密碼塊鏈接可以用在從外部存儲(chǔ)設(shè)備向安全電路105傳送的塊鏈上。在1995年IEEE出版的美國新澤西Englewood Cliffs的W.Stallings的網(wǎng)絡(luò)和因特網(wǎng)的安全性第59-61頁中對(duì)密碼塊鏈接進(jìn)行了討論,該文章在此作為參考。密碼塊鏈接可以用在加密和散列中,但在最佳實(shí)施例中,它只用在牢靠的加密上。采用了一種單獨(dú)的散列函數(shù)。與密碼塊鏈接一起使用的塊加密算法是三次DES。
鏈長度可以在16和32個(gè)塊之間變化。鏈長度根據(jù)密鑰和地址參數(shù)在每個(gè)鏈的基礎(chǔ)上變化。
在存儲(chǔ)器和ASIC之間傳送的塊的序列順序是隨機(jī)的。與地址發(fā)生器相聯(lián)系的隨機(jī)數(shù)發(fā)生器訪問存儲(chǔ)器中各個(gè)塊的正確的存儲(chǔ)單元。
鑒別信息作為傳送的16到32個(gè)塊中的一個(gè)被發(fā)送。它可以以任何順序傳送。在解密后,將其與散列值進(jìn)行比較。
例如,在密碼塊鏈接中可以使用N=16個(gè)塊,每個(gè)塊具有八字節(jié)數(shù)據(jù)。應(yīng)用密碼塊鏈接,每個(gè)加密的數(shù)據(jù)塊依賴于當(dāng)前塊的明文數(shù)據(jù)和所有以前塊的明文數(shù)據(jù)。由于相同的明文輸入將產(chǎn)生依賴于其他明文塊的不同的加密數(shù)據(jù),所以塊鏈接提高了安全性。另外,處于鑒別信息中的額外數(shù)據(jù)也顯著地減少了。如果將16個(gè)塊中的一個(gè)指定為鑒別信息,則這表示只有程序信息的1/16=.0625或6.25%。如果N=32,則數(shù)值為1/32=.03125或3.13%。在最佳實(shí)施例中,鏈大小可以在16和32之間變化,所以平均下來該數(shù)值將為1/24=.0417或4.17%。也就是說,只有程序信息的4.17%是鑒別信息。
如果舉例來說提供了兩個(gè)鑒別信息塊而不是一個(gè)鑒別信息塊,這將發(fā)生變化。還存在著許多可能性。但動(dòng)態(tài)地鏈接降低了只由鑒別所需的存儲(chǔ)容量。
由于從存儲(chǔ)設(shè)備存取的鑒別信息量減少了,鏈接還允許使用更小的存儲(chǔ)部件,這就極大地減小了系統(tǒng)的成本,并且/或者提高了系統(tǒng)的通過量。下面還將結(jié)合圖2和3討論密碼塊鏈接。
密碼塊鏈接的一個(gè)潛在缺陷是當(dāng)一個(gè)在原定時(shí)間之前還沒有被解密和鑒別并且可能保存在高速緩存中的新代碼段需要被訪問時(shí)指令執(zhí)行的等待時(shí)間。由于只有在先前的塊已經(jīng)被解密時(shí)才能開始對(duì)一個(gè)塊進(jìn)行解密,所以這些塊必須順序地被解密。
可以使用更復(fù)雜的散列函數(shù),例如消息摘要(MD)5、安全散列算法(SHA)、甚至密碼塊鏈接。由于DFFH是基于DES的,所以選擇了DFFH。可以使用相同的硬件來完成解密和鑒別。可以控制DES機(jī)的輸入,以最大限度地利用硬件。雖然希望是單向函數(shù),但這并不是必須遵循的,因?yàn)槿绻b別算法使用了一保密密鑰,則由于任何了解保密密鑰的人都可以計(jì)算出正確的鑒別信息與提供的任何鑒別信息一致,一單向函數(shù)并不比一可逆算法例如密碼塊鏈接好多少。使用公用密鑰加密的鑒別比較好,因?yàn)榱私獍踩娐返膶S媒饷苊荑€并不會(huì)使侵權(quán)者得知如何對(duì)第一位置的散列進(jìn)行加密。公用加密密鑰必須是已知的。
對(duì)于任一種方案,總線115的大小可以為具有允許至少兩列指令或成組的程序信息立即被傳送的帶寬?;蛘?,總線115的大小可以為能夠傳送鏈的一整個(gè)塊(例如,八個(gè)字節(jié))、甚至兩個(gè)或更多個(gè)整塊??偩€115的大小還可以為能夠立即傳送一個(gè)或多個(gè)整個(gè)鏈。
一序列塊或者是已鑒別的并且可選地加密的指令,例如塊B1、B2、…、RN-1,或者是加密的并且可選地已鑒別的密碼塊。加密塊與密碼塊鏈接一起使用,但對(duì)于簡單塊鏈接是可選的。鑒別信息被包括在程序信息傳輸?shù)囊粋€(gè)校驗(yàn)位塊、例如塊BN中。
下面可以看到,在用密碼塊鏈接或簡單塊鏈接節(jié)省了額外數(shù)據(jù)的同時(shí),還獲得了所需的安全級(jí)。解開鑒別的試探的平均數(shù)是2n-1,其中鑒別長度為n位。為了提供足夠的安全級(jí),鑒別應(yīng)該在某些程度上反映出用于對(duì)指令加密的密鑰或多個(gè)密鑰的長度。否則,侵權(quán)者將攻擊系統(tǒng)最薄弱的部分,這有可能是鑒別信息本身。也就是說,侵權(quán)者不去試探密鑰以發(fā)現(xiàn)程序信息是在哪個(gè)密鑰下被加密的,而是可以試探鑒別信息,并使CPU處理合成的程序信息。如果加密為DES使用了一個(gè)至少七個(gè)字節(jié)的密鑰,則最好應(yīng)該為鑒別信息使用七個(gè)或八個(gè)字節(jié)。例如,對(duì)于長度為七字節(jié)(例如,長度為n=56位)的鑒別信息,平均需要255次試探,這與解開DES密鑰的困難程度是相似的。
當(dāng)一個(gè)八字節(jié)鑒別信息塊附加在一個(gè)八字節(jié)消息塊后時(shí),鑒別信息的額外量是50%(例如,8/(8+8))。然而,當(dāng)依據(jù)本發(fā)明使用塊鏈接時(shí),例如,一個(gè)七字節(jié)塊附加在一個(gè)包括16到32個(gè)八字節(jié)塊的鏈上,如上所述,額外量只有大約4.17%,安全性更牢靠了。因此,塊鏈接提供了鑒別信息額外量的顯著減少,同時(shí)保持了所需的安全級(jí)。
在本發(fā)明的另一個(gè)方面,提供了對(duì)于從外部存儲(chǔ)設(shè)備向ASIC105傳送的鏈的重新排序。下面將討論,在將塊加擾存儲(chǔ)在存儲(chǔ)設(shè)備之外還采用了這種重新排序,但也可以單獨(dú)使用重新排序。通過將鏈中的多個(gè)塊隨機(jī)地重新排序,可以阻止侵權(quán)者檢測(cè)關(guān)于處理電路中的程序信息執(zhí)行順序的信息。與字節(jié)和鏈的重新排序一樣,可以隨機(jī)地完成塊重新排序,這樣對(duì)相同代碼的重復(fù)執(zhí)行在每次將以不同的順序從外部存儲(chǔ)器取出數(shù)據(jù)。例如,對(duì)于字節(jié)的重新排序,如果每塊有八個(gè)字節(jié),則有8!=40,320種不同的順序?qū)@些字節(jié)排序。同樣,對(duì)于塊的重新排序,如果每個(gè)鏈有十六個(gè)塊,則有16!=2.09×1013種不同的順序?qū)@些塊排序。對(duì)于鏈的重新排序,如果每個(gè)程序信息序列有4個(gè)鏈,則有4!=24種不同的順序?qū)@些鏈排序。并且,可以一起使用這三種重新排序。則可能的置換總數(shù)將為40,320×2.09×1013×24=2.02×1019。
應(yīng)該注意的是,任何字段都可以是重新排序的基礎(chǔ),字節(jié)、塊和鏈都是位的任意單位。重新排序的字段可以是四位字節(jié)。而且,字節(jié)并不一定是八位,塊也并不一定是八字節(jié),等等。
了解了這一點(diǎn),重新排序操作可以允許在兩個(gè)或多個(gè)塊中進(jìn)行字節(jié)重新排序、在兩個(gè)或多個(gè)鏈中進(jìn)行塊重新排序、以及在兩個(gè)或多個(gè)程序信息序列中進(jìn)行鏈重新排序。這樣我們就得到了一個(gè)不同的結(jié)果。例如,對(duì)于字節(jié)重新排序,如果每塊八字節(jié),在兩塊上進(jìn)行字節(jié)重新排序,則有16!=2.09×1013種不同的順序?qū)@些字節(jié)排序。
如果密碼塊鏈接與重新排序一起使用,其中需要對(duì)塊的串行處理,則在解碼之前需要多個(gè)塊緩沖器來存儲(chǔ)所有相關(guān)字段。而且,如同下面結(jié)合圖6進(jìn)一步要討論的,如果在兩個(gè)或更多鏈中進(jìn)行重新排序,則需要夠兩個(gè)或多個(gè)鏈?zhǔn)褂玫膲K緩沖器。程序信息序列中的重新排序則需要更多的塊緩沖器。解碼可以一直被延遲到與最后的塊序列相聯(lián)系的字段被讀出的時(shí)候,因?yàn)楫?dāng)內(nèi)部進(jìn)行了重新排序時(shí),讀出的最后一塊可能是該鏈序列的第一塊。
使用密碼塊鏈接加強(qiáng)了安全性。然而,如同與在圖3中的XOR散列函數(shù)一起描述的,簡單塊鏈接避免了等待時(shí)間問題,并且可以與鏈、塊、字節(jié)或任何字段重新排序一起使用。不考慮鏈、塊、字節(jié)或字段的排序,在一個(gè)塊中的所有字節(jié)都可以用于執(zhí)行鑒別。另外,當(dāng)需要解密時(shí),每個(gè)塊獨(dú)立地進(jìn)行解密。
提供給外部存儲(chǔ)設(shè)備的地址數(shù)據(jù)可以隨機(jī)地選擇字段、字節(jié)、塊或鏈向ASIC105傳送??梢蕴峁┮粋€(gè)塊重新排序電路多路轉(zhuǎn)換器112,與總線115進(jìn)行通信,根據(jù)需要為加密/解密電路120和鑒別電路125對(duì)重新排序進(jìn)行逆變換,以執(zhí)行其功能。塊重新排序電路多路轉(zhuǎn)換器112、地址發(fā)生器160和地址加擾器164可以相互通信,并且可以根據(jù)需要與CPU170進(jìn)行通信,以協(xié)調(diào)重新排序步驟。地址發(fā)生器160可以響應(yīng)于一隨機(jī)數(shù)發(fā)生器166。隨機(jī)數(shù)發(fā)生器166可以為不需要遵守硬件中包含的任何算法的一個(gè)或多個(gè)鏈的字段提供隨機(jī)或偽隨機(jī)序列置換。
鏈、塊、字節(jié)和字段序列加擾一般可以用于實(shí)際上的任何將數(shù)據(jù)塊從一存儲(chǔ)器向安全電路傳送用于處理的方案。如上所述,由于在鑒別和解密可以開始之前所有字節(jié)必須被匯集,對(duì)每個(gè)塊內(nèi)的字節(jié)或子字段的順序進(jìn)行加擾不會(huì)影響解密等待時(shí)間。但重新排序使侵權(quán)者不清楚哪個(gè)密文相應(yīng)于哪個(gè)指令和其他數(shù)據(jù)塊。它還使侵權(quán)者不清楚存儲(chǔ)設(shè)備中的程序信息的結(jié)構(gòu)、順序和組織。
在最佳實(shí)施例中,由安全電路105讀入一整個(gè)八字節(jié)塊,第一字節(jié)相對(duì)于其他字節(jié)讀出的順序?qū)⒁粔K一塊地變化,并且在每次存儲(chǔ)設(shè)備被訪問時(shí)可以隨機(jī)地變化。但當(dāng)在安全電路中重新排列時(shí),對(duì)于一個(gè)必須進(jìn)行解密的塊只有一種正確的順序。對(duì)于密碼塊鏈接,其具有的優(yōu)點(diǎn)是只需要一個(gè)塊緩沖器,因?yàn)槭且粏蝹€(gè)塊的字節(jié)被重新排序了,但這將迷惑縮短到一更小的時(shí)間周期內(nèi)。在將單個(gè)字節(jié)裝入塊緩沖器之前,可以對(duì)外部存儲(chǔ)設(shè)備進(jìn)行重新安排或分類。
在本發(fā)明的另一個(gè)方面,可以將一個(gè)鏈中的各塊以一種新的模式寫回進(jìn)存儲(chǔ)設(shè)備。在對(duì)存儲(chǔ)設(shè)備的每次隨機(jī)讀取之后,以一種不同的隨機(jī)序列寫回?cái)?shù)據(jù)。與每個(gè)鏈相聯(lián)系的是一個(gè)存儲(chǔ)鏈的當(dāng)前基本順序序列的存儲(chǔ)設(shè)備。重新排序可以是隨機(jī)的。
還可以在存儲(chǔ)設(shè)備11O和安全電路105之間傳送假數(shù)據(jù)。假數(shù)據(jù)可以是由存儲(chǔ)設(shè)備110存儲(chǔ)的干擾(chaff)。這是永遠(yuǎn)不會(huì)由安全電路處理的數(shù)據(jù),但它可以可選地用作填充數(shù)據(jù),并且由安全電路解密并可選地鑒別。產(chǎn)生干擾是很容易的。在該干擾之前只執(zhí)行一轉(zhuǎn)移或跳轉(zhuǎn)操作。如果對(duì)于干擾所處的位置沒有進(jìn)行過調(diào)用、轉(zhuǎn)移或跳轉(zhuǎn),則該干擾將永遠(yuǎn)不會(huì)被執(zhí)行。假數(shù)據(jù)可以是其它鏈和指令序列的真解密數(shù)據(jù),這些鏈和指令序列可以在以后的時(shí)間被存取,并且可以處于不同的狀況。與干擾相同,該數(shù)據(jù)可以可選地用作填充數(shù)據(jù),并且被解密并用其它程序信息可選地鑒別。但安全電路并不對(duì)該數(shù)據(jù)進(jìn)行處理。冗余數(shù)據(jù)擾亂了侵權(quán)者分析鑒別過的程序信息的企圖。
傳送假數(shù)據(jù)的最好方式之一是通過可變長度鏈。所傳送塊的實(shí)際數(shù)目可以保持相同,而假塊數(shù)目可以改變。由于塊的重新排序,侵權(quán)者很難確定哪些塊可能是假塊。最佳實(shí)施例中的假塊實(shí)際上是永遠(yuǎn)不會(huì)被處理的數(shù)據(jù)。
可以對(duì)外部存儲(chǔ)設(shè)備110進(jìn)行加密,以使得程序信息塊和鑒別信息被存儲(chǔ)在存儲(chǔ)設(shè)備的非順序地址單元中。在存儲(chǔ)設(shè)備的加密中最好包括高位地址位,以使得任何程序信息塊都可以處于存儲(chǔ)空間中的任何位置??梢允褂锰鎿Q表(S表)來消除規(guī)律性并增加地址加密中的非線性。
特別地,對(duì)在外部存儲(chǔ)設(shè)備鏈接的已鑒別塊進(jìn)行加密,以便可以對(duì)一直在觀察存儲(chǔ)設(shè)備在通信路徑113上的存取的侵權(quán)者隱藏加密代碼的執(zhí)行??梢苑乐骨謾?quán)者了解正被執(zhí)行的專有算法。因此加密可以阻止侵權(quán)者確定存儲(chǔ)設(shè)備的內(nèi)容和通過其它硬件裝置有計(jì)劃地攻擊安全電路105。存儲(chǔ)設(shè)備的加密阻止侵權(quán)者確切地了解哪一個(gè)被加密的程序信息可能是攻擊目標(biāo)。通過確切地了解哪一個(gè)程序信息會(huì)使得系統(tǒng)的安全性易受破壞,侵權(quán)者將集中于擾亂該程序信息的處理。
如果單獨(dú)使用地址加擾和數(shù)據(jù)加密和鑒別,例如,不進(jìn)行數(shù)據(jù)重新排序,則在最小實(shí)施方案中只需要一個(gè)塊緩沖器。
伴隨著加擾可以使用一與安全電路105相聯(lián)系的地址發(fā)生器,以便向外部存儲(chǔ)設(shè)備提供尋址信息??梢蕴峁┮粋€(gè)數(shù)、例如隨機(jī)數(shù)來改變程序信息傳送的序列。將該序列信息用來多路傳輸適當(dāng)?shù)淖侄巍⒆止?jié)或塊緩沖器,以便在正確的時(shí)間與適當(dāng)?shù)淖止?jié)或塊進(jìn)行通信。然后根據(jù)尋址信息以所希望的順序?qū)?shù)據(jù)子字段、字節(jié)或塊的單個(gè)串從外部存儲(chǔ)設(shè)備傳送到塊緩沖器。將尋址信息提供給鑒別和解碼電路,以允許這些電路對(duì)數(shù)據(jù)進(jìn)行解擾以完成相應(yīng)的功能。
可以使用各種塊加密算法,例如三次DES。而且,加擾算法可以使用相同的替換框(S框)表作為DES,但可以只有較少的循環(huán)(round)。對(duì)于不同的應(yīng)用程序可以選擇循環(huán)數(shù),例如一個(gè)需要較低安全性的應(yīng)用程序使用較少的循環(huán),而一個(gè)需要更高安全性的應(yīng)用程序則使用DES調(diào)出的整個(gè)十六個(gè)循環(huán)。減少循環(huán)數(shù)會(huì)減少解碼操作的等待時(shí)間。
程序信息的與地址有關(guān)的解密和鑒別可以阻止侵權(quán)者在存儲(chǔ)設(shè)備中將正確地加密和鑒別的塊鏈到處移動(dòng)從而使得解碼器無序地處理程序信息。這種無序處理會(huì)使得解擾接收機(jī)對(duì)一數(shù)據(jù)傳輸進(jìn)行不正確地訪問和解擾。
如果可能的話,用于加密和解密和/或鑒別的密鑰應(yīng)該既有與地址有關(guān)的加擾,又有單元密鑰的依賴性。單元密鑰是對(duì)于每個(gè)解碼器唯一的密鑰,可以依賴于例如在制造時(shí)提供的解碼器編號(hào)。于是,希望密鑰與單個(gè)單元或單個(gè)單元組有關(guān)。否則,侵權(quán)者有可能從一個(gè)單元讀出外部存儲(chǔ)設(shè)備中的加擾密鑰,然后將相同的加擾密鑰放進(jìn)另一個(gè)單元的外部存儲(chǔ)設(shè)備中。這可能會(huì)成為侵權(quán)者在單元之間復(fù)制對(duì)服務(wù)的授權(quán)的一種方式,必須被阻止。
與地址有關(guān)的加擾和單元密鑰的相關(guān)性還防止將對(duì)在一個(gè)解碼器中用于鑒別和/或加擾一程序信息塊的密鑰的知識(shí)用在另一個(gè)解碼器中。例如,在沒有單元相關(guān)性的情況下,如果該保密密鑰通過VLSI試探被發(fā)現(xiàn)了,則可將其用于為其他解碼器對(duì)程序信息進(jìn)行正確地鑒別和解密。換句話說,如果一個(gè)或多個(gè)密鑰對(duì)不止一個(gè)單元是有用的,則侵權(quán)者可以使用從一個(gè)單元獲得的該密鑰或這些密鑰來為另一個(gè)單元對(duì)程序信息進(jìn)行加密、加密和鑒別或鑒別。為了獲得與單元有關(guān)的加擾,可以在單元形成時(shí)使用一個(gè)應(yīng)用一可選的芯片上的編碼電路的下載處理來加載外部閃速、EPROM、帶有后備電池的RAM或大容量存儲(chǔ)設(shè)備。這種編碼電路可以與用于在安全電路和存儲(chǔ)設(shè)備之間提供雙向讀/寫能力的電路是同一個(gè)電路。或者,由構(gòu)造系統(tǒng)在單元形成時(shí)應(yīng)用單元的保密或?qū)S妹荑€或多個(gè)密鑰知識(shí)對(duì)這些外部存儲(chǔ)設(shè)備進(jìn)行加載。
圖2是依據(jù)本發(fā)明的密碼塊鏈接加密方案的圖解表示。將明文程序信息塊變換為一個(gè)包含加密的程序信息塊的鏈,其中程序信息包括鑒別信息。在顯示的例子中,每個(gè)加密的程序信息塊依賴于當(dāng)前塊的明文程序信息和前一塊的明文程序信息。
圖中顯示了一鑒別電路203和一加密電路200。特別地,鑒別電路203包括散列函數(shù)204、206和208和一個(gè)加法器214。函數(shù)204、206和208可以使用上面討論的DFFH函數(shù)或?qū)嶋H上的任何散列函數(shù)。在函數(shù)204、206和208對(duì)一密鑰進(jìn)行連續(xù)地散列,以便向加法器214提供一散列值。加法器214還接收一個(gè)由硬件已知的零或其他值,以便向加密電路200提供一輸出值,加密電路200可以包括一個(gè)由加密函數(shù)218、222和224表示的三次DES加密函數(shù)。
加密函數(shù)218接收一個(gè)為低位地址位和一密鑰DK6的XOR的保密密鑰,而加密函數(shù)222接收一個(gè)為高位地址位和一密鑰DK5的XOR的保密密鑰,加密函數(shù)224接收一個(gè)為一單元密鑰和一密鑰DK6的XOR的保密密鑰。一加法器226接收來自加密函數(shù)224的輸出和明文塊AN-1,并提供密文鑒別塊BN。加法器226實(shí)質(zhì)上對(duì)明文數(shù)據(jù)進(jìn)行了散列。
由相應(yīng)的三密鑰加密函數(shù)接收包括用于對(duì)數(shù)據(jù)傳輸進(jìn)行解擾的程序信息的明文塊A1,…,AN-1,并用于后續(xù)的密文塊的XOR。例如,由加密函數(shù)228、232和234處理A1,其中每個(gè)函數(shù)響應(yīng)于如圖所示的密鑰。一加法器236接收加密函數(shù)234的輸出和一初始化向量(IV),以提供密文塊B1。
由加密函數(shù)242、244和246處理A2,其中每個(gè)函數(shù)響應(yīng)于如圖所示的密鑰。一加法器248接收加密函數(shù)246的輸出和明文塊A1,以提供密文塊B2。因此,B2是A1和A2的函數(shù)。同樣,由加密函數(shù)252、254和256處理AN-1,其中每個(gè)函數(shù)響應(yīng)于如圖所示的密鑰。一加法器258接收加密函數(shù)256的輸出和明文塊AN-2,以提供密文塊BN-1。
IV可以為零,或者為提供給塊重新排序電路112或其它隨機(jī)化函數(shù)的地址數(shù)據(jù)或單元密鑰的函數(shù)。對(duì)于該實(shí)例假設(shè)塊大小為八個(gè)字節(jié)。而且,雖然顯示的三次DES對(duì)于每個(gè)DES操作使用三個(gè)不同的密鑰,也可以使用更少或更多的密鑰。通過在循環(huán)中使用不同的密鑰而不是一單個(gè)密鑰,可以將更多的密鑰引入DES操作中。
可以將更多密鑰用在加密函數(shù)中,并且可以采用附加的和/或替代的加密步驟。每個(gè)密文塊加密函數(shù)最好使用相同的加密算法,雖然這并不是必須的。
可以將N個(gè)加密塊B1到BN提供給另一個(gè)加密函數(shù),例如圖1中的塊重新排序電路多路轉(zhuǎn)換器112,根據(jù)一地址數(shù)據(jù)信號(hào)執(zhí)行對(duì)N個(gè)塊的塊加擾。例如,對(duì)于N=8塊,這些塊可以以下列順序存儲(chǔ)在外部存儲(chǔ)設(shè)備110的順序地址中B1,B3,B2,B5,B4,B6,B8,B7。這些塊被稱作以一種隨機(jī)或非順序的方式存儲(chǔ),因?yàn)樗鼈儾皇谴鎯?chǔ)在存儲(chǔ)設(shè)備的連續(xù)地址中的。
應(yīng)用上述的臨時(shí)重新排序方案,可以接著以另一種序列將這些塊傳送到塊緩沖器中,例如,B5,B3,B2,B6,B4,B7,B8,B1,這與將塊提供給重新排序電路112的順序和存儲(chǔ)序列都不一樣。
鑒別和加密函數(shù)和相關(guān)的元件不必與外部存儲(chǔ)設(shè)備110安排在一起。也就是說,加密電路200可以位于一有線電視系統(tǒng)始端或一衛(wèi)星上行鏈路,而存儲(chǔ)設(shè)備是在消費(fèi)者家中的一解擾接收機(jī)的一部分。已鑒別和/或已加密的程序信息可以通過任何方便的信道提供給存儲(chǔ)器110,例如,通過電話、衛(wèi)星、有線電視鏈路或計(jì)算機(jī)網(wǎng)絡(luò)。已鑒別和/或已加密的程序信息也可以通過一智能卡進(jìn)行本地安裝,或者可以在解擾接收機(jī)的安裝和初始化之前以加密的程序信息對(duì)存儲(chǔ)設(shè)備110本身進(jìn)行預(yù)加載。
再參考圖1中的解擾接收機(jī)100,由地址加擾器164使用的地址數(shù)據(jù)可以被存儲(chǔ)在ASIC105的一地址發(fā)生器160內(nèi)。將地址數(shù)據(jù)通過路徑165提供給外部存儲(chǔ)器110,以便可以以所希望的序列(例如,B1,B2,…,BN)讀出加密指令的加擾塊。特別地,可以將組成一個(gè)鏈的塊從存儲(chǔ)器110中非順序地讀出來,以便通過線113以未加擾的順序提供這些塊??蛇x地,可以將這些塊以加擾的或隨機(jī)時(shí)間序列從外部存儲(chǔ)設(shè)備110向安全電路105發(fā)送,并且在ASIC105應(yīng)用塊重新排序電路多路轉(zhuǎn)換器112解擾。地址數(shù)據(jù)還可以由外部存儲(chǔ)設(shè)備110用來以一種加擾(例如,非順序的順序)方式來發(fā)送不同的塊鏈。
將地址數(shù)據(jù)和連續(xù)的密碼塊鏈的加密塊B1到BN提供給ASIC105的加密/解密電路120和鑒別電路125。加密/解密電路120根據(jù)需要使用地址數(shù)據(jù)對(duì)密碼塊鏈序列進(jìn)行解擾。在塊重新排序電路多路轉(zhuǎn)換器112還會(huì)進(jìn)行重新排序。加密/解密電路120還從ASIC105的解密密鑰存儲(chǔ)器150接收保密解密密鑰,并執(zhí)行一解密算法,該算法是用于提供加密塊的算法的逆算法。下面將結(jié)合圖3討論該解密處理。
應(yīng)用塊鏈接方案,每個(gè)鏈的塊B1到BN必須連續(xù)地被解密。也就是說,B1第一個(gè)被解密,然后將結(jié)果用于對(duì)B2解密,以此類推。一旦B1到BN-1已經(jīng)被解密,則可以對(duì)鑒別塊BN進(jìn)行解密,并且可以由鑒別電路125計(jì)算鑒別信息(例如,校驗(yàn)和或散列),以鑒別該鏈。正確的鑒別信息可以被預(yù)先存儲(chǔ)在鑒別電路125中,并與計(jì)算出的鑒別信息進(jìn)行比較,以提供所必需的驗(yàn)證。最后,得到成行的明文(例如,解密的)程序信息并提供給高速緩存140。
為了實(shí)現(xiàn)外部存儲(chǔ)設(shè)備110和安全電路105之間的安全通信,從安全電路向存儲(chǔ)設(shè)備輸出的程序信息還必須被鑒別和/或加密。于是,為了改變外部存儲(chǔ)設(shè)備110中的字節(jié)或數(shù)據(jù)串,整個(gè)塊和塊鏈必須被讀進(jìn)ASIC,作出改變,然后才可以計(jì)算出正確的鑒別信息。在計(jì)算出鑒別信息之后,例如使用簡單塊鏈接寫出新加密的塊信息和改變的鑒別信息??梢砸砸粋€(gè)與取出時(shí)不同的基本序列將程序信息寫回到存儲(chǔ)設(shè)備。
未修改的塊不需要被寫出,除非在存儲(chǔ)器中的單元已經(jīng)改變。對(duì)于密碼塊鏈接,改變一個(gè)數(shù)據(jù)塊可以改變一個(gè)鏈中的后續(xù)數(shù)據(jù)塊。這些受影響的塊同樣需要被寫出來。
這里有一些安全電路需要同外界以明文模式進(jìn)行通信的例子,例如打印機(jī)、錯(cuò)誤消息、顯示目的等等。因此,加密/解密電路120和/或驗(yàn)證/鑒別電路125應(yīng)該有一種禁止模式,從而程序信息可以被傳送或有條件地繞過。在這樣一種模式中,由于不需要加密或鑒別,則程序信息不必以一個(gè)塊或鏈的形式被傳送。這種模式還可以用于系統(tǒng)調(diào)試和測(cè)試。
從存儲(chǔ)設(shè)備傳送不同類型的程序信息可以使用不同的鏈長度。需要較少等待時(shí)間的程序時(shí)間可以具有較短的鏈長度??梢匀萑梯^長等待時(shí)間的程序信息可以具有較長的鏈長度,從而節(jié)省相應(yīng)的鑒別信息的存儲(chǔ)量。因此,可以根據(jù)各個(gè)鏈的程序信息的處理等待時(shí)間來設(shè)置每個(gè)鏈的長度。
例如,在一個(gè)鏈中可以只有兩個(gè)程序信息塊,一個(gè)是數(shù)據(jù)塊,一個(gè)是鑒別信息塊。雖然即使只改變一單個(gè)字節(jié)也必須首先取出并解密整個(gè)程序信息鏈,數(shù)據(jù)中的改變不必立即寫出外部存儲(chǔ)設(shè)備。數(shù)據(jù)可以存儲(chǔ)在內(nèi)部,例如存儲(chǔ)在高速緩存140中,直到外部存儲(chǔ)設(shè)備需要被更新。此時(shí),ASIC必須將帶有修改的整個(gè)鏈寫回到外部存儲(chǔ)設(shè)備。
再回到加密/解密電路120,將解密的程序信息提供給一高速緩存140臨時(shí)存儲(chǔ),并提供給一CPU170執(zhí)行??梢圆捎酶郊拥奶幚碛布蜍浖筒襟E應(yīng)用程序信息對(duì)一加擾數(shù)據(jù)傳輸進(jìn)行解碼,這些在圖中未顯示,但是是本領(lǐng)域中所公知的。
高速緩存140是一個(gè)具有相對(duì)高速存取并提供緩沖能力的RAM,大小可為能存儲(chǔ)相當(dāng)大的數(shù)據(jù)量。高速緩存140可以存儲(chǔ)成千上萬個(gè)字節(jié),這相應(yīng)于許多塊鏈的指令和操作數(shù)據(jù)的大小。CPU可以執(zhí)行來自第一密碼塊鏈的程序信息,同時(shí)加密/解密電路120對(duì)來自后續(xù)的第二密碼塊鏈的塊進(jìn)行解密。第二鏈可以直接跟著第一鏈,或者由一個(gè)或多個(gè)中間鏈將其與第一鏈分開。因此,由于鑒別電路、解碼電路和CPU的交錯(cuò)工作,可以提高系統(tǒng)的通過量。一般地,雖然在CPU中程序信息的執(zhí)行時(shí)間一般比加密/解密電路120中的解密時(shí)間要快,通過協(xié)調(diào)解碼和執(zhí)行行為,并且使加密/解密算法中使用的循環(huán)數(shù)最優(yōu)化,可以達(dá)到高效率。
通過寫由CPU執(zhí)行的程序信息例如指令以便與塊鏈傳送方案一致,可以實(shí)現(xiàn)更高的效率。特別地,成行指令中的程序信息量可以與鏈中的塊大小和塊數(shù)量相一致。例如,成行指令應(yīng)該在一個(gè)塊鏈中整個(gè)地傳送,而不是將其分成兩個(gè)鏈,以避免要等到第二塊鏈被解碼才能恢復(fù)一行的剩下部分。一個(gè)指令一般只有幾個(gè)字節(jié)長(例如,1-4個(gè)字節(jié)),所以一個(gè)塊鏈一般包括幾個(gè)指令。
高速緩存140可以可選地接收一個(gè)來自地址發(fā)生器160的信號(hào),以協(xié)調(diào)程序信息向CPU170的存儲(chǔ)和傳送。例如,該信號(hào)可以通知高速緩存140另外的塊鏈正被傳送到緩沖器、鑒別電路125和加密/解密電路120,以使得另外的可執(zhí)行程序信息將由高速緩存140接收。
可以提供一個(gè)或多個(gè)與高速緩存140和CPU170相連的寄存器180。而且,可以使用一個(gè)小的內(nèi)部ROM來存儲(chǔ)在ASIC105中需要的引導(dǎo)或其它程序信息。
圖3是依據(jù)本發(fā)明的一個(gè)密碼塊鏈接解密方案的圖解表示。所顯示的方案是圖2中的加密方案的對(duì)應(yīng)方案。當(dāng)需要獲得所需序列的字段用于解密時(shí)執(zhí)行重新排序。提供了一鑒別電路303和解密電路300。在解密電路,對(duì)每個(gè)密文塊B1,…,BN進(jìn)行解密。
首先,各個(gè)密文塊與先前的明文塊或一初始化向量進(jìn)行XOR。特別地,B1和在加密期間使用的IV在一加法器320接收,以便向一三次DES函數(shù)提供一輸出,該三次DES函數(shù)包括解密函數(shù)322、324和326。從解密函數(shù)326輸出明文塊A1,并將其提供給一加法器330和一散列函數(shù)304。在散列函數(shù)304,A1和一密鑰被散列,以便向連續(xù)的散列函數(shù)306和308和一加法器310提供一輸出。
加法器330接收A1和B2,以便向解密函數(shù)332、334和336提供輸出,以提供明文塊A2。同樣,一加法器340接收AN-2和BN-1,以便向解密函數(shù)342、344和346提供輸出,以提供明文塊AN-1。一加法器350接收鑒別塊BN和AN-1,以向解密函數(shù)352、354和356提供一個(gè)值。將解密函數(shù)356的輸出與來自散列函數(shù)308的一散列值一起提供給一加法器310,以產(chǎn)生一個(gè)為1或0的輸出。如果輸出為0,則鑒別值是有效的,因?yàn)樗c散列值相匹配,并且設(shè)置一允許信號(hào)以使處理繼續(xù)進(jìn)行。然而,如果加法器310的輸出為1,則鑒別值無效,并且可以在報(bào)警電路162初始化一報(bào)警狀態(tài),以提供一消滅(擦除)信號(hào)來部分或全部地擦除密鑰存儲(chǔ)設(shè)備150的內(nèi)容。
當(dāng)使用塊重新排序時(shí),試圖試探程序信息和鑒別信息值的侵權(quán)者很可能會(huì)生成無效的操作代碼。無效的操作代碼是沒有相應(yīng)的操作的虛(hex)數(shù)據(jù)指令。存在著各種選項(xiàng),用于處理未檢查出的鑒別值或操作代碼。一種可能性是執(zhí)行安全電路的復(fù)位,這需要侵權(quán)者為另一次攻擊重新構(gòu)造和重新初始化ASIC。
另一種可能性是使ASIC中的處理器跳轉(zhuǎn)到一個(gè)無限的“空操作”(NOP)循環(huán)。這是ASIC不執(zhí)行任何實(shí)質(zhì)操作的狀態(tài),需要侵權(quán)者首先檢測(cè)NOP操作,然后它自己強(qiáng)制復(fù)位,并為另一次攻擊重新構(gòu)造和重新初始化ASIC?;蛘?,可以對(duì)在預(yù)先存儲(chǔ)值和解密值之間的不匹配進(jìn)行計(jì)數(shù),以便當(dāng)檢測(cè)到的不匹配數(shù)達(dá)到一閾值時(shí)擦除一個(gè)或所有存儲(chǔ)的密鑰。這些密鑰可以是敏感密鑰,從而外界的了解將對(duì)安全性產(chǎn)生主要的破壞。對(duì)它們的擦除將會(huì)使一個(gè)原本為好的單元出現(xiàn)永久性的故障。
另一種可能的對(duì)抗措施是擦除一個(gè)臨時(shí)密鑰,例如一個(gè)傳送的密鑰,而不是一個(gè)在單元初始化或制造時(shí)加載的密鑰。這強(qiáng)迫侵權(quán)者與網(wǎng)絡(luò)服務(wù)提供者聯(lián)系以便重新授權(quán),從而潛在地暴露出侵權(quán)者。在側(cè)重于安全性的最佳實(shí)施例中,所有密鑰都被擦除。
圖4是依據(jù)本發(fā)明的一個(gè)簡單塊鏈接加密方案的圖解表示。如上所述,這種結(jié)構(gòu)可以避免圖2和3中的密碼塊鏈接技術(shù)所具有的等待時(shí)間問題。對(duì)所有明文塊的加密可以獨(dú)立地并且大致并行地進(jìn)行。鑒別信息的加密和解密依賴于明文塊。但由于對(duì)一個(gè)塊的修改不會(huì)影響除了鑒別信息的其它塊,簡單塊加密技術(shù)對(duì)于侵權(quán)者的一些試探攻擊具有更大的敏感性。
這里提供了鑒別電路403和加密電路400。對(duì)明文程序信息塊A1,A2,…,AN進(jìn)行處理,以分別提供相應(yīng)的密文塊B1,B2,…,BN。密文塊中的一塊,一般表示為Bi,是一個(gè)鑒別塊,并且可以處于其它密文塊中的任何位置(例如,1≤i≤N)。
在加密電路400,塊A1在函數(shù)402被加密,以提供塊B1,塊A2在函數(shù)404被加密,以提供塊B2,塊AN-1在函數(shù)408被加密,以提供塊BN-1,以及塊AN在函數(shù)410被加密,以提供塊BN。另外,將每個(gè)明文塊提供給鑒別電路403中的一加法器412,以便向一加密函數(shù)406提供一個(gè)值,產(chǎn)生一密文鑒別塊Bi。Bi可以是第一個(gè)塊B1、最后一塊BN、或者二者之間的任何塊。加法器412還接收一個(gè)硬件已知的零或其它值。
每個(gè)用于非鑒別塊的加密函數(shù),例如函數(shù)402、404、408和410可以在相同的密鑰K1下操作,該密鑰K1是由一單元密鑰、高位地址位、一保密密鑰DK1和低位地址位的XOR得到的。用于鑒別塊的加密函數(shù)、例如函數(shù)406可以在一個(gè)不同的密鑰K2下操作,該密鑰K2是應(yīng)用一保密密鑰DK2得到的。如前所述,可以將加密的塊提供給塊重新排序電路。
依據(jù)本發(fā)明,通過提供一個(gè)對(duì)明文塊A1,A2,…,AN和一個(gè)預(yù)先存儲(chǔ)的值進(jìn)行XOR的加法器412,從明文塊導(dǎo)出鑒別信息。接著在函數(shù)406對(duì)加法器412的輸出進(jìn)行加密,以提供加密的鑒別塊Bi。事實(shí)上,在加法器412之外,還可以使用任何散列函數(shù),或者用來代替加法器412。而且,不必將每個(gè)明文塊都輸入進(jìn)加法器412。
圖5是依據(jù)本發(fā)明的一簡單塊鏈接解密方案的圖解表示。解密器是圖4中的加密器的對(duì)應(yīng)裝置。當(dāng)需要獲得所需序列的塊用于解密時(shí)執(zhí)行重新排序。
這里提供了解密電路500和鑒別電路503。解密函數(shù)502、504、508和510使用如圖所示的密鑰K1,用來分別對(duì)密文塊B1,B2,BN-1和BN進(jìn)行解密,以提供明文塊A1,A2,AN-1和AN。在函數(shù)506使用一個(gè)不同的密鑰對(duì)密文鑒別塊Bi進(jìn)行解密。將每個(gè)解密函數(shù)的輸出提供給一加法器512,以提供一散列值,該散列值隨后在加法器514與一個(gè)預(yù)先存儲(chǔ)的硬件值進(jìn)行求和。
如果加法器514的輸出為0,則散列值和硬件值相同,鑒別數(shù)據(jù)被證實(shí),從而允許后續(xù)的處理。但如果加法器514的輸出為1,則散列值和硬件值不同,鑒別數(shù)據(jù)未被證實(shí),于是設(shè)置一報(bào)警狀態(tài)。
圖6是依據(jù)本發(fā)明的另一個(gè)加密密鑰發(fā)生器/解擾接收機(jī)裝置的示意圖。相似標(biāo)號(hào)的部件與圖1中的部件相對(duì)應(yīng)。接收機(jī)一般地顯示為600,包括分別用于第一鏈的第一、第二和第N塊的鏈塊緩沖器130、132和134,和分別用于第二鏈的第一、第二和第M塊的塊緩沖器630、632和634。采用這個(gè)方案,兩個(gè)或多個(gè)塊(每個(gè)鏈中一個(gè)塊)可以同時(shí)在線113上進(jìn)行傳送。此外,可以提供另外的塊緩沖器來存儲(chǔ)來自多于兩個(gè)鏈的數(shù)據(jù)。每個(gè)鏈可以具有相同的或不同的長度。
加密/解密電路120和鑒別電路125處理鏈1,同時(shí)加密/解密電路620和鑒別電路625處理鏈2??梢愿鶕?jù)需要為每個(gè)鏈將來自密鑰存儲(chǔ)設(shè)備150的數(shù)據(jù)提供給電路120、125、620和625。此外,雖然顯示的是分離部件,鑒別電路125和加密/解密電路120可以與鑒別電路625和加密/解密電路620共享共同的電路。
圖6的實(shí)施例在使用密碼塊鏈接時(shí)可以在兩個(gè)或更多鏈中進(jìn)行重新排序。如上所述,當(dāng)使用密碼塊鏈接時(shí),一個(gè)鏈中的每個(gè)塊必須被臨時(shí)存儲(chǔ)以恢復(fù)鑒別塊。因此接收機(jī)600可以提供兩個(gè)或更多密碼塊鏈的并行處理、在兩個(gè)或更多鏈中的鏈與鏈的重新排序或者塊與塊的重新排序。
因此,可以看到,本發(fā)明提供了一種通過以一簡單塊鏈從外部存儲(chǔ)設(shè)備向一安全電路傳送已鑒別并可選地加密的程序信息、對(duì)加擾數(shù)據(jù)傳輸進(jìn)行解擾的裝置。還以密碼塊鏈從外部存儲(chǔ)設(shè)備向安全電路傳送加密并可選地鑒別的程序信息。該方案允許容易地對(duì)解擾指令作出修改或其它改變而不必修改安全電路。
另外,使用塊鏈接提高了系統(tǒng)通過量,并通過減少額外鑒別信息量而減少了系統(tǒng)成本。通過提供一個(gè)高速緩存來在一個(gè)時(shí)鐘周期內(nèi)向CPU傳送兩行或更多行已解密或已鑒別的程序信息,并且通過控制解密數(shù)據(jù)向高速緩存和CPU傳送的塊解碼的計(jì)時(shí),可以獲得更高的效率。
本發(fā)明的另一個(gè)實(shí)施例使用簡單塊加密來代替密碼塊鏈接。采用這個(gè)方案,與密碼塊鏈接一樣,使用一個(gè)大的鑒別字段對(duì)鏈中的塊進(jìn)行鑒別。但可以大致并行地而不是串行地對(duì)塊鏈進(jìn)行解密和鑒別。
除了對(duì)外部存儲(chǔ)設(shè)備的存儲(chǔ)進(jìn)行地址加擾之外,還提供了使用任何字段例如字節(jié)、塊和/或鏈對(duì)塊鏈進(jìn)行的重新排列。
另外,可以提供一種雙向能力,允許程序信息從安全電路向外部存儲(chǔ)設(shè)備傳送。程序信息不必被加密,而為了安全只進(jìn)行鑒別。
雖然已經(jīng)結(jié)合各種特定實(shí)施例對(duì)本發(fā)明進(jìn)行了說明,本領(lǐng)域普通技術(shù)人員將會(huì)理解,在不偏離由權(quán)利要求陳述的本發(fā)明的精神和范圍的情況下,可以作出許多修改和改變。
例如,本發(fā)明特別適用于阻止專有軟件算法的復(fù)制和逆向工程,并且用于對(duì)加密的應(yīng)用程序進(jìn)行保密,例如諸如收費(fèi)電視節(jié)目的數(shù)據(jù)傳輸?shù)慕鈹_,以防止未授權(quán)的用戶接收電視廣播。本發(fā)明同樣還可用于其它應(yīng)用程序,包括用于電子存款交易、房屋訪問控制、電子游戲、由交易者使用的商品和股票數(shù)據(jù)、通過因特網(wǎng)或其它計(jì)算機(jī)網(wǎng)絡(luò)傳送的數(shù)據(jù)的終端和智能卡。
此外,本發(fā)明可與其它加密方案兼容,例如流密碼,或者流密碼和密碼塊鏈接的組合,例如共同加擾算法(CSA)。
另一個(gè)這樣的方案是公用密鑰加密。因?yàn)槊總€(gè)塊和鏈與大小可以為2048位(256個(gè)八位字節(jié))的所謂的RSA公用密鑰系統(tǒng)的組件尺寸相比相對(duì)較小,所以可以使用RSA對(duì)一個(gè)或多個(gè)程序信息鏈進(jìn)行加密。如果使用了RSA公用密鑰系統(tǒng),則最好使用一個(gè)不平衡的指數(shù)對(duì),從而解密專用指數(shù)較小,例如等于三。這將降低程序信息等待時(shí)間。在解密之后,如同如上所述的在塊加密技術(shù)中一樣,可以對(duì)鑒別信息進(jìn)行校驗(yàn),進(jìn)行解密和校驗(yàn),或者只進(jìn)行校驗(yàn)。這使得設(shè)置解密的鑒別值變得很困難。并且,如上所述,可以使用保密密鑰和公用密鑰的組合。
權(quán)利要求
1.一種處理程序信息的裝置,包括一安全電路,包括一中央處理單元(CPU)和用于存儲(chǔ)至少一個(gè)程序信息塊的至少一個(gè)塊緩沖器;一外部存儲(chǔ)設(shè)備,用于存儲(chǔ)所述安全電路外部的程序信息;一第一通信路徑,用于將一組所述程序信息塊以第一塊鏈從所述外部存儲(chǔ)設(shè)備向所述至少一個(gè)塊緩沖器傳送;以及一第二通信路徑,用于將程序信息從至少一個(gè)塊緩沖器向CPU傳送,以在其中進(jìn)行處理。
2.如權(quán)利要求1所述的裝置,其中所述安全電路包括一鑒別電路,用于鑒別所述程序信息。
3.如權(quán)利要求2所述的裝置,其中所述塊鏈?zhǔn)且粋€(gè)簡單塊鏈,以使得在所述第一塊鏈中的所述一組塊由所述鑒別電路基本上并行地進(jìn)行處理。
4.如權(quán)利要求2或3所述的裝置,其中將所述程序信息的所述第一塊鏈和一個(gè)后續(xù)的第二塊鏈在外部存儲(chǔ)設(shè)備和所述至少一個(gè)塊緩沖器之間進(jìn)行傳送;以及所述鑒別電路用于鑒別所述第一塊鏈的程序信息的至少一個(gè)部分,同時(shí)將所述第二塊鏈的至少一個(gè)部分在所述第一通信路徑上傳送。
5.如權(quán)利要求2至4中的一個(gè)所述的裝置,其中所述第一通信路徑用于將程序信息塊以第二鏈從所述存儲(chǔ)設(shè)備向所述至少一個(gè)緩沖器傳送;以及所述鑒別電路用于從所述第一塊鏈的至少一個(gè)部分和所述第二塊鏈的至少一個(gè)部分基本上并行地鑒別程序信息。
6.如權(quán)利要求2至5中的一個(gè)所述的裝置,還包括一個(gè)安排在所述第二通信路徑中的高速緩存器,用于在將已鑒別的程序信息提供給所述CPU之前臨時(shí)存儲(chǔ)已鑒別的程序信息。
7.如前面任一個(gè)權(quán)利要求所述的裝置,還包括用于檢測(cè)程序信息中的非法操作代碼的裝置。
8.如前面任一個(gè)權(quán)利要求所述的裝置,其中對(duì)所述程序信息的至少一部分進(jìn)行隨機(jī)排列以提供所述塊鏈。
9.如前面任一個(gè)權(quán)利要求所述的裝置,還包括地址發(fā)生裝置,用于向外部存儲(chǔ)設(shè)備提供尋址信息,用于將所述程序信息塊以所需序列從外部存儲(chǔ)設(shè)備向所述至少一個(gè)塊緩沖器傳送。
10.如前面任一個(gè)權(quán)利要求所述的裝置,其中所述程序信息包括多個(gè)將由所述CPU連續(xù)處理的串。
11.如前面任一個(gè)權(quán)利要求所述的裝置,其中所述程序信息塊被存儲(chǔ)在外部存儲(chǔ)設(shè)備的加擾的存儲(chǔ)位置中。
12.如前面任一個(gè)權(quán)利要求所述的裝置,其中將帶有基本上隨機(jī)變化長度的所述程序信息鏈從外部存儲(chǔ)設(shè)備向所述至少一個(gè)塊緩沖器傳送。
13.如權(quán)利要求12所述的裝置,還包括地址發(fā)生裝置,用于向外部存儲(chǔ)設(shè)備提供地址信息,用于將所述程序信息塊以所需順序從外部存儲(chǔ)設(shè)備向所述至少個(gè)塊緩沖器傳送;其中基本上隨機(jī)變化的長度是根據(jù)所述地址信息來確定的。
14.如前面任一個(gè)權(quán)利要求所述的裝置,還包括用于提供對(duì)所述第一塊鏈的基本上隨機(jī)的塊的重新排序、以及對(duì)所述第一塊鏈的一個(gè)塊的基本上隨機(jī)的重新排序以便將一個(gè)已重新排序的鏈從外部存儲(chǔ)設(shè)備向所述至少一個(gè)塊緩沖器傳送的裝置。
15.如前面任一個(gè)權(quán)利要求所述的裝置,其中使用基本上隨機(jī)變化的序列將所述程序信息單元從外部存儲(chǔ)設(shè)備向所述至少一個(gè)塊緩沖器傳送。
16.如權(quán)利要求15所述的裝置,其中所述程序信息單元包括塊鏈。
17.如前面任一個(gè)權(quán)利要求所述的裝置,其中將多個(gè)程序信息以變化長度單位從外部存儲(chǔ)設(shè)備向所述安全電路傳送;以及每個(gè)單元的長度根據(jù)各個(gè)單元的相關(guān)程序信息的處理等待時(shí)間來確定。
18.如前面任一個(gè)權(quán)利要求所述的裝置,其中所述程序信息包括不會(huì)由CPU處理的假數(shù)據(jù)。
19.如前面任一個(gè)權(quán)利要求所述的裝置,其中對(duì)存儲(chǔ)在外部存儲(chǔ)設(shè)備中的所述程序信息進(jìn)行加密;所述安全電路包括一個(gè)解密電路,響應(yīng)于所述至少一個(gè)塊緩沖器,用于對(duì)加密的程序信息進(jìn)行解密;以及所述第二通信路徑用于將解密的程序信息從解密電路向CPU傳送,以便在其中進(jìn)行處理。
20.如權(quán)利要求19所述的裝置,其中將所述程序信息的所述第一塊鏈和一個(gè)后續(xù)的第二塊鏈在外部存儲(chǔ)設(shè)備和所述至少一個(gè)塊緩沖器之間傳送;以及所述解密電路用于對(duì)所述第一塊鏈的程序信息的至少一個(gè)部分解密,同時(shí),在所述第一通信路徑上傳送所述第二塊鏈的至少一個(gè)部分。
21.如權(quán)利要求19或20所述的裝置,其中所述第一通信路徑用于將程序信息塊以第二鏈從所述存儲(chǔ)設(shè)備向所述至少一個(gè)緩沖器傳送;以及所述解密電路用于從所述第一塊鏈的至少一個(gè)部分和所述第二塊鏈的至少一個(gè)部分基本上并行地對(duì)程序信息進(jìn)行解密。
22.如權(quán)利要求19至21中的一個(gè)所述的裝置,其中一個(gè)安排在所述第二通信路徑中的高速緩存器,用于在將已解密的程序信息提供給所述CPU之前臨時(shí)存儲(chǔ)已解密的程序信息。
23.如權(quán)利要求19至22中的一個(gè)所述的裝置,其中所述第一塊鏈?zhǔn)且粋€(gè)密碼塊鏈。
24.如前面任一個(gè)權(quán)利要求所述的裝置,還包括一個(gè)通信路徑,用于將一組程序信息塊以第二塊鏈從所述安全電路向所述外部存儲(chǔ)設(shè)備傳送。
25.如權(quán)利要求24所述的裝置,還包括一加密電路,用于為第二塊鏈對(duì)程序信息進(jìn)行加密。
26.如權(quán)利要求25所述的裝置,其中所述加密電路有條件地響應(yīng)于地址信息,以便為第二塊鏈允許程序信息的無加密模式。
27.如權(quán)利要求24至26中的一個(gè)所述的裝置,還包括一鑒別電路,用于為第二塊鏈鑒別程序信息。
28.如權(quán)利要求27所述的裝置,其中所述鑒別電路有條件地響應(yīng)于地址信息,以便為第二塊鏈允許程序信息的無加密模式。
29.如權(quán)利要求24至28中的一個(gè)所述的裝置,還包括一重新排序電路,用于為第二塊鏈對(duì)程序信息進(jìn)行隨機(jī)地重新排序。
30.如權(quán)利要求24至29中的一個(gè)所述的裝置,還包括一長度確定電路,用于為第二塊鏈隨機(jī)地變化程序信息的單位長度。
31.如權(quán)利要求24至30中的一個(gè)所述的裝置,還包括一假數(shù)據(jù)插入電路,用于為第二塊鏈將假數(shù)據(jù)加到程序信息中。
32.如前面任一個(gè)權(quán)利要求所述的裝置,其中將多個(gè)程序信息鏈以基本上隨機(jī)變化的序列從外部存儲(chǔ)設(shè)備向所述安全電路傳送。
33.一種用于傳送程序信息的裝置,包括一安全電路,用于提供所述程序信息;一外部存儲(chǔ)設(shè)備,用于存儲(chǔ)所述安全電路外部的程序信息;以及一第一通信路徑,用于將一組所述程序信息塊以第一塊鏈從所述安全電路向外部存儲(chǔ)設(shè)備傳送。
34.如權(quán)利要求33所述的裝置,其中所述程序信息包括鑒別數(shù)據(jù);以及所述安全電路包括一鑒別電路,用于提供所述鑒別數(shù)據(jù)。
35.如權(quán)利要求34所述的裝置,其中所述塊鏈?zhǔn)且粋€(gè)簡單塊鏈,以使得在所述第一塊鏈中的所述一組塊由所述鑒別電路基本上并行地進(jìn)行處理,以提供所述鑒別數(shù)據(jù)。
36.如權(quán)利要求34或35所述的裝置,其中所述鑒別電路對(duì)至少部分程序信息進(jìn)行隨機(jī)排列,以提供所述鑒別數(shù)據(jù)。
37.如權(quán)利要求33至36中的一個(gè)所述的裝置,還包括地址發(fā)生裝置,用于向外部存儲(chǔ)設(shè)備提供地址信息,用于將所述程序信息塊以所需順序從所述安全電路向外部存儲(chǔ)設(shè)備傳送。
38.如權(quán)利要求33至37中的一個(gè)所述的裝置,其中所述程序信息塊存儲(chǔ)在外部存儲(chǔ)設(shè)備的加擾的存儲(chǔ)位置中。
39.如權(quán)利要求33至38中的一個(gè)所述的裝置,其中將帶有基本上隨機(jī)變化長度的所述程序信息單元從所述安全電路向外部存儲(chǔ)設(shè)備傳送。
40.如權(quán)利要求33至39中的一個(gè)所述的裝置,其中將多個(gè)程序信息鏈以基本上隨機(jī)變化的順序從所述安全電路向外部存儲(chǔ)設(shè)備傳送。
41.如權(quán)利要求33至40中的一個(gè)所述的裝置,還包括用于提供(a)對(duì)所述第一塊鏈的基本上隨機(jī)的塊的重新排序、以及(b)對(duì)所述第一塊鏈的一個(gè)塊的基本上隨機(jī)的重新排序中的至少之一以便將一個(gè)已重新排序的鏈從所述安全電路向外部存儲(chǔ)設(shè)備傳送的裝置。
42.如權(quán)利要求33至41中的一個(gè)所述的裝置,其中使用基本上隨機(jī)變化的順序?qū)⑺龀绦蛐畔卧獜乃霭踩娐废蛲獠看鎯?chǔ)設(shè)備傳送。
43.如權(quán)利要求33至42中的一個(gè)所述的裝置,其中使用基本上隨機(jī)變化的長度將所述程序信息單元從所述安全電路向外部存儲(chǔ)設(shè)備傳送。
44.如權(quán)利要求33至43中的一個(gè)所述的裝置,其中所述程序信息包括CPU不處理的假數(shù)據(jù)。
45.如權(quán)利要求33至44中的一個(gè)所述的裝置,其中以塊鏈提供所述程序信息。
46.如權(quán)利要求33至45中的一個(gè)所述的裝置,其中所述安全電路包括一個(gè)加密電路,用于對(duì)所述程序信息加密;以及所述第一通信路徑用于將加密的程序信息從加密電路傳送給外部存儲(chǔ)設(shè)備。
47.如權(quán)利要求46所述的裝置,其中所述塊鏈?zhǔn)且幻艽a塊鏈。
48.如權(quán)利要求33至47中的一個(gè)所述的裝置,還包括一個(gè)通信路徑,用于將一組程序信息塊以第二塊鏈從所述外部存儲(chǔ)設(shè)備向所述安全電路傳送。
49.如權(quán)利要求48所述的裝置,其中存儲(chǔ)在所述外部存儲(chǔ)設(shè)備中的程序信息被加密,所述安全電路還包括一解密電路,用于對(duì)第二塊鏈中的加密程序信息進(jìn)行解密。
50.一種用于處理加密的程序信息的裝置,包括一安全電路,包括至少一個(gè)加密和解密電路、一中央處理單元(CPU)和用于存儲(chǔ)至少一個(gè)程序信息塊的至少一個(gè)塊緩沖器;一外部存儲(chǔ)設(shè)備,用于存儲(chǔ)所述安全電路外部的程序信息;一第一通信路徑,用于將一組所述程序信息塊以第一密碼塊鏈在所述外部存儲(chǔ)設(shè)備和所述至少一個(gè)塊緩沖器之間傳送;所述至少一個(gè)所述加密和解密電路響應(yīng)于所述至少一個(gè)塊緩沖器,對(duì)所述程序信息分別進(jìn)行加密和解密;以及一第二通信路徑,用于將程序信息在所述至少一個(gè)解密和加密電路與所述CPU之間傳送。
全文摘要
通過在外部存儲(chǔ)設(shè)備和安全電路的塊緩沖器間傳送加密程序信息和鑒別信息對(duì)加擾的數(shù)據(jù)傳輸解擾。以塊鏈傳送程序信息以減少鑒別信息的額外量。一次傳送程序信息的一塊,甚至一次傳送—個(gè)鏈,并將其臨時(shí)存儲(chǔ)在塊緩沖器和高速緩存中,然后提供給CPU處理。這些塊可根據(jù)加擾地址信號(hào)存儲(chǔ)在外部存儲(chǔ)設(shè)備中,還可以對(duì)字節(jié)、塊、鏈隨機(jī)地重新排序,并非順序地傳送給塊緩沖器。還可將程序信息從安全電路向外部存儲(chǔ)器傳送。
文檔編號(hào)G06F1/00GK1236132SQ98122820
公開日1999年11月24日 申請(qǐng)日期1998年10月12日 優(yōu)先權(quán)日1997年10月10日
發(fā)明者布蘭特·坎德洛爾, 埃里克·斯普龍克 申請(qǐng)人:通用儀器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
五指山市| 根河市| 乐亭县| 和静县| 错那县| 中江县| 建湖县| 高碑店市| 思茅市| 兴文县| 和平县| 新津县| 廉江市| 白银市| 山阴县| 资中县| 荆州市| 日喀则市| 古交市| 乌兰察布市| 盐边县| 文安县| 绥德县| 大城县| 建德市| 宁德市| 博罗县| 瑞安市| 安国市| 什邡市| 大余县| 新安县| 天镇县| 文昌市| 长泰县| 确山县| 固始县| 平泉县| 民乐县| 抚顺市| 峨眉山市|