專利名稱:程序竄改檢測裝置、方法以及程序的制作方法
技術領域:
本發明涉及防止竄改計算機程序的程序竄改檢測裝置、程序竄改檢測方法,以及程序竄改檢測程序。
背景技術:
近幾年來,隨著計算機技術的快速發展,多種類的產品安裝到計算機中。這樣的計算機需要CPU(中央處理單元)和運行CPU的計算機程序。諸如家庭電子設備或通信裝置那樣的產品中所安裝的計算機程序是基于那種產品唯一的規范而進行設計的。例如,付費廣播系統中使用的接收器優選地僅用于同意接收合同的個人。因此,同樣對將被安裝到接收器中的計算機程序進行設計以便僅在適當地和合法地使用接收器的情況下可操作。用于啟動這樣的接收器的計算機程序存儲在ROM(只讀存儲器)中并且在啟動接收器的情況下被讀取。計算機通過執行所讀取的計算機程序來控制接收器。
在使用計算機執行電子控制的裝置的領域內,與該裝置的主體的情況相似,用于研發裝置內ROM中存儲的計算機程序的成本會很高。這種計算機程序有重要的商業性。例如,對于上述付費廣播系統來說,假設不具有接收合同的第三方知道了用于啟動接收付費廣播的接收器的程序。這意味著付費廣播系統所提供的服務可能被非法的第三方使用。另外,計算機程序是該系統的一種知識產權。為了適當地保護作為一種知識產權的計算機程序,需要一種防止第三方輕易獲悉計算機程序的技術。
通常,通用CPU和ROM的規范廣泛地向一般公眾公開。在這些情況下,獲得裝置的第三方能夠輕易地執行程序分析,其中所述裝置包括具有CPU和ROM的計算機。關于這一點,存在防止第三方執行裝置內ROM中存儲的計算機程序的程序分析的已知技術。
在隨后的相關技術中示出了這些技術實例。
日本未決專利申請(JP-Heisei11-126174 A)公開了一種存儲數據的微處理器讀取設備。該存儲數據的微處理器讀取裝置包括微處理器、存儲裝置和讀取裝置。存儲裝置存儲用于操作微處理器的信息數據。讀取裝置讀取存儲裝置內的信息數據并且將該信息數據發送到微處理器。讀取裝置具有數據變換電路。數據變換電路通過信息數據讀取期間動態改變的數據來變換從存儲裝置中讀取的信息數據。
日本未決專利申請(JP-Heisei08-305558 A)公開了一種加密程序操作設備。該加密程序操作設備包括第一存儲器、第二存儲器、以及讀取保護裝置。第一存儲器至少存儲有解密程序。第二存儲器存儲由第一存儲器中存儲的解密程序解密的加密程序。讀取保護裝置防止第二存儲器中存儲的解密加密程序被外界讀取。
日本未決專利申請(JP-Heisei05-197633 A)公開了一種集成電路。該集成電路包括CPU、解密裝置和密鑰存儲裝置。CPU執行數據處理。解密裝置將加密指令代碼解密為CPU能夠執行數據處理的代碼。密鑰存儲裝置存儲用于控制解密裝置解密數據的密鑰。
日本未決專利申請(JP-Showa59-188897 A)公開了一種用于數據處理裝置的數據安全保護設備。該數據安全保護設備包括用于數據處理的有內部存儲器和邏輯電路的LSI。內部存儲器不允許外部設備讀取其的數據。邏輯電路執行從LSI外部的外部存儲器讀取的數據和從內部存儲器讀取的數據之間的適當的邏輯操作。內部存儲器存儲多個密鑰。外部存儲器存儲變換的代碼,所述變換的代碼已經被變換以致于通過密鑰和變換的代碼之間適當的邏輯操作而能夠獲得規則的數據。數據安全保護設備通過從內部存儲器和外部存儲器中讀取地址來產生規則的數據。
另外,隨著半導體技術的提高,非易失和可編程/可重編程的ROM(諸如閃速ROM)是可以利用的,并且廣泛地用于上述裝置。通過使用這些ROM,對操作該裝置的計算機程序版本的更新變得更加的容易。對于使用這種可編程/可重編程ROM(以下為“可重編程ROM”)的裝置來說,需要能夠防止對ROM中存儲的計算機程序進行非法重編程的技術。
圖1示出了具有CPU和ROM(以下為“閃速ROM”)的常規配置的框圖。參考圖1,常規裝置具有閃速ROM101和CPU102,兩者通過總線103彼此相連。此外,所述閃速ROM101具有普通區域101a和一次編程區域101b。
普通區域101a是在其中編程的數據能夠被重新編程并且存儲加密的計算機程序的區域。一次編程區域101b非可重編程(僅一次可編程)的區域。一次編程區域101b存儲用于解密被加密的程序的解密程序。一次編程區域101b存儲用于啟動裝置的啟動程序。
在啟動過程中,CPU102首先從一次編程區域101b中讀取啟動程序,并且開始啟動裝置。解密程序對閃速ROM101的普通區域101a中存儲的加密程序進行解密,并且同時將解密程序加載到外部RAM(未示出)。此后,被加載的程序驅動裝置工作。
常規技術能夠防止第三方非法使用裝置。這些技術在防止非法分析計算機程序方面是優秀的。然而,需要更強的程序分析防止技術。另外需要防止竄改程序的技術。此外需要當計算機程序被竄改時用來檢測竄改的計算機程序并且輸出警告的技術。
發明內容
本發明的一個目的是在具有加密的計算機程序的裝置中,提供一種具有如下配置的裝置,使得不輕易地對外泄漏出其加密方案;以及為此的方法和程序。
本發明的另一目的是提供一種具有如下配置的裝置,使得即使泄漏了加密方案,也能夠防止竄改加密的計算機程序;以及為此的方法和程序。
本發明的又另一目的是提供一種具有如下配置的裝置,使得在竄改的情況下,該裝置能夠檢測對計算機程序的竄改,以及為此的方法和程序。
通過參考隨后的描述和附圖,能夠很容易地確定本發明的這個和其他目標,特征以及優點。
為了實現本發明的一個方面,本發明提供一種程序竄改檢測裝置,包括外部存儲器;啟動ROM;以及CPU。外部存儲器存儲用于程序竄改檢測的第一代碼以及第一程序,其中第一程序被加密。啟動ROM,其存儲用于解密第一程序的第二程序。CPU電連接到外部存儲器和啟動ROM。CPU通過執行第二程序來解密第一程序以獲得解密的第一程序。CPU基于第一代碼與在解密的第一程序的第二代碼上執行的預定操作的結果之間的比較來檢測第一程序的竄改。
該程序竄改檢測裝置進一步包括RAM。在該情況下,CPU將解密的第一程序存儲在RAM中,并從RAM中讀取第二代碼,并且基于比較來檢測第一程序的竄改。
在該程序竄改檢測裝置中,外部存儲器可以具有地址數據,該地址數據指定RAM中的一個地址。在該情況中,CPU基于地址數據,將解密的第一程序存儲在RAM中,并且基于地址數據而從RAM讀出第二代碼。
在該程序竄改檢測裝置中,啟動ROM具有啟動程序。在該情況中,CPU通過執行啟動程序來執行第二程序,以獲得解密的第一程序。
在程序竄改檢測裝置中,可以有多個第二程序。在該情況下,多個第二程序中的一個的加密方案與多個第二程序中的其它的加密方案不同。CPU選擇并且執行多個第二程序的一個。
程序竄改檢測裝置可以進一步包括第一存儲部分,其存儲使用CPU來選擇包括在啟動ROM中的多個區域中的一個區域的區域數據。在該情況中,CPU基于區域數據選擇多個區域中的一個區域。CPU通過執行對應于多個區域中一個選定區域的多個第二程序的一個程序,來解密第一程序,以獲得解密的第一程序。
程序竄改檢測裝置可以進一步包括第二存儲部分,其存儲用于識別程序竄改檢測裝置的標識符。在該情況中,解密的第一程序具有標識符確認數據。CPU通過檢驗標識符確認數據與標識符,來檢測第一程序的竄改。
在程序竄改檢測裝置中,啟動ROM可以具有程序竄改報告程序。在該情況中,CPU響應第一程序的竄改檢測而執行程序竄改報告程序,以產生指示第一程序被竄改的消息,并且經由網絡而向具有預定地址的設備發送該消息。
在程序竄改檢測裝置中,CPU和啟動ROM安裝在單個半導體器件上。在該情況下,半導體器件連接到外部存儲器。
在程序竄改檢測裝置中,CPU、啟動ROM和第一存儲部分就可以安裝在單個半導體器件上。在該情況下,半導體器件連接到外部存儲器。
在程序竄改檢測裝置中,當CPU不檢測第一程序的竄改時,CPU執行解密的第一程序以解碼通過網絡接收的數據,并且將解碼的數據輸出到處理設備。
為了實現本發明的另一方面,本發明提供一種用于程序竄改檢測裝置的計算機程序產品。程序竄改檢測裝置包括外部存儲器,啟動ROM和CPU。外部存儲器存儲用于程序竄改檢測的第一代碼以及第一程序,其中第一程序被加密。啟動ROM存儲用于解密第一程序的第二程序。CPU電連接到外部存儲器和啟動ROM。計算機程序產品包含于計算機可讀介質上并且包含代碼,當執行程序時,使得計算機執行以下操作(a)從啟動ROM讀取第二程序;(b)執行第二程序以獲得解密的第一程序;(c)基于第一代碼與在解密的第一程序的第二代碼上執行的預定操作的結果的比較,來檢測第一程序的竄改。
在該計算機程序產品中,程序竄改檢測裝置可以進一步包括RAM。在該情況中,步驟(b)包括(b1)在RAM中存儲解密的第一程序。步驟(c)包括(c1)從RAM中讀取第二代碼。
在該計算機程序產品中,步驟(b)可以進一步包括(b2)讀出外部存儲器中存儲的地址數據,該地址數據指定RAM內的一地址。在該情況中,步驟(b1)包括(b12)基于地址數據,在RAM中存儲解密的第一程序,以及步驟(c1)包括(c12)基于地址數據,從RAM中讀取第二代碼。
在該計算機程序產品中,步驟(a)可以包括(a1)執行啟動ROM中存儲的啟動程序以啟動CPU。
在該計算機程序產品中,可以有多個第二程序。在該情況中,啟動ROM具有多個區域。多個區域的每一區域存儲有多個第二程序的相應一個第二程序。多個第二程序的一個第二程序的加密方案與多個第二程序的其它的第二程序的加密方案不同。步驟(a)包括(a2)選擇多個區域之一,以及(a3)讀取對應于多個區域中選定區域的多個第二程序的一個第二程序。步驟(b)包括(b3)執行多個第二程序中被讀取的一個第二程序。
在程序竄改檢測裝置中,程序竄改檢測裝置可以進一步包括第一存儲部分。在該情況中,步驟(a2)包括(a21)讀取用于選擇多個區域中的一個區域的區域數據,區域數據存儲在第一存儲部分,以及(a22)基于區域數據,選擇多個區域中的一個區域。
在程序竄改檢測裝置中,程序竄改檢測裝置可以進一步包括第二存儲部分。在該情況中,步驟(c)包括(c2)讀取用于識別程序竄改檢測裝置的標識符,標識符存儲在第二存儲部分,(c3)從解密的第一程序中提取標識符確認數據,以及(c4)通過檢驗標識符確認數據與標識符,來檢測第一程序的竄改。
該計算機程序產品可以進一步包括(d)讀取啟動ROM中存儲的程序竄改報告程序,以及(e)通過響應第一程序的竄改的檢測而執行程序竄改報告程序,來產生指示第一程序的竄改的消息,并且經由網絡而向具有預定地址的設備發送該消息。
為了實現本發明的又另一方面,本發明提供一種程序竄改檢測方法,包括(a)讀取用于解密的第二程序;(b)執行第二程序,以通過解密加密的第一程序來獲得解密的第一程序;以及(c)基于預定的第一代碼與對解密的第一程序的第二代碼執行的預定操作的結果的比較,來檢測第一程序的竄改。
在該程序竄改檢測方法中,步驟(b)可以包括(b1)讀取地址數據,該地址數據指示RAM中的一個地址,(b2)基于地址數據,將解密的第一程序存儲在RAM。在該情況中,步驟(c)包括(c1)基于地址數據,從RAM中讀取第二代碼。
在程序竄改檢測方法中,步驟(a)可以包括(a1)執行啟動程序以便執行第二程序。
在該程序竄改檢測方法中,可以有多個第二程序。在該情況中,多個第二程序的一個第二程序的加密方案與多個第二程序的其它的第二程序的加密方案不同。步驟(a)包括(a2)選擇多個第二程序中的一個第二程序,以及(a3)讀取多個第二程序中的一個第二程序。步驟(b)包括(b3)執行多個第二程序中被讀取的一個第二程序。
在該程序竄改檢測方法中,步驟(a3)可以包括(a31)讀取用于選擇多個區域中的一個區域的區域數據,以及(a32)基于區域數據,選擇多個區域中的一個區域。
在該程序竄改檢測方法中,步驟(c)可以包括(c2)讀取標識符,(c3)從解密的第一程序中提取標識符確認數據,以及(c4)通過檢驗標識符確認數據與標識符,以檢測第一程序的竄改。
該程序竄改檢測方法可以進一步包括(d)讀取程序竄改報告程序,以及(e)通過響應第一程序的竄改的檢測而執行程序竄改報告程序,來產生指示第一程序被竄改的消息,并且經由網絡而向具有預定地址的設備發送該消息。
圖1是示出了具有CPU和ROM的常規配置的框圖;圖2是示出了系統配置實例的框圖,其中根據本發明的計算機21適用于付費廣播系統的接收器;圖3是示出了在根據本發明第一實施例的計算機21中提供的程序竄改檢測裝置的配置的框圖;圖4是示出了可重編程的外部ROM4的內部格式30的視圖;圖5是示出了第一實例操作的流程圖;圖6是示出了在根據本發明第二實施例的計算機21中提供的程序竄改檢測裝置的配置的框圖;圖7A和7B是示出了第二實施例的操作的流程圖;圖8是示出了在根據本發明第三實施例的計算機21中提供的程序竄改檢測裝置的配置的框圖;以及圖9是示出了第三實施例的操作的流程圖。
具體實施例方式
以下將參考附圖描述根據本發明的程序竄改檢測裝置的實施例。
計算機21作為程序竄改檢測裝置的范例。該計算機21具有程序竄改檢測功能,并且適用于通過使用計算機來執行電子控制的任一產品或裝置。下文中,作為該說明書的一個實例,具有計算機21的產品用在該產品與信息通信網絡相連接的情況中。特別地,用于付費廣播系統的接收器作為該產品實例而進行描述。用于付費廣播系統的接收器會引起產品中所安裝的計算機程序被竄改的問題。
(第一實施例)圖2示出了系統配置實例的框圖,其中根據本發明的計算機21適用于付費廣播系統的接收器。參考圖2,付費廣播系統包括傳遞裝置24,控制裝置25和接收器20。傳遞裝置24提供在廣播傳遞側。接收器20提供在接收側以便接收付費廣播。傳遞裝置24經由網絡23傳輸付費廣播。該付費廣播是付費廣播系統提供的服務。控制裝置25控制例如付費廣播的發送狀態和接收器20的接收狀態。通過網絡23,接收器20接收從傳遞裝置24所傳輸的付費廣播的數據,并且將其輸出到顯示單元。這里,顯示單元在圖中沒有示出。
接收器20包括計算機21和通信接口22。計算機21具有LSI1,或是在第二實施例中的LSI11,或是在第三實施例中的LSI14、可重編程的外部ROM4以及RAM5。計算機21經由通信接口22連接到網絡23。連接到網絡23的通信接口22將計算機21輸出的數據經由網絡23而傳輸到傳遞裝置24。
圖3示出了在根據本發明第一實施例的計算機21中提供的程序竄改檢測裝置的配置的框圖。參考圖3,根據第一實施例的程序竄改檢測裝置包括LSI1,外部ROM4和RAM5。LSI1包括啟動ROM2,CPU3,和內部總線6。LSI1是單片配置的集成電路。LSI1經由數據線9連接到外部ROM4,并且經由數據線10而連接到RAM5。
啟動ROM2對存儲于其中的數據是非可重新編程的。啟動ROM2通過數據線7連接到內部總線6。啟動ROM2還經由內部總線6連接到CPU3、外部ROM4、以及RAM5。啟動ROM2僅在啟動計算機21之后立即使用。啟動ROM2存儲CPU啟動程序以及用于解密和加載外部ROM4中存儲的加密程序的解密程序。通過CPU啟動程序啟動CPU3,并且基于CPU啟動程序從啟動ROM2中讀取解密程序。CPU3基于解密程序而進一步讀取外部ROM4中的加密的程序,并且對加密的程序執行解密。CPU3執行被解密和加載到RAM5中的程序,并且通過執行該程序來控制計算機21。CPU3經由數據線8而連接到內部總線6。CPU3還通過內部總線6而連接到啟動ROM2、外部ROM4以及RAM5。
可重編程的外部ROM4是一種允許存儲于其中的數據重新編程并且具有非易失存儲區域的存儲設備。可重編程的外部ROM4通過數據線9而連接到LSI1,并且存儲加密程序。可重編程的外部ROM4輸出加密程序以響應LSI1的請求。RAM5是一種存儲解密后(post-decryption)程序的存儲設備。RAM5通過數據線10而連接到LSI1,并且存儲加密程序,該加密程序通過啟動ROM2中存儲的解密程序被解密,作為解密后程序。
接收器20通過網絡23從傳遞裝置24接收諸如MPEG流數據的多媒體數據。當計算機21判斷未發生使用存儲在外部ROM5中的用戶代碼的竄改時,計算機21執行解密后的程序來進行將接收到多媒體數據輸入到MPEG解碼器以正常地解碼接收到的多媒體數據。這里,MPEG解碼器在圖中未示出。
當計算機21判斷發生了使用存儲在外部ROM5中的用戶代碼的竄改時,計算機21控制MPEG解碼器不解碼接收到的數據。在這種情況下,計算機21通過網絡23向傳遞裝置24發送指示用戶代碼的竄改的消息。
圖4是示出了可重編程外部ROM4的內部格式30的視圖。參考圖4,可重編程ROM4的數據存儲區域包括標題部分和除了標題部分的區域。標題部分包括多個區域。多個區域中的每一區域存儲標題檢測唯一代碼31、用戶程序代碼量數據32、RAM加載目的地址數據33以及參考安全檢驗代碼34之一。
標題檢測唯一代碼31用于建立對可重編程外部ROM4中存儲的數據的訪問。用戶程序代碼量數據32、RAM加載目的地址數據33以及參考安全檢驗代碼34是相繼于標題檢測唯一代碼31而存儲在可重編程外部ROM4中的數據。用戶編程代碼量數據32用于確定被載入RAM5中的解密程序的代碼量是否達到預定代碼量。RAM加載目的地址數據33是示出RAM5的地址的數據。在將解密的程序載入RAM5的情況中,CPU3基于RAM加載目的地址數據33而將解密的程序載入RAM5。此外,在讀出RAM5中所存儲的解密后程序的情況中,CPU3基于RAM加載目的地址數據33而執行數據的讀取操作。參考安全檢驗代碼34用于檢測竄改的解密后程序。用戶代碼35是存儲在可重編程外部ROM4中的加密程序。
圖5示出了第一實施例操作的流程圖。下文中,隨后的術語用于清楚地將加密的程序與解密的并載入RAM5中的程序區別開來。“用戶代碼”35指可重編程外部ROM4中存儲的程序,或加密程序。“用戶程序”指以其是加密程序的用戶代碼35被解密并載入RAM5的方式而形成的程序。
參考圖5,一旦通過啟動,或復位接收器20來執行通電,就開始第一實施例的操作。在步驟S101中,啟動ROM2執行啟動ROM2中存儲的CPU啟動程序,以響應接收器20的啟動,從而啟動CPU3。被啟動的CPU3經由內部總線6而訪問啟動ROM2,讀取并執行啟動ROM2中存儲的解密程序。
在步驟S102中,CPU3訪問可重編程外部ROM4,然后對可重編程外部ROM4的標題部分中所存儲的數據執行讀取操作。在步驟S103中,CPU3判斷CPU3是否檢測到標題檢測唯一代碼31。如果CPU3檢測到標題檢測唯一代碼31,處理進行到步驟S104。另一方面,如果CPU3沒有檢測到標題檢測唯一代碼31,那么處理返回到S102并且在其中再一次執行讀取操作。也就是說,如果沒有檢測到標題檢測唯一代碼31,那么就執行從步驟S102到S103的操作。
在步驟S104中,在檢測標題檢測唯一代碼31之后,CPU3對相繼于標題檢測唯一代碼31的數據執行讀取操作,也就是,用戶程序代碼量數據32、RAM加載目的地址數據33、以及參考安全檢驗代碼34。在步驟S105中,在執行用戶程序代碼量數據32、RAM加載目的地址數據33以及參考安全檢驗代碼34的讀取操作之后,CPU3對可重編程外部ROM4中存儲的用戶代碼35執行讀取操作。然后,CPU3執行解密程序,從而解密用戶代碼35并且將其載入RAM5。
在該情況中,任一加密方案可以用作對解密的程序進行加密的加密方案。例如,方案可以以隨后方式來加密用戶代碼35。即,首先,以其多個比特位為單位讀取用戶代碼35,然后,通過使用預定的解密密鑰執行EXOR操作,預定的解密密鑰能夠解密相應的多個比特位。作為選擇,可以使用較為復雜發加密/解密方案,從而使構造一個較高安全性的系統成為可能。
隨后,在步驟S106中,CPU3基于預定算法,通過使用二進制代碼的用戶程序來執行安全檢驗代碼的計算,用戶程序是載入RAM5中的解密后程序。對于在此執行的算法來說,可以使用任一算法。
隨后,在步驟S107中,CPU3將載入RAM5中的用戶程序的代碼量與在步驟S104讀取的用戶程序代碼量數據32進行比較。根據比較的結果,如果用戶程序的代碼量沒有達到用戶程序代碼量數據32的值,那么處理返回到步驟S105。也就是,對讀取的用戶代碼35進行解密,將其載入RAM5,以及計算下一安全檢驗代碼。
以下將較為詳細地描述步驟S105-S107中的操作。例如,對預定算法進行EXOR操作,首先,在預定的區域中設置并且存儲預定的32比特的第一固定值和32比特的第二固定值。CPU3執行第一固定值和用戶代碼35的最初32比特之間的EXOR操作,并且因此在步驟S105中獲得32比特用戶程序。然后在步驟S106中CPU3基于32比特用戶程序和第二固定值之間的EXOR操作而執行計算以產生第一安全檢驗代碼。
在計算出第一安全檢驗代碼之后,在步驟S107中,CPU3判斷被載入RAM5的用戶程序的代碼量是否達到用戶程序代碼量數32的值。根據比較的結果,如果用戶程序的代碼量沒有達到用戶程序代碼量數據32的值,那么處理返回到步驟S105。也就是,在步驟S105中,處理執行第一固定值和用戶代碼的隨后32比特之間的EXOR操作,從而獲得一個新的32比特用戶程序。然后,在步驟S106中,CPU3執行所獲得的新的32比特用戶程序與第二固定值之間的EXOR操作,從而計算第二安全檢驗代碼。
CPU3重復從S105到S107的操作直到其發現用戶程序的代碼量與用戶程序代碼量數據32的值一致。CPU3確定兩個值彼此一致的所獲得的安全檢驗代碼作為整個用戶程序的最終安全檢驗代碼。另外,基于用戶程序的代碼量與用戶程序代碼量數據32的值之間相一致,CPU3認為所有的用戶代碼35被解密。
在步驟S108中,CPU3將計算出的最終安全檢驗代碼與參考安全檢驗代碼34相比較。在步驟S110中,根據比較的結果,如果計算出的最終安全檢驗代碼與參考安全檢驗代碼34不一致,那么CPU3判定用戶代碼35被竄改。在步驟S110中,如果用戶代碼35被竄改,計算機21的CPU3產生竄改檢測消息并且將該消息輸出到通信接口22。然后經由網絡23,將輸出的消息傳送到付費廣播系統的控制裝置25。另一方面,如果計算出的安全檢驗代碼與參考安全檢驗代碼34相一致,那么處理進入到S109。在步驟S109中,計算機21的CPU3執行加載于RAM5中的用戶程序,從而控制接收器20工作。在步驟S109中,通過加載于RAM5中的用戶程序,計算機21的LSI1禁止對接收器20的啟動ROM2訪問以響應開始接收器20的操作。訪問禁止持續到計算機21的操作結束,諸如斷開電源。
所以,基于流程圖所示的操作,不但通過啟動ROM2中存儲的解密程序來執行安全檢測,而且執行使用解密的用戶程序的代碼來的安全檢驗。這使得利用程序竄改檢測功能以進一步加強保護計算機21中提供的程序成為可能。
(第二實施例)
圖6示出了在根據本發明第二實施例的計算機21中提供的程序竄改檢測裝置的配置框圖。與第一實施例相似,該實施例中的程序竄改檢測裝置適合于使用計算機執行電子控制的任何產品。與第一實施例相似,具有該實施例中的計算機21的產品在以下情況中使用,即該產品與信息通信網絡相連接的情況。特別是,用于付費廣播系統的接收器20作為產品的一個實例而進行描述。付費廣播系統的接收器會引起產品中所安裝的計算機程序被竄改的問題。
參考圖6,第二實施例中所描述的程序竄改檢測裝置包括LSI1可重編碼的外部ROM4,以及RAM5。LSI11包括啟動ROM2、CPU3、內部總線6,以及設備ID(標識符)數據存儲部分12。與LSI1相似,LSI11是一種配置為單片的集成電路。LSI11的啟動ROM2和CPU3與第一實施例中描述的LSI1的相應部件相似。因此,省略有關LSI11的啟動ROM2和CPU3的描述。另外,該實施例中的可重編碼外部ROM4和RAM5與第一實施例中的相應部件相似。因此,同樣省略對該實施例中的可重編碼外部ROM4和RAM5的描述。
設備ID數據存儲部分12是存儲設備ID數據的存儲器區域。設備ID數據表示被分配給半導體設備ID。該設備ID數據存儲部分12具有寄存器或具有與該寄存器相同的數據存儲功能,并且其通過數據線13連接到內部總線6。設備ID被設置為設計階段所確定的值,設計相同的半導體設備被分配有相同的ID。設計相同而彼此由來不同的半導體設備的每一個以不同的由來為單位而分配不同的、唯一的ID。
圖7A和7B示出了第二實施例的操作的流程圖。參考圖7A和7B,在該操作中,第二實施例中的步驟S101到S109與第一實施例中的相應步驟基本相同。因此,以下將集中描述步驟S201到S205。
在步驟S109中,LSI11的CPU3通過執行RAM5中所加載的用戶程序來驅動接收器20操作。在步驟S201中,響應開始執行用戶程序,CPU3從LSI11中提供的設備ID數據存儲部分12中執行設備ID數據的讀取操作。
在步驟S202中,響應讀取設備ID數據的結束,CPU3檢索和/或提取加載到RAM5中的解密后用戶程序中包含的設備檢驗ID。用戶代碼35預先包含加密的設備檢驗ID。CPU3通過解密可重編程外部ROM4中存儲的用戶代碼35而能夠從用戶程序中檢索設備檢驗ID。
在步驟S203中,CPU3判斷檢索和/或提取的設備檢驗ID是否與讀取的設備ID數據相一致。基于判斷的結果,如果檢索出的設備檢驗ID與讀取的設備ID數據不一致,那么處理進入到S205并且停止執行用戶程序。響應執行用戶程序的停止,計算機21的CPU3產生程序停止消息并且輸出該消息到通信接口22。然后經由網絡23,將輸出的消息傳輸到付費廣播系統的控制裝置25的地址。基于步驟S203中的判斷結果,如果檢索出的設備檢驗ID與讀取的設備ID數據相一致,那么處理進入到S204。在步驟S204中,計算機21的CPU3通過執行RAM5中所加載的用戶程序而繼續接收器20的操作。
所以,根據流程圖中所示的操作,不但執行其中解密程序被存儲在啟動ROM2中的安全檢測,而且使用根據解密的用戶程序所計算出的安全檢驗代碼來進行竄改檢測。此外,通過使用用戶程序中所包含的設備檢驗ID以及LSI11中存儲的設備ID數據來執行安全檢驗。這使得進一步加強保護計算機21中所提供的程序成為可能。
(第三實施例)圖8示出了根據本發明第三實施例的計算機21中所提供的程序竄改檢測裝置的配置框圖。與第一實施例相似,該實施例中的程序竄改檢測裝置適合于使用計算機來執行電子控制的任一產品。與第一實施例相似,具有該實施例中的計算機21的產品在以下情況中使用,即產品與信息通信網絡相連接的情況。特別是,付費廣播系統的接收器20作為產品實例而進行描述。付費廣播系統的接收器會引起產品中所安裝的計算機程序被竄改的問題。
參考圖8,第三實施例描述的程序竄改檢測裝置包括LSI14,可重編程外部ROM4以及RAM5。LSI14包括啟動ROM2、CPU3、內部總線6,以及寄存器15。與LSI1相似,LSI14是一種配置為單片的集成電路。LSI14中的CPU3具有與第一實施例中描述CPU3相似的配置,從而省略CPU3的描述。另外,圖8中的可重編碼外部ROM4和RAM5與第一實施例中描述的可重編碼外部ROM4和RAM5的配置相似。因此,省略對第三實施例中的可重編碼外部ROM4和RAM5的描述。
啟動ROM2具有諸如第一區域2a,第二區域2b,第三區域2c等多個區域,每一區域存儲的數據與LSI1中的啟動ROM2存儲的數據相似。另外,隨著設計的改變,這些區域可以任意地增加或減少。寄存器15是LSI14中的存儲電路。該寄存器15存儲有用于從啟動ROM2中的多個區域中選擇特定區域的數據。寄存器15經由數據線16連接到內部總線6。啟動ROM2具有多個解密程序。多個解密程序中的每一個存儲在諸如第一區域2a,第二區域2b,第三區域2c等多個區域中相應的一個區域上。多個解密程序中的一個解密程序的加密方案與多個解密程序的別的解密程序的加密方案不同。多個區域中的一個以一一對應的關系對應于多個解密程序中的一個。用戶程序通過與多個解密程序之一的解密程序相對應的加密方案而被加密為用戶代碼35。該用戶代碼35存儲于可重編程的外部ROM4。
此外,優選地向諸如SLI14的設備提供一個具體的外部終端,以便從多個區域中選擇一個具體的區域,然后確定加密方案。在啟動,或復位的時候,該裝置基于從諸如復位信號或另一存儲器設備的外部提供給具體外部終端的數據或信號來確定寄存器15,并且執行從寄存器15中讀取存儲值的操作。
圖9示出了第三實施例操作的流程圖。參考圖9,步驟S102到S109的操作與第一實施例中的相應操作基本相同。所以,以下將集中描述步驟S301到S303的操作。
在步驟S301中,響應開始執行接收器20,通過LSI14中的啟動ROM2中存儲的CPU啟動程序來啟動CPU3。在啟動之后,被啟動的CPU3經由內部總線6而立即訪問寄存器15。
在步驟S302中,CPU3基于為啟動而提供給特殊外部終端的數據,執行寄存器15中的存儲值的讀取操作。在步驟S303中,基于讀取寄存器15的值,CPU3確定一區域,解密程序將被從啟動ROM2的諸如第一區域2a,第二區域2b,第三區域2c等多個區域的該區域中讀出。啟動的CPU3通過內部總線6訪問啟動ROM2的確定區域,讀出并執行啟動ROM2中存儲的解密程序。此后,處理進入到S102,并且執行與第一實施例中執行的步驟S102到S109,或步驟S110的處理相同的處理。
根據流程圖中示出的操作,能夠選擇存儲在可重編程外部ROM4中的加密的用戶程序的多個加密方案。另外,即使當對存儲在可重編程外部ROM4中的加密的用戶程序已經被分析,也很難與在啟動中選擇的加密方案相一致。因此這增強了具有序竄改檢測的計算機21所安裝的程序的安全性。此外,不但執行了解密程序存儲在啟動ROM2中的安全檢測,而且執行了使用解密的用戶程序的代碼的安全檢驗。這能夠使得具有程序竄改檢測功能的計算機21中的程序的保護進一步被加強。
此外,具有多個存儲區域的產品能夠選擇單一、相同類型的諸如LSI的設備中的多個加密方案。因此,甚至當有其每個都具有計算機21的付費廣播接收器20的多個不同制造商,也能向這些制造商提供不同的加密方案。雖然設備是相同的,但是一個制造商所使用的加密方案能夠被獨特地設置為與另一制造商所使用的加密方案不同。因此,能夠為存儲于單個可重編程外部ROM4中的單獨的用戶代碼35執行強有力的安全檢測。
如上,已經分別描述了第一至第三實施例;然而,如果這些實施例之間不存在沖突的情況下,可以將它們相互結合。
在一種具有加密的計算機程序的裝置中,本發明具有如下配置,即其加密方案不會輕易地被向外泄漏,從而提供了防止裝置中所存儲的數據泄漏的增強的安全的效果。
此外,本發明提供的一種效果在于即使當泄漏了加密方案,也能夠防止竄改加密的計算機程序,并且能夠進一步加強安全檢測,因此能夠增強安全性而防止裝置中存儲數據的漏出。
此外,本發明提供一種效果在于如果出現計算機程序的竄改,那么執行檢測竄改的操作,從而防止沒有意識到被竄改而繼續執行計算機程序。
權利要求
1.一種程序竄改檢測裝置,包括外部存儲器,其存儲用于程序竄改檢測的第一代碼以及第一程序,其中所述第一程序被加密;啟動ROM,其存儲用于解密所述第一程序的第二程序;以及CPU,電連接到所述外部存儲器和所述啟動ROM,其中所述CPU通過執行所述第二程序來解密所述第一程序以獲得所述解密的第一程序,以及所述CPU基于所述第一代碼與在所述解密的第一程序的第二代碼上執行的預定操作的結果之間的比較,檢測所述第一程序的竄改。
2.根據權利要求1的程序竄改檢測裝置,進一步包括RAM,其中所述CPU將所述解密的第一程序存儲在所述RAM中,并從所述RAM中讀取所述第二代碼,以及基于所述比較來檢測所述第一程序的竄改。
3.根據權利要求2的程序竄改檢測裝置,其中所述外部存儲器具有地址數據,該地址數據指定所述RAM中的地址,所述CPU基于所述地址數據,將所述解密的第一程序存儲在所述RAM中,并且基于所述地址數據而從所述RAM讀出所述第二代碼。
4.根據權利要求1的程序竄改檢測裝置,其中所述啟動ROM具有啟動程序,以及所述CPU通過執行所述啟動程序來執行所述第二程序,以獲得所述解密的第一程序。
5.根據權利要求1的程序竄改檢測裝置,其中存在多個所述的第二程序,所述多個第二程序中的一個第二程序的加密方案與所述多個第二程序中的別的第二程序的加密方案不同,以及所述CPU選擇并且執行所述多個第二程序中的一個第二程序。
6.根據權利要求5的程序竄改檢測裝置,進一步包括第一存儲部分,其存儲使用所述CPU來選擇包括在所述啟動ROM中的多個區域中的一個區域的區域數據,其中所述CPU基于所述區域數據選擇多個區域中的所述一個區域,以及所述CPU通過執行對應于多個區域中的所述選擇的一個區域的所述多個第二程序中的一個程序,來解密所述第一程序,以獲得所述解密的第一程序。
7.根據權利要求1的程序竄改檢測裝置,進一步包括第二存儲部分,其存儲用于識別所述程序竄改檢測裝置的標識符,其中所述解密的第一程序具有標識符確認數據,以及所述CPU通過檢驗所述標識符確認數據與所述標識符,來檢測所述第一程序的竄改。
8.根據權利要求1的程序竄改檢測裝置,其中所述啟動ROM具有程序竄改報告程序,通過響應所述第一程序的竄改檢測而執行所述程序竄改報告程序,所述CPU產生指示所述第一程序的竄改的消息,并且經由網絡發送所述消息到具有預定地址的設備。
9.根據權利要求1的程序竄改檢測裝置,其中所述CPU和所述啟動ROM安裝在單個半導體器件上,并且所述半導體設備連接到所述外部存儲器。
10.根據權利要求6的程序竄改檢測裝置,其中所述CPU、所述啟動ROM以及所述第一存儲部分安裝在單個半導體設備上,并且所述半導體設備連接到所述外部存存儲器。
11.根據權利要求1的程序竄改檢測裝置,其中當所述CPU未檢測到所述第一程序的竄改時,所述CPU執行所述解密的第一程序以解碼通過網絡接收的數據。
12.一種用于程序竄改檢測裝置的計算機程序產品,其中所述程序竄改檢測裝置包括外部存儲器,其存儲用于程序竄改檢測的第一代碼以及第一程序,其中所述第一程序被加密,啟動ROM,其存儲用于解密所述第一程序的第二程序,以及CPU,電連接到所述外部存儲器和所述啟動ROM,所述計算機程序體現在計算機可讀介質上并且包含代碼,當執行所述代碼時,使得計算機執行以下步驟(a)從所述啟動ROM讀取所述第二程序;(b)執行所述第二程序以獲得所述解密的第一程序;(c)基于所述第一代碼與在所述解密的第一程序的第二代碼上執行的預定操作的結果的比較,檢測所述第一程序的竄改。
13.根據權利要求12的計算機程序產品,其中所述程序竄改檢測裝置進一步包括RAM,所述步驟(b)包括(b1)在所述RAM中存儲所述解密的第一程序,所述步驟(c)包括(c1)從所述RAM中讀取所述第二代碼。
14.根據權利要求13的計算機程序產品,其中所述步驟(b)進一步包括(b2)讀出所述外部存儲器中存儲的地址數據,該地址數據指定所述RAM內的地址,所述步驟(b1)包括(b12)基于所述地址數據,在所述RAM中存儲所述解密的第一程序,以及所述步驟(c1)包括(c12)基于所述地址數據,從所述RAM中讀取所述第二代碼。
15.根據權利要求12的計算機程序產品,其中所述步驟(a)包括(a1)執行所述啟動ROM中存儲的啟動程序以啟動所述CPU。
16.根據權利要求12的計算機程序產品,其中存在多個所述第二程序,所述啟動ROM具有多個區域,所述多個區域的每一區域存儲有所述多個第二程序中的相應一個第二程序,所述多個第二程序中的一個第二程序的加密方案與所述多個第二程序中的別的第二程序的加密方案不同,所述步驟(a)包括(a2)選擇所述多個區域之一,和(a3)讀取對應于多個區域中的所述選擇的一個區域的所述多個第二程序中的一個第二程序,以及所述步驟(b)包括(b3)執行所述多個第二程序中所述被讀取的一個第二程序。
17.根據權利要求16的計算機程序產品,其中所述程序竄改檢測裝置進一步包括第一存儲部分,所述步驟(a2)包括(a21)讀取用于選擇多個區域中的所述一個區域的區域數據,所述區域數據存儲在所述第一存儲部分中,以及(a22)基于所述區域數據,選擇多個區域中的所述一個區域。
18.根據權利要求12的計算機程序產品,其中所述程序竄改檢測裝置進一步包括第二存儲部分,所述步驟(c)包括(c2)讀取用于識別所述程序竄改檢測裝置的標識符,所述標識符存儲在所述第二存儲部分中,(c3)從所述解密的第一程序中提取標識符確認數據,以及(c4)通過檢驗所述標識符確認數據與所述標識符,來檢測所述第一程序的竄改。
19.根據權利要求12的計算機程序產品,進一步包括(d)讀取所述啟動ROM中存儲的程序竄改報告程序,以及(e)通過響應所述第一程序的竄改的檢測而執行所述程序竄改報告程序,來產生指示所述第一程序被竄改的消息,并且經由網絡發送所述消息到具有預定地址的設備。
20.一種程序竄改檢測方法,包括(a)讀取用于解密的第二程序;(b)通過解密加密的第一程序,來執行所述第二程序以獲得解密的第一程序;以及(c)基于預定的第一代碼與對所述解密的第一程序的第二代碼執行的預定操作的結果的比較,來檢測所述第一程序的竄改。
21.根據權利要求20的程序竄改檢測方法,其中所述步驟(b)包括(b1)讀取地址數據,該地址數據指示RAM中的地址,(b2)基于所述地址數據,將所述解密的第一程序存儲在所述RAM中,以及所述步驟(c)包括(c1)基于所述地址數據,從所述RAM中讀取所述第二代碼。
22.根據權利要求20的程序竄改檢測方法,其中所述步驟(a)包括(a1)執行啟動程序以便執行所述第二程序。
23.根據權利要求20的程序竄改檢測方法,其中存在多個所述第二程序,所述多個第二程序中的一個第二程序的加密方案與所述多個第二程序中的別的第二程序的加密方案不同,所述步驟(a)包括(a2)選擇所述多個第二程序中的一個第二程序,以及(a3)讀取多個第二程序中的所述一個第二程序,以及所述步驟(b)包括(b3)執行所述多個第二程序中所述被讀取的一個第二程序。
24.根據權利要求23的程序竄改檢測方法,其中所述步驟(a3)包括(a31)讀取用于選擇多個區域中的所述一個區域的區域數據,以及(a32)基于所述區域數據,選擇多個區域中的所述一個區域。
25.根據權利要求20的程序竄改檢測方法,所述步驟(c)包括(c2)讀取標識符,(c3)從所述解密的第一程序中提取標識符確認數據,以及(c4)通過檢驗所述標識符確認數據與所述標識符,以檢測所述第一程序的竄改。
26.根據權利要求20的程序竄改檢測方法,進一步包括(d)讀取程序竄改報告程序,以及(e)通過響應所述第一程序的竄改的檢測而執行所述程序竄改報告程序,來產生指示所述第一程序被竄改的消息,并且經由網絡發送所述消息到具有預定地址的設備。
全文摘要
一種程序竄改檢測裝置,包括外部存儲器(4)、啟動ROM(2)、以及CPU(3)。外部存儲器(4)存儲用于程序竄改檢測的第一代碼以及第一程序,其中第一程序被加密。啟動ROM(2)存儲用于解密第一程序的第二程序。CPU(3)電連接到外部存儲器(4)和啟動ROM(2)。CPU(3)通過執行第二程序來解密第一程序以獲得解密的第一程序。CPU(3)基于第一代碼與在解密的第一程序的第二代碼上執行的預定操作的結果之間的比較,檢測第一程序的竄改。
文檔編號H04N7/16GK1652057SQ200510007859
公開日2005年8月10日 申請日期2005年2月6日 優先權日2004年2月6日
發明者中澤武 申請人:恩益禧電子股份有限公司