專利名稱:安全模塊和信息處理裝置的制作方法
技術(shù)領(lǐng)域:
這里論述的實(shí)施例涉及保護(hù)信息的安全模塊和信息處理裝置。
背景技術(shù):
隨著寬帶互聯(lián)網(wǎng)和數(shù)字廣播變得更普遍,確保所遞送的內(nèi)容(主要是數(shù)字視聽 (AV)內(nèi)容)的安全性的版權(quán)保護(hù)技術(shù)已經(jīng)涌現(xiàn)出來。尤其,具有開放體系結(jié)構(gòu)的個(gè)人計(jì)算機(jī)(PC)使得安全性的實(shí)現(xiàn)很困難,因?yàn)楸淮鎯?chǔ)到存儲(chǔ)器并且處理AV內(nèi)容的程序(軟件) 存在于任何人都能夠查看、分析和改寫程序的環(huán)境中。換言之,當(dāng)AV內(nèi)容存在于互聯(lián)網(wǎng)上或廣播網(wǎng)絡(luò)上時(shí),雖然AV內(nèi)容被加密并從而是安全的,但當(dāng)AV內(nèi)容被PC接收和處理時(shí),AV內(nèi)容必須被解密并且經(jīng)解密的AV內(nèi)容可能被非法拷貝。在程序在PC的存儲(chǔ)器上的情況下,任何人都能夠查看和改寫這些程序,因此原則上可以進(jìn)行更改,從而使得程序能夠被分析,由此經(jīng)解密的AV內(nèi)容在沒有授權(quán)的情況下被拷貝到例如硬盤。另一方面,由于PC是到寬帶互聯(lián)網(wǎng)的主要網(wǎng)關(guān),所以如果能夠確保安全性,那么在整個(gè)互聯(lián)網(wǎng)上分發(fā)數(shù)字AV內(nèi)容將成為可能,其意義是巨大的。傳統(tǒng)上,PC上的主流程序安全性涉及對(duì)確保安全性的算法的隱藏和為了使對(duì)算法的分析困難而進(jìn)行的混淆(obfuscation)(即,在不限制程序的情況下提高復(fù)雜度,在不限制程序分析(非法程序改寫的第一步)的情況下提高復(fù)雜度)。然而,一旦在主存儲(chǔ)器上展開了程序,由于如前所述存儲(chǔ)器是可見的環(huán)境,因此拷貝就容易了,并且通過花時(shí)間來分析拷貝的程序,就可以分析版權(quán)保護(hù)算法。在被認(rèn)為是就安全性而言極不穩(wěn)定的版權(quán)保護(hù)系統(tǒng)的具有很高程度的共享廣播的系統(tǒng)中,考慮到單次分析可能招致的損害,采用這種程序是很困難的。另外,可以考慮一種保證程序安全性的方法,其中保證安全性并且作為可靠性基礎(chǔ)的安全模塊(防篡改模塊)(實(shí)時(shí)地)掃描在裝置的存儲(chǔ)器區(qū)域處展開的程序并且不允許對(duì)程序的改寫以防止對(duì)程序的篡改(非法改寫)(例如參見日本早期專利公布 No.2004-129227 和 2003-198527)??煽啃缘倪@個(gè)基礎(chǔ)是保證安全性的安全模塊(防篡改模塊,基本上是硬件)并且對(duì)此硬件的禁用是極為困難的,從而大幅提高了安全性。在上述的日本早期專利公布 No. 2004-129227中,如果安全模塊程序?qū)崟r(shí)地掃描程序,則“掃描功能禁用”被中斷,由此使用被稱為直接存儲(chǔ)器訪問(DMA)掃描的使用DMA的硬件掃描。上述硬件掃描僅能應(yīng)用到兼容的系統(tǒng)。換言之,假定安全模塊和PC連接接口是能夠進(jìn)行硬件掃描的接口并且例如限于外圍組件互連(PCI)接口和快速PCI (PCIe)接口。另一方面,連接PC和模塊的最常見接口是通用串行總線(USB)。由于USB不支持硬件掃描功能,因此不能應(yīng)用硬件掃描。PC上的遵從USB的軟件(驅(qū)動(dòng)器等等)對(duì)于所有處理都需要請(qǐng)求。例如,如果具有USB接口的模塊請(qǐng)求掃描,則該模塊向PC上的遵從USB的軟件發(fā)出對(duì)掃描PC的存儲(chǔ)器的請(qǐng)求。遵從USB的軟件在接收到該請(qǐng)求后,執(zhí)行掃描并將掃描的結(jié)果返回給該模塊。這里,PC上的USB兼容軟件有被非法篡改從而禁用掃描功能的危險(xiǎn)。
發(fā)明內(nèi)容
在實(shí)施例的一個(gè)方面中,一個(gè)目的是至少解決傳統(tǒng)技術(shù)的上述問題。根據(jù)實(shí)施例的一個(gè)方面,一種安全模塊包括生成單元,該生成單元執(zhí)行生成掃描程序的生成處理并且還執(zhí)行隨機(jī)更新所述掃描程序的內(nèi)容的更新處理,其中所述掃描程序使得生成對(duì)象程序所特有的代碼的掃描處理在連接的設(shè)備處被執(zhí)行;存儲(chǔ)設(shè)備,該存儲(chǔ)設(shè)備中存儲(chǔ)有所述對(duì)象程序所特有的代碼;以及認(rèn)證單元,如果所述掃描程序被所述連接的設(shè)備執(zhí)行并且是針對(duì)在所述連接的設(shè)備中的指定存儲(chǔ)區(qū)域處存儲(chǔ)的所述對(duì)象程序執(zhí)行的, 則所述認(rèn)證單元基于所述存儲(chǔ)設(shè)備中存儲(chǔ)的所述特有的代碼和在所述連接的設(shè)備處執(zhí)行的所述掃描程序的執(zhí)行結(jié)果來認(rèn)證在所述指定存儲(chǔ)區(qū)域處存儲(chǔ)的所述對(duì)象程序的有效性。根據(jù)本發(fā)明的安全模塊和信息處理裝置實(shí)現(xiàn)了不易被破解器禁用、并且即使在接口不支持硬件掃描的情況下也能實(shí)現(xiàn)的掃描。
圖1是信息處理裝置的硬件構(gòu)造的框圖2示出了安全模塊的硬件構(gòu)造的框圖3示出了信息處理裝置的操作的示例性概要;
圖4示出了對(duì)象程序TP的執(zhí)行的示例;
圖5、6、7和8示出了掃描程序的示例;
圖9是掃描程序生成/更新處理的流程圖10和11是圖9中所示的掃描程序生成處理(步驟S903)的示例的流程圖
圖12和13是掃描程序更新處理(步驟S908)的示例的流程圖14示出了對(duì)象程序TP的修改的概要;
圖15、16、17A和17B示出了通過修改程序來修改對(duì)象程序TP的示例;
圖18是對(duì)象程序TP修改處理的流程圖19是圖18中所示的打亂處理(步驟S1811)的流程圖;并且
圖20A、20B和20C示出了對(duì)象程序TP的修改的示例。
具體實(shí)施例方式將參考附圖來說明本發(fā)明的優(yōu)選實(shí)施例。信息處理裝置例如是計(jì)算機(jī)(比如個(gè)人計(jì)算機(jī))、固定視頻游戲控制臺(tái)、電視機(jī)、硬盤記錄器、移動(dòng)終端(移動(dòng)電話、智能電話、便攜式視頻游戲機(jī)、電子字典、平板終端)等等。圖1是信息處理裝置的硬件構(gòu)造的框圖。信息處理裝置100包括處理器101、北橋102、存儲(chǔ)器(RAM 103,ROM 104)、顯示器105、南橋106、硬盤驅(qū)動(dòng)器(HDD) 107、通信接口 (I/F) 108、輸入設(shè)備109和安全模塊110,它們分別通過總線相連。處理器101控制信息處理裝置100并執(zhí)行計(jì)算處理。北橋102連接到處理器101、 存儲(chǔ)器、顯示器105和南橋106并且形成它們之間的橋接器。RAM 103是用作處理器101的工作區(qū)域的主存儲(chǔ)器。ROM 104是其中存儲(chǔ)有程序和數(shù)據(jù)的非易失性存儲(chǔ)器。顯示器105 例如顯示諸如文本、圖像、功能信息等等的數(shù)據(jù),并且還顯示顯示光標(biāo)、圖標(biāo)和/或工具框。南橋106連接到北橋102、HDD 107、通信I/F 108、輸入設(shè)備109和安全模塊110 并且形成它們之間的橋接器。HDD 107在處理器101的控制下是控制對(duì)內(nèi)部硬盤的數(shù)據(jù)讀取和寫入的驅(qū)動(dòng)裝置。通信I/F 108是一接口,其在南橋106的控制下能夠通過通信線路連接到諸如局
域網(wǎng)(LAN)、廣域網(wǎng)(WAN)和互聯(lián)網(wǎng)之類的網(wǎng)絡(luò)。通信I/F還是能夠接收數(shù)字廣播波的接□。輸入設(shè)備109是用于輸入文本、數(shù)字、各種指令等等的裝置并且例如可以是鍵盤、 鼠標(biāo)、觸摸面板等等。來自輸入設(shè)備109的輸入數(shù)據(jù)經(jīng)由南橋106和北橋102被發(fā)送到處理器101,并且被處理器101處理。安全模塊110是防止內(nèi)部存儲(chǔ)的信息被外部設(shè)備參考的構(gòu)造的大規(guī)模集成電路 (LSI),并且是防止從外部設(shè)備觀看并且還防止對(duì)內(nèi)部數(shù)據(jù)的篡改的硬件。安全模塊110例如具有抗篡改模塊(TRM)構(gòu)造。TRM構(gòu)造是用于在物理上和邏輯上進(jìn)行保護(hù)以對(duì)抗內(nèi)部半導(dǎo)體(在此情況下是安全模塊110)分析和篡改的構(gòu)造。例如,在安全模塊110中,內(nèi)部被涂覆以極強(qiáng)力且粘性的涂層,其中如果該涂層的表面被去除,則內(nèi)部電路完全毀壞,或者在安全模塊110中布置有虛擬布線(dummy wiring)。安全模塊110具有如下功能從HDD 107讀出要監(jiān)視的軟件(對(duì)象程序)、生成/ 更新掃描對(duì)象程序的掃描程序、在RAM 103上實(shí)現(xiàn)對(duì)象程序和/或掃描程序、加密、以及解密。安全模塊110經(jīng)由南橋106中的USB控制器和USB總線111可通信地連接。安全模塊 110可被內(nèi)置在信息處理裝置100中或者可設(shè)在外部。圖2示出了安全模塊110的硬件構(gòu)造的框圖。安全模塊110包括處理器201、USB I/F 202、加密電路 203、RAM 204, ROM 205 以及閃存 206。處理器201執(zhí)行安全模塊110的內(nèi)部控制和計(jì)算處理。USB I/F 202經(jīng)由USB總線111連接到南橋106中的USB控制器并且執(zhí)行通信。加密電路203對(duì)數(shù)據(jù)和程序加密, 并且對(duì)加密的數(shù)據(jù)和程序解密。RAM 204是用作處理器201的工作區(qū)域的主存儲(chǔ)器。ROM 205是其中存儲(chǔ)有程序和數(shù)據(jù)的非易失性存儲(chǔ)器。閃存206是使能改寫存儲(chǔ)的數(shù)據(jù)和程序的非易失性存儲(chǔ)器。將描述信息處理裝置100的操作的概要。在本實(shí)施例中,保護(hù)信息處理裝置100 上的軟件免遭改寫的安全模塊110通過不能進(jìn)行硬件掃描的USB接口連接到信息處理裝置 100。因此,當(dāng)安全模塊110(經(jīng)由USB接口)正常請(qǐng)求USB兼容軟件(通常是“驅(qū)動(dòng)器”) 對(duì)存儲(chǔ)器中的區(qū)域進(jìn)行掃描時(shí),該USB兼容軟件被破解。例如,USB兼容軟件被破解,返回表明改寫沒有發(fā)生的結(jié)果,盡管信息處理裝置 100上的軟件已被改寫。從而,掃描功能可能不會(huì)有效地操作,由此在本實(shí)施例中,以下處理被執(zhí)行。圖3示出了信息處理裝置100的操作的示例性概要。在本實(shí)施例,安全模塊110 獲取被加密并存儲(chǔ)在HDD 107中的對(duì)象程序(經(jīng)加密的對(duì)象程序E(TP))并且使用加密電路203來將經(jīng)加密的對(duì)象程序E (TP)解密成對(duì)象程序TP。隨后,安全模塊110把經(jīng)解密的對(duì)象程序TP寫入到RAM 103中的掃描區(qū)域130。對(duì)象程序TP可被保存在安全模塊110中。如果存儲(chǔ)在HDD 107中的程序未被加密,則所獲取的對(duì)象程序TP在不被安全模塊 110解密的情況下被存儲(chǔ)到RAM 103的掃描區(qū)域130。另外,安全模塊110可通過修改程序PP來修改對(duì)象程序TP。雖然修改的細(xì)節(jié)在下文中描述,但對(duì)象程序TP的操作是相同的,只不過處理的細(xì)節(jié)和順序被修改。另外,由于此修改,對(duì)象程序TP的一部分(程序片段)被保存在安全模塊110中,并且當(dāng)對(duì)象程序TP在信息處理裝置100上被執(zhí)行時(shí),如果不參考安全模塊110中的程序片段,則對(duì)象程序TP的執(zhí)行不能繼續(xù)。(2)安全模塊110周期性地或者按隨機(jī)的間隔執(zhí)行生成程序GP,自動(dòng)地隨機(jī)生成 /更新掃描程序SP。例如,雖然掃描對(duì)象程序TP的功能不變,但處理細(xì)節(jié)每次均不同的掃描程序SP被自動(dòng)地隨機(jī)生成。此自動(dòng)生成例如可以按若干毫秒到若干分鐘的間隔周期性地執(zhí)行,或者可以按隨機(jī)的間隔執(zhí)行。在任一情況下,該間隔都被設(shè)定得短于破解器進(jìn)行篡改所需的時(shí)間。生成程序GP隨機(jī)地改變例如掃描區(qū)域130、掃描地址的順序、掃描結(jié)果計(jì)算、向安全模塊110返回計(jì)算結(jié)果的計(jì)算處理、掃描程序SP代碼、信息處理裝置100的存儲(chǔ)器上的位置,等等。生成程序GP對(duì)掃描程序SP的隨機(jī)生成/更新處理是在安全模塊110中執(zhí)行的,因此生成處理不會(huì)被查看、分析,并且其結(jié)果也不會(huì)被無效。如果掃描程序SP被生成程序GP生成/更新,則安全模塊110也利用最新的掃描程序SP來掃描對(duì)象程序TP并且更新掃描結(jié)果Rl。掃描結(jié)果Rl被存儲(chǔ)到RAM 204或閃存 206,并且是對(duì)象程序TP所特有的代碼。(3)掃描程序SP請(qǐng)求驅(qū)動(dòng)器131使處理器101在RAM 103上的不會(huì)被掃描的區(qū)域處提供布置。結(jié)果,驅(qū)動(dòng)器131使得處理器101把從安全模塊110發(fā)送來的掃描程序SP存儲(chǔ)到RAM 103上的不會(huì)被掃描的區(qū)域。(4)被存儲(chǔ)到RAM 103的掃描程序SP使得處理器101對(duì)掃描區(qū)域130中的對(duì)象程序TP進(jìn)行掃描。掃描結(jié)果R2經(jīng)由驅(qū)動(dòng)器131被報(bào)告給安全模塊110。(5)安全模塊110接收從驅(qū)動(dòng)器131發(fā)送來的掃描結(jié)果R2。當(dāng)接收到掃描結(jié)果R2 時(shí),認(rèn)證程序AP使得處理器201比較在安全模塊110中保存的掃描結(jié)果Rl和所接收的掃描結(jié)果R2的一致性。如果掃描結(jié)果Rl和R2 —致,則對(duì)象程序TP沒有被篡改。另一方面,如果對(duì)象程序TP已被改寫,則安全模塊110向處理器101發(fā)送結(jié)束對(duì)象程序TP的執(zhí)行的指令,由此處理器101在接收到該指令后結(jié)束對(duì)象程序TP的執(zhí)行。另外,如果在給定的時(shí)段已逝去之后仍未從驅(qū)動(dòng)器131接收到掃描結(jié)果R2,則安全模塊110向處理器101發(fā)送結(jié)束對(duì)象程序TP的執(zhí)行的指令。(6)安全模塊110循環(huán)地執(zhí)行上述(2)至(5),直到對(duì)象程序TP的操作結(jié)束為止。這樣,周期性地或者按隨機(jī)的間隔使安全模塊110隨機(jī)地生成/更新掃描程序SP, 由此,例如,即使掃描程序SP存在于信息處理裝置100的存儲(chǔ)器亦即任何人都能夠查看和分析掃描程序SP的環(huán)境中,也沒有被破解器破解的危險(xiǎn)。換言之,破解需要一定量的時(shí)間來查看、分析掃描程序SP并將其改寫成偽造的掃描程序。然而,由于安全模塊110周期性地或者按隨機(jī)的間隔使得掃描程序每次隨機(jī)地變化成不同的形式,因此破解器沒有時(shí)間來分析掃描程序并將其改寫成偽造的掃描程序。圖4示出了對(duì)象程序TP的執(zhí)行的示例。在RAM 103的掃描區(qū)域130中,內(nèi)容密鑰解密程序401、內(nèi)容解密程序402和內(nèi)容處理程序403被實(shí)現(xiàn)為對(duì)象程序TP。通過諸如互聯(lián)網(wǎng)之類的網(wǎng)絡(luò)、利用廣播波、或者從HDD 107,安全模塊110獲取經(jīng)加密的內(nèi)容(經(jīng)加密的內(nèi)容以412))和經(jīng)加密的內(nèi)容密鑰(經(jīng)加密的內(nèi)容密鑰E(411)),并且內(nèi)容密鑰解密程序 401對(duì)經(jīng)加密的內(nèi)容密鑰E(411)解密。內(nèi)容解密程序402使用經(jīng)解密的內(nèi)容密鑰411并且對(duì)經(jīng)加密的內(nèi)容E (41 解密。 經(jīng)加密的內(nèi)容412被內(nèi)容處理程序403進(jìn)行給定的處理(例如MPEG解碼)并且經(jīng)處理的內(nèi)容被顯示在顯示器105上。圖5至8示出了掃描程序SP的示例。在圖5至8中,為了易于理解,示出了簡(jiǎn)單的掃描程序SP。另外,在圖5至8中,“l(fā)addr_XX”指示地址,例如與掃描區(qū)域130相對(duì)應(yīng)的邏輯地址。圖5示出了執(zhí)行對(duì)象程序TP的掃描的掃描程序SP。例如,在laddr_ll如果存儲(chǔ) “1”,在laddr_12如果存儲(chǔ)“2”,在laddr_13如果存儲(chǔ)“3”,在laddr_14如果存儲(chǔ)“4”并且在laddr_15如果存儲(chǔ)“5”,則在地址1至5處的步驟中,這些值分別被寫入到laddr_1001 至laddr_1005。在地址6處的步驟中,所有的值被求和并且總和“ 15”在地址7處的步驟中被寫入到laddr_1010。在地址8處的步驟中,“+80”被加到laddr_1010的內(nèi)容“ 15”,并且總和被乘以 “*5”,由此獲得(15+80) X 5 = 475。在地址9處的步驟中,地址8的計(jì)算結(jié)果“475”被寫入到laddr_1011,并且在地址10處的步驟中,laddr_1011處的內(nèi)容“475”被報(bào)告給安全模塊 110。安全模塊110也保存先前掃描的掃描結(jié)果。如果所報(bào)告的掃描結(jié)果與所保存的掃描結(jié)果一致,則沒有發(fā)生篡改。另一方面,如果掃描結(jié)果不一致,則發(fā)生了篡改,并且對(duì)象程序TP的執(zhí)行被結(jié)束。圖6示出了把掃描程序SP中的地址1至5處的步驟中讀取值的掃描地址從 laddr_ll至laddr_15改變成laddr_21至laddr_25的示例。在圖6所示的示例中,由于值是從laddr_21至25讀取的,所以報(bào)告給安全模塊110的掃描結(jié)果與在圖5所示的示例中報(bào)告的不同。圖7示出了改變圖5所示的掃描程序SP中的掃描地址的順序并且依賴于順序改變而改變計(jì)算的示例。例如,掃描程序SP改變?cè)诘刂?至5處的步驟中要掃描的地址的順序。由于掃描結(jié)果與圖5所示的掃描結(jié)果的不同之處僅在于順序的變化,所以地址6處的步驟中的計(jì)算也被隨機(jī)改寫,由此報(bào)告給安全模塊110的掃描結(jié)果與圖5所示的示例的掃描結(jié)果的值不同。圖8示出了如下示例在圖7所示的掃描程序SP中,如果掃描程序SP未被保存在指定的存儲(chǔ)區(qū)域中,則掃描程序SP不執(zhí)行掃描。在此情況下,在安全模塊110處,保存掃描程序SP的地址已被指定。例如,保存掃描程序SP的地址(例如開頭塊)被加到在地址1至5處的步驟中讀取的掃描地址的值。在此情況下,如果圖8所示的被安全模塊110保存的掃描程序SP的掃描結(jié)果Rl和被信息處理裝置100的處理器101執(zhí)行的掃描程序SP的掃描結(jié)果R2 —致,則對(duì)象程序TP沒有被篡改,并且可以確認(rèn)掃描程序SP位于指定的位置處。相反,如果結(jié)果不一致,則掃描程序SP可能被故意保存在了另外的位置,由此,在這種情況下,對(duì)象程序TP因?yàn)閽呙杞Y(jié)果的差異而被結(jié)束。這樣,如果掃描程序SP所在的存儲(chǔ)器邏輯地址不同,則掃描結(jié)果變化并且掃描程序SP被寫入到與假定的不同的存儲(chǔ)器邏輯地址,由此難以通過操作分析來進(jìn)行破解。圖9是掃描程序生成/更新處理的流程圖。掃描程序生成/更新處理是當(dāng)安全模塊Iio的處理器101執(zhí)行生成程序GP時(shí)執(zhí)行的處理。安全模塊110等待給定的時(shí)段逝去(步驟S901 否)。例如,由已寫入到RAM 103 的掃描區(qū)域130的對(duì)象程序TP的執(zhí)行的開始所觸發(fā),該給定時(shí)段的定時(shí)開始。該給定時(shí)段如上所述是若干毫秒到若干分鐘的間隔,并且可在若干毫秒到若干分鐘的范圍內(nèi)隨機(jī)設(shè)定。當(dāng)該給定時(shí)段已逝去時(shí)(步驟S901 是),安全模塊110判斷掃描程序SP的生成是否已經(jīng)完成(步驟S902)。如果生成尚未完成(步驟S902 否),則安全模塊110執(zhí)行掃描程序生成處理(圖10至11)(步驟S903)并且將所生成的掃描程序SP寫入到RAM 103 上的不會(huì)被掃描的區(qū)域(步驟S904)。隨后,安全模塊110利用所生成的掃描程序SP掃描對(duì)象程序TP,將掃描結(jié)果保存在安全模塊110中(例如RAM 204、閃存206)(步驟S905),并且返回到步驟S901。在步驟S902,如果掃描程序SP的生成已完成(步驟S902 是),則安全模塊110判定是新生成掃描程序SP還是更新已生成的掃描程序SP (步驟S906)。如果要新生成掃描程序SP (步驟S907 新生成),則安全模塊110進(jìn)到步驟S903。如果要更新掃描程序SP (步驟S907 更新),則安全模塊110執(zhí)行掃描程序更新處理(圖12至13)(步驟S908),并且將經(jīng)更新的掃描程序SP寫入到RAM 103上不會(huì)被掃描的區(qū)域(步驟S904)。隨后,安全模塊110利用經(jīng)更新的掃描程序SP掃描對(duì)象程序TP,將掃描結(jié)果保存在安全模塊110中(例如RAM 204、閃存206)(步驟S905),并且返回到步驟S901。在由于對(duì)象程序TP的結(jié)束(這是啟動(dòng)的動(dòng)力)而從掃描區(qū)域130刪除對(duì)象程序 TP后,安全模塊110結(jié)束掃描程序生成/更新處理。圖10是圖9所示的掃描程序生成處理(步驟S903)的前一半的示例的流程圖。安全模塊110在安全模塊110外部的RAM 103中確立掃描區(qū)域130 [As,Ae]和寫入?yún)^(qū)域[Bs, Be](步驟S1001)。所確立的掃描區(qū)域130[As,Ae]可具有與對(duì)象程序TP的大小相當(dāng)?shù)拇笮』蛘呖梢跃哂信c對(duì)象程序TP的一部分相當(dāng)?shù)拇笮?。。另外,如果掃描區(qū)域130具有與對(duì)象程序TP的一部分相當(dāng)?shù)拇笮?,則每次掃描程序生成處理被執(zhí)行時(shí),掃描區(qū)域130[As,Ae]具有不同的范圍。例如,每次掃描程序生成處理被執(zhí)行時(shí),掃描區(qū)域130[As,Ae]被移位。安全模塊110在安全模塊110的RAM 204(或閃存206)中確立比掃描區(qū)域130大的存儲(chǔ)器區(qū)域[Ms,Me](確立模塊區(qū)域)(步驟S10(^)。安全模塊110初始化各種變量(步驟S1003)。i是被初始化到1的變量。Ai指示掃描區(qū)域130的任意地址并且被初始化到開頭地址As。Bi指示寫入?yún)^(qū)域的任意地址并且被初始化到開頭地址Bs。Mi指示確立模塊區(qū)域中的任意地址并且被初始化到開頭地址Ms。Yi是要生成的掃描程序SP中使用的地址并且被初始化到Bi。隨后,安全模塊110向確立模塊區(qū)域中的laddr_Mi寫入指令“讀取laddr_Ai處的內(nèi)容并寫入到laddr_Bi”的命令(步驟S1004)。安全模塊110判斷Ai > Ae是否為真(步驟S1005)。Ai是掃描區(qū)域130的末尾地址。如果Ai > Ae不為真(步驟S1005 否),則安全模塊110遞增i (步驟S1006),并且返回到步驟S1004。另一方面,如果Ai > Ae為真(步驟S1005 是),則安全模塊110進(jìn)到圖11中示出的步驟S1101。圖11是圖9所示的掃描程序生成處理(步驟S903)的后一半的示例的流程圖。 在圖10中的步驟S1005 是之后,安全模塊110遞增確立模塊區(qū)域中的laddr_Mi (步驟 Sl 101),并且判斷Mi > Me-2是否為真(步驟Sl 102)。如果Mi > Me-2不為真(步驟S1102 否),則安全模塊110將變量j的初始值設(shè)定為j = 1(步驟S1103),并且隨機(jī)地確定計(jì)算方法Zj (步驟S1104)。計(jì)算方法例如可以是算術(shù)運(yùn)算、邏輯運(yùn)算、校驗(yàn)和計(jì)算、利用散列函數(shù)的散列值計(jì)算,等等。以下,利用計(jì)算方法Zj進(jìn)行的計(jì)算被稱為“Zj計(jì)算”。安全模塊110遞增j (步驟S1105),并且判斷j = y是否為真(步驟S1106)。這里,y是計(jì)數(shù)Yi,即確立模塊區(qū)域中的laddr_Mi的數(shù)量。如果j =y不為真(步驟Sl 106 否),則安全模塊110返回到步驟Sl 104。另一方面,如果j = y為真(步驟Sl 106 是),則安全模塊110向laddr_Mi寫入指令“對(duì)laddr_ Yl處的內(nèi)容和laddr_Y2處的內(nèi)容執(zhí)行Zl計(jì)算,對(duì)Zl計(jì)算結(jié)果和laddr_Y3處的內(nèi)容執(zhí)行
Z2計(jì)算,......,對(duì)Z(y_2)計(jì)算結(jié)果和laddr_Yy處的內(nèi)容執(zhí)行Z(y_l)計(jì)算”的掃描命令
Z(Mi)(步驟 Sl 107)。安全模塊110遞增Mi (步驟Sl 108),向laddr_Mi寫入指令“將掃描命令Z (Mi_l) 的計(jì)算結(jié)果寫入到laddr_(Bi+l),,的掃描命令(步驟S1109),并且返回到步驟S1101。在步驟Sl 102,如果Mi > Me-2為真(步驟Sl 102 是),則安全模塊110向laddr_ Mi寫入指令“將laddr_(Bi+l)處的內(nèi)容報(bào)告給安全模塊110”的掃描命令(步驟S1110), 并且進(jìn)到步驟S904。根據(jù)掃描程序處理(步驟S90;3),掃描程序SP可被周期性地(或者按隨機(jī)的間隔)隨機(jī)生成。圖12是掃描程序更新處理(步驟S908)的示例的流程圖。安全模塊110隨機(jī)地確定更新的內(nèi)容(步驟S1201)。這里,更新的內(nèi)容例如是“混淆”、“改變掃描區(qū)域”、“改變掃描地址的順序”、“額外的掃描結(jié)果計(jì)算”、“掃描程序SP地址添加”、“不進(jìn)行任何操作”,等寸。參考圖12來描述“混淆”、“掃描區(qū)域的改變”和“掃描地址的順序的改變”的順序改變。另一方面,參考圖13來描述“額外的掃描結(jié)果計(jì)算”、“掃描程序SP地址添加”和“不進(jìn)行任何操作”。在掃描程序更新處理中,執(zhí)行這6個(gè)更新中的至少一個(gè)(除“不進(jìn)行任何操作”以外)即可。如圖12所示,安全模塊110判定隨機(jī)確定的更新的內(nèi)容是否是“混淆”(步驟S 1202)。混淆是通過使命令復(fù)雜化來使得對(duì)一個(gè)命令或一組命令的譯解困難的方法,例如將一命令替換為“操作相同,但處理細(xì)節(jié)是不同的程序代碼”的命令。例如,對(duì)于單個(gè)命令,命令“X = 1+Y”被更新為“X = 10-9+2Y-Y”。另外,命令“X = 1+Y”和“Z = X+50”被更新為命令 “X =洸+Y” 和 “Z = X+25”。雖然更新后的命令執(zhí)行的操作與更新前的相同,但程序代碼不同,由此更新前后的生成程序GP具有“相同的操作,但處理細(xì)節(jié)是不同的程序代碼”。即使破解器查看了生成程序GP代碼,生成程序GP的程序代碼在每次更新時(shí)也是不同的,從而使得分析困難,并且還有一個(gè)優(yōu)點(diǎn)是破解器無法得知生成程序GP的哪個(gè)部分包括重要代碼。如果更新是通過“混淆”進(jìn)行的(步驟S 1202 是),則安全模塊110規(guī)定對(duì)象程序TP中要被混淆的范圍(步驟S1203),對(duì)規(guī)定的范圍中的(一個(gè)或多個(gè))命令進(jìn)行混淆 (限于能夠被混淆的命令),并且返回到步驟S1201。另一方面,在步驟S1202,如果更新不是通過“混淆”進(jìn)行的(步驟S1202 否),則安全模塊110判斷更新是否是通過“改變掃描區(qū)域”進(jìn)行的(步驟S1205)。“改變掃描區(qū)域”是將掃描程序SP中規(guī)定的掃描地址改變成掃描區(qū)域130中的不同地址。例如,在將圖5所示的掃描程序SP更新成圖6所示的掃描程序SP時(shí),執(zhí)行了掃描區(qū)域的改變。如果更新是通過“改變掃描區(qū)域”進(jìn)行的(步驟S1205 是),則安全模塊110從對(duì)象程序TP規(guī)定掃描區(qū)域130改變的范圍(步驟S1206),將(一個(gè)或多個(gè))地址改變成規(guī)定的范圍的(一個(gè)或多個(gè))地址(步驟S1207),并且返回到步驟S1201。即使改變了掃描區(qū)域,也只改變生成程序GP訪問的地址,而掃描程序SP的操作保持相同。另外,通過改變掃描區(qū)域130,掃描結(jié)果也被更新,由此安全性得到加強(qiáng)。在步驟S1205,如果更新不是通過“改變掃描區(qū)域”進(jìn)行的(步驟S1205 否),則安全模塊110判斷更新是否是通過“改變掃描地址的順序”進(jìn)行的(步驟S1208)。改變掃描地址的順序是將掃描程序SP中的給定地址處的代碼替換為另一給定地址處的代碼。例如,在將圖5所示的掃描程序SP改變成圖7所示的掃描程序SP時(shí),掃描地址的順序被改變。雖然通過改變掃描地址的順序改變了執(zhí)行的順序,但在改變前后掃描結(jié)果可能變化也可能不變化。如果更新是通過“改變掃描地址的順序”進(jìn)行的(步驟S1208 是),則安全模塊 110從對(duì)象程序TP規(guī)定順序改變的范圍(步驟S1209),將代碼改變成規(guī)定的范圍的(一個(gè)或多個(gè))地址處的代碼(步驟S1210),并且返回到步驟S1201。另一方面,在步驟S1208,如果更新不是通過“改變掃描地址的順序”進(jìn)行的(步驟S1208 否),則安全模塊110進(jìn)到圖 13所示的步驟S1301。圖13是掃描程序更新處理(步驟S908)的示例的另一流程圖。在步驟S1301,安全模塊110判斷更新是否是通過“額外的掃描結(jié)果計(jì)算”進(jìn)行的(步驟S1301)。如果更新是通過“額外的掃描結(jié)果計(jì)算”進(jìn)行的(步驟S1301 是),則安全模塊 110從對(duì)象程序TP規(guī)定要經(jīng)歷計(jì)算的地址(步驟S130》并且隨機(jī)地確定計(jì)算方法(步驟 S13(X3)。這里,計(jì)算方法是針對(duì)經(jīng)歷計(jì)算的地址處的數(shù)據(jù)的算術(shù)運(yùn)算和/或邏輯運(yùn)算、對(duì)每個(gè)數(shù)據(jù)項(xiàng)的校驗(yàn)和計(jì)算和/或利用散列函數(shù)進(jìn)行的散列值計(jì)算。安全模塊110向經(jīng)歷更新的掃描程序SP添加指令“使用計(jì)算地址處的數(shù)據(jù)并執(zhí)行在步驟S1303確定的計(jì)算方法”的掃描命令(步驟S1304)。另外,安全模塊110向經(jīng)歷更新的掃描程序SP添加指令“向安全模塊110報(bào)告通過額外的掃描命令獲得的計(jì)算結(jié)果”的掃描命令(步驟S1305),并且返回到步驟S1201。在步驟S1201,如果更新不是通過“額外的掃描結(jié)果計(jì)算”進(jìn)行的(步驟S1301 否),則安全模塊Iio判斷更新是否是通過“掃描程序SP地址添加”進(jìn)行的(步驟S1306)。掃描程序SP地址添加是將掃描程序SP的地址提供給掃描程序SP中的給定地址處的命令以獲得依賴于掃描程序SP的地址的掃描結(jié)果的方法。例如,在將圖7所示的掃描程序SP更新成圖8所示的掃描程序SP時(shí),執(zhí)行掃描程序SP地址添加。在步驟S1306,如果更新是通過“掃描程序SP地址添加”進(jìn)行的(步驟S1306 是), 則安全模塊110從對(duì)象程序TP規(guī)定要經(jīng)歷添加的(一個(gè)或多個(gè))地址(步驟S1307),并且如圖7中的地址1至5所示,將掃描程序SP地址的值額外地提供給經(jīng)歷添加的地址處的數(shù)據(jù),改寫該數(shù)據(jù)(步驟S1308),隨后返回到步驟S1201。在步驟S1306,如果更新不是通過“掃描程序SP地址添加”進(jìn)行的(步驟S1306 否),則安全模塊110判斷是否結(jié)束生成程序GP的更新(步驟S1309)。例如,由于存在隨機(jī)判定“不進(jìn)行任何操作”的情況,因此如果一次也未曾執(zhí)行更新,則安全模塊110不結(jié)束更新(步驟S1309 否),并且返回到步驟S1201。如果執(zhí)行了至少一次更新或者執(zhí)行了預(yù)定次更新,則安全模塊110隨機(jī)地結(jié)束更新(步驟S1309 是)并且返回到圖9所示的步驟S904。這樣,由于執(zhí)行是在具有防篡改構(gòu)造的安全模塊110內(nèi)的,因此掃描程序SP的生成/更新每次可被安全地執(zhí)行,由此通過破解來禁用掃描功能變得困難,并且即使是USB連接的情況下安全性也能得到加強(qiáng)。將描述對(duì)對(duì)象程序TP的修改。如參考圖3所述,安全模塊110中的處理器201通過運(yùn)行修改程序PP來修改對(duì)象程序TP。這里,將詳細(xì)描述對(duì)象程序TP的修改。圖14示出了對(duì)象程序TP的修改的概要。程序是各個(gè)地址處的命令的集合。為了方便,對(duì)象程序TP包括5個(gè)地址每個(gè)處的命令,例如包括子程序Pl至P5,根據(jù)地址adr 1至 adr5按子程序Pl至P5的順序被執(zhí)行,并且因此按照地址adrl至adr5的執(zhí)行順序被順序地在HDD 107中存儲(chǔ)為邏輯地址。布置順序,即對(duì)象程序TP的地址(子程序Pl至P5),被修改程序PP重布置。在圖 14中,地址adr 1被修改為子程序Pl,地址adr2被修改為子程序P4,地址adr3被修改為子程序P2,地址adr4被修改為子程序P3,并且地址adr5被修改為子程序P5。在此情況下,在子程序PI、P4和P3之后,額外記述了指令從安全模塊110讀取的 READ命令。指示地址重布置后的關(guān)聯(lián)關(guān)系的程序片段被保存在安全模塊110中。例如,程序片段pa是跳到地址adr3的Goto語句,其在子程序Pl的執(zhí)行之后被參考。程序片段Pb是跳到地址adr2的Goto語句,其在子程序P3的執(zhí)行之后被參考。程序片段PC是跳到地址adr5的Goto語句,其在子程序P4的執(zhí)行之后被參考。程序片段pa 至pc是在修改時(shí)生成的。掃描結(jié)果Rl在修改前后保持相同。圖15至17B示出了修改程序PP修改對(duì)象程序TP的示例。在圖15所示的示例中, HDD 107中的對(duì)象程序TP的地址3至5處的命令被移動(dòng)到地址7至9。另外,對(duì)象程序TP 的地址6和7處的命令被移動(dòng)到地址15和16 ;并且地址1和2處的命令保持原樣。在修改之前,地址3處的命令“Ζ = X+Y”是在地址2處的命令“Y = X+8”之后被執(zhí)行的。由于地址3處的“Ζ = X+Y”被移動(dòng)到了地址7,所以地址3處的內(nèi)容被改寫為程序片段(跳躍命令)“Goto7”。安全模塊110在表中將地址3與程序片段“Goto7”關(guān)聯(lián)起來并且存儲(chǔ)該表。
類似地,在修改之前,地址6處的命令“Ζ = 5+Z”是在地址5處的命令“Ζ = Z+1” 之后被執(zhí)行的。由于地址5處的“Ζ = Z+1”被移動(dòng)到了地址9并且地址6處的命令被移動(dòng)到了地址15,所以地址10(地址9后的地址)處的內(nèi)容被改寫為程序片段(跳躍命令)“Gotol5”。安全模塊110在表中將地址10與程序片段“Gotol5”關(guān)聯(lián)起來并且存儲(chǔ)該表。在將對(duì)象程序TP寫入到掃描區(qū)域130之前,安全模塊110將程序片段改寫為指令從安全模塊110讀取的READ命令。結(jié)果,當(dāng)在掃描區(qū)域130處實(shí)現(xiàn)的經(jīng)修改的對(duì)象程序TP 被執(zhí)行時(shí),根據(jù)地址3處的READ命令,安全模塊110中的表被參考并且與地址3相對(duì)應(yīng)的程序片段“Goto7”被識(shí)別出。安全模塊110通知處理器101 “Goto7”,由此處理器101執(zhí)行經(jīng)修改的對(duì)象程序TP的地址7處的命令。這樣,構(gòu)成對(duì)象程序TP的命令被打亂,同時(shí)存儲(chǔ)各個(gè)對(duì)應(yīng)關(guān)系,由此對(duì)象程序TP 變得難以譯解,從而使得安全性能夠得以提高。圖16是比圖15所示的更復(fù)雜的修改的示例。例如,在圖15中,程序片段只是跳躍命令,而在圖16中,進(jìn)一步插入了構(gòu)成對(duì)象程序TP的命令。在圖16所示的示例中,HDD 107中的對(duì)象程序TP的地址4和5處的命令被移動(dòng)到地址8和9。另外,對(duì)象程序TP的地址6和7處的命令被移動(dòng)到地址15和16 ;并且地址 1至3處的命令保持原樣。在修改之前,地址3處的命令“Z = X+Y”是在地址2處的命令“Y = X+8”之后被執(zhí)行的。由于地址4 (地址3后的地址)處命令的被移動(dòng)到了地址8,所以Goto語句“GotoS ” 被生成。安全模塊110將地址3、地址3處的命令“Ζ = X+Y”和所生成的Goto語句“GotoS” 關(guān)聯(lián)起來并存儲(chǔ)到表。這樣,不僅僅是跳躍命令,通過使程序片段復(fù)雜化,可以促進(jìn)安全性的提高。圖17A示出了對(duì)構(gòu)成對(duì)象程序TP的命令加密的示例。在圖17A所示的示例中,安全模塊110利用加密/解密密鑰Kl至K4對(duì)對(duì)象程序TP (修改前)的地址4至7處的命令加密。接下來,安全模塊110在經(jīng)加密的命令之前插入指令從安全模塊110讀取的READ命令和解密命令,由此地址按插入的命令的數(shù)目被向下移位。例如,地址4處的命令“Y = Y+1”被利用加密/解密密鑰Kl來加密并被寫入到地址6。在已變空的地址4處,插入了指令從安全模塊110讀取的READ命令,并且在地址5處插入解密命令。隨后,安全模塊110把用于對(duì)對(duì)象程序TP(修改前)中的命令加密的密鑰和為經(jīng)加密的命令插入的READ命令的地址關(guān)聯(lián)起來并且存儲(chǔ)到表。例如,安全模塊110把用于對(duì)在地址6處寫入的經(jīng)加密的命令El (Y = Y+1)加密的加密/解密密鑰Kl和由于經(jīng)加密的命令Ε1 (γ = γ+1)的生成而插入READ命令的地址4關(guān)聯(lián)起來并存儲(chǔ)到表。然后,安全模塊110將該表存儲(chǔ)到RAM 204或閃存206并且將經(jīng)修改的對(duì)象程序 TP寫入到掃描區(qū)域。當(dāng)對(duì)象程序TP (修改后)被執(zhí)行時(shí),由于插入的READ命令,加密/解密密鑰被讀取,并且由于解密命令(下一命令),經(jīng)加密的命令被解密,從而使得經(jīng)解密的命令能夠被執(zhí)行。例如,如果地址4具有READ命令,則安全模塊110參考該表并且將加密 /解密密鑰Kl傳遞給處理器101。處理器101利用加密/解密密鑰Kl并且遵從地址5處的解密命令,對(duì)經(jīng)加密的命令El (Y = Y+1)解密并將命令“Y = Y+1”寫入到地址6,由此在地址6處,命令“Y = Y+1”被執(zhí)行。從而,即使要掃描的程序的一部分被加密,通過從安全模塊110獲取解密密鑰,處理也可以繼續(xù)。圖17B是對(duì)構(gòu)成對(duì)象程序TP的一組命令加密的示例。在圖17B所示的示例中,安全模塊110將對(duì)象程序TP (修改前)的地址4至7處的命令替代為指令從安全模塊110讀取的READ命令,例如將地址4處的命令“Y = Y+1”替代為READ命令。安全模塊110在地址5(下一地址)處插入指令“寫入遵照地址4處的命令從安全模塊110讀取的命令“Y = Y+1””的命令。隨后,安全模塊110把被替代的命令和相應(yīng)的地址關(guān)聯(lián)起來并存儲(chǔ)到表。例如,安全模塊110在表中把經(jīng)歷替代的地址4及其命令“Y = Y+1”關(guān)聯(lián)起來。然后,安全模塊110將該表存儲(chǔ)到RAM 204或閃存206并且將經(jīng)修改的對(duì)象程序 TP寫入到掃描區(qū)域。當(dāng)對(duì)象程序TP (修改后)被執(zhí)行時(shí),遵照替代的READ命令,處理器101 讀出替代前的原始命令。例如,處理器101遵照地址4處的READ命令從安全模塊110讀出并執(zhí)行命令“Y = Y+1”。圖18是對(duì)象程序TP修改處理的流程圖。如圖所示,安全模塊110從HDD 107讀取經(jīng)加密的對(duì)象程序E(TP)(步驟S1801)并且對(duì)經(jīng)加密的對(duì)象程序E(TP)解密(步驟S1802)。 如果對(duì)象程序TP在HDD 107中未被加密,則只是從HDD 107讀取對(duì)象程序TP。安全模塊110為對(duì)象程序TP隨機(jī)地確定修改方法(步驟S1803)。例如,安全模塊 110從“混淆”、“加密”(參見圖17)、“打亂”(參見圖16和17)以及“不進(jìn)行任何操作”之中確定修改方法。如果修改方法是“混淆”(步驟S1804 是),則安全模塊110從對(duì)象程序TP規(guī)定要混淆的范圍(步驟S180O,對(duì)規(guī)定的范圍內(nèi)的(一個(gè)或多個(gè))命令進(jìn)行混淆(步驟S1806), 并且返回到步驟S1803。在步驟S1804,如果修改方法不是“混淆”(步驟S1804 否),則安全模塊110判斷修改方法是否是“加密”(步驟S1807)。如果修改方法是“加密”(步驟S1807 是),則安全模塊110從對(duì)象程序TP規(guī)定經(jīng)歷加密的范圍(步驟S1808)并且對(duì)該范圍內(nèi)的(一個(gè)或多個(gè))命令進(jìn)行加密(步驟S1809),此時(shí),如圖17所示,經(jīng)歷加密的地址和用于對(duì)該地址處經(jīng)加密的命令解密的解密密鑰被關(guān)聯(lián)起來并保存在表中。隨后,安全模塊110返回到步驟 S1803。在步驟S1807,如果修改方法不是“加密”(步驟S1807 否),則安全模塊110判斷修改方法是否是“打亂”(步驟S1810)。如果修改方法是“打亂”(步驟S1810 是),則安全模塊110執(zhí)行打亂處理(圖19),并且在打亂處理之后(步驟S1811),返回到步驟S1803。在步驟S1810,如果修改方法不是“打亂”(步驟S1810 否),則安全模塊110判斷修改是否已結(jié)束(步驟S1812)。例如,在此示例,假定修改方法被隨機(jī)地確定為“不進(jìn)行任何操作”,那么如果修改一次也沒被執(zhí)行,則修改不被結(jié)束(步驟S1812 否),在此情況下安全模塊110返回到步驟S1803。如果修改被執(zhí)行了至少一次或預(yù)定次數(shù),則修改被隨機(jī)地結(jié)束(步驟S1812 是)。 在此情況下,經(jīng)修改的對(duì)象程序TP被寫入到RAM 103的掃描區(qū)域130 (步驟S181!3),從而結(jié)束修改處理。圖19是圖18所示的打亂處理(步驟S1811)的流程圖。這里,作為示例,將描述圖15所示的打亂。安全模塊110在安全模塊110中確立修改目的地區(qū)域(步驟S1901)并且將對(duì)象程序TP分成多個(gè)命令組(步驟S1902)。安全模塊110將開頭命令組設(shè)定為要打亂的命令組(步驟S1903)。安全模塊110 判斷在要打亂的命令組的隨后是否有命令組(步驟S1904)。如果有隨后的命令組(步驟 S1904:是),則安全模塊110隨機(jī)地生成程序片段(例如Goto語句)(步驟S1905)。例如, 安全模塊110隨機(jī)地生成程序片段,從而確立要被打亂的命令組將被放置到的區(qū)域。隨后,安全模塊110將所生成的程序片段的地址設(shè)定為要被打亂的命令組的末尾地址的隨后的地址(步驟S1906)。安全模塊110將該程序片段與寫入該程序片段的地址關(guān)聯(lián)起來并添加到表(步驟S1907)。安全模塊110在分配給對(duì)象程序TP的程序片段的地址處寫入用于該程序片段的 READ命令(步驟S1908)。隨后,安全模塊110在該程序片段所規(guī)定的地址處(如果程序片段是“GotoS”,則在地址“8”處)將隨后的命令組設(shè)定為要打亂的命令組(步驟S1909),并且返回到步驟S1904。在步驟S1904,如果沒有隨后的命令組(步驟S1904 否),則安全模塊110結(jié)束打亂處理并且返回到步驟S1803。這樣,通過修改對(duì)象程序TP,安全性可得以加強(qiáng),甚至對(duì)抗對(duì)對(duì)象程序TP的破解。 上述修改處理在每次經(jīng)加密的對(duì)象程序TP被讀取時(shí)被執(zhí)行,并且在每次執(zhí)行時(shí),對(duì)象程序 TP修改方法變化,由此使得破解器更難以分析對(duì)象程序TP。另外,如果掃描程序SP按隨機(jī)的間隔或者周期性地對(duì)掃描區(qū)域130進(jìn)行掃描,則在掃描程序SP被更新前,修改程序PP隨機(jī)地寫入數(shù)據(jù)和/或代碼到掃描區(qū)域130。在更新前,通過在修改后利用掃描程序SP掃描,掃描程序SP的適當(dāng)操作可不斷被確認(rèn)。圖20A至20C示出了對(duì)象程序TP的修改的示例。在圖20A中,示出了如下示例 對(duì)象程序TP的地址1至4處的命令被混淆并且NOP被添加到地址5至7。在圖20B中,示出了如下示例地址1至4處的命令保持原樣并且命令被添加到地址5至7,然而結(jié)果是相同的。在圖20C中,示出如下示例地址1至4處的命令保持原樣,并且由于無意義的命令被添加到地址5至7,因此結(jié)果相同。從而,在圖20的左側(cè)的對(duì)象程序TP被掃描后,對(duì)象程序TP如圖20的右側(cè)所示被修改,并且在掃描程序SP的更新之前,經(jīng)修改的對(duì)象程序TP被掃描,由此掃描程序SP的適當(dāng)操作可不斷被確認(rèn)。如上所述,根據(jù)實(shí)施例,即使在接口不支持硬件掃描的情況下,也實(shí)現(xiàn)了不容易被破解器禁用的掃描。尤其,通過提高更新掃描程序SP的頻率,可進(jìn)一步加強(qiáng)安全性。另外, 由于在每次對(duì)象程序TP被寫入到掃描區(qū)域130時(shí)對(duì)象程序TP被修改,因此安全性可得到進(jìn)一步加強(qiáng)。在實(shí)施例中,雖然說明了安全模塊110通過USB連接而連接到能夠進(jìn)行PCI (或 PCIe)連接和USB連接的信息處理裝置100的示例,但構(gòu)造并不限于USB而是可以與除USB 標(biāo)準(zhǔn)以外的標(biāo)準(zhǔn)兼容。另外,當(dāng)要對(duì)開放體系結(jié)構(gòu)PC的軟件保證安全性(保護(hù)數(shù)字AV信息免遭竊取) 時(shí),例如當(dāng)通過數(shù)字廣播或?qū)拵Щヂ?lián)網(wǎng)來傳送數(shù)字AV信息、游戲軟件和應(yīng)用時(shí),可以使用實(shí)施例。
這里記載的所有示例和條件性語言是用于教導(dǎo)目的的,以便幫助讀者理解本發(fā)明和發(fā)明人為了推進(jìn)技術(shù)而貢獻(xiàn)的思想,并且應(yīng)當(dāng)被解釋為不限于這種具體記載的示例和條件,而且說明書中對(duì)這種示例的組織也不涉及對(duì)本發(fā)明的優(yōu)勢(shì)和劣勢(shì)的示出。雖然已詳細(xì)描述了本發(fā)明的實(shí)施例,但應(yīng)當(dāng)理解,在不脫離本發(fā)明的精神和范圍的情況下可對(duì)其進(jìn)行各種改變、替代和更改。
權(quán)利要求
1.一種安全模塊,包括生成單元,該生成單元執(zhí)行生成掃描程序的生成處理并且還執(zhí)行隨機(jī)更新所述掃描程序的內(nèi)容的更新處理,其中所述掃描程序使得生成對(duì)象程序所特有的代碼的掃描處理在連接的設(shè)備處被執(zhí)行;存儲(chǔ)設(shè)備,該存儲(chǔ)設(shè)備中存儲(chǔ)有所述對(duì)象程序所特有的代碼;以及認(rèn)證單元,如果所述掃描程序被所述連接的設(shè)備執(zhí)行并且是針對(duì)在所述連接的設(shè)備中的指定存儲(chǔ)區(qū)域處存儲(chǔ)的所述對(duì)象程序執(zhí)行的,則所述認(rèn)證單元基于所述存儲(chǔ)設(shè)備中存儲(chǔ)的所述特有的代碼和在所述連接的設(shè)備處執(zhí)行的所述掃描程序的執(zhí)行結(jié)果來認(rèn)證在所述指定存儲(chǔ)區(qū)域處存儲(chǔ)的所述對(duì)象程序的有效性。
2.根據(jù)權(quán)利要求1所述的安全模塊,其中,所述安全模塊具有禁止在內(nèi)部存儲(chǔ)的信息被從外部參考的結(jié)構(gòu)。
3.根據(jù)權(quán)利要求1所述的安全模塊,其中,所述生成單元周期性地執(zhí)行所述更新處理。
4.根據(jù)權(quán)利要求1所述的安全模塊,其中,所述生成單元按隨機(jī)的間隔執(zhí)行所述更新處理。
5.根據(jù)權(quán)利要求1所述的安全模塊,其中,作為所述更新處理,所述生成單元使所述掃描程序的命令混淆。
6.根據(jù)權(quán)利要求1所述的安全模塊,其中,作為所述更新處理,所述生成單元改變由所述掃描程序規(guī)定的、在所述指定存儲(chǔ)區(qū)域中要掃描的地址。
7.根據(jù)權(quán)利要求1所述的安全模塊,其中,作為所述更新處理,所述生成單元改變?cè)谒鰭呙璩绦虻拿罱M中規(guī)定的、在所述指定存儲(chǔ)區(qū)域中要掃描的地址的順序。
8.根據(jù)權(quán)利要求1所述的安全模塊,其中,作為所述更新處理,所述生成單元改變基于所述掃描程序中的命令所規(guī)定的數(shù)據(jù)的計(jì)算命令的內(nèi)容;把由于改變后的計(jì)算命令獲得的計(jì)算結(jié)果存儲(chǔ)到所述存儲(chǔ)設(shè)備;并且添加用于將所獲得的計(jì)算結(jié)果返回給所述安全模塊的命令。
9.根據(jù)權(quán)利要求1所述的安全模塊,其中,作為所述更新處理,所述生成單元把所述掃描程序中的命令改變成依賴于在所述連接的設(shè)備中存儲(chǔ)所述掃描程序的地址的命令。
10.根據(jù)權(quán)利要求1所述的安全模塊,其中,作為所述更新處理,所述生成單元在保持生成與所述特有的代碼相同的代碼的同時(shí)隨機(jī)地生成具有不同的記述內(nèi)容的掃描程序。
11.根據(jù)權(quán)利要求10所述的安全模塊,其中,所述生成單元周期性地執(zhí)行所述生成處理。
12.根據(jù)權(quán)利要求10所述的安全模塊,其中,所述生成單元按隨機(jī)的間隔執(zhí)行所述生成處理。
13.根據(jù)權(quán)利要求1所述的安全模塊,還包括修改單元,該修改單元把所述對(duì)象程序修改成具有不同的記述內(nèi)容和相同的功能的程序代碼,其中經(jīng)修改的對(duì)象程序所特有的代碼被寫入到所述存儲(chǔ)設(shè)備,覆蓋現(xiàn)有的特有代碼。
14.根據(jù)權(quán)利要求13所述的安全模塊,其中,所述修改單元使所述對(duì)象程序中的命令混淆。
15.根據(jù)權(quán)利要求13所述的安全模塊,其中,所述修改單元打亂所述對(duì)象程序中的命令;把將規(guī)定跳躍到的地址的跳躍命令與該跳躍命令的地址關(guān)聯(lián)起來的表存儲(chǔ)到所述存儲(chǔ)設(shè)備;把打亂后的對(duì)象程序中的跳躍命令的內(nèi)容改變成對(duì)于所述表的讀取命令;并且把包括所述讀取命令的對(duì)象程序?qū)懭氲剿鲋付ù鎯?chǔ)區(qū)域。
16.根據(jù)權(quán)利要求13所述的安全模塊,其中,所述修改單元打亂所述對(duì)象程序中的命令;把將規(guī)定跳躍到的地址的跳躍命令、跳躍源命令與該跳躍源命令的地址關(guān)聯(lián)起來的表存儲(chǔ)到所述存儲(chǔ)設(shè)備;把打亂后的對(duì)象程序中的跳躍源命令的內(nèi)容改變成對(duì)于所述表的讀取命令;并且把包括所述讀取命令的對(duì)象程序?qū)懭氲剿鲋付ù鎯?chǔ)區(qū)域。
17.根據(jù)權(quán)利要求13所述的安全模塊,其中,所述修改單元把所述對(duì)象程序中的給定命令替代為作為被加密的所述給定命令的經(jīng)加密命令、指令從所述安全模塊讀取的讀取命令、以及指令對(duì)所述經(jīng)加密命令解密的解密命令;把將所述讀取命令的地址與對(duì)所述經(jīng)加密的命令解密的解密密鑰關(guān)聯(lián)起來的表存儲(chǔ)到所述存儲(chǔ)設(shè)備;并且把經(jīng)修改的對(duì)象程序?qū)懭氲剿鲋付ù鎯?chǔ)區(qū)域。
18.根據(jù)權(quán)利要求13所述的安全模塊,其中,所述修改單元把所述對(duì)象程序中的給定命令替代為指令從所述安全模塊讀取的讀取命令;把將所述讀取命令的地址與替代前的所述給定命令關(guān)聯(lián)起來的表存儲(chǔ)到所述存儲(chǔ)設(shè)備;并且把經(jīng)修改的對(duì)象程序?qū)懭氲剿鲋付ù鎯?chǔ)區(qū)域。
19.根據(jù)權(quán)利要求13所述的安全模塊,其中在所述連接的設(shè)備處對(duì)所述掃描程序的執(zhí)行期間,所述修改單元把所述對(duì)象程序修改成具有不同的記述內(nèi)容和相同的功能的程序代碼,并且經(jīng)修改的對(duì)象程序所特有的代碼被寫入到所述存儲(chǔ)設(shè)備,覆蓋現(xiàn)有的特有代碼。
20.一種信息處理裝置,包括處理器存儲(chǔ)器;以及安全模塊,包括生成單元,該生成單元執(zhí)行生成掃描程序的生成處理并且執(zhí)行隨機(jī)更新所述掃描程序的內(nèi)容的更新處理,其中所述掃描程序使得生成對(duì)象程序所特有的代碼的掃描處理被所述處理器執(zhí)行;存儲(chǔ)設(shè)備,該存儲(chǔ)設(shè)備中存儲(chǔ)有所述對(duì)象程序所特有的代碼;以及認(rèn)證單元,如果所述掃描程序針對(duì)在所述存儲(chǔ)器中的指定存儲(chǔ)區(qū)域處存儲(chǔ)的所述對(duì)象程序執(zhí)行,則所述認(rèn)證單元基于所述存儲(chǔ)設(shè)備中存儲(chǔ)的所述特有的代碼和所述掃描程序的執(zhí)行結(jié)果來認(rèn)證在所述指定存儲(chǔ)區(qū)域處存儲(chǔ)的所述對(duì)象程序的有效性。
全文摘要
本發(fā)明提供了安全模塊和信息處理裝置。安全模塊包括生成單元,該生成單元執(zhí)行生成掃描程序的生成處理并且還執(zhí)行隨機(jī)更新所述掃描程序的內(nèi)容的更新處理,其中所述掃描程序使得生成對(duì)象程序所特有的代碼的掃描處理在連接的設(shè)備處被執(zhí)行;存儲(chǔ)設(shè)備,該存儲(chǔ)設(shè)備中存儲(chǔ)有所述對(duì)象程序所特有的代碼;以及認(rèn)證單元,如果所述掃描程序被所述連接的設(shè)備執(zhí)行并且是針對(duì)在所述連接的設(shè)備中的指定存儲(chǔ)區(qū)域處存儲(chǔ)的所述對(duì)象程序執(zhí)行的,則所述認(rèn)證單元基于所述存儲(chǔ)設(shè)備中存儲(chǔ)的所述特有的代碼和在所述連接的設(shè)備處執(zhí)行的所述掃描程序的執(zhí)行結(jié)果來認(rèn)證在所述指定存儲(chǔ)區(qū)域處存儲(chǔ)的所述對(duì)象程序的有效性。
文檔編號(hào)G06F21/00GK102375948SQ20111013524
公開日2012年3月14日 申請(qǐng)日期2011年5月18日 優(yōu)先權(quán)日2010年8月10日
發(fā)明者吉武敏幸, 小檜山清之, 川上達(dá)郎, 高楠昌和 申請(qǐng)人:富士通半導(dǎo)體股份有限公司, 富士通株式會(huì)社