專利名稱:通信裝置和安全模塊的制作方法
技術(shù)領(lǐng)域:
這里公開的實施例涉及通信裝置和安全模塊。
背景技術(shù):
例如移動終端之類的終端的規(guī)格和軟件結(jié)構(gòu)被保持秘密。利用完好性得到確保的安全模塊(例如防篡改模塊)可以確保例如真實的密碼密鑰(cryptographic key)之類的機密信息的安全性。安全模塊的一個示例是訂戶身份模塊(SIM)卡。例如,為了與終端通信,外部裝置判定接收到的通信內(nèi)容是否被用完好性得到確保的真實密碼密鑰加密,從而判定通信內(nèi)容是否是真實的。相關(guān)技術(shù)在日本早期專利公布No. 2004-129227和日本專利No. 4408601中公開。例如,由于智能電話終端的規(guī)格或軟件結(jié)構(gòu)可被公開給公眾,所以終端中的軟件可被分析并篡改。由于使用軟件的接口也被公開給公眾,所以利用非真實軟件可以讀取內(nèi)部結(jié)構(gòu)未被篡改的安全模塊中的機密信息。由于非真實軟件可發(fā)送利用真實密碼密鑰加密的偽造通信內(nèi)容到外部裝置,所以外部裝置可能不能判定通信內(nèi)容的真實性。
發(fā)明內(nèi)容
根據(jù)一個實施例,一種通信裝置包括安全模塊;設(shè)在安全模塊外部的第一存儲設(shè)備,存儲用于利用存儲在安全模塊中的密碼密鑰與通信裝置外部的裝置加密通信的程序;設(shè)在安全模塊中的檢測單元,檢測對程序的篡改;以及設(shè)在安全模塊中的設(shè)定單元,當檢測到對程序的篡改時禁止加密通信。這種結(jié)構(gòu)可減少對安全模塊的窺探或者可減少對安全模塊中的數(shù)據(jù)的篡改。本發(fā)明的額外優(yōu)點和新穎特征部分將在接下來的描述中記載,部分將在本領(lǐng)域的技術(shù)人員考查以下內(nèi)容時或在通過實踐本發(fā)明而學習時變得更顯而易見。
圖1A、1B和IC各自示出了示例性通信;圖2示出了示例性的通信裝置;圖3示出了示例性的安全模塊;圖4示出了示例性的通信裝置;圖5示出了示例性的安全模塊;圖6示出了示例性的安全模塊;圖7示出了通信裝置的示例性操作;圖8示出了通信裝置的示例性操作;圖9示出了示例性的掃描程序;圖10示出了示例性的掃描程序;
圖11示出了示例性的掃描程序;圖12示出了示例性的掃描程序;圖13示出了示例性的掃描程序生成/更新處理;圖14示出了示例性的掃描程序生成處理;圖15示出了示例性的掃描程序生成處理;圖16示出了示例性的掃描程序更新處理;
圖17示出了示例性的掃描程序更新處理;圖18示出了示例性的程序修改;圖19示出了示例性的程序修改;圖20示出了示例性的程序修改;圖21示出了示例性的程序修改;圖22示出了示例性的程序修改;圖23示出了示例性的程序修改;圖24示出了示例性的混排(shuffling)處理;圖25A至25C示出了示例性的程序修改;圖26示出了示例性的計算程序;圖27示出了示例性的認證處理;圖28示出了示例性的加密許可處理;圖29示出了示例性的認證序列;圖30示出了示例性的認證序列;圖31示出了加密通信的示例性序列;圖32示出了加密通信的示例性序列;并且圖33示出了示例性的加密通信。
具體實施例方式圖IA至IC示出了示例性通信。通信可在通信裝置和中心之間執(zhí)行。圖IA至IC的每一幅中示出的通信裝置101包括安全模塊102。通信裝置101還可包括程序(例如加密通信程序),用于通過使用安全模塊102中的密碼密鑰(例如密碼密鑰K)來執(zhí)行加密通信。在加密通信中,通信內(nèi)容被加密。例如,在加密通信程序中,要發(fā)送的通信內(nèi)容被利用密碼密鑰K加密,或者接收到的通信內(nèi)容被利用密碼密鑰K解密。用于加密的密鑰和用于解密的密鑰可以是相互不同的。利用加密通信程序,通信裝置101通過網(wǎng)絡(luò)110與例如中心103這樣的外部裝置執(zhí)行加密通信。加密通信程序例如可包括書籍定購軟件、電子書定購軟件或者電子貨幣接收軟件。通信裝置101可通過網(wǎng)絡(luò)110耦合到破解者的計算機104。安全模塊102可具有保護內(nèi)部信息免受外部引用的結(jié)構(gòu)。這種結(jié)構(gòu)的ー個示例是具有防篡改模塊結(jié)構(gòu)(TRM結(jié)構(gòu))的大規(guī)模集成電路(LSI)。這種結(jié)構(gòu)可減少對安全模塊102的窺探或者減少對安全模塊102中的數(shù)據(jù)的篡改。安全模塊102可保存真實的密碼密鑰K。與密碼密鑰K相對應(yīng)的解密密鑰可以是密碼密鑰K。當密碼密鑰K和解密密鑰相互不同吋,安全模塊102可保存解密密鑰。安全模塊102可保存與與其執(zhí)行通信的中心103的密碼密鑰相對應(yīng)的解密密鑰。安全模塊102可周期性地監(jiān)視例如目標程序TP之類的程序是真實的程序還是經(jīng)篡改的非真實程序。目標程序TP可以是通信裝置101中的加密通信程序。在判定目標程序TP是真實程序時,安全模塊102向目標程序TP提供用于對通信內(nèi)容加密的密碼密鑰K。在判定目標程序TP是非真實程序時,安全模塊102被置于如下狀態(tài)在該狀態(tài)中,通信裝置101中的目標程序TP不能利用密碼密鑰K執(zhí)行加密通信。當建立了不能利用密碼密鑰K執(zhí)行加密通信的狀態(tài)時,例如,安全模塊102可拒絕從非真實程序發(fā)出的密碼密鑰K讀取請求或通信內(nèi)容加密請求。例如,安全模塊102的功能可被停止,直到重啟為止?;蛘撸踩K102可向通信裝置101發(fā)送停止非真實程序的請求以終止非真實程序。中心103可與通信裝置101執(zhí)行加密通信。中心103可保存與中心102中的密碼密鑰K相對應(yīng)的解密密鑰。例如,當安全模塊102中的密碼密鑰K是秘密密鑰時,中心103處的解密密鑰可以是安全模塊102的公鑰。例如,安全模塊102中的密碼密鑰K和中心103處的解密密鑰可由共同的密鑰實現(xiàn)。中心103可判定接收到的內(nèi)容是否被用密碼密鑰K加密了,來判定通信內(nèi)容是否是真實的。例如,當中心103利用與密碼密鑰K相對應(yīng)的解密密鑰適當?shù)亟饷芰私邮盏降膬?nèi)容時,中心103可判定接收到的內(nèi)容是真實的通信內(nèi)容。如圖IA中所示,當真實程序在通信裝置101中適當?shù)剡\行時,安全模塊102可判定目標程序TP是真實程序。安全模塊102可向該真實程序提供用于對相應(yīng)的通信內(nèi)容加密的密碼密鑰K。該真實程序可通過使用真實的密碼密鑰K來對通信內(nèi)容進行加密并且可將經(jīng)加密的內(nèi)容發(fā)送到中心103?;谕ㄐ艃?nèi)容是否已被用真實的密碼密鑰K加密,中心103檢查通信內(nèi)容。例如,當中心103利用與密碼密鑰K相對應(yīng)的解密密鑰適當?shù)亟饷芰送ㄐ艃?nèi)容時,中心103可判定接收到的內(nèi)容是真實的?;诮邮盏降耐ㄐ艃?nèi)容,例如,中心103處的用戶可向通信裝置101的用戶發(fā)送書籍或者可為該書籍收取費用。如圖IB中所示,真實程序可被從破解者的計算機104發(fā)送到通信裝置101的非真實程序所覆蓋。非真實程序例如可以是通過篡改書籍銷售軟件而產(chǎn)生的程序。非真實程序可偽造在通信裝置101的用戶購買時輸入的遞送地址,并且因此,用戶購買的書籍可被竊取。如圖IC中所示,當非真實程序在通信裝置101中運行時,安全模塊102可判定目標程序TP是非真實程序。在判定目標程序TP是非真實程序時,安全模塊102可被置于如下狀態(tài)在該狀態(tài)中,通信裝置101中的目標程序TP不能利用密碼密鑰K執(zhí)行加密通信。從而,非真實程序可不能利用真實的密碼密鑰K來對偽造的通信內(nèi)容加密。雖然真實程序利用真實的密碼密鑰K對通信內(nèi)容加密,但非真實程序不可利用真實的密碼密鑰K對偽造的通信內(nèi)容加密。結(jié)果,中心103不會錯誤地將偽造的通信內(nèi)容識別為從真實程序發(fā)送來的通信內(nèi)容,通信的完好性可得到確保。圖2示出了示例性的通信裝置。圖2示出了通信裝置101的硬件配置。通信裝置101包括處理器201、只讀存儲器(ROM) 202、隨機訪問存儲器(RAM) 203和硬盤驅(qū)動器(HDD) 204。通信裝置101還包括接口 205、顯示器206和安全模塊102。通信裝置101的元件可通過總線200互連。處理器201可控制整個通信裝置101。ROM 202可存儲程序,例如引導程序。RAM203可用作處理器201的工作區(qū)域。在處理器201的控制下,HDD 204可控制向內(nèi)置的硬盤寫入數(shù)據(jù)/從內(nèi)置的硬盤讀取數(shù)據(jù)。接ロ 205可耦合到網(wǎng)絡(luò)110,例如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或因特網(wǎng),并且可通過網(wǎng)絡(luò)Iio耦合到另ー裝置。接ロ 205作為網(wǎng)絡(luò)110與內(nèi)部元件之間的接ロ,以控制來自外部裝置的數(shù)據(jù)的輸入/輸出。接ロ 205例如可包括調(diào)制解調(diào)器和LAN適配器。 顯示器206例如顯示光標、圖標、工具箱、文檔、圖像或功能性信息的數(shù)據(jù)等等。顯示器206的示例可包括陰極射線管(CRT)顯示器、TFT (薄膜晶體管)液晶顯示器和等離子顯示器。安全模塊102從HDD 204中讀取目標程序TP并且生成或更新用于掃描目標程序TP以檢測篡改的掃描程序。安全模塊102將目標程序TP和掃描程序加載到RAM 203中,執(zhí)行加密或解密,或者生成隨機數(shù)。安全模塊102可以安全的方式保存密碼密鑰K或用戶標識ィ目息。安全模塊102也可保存真實的密碼密鑰K或用戶標識信息,并且通信裝置101可執(zhí)行加密或解密或生成隨機數(shù)。安全模塊102根據(jù)來自通信裝置101的請求而輸出密碼密鑰K或用戶標識信息。安全模塊102可設(shè)置在通信裝置101內(nèi)部或外部。圖3示出了示例性的安全模塊。圖3中所示的安全模塊可以是圖2中所示的安全模塊102。安全模塊102包括處理器301、接ロ 302、密碼電路303、RAM 304, ROM 305、閃存306以及隨機數(shù)生成電路307。處理器301控制安全模塊102或執(zhí)行計算。接ロ 302通過總線300耦合到通信裝置101中的元件以與外部裝置通信。密碼電路303對數(shù)據(jù)或程序加密或者對經(jīng)加密的數(shù)據(jù)或經(jīng)加密的程序解密。RAM 304可以是用作處理器301的工作區(qū)域的主存儲器。ROM 305可以是存儲程序和數(shù)據(jù)的非易失性存儲器。ROM 305可存儲真實密碼密鑰K或用戶標識信息。閃存306可以是非易失性存儲器,其中存儲的數(shù)據(jù)或存儲的程序可被改寫。隨機數(shù)生成電路307生成隨機數(shù)。例如,通過將安全模塊102結(jié)合到單芯片LSI中,如圖3中所示,不可從外部篡改安全模塊102。例如,安全模塊102可具有TRM結(jié)構(gòu)。TRM結(jié)構(gòu)物理地或邏輯地保護半導體芯片(例如安全模塊102)免遭內(nèi)部分析和篡改。例如,一粘性很高且強力的涂層可被施加到安全模塊102內(nèi)的一部分。利用這種結(jié)構(gòu),當安全模塊102被移除時,安全模塊102的內(nèi)部電路可破損。也可提供虛假導線。圖4示出了示例性的通信裝置。圖4中所示的通信裝置101包括處理器201、R0M202, RAM 203, HDD 204、接ロ 205、顯示器206和安全模塊102。在圖4中,與圖2中所示的元件基本相同或相似的元件被用相同的標號表示,并且對其的描述被省略或減少。圖4中所示的安全模塊102包括用于執(zhí)行加密或解密或生成隨機數(shù)的LSI 401和用于以安全方式保存密碼密鑰K或用戶標識信息的SM卡402。LSI 401從SM卡402中讀取密碼密鑰K并且適當?shù)貙γ艽a密鑰K加密或解密。圖5示出了示例性的安全模塊。圖5中所示的安全模塊可以是圖4中所示的安全模塊102。圖5中所示的安全模塊102包括LSI 401和SM卡402。LSI 401包括處理器301、接口 302、密碼電路303、RAM 304、ROM 305、閃存306和隨機數(shù)生成電路307。SM卡402以安全方式保存密碼密鑰K和用戶標識信息。在安全模塊102中,LSI 401和SM卡402經(jīng)由接口 302互連以執(zhí)行通信。在圖5中,與圖3中所示的元件基本相同或相似的元件被用相同的標號表不,并且對其的描述被省略或減少。當安全模塊102是包括多個芯片并且被用樹脂加固的單個模塊時,如圖5中所示,第三方對安全模塊102的篡改可被減少。圖6示出了示例性的安全模塊。安全模塊102包括檢測單元601、設(shè)定單元602、存儲單元603、生成單元604、修改單元605、判定單元606、獲得單元607、密碼單元608以及 輸出單元609。檢測單元601檢測對程序的篡改。該程序可被保存在通信裝置101的存儲設(shè)備中。該程序可使用安全模塊102中保存的密碼密鑰K來與通信裝置101外部的裝置(例如中心103)執(zhí)行加密通信。例如,該程序可包括目標程序TP。例如,掃描程序可在通信裝置101中對存儲在通信裝置101的存儲設(shè)備的特定存儲區(qū)域中的程序運行掃描程序。檢測單元601基于存儲單元603中存儲的代碼和通信裝置101執(zhí)行的掃描程序運行的結(jié)果,來檢測對該特定存儲區(qū)域中存儲的程序的篡改。該特定存儲區(qū)域可以是RAM 203中的包括目標程序TP的掃描目標區(qū)域,例如可以是掃描目標區(qū)域230。掃描程序可以是用于檢測對目標程序TP的篡改的程序,例如可以是掃描程序SP。掃描程序可在通信裝置101內(nèi)運行。該代碼可以是目標程序TP的程序代碼并且掃描程序運行的結(jié)果可以是對目標程序TP的程序代碼的給定計算結(jié)果。該給定計算例如包括四則運算、邏輯運算、校驗和計算或使用散列函數(shù)的散列值計算。檢測單元601檢測對目標程序TP的基于破解的篡改。例如,檢測單元601基于掃描程序?qū)νㄐ叛b置101中的存儲設(shè)備中的特定存儲區(qū)域中存儲的程序和存儲單元603中存儲的代碼的運行結(jié)果,來檢測對特定存儲區(qū)域中存儲的程序的篡改。掃描程序可在安全模塊102內(nèi)運行。檢測單元601檢測對目標程序TP的基于破解的篡改。由于檢測單元601在完好性得到確保的安全模塊102中運行掃描程序,所以可以減少對掃描程序的破解。檢測單元601可在處理器301運行圖3中所示的諸如ROM 305、RAM 304或閃存306之類的存儲設(shè)備中存儲的程序時操作。設(shè)定單元602將安全模塊102置于程序不可利用密碼密鑰K執(zhí)行加密通信的狀態(tài)中。例如,當檢測單元601檢測到對程序的篡改時,設(shè)定單元602可停止密碼單元608、輸出單元609或所有功能。設(shè)定單元602還可設(shè)定安全模塊102,以使其不響應(yīng)從被檢測到篡改的目標程序TP發(fā)出的密碼密鑰K讀取請求或通信內(nèi)容加密請求。從而,被檢測到篡改的目標程序TP不可利用密碼密鑰K執(zhí)行加密通信。例如,判定單元606可判定將自身偽裝為通信裝置101的破解者計算機104正與安全模塊102通信。設(shè)定單元602可停止密碼單元608、輸出單元609或所有功能。設(shè)定單元602可執(zhí)行設(shè)定以使得安全模塊102不可與破解者的計算機104通信。設(shè)定單元602可在處理器301運行圖3中所示的諸如ROM 305、RAM 304或閃存306之類的存儲設(shè)備中存儲的程序時操作。存儲單元603存儲程序特有的代碼。程序特有的代碼可包括目標程序TP的程序代碼或者對程序代碼的特定計算的結(jié)果。特定計算例如可包括四則運算、邏輯運算、校驗和計算或使用散列函數(shù)的散列值計算。例如,存儲單元603可保存通信裝置101中的RAM 203中的或安全模塊102中的RAM 304中的目標程序TP。存儲單元603可存儲安全模塊102中的RAM 304中保存的目標程序TP特有的代碼。存儲單元603可在處理器301運行圖3中所示的諸如ROM 305、RAM 304或閃存306之類的存儲設(shè)備中存儲的程序時操作。生成単元604生成用于執(zhí)行掃描處理以生成程序特有的代碼的掃描程序。生成單元604隨機地更新用于生成與特有代碼實質(zhì)上相同或相似的代碼的掃描程序。掃描程序可獲得目標程序TP的程序代碼或者可輸出對所獲得的程序代碼的特定計算的結(jié)果。例如,生成単元604生成用于在通信裝置101處執(zhí)行掃描處理的掃描程序并且生成用于檢測對目標程序TP的篡改的代碼,該代碼是目標程序TP所特有的。安全模塊102中的生成単元604生成用于訪問通信裝置101的存儲設(shè)備的掃描程序。結(jié)果,可以減少破解者對掃描程序的破解。例如,生成單元604可周期性地或不定期地更新掃描程序。生成單元604可減少破解者對掃描程序的破解。生成単元604可通過執(zhí)行“模糊處理”(obfuscation)、“掃描目標區(qū)域的改變”、“掃描目標地址的順序的改變”、“掃描計算結(jié)果的添加”或“掃描程序的地址的添加”來更新掃描程序。由于對掃描程序的更新,減少了破解者對掃描程序的解譯或篡改。生成單元604可在處理器301運行圖3中所示的諸如ROM 305、RAM 304或閃存306之類的存儲設(shè)備中存儲的程序時操作。修改単元605利用具有實質(zhì)上相同的功能并且具有不同的解密系統(tǒng)的程序來覆蓋程序。例如,修改単元605通過執(zhí)行模糊處理、加密或混排來修改目標程序TP。結(jié)果,可以減少破解者對目標程序TP的解譯。修改單元605可在處理器301運行圖3中所示的諸如ROM 305、RAM 304或閃存306之類的存儲設(shè)備中存儲的程序時或者在修改単元605經(jīng)由接ロ 302被控制時操作。判定単元606測量從向通信裝置101中的處理器201輸出程序運行請求時起到從處理器201獲得響應(yīng)為止的時間量。判定単元606判定測量到的時間量是否大于或等干與通信裝置101中的處理器203和安全模塊102之間的物理距離相對應(yīng)的允許時間量。例如,當對于運行目標程序的請求被輸出到通信裝置101中的處理器201時,設(shè)置在安全模塊102中的定時器開始時間測量。安全模塊102測量到獲得響應(yīng)為止的時間量,并且還判定測量到的時間量是否大于或等于允許時間量。將自身偽裝為通信裝置101的破解者計算機104可與安全模塊102通信。定時器測量到的時間量可變得大于基于通信裝置101中的處理器301與安全模塊102之間的物理距離估計的時間量。從而,基于測量到的時間量,判定単元606判定是否破解者在假扮通信裝置101的合法用戶。 判定單元606可在處理器301運行圖3中所示的諸如ROM 305、RAM 304或閃存306之類的存儲設(shè)備中存儲的程序時或者在判定單元606經(jīng)由接口 302被控制時操作。獲得單元607在發(fā)送數(shù)據(jù)之前獲得程序要發(fā)送到外部裝置的數(shù)據(jù)。獲得單元607從程序獲得對密碼密鑰K的輸出請求。例如,獲得單元607經(jīng)由接口 302獲得對密碼密鑰K的輸出請求和要從目標程序TP發(fā)送到中心103的通信內(nèi)容。獲得單元607獲得要加密的通信內(nèi)容。獲得單元607可在處理器301運行圖3中所示的諸如ROM 305、RAM 304或閃存306之類的存儲設(shè)備中存儲的程序時或者在獲得單元607經(jīng)由接口 302被控制時操作。密碼單元608使用密碼密鑰K來對由獲得單元607獲得的通信內(nèi)容加密。密碼密鑰K例如可以是安全模塊102的秘密密鑰或者是與中心103共同的共同密鑰。密碼單元608可在不輸出密碼密鑰K的情況下對通信內(nèi)容加密。密碼單元608可在處理器301運行圖3中所示的諸如ROM 305、RAM 304或閃存306之類的存儲設(shè)備中存儲的程序時操作。輸出單元609將密碼密鑰K輸出到程序。例如,當獲得單元607獲得對輸出密碼密鑰K的請求時,輸出單元609將密碼密鑰K輸出到目標程序TP。輸出單元609可在處理器301運行圖3中所示的諸如ROM 305、RAM 304或閃存306之類的存儲設(shè)備中存儲的程序時或者在輸出單元609經(jīng)由接口 302被控制時操作。安全模塊102對經(jīng)獲得單元607和輸出單元609處理的數(shù)據(jù)加密??梢詼p少破解者對安全模塊102和通信裝置101中的處理器301之間的通信信道上的數(shù)據(jù)的破解。安全模塊102經(jīng)由具有或不具有硬件掃描功能接口耦合到通信裝置101以檢查通信裝置101中的目標程序TP的真實性。安全模塊102可經(jīng)由沒有硬件掃描功能的接口例如USB接口耦合到通信裝置101。安全模塊102可經(jīng)由USB接口向USB兼容軟件(例如驅(qū)動器)發(fā)出對掃描存儲器中的掃描目標區(qū)域的請求。通過該掃描,可以檢查目標程序TP的真實性。該USB兼容軟件可被破解。例如,通信裝置101中的軟件可被覆蓋并且指示未覆蓋的結(jié)果可被發(fā)回。結(jié)果,掃描可能未被有效地執(zhí)行。圖7示出了通信裝置的示例性操作。例如,安全模塊102被編碼并存儲在HDD 204中的目標程序,例如經(jīng)編碼的目標程序E (TP)。安全模塊102中的密碼電路303將經(jīng)編碼的目標程序E解密成目標程序TP。安全模塊102將經(jīng)解密的目標程序TP寫出到RAM 203中的掃描目標區(qū)域230中。目標程序TP可被保存在安全模塊102中。當存儲在HDD 204中的目標程序TP未被加密時,安全模塊102可在不對目標程序TP解密的情況下將目標程序TP寫出到RAM 203中的掃描目標區(qū)域230中。安全模塊102可通過使用修改程序PP來修改目標程序TP。例如,目標程序TP可被修改為具有與目標程序TP基本相同的功能并且具有與目標程序TP基本不同的處理操作或過程。作為目標程序TP的一部分的經(jīng)修改的程序片段可被保存在安全模塊102中。當安全模塊102中的程序片段未被引用時,在通信裝置101中不可運行目標程序TP。通過該修改,計算程序可被寫入到目標程序TP。安全模塊102可周期性地或不定期地運行用于隨機且自動地生成/更新掃描程序SP的生成程序GP。例如,可以隨機地自動生成具有掃描目標程序TP的功能并且執(zhí)行每次不同的處理操作的掃描程序SP。
例如,可以按幾毫秒到若干分鐘的間隔周期性地自動生成掃描程序SP,或者可以按隨機間隔不定期地自動生成掃描程序SP。該間隔可被設(shè)定得短于破解者進行篡改要花費的時間量。生成程序GP可以隨機地改變例如掃描目標區(qū)域230、掃描目標地址的順序、掃描計算、用于將掃描計算結(jié)果返回給安全模塊102的計算處理、掃描程序SP的代碼或者在通信裝置101的存儲器中的位置。由于對掃描程序SP的隨機且自動的生成/更新處理,即由生成程序GP執(zhí)行的處理,是在安全模塊102內(nèi)運行的,所以可以減少對生成處理的分析。當生成程序GP生成或更新掃描程序SP吋,安全模塊102中的最新掃描程序SP可掃描目標程序TP,從而更新掃描結(jié)果Rl。掃描結(jié)果Rl可被存儲在RAM 304或閃存306中。掃描結(jié)果Rl可以是與目標程序TP相對應(yīng)的特有代碼。處理器201請求驅(qū)動器231將掃描程序SP加載到RAM 203中的非掃描目標區(qū)域中。驅(qū)動器231把從安全模塊102發(fā)送來的掃描程序SP存儲在RAM 203中的非掃描目標 區(qū)域中。存儲在RAM 203中的掃描程序SP對掃描目標區(qū)域230中的目標程序TP進行掃描,從而獲得掃描結(jié)果R2。掃描結(jié)果R2經(jīng)由驅(qū)動器231被報告給安全模塊102。安全模塊102接收從驅(qū)動器231發(fā)送來的掃描結(jié)果R2。在接收到掃描結(jié)果R2吋,認證程序AP將安全模塊102中保存的掃描結(jié)果Rl與接收到的掃描結(jié)果R2相比較。當掃描結(jié)果相互匹配吋,目標程序TP可能未被篡改。當目標程序TP被覆蓋時,安全模塊102例如向處理器201發(fā)出停止目標程序TP的運行的指令。處理器201可基于該指令而停止目標程序TP。當在一定時間段中都未從驅(qū)動器231接收到掃描結(jié)果R2時,安全模塊102可向處理器201發(fā)出停止目標程序TP的運行的指令。安全模塊102可反復地執(zhí)行上述處理,直到目標程序TP的操作被停止為止。由于掃描程序SP被安全模塊102操作周期性地或不定期地隨機生成/更新,所以可以保護通信裝置101中的可改寫存儲器空間中存儲的掃描程序免遭破解。利用虛假掃描程序在一定量的時間中可以分析井覆蓋掃描程序SP。由于安全模塊102周期性地或不定期地隨機修改掃描程序SP,所以利用虛假掃描程序來分析掃描程序或覆蓋它的時間量可能是不足的。安全模塊102可經(jīng)由具有硬件掃描功能的接ロ例如DMA(直接存儲器訪問)接ロ耦合到通信裝置101。圖8示出了通信裝置的示例性操作。安全模塊102獲得存儲在HDD204中的經(jīng)加密的程序E(TP)。安全模塊102中的密碼電路303將經(jīng)編碼的目標程序E解密成目標程序TP0安全模塊102將經(jīng)解密的目標程序TP寫在RAM 203中的掃描目標區(qū)域230中。目標程序TP可被保存在安全模塊102中。安全模塊102可周期性地或不定期地運行用于自動地隨機生成/更新掃描程序SP的生成程序GP。例如,可以隨機地自動生成具有掃描目標程序TP的功能并且具有不同的處理操作的掃描程序SP。例如,可以按幾毫秒到若干分鐘的間隔周期性地自動生成生成程序GP,或者可以按隨機間隔不定期地生成生成程序GP。該間隔可被設(shè)定得短于破解者進行篡改要花費的時間量。生成程序GP可以隨機地改變例如掃描目標區(qū)域230、掃描目標地址的順序、掃描計算、用于將掃描計算結(jié)果返回給安全模塊102的計算處理、掃描程序SP的代碼或者在通信裝置101中的存儲器中的位置。由于對掃描程序SP的隨機且自動的生成/更新處理,即由生成程序GP執(zhí)行的處理,是在安全模塊102內(nèi)運行的,所以可以減少對生成的處理的窺探和分析。當生成程序GP生成或更新掃描程序SP時,安全模塊102使用最新的掃描程序SP來掃描目標程序TP,從而更新掃描結(jié)果R1。掃描結(jié)果Rl可被存儲在RAM 304或閃存306中。掃描結(jié)果Rl可以是與目標程序TP相對應(yīng)的特有代碼。
利用DMA,安全模塊102中的掃描程序SP訪問掃描目標區(qū)域230并且掃描目標程序TP,從而獲得掃描結(jié)果R2。掃描結(jié)果R2可被保存在安全模塊102中。認證程序AP將保存在安全模塊102中的掃描結(jié)果Rl與掃描結(jié)果R2相比較。當掃描結(jié)果相互匹配時,目標程序TP可能未被篡改。當目標程序TP被覆蓋時,安全模塊102例如向處理器201發(fā)出停止目標程序TP的運行的通知。處理器201可基于該通知而停止目標程序TP。安全模塊102可反復地執(zhí)行上述處理,直到目標程序TP的操作被停止為止。由于是在不使用通信裝置101中的處理器201或任何驅(qū)動器的情況下提供掃描程序SP的,所以可以保護掃描程序SP以防止通過對驅(qū)動器的破解來對其進行篡改。圖9至12示出了示例性的掃描程序。在圖9至12中,位置號“XX”和“xxxx”表示與掃描目標區(qū)域相關(guān)聯(lián)的邏輯地址。圖9中所示的掃描程序SP掃描目標程序TP。例如,值“1”、“2”、“3”、“4”、“5”可分別被存儲在存儲器位置11、12、13、14、15。在地址I至5,存儲器位置11至15處的內(nèi)容分別被寫入到存儲器位置1001至1005。在地址6,寫入的值被相加,并且在地址7,加法結(jié)果例如“15”被寫入到存儲器位置1010。在地址8,執(zhí)行向存儲器位置1010處的內(nèi)容“15”加上“+80”的計算,并且使結(jié)果值經(jīng)歷計算“*5”,從而獲得(15+80) X5 = 475。在地址9,地址8處的計算結(jié)果“475”被寫入到存儲器位置1011,并且在地址10,存儲器位置1011處的內(nèi)容“475”被報告給安全模塊102。安全模塊102保存初步掃描的掃描結(jié)果。當初步掃描的掃描結(jié)果和掃描目標區(qū)域230中的目標程序TP的掃描結(jié)果基本相互匹配時,目標程序TP可能未被篡改。當初步掃描的掃描結(jié)果和掃描目標區(qū)域230中的目標程序TP的掃描結(jié)果相互不匹配時,目標程序TP可能已被篡改。在此情況下,可發(fā)出停止目標程序TP的指令。在圖10中所示的掃描程序SP中,要從其讀取圖9中所示的掃描程序SP中的地址I至5處的值的掃描目標地址被從存儲器位置11至15改變到存儲器位置21至25。由于存儲器位置21至25處的值被讀取,所以要報告給安全模塊102的掃描結(jié)果可不同于圖9中所示的掃描結(jié)果。在圖11中所示的掃描程序SP中,圖9中所示的掃描程序SP的掃描目標地址的順序被改變并且依賴于掃描目標地址的順序的改變的計算被改變。例如,地址I至5處的掃描目標地址的順序被改變。此外,地址6的計算可被隨機覆蓋。報告給安全模塊102的掃描結(jié)果可不同于圖9中所示的掃描結(jié)果。由于圖11中所示的掃描程序SP未被保存在特定的存儲區(qū)域中,所以圖12中所示的掃描程序SP不可運行掃描。安全模塊102指定保存掃描程序SP的地址。例如,在地址I至5,保存掃描程序SP的地址(例如掃描程序SP的開頭地址)可被加到從其讀取值的掃描目標地 址的值。當安全模塊102保存的圖12中所示的掃描程序SP的掃描結(jié)果Rl和掃描目標區(qū)域230中的目標程序TP的掃描結(jié)果R2基本相互匹配吋,掃描程序SP被加載在預定的位置,從而目標程序TP可能不曾被篡改。當掃描結(jié)果相互不匹配吋,目標程序TP被停止,因為掃描程序SP可能被保存在了另外的位置。當存儲掃描程序SP的存儲器位置不同時,掃描結(jié)果不同??梢詼p少用于分析被寫入在不同的存儲器位置的掃描程序SP的操作的破解。圖13示出了示例性的掃描程序生成/更新處理。安全模塊102中的處理器301運行生成程序GP,從而生成/更新掃描程序SP。安全模塊102等待直到一定量的時間過去。例如,該一定量時間的測量是由寫入到RAM 203中的掃描目標區(qū)域230的目標程序TP的運行的開始而觸發(fā)的。該一定量的時間例如可以是幾毫秒到若干分鐘??梢栽趲缀撩氲饺舾煞昼姷姆秶须S機設(shè)定該一定量的時間。當該一定量的時間過去時,在操作S1302中,安全模塊102判定是否生成了掃描程序SP。當沒有生成掃描程序SP時,處理前進到操作S1303,在該操作中安全模塊102例如如圖14或15中所示生成掃描程序。隨后,在操作S1304中,安全模塊102將所生成的掃描程序SP寫入到RAM 203中的非掃描目標區(qū)域。在操作S1305中,安全模塊102通過使用所生成的掃描程序SP來掃描目標程序TPo掃描結(jié)果可被保存在安全模塊102中,例如保存在RAM304或閃存306中。處理隨后返回到操作S1301。當掃描程序SP已被生成時,處理前進到操作S1306,在該操作中安全模塊102隨機地判定是要更新掃描程序SP還是要生成另ー掃描程序SP。當在操作S1307中判定要生成另ー掃描程序SP時,處理前進到操作S1303。當在操作S1307中判定要更新掃描程序SP時,處理前進到操作S1308,在該操作中例如可運行圖16和17中所示的掃描程序更新處理。在操作S1304中,經(jīng)更新的掃描程序SP可被寫入到RAM 203中的非掃描目標區(qū)域。在操作S1305中,安全模塊102通過使用經(jīng)更新的掃描程序SP來掃描目標程序TP0掃描結(jié)果可被保存在安全模塊102中,例如保存在RAM304或閃存306中。處理隨后返回到操作S1301。例如,在目標程序TP結(jié)束吋,目標程序TP被從掃描目標區(qū)域230中刪除并且安全模塊102結(jié)束掃描程序生成/更新。圖14示出了示例性的掃描程序生成處理。圖14中所示的掃描程序生成處理可對應(yīng)于圖13中所示的掃描程序生成處理,例如操作S1303。在操作S1401中,安全模塊102在安全模塊102外的RAM 203中設(shè)定掃描目標區(qū)域230[As,Ae]和寫入目的地區(qū)域[Bs,Be]。掃描目標區(qū)域230[As,Ae]的大小可以與目標程序TP的大小或目標程序TP的一部分的大小基本相同。
當掃描目標區(qū)域230[As,Ae]的大小和目標程序TP的一部分的大小基本相同時,每次掃描程序被生成時,掃描目標區(qū)域230 [As,Ae]被設(shè)定在一不同的范圍中。例如,每次掃描程序被生成時,掃描目標區(qū)域230 [As,Ae]可被移位。在操作S1402中,安全模塊102在安全模塊102中的RAM 304或閃存306中,例如安全模塊內(nèi)區(qū)域,設(shè)定大于掃描目標區(qū)域230的存儲器區(qū)域[Ms,Me]。在操作S1403中,安全模塊102設(shè)定各種變量的初始值。i可以是具有初始值I的變量。Ai可以是掃描目標區(qū)域230中的任意地址并且其初始值可以是第一地址As。Bi可以是寫入目的地區(qū)域中的任意地址并且其初始值可以是第一地址Bs。Mi可以是安全模塊內(nèi)區(qū)域中的任意地址并且其初始值可以是第一地址Ms。Yi可以是在掃描程序SP中使用的地址并且初始值可以是Bi。在操作S1404中,安全模塊102向 安全模塊內(nèi)區(qū)域中的存儲器位置Mi寫入用于讀取存儲器位置Ai處的內(nèi)容并將該內(nèi)容寫入到存儲器位置Bi的掃描指令。在操作S1405中,安全模塊102判定是否滿足Ai > Ae。Ae可以是掃描目標區(qū)域230中的最末地址。當不滿足Ai > Ae時,在操作S1406中遞增i,并且處理返回到操作S1404。當滿足Ai > Ae時,處理前進到例如圖15中所示的操作S1501。圖15示出了示例性的掃描程序生成處理。圖15中所示的掃描程序生成處理可對應(yīng)于圖13中所示的掃描程序生成處理,例如操作S1303。例如,在圖14中所示的操作S1405之后,在操作S1501中遞增安全模塊內(nèi)區(qū)域中的存儲器位置Mi。隨后,在操作S1502中,判定是否滿足Mi > Me-2。當不滿足Mi > Me-2時,在操作S1503中將變量j的初始值設(shè)定為I (即j = I)。在操作S1504中,隨機地設(shè)定計算方法Zj。該計算方法例如可包括四則運算、邏輯運算、校驗和計算或使用散列函數(shù)的散列值計算。使用計算方法Zj的計算可被稱為“Zj計算”。在操作S1505中,安全模塊102遞增j。在操作S1506中,安全模塊102判定是否滿足j = y,其中y可以是地址Yi的數(shù)目,例如安全模塊內(nèi)區(qū)域中的存儲器位置Mi的數(shù)目。當在操作S1506中不滿足j = y時,處理返回到操作S1504。當在操作S1506中滿足j = y時,處理前進到操作S1507,在該操作中安全模塊102向存儲器位置Mi寫入掃描指令Z(Mi),用于對存儲器位置Yl處的內(nèi)容和存儲器位置Y2處的內(nèi)容執(zhí)行Zl計算、對Zl計算的結(jié)果和存儲器位置Y3處的內(nèi)容執(zhí)行Z2計算,……,并且對Z(y-2)計算的結(jié)果和存儲器位置Yy處的內(nèi)容執(zhí)行Z(y-l)計算。在操作S1508中,安全模塊102遞增Mi。在操作S1509中,安全模塊102向存儲器位置Mi寫入用于將掃描指令Z(Mi-I)的計算結(jié)果寫入到存儲器位置Bi+Ι的掃描指令。然后處理返回到操作S1501。當在操作S1502中滿足Mi > Me-2時,處理前進到操作S1510,在該操作中安全模塊102向存儲器位置Mi寫入用于將存儲器位置Bi+Ι處的內(nèi)容報告給安全模塊102的掃描指令。然后處理前進到圖13中的操作S1304。在掃描程序生成處理中,例如,在操作S1303中,掃描程序SP可被周期性地或不定期地隨機生成。圖16示出了示例性的掃描程序更新處理。圖16中所示的掃描程序更新處理可對應(yīng)于圖13中所示的操作S1308。在操作S1601中,安全模塊102隨機設(shè)定更新內(nèi)容。更新內(nèi)容例如可包括“模糊處理”、“掃描目標區(qū)域的改變”、“掃描目標地址的順序的改變”、“掃描計算結(jié)果的添加”、“掃描程序SP的地址的添加”或者“什么也不做”。掃描程序更新處理可包括上述六種更新內(nèi)容中的至少ー種。如圖16中所示,在操作S1602中,安全模塊102判定更新內(nèi)容是否指示“模糊處理”。模糊處理使指令或指令組復雜化。例如,某個程序代碼可被覆蓋以具有基本相同的功能并且具有基本不同的處理操作的程序代碼。單個指令,例如“X = 1+Y”可被更新為“X =10-9+2Y-Y”。例如,“ X = 1+Y” 和“Z = X+50” 可被更新為 “X = 26+Y” 和“Z = X+25”。經(jīng)更新的指令可以是具有與更新前指令基本相同的功能并且具有與更新前指令不同的程序代碼的指令。生成程序GP的程序代碼在每次其被更新時被變更。 當在操作S1602中判定更新內(nèi)容指示“模糊處理”時,處理前進到操作S1603,在該操作中安全模塊102指定目標程序TP要模糊處理的范圍。在操作S1604中,指定的范圍中包括的指令被模糊處理。然后處理返回到操作S1601。當在操作S1602中判定更新內(nèi)容不指示“模糊處理”時,處理前進到操作S1605,在該操作中安全模塊102判定更新內(nèi)容是否指示“掃描目標區(qū)域的改變”。在掃描目標區(qū)域的改變中,掃描程序SP指定的掃描目標地址可被改變成掃描目標區(qū)域中的另ー不同地址。例如,當圖9中所示的掃描程序SP被更新到圖10中所示的掃描程序SP時,掃描目標區(qū)域可被改變。當在操作S1605中判定更新內(nèi)容指示“掃描目標區(qū)域的改變”時,處理前進到操作S1606,在該操作中安全模塊102指定目標程序TP中要改變的掃描范圍區(qū)域的范圍。在操作S1607中,改變指定的范圍中的地址。然后處理返回到操作S1601。在掃描目標區(qū)域的改變中,雖然生成程序GP要訪問的地址被改變,但掃描程序SP的功能未被改變。由于掃描目標區(qū)域230被改變并且掃描結(jié)果被更新,所以安全性級別可得到提聞。當在操作S1605中判定更新內(nèi)容不指示“掃描目標區(qū)域的改變”時,處理前進到操作S1608,在該操作中安全模塊102判定更新內(nèi)容是否指示“掃描目標地址的順序的改變”。在掃描目標地址的順序的改變中,掃描程序SP中包括的地址處的代碼被交換。例如,當圖9中所示的掃描程序SP被更新到圖11中所示的掃描程序SP時,掃描目標地址的順序可被改變。雖然運行的順序可被改變,但交換前的掃描結(jié)果和交換后的掃描結(jié)果可能不相同,也可能不是不相同的。當在操作S1608中判定更新內(nèi)容指示“掃描目標地址的順序的改變”時,處理前進到操作S1609,在該操作中安全模塊102指定目標程序TP中要改變順序的掃描目標地址的范圍。在操作S1610中,安全模塊102交換指定范圍中的地址處的代碼。然后處理返回到操作S1601。當在操作S1608中判定更新內(nèi)容不指示“掃描目標地址的順序的改變”時,處理前進到圖17中所示的操作S1701。圖17示出了示例性的掃描程序更新處理。圖17中所示的掃描程序更新處理可對應(yīng)于圖13中所示的操作S1308。在操作S1701中,安全模塊102可隨機地判定是在操作S1601中判定的更新內(nèi)容是否指示“掃描計算結(jié)果的添加”。當更新內(nèi)容指示“掃描計算結(jié)果的添加”時,處理前進到操作S1702,在該操作中安全模塊102指定目標程序TP中的計算目標地址。在操作S1703中,安全模塊102可隨機地確定計算方法。計算方法例如可以是對于計算目標地址處的數(shù)據(jù)的四則運算或邏輯運算、數(shù)據(jù)的校驗和計算或者使用散列函數(shù)的散列值計算。在操作S1704中,安全模塊102向要更新的生成程序GP添加用于利用計算目標地址處的數(shù)據(jù)和在操作S1703中確定的計算方法來執(zhí)行計算的掃描指令。在操作S1705中,安全模塊102向要更新的生成程序GP添加把根據(jù)添加的掃描指令的計算的結(jié)果報告給安全模塊102的掃描指令。然后處理返回到操作S1601。當在操作S1701中判定更新內(nèi)容不指示“掃描計算結(jié)果的添加”時,處理前進到操作S1706,在該操作中安全模塊102判定更新內(nèi)容是否指示“掃描程序SP的地址的添加”。在掃描程序SP的地址的添加中,可以獲得依從于掃描程序SP被寫入的地址的掃描結(jié)果,該地址被用于掃描程序SP的指令。例如,當圖11中所示的掃描程序SP被更新到圖12中所示的掃描程序SP時,掃描程序SP的地址可被添加。當在操作S1706中判定更新內(nèi)容指示“掃描程序SP的地址的添加”時,處理前進到操作S1707,在該操作中安全模塊102在目標程序TP中指定如下地址掃描程序SP的地址將被加到該地址。在操作S1708中,掃描程序SP的地址的值被加到指定地址處的數(shù)據(jù),如圖12中的地址I至5中所示。然后處理返回到操作S1601。當在操作S1706中判定更新內(nèi)容不指示“掃描程序SP的地址的添加”時,處理前進到操作S1709,在該操作中安全模塊102判定是否要結(jié)束生成程序GP的更新。例如,當更新內(nèi)容指示“什么也不做”時,如果未執(zhí)行更新則不可結(jié)束更新。然后處理返回到操作S1601。當更新被執(zhí)行了一次或一定次數(shù)時,更新可被結(jié)束。處理返回到圖13中所示的操作 S1304。由于更新是在具有防篡改結(jié)構(gòu)的安全模塊102內(nèi)運行的,所以掃描程序SP的生成/更新可以安全的方式執(zhí)行。可以減少通過破解實現(xiàn)的掃描功能禁止,并且可以增強USB連接的安全性。如圖7中所示,由安全模塊102中的處理器301運行的修改程序PP可修改目標程序TP。圖18示出了示例性的程序修改。程序可以是各個地址的指令的集合。例如,目標程序TP可包括各個地址的五個指令。例如,目標程序TP可包括分割的程序Pl至P5,其可被分配為地址adrl至adr5的順序。HDD 204按運行的順序?qū)⒌刂穉drl至adr5存儲為邏輯地址。修改程序PP可改變目標程序TP (例如分割程序Pl至P5)中的位置的順序(例如可交換地址)。在圖18中,地址adrl被分配給分割程序P1,地址adr2被分配給分割程序P4,地址adr3被分配給分割程序P2,地址adr4被分配給分割程序P3,并且地址adr5被分配給分割程序P5。在分割程序P1、P4和P3之后可添加對安全模塊102的讀取指令。指示改變后的地址的關(guān)系的程序片段被保存在安全模塊102中。例如,程序片段pa可以是在運行分割程序Pl之后引用的“Goto”語句以引起跳到地址adr3。例如,程序片段pb可以是在運行分割程序P3之后引用的“Goto”語句以引起跳到地址adr2。例如,程序片段pc可以是在運行分割程序P4之后引用的“Goto”語句以引起跳到地址adr5??稍诜峙淦陂g添加程序片段pa至pc。分配前的掃描結(jié)果Rl和分配后的掃描結(jié)果Rl可以相互不同。圖19至22示出了示例性的程序修改。修改程序PP可修改目標程序TP。在圖19中,HDD 204中的目標程序TP中的與地址3和5相對應(yīng)的指令組的地址被改變成地址7和9。另外,目標程序TP中的與地址6和7相對應(yīng)的指令組的地址被改變成地址15和16。與地址I至2相對應(yīng)的指令組的地址未被改變。在修改之前,與地址3相對應(yīng)的指令“Z = X+Y”是接著與地址2相對應(yīng)的指令“Y=X+8”運行的。由于與地址3相對應(yīng)的指令“Z = X+Y”的地址已被改變成地址7,所以與地址3相對應(yīng)的指令被指示“Goto 7”的程序片段(例如跳躍指令)所覆蓋。安全模塊102在一表格中保存地址3和程序片段“Goto V’的組合。在修改之前,與地址6相對應(yīng)的指令“Z = 5+Z”是接著與地址5相對應(yīng)的指令“Z=Z+1”運行的。由干與地址5相對應(yīng)的指令“Z = Z+1”的地址已被改變成地址9并且與地址6相對應(yīng)的指令已被改變成地址15,所以與地址10相對應(yīng)的指令被程序片段“Goto 15” (例如跳躍指令)所覆蓋。安全模塊102在表格中保存地址10和程序片段“Goto 15”的組合。在將目標程序TP寫入到掃描目標區(qū)域230之前,安全模塊102利用對安全模塊102的讀取指令來覆蓋程序片段。當運行被加載在掃描目標區(qū)域230中的經(jīng)修改的目標程序TP時,基干與地址3相對應(yīng)的讀取指令來引用安全模塊102中的表格并且指定與地址3相對應(yīng)的程序片段“Goto7”。安全模塊102將“Goto 7”報告給處理器201并且處理器201運行經(jīng)修改的目標程序TP中的地址7處的指令。由于目標程序TP中包括的指令組被混排,同時指令組的關(guān)系被保持,所以對目標程序TP的解譯可變得更困難。在圖20中,目標程序TP中包括的指令可被作為程序片段插入。在圖20中,HDD 204中的目標程序TP中的與地址4和5相對應(yīng)的指令組的地址被改變成地址8和9。目標程序TP中的與地址6和7相對應(yīng)的指令組的地址被改變成地址15和16。與地址I至3相對應(yīng)的指令組的地址未被改變。在修改之前,與地址3相對應(yīng)的指令“Z = X+Y”是接著與地址2相對應(yīng)的指令“Y =X+8”運行的。由于與地址4相對應(yīng)的指令的地址已被改變成地址8,所以Goto語句“Goto8”被生成。安全模塊102保存地址3、地址3處的指令“Z = X+Y”和Goto語句“Goto 8”的組合。作為復雜化的程序片段的結(jié)果,可以增強安全性。圖21示出了指令的示例性加密。在圖21中,目標程序TP中包括的指令組可被加密。安全模塊102利用密碼密鑰Kl至K4來對修改前目標程序TP中的與地址4至7相對應(yīng)的指令組加密。在每個被加密的指令之前插入對安全模塊102的讀取指令和解密指令。地址被向下移動與插入的指令的數(shù)目相對應(yīng)的量。例如,與地址4相對應(yīng)的指令“Y = Y+1”被用密碼密鑰Kl加密并且經(jīng)加密的指令被寫入到地址6。對安全模塊102的讀取指令被插入在空地址4處并且解密指令被插入在地址5處。安全模塊102在表格中保存用來對經(jīng)修改的目標程序TP中的被加密指令加密的密鑰和對被加密指令插入的讀取指令的地址的組合。例如,用來對寫入在地址6處的被加密指令El (Y = Y+1)加密的密碼密鑰Kl和基于被加密指令El (Y = Y+1)的生成而插入的讀取指令的地址4被保存在該表格中。安全模塊102將該表格保存在RAM 304或閃存306中并且將經(jīng)修改的目標程序TP寫入到掃描目標區(qū)域。當運行經(jīng)修改的目標程序TP時,基于插入的讀取指令讀取密碼密鑰K并且基于解密指令對經(jīng)加密的指令進行解密。隨后,執(zhí)行經(jīng)解密的指令。例如,安全模塊102基于與地址4相對應(yīng)的讀取指令來引用表格以將密碼密鑰Kl提供給處理器201。處理器201基于密碼密鑰Kl和 與地址5相對應(yīng)的解密指令來對被加密指令El (Y=Y+1)解密,并將經(jīng)加密的指令“Y = Y+1”寫入到地址6。寫入到地址6的指令“Y = Y+1”可被運行。即使當掃描目標程序被部分加密時,也從安全模塊102獲得解密密鑰并且繼續(xù)該處理。圖22示出了指令的示例性加密。圖22中所示的指令可被包括在目標程序TP中。在圖22中,安全模塊102利用對安全模塊102的讀取指令來替換修改前的目標程序TP中的與地址4至7相對應(yīng)的指令組。例如,與地址4相對應(yīng)的指令“Y = Y+1 ”被用讀取指令替換。用于寫入從安全模塊102讀取的地址4處的指令“Y = Y+1”的指令被插入在下一地址5處。安全模塊102在表格中保存被替換的指令及其地址的組合。例如,安全模塊102在表格中保存被替換的指令“Y = Y+1”及其地址4的組合。安全模塊102將該表格保存在RAM 304或閃存306中并將經(jīng)修改的目標程序TP寫入到掃描目標區(qū)域230。當經(jīng)修改的目標程序TP被運行時,處理器201基于替換了原始指令的讀取指令來讀取被替換的指令(即原始指令)并且運行被替換的指令。例如,處理器201基于地址4處的讀取指令從安全模塊102中讀取指令“Y = Y+1”,并且運行讀取的指令 “Y = Y+1”。圖23示出了示例性的程序修改。目標程序TP可被修改。在操作S2301中,安全模塊102從HDD 204中讀取經(jīng)加密的目標程序E (TP)。在操作S2302中,安全模塊102對經(jīng)加密的目標程序E (TP)解密。例如,當目標程序TP未被加密時,從HDD 204讀取的目標程序TP可不被解密。在操作S2303中,計算程序被寫入到目標程序TP。在操作S2304中,安全模塊102確定對目標程序TP的修改方法。修改方法可包括“模糊處理”、“加密”、“混排”或“什么也不做”。加密可對應(yīng)于圖21中所示的加密?;炫趴蓪?yīng)于圖20或21中所示的混排。在操作S2305中,安全模塊102判定修改方法是否是“模糊處理”。當修改方法是“模糊處理”時,處理前進到操作S2306,在該操作中安全模塊102指定目標程序TP中要被模糊處理的范圍。在操作S2307中,安全模塊102對指定范圍中的指令進行模糊處理。然后處理返回到操作S2304。當修改方法不是“模糊處理”時,處理前進到操作S2308,在該操作中安全模塊102判定修改方法是否是“加密”。當修改方法是“加密”時,處理前進到操作S2309,在該操作中安全模塊102指定目標程序TP中要被加密的范圍。在操作S2310中,安全模塊102對指定范圍中的指令進行加密。例如,如圖21中所示,安全模塊102在表格中存儲要被加密的指令的地址和用來對該地址處的被加密指令加密的解密密鑰的組合。然后處理返回到操作S2304。當修改方法不是“加密”時,處理前進到操作S2311,在該操作中安全模塊102判定修改方法是否是“混排”。當修改方法是“混排”時,處理前進到操作S2312,在該操作中安全模塊102執(zhí)行例如如圖19中所示的混排。然后處理返回到操作S2304。當修改方法不是“混排”時,處理前進到操作S2313,在該操作中安全模塊102判定是否結(jié)束修改。例如,當修改方法被設(shè)定成“什么也不做”并且沒有執(zhí)行修改時,不結(jié)束修改。然后處理返回到操作S2304。 當修改被執(zhí)行了至少一次或一定次數(shù)吋,修改被結(jié)束。經(jīng)修改的目標程序TP被寫入到RAM 203中的掃描目標區(qū)域230。圖24示出了混排處理的示例性的ー個示例。圖24中所示的混排處理可對應(yīng)于圖23中所示的操作S2312。例如,可執(zhí)行圖19中所示的混排。在操作S2401中,安全模塊102在安全模塊102中保留一區(qū)域。在操作S2402中,安全模塊102將目標程序TP分割成多個指令組。在操作S2403中,安全模塊102將指令組中的第一指令組設(shè)定為目標指令組。在操作S2404中,安全模塊102判定是否存在目標指令組后的任何指令組。當存在隨后的指令組時,處理前進到操作S2405,在該操作中安全模塊102隨機地生成程序片段,例如Goto語句。例如,安全模塊102為目標指令組保留一區(qū)域。在操作S2406中,安全模塊102將程序片段的地址設(shè)定成目標指令組的最末地址的下一地址。在操作S2407中,安全模塊102向表格中添加程序片段及其寫入目的地地址的組合。在操作S2408中,安全模塊102將程序片段的讀取指令寫入到目標程序TP的分配給程序片段的地址。在操作S2409中,安全模塊102設(shè)定程序片段所指示的地址處(例如程序片段“Goto 8”所指示的地址8處)的隨后指令組為目標指令組。然后處理返回到操作 S2404。當在操作S2404中判定不存在目標指令組后的指令組時,混排處理結(jié)束。然后處理返回到操作S2304。由于修改了目標程序TP,所以可以減少對目標程序TP的破解。當讀取經(jīng)加密的目標程序TP時,可以為修改處理改變修改方法。當掃描程序SP周期性地或不定期地對掃描目標區(qū)域230進行掃描時,修改程序PP在掃描程序SP被更新之前將數(shù)據(jù)和代碼寫入到掃描目標區(qū)域230。在更新之前,經(jīng)修改的掃描程序SP對掃描目標區(qū)域230進行掃描,并且檢查掃描程序SP是否適當?shù)夭僮?。圖25A至25C示出了示例性的程序修改。目標程序TP可被修改。在圖25A中,目標程序TP中與地址I至4相對應(yīng)的指令被模糊處理并且NOP (無操作指令)被添加到地址5至7。在圖25B中,與地址I至4相對應(yīng)的指令不被改變,并且指令被添加到地址5至7。在圖25C中,與地址I至4相對應(yīng)的指令不被改變,并且指令被添加到地址5至7。圖25A中所示的處理的結(jié)果、圖25B中所示的處理的結(jié)果和圖25C中所示的處理的結(jié)果基本相同。在圖25A至25C中的每一幅的左側(cè)所示的目標程序TP被掃描之后,圖25A至25C中的每一幅的右側(cè)所示的目標程序TP被修改,并且經(jīng)修改的目標程序TP在掃描程序SP更新之前被掃描。結(jié)果,可以檢查掃描程序SP的適當操作。圖26示出了示例性的計算程序。圖26中所示的計算程序可被包括在目標程序TP中。計算程序確定特定計算的結(jié)果。安全模塊102可基于計算程序的計算結(jié)果來判定目標程序TP的真實性。例如,計算程序可在存儲器位置2處存儲通過將存儲器位置I處的值乘以第一秘密數(shù)“yyy”而獲得的值,并且可在存儲器位置3處存儲通過將存儲器位置2處的值乘以第二秘密數(shù)“ ZZZ ”而獲得的值。安全模塊102將所生成的值“X”存儲在存儲器位置I處。安全模塊102基于值“X”通過計算程序確定真實值“Xans”。目標程序TP讀取存儲器位置I處的“X”;在存儲器位置2處存儲通過將“X”乘以第一秘密數(shù)“yyy”而獲得的值“Y”,并且在存儲器 位置3處存儲通過將存儲器位置2處的值“Y”乘以第二秘密數(shù)“zzz”而獲得的值“Xcul”。例如,安全模塊102周期性地引用存儲器位置3處的值以讀取存儲器位置3處的值“Xcul ”并將值“Xcul ”與真實值“Xans”相比較。當Xcul和Xans在“X”被存儲在存儲器位置I處后的一定量的時間內(nèi)相互匹配時,安全模塊102判定目標程序TP是真實程序。當Xcul和Xans在該一定時間段內(nèi)不相互匹配時,安全模塊102判定目標程序TP是非真實程序。圖27示出了示例性的認證處理。安全模塊102可執(zhí)行圖27中所示的認證處理。在操作S2701中,安全模塊102開始時間測量。在操作S2702中,安全模塊102將所生成的值“X”存儲在特定的第一存儲器位置處。在操作S2703中,計算程序從所生成的值“X”確定真實值“Xans”。在操作S2704中,安全模塊102讀取第二存儲器位置處的值。在操作S2705中,安全模塊102判定所讀取的值是否匹配Xans。當讀取的值匹配Xans時,處理前進到操作S2706,在該操作中安全模塊102判定目標程序TP是真實程序,然后認證處理結(jié)束。當讀取的值不匹配Xans時,處理前進到操作S2707,在該操作中安全模塊102判定從操作S2701中的時間測量開始是否已過去了一定量的時間。當一定量的時間尚未過去時,處理返回到操作S2704。當一定量的時間已過去時,處理前進到操作S2708,在該操作中安全模塊102判定目標程序TP是非真實程序。然后,認證處理可結(jié)束。認證處理的細節(jié),例如計算程序,在每次其被運行時可被改變。每次經(jīng)加密的目標程序TP被讀取時,目標程序TP中的計算程序可被改變。從而,可以減少破解者的破解處理,例如對計算程序的分析和假扮。圖28示出了示例性的加密許可處理。安全模塊102可執(zhí)行圖28中所示的加密許可。在操作S2801中,安全模塊102判定目標程序TP是被篡改。當目標程序TP未被篡改時,處理前進到操作S2802,在該操作中安全模塊102判定是否從目標程序TP接收到了處理請求。當從目標程序TP接收到處理請求時,處理前進到操作S2803,在該操作中安全模塊102基于從目標程序TP接收的處理請求執(zhí)行處理,然后處理返回到操作S2801。當在操作S2802中未接收到處理請求時,處理返回到操作S2801。當在操作S2801中判定目標程序TP被篡改時,處理前進到操作S2804,在該操作中安全模塊102可進入差錯模式,然后認證許可處理可結(jié)束。在差錯模式中,當目標程序TP未被重啟時,安全模塊102可拒絕來自目標程序TP的請求。圖29和30示出了示例性的認證序列。在圖29和30中,通信裝置101和中心103可相互驗證其與之通信的裝置是否是真實裝置。圖29示出了通信裝置與中心之間的示例性相互認證。安全模塊102保存中心103的公鑰和安全模塊102的秘密密鑰。中心103保存安全模塊102的公鑰和中心103的秘密密鑰。安全模塊102和中心103可保存共同密鑰。在圖29中的操作S2901中,目標程序TP向中心103發(fā)送認證請求,該認證請求包括所生成的通信裝置隨機數(shù)和用戶信息。在接收到認證請求后,在操作S2902中,中心103使用其秘密密鑰來對在中心103處生成的中心隨機數(shù)、在中心103處生成的會話密鑰(例如臨時密鑰)和接收到的認證請求中包括的通信裝置隨機數(shù)進行加密。在操作S2903中,中心103將經(jīng)加密的中心隨機數(shù)、 經(jīng)加密的會話密鑰和經(jīng)加密的通信裝置隨機數(shù)發(fā)送到目標程序TP。在接收到經(jīng)加密的中心隨機數(shù)、經(jīng)加密的會話密鑰和經(jīng)加密的通信裝置隨機數(shù)后,在操作S2904中,目標程序TP向安全模塊102發(fā)送包括經(jīng)加密的中心隨機數(shù)、經(jīng)加密的會話密鑰和經(jīng)加密的通信裝置隨機數(shù)的解密請求。在接收到該解密請求后,在操作S2905中,安全模塊102從目標程序TP獲得程序認證信息。在操作S2906中,安全模塊102基于所獲得的程序認證信息來驗證目標程序TP的真實性。在操作S2907中,安全模塊102使用中心103的公鑰來對中心隨機數(shù)、會話密鑰和通信裝置隨機數(shù)解密。安全模塊102保存經(jīng)解密的會話密鑰。在操作S2908中,安全模塊102使用安全模塊102的秘密密鑰來對經(jīng)解密的中心隨機數(shù)重新加密。在操作S2909中,安全模塊102將經(jīng)解密的通信裝置隨機數(shù)和經(jīng)重新加密的中心隨機數(shù)發(fā)送給目標程序TP。在接收到經(jīng)解密的通信裝置隨機數(shù)和經(jīng)重新加密的中心隨機數(shù)后,目標程序TP判定接收到的由安全模塊102解密的通信裝置隨機數(shù)和在操作S2901中發(fā)送的通信裝置隨機數(shù)是否相互匹配。當通信裝置隨機數(shù)相互匹配時,處理前進到操作S2910,在該操作中目標程序TP判定其耦合到真實的中心103。在操作S2911中,目標程序TP將經(jīng)重新加密的中心隨機數(shù)發(fā)送給中心103。在操作S2912中,中心103對接收到的經(jīng)重新加密的中心隨機數(shù)進行解密。然后中心103判定經(jīng)解密的中心隨機數(shù)和在操作S2903中發(fā)送的中心隨機數(shù)是否相互匹配。當中心隨機數(shù)相互匹配時,處理前進到操作S2913,在該操作中中心103驗證了其耦合到真實的目標程序TP。然后,處理前進到圖30中的操作S3001。圖30示出了示例性的相互認證。該相互認證可在通信裝置101與中心103之間執(zhí)行。如圖30中所示,在操作S3001中,驗證了目標程序TP的中心103使用會話密鑰對連接確認加密。在操作S3002中,中心103將經(jīng)加密的連接確認發(fā)送到目標程序TP。在接收到經(jīng)加密的連接確認后,在操作S3003中,目標程序TP向安全模塊102發(fā)送包括經(jīng)加密的連接確認的解密請求。在接收到解密請求后,在操作S3004中,安全模塊102從目標程序TP獲得程序認證信息。在操作S3005中,安全模塊102基于所獲得的程序認證信息來驗證目標程序TP的真實性。在操作S3006中,安全模塊102使用中心103的會話密鑰來對來自解密請求的連接確認解密。在操作S3007中,安全模塊102將經(jīng)解密的連接確認發(fā)送到目標程序TP。在接收到連接確認后,在操作S3008中,目標程序TP判定與中心103的相互連接完成并且進入目標程序TP等待來自用戶的輸入的狀態(tài)。
由于通信裝置101和中心103在相互認證期間發(fā)送各自的隨機數(shù),所以可以減少重放攻擊。當相互認證被執(zhí)行多次時,一系列加密的信號基于所發(fā)送的隨機數(shù)而變化。此布置減少了破解者通過發(fā)送相同的一系列信號到中心103來假扮通信裝置101的合法用戶。生成隨機數(shù)的功能也可以是安全的。在通信裝置101和中心103相互驗證了其與之通信的裝置是真實裝置后,通信裝置101基于目標程序TP發(fā)送/接收數(shù)據(jù)。圖31示出了示例性相互認證。該相互認證可在通信裝置101與中心103之間執(zhí)行。在圖31中,通信裝置101和中心103與彼此執(zhí)行加密通信。例如,用戶可向目標程序TP輸入包括要購買的書籍和遞送地址的購買信息。如圖31中所示,在操作S3101中,目標程序TP接收用戶輸入的購買信息并向安全模塊102發(fā)送對購買信息的加密請求。在接收到加密請求后,在操作S3102中,安全模塊102從目標程序TP獲得程序認證信息。在操作S3103中,安全模塊102基于所獲得的程序認證信息來驗證目標程序TP的真實性。在操作S3104中,接收到了購買信息的安全模塊102使用安全模塊102的會話密鑰來對購買信息加密。在操作S3105中,安全模塊102將經(jīng)加密的購買信息發(fā)送到目標程序TP。在接收到經(jīng)加密的購買信息后,在操作S3106中,目標程序TP將經(jīng)加密的購買信息發(fā)送到中心103。在接收到經(jīng)加密的購買信息后,在操作S3107中,中心103使用中心103的會話密鑰來對購買信息解密。在操作S3108中,中心103基于經(jīng)解密的購買信息來銷售相應(yīng)的商品O由于安全模塊102在檢查目標程序TP是否是真實程序之后對購買信息加密,所以減少了向中心103發(fā)送偽造的購買信息。圖32示出了示例性的相互認證。該相互認證可在通信裝置101與中心103之間執(zhí)行。在圖32中,通信裝置101和中心103可與彼此執(zhí)行程序代碼的加密通信。例如,用戶可向目標程序TP輸入所需軟件服務(wù)的服務(wù)標識號。如圖32中所示,在操作S3201中,目標程序TP從用戶接收服務(wù)標識信息,然后向安全模塊102發(fā)送對服務(wù)標識信息的加密請求。在接收到加密請求后,在操作S3202中,安全模塊102從目標程序TP獲得程序認證信息。在操作S3203中,安全模塊102基于所獲得的程序認證信息來驗證目標程序TP的真實性。在操作S3204中,接收到了服務(wù)標識號的安全模塊102使用安全模塊102的會話密鑰來對服務(wù)標識號加密。在操作S3205中,安全模塊102將經(jīng)加密的服務(wù)標識號發(fā)送到目標程序TP。在接收到經(jīng)加密的服務(wù)標識號后,在操作S3206中,目標程序TP將經(jīng)加密的服務(wù)標識號發(fā)送到中心103。在接收到經(jīng)加密的服務(wù)標識號后,在操作S3207中,中心103使用中心103的會話密鑰來對服務(wù)標識號解密。中心103使用中心103的會話密鑰來對經(jīng)解密的服務(wù)標識號和與該服務(wù)標識號相對應(yīng)的程序代碼進行加密。在操作S3208中,中心103將經(jīng)加密的服務(wù)標識號和程序代碼發(fā)送到目標程序TP。然后,處理前進到圖33中所示的操作S3301。圖33示出了加密通信的示例性序列。在圖33中,通信裝置101和中心103可與彼此執(zhí)行程序代碼的加密通信。在操作S3301中,目標程序TP向安全模塊102發(fā)送包括接、收到的經(jīng)加密的服務(wù)標識號和程序代碼的解密請求。在接收到該解密請求后,在操作S3302中,安全模塊102從目標程序TP獲得程序認證信息。在操作S3303中,安全模塊102基于所獲得的程序認證信息來驗證目標程序TP的真實性。在操作S3304中,接收到了經(jīng)加密的服務(wù)標識號和程序代碼的安全模塊102使用安全模塊102的會話密鑰來對服務(wù)標識號和程序代碼解密。在操作S3305中,安全模塊102使用隨機生成的密鑰來對經(jīng)解密的程序代碼重新加密。在操作S3306中,安全模塊102將服務(wù)標識號和經(jīng)重新加密的程序代碼發(fā)送到目標程序TP。在操作S3307中,安全模塊102將隨機生成的密碼密鑰和服務(wù)標識號相互關(guān)聯(lián)地存儲。在操作S3308中,目標程序TP將接收到的服務(wù)標識號和經(jīng)重新加密的程序代碼相互關(guān)聯(lián)地存儲。由于安全模塊102在檢查目標程序TP是否是真實程序之后對服務(wù)標識信息加密,所以減少了向中心103發(fā)送偽造的服務(wù)標識號。由于安全模塊102對從中心103發(fā)送來的程序代碼重新加密以用安全的方式管理用于程序代碼的解密密鑰,所以減少了對程序代碼的篡改。由于完好性得到確保的安全模塊102中的掃描程序SP檢測篡改,所以減少了對掃描程序SP的破解。當通信裝置101中的掃描程序SP檢測篡改時,安全模塊102隨機地更新通信裝置101中的掃描程序SP??梢詼p少破解者對掃描程序SP的破解。安全模塊102可通過執(zhí)行“模糊處理”、“掃描目標區(qū)域的改變”、“掃描目標地址的順序的改變”、“掃描計算結(jié)果的添加”或者“掃描程序的地址的添加”來更新掃描程序SP??梢詼p少破解者對掃描程序SP的解譯或篡改。由于安全模塊102修改目標程序TP,所以可以減少破解者對目標程序TP的破解。例如,安全模塊102可通過執(zhí)行模糊處理、加密或混排來修改目標程序TP。作為修改的結(jié)果,可以減少破解者對目標程序TP的解譯或篡改。當檢測到篡改時,安全模塊102可停止密碼單元608、輸出單元609或所有功能。由于對從被檢測到篡改的目標程序TP發(fā)出的密碼密鑰K讀取請求和通信內(nèi)容加密請求不執(zhí)行處理,所以被檢測到篡改的目標程序TP不利用密碼密鑰K執(zhí)行加密通信?;谙蛲ㄐ叛b置101輸出請求和獲得對該請求的響應(yīng)之間的時間間隔,安全模塊102估計安全模塊102與響應(yīng)發(fā)送源之間的物理距離。安全模塊102判定破解者的計算機104正假扮通信裝置101的合法用戶。由于安全模塊102對從通信裝置101中的目標程序TP接收或要發(fā)送到通信裝置101中的目標程序TP的數(shù)據(jù)進行加密,所以可以減少對安全模塊102與通信裝置101中的處理器301之間的通信信道上的數(shù)據(jù)的破解。
現(xiàn)在已經(jīng)根據(jù)上述優(yōu)點描述了本發(fā)明的示例性實施例。將會明白,這些示例只是在例示本發(fā)明。許多變化和修改對于本領(lǐng)域的技術(shù)人員是顯而易見的。
權(quán)利要求
1.一種通信裝置,包括 安全模塊; 設(shè)在所述安全模塊外部的第一存儲設(shè)備,存儲用于利用存儲在所述安全模塊中的密碼密鑰與所述通信裝置外部的裝置加密通信的程序; 設(shè)在所述安全模塊中的檢測單元,檢測對所述程序的篡改;以及 設(shè)在所述安全模塊中的設(shè)定單元,當檢測到對所述程序的篡改時禁止所述加密通信。
2.根據(jù)權(quán)利要求I所述的通信裝置,還包括 設(shè)在所述安全模塊中的第二存儲設(shè)備,存儲與所述程序相對應(yīng)的第一代碼;以及 生成單元,生成用于生成所述第一代碼的第一掃描程序并且通過更新所述第一掃描程序來生成第二掃描程序, 其中,所述檢測單元基于所述第一掃描程序和所述第一代碼的運行結(jié)果來檢測對所述程序的篡改。
3.根據(jù)權(quán)利要求2所述的通信裝置,其中,所述生成單元對所述第一掃描程序的指令進行模糊處理。
4.根據(jù)權(quán)利要求2所述的通信裝置,其中,所述生成單元改變所述第一掃描程序指定的掃描目標地址。
5.根據(jù)權(quán)利要求2所述的通信裝置,其中,所述生成單元改變所述第一掃描程序中的相應(yīng)指令指定的掃描目標地址的順序。
6.根據(jù)權(quán)利要求2所述的通信裝置,其中,所述生成單元基于所述第一掃描程序中的指令指定的數(shù)據(jù)改變計算指令的內(nèi)容,將根據(jù)改變后的計算指令的計算的結(jié)果存儲在所述第一存儲設(shè)備中并且添加用于將所述計算的結(jié)果返回給所述安全模塊的指令。
7.根據(jù)權(quán)利要求2所述的通信裝置,其中,所述生成單元將所述第一掃描程序中的指令改變成依賴于所述第一掃描程序在所述通信裝置中的存儲地址的指令。
8.根據(jù)權(quán)利要求2所述的通信裝置,其中,所述生成單元生成與所述第一代碼實質(zhì)上相同的第二代碼,并且生成包括與所述第一掃描程序的描述不同的描述的第三掃描程序作為所述第二掃描程序。
9.根據(jù)權(quán)利要求2所述的通信裝置,其中,所述生成單元生成包括與所述第一掃描程序的描述不同的描述以及與所述第一掃描程序的功能實質(zhì)上相同的功能的第三掃描程序作為所述第二掃描程序,并且覆蓋所述第二存儲設(shè)備中與所述第二掃描程序相對應(yīng)的第二代碼。
10.根據(jù)權(quán)利要求I所述的通信裝置,還包括 修改單元,將所述程序修改成具有不同的描述并且具有實質(zhì)上相同的功能的程序代碼并將與所述程序代碼相對應(yīng)的代碼寫入在所述第一存儲設(shè)備中, 其中,所述檢測單元基于所述程序代碼中的計算的結(jié)果的有效性來檢測對所述程序代碼的篡改。
11.根據(jù)權(quán)利要求10所述的通信裝置,其中,所述修改單元對所述程序的指令進行模糊處理。
12.根據(jù)權(quán)利要求10所述的通信裝置,其中,所述修改單元對所述程序的指令進行混排;在所述第二存儲設(shè)備中存儲指定如下組合的表格指定跳躍目的地指令的地址的跳躍指令和該跳躍指令的地址的組合;將所述跳躍指令的內(nèi)容改變成對所述表格的讀取指令;并且將所述讀取指令寫入在所述第一存儲設(shè)備中。
13.根據(jù)權(quán)利要求10所述的通信裝置,其中,所述修改單元對所述程序的指令進行混排;在所述第二存儲設(shè)備中存儲指定如下組合的表格指定跳躍目的地指令的地址的跳躍指令、跳躍源指令和該跳躍源指令的地址的組合;將所述跳躍源指令的內(nèi)容改變成對所述表格的讀取指令;并且將所述讀取指令寫入在所述第一存儲設(shè)備中。
14.根據(jù)權(quán)利要求10所述的通信裝置,其中,所述修改單元將所述程序的任意指令替換為由對該任意指令加密產(chǎn)生的經(jīng)加密指令、對所述安全模塊的讀取指令以及用于對所述經(jīng)加密指令解密的解密指令;在所述第二存儲設(shè)備中存儲指定所述讀取指令的地址和用于對所述經(jīng)加密指令解密的解密指令的組合的表格;并且將被替換的程序?qū)懭朐谒龅谝淮鎯υO(shè)備中。
15.根據(jù)權(quán)利要求10所述的通信裝置,其中,所述修改單元將所述程序的任意指令替換為對所述安全模塊的讀取指令;在所述第二存儲設(shè)備中存儲指定所述讀取指令的地址和所述任意指令的組合的表格;并且將被替換的程序?qū)懭朐谒龅谝淮鎯υO(shè)備中。
16.根據(jù)權(quán)利要求I所述的通信裝置,還包括 判定單元,當所述檢測單元未檢測到對所述程序的篡改時,該判定單元判定從向所述通信裝置中的處理器輸出請求到從所述處理器獲得響應(yīng)的時間量是否長于或等于一定時間量。
17.根據(jù)權(quán)利要求I所述的通信裝置,還包括 獲得單元,獲得要從所述程序發(fā)送到所述外部裝置的數(shù)據(jù),所述獲得發(fā)生在所述數(shù)據(jù)的發(fā)送之前;以及 密碼單元,通過使用所述密碼密鑰對所述數(shù)據(jù)加密, 其中,所述設(shè)定單元禁止所述密碼單元。
18.根據(jù)權(quán)利要求I所述的通信裝置,其中,所述安全模塊還包括 獲得單元,獲得來自所述程序的對輸出所述密碼密鑰的請求;以及 輸出單元,在所述獲得單元獲得所述請求時將所述密碼密鑰輸出到所述程序, 其中,所述設(shè)定單元禁止所述輸出單元。
19.根據(jù)權(quán)利要求I所述的通信裝置,其中,所述密碼密鑰是所述安全模塊的秘密密鑰,該秘密密鑰對應(yīng)于所述外部裝置的公鑰。
20.一種設(shè)在通信裝置中的安全模塊,具有不能被從外部引用的數(shù)據(jù),該安全模塊包括 檢測單元,檢測對用于利用所述安全模塊中的密碼密鑰與所述通信裝置外部的裝置執(zhí)行加密通信的程序的篡改,所述程序被保存在設(shè)在所述通信裝置中、所述安全模塊外部的存儲設(shè)備中;以及 設(shè)定單元,當所述檢測單元檢測到對所述程序的篡改時,所述設(shè)定單元將所述安全模塊置于所述程序不能利用所述密碼密鑰執(zhí)行所述加密通信的狀態(tài)中。
全文摘要
本發(fā)明提供了通信裝置和安全模塊。一種通信裝置包括安全模塊;設(shè)在安全模塊外部的第一存儲設(shè)備,存儲用于利用存儲在安全模塊中的密碼密鑰與通信裝置外部的裝置加密通信的程序;設(shè)在安全模塊中的檢測單元,檢測對程序的篡改;以及設(shè)在安全模塊中的設(shè)定單元,當檢測到對程序的篡改時禁止加密通信。
文檔編號H04L9/32GK102630085SQ20121002326
公開日2012年8月8日 申請日期2012年1月20日 優(yōu)先權(quán)日2011年2月8日
發(fā)明者小檜山清之 申請人:富士通株式會社