專利名稱:程序驗證裝置及其方法
技術領域:
本發(fā)明涉及程序驗證裝置及其方法。例如,本發(fā)明涉及處理數字視頻內容的數字 TV領域等等。
背景技術:
在處理數字視頻內容的數字TV領域等中,近年來,在世界范圍內已經快速地從模 擬廣播轉化到數字廣播。在數字廣播中,為了防止非法瀏覽和非法復制,對數據進行加密。 然而,此種加密經常受到非法行為的破壞,并且因此廣播代理被迫將他們的加密方案變成 更加安全的方案。由于此,產生用于改善安全魯棒性的需求,以不僅用于防止篡改內容,而 且還用于防止篡改處理這些內容的半導體裝置。圖4是示意性地表示在專利文獻1 (日本未經審查的專利申請公開 No. 2007-183937)中公布的智能卡的功能框圖。智能卡1000包括控制單元100、接口塊200、 RAM 300,ROM 400、以及安全數據存儲500。控制單元100控制智能卡100的整體操作。RAM 300用作工作區(qū)域,并且被用于暫時地存儲要被存儲在安全數據存儲500中或者要從安全 數據存儲500中讀出的數據。安全數據存儲500被用于存儲需要通過控制單元100的控制 而保護的數據(例如,財政信息)。注意的是,被存儲在智能卡1000的安全數據存儲500中的數據要求高安全性。要 被存儲的數據的示例包括財政信息。此外,當在智能卡1000的安全數據存儲500中要對數 據進行編程時,必須驗證數據是否被正確地寫入。即,必須防止通過外部攻擊等等非法操作 的數據被編程。至于程序驗證,已知的是CRC(循環(huán)冗余校驗)方案。圖5是示出控制單元的更加詳細的構造的功能框圖。控制單元100包括隨機延 遲控制邏輯110、緩沖存儲器120、數據復制和控制邏輯130、CRC計算邏輯140、CRC寄存器 150、比較器160、寄存器171和172、校正/檢測控制邏輯180、以及信號生成器190。程序數據被從RAM 300傳輸到安全數據存儲500的頁緩沖器504。在編程數據被 從RAM 300傳輸到頁緩沖器504之后,隨機延遲控制邏輯110將該編程數據復制到緩沖存 儲器120。當被存儲在RAM 300中的所有編程數據已經被復制到緩沖存儲器120時,隨機 延遲控制邏輯110生成標記信號FUDC_END。標記信號FUDC_END的激活指示被存儲在RAM 300中的所有編程數據已經被復制到緩沖存儲器120。CRC計算邏輯140接收來自于數據復制和控制邏輯130的控制信號F_CRC_ST。在 接收此控制信號F_CRC_ST之后,CRC計算邏輯140對被存儲在緩沖存儲器120中的數據執(zhí) 行CRC計算操作。同時,當CRC計算邏輯140接收控制信號F_CRC_ST時,從安全數據存儲 500的陣列501中直接地讀出數據,并且對讀出的數據執(zhí)行CRC計算。由CRC計算邏輯140計算的結果值(即,各個結果值對應于2字節(jié)校驗和值)被存儲在CRC寄存器150中。CRC寄存器150對通過兩個CRC計算處理獲得的兩個2字節(jié)校驗和值進行存儲。每次CRC計算 操作已經完成時,CRC計算邏輯140生成標記信號FCRC_END。比較器160接收來自于數據復制和控制邏輯130的控制信號FCOMPl。在接收控 制信號FCOMPl之后,比較器160將被存儲在頁緩沖器504中的數據與被存儲在緩沖存儲器 120中的數據進行比較。比較器160激活標記信號FMTC和標記信號FNMTC中的一個作為比 較結果。標記信號FMTC的激活指示被存儲在頁緩沖器504中的數據與被存儲在緩沖存儲 器120中的數據相匹配。標記信號FNMTC的激活指示被存儲在頁緩沖器504中的數據與被 存儲在緩沖存儲器120中的數據不相匹配。如在下文中所解釋,當標記信號FNMTC被激活時,意味著被加載在頁緩沖器504中 的數據被外部攻擊非法操作,并且因此終止程序操作。此外,比較器160還接收來自于數據復制和控制邏輯130的控制信號FC0MP2。在 接收控制信號FC0MP2之后,比較器160比較被存儲在CRC寄存器150中的結果值(CRC1、 CRC2),并且生成標記信號FCRC_0K或者FCRC_N0K作為比較結果。標記信號FCRC_N0K指示 被存儲在寄存器150中的結果值(CRC1,CRC2)不匹配。標記信號FCRC_0K指示被存儲在 CRC寄存器150中的結果值(CRC1,CRC2)匹配。被用于存儲安全數據存儲500的控制信息的寄存器171存儲高壓激活信息、自定 時器激活信息、指令信息等等。寄存器172是8位寄存器,并且用于存儲用于安全數據存儲 500的寫入操作的驗證信息。注意的是,
位是安全數據存儲500的驗證開啟/關閉控制位。此外,邏輯值“0” 指示驗證功能被關閉,并且邏輯值“ 1,,指示驗證功能被開啟。初始值是邏輯值“0”。[1]位是錯誤校正/檢測選擇信息位。此外,邏輯值“0”指示錯誤檢測功能被選 擇,并且邏輯值“ 1,,指示錯誤校正功能被選擇。[2]位是外部攻擊檢測標記位。當[2]位被設置為“0”時,指示程序數據沒有被外 部攻擊非法操作。此外,當[2]位被設置為“1”時,指示程序數據被外部攻擊非法操作。[5]位是中斷發(fā)生控制位。此外,邏輯值“0”指示中斷發(fā)生功能被關閉,并且邏輯 值“ 1”指示中斷發(fā)生功能被開啟。[6]位通過控制單元100的CPU (未示出)或者微處理器而被設置為錯誤檢測標記 位。此外,邏輯值“0”指示沒有檢測到錯誤,并且邏輯值“ 1,,指示檢測到錯誤。注意的是,僅當[1]位被設置為邏輯值“0”時,[5]位具有有效信息。即,在[1] 位被設置為邏輯值“0”的情況下,當[5]位被設置為邏輯值“1”時,可以發(fā)生中斷。在[1] 位被設置為邏輯值“1”的情況下,即使檢測到錯誤,也不發(fā)生中斷。在錯誤檢測功能被選擇 ([1]位被設置為邏輯值“0”)的情況下,當錯誤出現時對[6]位進行設置,并且通過接下來 被激活的高壓激活信號來對[6]位進行清除。剩下的[3]、[4]以及[7]位是保留位。接下來,校正/檢測控制邏輯180響應于被存儲在寄存器172中的信息和標記信 號FNMTC、FCRC_N0K以及FCRC_0K生成程序結束信號PGM_END、外部攻擊檢測信號ATT_DET、 重新編程信號FRPGR、以及中斷信號FIQ。例如,當標記信號FNMTC被激活時,校正/檢測控 制邏輯180激活程序結束信號PGM_END和外部攻擊檢測信號ATT_DET。此外,校正/檢測控 制邏輯180基于寄存器172的[5]位是否被設置來生成中斷信號FIQ。
當標記信號FCRC_0K被激活時,校正/檢測控制邏輯180激活程序結束信號PGM_END。該操作使程序流程終止。當標記信號FCRC_N0K被激活時,校正/檢測控制邏輯180基 于寄存器172的[1]位是否被設置來激活重新編程信號FRPGR或者程序結束信號PGM_END 和中斷信號FIQ。信號生成器190響應于被存儲在寄存器171中的指令信息和來自于數據復制和控 制邏輯130的控制信號FRBC_END來激活標記信號FBLDC和FBC中的一個。例如,當在寄存 器171中設置對擦除和寫入操作或者寫入操作進行通知的指令時,信號生成器190響應于 控制信號FRBC_END的激活生成標記信號FBLDC。當在寄存器171中設置對擦除操作進行通 知的指令時,信號生成器190響應于控制信號FRBC_END生成標記信號FBC。圖6是通過現有技術中的智能卡控制單元進行的程序驗證的流程圖??刂茊卧?100通過外部設備開始操作,并且將來自于RAM 300的程序數據傳輸到頁緩沖器504 (步驟 F100)。然后,控制單元100確定頁緩沖器504中的程序數據是否被外部攻擊非法操作,并 且基于確定結果將頁緩沖器504的程序數據存儲在安全數據存儲500的所選擇的頁中。在將程序數據傳輸到頁緩沖器504之后,隨機延遲控制邏輯101將來自于RAM 300 的程序數據傳輸到緩沖存儲器120 (步驟F101)。在將程序數據傳輸到緩沖存儲器120之后,為了計算用于緩沖存儲器120的程序 數據的第一校驗和值,數據復制和控制邏輯130指示CRC計算邏輯140執(zhí)行CRC計算(步 驟F102)。CRC計算邏輯140通過執(zhí)行用于緩沖存儲器120的程序數據的CRC計算,來計算 第一校驗和值(步驟F103)。在計算第一校驗和值之后,數據復制和控制邏輯130將頁緩沖器504的程序數據 傳輸到緩沖存儲器120 (步驟F104)。在程序數據被傳輸到緩沖存儲器120之后,為了計算 用于緩沖存儲器120的程序數據的第二校驗和值,數據復制和控制邏輯130指示CRC計算 邏輯140執(zhí)行CRC計算(步驟F105)。CRC計算邏輯140通過執(zhí)行用于緩沖存儲器120的程序數據的CRC計算,來計算第 二校驗和值(步驟F106)。在計算第二校驗和值之后,比較器160將第一校驗和值與第二 校驗和值進行比較(步驟F107)。當比較結果是匹配的時候,處理完成,然而當變成不匹配 時,比較器160通知校正/檢測控制邏輯180 (步驟F108)。校正/檢測控制邏輯180生成 程序結束信號,并且處理完成(步驟F109)。此外,專利文獻2 (日本未經審查的專利申請公開No. 2000-4170)公布校正檢驗方 法以校正當從記錄介質中讀出數據時出現的錯誤,并且檢驗在錯誤校正處理的結果中是否 存在錯誤。在下面的程序中執(zhí)行專利文獻2中公布的校正檢驗方法。首先,通過使用錯誤 檢測代碼對包括與PI方向(扇區(qū)(sector)的行方向)相對應的錯誤檢測代碼的數據執(zhí)行 檢驗計算,以獲得第一采樣值。接下來,在數據塊的PI方向中執(zhí)行錯誤校正。接下來,對通 過PI方向中的錯誤校正獲得的校正的值執(zhí)行檢驗計算,以生成第二采樣值。將獲得的第一 和第二采樣值相互進行比較易生成第一校驗值。此外,在不同于PI方向的PO方向(穿過 扇區(qū)延伸的列方向)中,對基本數據執(zhí)行錯誤校正,其中,在所述基本數據上執(zhí)行了在PI方 向中的錯誤校正。沿著PI方向,對通過在PO方向中的錯誤校正而獲得的已校正的值執(zhí)行 檢驗計算,以生成第三采樣值。然后,獲得的第一和第三采樣值相互進行比較,以生成用于 在前述的第二方向(P0方向)中檢驗錯誤校正的第二校驗值。注意的是,在專利文獻2中,為了通過減少基本數據被讀出的次數來縮短要求用于校正檢驗的時間,當要獲得第三采樣值時,在PI方向中執(zhí)行檢驗計算之前執(zhí)行分類,以有助于沿著PI方向中的計算。
發(fā)明內容
本發(fā)明人已經發(fā)現如下的問題,即,在專利文獻1中,為RAM中的程序數據和頁緩 沖器中的程序數據中的每一個執(zhí)行一次CRC計算,并且然后對CRC計算結果相互比較,以確 定在頁緩沖器中是否進行了篡改。然而,對相同的程序僅執(zhí)行一次CRC計算。因此,如果生 成器多項式被泄漏,那么通過對程序的一部分(生成器多項式的位長度)進行操作,能夠獲 得唯一的CRC計算結果。因此,現有技術中的上述程序驗證方法具有如下的問題,即,被存 儲在安全數據存儲500中的程序易受到篡改的攻擊。此外,在專利文獻2中公布的方法中,每次在錯誤校正之前,在PI方向中的錯誤校 正之后,以及在PO方向中的錯誤校正之后,執(zhí)行檢驗計算。像這樣的處理能夠檢驗是否正 確地執(zhí)行了錯誤校正。然而,在專利文獻2中,由于在數據校正之前和之后執(zhí)行檢驗計算, 所以首先,對其執(zhí)行計算的數據是不同的。此外,檢驗計算的方向總是被固定在PI方向。 因此,即使在專利文獻2的校正檢驗方法中,如果生成器多項式被泄漏,并且從而程序被篡 改,那么在原則上不可能檢驗出此篡改。本發(fā)明的第一示例性方面是程序驗證裝置,該程序驗證裝置通過執(zhí)行CRC計算來 執(zhí)行程序驗證,包括循環(huán)數目邏輯,該循環(huán)數目邏輯使CRC計算執(zhí)行至少兩次并且確定循 環(huán)的數目;和計算順序邏輯,該計算順序邏輯改變用于CRC計算的每個循環(huán)的CRC計算的計 算順序。本發(fā)明的另一示例性方面是通過執(zhí)行CRC計算來執(zhí)行程序驗證的程序驗證方法, 包括使CRC計算至少執(zhí)行兩次;確定CRC計算的循環(huán)的數目;以及改變用于CRC計算的每 個循環(huán)的CRC計算的計算順序。通過像這樣的構造,能夠構造使得由于計算順序中的不同,在第一循環(huán)和第二循 環(huán)以及后續(xù)循環(huán)之間的CRC計算結果是不同的,并且由于對相同的對象執(zhí)行CRC計算,每 個CRC計算結果當中存在相關性。這樣,即使生成器多項式被泄露,并且從而程序的一部分 (生成器多項式的位長度)被篡改,根據本發(fā)明的示例性方法的程序驗證大多數時間能夠 檢測諸如篡改的非法行為,并且從而使不可能進行非法行為。
結合附圖,從某些示例性實施例的以下描述中,以上和其它示例性方面、優(yōu)點和特 征將更加明顯,其中圖1是程序驗證的電路圖;圖2是程序驗證的流程圖;圖3示出了緩沖存儲器的構造示例;圖4示出了現有技術中的智能卡;圖5是通過現有技術中的智能卡控制單元進行的程序驗證的電路圖;以及圖6是通過現有技術中的智能卡控制單元進行的程序驗證的流程圖。
具體實施例方式在下文中參考附圖解釋本發(fā)明的示例性實施例。[第一示例性實施例]圖1是程序驗證裝置的電路圖。在附圖中,相同的標記被分配給與圖5的相同的部件,并且省略它們的解釋。圖1具有如下的構造使得添加了循環(huán)數目邏輯700和計算順 序邏輯800,并且以圖5中的執(zhí)行控制邏輯910替代隨機延遲控制邏輯110。循環(huán)數目邏輯700包括循環(huán)數目計數器701、循環(huán)數目設置部件702、以及循環(huán)數 目確定電路703。循環(huán)數目計數器701計數計算循環(huán)的數目。通過對來自于循環(huán)數目確定電路703 的重新執(zhí)行指令進行計數,來執(zhí)行循環(huán)數目的計數。稍后解釋此點的詳細情況。然后,循環(huán) 數目計數器701將指示計算循環(huán)的數目的循環(huán)數目信號10輸出至循環(huán)數目確定電路703 和計算順序設置部件801。在循環(huán)數目設置部件702中事先設置計算循環(huán)應重復的次數。循環(huán)數目設置部件 702通過循環(huán)數目設置信號11將設置的循環(huán)數目提供給循環(huán)數目確定電路703。循環(huán)數目確定電路703接收來自于比較器160的指示校驗和值的匹配比較結果的 信號FMTC,并且將計算重新執(zhí)行信號12輸出到循環(huán)數目計數器701和執(zhí)行控制邏輯910。計算順序邏輯800包括計算順序設置部件801、地址生成電路802、以及數據排列 位置改變電路803。計算順序設置部件801將地址順序信號13和數據順序信號14分別輸 出至地址生成電路802和數據排列位置改變電路803。在計算順序設置部件801中事先設 置計算順序參數,利用所述計算順序參數來對每個循環(huán)執(zhí)行CRC計算。計算順序參數是由 地址順序和數據順序組成。地址順序是由開始地址、結束地址、以及地址更新過程組成。地址生成電路802接收來自于數據復制和控制邏輯130的指示CRC計算的執(zhí)行開 始的信并且還接收來自于計算順序設置部件801的地址順序信號13。此外, 地址生成電路802將指示讀取地址的地址信號15輸出至緩沖存儲器120。數據排列位置改變電路803接收作為從緩沖存儲器120讀出的數據的讀取數據信 號16。此外,數據排列位置改變電路803將計算數據信號17輸出至CRC計算邏輯140,所 述計算數據信號17是對其改變排列位置的數據。圖2是根據本發(fā)明的本示例性實施例的程序驗證方法的流程圖。在下文中參考圖 2解釋圖1的操作。注意的是,相同的標記被分配給與圖6的相同的部件,并且省略了它們 的解釋。在本示例性實施例中,以循環(huán)的形式重復從步驟FlOl到步驟F206執(zhí)行的CRC計 算。在此處理中,對于每個循環(huán)改變計算順序(步驟F200)。在本示例性實施例中,在步驟FlOO和FlOl之后并且在CRC計算的執(zhí)行被指示之 前,改變計算順序(步驟F200)。計算順序設置部件801接收來自于循環(huán)數目計數器701的 循環(huán)數目信號10。然后,讀出由為每個循環(huán)設置的數據順序和地址順序組成的計算順序參 數,并且將地址順序和數據順序改變?yōu)樽x出值(步驟F200)。計算順序設置部件801將地 址順序信號13和數據順序信號14分別輸出至地址生成電路802和數據排列位置改變電路 803。接下來,在下文中解釋到用于獲得第一校驗和值的CRC計算步驟(步驟F103)的步驟。地址生成電路802響應于指示CRC計算的執(zhí)行開始的信來開始操作。地 址生成電路802根據地址順序信號13生成緩沖存儲器120的讀取地址。讀取地址從開始 地址開始,當根據地址更新過程從緩沖存儲器120中讀出數據時進行更新,并且當變成結 束地址時結束(步驟F201)。地址被作為地址信號15輸出至緩沖存儲器120。數據排列位置改變電路803根據數據順序信號14改變從緩沖存儲器120讀出的 讀取數據信號16的數據位的排列位置。數據排列位置改變電路803將已改變的數據作為 計算數據信號17輸出至CRC計算邏輯140 (步驟F202)。CRC計算邏輯140執(zhí)行CRC計算 (步驟 F103)。接下來,用于獲得第二校驗和值的CRC計算的操作與用于獲得第一校驗和值的 CRC計算的操作相同,并且因此省略其詳細解釋。注意的是,在用于獲得第二校驗和值的CRC計算中,通過地址生成電路802的地址 生成(步驟F203)和通過數據排列位置改變電路803的數據排列位置改變分別對應于步驟 F201和F202,所述步驟F201和F202是用于獲得第一校驗和值的步驟。所獲得的校驗和值通過CRC寄存器150被傳輸到比較器160,并且在比較器160中 進行比較(步驟F107)。在下文中解釋確定循環(huán)的數目的操作。當它們匹配(步驟F108:是)時,比較器 160將信號(FMTC)輸出至循環(huán)數目確定電路703。當循環(huán)數目確定電路703接收來自于比 較器160的指示校驗和值的匹配比較結果的信號FMTC時,通過將計算循環(huán)數目信號10與 計算循環(huán)數目設置信號11進行比較,循環(huán)數目確定電路703確定CRC計算的循環(huán)數目是否 達到預定的數目(步驟F205)。當已經達到預定的數目(步驟F206:是)時,循環(huán)數目確 定電路703完成處理,然而當沒有達到預定的數目(步驟F206:否)時,循環(huán)數目確定電路 703輸出CRC計算重新執(zhí)行信號12,以繼續(xù)進行CRC計算。注意的是,循環(huán)數目計數器701 接收重新執(zhí)行信號12,并且更新循環(huán)的數目。在第二循環(huán)的CRC計算中,在步驟F200中,計算順序設置部件801根據循環(huán)的當 前數目改變CRC計算的計算順序(步驟F200)。這樣,第二循環(huán)中的CRC計算的計算順序與 第一循環(huán)中的計算順序發(fā)生改變。其它的操作與第一循環(huán)中的CRC計算的相類似。本發(fā)明的本示例性實施例包括循環(huán)數目邏輯700,該循環(huán)數目邏輯700確定CRC 計算的循環(huán)的數目;計算順序邏輯800,該計算順序邏輯800改變用于CRC計算的每個循環(huán) 的計算順序;以及執(zhí)行控制邏輯910。循環(huán)數目邏輯700使得能夠多次地執(zhí)行CRC計算,并 且計算順序邏輯800使得能夠生成用于存儲器120的地址并且重新排列讀出數據。結果, 能夠構造為使得由于計算順序中的改變,在第一循環(huán)中的CRC計算結果和后續(xù)的循環(huán)中的 CRC計算結果之間,CRC計算結果是不同的;并且使得因為對相同的對象執(zhí)行CRC計算,所以 在每個CRC計算結果當中存在相關性。因此,根據本示例性實施例中,即使生成器多項式被 泄漏,篡改程序的一部分(生成器多項式的位長度)也基本上是不可能的。關于根據本示例性實施例的計算順序和緩沖存儲器的構造,在下文中通過使用具體的示例來解釋操作。為了便于解釋,進行下述假定。對于緩沖存儲器120的構造,通過示 例來定義由位寬度和字數指定的存儲大小、以及地址范圍。在此示例中,通過示例定義從0 到7的地址范圍和具有32位寬度的8字的32字節(jié)。圖3是上面定義的緩沖存儲器120的構造示例。在圖3中,DO至D31表示與地址O至7相對應的字節(jié)數據。地址O的數據是由字節(jié)數據D3、D2、Dl以及DO組成的32位數 據。此外,以與圖3中所示的相似方式來構造地址1至6的數據。注意的是,地址7的數據 是由字節(jié)數據D31、D30、D29以及D28組成的32位數據。至于生成器多項式,通過示例來定義成為要被計算和要被輸入至CRC計算邏輯 140的對象的數據位寬度、CRC數據的位寬度、以及從CRC計算邏輯140輸出的CRC數據的 位寬度。進行如下的假定目標數據寬度是8位;CRC32(32位)被輸入;并且CRC32 (32位)被輸出。假定CRC計算的循環(huán)的設置數目為兩次。至于CRCl計算地址順序,通過示例來定義在第一循環(huán)中的CRC計算開始的緩沖存 儲器的開始地址,和CRC計算結束的緩沖存儲器的結束地址。通過示例,地址0被定義為開 始地址并且地址7被定義為結束地址。至于地址更新過程,假定地址以2來遞增。此外,僅 當地址是6時,下一個地址變成1。至于CRC2計算地址順序,通過示例來定義在第二循環(huán)中的CRC計算開始的緩沖存 儲器的開始地址,和CRC計算結束的緩沖存儲器的結束地址。通過示例,地址1被定義為開 始地址并且地址6被定義為結束地址。至于地址更新過程,假定地址以2來遞增。此外,僅 當地址是7時,下一個地址變成0。至于CRCl計算數據順序,通過示例來定義根據其來改變在第一循環(huán)中從緩沖存 儲器120讀出的數據的排列位置的順序。假定從緩沖存儲器120讀出的數據(32位)的排 列位置從B3、B2、B1、B0重新排列為B2、B3、B0、B1。至于CRC2計算數據順序,通過示例來定義根據其來改變在第二循環(huán)中從緩沖存 儲器120讀出的數據的排列位置的順序。假定從緩沖存儲器120讀出的數據(32位)的排 列位置從B3、B2、B1、B0重新排列為B3、B1、B2、B0。注意的是,上述排列位置B3、B2、B1以及BO中的每一個表示字節(jié)數據。當通過位 位置來表示排列位置的每一個時,排列位置B3是位位置31位至24位;排列位置B2是位位 置23位至16位;排列位置Bl是位位置15位至8位;并且排列位置BO是位位置7位至0 位。在下文中,在這些假定的條件下解釋操作。第一循環(huán)中的緩沖存儲器地址從地址 0開始,以兩個字來遞增,即,遞增到地址2、4。然后,當地址變成地址6時,下一個地址變成 地址1。然后,地址以2個字遞增,即,被遞增到地址3、5。然后,當地址變成地址7時,CRC 計算完成。第二循環(huán)中的緩沖存儲器地址從地址1開始,以兩個字遞增,即,被遞增到地址3、 5。然后,當地址變成地址7時,下一個地址被設置為地址0。然后,地址以2個字來遞增, 艮口,被遞增到地址2、4。然后,當地址變成地址6時,CRC計算完成。因此,第一循環(huán)中的緩沖存儲器地址按照地址0、2、4、6、1、3、5、7的順序改變,并 且第二循環(huán)中的緩沖存儲器地址按照地址1、3、5、7、0、2、4、6的順序改變。同時,第一循環(huán)中的數據排列位置是以B2、B3、BO、Bl的形式,并且第二循環(huán)中的 數據排列位置是以B3、Bi、B2、BO的形式。因此,根據上述組合,CRC計算的第一循環(huán)中的計算數據的排列位置被表達為字節(jié) 數據
D2, D3, DO, Dl, DlO, Dll, D8, D9, D18, D19, D16, D17, D26, D27, D24, D25, D6, D7, D4, D5, D14, D15, D12, D13, D22, D23, D20, D21, D30, D31, D28, D29。此外,CRC計算的第二循環(huán)中的計算數據的排列位置被表達為字節(jié)數據D7, D5, D6, D4, D15, D13, D14, D12, D23, D21, D22, D20, D31, D29, D30, D28, D3, Dl, D2, DO, Dll, D9, D10, D8, D19, D17, D18, D16, D27, D25, D26, D24。在上述具體示例中,由于在第一循環(huán)的CRC計算與第二循環(huán)的CRC計算之間要被計算的數據的排列不同,所以計算結果也不同。同時,第一循環(huán)中的CRC計算與第二循環(huán)中 的CRC計算僅在它們的計算順序中不同,并且因此對其執(zhí)行CRC計算的對象(字節(jié)數據DO 至D31)彼此相同。因此,即使通過對程序的一部分(生成器多項式的位長度)進行操作以 企圖進行篡改,使得第一循環(huán)中的CRC計算結果匹配,但是第二循環(huán)中的CRC計算結果也不 匹配。因此,在多數情況下能夠檢測到是否已經篡改數據。即使生成器多項式被泄漏,并且 從而程序的一部分(生成器多項式的位長度)被篡改,在多數情況下也能夠檢測到篡改。因 此,不能夠通過非法操作逃避根據本發(fā)明的本示例性實施例的程序驗證。此外,在用于從緩 沖存儲器120中讀出數據的地址生成中,通過將開始地址、結束地址、以及地址更新過程設 置為不同的值,能夠容易地創(chuàng)建多個組合。根據具有像這樣的結構的本發(fā)明的本示例性實施例,能夠實現以下有利的效果。(1)作為第一有利效果,即使生成器多項式被泄露,并且從而程序的一部分(生成 器多項式的位長度)被篡改,在多數情況下根據本示例性實施例的程序驗證也能夠檢測此 種非法操作。即,基于被泄露的生成器多項式通過操作程序的一部分(生成器多項式的位 長度)進行的該種類型的篡改,基本上是不可能的。這是因為能夠構造為使得由于計算順 序中的不同,在第一循環(huán)中的CRC計算結果和后續(xù)的循環(huán)中的CRC計算結果之間,CRC計算 結果是不同的,并且由于對相同的對象執(zhí)行CRC計算所以在每個CRC計算結果當中存在相 關性。(2)作為第二有利效果,能夠容易地改變用于從緩沖存儲器中讀出數據的地址生 成的組合。這是因為通過將開始地址、結束地址、以及地址更新過程設置為不同的值能夠創(chuàng) 建多個組合。(3)作為第三有利效果,能夠容易地改變從緩沖存儲器120讀出的數據的排列位 置。這是因為當要改變數據的排列位置時,能夠通過使用從多個字節(jié)單位到位單位的各種 不同的數據單位來進行設置。(4)作為第四有利效果,即使計算順序被泄露,也能夠容易地改變計算順序和計算 的數目。這是因為計算順序和計算的數目不是通過硬件固定的,使得甚至能夠從外部設備 對其進行設置。注意的是,本發(fā)明不限于上述示例性實施例,并且在不脫離本發(fā)明的精神和范圍 的情況下能夠進行各種不同的修改。關于利用其來執(zhí)行處理的數據的單位,盡管示出的是 其中基于一個字節(jié)改變數據排列位置的示例,但是不言而喻的是,能夠使用任何給定數目 的位的單位。類似地,循環(huán)設置數目、數據排列順序、以及其它參數也不限于上述具體示例??刂茊卧梢园–PU (中央處理單元),該CPU執(zhí)行控制處理、算術處理等等; ROM(只讀存儲器),該ROM存儲由CPU執(zhí)行的控制程序、計算程序等等;RAM(隨機存取存儲 器),該RAM暫時地存儲處理數據等等。利用這些組件,通過預定的程序,控制單元可以用作循環(huán)數目邏輯和計算順序邏輯,并且使得上述示例性實施例描述的步驟中的每一個被執(zhí) 行。盡管在上述示例性實施例和具體示例中示出在其中嵌入安全數據存儲(存儲器)的智能卡的示例作為程序驗證裝置,但是本發(fā)明不限于在其中嵌入安全數據存儲(存儲 器)的此種智能卡(存儲器卡和IC卡)。S卩,不管安全數據存儲(存儲器)的存在/不存 在,根據本發(fā)明的示例性方面的程序驗證裝置被廣泛地應用于執(zhí)行程序驗證的裝置。此外,盡管在上述示例性實施例和具體示例中示出了如下的示例,其中,當程序數 據要被存儲在安全數據存儲中時,通過對程序數據執(zhí)行CRC計算而獲得的第一校驗和值與 通過對被傳輸到安全數據存儲的程序數據執(zhí)行CRC計算而獲得的第二校驗和值進行比較, 以基于它們的匹配/不匹配來執(zhí)行程序驗證,但是,CRC計算結果的比較方法不限于此方 法。例如,替代獲得第一校驗和值,可以準備預計算的驗證碼(期望值)。然后,第二校驗和 值可以與此驗證碼進行比較。盡管基于對程序數據進行暫時地保留的緩沖存儲器和對CRC計算結果進行暫時 地保留的寄存器(CRC寄存器)是分離的電路的假設,示出上述示例性實施例,但是根據本 發(fā)明的示例性方面的程序驗證裝置可以包括數據保留電路,該數據保留電路用作這些功能 單元的組合單元,并且對用于程序驗證的必要數據進行保留。雖然已經按照若干示例性實施例描述了本發(fā)明,但是本領域的技術人員將理解本 發(fā)明可以在所附的權利要求的精神和范圍內進行各種修改的實踐,并且本發(fā)明并不限于上 述的示例。此外,權利要求的范圍不受到上述的示例性實施例的限制。此外,應當注意的是,申請人意在涵蓋所有權利要求要素的等同形式,即使在后期 的審查過程中對權利要求進行過修改亦是如此。
權利要求
一種通過執(zhí)行CRC計算來執(zhí)行程序驗證的程序驗證裝置,包括循環(huán)數目邏輯,所述循環(huán)數目邏輯使所述CRC計算被執(zhí)行至少兩次,并且確定其循環(huán)的數目;和計算順序邏輯,所述計算順序邏輯改變用于所述CRC計算的每個循環(huán)的CRC計算的計算順序。
2.根據權利要求1所述的程序驗證裝置,其中,所述循環(huán)數目邏輯包括 循環(huán)數目計數器,所述循環(huán)數目計數器對所述CRC計算的循環(huán)的數目進行計數; 循環(huán)數目設置部件,所述循環(huán)數目設置部件保持指示CRC計算的循環(huán)的預定數目的參數;以及循環(huán)數目確定電路,所述循環(huán)數目確定電路確定循環(huán)的數目是否已經達到預定數目。
3.根據權利要求1所述的程序驗證裝置,其中,所述計算順序邏輯包括數據排列位置 改變電路,所述數據排列位置改變電路改變用于每個循環(huán)的數據排列順序。
4.根據權利要求1所述的程序驗證裝置,進一步包括數據保留電路,所述數據保留電 路對程序驗證中的數據進行保留,其中,所述計算順序邏輯包括地址生成電路,所述地址生成電路為每個循環(huán)改變來自 于所述數據保留電路的讀取地址。
5.根據權利要求4所述的程序驗證裝置,其中,所述地址生成電路為每個循環(huán)改變開 始地址、結束地址、以及更新過程中的至少一個。
6.一種通過執(zhí)行CRC計算來執(zhí)行程序驗證的程序驗證方法,包括 使所述CRC計算被執(zhí)行至少兩次;確定所述CRC計算的循環(huán)的數目;以及為所述CRC計算的每個循環(huán)改變CRC計算的計算順序。
7.根據權利要求6所述的程序驗證方法,其中,為所述CRC計算的每個循環(huán)改變CRC計 算的計算順序包括為每個循環(huán)生成用于數據保留電路的讀取地址,所述數據保留電路被構造為對程序驗 證中的數據進行保留;以及為每個循環(huán)改變從所述數據保留電路讀出的數據的排列位置。
全文摘要
本發(fā)明用于提供能夠在多數情況下檢測非法行為的程序驗證裝置及其方法。當程序數據要被存儲在安全數據存儲中時,通過對程序數據執(zhí)行CRC計算來獲得第一校驗和值。此外,通過對被傳輸到安全數據存儲的程序數據執(zhí)行CRC計算來獲得第二校驗和值。通過比較這些校驗和值來執(zhí)行程序驗證。循環(huán)數目邏輯(700)使CRC計算被執(zhí)行至少兩次,并且確定循環(huán)的數目。計算順序邏輯(800)改變用于CRC計算的每個循環(huán)的CRC計算的計算順序。
文檔編號G06F11/10GK101840361SQ20101012998
公開日2010年9月22日 申請日期2010年3月9日 優(yōu)先權日2009年3月17日
發(fā)明者森川健志 申請人:恩益禧電子股份有限公司