專利名稱:程序變換裝置和秘密保持程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種將保持并執(zhí)行秘密信息的程序變換為難以對秘 密信息進行非法解析的程序的技術(shù)。
背景技術(shù):
以前,要求使用秘密要素進行處理的程序不想讓非法解析者解 析。這種程序中有例如加密程序。加密程序使用作為秘密信息的加密 密鑰進行處理,但期望其不被解析。
另外,例如是執(zhí)行圖像中埋入的拷貝控制信息的水印檢測的程 序。在水印檢測程序的處理被非法解析者解析的情況下,擔(dān)心制作去 除圖像中埋入的水印的工具。從而,期望非法解析者難以解析這種程 序。對于這種期望,例如有對程序進行加密、在執(zhí)行時解密后執(zhí)行該 程序的方法。但是,即使使用這種方法,也由于程序在執(zhí)行時在存儲 器上變?yōu)槊魑?,所以存在提取并解析存儲器上的程序的威協(xié)。針對這 種威協(xié),若難以對提取出的程序中包含的程序指令群按什么樣的執(zhí)行 順序執(zhí)行進行解析,則難以制作去除水印的工具。
以前,作為防止使用秘密要素進行處理的程序的非法解析/篡改
用的方法,考慮如下程序難破解化(obfiiscation)方法,即通過將程序 的控制構(gòu)造/處理等變換為與原來程序不同的形式,將控制構(gòu)造變復(fù) 雜,變?yōu)榻馕隼щy的程序(例如參照非專利文獻(xiàn)1)。
在非專利文獻(xiàn)1中,公開了通過將包含秘密信息的程序指令置換 為多個程序指令群、使程序難以破解的方法。例如,在M0=1234' 的程序指令中,'1234'為被隱匿信息的情況下,將<(10=1234'的 程序指令置換為M0=10(T 、'dO=dOX2' 、M0=d0+30,、 ^()=(10+1000, 、 <dO=dO+4,這樣的程序指令群,將它們分散配置。 若使用這種方法,貝卿使收集程序中存在的常數(shù)數(shù)據(jù),也不能從中發(fā) 現(xiàn)被隱匿信息。
但是,若知道程序中包含的各指令群的執(zhí)行順序,則非法解析者
可根據(jù)該執(zhí)行順序,通過算出d0的值,發(fā)現(xiàn)被隱匿信息。
因此,以前作為將程序的執(zhí)行順序的解析變困難的方法,有如下
方法,即使用根據(jù)表示執(zhí)行的指令群的值來確定分支目的地的分支
指令(例如switch語句)與陣列(army),控制各指令群的執(zhí)行順序(非專 利文獻(xiàn)2)。此時,原始程序中包含的多個指令群(例如為指令群1 3, 按該順序來執(zhí)行。),與表示執(zhí)行的指令群的值1對1對應(yīng),另外, 在指令群1~3的最后,插入程序指令,該程序指令利用使用了陣列的 運算式算出表示接著執(zhí)行的指令群的值、并將算出的值存儲在switch 語句中使用的變量Var中。若將陣列的個數(shù)設(shè)為10,則插入的程序 指令一例為Var=g [3] +g [4]。
由此,即使替換指令群1~3的配置順序,也可利用switch語句, 將執(zhí)行順序保持正當(dāng)不變。另外,通過替換指令群1~3的配置順序, 可使原始程序的構(gòu)造解析變困難。即,可使水印的檢測程序的解析或 被隱匿信息的取得變困難。
非專利文獻(xiàn)l:鴨志田、松本、井上,"耐夕y^—V:7卜夕工 7(D構(gòu)成手法C関卞^)考察",ISEC97-59
非專禾!j文獻(xiàn)2 : Chenxi Wang, "A Security Architecture for Survivability Mechanisms", Ph.D. Dissertation (2000)
但是,插入各指令群最后的程序指令與陣列中存儲的各數(shù)據(jù)例如 有可能從計算機裝置的存儲區(qū)域取得。因此,若非法解析者知道l插 入各指令群最后的程序指令與陣列中存儲的各數(shù)據(jù),則非法解析者取
得switch語句中使用的變量的值,可再構(gòu)成原始程序的控制構(gòu)造,可
容易地執(zhí)行原始程序的解析。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于提供一種生成非法解析者不能容易解析 原始程序的秘密保持程序的程序變換裝置、執(zhí)行所述秘密保持程序的 秘密處理裝置、變換方法、和秘密處理方法。為了實現(xiàn)上述目的,本發(fā)明是一種程序變換裝置,根據(jù)原始程序 生成秘密保持程序,其特征在于具備程序取得部件,取得原始程 序;選擇對象數(shù)據(jù)生成部件,生成通過按規(guī)定順序處理、輸出與所述 原始程序相同的執(zhí)行結(jié)果、并對應(yīng)了不同選擇識別符的多個選擇對象 數(shù)據(jù);預(yù)處理指令群生成部件,生成將值代入多個選擇參數(shù)的每個中 的預(yù)處理指令群;選擇處理指令群生成部件,根據(jù)使用了所述多個選 擇參數(shù)的運算式,生成選擇處理指令群,該選擇處理指令群包含取得 表示接著處理的選擇對象數(shù)據(jù)的選擇識別符的指令群;更新處理指令 群生成部件,生成更新處理指令群,該更新處理指令群使選擇參數(shù)的 值,反映表示過去處理的選擇對象數(shù)據(jù)的選擇識別符、或過去代入所 述選擇參數(shù)中的1個以上選擇參數(shù)值中的至少1個選擇參數(shù)的值;和 秘密保持程序生成部件,生成包含所述預(yù)處理指令群、所述處理選擇 指令群、所述更新處理指令群、所述多個選擇對象數(shù)據(jù)的秘密保持程 序,該秘密保持程序重復(fù)進行執(zhí)行所述處理選擇指令群的處理、處理 由所述選擇處理指令群取得的選擇識別符表示的選擇對象數(shù)據(jù)的處 理、和若處理所述選擇對象數(shù)據(jù)則執(zhí)行所述更新處理指令群的處理。
發(fā)明效果
根據(jù)上述所示的構(gòu)成,由程序變換裝置生成的秘密保持程序當(dāng)更 新運算式的所述多個選擇參數(shù)時,使選擇參數(shù)值反映表示過去處理的 選擇對象數(shù)據(jù)的選擇識別符、或過去代入所述運算式中的1個以上選 擇參數(shù)值中的至少1個選擇參數(shù)值。以前,當(dāng)確定接著應(yīng)執(zhí)行的塊時, 使用存儲多個固定值的陣列,但由本發(fā)明的程序變換裝置生成的秘密 保持程序在確定接著應(yīng)執(zhí)行的塊之后,始終更新運算式中使用的選擇 參數(shù),所以難以確定存儲在多個選擇參數(shù)中的值。因此,非法解析者 不能容易地解析原始程序。
這里,也可以是,所述規(guī)定順序是向所述多個選擇參數(shù)賦予規(guī)定 的初始值、通過重復(fù)執(zhí)行所述選擇處理指令群和所述更新處理指令 群、從而依次算出的選擇識別符的順序。
根據(jù)該構(gòu)成,程序變換裝置在向各選擇參數(shù)賦予規(guī)定的初始值的 情況下,可生成輸出與原始程序相同執(zhí)行結(jié)果的秘密保持程序。 這里,也可以是,所述多個選擇對象數(shù)據(jù)的每個由1個以上的數(shù) 據(jù)構(gòu)成。
根據(jù)該構(gòu)成,程序變換裝置可生成將選擇對象數(shù)據(jù)處理為數(shù)據(jù)的 秘密保持程序。
這里,也可以是,所述原始程序具有應(yīng)隱匿的秘密信息,所述選 擇處理指令群生成部件生成選擇處理指令群,該選擇處理指令群由通 過使用所述多個選擇參數(shù)的第1運算式來算出所述選擇識別符的指 令群構(gòu)成,所述更新處理指令群生成部件生成更新處理指令群,該更 新處理指令群根據(jù)由所算出的所述選擇識別符表示的選擇對象數(shù)據(jù) 的值,更新所述多個選擇參數(shù),所述程序變換裝置還具備變遷處理 指令群生成部件,生成變遷處理指令群,該變遷處理指令群利用使用 了更新后的多個選擇參數(shù)的第2運算式,算出與所述秘密信息相同的 值,所述秘密保持程序生成部件,將生成的變遷處理指令群配置在所 述更新處理指令群的配置位置與所述秘密信息的配置位置之間,并置 換成由所述變遷處理指令群算出所述秘密信息的處理。
根據(jù)該構(gòu)成,由于程序變換裝置生成的秘密保持程序利用所述選 擇處理指令群、所述更新處理指令群和所述變遷處理指令群來隱匿算 出與秘密信息相同值的方法,所以非法解析者難以解析秘密信息。
這里,也可以是,程序變換裝置還具備分割部件,將所述原始程 序分割成1個以上的塊,所述多個選擇對象數(shù)據(jù)的每個包含不同的 塊。
根據(jù)該構(gòu)成,程序變換裝置可生成將選擇對象數(shù)據(jù)處理為從原始 程序分割的塊的秘密保持程序。
這里,也可以是,所述多個選擇參數(shù)是從第1到第n的選擇參數(shù), 所述更新處理指令群生成部件生成更新處理指令群,該更新處理指令 群對于所述多個選擇對象數(shù)據(jù)的每個,將存儲在第j-l選擇參數(shù)中的 值存儲到第j選擇參數(shù),將常數(shù)值存儲在第l選擇參數(shù)中,其中j是 2以上n以下的整數(shù)。
根據(jù)該構(gòu)成,程序變換裝置生成的秘密保持程序可使過去代入所 述運算式的1個以上選擇參數(shù)值中的至少1個選擇參數(shù)值得以反映
地,更新所述多個選擇參數(shù)值。
這里,也可以是,所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以
上構(gòu)成的規(guī)定數(shù)量,所述運算式對所述第1到第n的選擇參數(shù)的每個, 算出Pix第i選擇參數(shù),將算出的結(jié)果分別相加,對加法結(jié)果實施以 所述規(guī)定數(shù)量為模數(shù)值N的模數(shù)運算,算出選擇識別符,其中i是l 以上n以下的整數(shù),Pi與模數(shù)值N互質(zhì)。
根據(jù)該構(gòu)成,程序變換裝置可使用運算式來可靠地確定選擇對象
、J,f 「 1-口數(shù)據(jù)。
這里,也可以是,選擇對象數(shù)據(jù)生成部件具備存儲部,存儲當(dāng) 前時刻之前由所述運算式算出的選擇識別符的每個;執(zhí)行部,對l個 塊選擇1個值,將存儲在第j-l選擇參數(shù)中的值存儲到第j選擇參數(shù), 將選擇到的值存儲在第l選擇參數(shù)中,執(zhí)行所述運算式,其中j是2 以上n以下的整數(shù);判斷部,判斷與算出的算出值相同的選擇識別符 是否存儲在所述存儲部中;存儲部,在判斷結(jié)果為否定的情況下,將 所述選擇到的1個值確定為對所述1個塊的所述常數(shù)值,并將所述1 個塊存儲在所算出的算出值表示的選擇對象數(shù)據(jù)中;和重復(fù)控制部, 在判斷結(jié)果為肯定的情況下,確定所述常數(shù)值,并進行控制,使得在 1個塊被存儲在選擇對象數(shù)據(jù)之前的期間中,重復(fù)所述執(zhí)行部與所述 判斷部的處理,對全部塊執(zhí)行所述選擇對象數(shù)據(jù)生成部件的處理。
根據(jù)該構(gòu)成,程序變換裝置可使用更新處理指令群的運算式,在 確定存儲下一塊的選擇對象數(shù)據(jù)的情況下,更新所述多個選擇參數(shù), 以變?yōu)榇饲拔创鎯Φ倪x擇對象數(shù)據(jù)。由此,生成的秘密保持程序可利 用使用了多個選擇參數(shù)的運算式來可靠地確定接著應(yīng)執(zhí)行的塊,所以 可提供與原始程序同等的功能。
這里,也可以是,所述選擇處理指令群生成部件生成選擇處理指 令群,該選擇處理指令群始終取得表示未執(zhí)行的選擇對象數(shù)據(jù)的識別 符。
根據(jù)該構(gòu)成,程序變換裝置生成的秘密保持程序可始終取得包含 未執(zhí)行的塊的選擇對象數(shù)據(jù)。另外,秘密保持程序由于利用選擇處理 指令群,始終將不同的選擇對象數(shù)據(jù)設(shè)為接著應(yīng)執(zhí)行的選擇對象數(shù) 據(jù),所以非法解析者難以確定正確的執(zhí)行順序。
這里,也可以是,所述選擇處理指令群生成部件生成選擇處理指 令群,該選擇處理指令群使用表示對所述多個選擇對象數(shù)據(jù)的每個是 否已執(zhí)行完的管理信息,取得表示是未執(zhí)行的選擇對象數(shù)據(jù)的識別 符。
根據(jù)該構(gòu)成,程序變換裝置生成的秘密保持程序可使用管理信 息,始終取得包含未執(zhí)行的塊的選擇對象數(shù)據(jù)。
這里,也可以是,所述多個選擇參數(shù)是從第1到第n的選擇參數(shù), 所述管理信息是表示對所述多個選擇對象數(shù)據(jù)的每個,在當(dāng)前時刻已 執(zhí)行完或未執(zhí)行中的某一個的狀態(tài)的排列表格,所述選擇對象數(shù)據(jù)的 個數(shù)是由所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù)量,所述選擇處理指令群生 成部件生成所述排列表格;所述運算式,對所述第l到第n的選擇 參數(shù)的每個算出Pix第i選擇參數(shù),將算出的結(jié)果分別相加,對加法 結(jié)果實施以所述規(guī)定數(shù)量為模數(shù)值N的模數(shù)運算,算出表示包含接 著應(yīng)執(zhí)行的塊的選擇對象數(shù)據(jù)的臨時的選擇識別符,其中i是1以上 n以下的整數(shù);和取得程序指令群,在由所述算出式算出的所述臨時 的選擇識別符所示的選擇對象數(shù)據(jù)在所述排列表格中表示未執(zhí)行的 情況下,將所述臨時的選擇識別符設(shè)為表示包含接著應(yīng)執(zhí)行的塊的選 擇對象數(shù)據(jù)的真選擇識別符,在表示已執(zhí)行完的情況下,根據(jù)取得未 執(zhí)行的選擇對象數(shù)據(jù)之前事先確定的選擇順序,取得臨時的選擇識別 符,所述選擇處理指令群包含所述排列表格、所述運算式、和所述取 得程序指令群,Pi與模數(shù)值N互質(zhì)。
根據(jù)該構(gòu)成,程序變換裝置生成的秘密保持程序可使用排列表 格,可靠地取得包含未執(zhí)行的塊的選擇對象數(shù)據(jù)。
這里,也可以是,所述更新處理指令群生成部件生成所述更新處 理指令群,該更新處理指令群將存儲在第j選擇參數(shù)中的值存儲到第 j-l選擇參數(shù),將所述選擇處理指令群取得的所述真選擇識別符存儲 到第n變量,其中j是2以上n以下的整數(shù)。
根據(jù)該構(gòu)成,程序變換裝置生成的秘密保持程序當(dāng)更新選擇參數(shù) 時,始終使選擇參數(shù)值反映表示過去處理的選擇對象數(shù)據(jù)的選擇識別
符、或過去代入所述運算式中的1個以上選擇參數(shù)值中的至少1個選 擇參數(shù)值,所以難以確定存儲在多個選擇參數(shù)中的值。
這里,也可以是,所述運算式是第1取得程序指令群,該第l取 得程序指令群使用表示1個選擇參數(shù)的索引,從所述多個選擇參數(shù)中 取得所述1個參數(shù),所述管理信息是排列表格,該排列表格對所述多 個選擇對象數(shù)據(jù)的每個,表示在當(dāng)前時刻已執(zhí)行完或未執(zhí)行中的某一 狀態(tài),所述選擇處理指令群生成部件生成所述第1取得程序指令群; 所述排列表格;和第2取得程序指令群,根據(jù)表示所述排列表格中未 執(zhí)行的1個以上選擇對象數(shù)據(jù)的選擇識別符的排列順序,取得按由所 述取得程序指令群取得的參數(shù)值所示的順序來配置的選擇識別符,所 述選擇處理指令群包含所述第1取得程序指令群、所述排列表格和所 述第2取得程序指令群。
根據(jù)該構(gòu)成,程序變換裝置生成的秘密保持程序可使用索引,取 得表示接著執(zhí)行的選擇對象數(shù)據(jù)的選擇識別符。
這里,也可以是,所述更新處理指令群生成部件生成將所述索引 的值遞增的所述更新處理指令群。
根據(jù)該構(gòu)成,程序變換裝置生成的秘密保持程序更新索引。非法 解析者即便知道某l個塊,也由于不知道索引值,所以不能確定接著 應(yīng)執(zhí)行的塊。因此,非法解析者不能容易地解析原始程序。
這里,也可以是,所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以 上構(gòu)成的規(guī)定數(shù)量,所述多個選擇參數(shù)是第1到第n的參數(shù),所述管 理信息是排列表格,該排列表格對所述多個選擇對象數(shù)據(jù)的每個,表 示在當(dāng)前時刻已執(zhí)行完或未執(zhí)行中的某一個的狀態(tài),所述選擇處理指 令群生成部件生成所述排列表格;所述運算式,對所述第l到第n 的選擇參數(shù)的每個算出Pix第i選擇參數(shù),將算出的結(jié)果分別相加, 對加法結(jié)果實施以所述規(guī)定數(shù)量為模數(shù)值N的模數(shù)運算,算出表示 包含接著應(yīng)執(zhí)行的塊的選擇對象數(shù)據(jù)的值,其中i是1以上n以下的 整數(shù);和取得程序指令群,根據(jù)在與所述排列表格相同的表格內(nèi)、表 示未執(zhí)行的1個以上選擇對象數(shù)據(jù)的選擇識別符的排列順序,取得按 由所述運算式算出的所述值表示的順序來配置的選擇識別符,所述選
擇處理指令群包含所述排列表格、所述運算式、和所述取得程序指令 群。
根據(jù)該構(gòu)成,程序變換裝置生成的秘密保持程序可可靠地取得包 含未執(zhí)行的塊的選擇對象數(shù)據(jù)。另外,秘密保持程序利用選擇處理指 令群,始終將不同的選擇對象數(shù)據(jù)設(shè)為接著應(yīng)執(zhí)行的選擇對象數(shù)據(jù), 所以非法解析者難以確定正確的執(zhí)行順序。
這里,也可以是,所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以 上構(gòu)成的規(guī)定數(shù)量,所述秘密保持程序生成部件還在所述多個塊的每 個包含于選擇對象數(shù)據(jù)中之后,在未包含塊的1個以上選擇對象數(shù)據(jù) 中,插入包含1個以上程序指令的偽塊。
根據(jù)該構(gòu)成,程序變換裝置生成的秘密保持程序包含偽塊,所以 非法解析者難以解析。
本發(fā)明是一種秘密處理裝置,通過對確定了處理順序的多個選擇 對象數(shù)據(jù)進行處理,執(zhí)行應(yīng)隱匿的秘密處理,其特征在于具備預(yù) 處理執(zhí)行部件,將值代入多個選擇參數(shù)的每個中;選擇處理執(zhí)行部件, 根據(jù)使用了所述多個選擇參數(shù)的運算式,取得表示接著處理的選擇對 象數(shù)據(jù)的選擇識別符;更新處理執(zhí)行部件,使選擇參數(shù)的值,反映表 示過去處理的選擇對象數(shù)據(jù)的選擇識別符、或過去代入所述選擇參數(shù) 中的1個以上選擇參數(shù)值中的至少1個選擇參數(shù)的值;和選擇對象數(shù) 據(jù)執(zhí)行部件,對由所述選擇處理執(zhí)行部件取得的選擇識別符表示的選 擇對象數(shù)據(jù)進行處理,在視為所述秘密保持程序結(jié)束之前,重復(fù)所述 選擇處理執(zhí)行部件、更新處理指令執(zhí)行部件、選擇對象數(shù)據(jù)執(zhí)行部件 進行的處理。
根據(jù)該構(gòu)成,秘密處理裝置當(dāng)更新運算式的所述多個選擇參數(shù) 時,使選擇參數(shù)值反映表示過去處理的選擇對象數(shù)據(jù)的選擇識別符、 或過去代入所述運算式中的1個以上選擇參數(shù)值中的至少1個選擇參 數(shù)值。以前,當(dāng)確定接著應(yīng)執(zhí)行的塊時,使用存儲多個固定值的陣列, 但本發(fā)明的秘密處理裝置在確定接著應(yīng)執(zhí)行的選擇對象數(shù)據(jù)之后,始 終更新運算式中使用的選擇參數(shù),所以難以確定存儲在多個選擇參數(shù) 中的值。因此,非法解析者不能容易地解析秘密處理。
這里,也可以是,所述多個選擇對象數(shù)據(jù)的每個由1個以上的數(shù) 據(jù)構(gòu)成。
根據(jù)該構(gòu)成,秘密處理裝置可將選擇對象數(shù)據(jù)處理為數(shù)據(jù)。
這里,也可以是,所述秘密處理是代替使用應(yīng)隱匿的秘密信息、 實施規(guī)定處理后算出所述秘密信息的處理,所述選擇處理執(zhí)行部件利 用使用了所述多個選擇參數(shù)的運算式,算出所述選擇識別符,所述更 新處理執(zhí)行部件根據(jù)由所述選擇識別符表示的選擇對象數(shù)據(jù)的值,更 新所述多個選擇參數(shù),所述秘密處理裝置還具備變遷處理執(zhí)行部件, 該變遷處理執(zhí)行部件利用使用了更新后的多個選擇參數(shù)的所述規(guī)定 處理,算出與所述秘密信息相同的值。
根據(jù)該構(gòu)成,由于秘密處理裝置隱匿了算出與秘密信息相同值的 方法,所以非法解析者難以解析秘密信息。
這里,也可以是,所述秘密處理是由外部裝置執(zhí)行被分割成1個 以上塊的原始程序的處理,所述塊包含1個以上的程序指令,所述多 個選擇對象數(shù)據(jù)的每個包含不同的塊。
根據(jù)該構(gòu)成,秘密處理裝置可將選擇對象數(shù)據(jù)處理為從原始程序 分割的塊。
這里,也可以是,所述多個選擇參數(shù)是從第1到第n的選擇參數(shù), 所述更新處理執(zhí)行部件對于所述多個選擇對象數(shù)據(jù)的每個,將存儲在 第j-l選擇參數(shù)中的值存儲到第j選擇參數(shù),將常數(shù)值存儲在第1選 擇參數(shù)中,其中j是2以上n以下的整數(shù),所述常數(shù)值是所述外部裝 置在所述秘密保持程序生成時事先設(shè)定的值,以便使用所述運算式, 算出表示接著執(zhí)行的選擇對象數(shù)據(jù)的選擇識別符。
根據(jù)該構(gòu)成,秘密處理裝置可使過去代入所述運算式的1個以上 選擇參數(shù)值中至少1個選擇參數(shù)值得以反映地,更新所述多個選擇參 數(shù)值。
這里,也可以是,所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以 上構(gòu)成的規(guī)定數(shù)量,所述運算式對所述第1到第n的選擇參數(shù)的每個, 算出Pix第i選擇參數(shù),將算出的結(jié)果分別相加,對加法結(jié)果實施以 所述規(guī)定數(shù)量為模數(shù)值N的模數(shù)運算,算出選擇識別符,其中i是l以上n以下的整數(shù),Pi與模數(shù)值N互質(zhì)。
根據(jù)該構(gòu)成,秘密處理裝置可利用運算式來可靠地確定選擇對象數(shù)據(jù)。
這里,也可以是,所述選擇處理執(zhí)行部件始終取得表示未執(zhí)行的 選擇對象數(shù)據(jù)的識別符。
根據(jù)該構(gòu)成,秘密處理裝置可始終取得包含未執(zhí)行的塊的選擇對 象數(shù)據(jù)。另外,秘密處理裝置執(zhí)行的秘密處理始終將不同的選擇對象 數(shù)據(jù)設(shè)為接著應(yīng)執(zhí)行的選擇對象數(shù)據(jù),所以非法解析者難以確定正確 的執(zhí)行順序。
這里,也可以是,所述選擇處理執(zhí)行部件使用表示對所述多個選 擇對象數(shù)據(jù)的每個是否已執(zhí)行完的管理信息,取得表示未執(zhí)行的選擇 對象數(shù)據(jù)的識別符。
根據(jù)該構(gòu)成,秘密處理裝置可使用管理信息,始終取得包含未執(zhí) 行的塊的選擇對象數(shù)據(jù)。
這里,也可以是,所述多個選擇參數(shù)是第l到第n的選擇參數(shù), 所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù)量,所 述管理信息是排列表格,該排列表格對所述多個選擇對象數(shù)據(jù)的每 個,表示在當(dāng)前時刻已執(zhí)行完或未執(zhí)行中的某一個的狀態(tài),所述選擇 處理執(zhí)行部件保持所述排列表格,所述運算式是如下運算式,即對 所述第1到第n的選擇參數(shù)的每個算出Pix第i選擇參數(shù),將算出的 結(jié)果分別相加,對加法結(jié)果實施以所述規(guī)定數(shù)量為模數(shù)值N的模數(shù) 運算,算出表示包含接著應(yīng)執(zhí)行的塊的選擇對象數(shù)據(jù)的臨時的選擇識 別符,其中i是l以上n以下的整數(shù);所述選擇處理執(zhí)行部件在由所
述算出式算出的所述臨時的選擇識別符所示的選擇對象數(shù)據(jù)在所述 排列表格中表示未執(zhí)行的情況下,將所述臨時的選擇識別符設(shè)為表示 包含接著應(yīng)執(zhí)行的塊的選擇對象數(shù)據(jù)的真選擇識別符,在表示已執(zhí)行 完的情況下,根據(jù)取得未執(zhí)行的選擇對象數(shù)據(jù)之前事先確定的選擇順 序,取得臨時的選擇識別符,Pi與模數(shù)值N互質(zhì)。
根據(jù)該構(gòu)成,秘密處理裝置可使用排列表格,可靠地取得包含未 執(zhí)行的塊的選擇對象數(shù)據(jù)。
這里,也可以是,所述更新處理執(zhí)行部件將存儲在第j選擇參數(shù) 中的值存儲到第j-l選擇參數(shù),將所述選擇處理執(zhí)行部件取得的所述
真選擇識別符存儲到第n變量,其中j是2以上n以下的整數(shù)。
根據(jù)該構(gòu)成,秘密處理裝置當(dāng)更新選擇參數(shù)時,始終使選擇參數(shù) 值反映表示過去處理的選擇對象數(shù)據(jù)的選擇識別符、或過去代入所述 運算式中的1個以上選擇參數(shù)值中的至少1個選擇參數(shù)值,所以難以 確定存儲在多個選擇參數(shù)中的值。
這里,也可以是,所述管理信息是排列表格,該排列表格對所述 多個選擇對象數(shù)據(jù)的每個,表示在當(dāng)前時刻已執(zhí)行完或未執(zhí)行中的某 一個的狀態(tài),所述選擇處理執(zhí)行部件保持所述排列表格,并且包含 第1取得部,執(zhí)行所述運算式,該運算式使用表示1個選擇參數(shù)的索 引,從所述多個選擇參數(shù)中取得所述1個選擇參數(shù);和第2取得部, 根據(jù)表示所述排列表格中未執(zhí)行的1個以上選擇對象數(shù)據(jù)的選擇識 別符的排列順序,取得按由所述第1取得部取得的選擇參數(shù)值所示的 順序來配置的選擇識別符。
根據(jù)該構(gòu)成,秘密處理裝置可使用索引,取得表示接著執(zhí)行的選 擇對象數(shù)據(jù)的選擇識別符。
這里,也可以是,所述更新處理執(zhí)行部件將所述索引的值遞增。 根據(jù)該構(gòu)成,秘密處理裝置更新索引。非法解析者即便知道某個 ±央,也由于不知道索引值,所以不能確定接著應(yīng)執(zhí)行的塊。因此,非 法解析者不能容易地解析原始程序。
這里,也可以是,所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以 上構(gòu)成的規(guī)定數(shù)量,所述多個選擇參數(shù)是第1到第n的參數(shù),所述管 理信息是排列表格,該排列表格對所述多個選擇對象數(shù)據(jù)的每個,表 示在當(dāng)前時刻已執(zhí)行完或未執(zhí)行中的某一個的狀態(tài),所述選擇處理執(zhí) 行部件保持所述排列表格,所述運算式是如下運算式,即對所述第 1到第n的選擇參數(shù)的每個算出Pix第i選擇參數(shù),將算出的結(jié)果分別 相加,對加法結(jié)果實施以所述規(guī)定數(shù)量為模數(shù)值N的模數(shù)運算,算 出表示包含接著應(yīng)執(zhí)行的塊的選擇對象數(shù)據(jù)的臨時的選擇識別符,其 中i是1以上n以下的整數(shù);所述選擇處理執(zhí)行部件根據(jù)在與所述排 列表格相同的表格內(nèi)、表示未執(zhí)行的1個以上選擇對象數(shù)據(jù)的選擇識 別符的排列順序,取得按由所述運算式算出的所述值表示的順序來配 置的選擇識別符。
根據(jù)該構(gòu)成,秘密處理裝置可可靠地取得包含未執(zhí)行的塊的選擇 對象數(shù)據(jù)。另外,秘密處理裝置執(zhí)行的秘密處理始終將不同的選擇對 象數(shù)據(jù)設(shè)為接著應(yīng)執(zhí)行的選擇對象數(shù)據(jù),所以非法解析者難以確定正 確的執(zhí)行順序。
這里,也可以是,所述秘密處理是由所述外部裝置執(zhí)行根據(jù)所述 原始程序生成的秘密保持程序的處理,所述選擇對象數(shù)據(jù)的個數(shù)是由 所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù)量,在不包含塊的1個以上選擇對象 數(shù)據(jù)中,包含含有1個以上程序指令的偽塊,所述秘密保持程序包含 從所述原始塊分割出的各塊、和1個以上的偽塊。
根據(jù)該構(gòu)成,秘密處理裝置執(zhí)行的秘密保持程序包含偽塊,所以 非法解析者難以解析。
圖1是表示秘密保持系統(tǒng)1的構(gòu)成框圖。
圖2是表示秘密保持程序100的構(gòu)造的圖。 圖3是表示秘密保持程序100的具體程序的圖。 圖4是表示由正常系統(tǒng)執(zhí)行秘密保持程序100時的處理動作的流 程圖。
圖5是表示程序難破解化裝置10的構(gòu)成框圖。 圖6是表示秘密保持程序生成部203的構(gòu)成框圖。 圖7是表示程序難破解化裝置10的動作概要的流程圖。 圖8是表示選擇對象數(shù)據(jù)的生成處理動作的流程圖。后接圖9。 圖9是表示選擇對象數(shù)據(jù)的生成處理動作的流程圖。上接圖8。 圖10是表示秘密保持系統(tǒng)2的構(gòu)成框圖。 圖11是表示秘密保持程序300的構(gòu)造的圖。 圖12是表示由正常系統(tǒng)執(zhí)行秘密保持程序300時的處理動作的 流程圖。 圖13是表示程序難破解化裝置30的構(gòu)成框圖。
圖14是表示程序難破解化裝置30的動作概要的流程圖。
圖15是表示秘密保持系統(tǒng)3的構(gòu)成框圖。
圖16是表示秘密保持程序500的構(gòu)造的圖。
圖17是表示難破解對象程序的控制流程的圖。
圖18是模式記述秘密保持程序500的各塊的圖。
圖19是表示秘密保持程序500的具體程序的圖。
圖20是表示用C語言記述秘密保持程序500的各塊的具體例的圖。
圖21是表示秘密處理裝置60的構(gòu)成框圖。
圖22是表示管理信息表格T700的數(shù)據(jù)構(gòu)造一例的圖。
圖23是表示控制部700的構(gòu)成框圖。
圖24是表示秘密處理裝置60的動作流程圖。
圖25是表示程序難破解化裝置50的構(gòu)成框圖。
圖26是表示配置順序確定部804的構(gòu)成框圖。
圖27是表示程序難破解化裝置50的動作概要的流程圖。
圖28是表示配置確定處理的動作的流程圖。
圖29是表示初始值算出處理的動作的流程圖。
圖30是表示功能提供指令群1~3的執(zhí)行順序的圖。
圖31是表示選擇處理部722b的構(gòu)成框圖。
圖32是表示選擇識別符取得處理的動作的流程圖。
圖33是表示難破解化對象程序的控制流程的圖。
圖34是表示程序難破解化裝置50c的構(gòu)成框圖。
圖35是表示將圖33所示的控制流程置換成所生成的3個功能提 供指令群的控制流程的圖。
圖36是表示展開各功能提供指令群的程序的控制流程的圖。
圖37是表示配置順序確定部804c的構(gòu)成框圖。
圖38是表示秘密保持程序1800的構(gòu)造圖。
圖39是表示配置順序確定部804d的動作的流程圖。
圖40是用C語言記述秘密保持程序500e各塊的具體例的圖。
圖41是表示秘密保持程序2000的構(gòu)造圖。
圖42是表示秘密保持程序2000的動作具體例的流程圖。
圖43是表示程序難破解化裝置1010的構(gòu)成框圖。
圖44是表示配置確定處理的動作的流程圖。
圖45是表示秘密保持程序2200的構(gòu)造圖。
圖46是表示秘密保持程序2200的動作具體例的流程圖。
圖47是表示程序難破解化裝置3010的構(gòu)成框圖。
圖48是表示配置確定處理的動作的流程圖。
符號說明
1秘密保持系統(tǒng)
10程序難破解化裝置
20程序執(zhí)行裝置
100秘密保持程序
200輸入部
201功能提供指令群生成部
202偽功能提供指令群生成部
203秘密保持程序生成部
2秘密保持系統(tǒng)
30程序難破解化裝置
40程序執(zhí)行裝置
300秘密保持程序
400輸入部
401功能提供指令群生成部 402變遷處理指令群生成部 403秘密保持程序生成部 3秘密保持系統(tǒng) 50程序難破解化裝置 60秘密處理裝置 500秘密保持程序 700控制部
701存儲部
702第1程序存儲部
703第2程序存儲部
704管理信息保持部
705選擇參數(shù)群保持部
800程序存儲部
801輸入部
802功能提供指令群生成部
803偽功能提供指令群生成部
804配置順序確定部
805管理指令群生成部
畫秘密保持程序生成部
807輸出部
1010程序難破解化裝置
1020秘密處理裝置
2000秘密保持程序
2200秘密保持程序
3010程序難破解化裝置
3020秘密處理裝置
具體實施方式
l.第1實施方式
下面,參照
作為本發(fā)明第1實施方式的秘密保持程序
100和程序難破解化裝置10。
1.1秘密保持系統(tǒng)1的概要
秘密保持系統(tǒng)1如圖1所示,由程序難破解化裝置io和程序執(zhí)
行裝置20構(gòu)成。
程序難破解化裝置10根據(jù)想將執(zhí)行順序變?yōu)槊孛艿碾y破解化對 象程序,生成秘密保持程序100,將生成的秘密保持程序100分配給 程序執(zhí)行裝置20。 程序執(zhí)行裝置20執(zhí)行從程序難破解化裝置10分配的秘密保持程 序100。
這里,難破解化對象程序由指令群A、指令群B、指令群C等3 個指令群構(gòu)成,設(shè)通過按指令群A、 B、 C的順序執(zhí)行,可正確動作。 1.2秘密保持程序100的構(gòu)造
這里,說明程序難破解化裝置10生成、程序執(zhí)行裝置20執(zhí)行的 秘密保持程序100的程序構(gòu)造。
秘密保持程序100是使用秘密要素進行處理的程序,是不想讓非 法解析者解析出程序中包含的程序指令群按什么樣的執(zhí)行順序執(zhí)行 的程序。例如,是水印檢測程序、或按非專利文獻(xiàn)1所述的方法將處 理秘密信息的程序指令置換為其它程序指令群、將它們分散并配置的 程序。就后者而言,若非法解析者收集置換后的程序指令群,按正確 的順序執(zhí)行,則可算出秘密信息的值,所以難以知道執(zhí)行路徑。
秘密保持程序100是難以解析程序中包含的多個選擇對象數(shù)據(jù) 140~146大致按什么樣的執(zhí)行順序執(zhí)行的程序。在選擇對象數(shù)據(jù) 140~146中,還包含正常系統(tǒng)執(zhí)行時不執(zhí)行的選擇對象數(shù)據(jù)。為了增 多不知道正確執(zhí)行順序的非法解析者考慮的執(zhí)行順序組合數(shù)量而加 入未執(zhí)行的選擇對象數(shù)據(jù)。這里,所謂正常系統(tǒng)的執(zhí)行是通過不執(zhí)行 使用調(diào)試工具等強制變更程序計數(shù)器或選擇參數(shù)等特別操作來進行 處理。秘密保持程序100如圖2所示,由預(yù)處理指令群IIO、選擇處 理指令群120、變遷處理指令群130、選擇對象數(shù)據(jù)140、 141、...、 146構(gòu)成,它們按圖2所示的順序配置。
秘密保持程序100從調(diào)用源程序接收32比特的輸入值inl、 in2、 in3、和執(zhí)行該程序提供的功能處理時使用的參數(shù)。
秘密保持程序IOO使用保持選擇處理指令群120的處理中使用的 多個選擇參數(shù)的各值(這里為3個衝的32比特的第1、第2和第3選 擇參數(shù)用變量、與保持選擇識別符的32比特的選擇識別符用變量, 進行處理。這里,選擇參數(shù)是根據(jù)選擇對象數(shù)據(jù)140、 141、 ...、 146 確定1個選擇對象時使用的參數(shù),選擇識別符是唯一識別選擇對象數(shù) 據(jù)的識別符。
這里,設(shè)秘密保持程序100實際使用時從調(diào)用源程序接收的輸入 值inl、 in2、 in3為值",、<2' 、 (3'。本實施方式中提供的秘 密保持程序100是若使用從調(diào)用源程序接收的值、則可按正確順序執(zhí) 行(包含選擇對象主要指令群的)選擇對象數(shù)據(jù)的程序,是不能知道從 調(diào)用源程序接收的值的非法解析者難以知道(包含選擇對象主要指令 群的)選擇對象數(shù)據(jù)的執(zhí)行順序的程序。
1.2.1預(yù)處理指令群110
預(yù)處理指令群110是算出選擇處理指令群120中使用的選擇參數(shù) 群的初始值的程序指令群。這里,選擇參數(shù)群由第l、第2和第3選 擇參數(shù)用變量構(gòu)成。
預(yù)處理指令群110是啟動秘密保持程序100時最初執(zhí)行的程序指 令群。
預(yù)處理指令群110由第1預(yù)處理程序指令群和分支到選擇處理指 令群120的第2預(yù)處理程序指令群構(gòu)成,并按此順序執(zhí)行,其中該第 1預(yù)處理程序指令群從調(diào)用源程序接收32比特的輸入值inl、in2、in3, 將接收到的值作為選擇參數(shù)群的初始值,存儲在選擇參數(shù)用變量中。
具體而言,第1預(yù)處理程序指令群分別將inl、 in2、 in3的值存 儲在第1~第3選擇參數(shù)用變量中。當(dāng)正常系統(tǒng)執(zhí)行時,第1預(yù)處理 程序指令群執(zhí)行如下處理,即分別接收值<1,、《2, 、 '3,,作 為輸入值inl、 in2、 in3,分別將值'1' 、 <2' 、 存儲在第1~
第3選擇參數(shù)用變量中。
第2預(yù)處理程序指令群是在例如用C語言記述的程序中、在選擇 處理指令群120的開頭插入標(biāo)簽Qabd一120'的情況下、用程序指令 'goto label—120;,表示的程序指令。
在緊挨著預(yù)處理指令群110的后面配置選擇處理指令群120的情 況下,也可沒有程序指令'goto label—120;,。此時,預(yù)處理指令群 110僅由第1預(yù)處理程序指令群構(gòu)成。
1.2.2選擇處理指令群120
選擇處理指令群120是根據(jù)選擇參數(shù)群、從選擇對象數(shù)據(jù) 140 146中選擇1個并設(shè)為選擇識別符的程序指令群。 選擇處理指令群120由使用選擇參數(shù)群算出選擇識別符的第1選 擇處理程序指令群、和分支到變遷處理指令群130的第2選擇處理程 序指令群構(gòu)成,按此順序執(zhí)行。選擇識別符是后述的變遷處理指令群 中使用的值。
下面使用具體例來說明第1選擇處理程序指令群。第1選擇處理 程序指令群是算出plx(第1選擇參數(shù)用變量)+p2x(第2選擇參數(shù)用變 量)+p3x(第3選擇參數(shù)用變量)modNN、并將算出的值存儲在選擇識 別符用變量中的程序指令的集合,NN為選擇對象數(shù)據(jù)的數(shù)量。另外, pl、 p2、 p3分別是與NN互質(zhì)的素數(shù),并且在以NN為模的情況下設(shè) 為構(gòu)成各不相同的值的數(shù)。也可將NN設(shè)為素數(shù),將pl、 p2、 p3分 別設(shè)為小于NN的各不相同的素數(shù)。這里,運算符、'表示乘法。 這里,將pl、 p2、 p3、 NN分別設(shè)為值<2, 、 '3, 、 <5, 、 '7,, 設(shè)為是算出式1、即'2x(第1選擇參數(shù)用變量)+3x(第2選擇參數(shù)用 變量)+5x(第3選擇參數(shù)用變量)MOD 7'的程序指令群。
分支到變遷處理指令群130的程序指令群與預(yù)處理指令群IIO中 所述的第2預(yù)處理程序指令群一樣,分支目的地變?yōu)樽冞w處理指令群 130。
1.2.3變遷處理指令群130
變遷處理指令群130是根據(jù)選擇處理指令群120算出的選擇識別 符、執(zhí)行分支到任一選擇對象數(shù)據(jù)140 146的處理的程序指令群。
具體而言,是在選擇識別符用變量的值為0、 1、 ...、 6的情況下、 分別執(zhí)行至選擇對象數(shù)據(jù)140、 141、 ...、 146的分支的程序指令群。
例如,若設(shè)記述秘密保持程序100的程序為C語言的程序,在選
擇對象數(shù)據(jù)140、 141..... 146的開頭分別有標(biāo)簽"abelJ40:,、
(label—141:,..... (label一146:,,則變遷處理指令群130為下面的
程序指令。
switch(選擇識別符用變量){ case 0: goto label—140; case 1: goto label—141;
case 6: goto label—146;
1.2.4選擇對象數(shù)據(jù)140~146
選擇對象數(shù)據(jù)140~146是由變遷處理指令群130分支來時、執(zhí)行 的程序指令群。
選擇對象數(shù)據(jù)140~146分別由選擇對象主要指令群150~156、更 新處理指令群160~166、分支指令群170 176構(gòu)成,上述指令群按圖 2所示的順序配置。各指令群是由1個以上程序指令構(gòu)成的程序指令 群。
這里,說明選擇對象數(shù)據(jù)140的構(gòu)成內(nèi)容。選擇對象數(shù)據(jù)141~146 與選擇對象數(shù)據(jù)140的構(gòu)成內(nèi)容一樣,所以省略說明。 (l)選擇對象主要指令群150
選擇對象主要指令群150是執(zhí)行該程序提供的功能(例如水印檢 測功能)的處理的一部分的程序指令群,或是與提供的功能無關(guān)、在 由正常系統(tǒng)執(zhí)行時(后面稱為正常系統(tǒng)執(zhí)行時)不執(zhí)行的指令群。
在本實施例中,通過在正常系統(tǒng)執(zhí)行時按選擇對象主要指令群 152、 154、 156的順序執(zhí)行,執(zhí)行該秘密保持程序提供的功能的處理。 即,選擇對象主要指令群152、 154、 156是包含難破解化對象程序提 供的功能的處理的一部分的程序指令群,選擇對象主要指令群152、 154、 156分別順序與指令群A、 B、 C相同。
選擇對象主要指令群150、 151、 153、 155是包含與提供的功能 無關(guān)的處理的程序指令群。在下面的說明中,將選擇對象主要指令群 152、 154、 156的指令群、即作為秘密保持程序提供的功能的一部分 的指令群分別稱為功能提供指令群1~3。將選擇對象主要指令群150、 151、 153、 155中包含的正常系統(tǒng)執(zhí)行時不執(zhí)行的指令群稱為偽 (dummy)功能提供指令群。
在本實施例中,在未執(zhí)行使用調(diào)試工具等強制變更程序計數(shù)器或 選擇參數(shù)等特別操作的正常系統(tǒng)執(zhí)行時(下面稱為正常系統(tǒng)執(zhí)行時),
預(yù)處理指令群IIO分別將初始值'T 、 、 <3'存儲在選擇參 數(shù)用變量1 3中,越過(乗o取3)后面說明的處理,順序執(zhí)行選擇對 象主要指令群152、 154、 156。更準(zhǔn)確地,中途執(zhí)行更新處理指令群 等處理。
(2)更新處理指令群160
更新處理指令群160是執(zhí)行選擇參數(shù)群的值的更新的程序指令群。
更新處理指令群160事先具有用于選擇參數(shù)群的值的更新的常 數(shù)值。更新處理指令群160在接收了正當(dāng)?shù)倪x擇參數(shù)群的情況下,使 用接收到的選擇參數(shù)群與常數(shù)值,生成選擇處理指令群120可選擇正 當(dāng)?shù)倪x擇對象作為下一處理的新的選擇參數(shù)群。
這里,在下面示出生成方法的一例。
更新處理指令群160將第2選擇參數(shù)用變量的值存儲在第3選擇 參數(shù)用變量中,將第1選擇參數(shù)用變量的值存儲在第2選擇參數(shù)用變 量中,將事先具有的常數(shù)值代入選擇參數(shù)用變量l中,生成新的選擇 參數(shù)。
常數(shù)值是將這些第1 第3選擇參數(shù)用變量的值乂常數(shù)值)'、、'、 Y代入選擇處理指令群120的式1中得到的選擇識別符不表示此前 選擇的1個以上選擇對象數(shù)據(jù)的值。這是因為,若其為構(gòu)成此前選擇 的1個選擇對象數(shù)據(jù)的值,則會變?yōu)樵撨x擇對象數(shù)據(jù)連續(xù)執(zhí)行無限循 環(huán)的處理。
這里,在下面示出更新處理指令群160~166各自具有的常數(shù)值的 具體例。
秘密保持程序100如上所述,通過按選擇對象主要指令群152、 154、 156的順序執(zhí)行,執(zhí)行該秘密保持程序提供的功能的處理。
在執(zhí)行選擇對象主要指令群152之后,更新處理指令群162將第 2選擇參數(shù)用變量的值'2'存儲在第3選擇參數(shù)用變量中,將第1 選擇參數(shù)用變量的值"'存儲在第2選擇參數(shù)用變量中。此時,通 過將更新處理指令群162具有的常數(shù)值A(chǔ)設(shè)為'6',選擇處理指令 群120可選擇選擇對象數(shù)據(jù)144,作為下一正當(dāng)?shù)奶幚怼?br>
接著,在執(zhí)行選擇對象主要指令群154之后,更新處理指令群 164將第2選擇參數(shù)用變量的值<1'存儲在第3選擇參數(shù)用變量中, 將第l選擇參數(shù)用變量的值'6'存儲在第2選擇參數(shù)用變量中。此 時,通過將更新處理指令群164具有的常數(shù)值B設(shè)為<2',選擇處 理指令群120可選擇選擇對象數(shù)據(jù)146,作為下一正當(dāng)?shù)奶幚怼?br>
接著,在執(zhí)行選擇對象主要指令群156之后,更新處理指令群 166將第2選擇參數(shù)用變量的值存儲在第3選擇參數(shù)用變量中, 將第l選擇參數(shù)用變量的值'2'存儲在第2選擇參數(shù)用變量中。此 時,通過將更新處理指令群164具有的常數(shù)值B設(shè)為'0',選擇處 理指令群120可指定此前執(zhí)行的選擇對象數(shù)據(jù)142、 144、 146以外的 選擇對象數(shù)據(jù)。
在正常系統(tǒng)的動作中未執(zhí)行的選擇對象數(shù)據(jù)140、 141、 143、 145 的更新處理指令群160、 161、 163、 165中,不重復(fù)地選擇值'0, <6,中未使用的值。這里,對更新處理指令群160、 161、 163、 165 分別設(shè)值'1, 、 '3, 、 '4, 、<5,。
(3)分支指令群170
分支指令群170是分支到選擇處理指令群120的程序指令群、或 將控制返回到程序調(diào)用源的處理的程序指令群。 1.2.5秘密保持程序100的具體例
作為秘密保持程序100的具體例,圖3中示出用C語言記述的秘 密保持程序100a。這里,運算符<*'表示乘法。
程序指令群110a對應(yīng)于預(yù)處理指令群110,程序指令群120a對 應(yīng)于選擇處理指令群120,程序指令群130a對應(yīng)于變遷處理指令群 130。另外,程序指令群140a、 142a、 143a、 146a分別對應(yīng)于選擇對 象數(shù)據(jù)140、 142、 143、 146。
程序指令群150a、 152a、 153a、 156a分別對應(yīng)于選擇對象主要 指令群150、 152、 153、 156。程序指令群160a、 162a、 163a、 166a 分別對應(yīng)于更新處理指令群160、 162、 163、 166。另外,程序指令 群170a、 172a、 173a、 176a分別對應(yīng)于分支指令群170、 172、 173、 176。對應(yīng)于選擇對象數(shù)據(jù)141、 144、 145的具體例由于附圖的關(guān)系
而未記述。
1.3秘密保持程序100的執(zhí)行
用圖4所示的流程圖來說明程序執(zhí)行裝置20由正常系統(tǒng)執(zhí)行秘 密保持程序100時的處理。
秘密保持程序100執(zhí)行預(yù)處理指令群110的處理(步驟S5)。具體 而言,預(yù)處理指令群110執(zhí)行如下處理,即分別接收值<1, 、 '2'、 3,,作為輸入值inl、 in2、 in3,分別將值'l' 、 '2' 、 '3,存 儲到第1~第3選擇參數(shù)用變量中,分支到選擇處理指令群120。
接著,秘密保持程序100使用接收到的輸入值"'、<2'、 <3', 執(zhí)行選擇處理指令群120的處理(步驟SIO)。具體而言,選擇處理指 令群120利用式1 '2x(第1選擇參數(shù)用變量(=1))+3><(第2選擇參數(shù)用 變量^2))+5x(第3選擇參數(shù)用變量(-3))MOD7',算出值<2',將 算出的值'2'存儲在選擇識別符用變量中,分支到變遷處理指令群 130。
秘密保持程序100使用選擇識別符用變量(=2),執(zhí)行變遷處理指 令群130的處理(步驟S15)。具體而言,變遷處理指令群130根據(jù)選 擇處理指令群120算出的選擇識別符<2',分支到選擇對象數(shù)據(jù)142。
秘密保持程序100根據(jù)變遷處理指令群130的分支指令,執(zhí)行選 擇對象數(shù)據(jù)142的選擇對象主要指令群152的處理(步驟S20)。具體 而言,選擇對象主要指令群152執(zhí)行難破解化對象程序中的指令群A。
接著,秘密保持程序100執(zhí)行更新處理指令群162的處理(步驟 S25)。具體而言,更新處理指令群162是執(zhí)行如下處理的程序指令群, 即將第2選擇參數(shù)用變量的值存儲在第3選擇參數(shù)用變量中,將第 1選擇參數(shù)用變量的值存儲在第2選擇參數(shù)用變量中,將常數(shù)值A(chǔ)(= '6')代入第l選擇參數(shù)用變量中。這里,第1 第3選擇參數(shù)用變量 分別是初始值<1, 、 '2, 、 '3,,所以更新處理指令群162將值 '常數(shù)值A(chǔ)(-6), 、 、<2'代入第1~第3選擇參數(shù)用變量的每個中。
接著,秘密保持程序100執(zhí)行分支指令群172的處理(步驟S30)。 具體而言,分支指令群172分支到選擇處理指令群120。
接著,秘密保持程序100使用更新后的選擇參數(shù)群(值<6'、"'、 '2,),執(zhí)行選擇處理指令群120的處理(步驟S35)。具體而言,選擇 處理指令群120利用式1 '2x(第1選擇參數(shù)用變量(-6))+3x(第2選擇 參數(shù)用變量(-l))+5x(第3選擇參數(shù)用變量(=2)) MOD 7',算出值<4', 將算出的值'4'存儲在選擇識別符用變量中,分支到變遷處理指令 群130。
秘密保持程序100使用選擇識別符用變量(=4),執(zhí)行變遷處理指 令群130的處理(步驟S40)。具體而言,變遷處理指令群130根據(jù)由 選擇處理指令群120算出的選擇識別符<4',分支到選擇對象數(shù)據(jù) 144。
秘密保持程序IOO根據(jù)變遷處理指令群130的分支指令,執(zhí)行選 擇對象數(shù)據(jù)144的選擇對象主要指令群154的處理(步驟S45)。具體 而言,選擇對象主要指令群154執(zhí)行難破解化對象程序中的指令群B。
接著,秘密保持程序100執(zhí)行更新處理指令群164的處理(步驟 S50)。具體而言,更新處理指令群164是執(zhí)行如下處理的程序指令群, 即將第2選擇參數(shù)用變量的值存儲在第3選擇參數(shù)用變量中,將第 1選擇參數(shù)用變量的值存儲在第2選擇參數(shù)用變量中,將常數(shù)值B(= 《2,)代入第l選擇參數(shù)用變量中。這里,第1 第3選擇參數(shù)用變量 分別是初始值'6, 、 '1, 、 '2,,所以更新處理指令群164將值 '常數(shù)值B(-2)' 、 '6' 、 'l'代入第1~第3選擇參數(shù)用變量的每 個中。
接著,秘密保持程序100執(zhí)行分支指令群174的處理(步驟S55)。 具體而言,分支指令群174分支到選擇處理指令群120。
接著,秘密保持程序100使用更新后的選擇參數(shù)群(值'2'、、'、 "'),執(zhí)行選擇處理指令群120的處理(步驟S60)。具體而言,選擇 處理指令群120利用式1 ^x(第1選擇參數(shù)用變量^2))+3x(第2選擇 參數(shù)用變量(=6))+5><(第3選擇參數(shù)用變量(=1》MOD 7,,算出值V , 將算出的值存儲在選擇識別符用變量中,分支到變遷處理指令 群130。
秘密保持程序100使用選擇識別符用變量(=6),執(zhí)行變遷處理指
令群130的處理(步驟S65)。具體而言,變遷處理指令群130根據(jù)由 選擇處理指令群120算出的選擇識別符<6',分支到選擇對象數(shù)據(jù) 146。
秘密保持程序IOO根據(jù)變遷處理指令群130的分支指令,執(zhí)行選 擇對象數(shù)據(jù)146的選擇對象主要指令群156的處理(步驟S70)。具體 而言,選擇對象主要指令群156執(zhí)行難破解化對象程序中的指令群C 。
接著,秘密保持程序100執(zhí)行更新處理指令群166的處理(步驟 S75)。具體而言,更新處理指令群166是執(zhí)行如下處理的程序指令群, 即將第2選擇參數(shù)用變量的值存儲在第3選擇參數(shù)用變量中,將第 1選擇參數(shù)用變量的值存儲在第2選擇參數(shù)用變量中,將常數(shù)值C(= '0,)代入第1選擇參數(shù)用變量中。這里,第1~第3選擇參數(shù)用變量 分別是初始值'2' 、 '6' 、 4',所以更新處理指令群164將值 嘴數(shù)值C(—), 、 '2, 、 代入第1 第3選擇參數(shù)用變量的每個中。
接著,秘密保持程序100執(zhí)行分支指令群176的處理(步驟S80)。 具體而言,分支指令群176執(zhí)行將控制返回到調(diào)用源程序的處理(由 于選擇對象數(shù)據(jù)146是最后執(zhí)行的選擇對象數(shù)據(jù),所以不必分支到選 擇處理指令群120)。例如,C語言的程序中return語句對應(yīng)于該處理。
這里,將動作的主體設(shè)為秘密保持程序100,但實際上程序執(zhí)行 裝置20通過執(zhí)行秘密保持程序100,可實現(xiàn)上述動作。即,也可將 動作的主體從秘密保持程序100置換為程序執(zhí)行裝置20。
1.4程序難破解化裝置10
這里,描述根據(jù)想隱匿執(zhí)行順序的難破解化對象程序、生成秘密 保持程序100的程序難破解化裝置10。秘密保持程序100中,選擇 對象主要指令群150~156中包含的功能提供指令群和偽功能提供指 令群以外的各部,可對任何難破解化對象程序共同使用。這里,主要 描述功能提供指令群的生成、偽功能提供指令群的生成。
程序難破解化裝置10如圖5所示,由輸入部200、功能提供指 令群生成部201、偽功能提供指令群生成部202、秘密保持程序生成 部203構(gòu)成。程序難破解化裝置10具體而言,是由微處理器、ROM、 RAM、 硬盤單元、顯示器單元、鍵盤、鼠標(biāo)等構(gòu)成的計算機系統(tǒng)。在所述 RAM或所述硬盤單元中存儲計算機程序。這里,計算機程序為了實 現(xiàn)規(guī)定的功能,組合多個表示對計算機的指令的指令代碼來構(gòu)成。通 過所述微處理器根據(jù)所述計算機程序動作,程序難破解化裝置10實 現(xiàn)其功能。即,所述微處理器l個個地讀出所述計算機程序中包含的 各指令,解讀讀出的指令,根據(jù)解讀結(jié)果進行動作。
1.4.1輸入部200
當(dāng)由正常系統(tǒng)執(zhí)行難破解化對象的程序與秘密保持程序100時, 接收提供給秘密保持程序100的3個初始值(這里為、 '2,、 <3,)。
1.4.2功能提供指令群生成部201
功能提供指令群生成部201將由輸入部200接收的難破解化對象 程序分割成由1個以上程序指令構(gòu)成的多個塊,生成多個功能提供指 令群。在難破解化對象程序中包含無條件跳躍、有條件跳躍的情況下, 分割成執(zhí)行跳躍的程序指令與跳躍目的地的程序指令包含于同一塊 中。涉及編譯器的術(shù)語記述在非專利文獻(xiàn)2、 3中。
這里,分割成3個塊,以使得分割后的各部中包含的指令數(shù)盡可 能均等地,生成3個功能提供指令群。生成的功能提供指令群按原始 的程序指令群在難破解化對象程序中位于初始的順序,設(shè)為功能提供 指令群1~3。
1.4.3偽功能提供指令群生成部202
偽功能提供指令群生成部202生成多個隨機組合了用記述難破 解化對象程序的編程語言記述的1個以上程序指令的偽功能提供指 令群。
也可僅使用難破解化對象程序中包含的程序指令,隨機或手動地 生成偽功能提供指令群。由此,難以區(qū)別偽功能提供指令群與從最初 開始包含于難破解化對象程序中的指令,難以解析。另外,就C語言、 Java(注冊商標(biāo))語言等執(zhí)行編譯處理的編程語言而言,偽功能提供指 令群生成部202如編譯那樣使用在難破解化對象程序中使用的變量,
生成偽功能提供指令群。或者,在難破解化對象程序中未使用的變量
包含于偽功能提供指令群中的情況下,偽功能提供指令群生成部202 向難破解化后的程序追加這種變量的說明(宣言)。就涉及C語言的術(shù) 語、變量說明的方式等而言,由于是公知的編程語言(C語言)的方式, 所以這里省略說明。涉及Java(注冊商標(biāo))的術(shù)語就變量的說明的方式 等而言,由于是公知的編程語言(Java(注冊商標(biāo)》的方式,所以這里省 略說明。這里,偽功能提供指令群生成部202生成4個偽功能提供指 令群。
1.4.4秘密保持程序生成部203
秘密保持程序生成部203通過使用多個功能提供指令群和多個 偽功能提供指令群,來生成預(yù)處理指令群110、選擇處理指令群120、
變遷處理指令群130、選擇對象數(shù)據(jù)140、 141..... 146,從而生成
秘密保持程序100。
秘密保持程序生成部203如圖6所示,具有程序存儲部210、位 置存儲部211、塊選擇部212、塊配置部213、確定部214、和插入部 215。
程序存儲部210具有存儲所生成的各指令群和選擇對象數(shù)據(jù)的 區(qū)域。
位置存儲部211具有存儲表示配置各選擇對象主要指令群的位 置的信息的區(qū)域。例如,在將值<2'存儲在位置存儲部211中的情 況下,表示選擇對象數(shù)據(jù)142中已插入1個功能提供指令群或1個偽 功能提供指令群。
塊選擇部212從難破解對象程序中選擇接著應(yīng)配置的塊(功能提 供指令群)。
塊配置部213使用式1,算出所選擇的所述塊的配置位置,在所 述中間程序內(nèi),將選擇到的所述塊配置在算出的所述配置位置上。
確定部214確定應(yīng)代入所述變量的代入值,以算出存儲在位置存 儲部211中的所述配置位置以外的配置位置。
插入部215生成將確定的代入值代入所述變量中的程序指令群 (更新處理指令群),在緊挨著配置后的所述塊的后面,插入生成的所
述程序指令群。
(1) 預(yù)處理指令群110的生成
秘密保持程序生成部203生成預(yù)處理指令群110,該預(yù)處理指令 群110由第1預(yù)處理程序指令群和分支到選擇處理指令群120的第2 預(yù)處理程序指令群構(gòu)成,并按此順序執(zhí)行,其中該第1預(yù)處理程序指 令群從調(diào)用源程序接收32比特的輸入值inl、 in2、 in3,將接收到的 值作為選擇參數(shù)群的初始值,存儲在選擇參數(shù)用變量中。秘密保持程 序生成部203將生成的預(yù)處理指令群110存儲在程序存儲部210中。
(2) 選擇處理指令群120的生成
秘密保持程序生成部203生成選擇處理指令群120,該選擇處理 指令群120由使用選擇參數(shù)群算出選擇識別符的第1選擇處理程序指 令群、和分支到變遷處理指令群130的第2選擇處理程序指令群構(gòu)成, 并按此順序執(zhí)行。
這里,秘密保持程序生成部203生成算出式1 '2x(第1選擇參數(shù) 用變量)+3x(第2選擇參數(shù)用變量)+5x(第3選擇參數(shù)用變量)MOD 7, 的程序指令群,作為第1選擇處理程序指令群。秘密保持程序生成部 203將生成的選擇處理指令群120存儲在程序存儲部210中。
(3) 變遷處理指令群130的生成
秘密保持程序生成部203根據(jù)選擇處理指令群120算出的選擇識 別符生成變遷處理指令群130,該變遷處理指令群130執(zhí)行分支到選 擇對象數(shù)據(jù)140~146中的任一選擇對象數(shù)據(jù)的處理。
具體而言,秘密保持程序生成部203取得由功能提供指令群生成 部201生成的多個功能提供指令群的個數(shù)(這里為3個)、和由偽功能 提供指令群生成部202生成的多個偽功能提供指令群的個數(shù)(這里為 4個),算出其合計值。秘密保持程序生成部203生成與算出的合計值 (這里為7個灘同數(shù)量的標(biāo)簽名。秘密保持程序生成部203通過對選 擇處理指令群120中包含的式1可取的值的每個、將生成的標(biāo)簽名建 立對應(yīng),作為分支目的地,生成變遷處理指令群130。秘密保持程序 生成部203將生成的變遷處理指令群130存儲在程序存儲部210中。
(4) 選擇對象數(shù)據(jù)140、 141、 ...、 146的生成
秘密保持程序生成部203使用3個初始值、式l、生成的多個功 能提供指令群和多個偽功能提供指令群,生成與多個功能提供指令群 的個數(shù)和偽功能提供指令群的個數(shù)的合計值相同數(shù)量的選擇對象數(shù) 據(jù)。
以下,使用具體例對選擇對象數(shù)據(jù)的生成進行說明。
秘密保持程序生成部203生成僅由生成的各標(biāo)簽名構(gòu)成的選擇 對象數(shù)據(jù)。這里,秘密保持程序生成部203生成7個選擇對象數(shù)據(jù) 140 146。秘密保持程序生成部203將僅由生成的各標(biāo)簽名構(gòu)成的選 擇對象數(shù)據(jù)分別存儲在程序存儲部210中。
秘密保持程序生成部203從功能提供指令群生成部201取得功能 提供指令群1。秘密保持程序生成部203使用由輸入部200接收的3 個初始值與式1,確定插入所取得的功能提供指令群1的選擇對象數(shù) 據(jù)。這里,由于根據(jù)3個初始值('l, 、 <2'、。')與式l算出值 '2',所以秘密保持程序生成部203將功能提供指令群1插入到存儲 在程序存儲部210中的選擇對象數(shù)據(jù)142中。秘密保持程序生成部 203將<2,存儲在位置存儲部211中。
秘密保持程序生成部203生成插入到選擇對象數(shù)據(jù)142中的更新 處理指令群162。這里,秘密保持程序生成部203將第2選擇參數(shù)用 變量的值(2'存儲在第3選擇參數(shù)用變量中,將第l選擇參數(shù)用變 量的值'T存儲在第2選擇參數(shù)用變量中。秘密保持程序生成部203 使用存儲在位置存儲部211中的l個以上的值,取得V作為常數(shù) 值A(chǔ),以便將第1 第3選擇參數(shù)用變量的值'(常數(shù)值A(chǔ)), 、 '1,、 3'代入式1得到的值變?yōu)椴槐硎敬饲斑x擇的1個以上選擇對象數(shù)據(jù) 的值。取得方法如后所述。秘密保持程序生成部203生成包含取得的 常數(shù)值A(chǔ)(- '6')的、執(zhí)行選擇參數(shù)群的值的更新的更新處理指令群 162,將生成的更新處理指令群插入到存儲在程序存儲部210中的選 擇對象數(shù)據(jù)142中。
秘密保持程序生成部203生成插入到選擇對象數(shù)據(jù)142中的分支 指令群172,將生成的分支指令群172插入選擇對象數(shù)據(jù)142中。這 里,秘密保持程序生成部203生成分支到選擇處理指令群120的分支 指令群172,將生成的分支指令群172插入到存儲在程序存儲部210 中的選擇對象數(shù)據(jù)142中。由此,生成構(gòu)成秘密保持程序的選擇對象 數(shù)據(jù)142。
秘密保持程序生成部203從功能提供指令群生成部201取得功能 提供指令群2。秘密保持程序生成部203使用選擇參數(shù)群('常數(shù)值 A(=6)' 、 、 '2,)與式1,確定插入了所取得的功能提供指令
群2的選擇對象數(shù)據(jù)。這里,由于根據(jù)3個初始值(<6, 、 'I'、 '2,)與式l算出值'4',所以秘密保持程序生成部203將功能提供 指令群2插入到存儲在程序存儲部210中的選擇對象數(shù)據(jù)144中。秘 密保持程序生成部203將<4'存儲在位置存儲部211中。此時,位 置存儲部211中存儲值'2' 、 <4'。
秘密保持程序生成部203生成插入到選擇對象數(shù)據(jù)144中的更新 處理指令群164。這里,秘密保持程序生成部203將第2選擇參數(shù)用 變量的值存儲在第3選擇參數(shù)用變量中,將第l選擇參數(shù)用變 量的值'6'存儲在第2選擇參數(shù)用變量中。秘密保持程序生成部203 使用存儲在位置存儲部211中的l個以上的值,取得,作為常 數(shù)值B,以便作為常數(shù)值B,將第1~第3選擇參數(shù)用變量的值、常 數(shù)值B)' 、 '6'、"'代入式l得到的值變?yōu)椴槐硎敬饲斑x擇的l 個以上選擇對象數(shù)據(jù)的值。秘密保持程序生成部203生成包含取得的 常數(shù)值B^ '2')的、執(zhí)行選擇參數(shù)群的值的更新的更新處理指令群 164,將生成的更新處理指令群164插入到存儲在程序存儲部210中 的選擇對象數(shù)據(jù)144中。
秘密保持程序生成部203生成插入到選擇對象數(shù)據(jù)144中的分支 指令群174。這里,秘密保持程序生成部203生成分支到選擇處理指 令群120的分支指令群174,將生成的分支指令群174插入到存儲在 程序存儲部210中的選擇對象數(shù)據(jù)144中。由此,生成構(gòu)成秘密保持 程序的選擇對象數(shù)據(jù)144。
秘密保持程序生成部203從功能提供指令群生成部201取得功能 提供指令群3。秘密保持程序生成部203使用選擇參數(shù)群( <常數(shù)值 B(=2)' 、 (6' 、 )與式1,確定插入所取得的功能提供指令群 3的選擇對象數(shù)據(jù)。這里,由于根據(jù)3個初始值(<2' 、 <6' 、 '1,) 與式l算出值'6',所以秘密保持程序生成部203將功能提供指令 群3插入到存儲在程序存儲部210中的選擇對象數(shù)據(jù)146中。秘密保 持程序生成部203將'6'存儲在位置存儲部211中。此時,位置存 儲部211中存儲值、 M, 、 <6'。
秘密保持程序生成部203生成插入到選擇對象數(shù)據(jù)146中的更新 處理指令群166。這里,秘密保持程序生成部203將第2選擇參數(shù)用 變量的值'6'存儲在第3選擇參數(shù)用變量中,將第1選擇參數(shù)用變 量的值存儲在第2選擇參數(shù)用變量中。秘密保持程序生成部203 使用存儲在位置存儲部211中的1個以上的值,取得'0,,作為常 數(shù)值C,以便作為常數(shù)值C,將第1 第3選擇參數(shù)用變量的值'(常 數(shù)值C), 、 '2' 、 '6'代入式1得到的值變?yōu)椴槐硎敬饲斑x擇的1 個以上選擇對象數(shù)據(jù)的值。秘密保持程序生成部203生成包含取得的 常數(shù)值(3(= <0')的、執(zhí)行選擇參數(shù)群的值的更新的更新處理指令群 166,將生成的更新處理指令群166插入到存儲在程序存儲部210中 的選擇對象數(shù)據(jù)146中。
秘密保持程序生成部203生成插入到選擇對象數(shù)據(jù)146中的分支 指令群176。這里,秘密保持程序生成部203生成執(zhí)行將控制返回到 調(diào)用源程序的處理的分支指令群176,將生成的分支指令群176插入 到存儲在程序存儲部210中的選擇對象數(shù)據(jù)146中。由此,生成構(gòu)成 秘密保持程序的選擇對象數(shù)據(jù)146。另外,在最后的功能提供指令群 3(選擇對象主要指令群156)自身以return語句結(jié)束的情況下,不必更 改追加return語句。
接著,秘密保持程序生成部203取得未插入功能提供指令群或偽 功能提供指令群的選擇對象數(shù)據(jù)140。秘密保持程序生成部203在取 得的選擇對象數(shù)據(jù)140中插入未被插入到選擇對象數(shù)據(jù)中的1個以上 偽功能提供指令群中的1個偽功能提供指令群。秘密保持程序生成部 203生成包含<0, ~ '6,中未被用作常數(shù)值的值(這里為'1,)的、 執(zhí)行選擇參數(shù)群的值的更新的更新處理指令群160,將生成的更新處 理指令群160插入選擇對象數(shù)據(jù)140中。
秘密保持程序生成部203生成插入到選擇對象數(shù)據(jù)140中的分支 指令群170。這里,秘密保持程序生成部203生成分支到選擇處理指 令群120的分支指令群170,將生成的分支指令群170插入選擇對象 數(shù)據(jù)140中。由此,生成構(gòu)成秘密保持程序的選擇對象數(shù)據(jù)140。
選擇對象數(shù)據(jù)141、 143、 145的生成與選擇對象數(shù)據(jù)140的生成 一樣,所以這里省略說明。
這里,說明功能提供指令群插入時的常數(shù)值的取得方法。將選擇 對象數(shù)據(jù)的個數(shù)設(shè)為m個。
秘密保持程序生成部203在<0' 'm-l'的整數(shù)中隨機選擇l 個整數(shù)、',將第1 第3選擇參數(shù)用變量的值分別設(shè)為'n,、 <第 l選擇參數(shù)用變量的值'、^第2選擇參數(shù)用變量的值',代入式l, 算出值。在算出的值未存在于位置存儲部211中的情況下,秘密保持 程序生成部203將選擇到的整數(shù)、'設(shè)為常數(shù)值。在算出的值存在 于位置存儲部211中的情況下,秘密保持程序生成部203在'0' ~ ^m-l'的整數(shù)中再次隨機選擇1個整數(shù)'n',重復(fù)上述動作,直到 式1算出未存在于位置存儲部211中的值為止。
秘密保持程序生成部203當(dāng)全部的功能提供指令群的插入結(jié)束 時,向多個偽功能提供指令群的每個,分配<0' ~ ^m-l'的整數(shù)中 未使用的整數(shù)。
另外,整數(shù)V從'0' ~ 'm-r的整數(shù)中選擇,但不限于此。 選擇的整數(shù)只要是O以上的整數(shù)即可。此時,即便偽功能提供指令群 的插入目的地也可使用上述所示的常數(shù)值的算出方法來確定。
(5)秘密保持程序100的生成
秘密保持程序生成部203通過按圖2所示的順序配置存儲在程序 存儲部210中的預(yù)處理指令群110、選擇處理指令群120、變遷處理
指令群130、和選擇對象數(shù)據(jù)140、 141..... 146,生成秘密保持程
序100。
1.4.5程序難破解化裝置10的動作 (l)動作概要
這里,用圖7所示的流程圖來說明程序難破解化裝置10的動作
概要。
程序難破解化裝置10的輸入部200在由正常系統(tǒng)執(zhí)行難破解化
對象程序與秘密保持程序100時,接收提供給秘密保持程序的3個初 始值(這里為",、'2, 、 <3,)(步驟S100)。
功能提供指令群生成部201將由輸入部200接收到的難破解化對 象程序,分割成由l個以上程序指令構(gòu)成的多個塊,生成多個功能提 供指令群(步驟S105)。
偽功能提供指令群生成部202生成多個使由記述難破解化對象 程序的編程語言記述的1個以上程序指令隨機組合的、偽功能提供指 令群(步驟SllO)。
秘密保持程序生成部203生成預(yù)處理指令群(步驟S115),該預(yù)處 理指令群由第1預(yù)處理程序指令群和分支到選擇處理指令群的第2預(yù) 處理程序指令群構(gòu)成,并按此順序執(zhí)行,該第1預(yù)處理程序指令群從 調(diào)用源程序接收32比特的輸入值inl、 in2、 in3,將接收到的值作為 選擇參數(shù)群的初始值,存儲在選擇參數(shù)用變量中。
秘密保持程序生成部203生成選擇處理指令群(步驟S120),該選 擇處理指令群由使用選擇參數(shù)群算出選擇識別符的第1選擇處理程 序指令群、和分支到變遷處理指令群的第2選擇處理程序指令群構(gòu) 成,按此順序執(zhí)行。這里,秘密保持程序生成部203生成算出式1 '2x(第1選擇參數(shù)用變量)+3x(第2選擇參數(shù)用變量)+5x(第3選擇參
數(shù)用變量)M0D7'的程序指令群,作為第1選擇處理程序指令群。
秘密保持程序生成部203根據(jù)選擇處理指令群算出的選擇識別 符生成變遷處理指令群(步驟125),該變遷處理指令群執(zhí)行分支到多 個選擇對象數(shù)據(jù)中任一選擇對象數(shù)據(jù)的處理。具體而言,秘密保持程 序生成部203取得由功能提供指令群生成部201生成的多個功能提供 指令群的個數(shù)(m個)與由偽功能提供指令群生成部202生成的多個偽 功能提供指令群的個數(shù)(n個),算出其合計值。秘密保持程序生成部 203生成與算出的合計值(這里為7個灘同數(shù)量的標(biāo)簽名。秘密保持 程序生成部203通過對選擇處理指令群120中包含的式1可取的值的 每個、將生成的標(biāo)簽名建立對應(yīng),作為分支目的地,從而生成變遷處 理指令群。
秘密保持程序生成部203使用3個初始值、式l、生成的多個功 能提供指令群和多個偽功能提供指令群,生成與多個功能提供指令群 的個數(shù)和功能提供指令群的個數(shù)的合計值相同數(shù)量的選擇對象數(shù)據(jù) (步驟S130)。
秘密保持程序生成部203通過順序配置生成的預(yù)處理指令群、選 擇處理指令群、變遷處理指令群、和多個選擇對象數(shù)據(jù),從而生成秘 密保持程序(步驟S135)。
(2)選擇對象數(shù)據(jù)的生成處理
這里,用圖8和圖9所示的流程圖來說明圖7的步驟S130所示 的選擇對象數(shù)據(jù)的生成處理的動作。
秘密保持程序生成部203生成僅由生成的各標(biāo)簽名構(gòu)成的選擇 對象數(shù)據(jù)(步驟S200)。
秘密保持程序生成部203對計數(shù)器i設(shè)定l(步驟S205)。這里, 計數(shù)器i表示當(dāng)前著眼的功能提供指令群應(yīng)第幾個被執(zhí)行。
秘密保持程序生成部203從功能提供指令群201取得執(zhí)行順序為 第i個的功能提供指令群。秘密保持程序生成部203使用選擇參數(shù)群 和式1,確定插入了取得的執(zhí)行順序為第i個的功能提供指令群的選 擇對象數(shù)據(jù)。在i為1的情況下,秘密保持程序生成部203使用由3 個初始值構(gòu)成的選擇參數(shù)群和式1,確定選擇對象數(shù)據(jù),在i為2以 上的情況下,秘密保持程序生成部203使用更新后的選擇參數(shù)群和式 1,確定選擇對象數(shù)據(jù)。秘密保持程序生成部203向確定的選擇對象 數(shù)據(jù)中插入執(zhí)行順序為第i個的功能提供指令群(步驟S210)。
秘密保持程序生成部203將第2選擇參數(shù)用變量的值存儲在第3 選擇參數(shù)用變量中,將第1選擇參數(shù)用變量的值存儲在第2選擇參數(shù) 用變量中。秘密保持程序生成部203取得常數(shù)值,以便將第1~第3 選擇參數(shù)用變量的值'常數(shù)值'、、 代入式l得到的值變 為不表示此前選擇的1個以上選擇對象數(shù)據(jù)的值(步驟S215)。
秘密保持程序生成部203生成包含取得的常數(shù)值的、執(zhí)行選擇參 數(shù)群的值的更新的更新處理指令群,將生成的更新處理指令群插入到
選擇對象數(shù)據(jù)中(步驟S220)。
秘密保持程序生成部203判定計數(shù)器i的值是否與功能提供指令 群的個數(shù)m—致(步驟S225)。
在判定為不一致的情況下(步驟S225為'否'),秘密保持程序 生成部203生成分支到選擇處理指令群的分支指令群,將生成的分支 指令群插入選擇對象數(shù)據(jù)中(步驟S230)。
在判定為一致的情況下(步驟S225為 <是,),秘密保持程序生 成部203生成執(zhí)行將控制返回到調(diào)用源程序的處理的分支指令群,將 生成的分支指令群插入到選擇對象數(shù)據(jù)中(步驟S235)。
秘密保持程序生成部203向計數(shù)器i加上值'1 ,(步驟S240)。
秘密保持程序生成部203判定計數(shù)器i是否比功能提供指令群的 個數(shù)大(步驟S243)。
在判定為不大的情況下(步驟S243為 <否'),秘密保持程序生 成部203返回步驟S210,再次重復(fù)處理。
在判定為大的情況下(步驟S243為'是'),秘密保持程序生成 部203在偽功能提供指令群的個數(shù)n之間,重復(fù)步驟S245 步驟S275。
秘密保持程序生成部203取得1個功能提供指令群和偽功能提供 指令群均未插入的選擇對象數(shù)據(jù)、即僅包含標(biāo)簽名的選擇對象數(shù)據(jù) (步驟S250)。
秘密保持程序生成部203取得1個未插入選擇對象數(shù)據(jù)中的偽功 能提供指令群,將取得的偽功能提供指令群插入步驟S250取得的選 擇對象數(shù)據(jù)中(步驟S255)。
秘密保持程序生成部203取得未用作常數(shù)值的值(步驟S260),生 成包含取得的常數(shù)值的、執(zhí)行選擇參數(shù)群的值的更新的更新處理指令 群,將生成的更新處理指令群插入到選擇對象數(shù)據(jù)中(步驟S265)。
秘密保持程序生成部203生成分支到選擇處理指令群的分支指 令群,將生成的分支指令群插入到選擇對象數(shù)據(jù)中(步驟S270)。
秘密保持程序生成部203在偽功能提供指令群的個數(shù)n之前的期 間,重復(fù)步驟S250 步驟S270,結(jié)束處理(步驟S275)。
1.5變形例
根據(jù)上述第1實施方式說明了本發(fā)明,但本發(fā)明當(dāng)然不限于上述 實施方式。下面的情況也包含于本發(fā)明中。
(1) 在上述第1實施方式中,使用式1作為算出選擇識別符的算出 式,但不限于此。算出選擇識別符的算出式只要是使用選擇參數(shù)用變 量的其它公式即可。
另外,即便是對選擇識別符用變量設(shè)定初始值、使用選擇識別符 用變量的公式也無妨。另外,即便是對選擇處理指令群設(shè)定計數(shù)調(diào)用 選擇處理指令群的次數(shù)的計數(shù)器用變量、還使用計數(shù)器用變量的公式 也無妨。
另外,計數(shù)器用變量也可在選擇處理指令群以外執(zhí)行提高計數(shù)器 值的處理。
(2) 在上述第1實施方式中,包含最后功能提供指令群3的選擇對 象數(shù)據(jù)146中也可不包含更新處理指令群166。
(3) 在上述第1實施方式中,將功能提供指令群的數(shù)量設(shè)為3個, 但不限于此。功能提供指令群的數(shù)量是幾個均無妨。
(4) 在上述第1實施方式中,將選擇參數(shù)的數(shù)量設(shè)為3個,但不限 于此。選擇參數(shù)的數(shù)量只要是多個即可。
此時的式1變?yōu)?plx(第1選擇參數(shù)用變量)+p2x(第2選擇參數(shù) 用變量)+...+ 11><(第11選擇參數(shù)用變量)MOD NN, (n為2以上的整
數(shù))。pl、 p2.....pn是互質(zhì)的素數(shù),將NN設(shè)為選擇對象數(shù)據(jù)的數(shù)
量。另外,當(dāng)更新選擇參數(shù)時,將存儲在第i-l參數(shù)中的值存儲在第
i參數(shù)中。此時,按第n參數(shù)、第n-l參數(shù).....第2參數(shù)的順序存
儲。另外,在第1參數(shù)中,存儲執(zhí)行了的選擇對象主要指令群所具有 的常數(shù)值。這里,i是2以上n以下的整數(shù)。
另外,將輸入值的初始值設(shè)為、'2' 、 <3',但也可不 是該值。
另外,將輸入值等設(shè)為32比特的值,但也可以是比32比特短的 比特數(shù),或是比32比特長的比特數(shù)。
(5) 在上述第1實施方式中,也可構(gòu)成為,將選擇對象數(shù)據(jù)140~146 中具有分支指令群170~175的構(gòu)成,變?yōu)楦鬟x擇對象數(shù)據(jù)中具有選擇
處理指令群與變遷處理指令群的構(gòu)成。
(6)在上述第1實施方式中,選擇信息參數(shù)的初始值,也可以是由 預(yù)處理部等使用秘密保持程序以外的程序或執(zhí)行程序的設(shè)備所具有 的功能、來確定作為賦予秘密保持程序的值的構(gòu)成的值。
C7)在秘密保持程序具有秘密信息的情況下,也可置換為使用選擇 參數(shù)用變量、選擇識別符用變量算出秘密信息的值的處理。
(8) 在上述第1實施方式的程序難破解化裝置10中,選擇對象數(shù) 據(jù)的數(shù)量或選擇參數(shù)的數(shù)量未必是固定值,也可以是其它值。
另外,也可將這些值作為輸入賦予程序難破解化裝置。
(9) 在上述第1實施方式中,作為塊的分割的分割方法,這里說明 簡單的方法,但不限于該方法,只要執(zhí)行對應(yīng)于塊分割方式的控制構(gòu) 造的解析,生成對應(yīng)于塊分割方式的功能提供指令群即可。控制構(gòu)造 的解析是公知的,所以省略說明。
(10) 在上述第1實施方式中,程序難破解化裝置IO在確定初始值、 常數(shù)值之后,確定插入功能提供指令群的選擇對象數(shù)據(jù),但不限于此。 程序難破解化裝置10也可在確定功能提供指令群的配置之后,確定 初始值、常數(shù)值。
(11) 在上述第1實施方式中,程序難破解化裝置IO在僅由標(biāo)簽名 構(gòu)成的多個選擇對象數(shù)據(jù)的每個中插入選擇對象主要指令群、更新處 理指令群和分支指令群之后,確定預(yù)處理指令群、選擇處理指令群、 變遷處理指令群、和多個選擇對象數(shù)據(jù)的配置,生成秘密保持程序, 但不限于此。
程序難破解化裝置10也可確定預(yù)處理指令群、選擇處理指令群、 變遷處理指令群、和僅由標(biāo)簽名構(gòu)成的多個選擇對象數(shù)據(jù)的配置,之 后,在僅由標(biāo)簽名構(gòu)成的多個選擇對象數(shù)據(jù)的每個中,插入選擇對象 主要指令群、更新處理指令群和分支指令群,生成秘密保持程序。
(12) 也可分別組合上述實施方式及上述變形例。 1.6匯總
上述第1實施方式所示的秘密保持程序100由于將選擇對象主要 指令群152、 154、 156與實際的執(zhí)行順序無關(guān)地配置在分散的位置上,
所以難以解析執(zhí)行順序。
另外,選擇對象主要指令群152、 154、 156中不包含向其它選擇 對象主要指令群的直接分支指令,所以難以解析執(zhí)行順序。
另外,執(zhí)行確定接著分支到哪個選擇對象數(shù)據(jù)的處理的選擇處理 指令群,是根據(jù)選擇參數(shù)的值的不同、有可能分支到全部選擇對象主 要指令群的程序指令,所以難以解析執(zhí)行順序。并且,選擇對象數(shù)據(jù) 140~146中包含正常系統(tǒng)執(zhí)行時未執(zhí)行的選擇對象數(shù)據(jù)140、 141、 143、 145,所以解析更困難。
在本實施方式中,使用多個選擇參數(shù)來確定選擇對象數(shù)據(jù) 140~146的執(zhí)行順序。從而,即便非法解析者已知執(zhí)行順序的一部分, 也難以知道此外部分的執(zhí)行順序。具體進行說明。例如,在秘密保持 程序是水印檢測的算法的情況下,認(rèn)為非法解析者知道一般的水印處 理、具體而言為一般的水印檢測算法的哪個處理中包含。在這種情況 下,考慮從多個選擇對象數(shù)據(jù)中發(fā)現(xiàn)要執(zhí)行的選擇對象數(shù)據(jù)。此時, 若選擇處理指令群是根據(jù)1個選擇參數(shù)來確定執(zhí)行順序的處理,則非 法解析者可知道只此一個選擇參數(shù)的值。當(dāng)執(zhí)行時,為了分支到要執(zhí) 行的選擇對象數(shù)據(jù),對變遷處理指令群使用哪個選擇識別符進行逆運 算,并且,為了得到該選擇識別符,只要對選擇處理指令群使用什么 樣的選擇參數(shù)進行了處理進行逆運算即可。下面,可通過追蹤選擇參 數(shù)值的變化、選擇處理指令群的處理來知道執(zhí)行順序。
但是,若象本方法那樣使用多個選擇參數(shù),則即便偶爾發(fā)現(xiàn)1個 要執(zhí)行的選擇對象數(shù)據(jù),也不能根據(jù)選擇識別符來逆運算選擇參數(shù)。
還考慮非法解析者偶爾知道連續(xù)執(zhí)行的選擇對象數(shù)據(jù)的情況。在 這種情況下,非法解析者由于可知道更多選擇處理指令群對式1的輸 入輸出組合,所以增多式1中使用的選擇參數(shù)用變量的數(shù)量使解析變 困難。
并且,在本實施例中,存在將選擇參數(shù)更新為選擇對象數(shù)據(jù)的處 理。從而,即便非法解析者已知秘密保持程序與賦予秘密保持程序的 輸入值,只要未順序解析選擇參數(shù)的值如何變化,就不能解析實際執(zhí) 行選擇對象的順序。
另外,在以前,例如使用Switch語句確定執(zhí)行順序的情況下, 在某個塊的最后,直接記述表示接著應(yīng)執(zhí)行的塊的值(Switch語句中 使用的值)。在本實施方式中,通過使用由3個值構(gòu)成的選擇參數(shù)群 來執(zhí)行選擇處理指令群,從而確定接著執(zhí)行的選擇對象數(shù)據(jù)。此時, 首先根據(jù)正當(dāng)?shù)?個初始值,確定第1個執(zhí)行的功能提供指令群。接 著,根據(jù)由更新處理指令群更新后的選擇參數(shù)群(第1次更新選擇參 數(shù)群),確定第2個執(zhí)行的功能提供指令群。第n個執(zhí)行的功能提供 指令群通過依次使用由3個初始值構(gòu)成的選擇參數(shù)群、第1次更新選 擇參數(shù)群、...、第(n-l)次選擇參數(shù)群執(zhí)行選擇處理指令群來確定。這 里,n為l以上的整數(shù)。具體而言,通過按正當(dāng)?shù)捻樞驁?zhí)行更新處理 指令群,生成正當(dāng)更新后的選擇參數(shù)群,使用生成的選擇參數(shù)群執(zhí)行 選擇處理指令群,由此確定第n個執(zhí)行的功能提供指令群。在本實施 方式中,通過依次更新選擇參數(shù)群,可取得Switch語句中使用的值。 即,在本實施方式中,通過在程序上隱匿、依次更新選擇參數(shù)群來取 得Switch語句中使用的值。這樣,將從幾個其它信息取得想隱匿的 信息稱為基于分割秘密的難破解化,本實施方式中的更新處理指令群 相當(dāng)于分割秘密。
2.第2實施方式
下面,參照
作為本發(fā)明第2實施方式的秘密保持程序 300和程序難破解化裝置30。 2.1秘密保持系統(tǒng)2的概要
秘密 保持系統(tǒng)2如圖10所示,由程序難破解化裝置30和程序執(zhí) 行裝置40構(gòu)成。
程序難破解化裝置30根據(jù)想將執(zhí)行順序變?yōu)槊孛艿碾y破解化對 象程序,生成秘密保持程序300,將生成的秘密保持程序300分配給 程序執(zhí)行裝置40。
程序執(zhí)行裝置40執(zhí)行從程序難破解化裝置30分配的秘密保持程 序300。
這里,難破解化對象程序由指令群A、指令群B、指令群C等3 個指令群構(gòu)成,設(shè)通過按指令群A、 B、 C的順序執(zhí)行,可正確動作。
2.2秘密保持程序300的構(gòu)造
這里,說明程序難破解化裝置30生成、程序執(zhí)行裝置40執(zhí)行的 秘密保持程序300的程序構(gòu)造。
秘密保持程序300是使用2個以上秘密信息進行處理的程序。秘 密信息是不想讓非法解析者解析的程序。例如,秘密保持程序300是 使用作為秘密信息的多個子密鑰進行加密處理的程序。要求希望這種 程序中隱匿多個秘密信息。這里,設(shè)指令群A、 B、 C的每個具有秘
密信息o
秘密保持程序300由預(yù)處理指令群310、選擇處理指令群320、 主要處理指令群340、選擇對象數(shù)據(jù)350~356構(gòu)成,它們按圖11所 示的順序配置。
秘密保持程序300是如下程序指令群,即從調(diào)用源程序接收構(gòu) 成選擇參數(shù)群的初始值的32比特的輸入值inl、 in2、 in3、和使用秘 密信息的處理中使用的參數(shù),執(zhí)行使用秘密信息的處理的程序指令 群。在秘密保持程序的處理中,使用的是保持選擇處理指令群320的 處理中使用的多個選擇參數(shù)的各值(這里為3個值)的32比特的變量一 一即第1~第3選擇參數(shù)用變量、保持選擇識別符的32比特的變量一 一即選擇識別符用變量、或存儲變遷處理指令群390-392算出的秘密 信息的32比特的變量一一即秘密信息用變量。這里,選擇參數(shù)是根 據(jù)選擇對象數(shù)據(jù)140、 141、 ...、 146確定1個選擇對象時使用的參數(shù), 選擇識別符是唯一識別選擇對象數(shù)據(jù)的識別符。
這里,設(shè)秘密保持程序?qū)嶋H使用時從調(diào)用源程序接收的輸入值 inl、 in2、 in3為值'1, 、(2, 、 '3,。
秘密保持程序300是執(zhí)行使用2個以上秘密信息的處理的程序指 令群,在本實施例中,將指令群A、 B、 C的每個具有的秘密信息設(shè) 為第1 第3秘密信息,將各個的值設(shè)為<100' 、 '200' 、 200'。
2.2.1預(yù)處理指令群310
預(yù)處理指令群310是算出后述的選擇處理指令群320中使用的選 擇參數(shù)群的初始值的程序指令群。這里,選擇參數(shù)群由第l、第2和 第3選擇參數(shù)用變量構(gòu)成。
53
預(yù)處理指令群310的處理是與上述第1實施方式所示的預(yù)處理指 令群110大致一樣的處理,但不同之處在于預(yù)處理指令群110的最后 是分支到選擇處理指令群120的程序指令群,而預(yù)處理指令群310的 最后是分支到主要處理指令群340的程序指令群。
2.2.2選擇處理指令群320
選擇處理指令群320是根據(jù)選擇參數(shù)群、從選擇對象數(shù)據(jù) 350~356中選擇1個并設(shè)為選擇識別符的程序指令群。
選擇處理指令群320的處理是與選擇處理指令群120 —樣大致同 等的處理,但不同之處在于選擇處理指令群320是子程序(sub routine) o
具體而言,不同之處在于,選擇處理指令群120具有在該指令群 的處理最后分支到變遷處理指令群的程序指令,而選擇處理指令群 320是程序函數(shù),在選擇處理指令群320的最后分支到調(diào)用該函數(shù)的 調(diào)用源。
這里,與選擇處理指令群120—樣,設(shè)使用式1來算出選擇識別符。
2.2.3選擇對象數(shù)據(jù)350~356
選擇對象數(shù)據(jù)350~356是由更新處理指令群讀出的數(shù)據(jù)。 具體而言,選擇對象數(shù)據(jù)350~356例如是陣列數(shù)據(jù),在C語言 的情況下,是如下陣列。
variable_140[7]={l, 2, 3, 4, 5, 6,7};
該陣列是后述的變遷處理指令群390~392使用的陣列,取決于該 陣列與預(yù)處理指令群310設(shè)定給選擇參數(shù)的初始值,確定變遷處理指 令群390~392變?yōu)槟膫€程序指令群。
2.2.4主要處理指令群340
主要處理指令群340是使用秘密信息進行處理的程序指令群。 主要處理指令群340是由功能提供指令群360~362、選擇處理指 令群調(diào)用指令370~372、更新處理指令群380-382、和變遷處理指令 群390~392構(gòu)成的程序指令群,各指令群配置在圖11所示的位置上。
(1) 功能提供指令群360~362
功能提供指令群360是執(zhí)行使用秘密信息的處理的程序指令群。 使用秘密信息的值的程序指令被記述為使用秘密信息用變量的處理。 即,將秘密信息事先變換為秘密信息用變量。若秘密信息用變量的值 為第l秘密信息的值400',則功能提供指令群360是執(zhí)行原來處 理的程序指令群。
功能提供指令群361也是同樣的程序指令群,若存儲在秘密信息 用變量中的值為秘密信息2的值是<200',則功能提供指令群361 是執(zhí)行原來處理的程序指令群。
功能提供指令群362也是同樣的程序指令群,若存儲在秘密信息 用變量中的值為秘密信息3的值是'300',則功能提供指令群362 是執(zhí)行原來處理的程序指令群。
另外,各功能提供指令群中包含的秘密信息被事先變換為秘密信 息用變量。
(2) 選擇處理指令群調(diào)用指令370~372
選擇處理指令群調(diào)用指令370-372是調(diào)用選擇處理指令群320的 程序指令群。
(3) 更新處理指令群380-382
更新處理指令群380是如下程序指令群,即執(zhí)行讀出對應(yīng)于選 擇識別符的選擇對象數(shù)據(jù)的值的處理,之后執(zhí)行使用讀出的值來更新 選擇參數(shù)群的值的處理。
具體而言,更新處理指令群380首先在選擇識別符用變量的值為 0、 1、 ...、 6的情況下,分別讀出存儲在選擇對象數(shù)據(jù)350、 351、...、 356中的值。
接著,更新處理指令群380根據(jù)讀出的值,更新選擇參數(shù)群。這 里,更新處理指令群380將第2選擇參數(shù)的值存儲在第3選擇參數(shù)中, 將第1選擇參數(shù)的值存儲在第2選擇參數(shù)中,將讀出的值存儲在第1 選擇參數(shù)中。
例如,若用C語言的程序指令記載更新處理,則變?yōu)橛?br>
(第3選擇參數(shù)變量)=(第2選擇參數(shù)變量);
(第2選擇參數(shù)變量)-(第1選擇參數(shù)變量);
(第1選擇參數(shù)變量)^ariablej40 [(選擇識別符用變量)];'
表示的程序指令群。
更新處理指令群381~382與更新處理指令群380的構(gòu)成一樣,所 以這里省略說明。
(4)變遷處理指令群390~392
變遷處理指令群390~392是根據(jù)選擇參數(shù)變量的值來確定秘密 信息用變量的值的處理。
具體而言,變遷處理指令群390~392是算出存儲在選擇參數(shù)變量 中的值(秘密信息)、并將算出的值存儲在秘密信息用變量中的程序指 令群。
下面,說明變遷處理指令群390~392的動作細(xì)節(jié)。 (4-l)變遷處理指令群390
變遷處理指令群390是執(zhí)行如下處理的程序指令,S卩執(zhí)行使用 第1 第3選擇參數(shù)用變量的運算,算出第1秘密信息的值,將算出 的值存儲在秘密信息用變量中。
例如,變遷處理指令群390是執(zhí)行如下處理的程序指令群,艮P: 將P4、 P5、 P6設(shè)為互質(zhì)的素數(shù),算出74x(第1選擇參數(shù)用變 量)+P5x(第2選擇參數(shù)用變量)+P6x(第3選擇參數(shù)用變量)+(常數(shù)1),, 將算出的值存儲在秘密信息用變量中。運算符、'表示乘法。這里, 在將P4、 P5、 P6分別設(shè)為值<2, 、 、 '5'的情況下,是算出
式2 <2><(第1選擇參數(shù)用變量)+3x(第2選擇參數(shù)用變量)+5x(第3選 擇參數(shù)用變量)+(常數(shù)l)'、并將算出的值存儲在秘密信息用變量中 的處理。
下面,說明常數(shù)l。
秘密保持程序300中,在執(zhí)行變遷處理指令群390之前,順序執(zhí) 行預(yù)處理指令群310、選擇處理指令群調(diào)用指令370、選擇處理指令 群320、更新處理指令群380。當(dāng)執(zhí)行預(yù)處理指令群310、選擇處理指令群調(diào)用指令370、選擇處理指令群320、和更新處理指令群380 時,將從調(diào)用源程序接收到的輸入值inl、 in2、 in3的值分別作為值 '1, 、 '2' 、 <3'來執(zhí)行。從其它調(diào)用源程序接收到的輸入值也可 以是任意值。
此時,選擇處理指令群320利用式1 <2><(第1選擇參數(shù)用變量 (=1))+3><(第2選擇參數(shù)用變量(=2))+5><(第3選擇參數(shù)用變量(=3)) MOD 7',選擇識別符的值變?yōu)?lt;2',更新處理指令群380從選擇 對象數(shù)據(jù)350 356取得的值變?yōu)?,? 第3選擇參數(shù)變量的更 新后的值變?yōu)?3, 、 'I' 、 <2,。
常數(shù)1是事先設(shè)定的值,以使得將如此得到的第1 第3選擇參 數(shù)變量的值代入式2得到的秘密信息用變量的值變?yōu)榈?秘密信息的 值'100',這里為81。
(4-2)變遷處理指令群391
同樣,變遷處理指令群391是由'2x(第1選擇參數(shù)用變量)+3x(第 2選擇參數(shù)用變量)+5x(第3選擇參數(shù)用變量)+(常數(shù)2)'構(gòu)成的指令 群。
下面,說明常數(shù)2的值。
秘密保持程序300在執(zhí)行變遷處理指令群391之前,順序執(zhí)行預(yù) 處理指令群310、選擇處理指令群調(diào)用指令370、選擇處理指令群320、 更新處理指令群380、變遷處理指令群390、功能提供指令群360、 選擇處理指令群調(diào)用指令371、選擇處理指令群320、更新處理指令 群381。
此時,更新處理指令群381取得的第1~第3選擇參數(shù)變量的值 變?yōu)?6, 、 <3, 、 <1,。若用與上述一樣的方法算出常數(shù)2,則 變?yōu)橹?74,。
(4-3)變遷處理指令群392
同樣,變遷處理指令群392是由'2x(第1選擇參數(shù)用變量)+3x(第 2選擇參數(shù)用變量)+5x(第3選擇參數(shù)用變量)+(常數(shù)3)'構(gòu)成的指令 群。
秘密保持程序300中,在執(zhí)行變遷處理指令群392之前,順序執(zhí)
行預(yù)處理指令群310、選擇處理指令群調(diào)用指令370、選擇處理指令 群320、更新處理指令群380、變遷處理指令群390、功能提供指令 群360、選擇處理指令群調(diào)用指令371、選擇處理指令群320、更新 處理指令群381、變遷處理指令群391、功能提供指令群361、選擇 處理指令群調(diào)用指令372、選擇處理指令群320、和更新處理指令群 382。
此時,更新處理指令群382取得的第1~第3選擇參數(shù)變量的值 變?yōu)?6, 、 乂, 、 '3,。若用與上述一樣的方法算出常數(shù)3,則 變?yōu)橹?255'。
2.3秘密保持程序300的執(zhí)行
用圖12所示的流程圖來說明程序執(zhí)行裝置40由正常系統(tǒng)執(zhí)行秘 密保持程序300時的處理。
秘密保持程序300執(zhí)行預(yù)處理指令群310的處理(步驟S300)。具 體而言,預(yù)處理指令群310執(zhí)行如下處理,即分別接收值<T 、 <2,、 '3,,作為輸入值inl、 in2、 in3,分別將值<1, 、 '2' 、 <3,存 儲到第1~第3選擇參數(shù)用變量中,分支到選擇處理指令群調(diào)用指令 370。
接著,秘密保持程序300執(zhí)行選擇處理指令群調(diào)用指令370的處 理(步驟S305)。具體而言,選擇處理指令群調(diào)用指令370調(diào)用選擇處 理指令群320。
接著,秘密保持程序300使用接收到的輸入值'r、 <2'、 <3', 執(zhí)行選擇處理指令群320的處理(步驟S310)。具體而言,選擇處理指 令群320利用式12x(第1選擇參數(shù)用變量(=1))+3><(第2選擇參數(shù)用 變量—2))+5x(第3選擇參數(shù)用變量e3))MOD7,,算出值<2,,將 算出的值存儲在選擇識別符用變量中。
秘密保持程序300執(zhí)行更新處理指令群380的處理(步驟S315)。 具體而言,更新處理指令群380利用選擇識別符用變量的值'2,, 讀出選擇對象數(shù)據(jù)352的值。,。更新處理指令群380將第2選擇
參數(shù)的值'2'存儲在第3選擇參數(shù)中,將第i選擇參數(shù)的值'r存
儲在第2選擇參數(shù)中,將讀出的值'3'存儲在第l選擇參數(shù)中。
秘密保持程序300使用更新處理指令群380生成的選擇參數(shù)群 (第1~第3選擇參數(shù)),執(zhí)行變遷處理指令群390的處理(步驟S320)。 具體而言,變遷處理指令群390使用式2 2x(第1選擇參數(shù)用變 量)+3x(第2選擇參數(shù)用變量)+5x(第3選擇參數(shù)用變量)+(常數(shù)l)', 算出存儲在秘密信息用變量中的值,將算出的值存儲在秘密信息變量 中。這里,將"00'存儲在秘密信息變量中。
秘密保持程序300根據(jù)存儲在秘密信息變量中的值,執(zhí)行功能提 供指令群360的處理(步驟S325)。具體而言,功能提供指令群360執(zhí) 行難破解化對象程序中的指令群A。
接著,秘密保持程序300執(zhí)行選擇處理指令群調(diào)用指令371的處 理(步驟S330)。具體而言,選擇處理指令群調(diào)用指令371調(diào)用選擇處 理指令群320。
接著,秘密保持程序300使用第1 第3選擇參數(shù)的值、 T 、 <2,,執(zhí)行選擇處理指令群320的處理(步驟S335)。具體而言,選擇 處理指令群320利用式1 '2x(第1選擇參數(shù)用變量^3))+3x(第2選擇 參數(shù)用變量(^))+5x(第3選擇參數(shù)用變量(=2)) MOD 7',算出值<5', 將算出的值存儲在選擇識別符用變量中。
秘密保持程序300執(zhí)行更新處理指令群381的處理(步驟S340)。 具體而言,更新處理指令群381利用選擇識別符用變量的值, 讀出選擇對象數(shù)據(jù)355的值'6'。更新處理指令群381將第2選擇 參數(shù)的值"'存儲在第3選擇參數(shù)中,將第l選擇參數(shù)的值存 儲在第2選擇參數(shù)中,將讀出的值'6'存儲在第l選擇參數(shù)中。
秘密保持程序300使用更新處理指令群381生成的選擇參數(shù)群 (第1~第3選擇參數(shù)),執(zhí)行變遷處理指令群391的處理(步驟S345)。 具體而言,變遷處理指令群391使用式2 '2x(第1選擇參數(shù)用變 量)+3x(第2選擇參數(shù)用變量)+5x(第3選擇參數(shù)用變量)+(常數(shù)2),, 算出存儲在秘密信息用變量中的值,將算出的值存儲在秘密信息變量 中。這里,將'200'存儲在秘密信息變量中。
秘密保持程序300根據(jù)存儲在秘密信息變量中的值,執(zhí)行功能提 供指令群361的處理(步驟S350)。具體而言,功能提供指令群361執(zhí)
行難破解化對象程序中的指令群B。
接著,秘密保持程序300執(zhí)行選擇處理指令群調(diào)用指令372的處 理(步驟S355)。具體而言,選擇處理指令群調(diào)用指令372調(diào)用選擇處 理指令群320。
接著,秘密保持程序300使用第1~第3選擇參數(shù)的值<6' 、 2'、 'T ,執(zhí)行選擇處理指令群320的處理(步驟S360)。具體而言,選擇 處理指令群320利用式1 '2x(第1選擇參數(shù)用變量(-6))+3x(第2選擇 參數(shù)用變量(=3))+5><(第3選擇參數(shù)用變量(=1)) MOD 7',算出值<5', 將算出的值'5'存儲在選擇識別符用變量中。
秘密保持程序300執(zhí)行更新處理指令群382的處理(步驟S365)。 具體而言,更新處理指令群382利用選擇識別符用變量的值'5', 讀出選擇對象數(shù)據(jù)355的值'6'。更新處理指令群382將第2選擇 參數(shù)的值'3'存儲在第3選擇參數(shù)中,將第l選擇參數(shù)的值'6'存 儲在第2選擇參數(shù)中,將讀出的值、'存儲在第l選擇參數(shù)中。
秘密保持程序300使用更新處理指令群382生成的選擇參數(shù)群 (第1~第3選擇參數(shù)),執(zhí)行變遷處理指令群392的處理(步驟S370)。 具體而言,變遷處理指令群392使用式2 2x(第1選擇參數(shù)用變 量)+3x(第2選擇參數(shù)用變量)+5x(第3選擇參數(shù)用變量)+(常數(shù)3),, 算出存儲在秘密信息用變量中的值,將算出的值存儲在秘密信息變量 中。這里,將'300'存儲在秘密信息變量中。
秘密保持程序300根據(jù)存儲在秘密信息變量中的值,執(zhí)行功能提 供指令群362的處理(步驟S375)。具體而言,功能提供指令群362執(zhí) 行難破解化對象程序中的指令群C。
2.4程序難破解化裝置30
這里,描述根據(jù)想隱匿執(zhí)行順序的難破解化對象程序、生成秘密 保持程序300的程序難破解化裝置30。秘密保持程序300中,功能 提供指令群360-362、變遷處理指令群390 392以外的各部可對任何 難破解化對象程序共同使用。這里,主要描述功能提供指令群、變更 處理指令群的生成。
程序難破解化裝置30如圖13所示,由輸入部400、功能提供指 令群生成部401、變遷處理指令群生成部402、秘密保持程序生成部 403構(gòu)成。
程序難破解化裝置30具體而言,是由微處理器、ROM、 RAM、 硬盤單元、顯示器單元、鍵盤、鼠標(biāo)等構(gòu)成的計算機系統(tǒng)。在所述 RAM或所述硬盤單元中存儲計算機程序。這里,計算機程序為了實 現(xiàn)規(guī)定的功能,組合多個表示對計算機的指令的指令代碼來構(gòu)成。通 過所述微處理器根據(jù)所述計算機程序動作,程序難破解化裝置30實 現(xiàn)其功能。即,所述微處理器l個個地讀出所述計算機程序中包含的 各指令,解讀讀出的指令,根據(jù)解讀結(jié)果進行動作。
2.4.1輸入部400
當(dāng)由正常系統(tǒng)執(zhí)行難破解化對象的程序與秘密保持程序300時, 接收提供給秘密保持程序300的3個初始值(這里為'l' 、 、 '3,)、和表示秘密信息的位置的位置信息(這里為表示3個秘密信息 <100, 、 '200, 、 '300,出現(xiàn)的位置的信息)。
2.4.2功能提供指令群生成部401
功能提供指令群生成部401將由輸入部400接收的難破解化對象 程序分割成由1個以上程序指令構(gòu)成的多個塊,生成功能提供指令 群。在難破解化對象程序中包含無條件跳躍、有條件跳躍的情況下, 分割成執(zhí)行跳躍的程序指令與跳躍目的地的程序指令包含于同一塊 中。另外,構(gòu)成塊,使得執(zhí)行使用了秘密信息的值的處理的程序指令 包含于各不相同的塊中。
這里,設(shè)難破解化對象程序是使用3個秘密信息的值的處理,分 割成3個塊,以使得分割后的各部中包含的指令數(shù)盡可能均等,生成 3個功能提供指令群。生成的功能提供指令群按構(gòu)成基礎(chǔ)的程序指令 群在難破解化對象程序中位于初始的順序,設(shè)為功能提供指令群1~3 。
2.4.3變遷處理指令群生成部402
變遷處理指令群生成部402生成包含常數(shù)未確定的式2的變遷處 理指令群,生成的個數(shù)為功能提供指令群生成部401所生成的功能提 供指令群的個數(shù)。
這里,變遷處理指令群生成部402生成3個包含常數(shù)未確定的式 2的變遷處理指令群。
2.4.4秘密保持程序生成部403
秘密保持程序生成部403通過使用多個功能提供指令群和數(shù)量 與功能提供指令群相同的變遷處理指令群,生成預(yù)處理指令群310、 選擇處理指令群320、選擇處理指令群調(diào)用指令370~372、更新處理 指令群380~382、和選擇對象數(shù)據(jù)350 351,生成秘密保持程序300。 秘密保持程序生成部403如圖13所示,具有程序存儲部410。 程序存儲部410具有存儲生成的各指令群和選擇對象數(shù)據(jù)的區(qū)域。
秘密保持程序生成部403取得由功能提供指令群生成部401生成 的多個功能提供指令群,將取得的多個功能提供指令群存儲在程序存 儲部410中。
秘密保持程序生成部403取得由變遷處理指令群生成部402生成 的、數(shù)量與功能提供指令群的個數(shù)相同的變遷處理指令群,將取得的 多個變遷處理指令群存儲在程序存儲部410中。
(1) 預(yù)處理指令群310的生成
秘密保持程序生成部403生成預(yù)處理指令群310,該預(yù)處理指令 群310由第1預(yù)處理程序指令群和分支到選擇處理指令群調(diào)用指令的 第2預(yù)處理程序指令群構(gòu)成,并按此順序執(zhí)行,其中該第1預(yù)處理程 序指令群從調(diào)用源程序接收32比特的輸入值inl、 in2、 in3,將接收 到的值作為選擇參數(shù)群的初始值,存儲在選擇參數(shù)用變量中。
秘密保持程序生成部403將生成的預(yù)處理指令群310存儲在程序 存儲剖410中。
(2) 選擇處理指令群320的生成
秘密保持程序生成部403根據(jù)選擇參數(shù)群,生成選擇處理指令群 320,該選擇處理指令群320從選擇對象數(shù)據(jù)350-356中選擇1個, 并作為選擇識別符。
選擇處理指令群320的處理是與選擇處理指令群120同樣大致同 等的處理,但不同之處在于選擇處理指令群320是子程序。具體而言, 不同之處在于,選擇處理指令群120具有在該指令群的處理的最后分
支到變遷處理指令群的程序指令,而選擇處理指令群320是程序函 數(shù),在選擇處理指令群320的最后分支到調(diào)用該函數(shù)的調(diào)用源。這里, 設(shè)與選擇處理指令群120 —樣,使用式1來算出選擇識別符。
秘密保持程序生成部403將生成的選擇處理指令群320存儲在程 序存儲部410中。
(3) 選擇處理指令群調(diào)用指令370-372的生成 秘密保持程序生成部403生成調(diào)用選擇處理指令群320的選擇處
理指令群調(diào)用指令370~372。
秘密保持程序生成部403將生成的選擇處理指令群調(diào)用指令 370-372存儲到程序存儲部410中。
(4) 更新處理指令群380~382的生成
秘密保持程序生成部403生成執(zhí)行如下處理的更新處理指令群 380~382, g卩執(zhí)行讀出對應(yīng)于選擇識別符的選擇對象數(shù)據(jù)的值的處 理,之后,使用讀出的值,更新選擇參數(shù)群的值。
秘密保持程序生成部403將生成的更新處理指令群380-382存儲 到程序存儲部410中。
(5) 選擇對象數(shù)據(jù)350~351的生成
秘密保持程序生成部403生成由更新處理指令群380~382讀出的 數(shù)據(jù)、即選擇對象數(shù)據(jù)350 356。秘密保持程序生成部403將生成的 選擇對象數(shù)據(jù)350~356存儲到程序存儲部410中。
具體而言,選擇對象數(shù)據(jù)350 356例如是陣列數(shù)據(jù),在C語言 的情況下,是如下排列。
variable—140[7]={1, 2, 3, 4, 5, 6, 7};
利用秘密保持程序生成部403的上述動作,可將本發(fā)明的選擇對 象數(shù)據(jù)處理為數(shù)據(jù)。
(6) 秘密保持程序300的生成
秘密保持程序生成部403通過按圖11所示的順序配置存儲在程 序存儲部410中的預(yù)處理指令群310、選擇處理指令群320、功能提 供指令群360~362、選擇處理指令群調(diào)用指令370~372、更新處理指 令群380-382、變遷處理指令群390~392和選擇對象數(shù)據(jù)350 356, 從而生成變遷處理指令群390-392中包含的各常數(shù)未確定的秘密保 持程序300a。
之后,秘密保持程序生成部403使用由輸入部400接收到的初始 值(<1, 、 '2, 、 '3,),執(zhí)行生成的秘密保持程序300a,直到更 新處理指令群380的處理為止。之后,秘密保持程序生成部403在變 遷處理指令群390的執(zhí)行時,使用由輸入部400接收到的秘密信息 '100',確定常數(shù)l,將確定的常數(shù)1代入變遷處理指令群390中包 含的式2中。
秘密保持程序生成部403接著執(zhí)行,直到更新處理指令群381的 處理為止。之后,秘密保持程序生成部403在變遷處理指令群391的 執(zhí)行時,使用由輸入部400接收到的秘密信息'200',確定常數(shù)2, 將確定的常數(shù)2代入變遷處理指令群391中包含的式2中。
秘密保持程序生成部403接著執(zhí)行,直到更新處理指令群382的 處理為止。之后,秘密保持程序生成部403在變遷處理指令群392的 執(zhí)行時,使用由輸入部400接收到的秘密信息'300',確定常數(shù)3, 將確定的常數(shù)3代入變遷處理指令群392中包含的式2中。
由此,秘密保持程序生成部403可生成確定了變遷處理指令群 390~392中包含的各常數(shù)的秘密保持程序300。
秘密保持程序生成部403通過配置選擇處理指令群調(diào)用指令 370-372、更新處理指令群380 382、變遷處理指令群390~392,確定 各常數(shù),并代入對應(yīng)的變遷處理指令群的式2中,從而可將各指令群 插入適當(dāng)?shù)呐渲梦恢蒙稀?br>
秘密保持程序生成部403根據(jù)由輸入部400接收到的位置信息, 將秘密信息變換為秘密信息用變量。由此,可將生成的秘密保持程序 變?yōu)槭褂檬孪茸儞Q了應(yīng)隱匿的秘密信息的秘密變量的處理。
2.4.5程序難破解化裝置30的動作
這里,用圖14所示的流程圖來說明程序難破解化裝置30的動作。 程序難破解化裝置30的輸入部400在由正常系統(tǒng)執(zhí)行難破解化
對象程序與秘密保持程序300時,接收提供給秘密保持程序的3個初 始值(這里為'1, 、 <2' 、 '3')和表示秘密信息的位置的位置信息 (這里為表示3個秘密信息400' 、 '200' 、 '300'的位置的信息)(步 驟S,。
功能提供指令群生成部401將由輸入部400接收到的難破解化對 象程序分割成由1個以上程序指令構(gòu)成的多個塊,生成多個功能提供 指令群(這里為功能提供指令群360 362)(步驟S405)。
變遷處理指令群生成部402生成包含常數(shù)未確定的式2的變遷處 理指令群,生成的個數(shù)為步驟S405生成的功能提供指令群的個數(shù)(步 驟S410)。這里,變遷處理指令群生成部402生成包含常數(shù)未確定的 式2的變遷處理指令群390~392。
秘密保持程序生成部403生成預(yù)處理指令群310(步驟S415)。
秘密保持程序生成部403生成選擇處理指令群320(步驟S420)。
秘密保持程序生成部403生成數(shù)量與所生成的功能提供指令群 的數(shù)量相同的選擇處理指令群調(diào)用指令370 372(步驟S425)。
秘密保持程序生成部403生成數(shù)量與所生成的功能提供指令群 的數(shù)量相同的更新處理指令群380~382(步驟S430)。
秘密保持程序生成部403生成選擇對象數(shù)據(jù)350 356(步驟 S435)。
秘密保持程序生成部403確定生成的預(yù)處理指令群310、選擇處 理指令群320、功能提供指令群360~362、選擇處理指令群調(diào)用指令 370~372、更新處理指令群380~382、變遷處理指令群390-392和選 擇對象數(shù)據(jù)350-356的配置,生成秘密保持程序300a(步驟S440)。
秘密保持程序生成部403使用步驟S400接收到的3個初始值、3 個秘密信息與秘密保持程序300a,確定未確定的各常數(shù),將各秘密 信息變換為秘密信息用變量,生成秘密保持程序300(步驟S445)。
2.5變形例
根據(jù)上述第2實施方式說明了本發(fā)明,但本發(fā)明當(dāng)然不限于上述 實施方式。下面的情況也包含于本發(fā)明中。
(1)在上述第2實施方式中,使用式2作為算出秘密信息的算出式, 但不限于此。算出秘密信息的算出式即便是使用選擇參數(shù)用變量的其 它公式也無妨。
(2) 在上述第2實施方式中,與第1實施方式一樣,使用式1作為 算出選擇識別符的算出式,但不限于此。算出選擇識別符的算出式即 便是使用選擇參數(shù)用變量的其它公式也無妨。
另外,即便是對選擇識別符用變量設(shè)定初始值、使用選擇識別符 用變量的公式也無妨。另外,即便是對選擇處理指令群設(shè)定計數(shù)調(diào)用 選擇處理指令群的次數(shù)的計數(shù)器用變量、還使用計數(shù)器用變量的公式 也無妨。
另外,計數(shù)器用變量也可在選擇處理指令群以外執(zhí)行提高計數(shù)器 值的處理。
(3) 在上述第2實施方式中,將功能提供指令群的數(shù)量設(shè)為3個, 但不限于此。功能提供指令群的數(shù)量是幾個均無妨。
(4) 在上述第2實施方式中,將選擇參數(shù)的數(shù)量設(shè)為3個,但不限 于此。選擇參數(shù)的數(shù)量只要是多個即可。
此時的式2變?yōu)?plx(第1選擇參數(shù)用變量)+p2x(第2選擇參數(shù) 用變量)+...+ 11><(第11選擇參數(shù)用變量)+常數(shù)值'(11為2以上的整數(shù))。
pl、 p2.....pn是互質(zhì)的素數(shù)。另外,當(dāng)更新選擇參數(shù)時,將存儲
在第i-l參數(shù)中的值存儲在第i參數(shù)中。此時,按第n參數(shù)、第n-l
參數(shù).....第2參數(shù)的順序存儲。另外,在第1參數(shù)中,存儲從對應(yīng)
于選擇識別符的選擇對象數(shù)據(jù)中讀出的值。這里,i是2以上n以下 的整數(shù)。
另外,將輸入值的初始值設(shè)為、 '2' 、 ,但也可不
是該值。
另外,將輸入值等設(shè)為32比特的值,但也可以是比32比特短的 比特數(shù),或是比32比特長的比特數(shù)。
(5) 在上述第2實施方式中,選擇信息參數(shù)的初始值,也可以是由 預(yù)處理部等使用秘密保持程序以外的程序或執(zhí)行程序的設(shè)備所具有 的功能、來確定作為賦予秘密保持程序的值的構(gòu)成的值。
(6) 在秘密保持程序具有秘密信息的情況下,也可置換為使用選擇
參數(shù)用變量、選擇識別符用變量算出秘密信息的值的處理。
(7) 在上述第2實施方式的程序難破解化裝置30中,選擇對象數(shù)
據(jù)的數(shù)量或選擇參數(shù)的數(shù)量未必是固定值,也可以是其它值。 另外,也可將這些值作為輸入賦予程序難破解化裝置。
(8) 在上述第2實施方式中,作為塊的分割的分割方法,這里說明 簡單的方法,但不限于該方法,只要執(zhí)行對應(yīng)于塊分割方式的控制構(gòu) 造的解析,生成對應(yīng)于塊分割方式的功能提供指令群即可??刂茦?gòu)造 的解析在編譯器領(lǐng)域是公知的,所以省略說明。
(9) 在上述第2實施方式中,程序難破解化裝置30在確定式2中 的各常數(shù)之后,將秘密信息變換為秘密信息用變量,^L不限于此。程 序難破解化裝置30也可在生成多個功能提供指令群時,將秘密信息 變換為秘密信息用變量。即,程序難破解化裝置30也可在確定式2 中的各常數(shù)之前,將秘密信息變換為秘密信息用變量。此時,程序難 破解化裝置30暫時存儲各秘密信息,當(dāng)確定式2中的各常數(shù)時,使 用暫時存儲的秘密信息。
(10) 也可分別組合上述實施方式及上述變形例。 2.6匯總
在上述第2實施方式中,選擇對象的執(zhí)行順序由選擇參數(shù)的初始 值確定,所以對于僅看到程序而不知道選擇參數(shù)的初始值的非法解析 者而言,難以解析選擇對象數(shù)據(jù)的執(zhí)行順序。
另外,在第2實施方式中,在更新處理指令群中存在更新選擇參 數(shù)的處理。從而,即便非法解析者知道秘密保持程序與賦予秘密保持 程序的輸入值,若未順序解析選擇參數(shù)的值如何變化,則不能解析實 際執(zhí)行選擇對象的順序。
3,第3實施方式
下面,參照
作為本發(fā)明第3實施方式的秘密保持程序 500、程序難破解化裝置50和秘密處理裝置60。
在非專利文獻(xiàn)2和第1實施方式的難破解化方法中,在正確的步 驟下僅能1次1個地執(zhí)行各塊。當(dāng)非法解析者知道該情況時,可執(zhí)行 有效的解析。
例如,在第1實施方式中,不知道程序的正確初始值組合的非法
解析者在將初始值的組合假設(shè)為'0, 、 、 '0,的情況下,秘
密保持程序100首先當(dāng)執(zhí)行式1時取得選擇識別符<0',并分支到 選擇對象數(shù)據(jù)143。之后,通過執(zhí)行更新處理指令群163,各選擇參 數(shù)的值分別變?yōu)?,、'0, 、 '0,。秘密保持程序100再使用更 新后的值<1' 、 '0' 、 '0',當(dāng)執(zhí)行式1時取得選擇識別符'2,, 并分支到選擇對象數(shù)據(jù)142。之后,通過執(zhí)行更新處理指令群162,
各選擇參數(shù)的值分別變?yōu)?6' 、 <r 、 W 。秘密保持程序100
再使用更新后的值、'、<r 、 'o',當(dāng)執(zhí)行式i時取得選擇識 別符"',將各選擇參數(shù)更新為。'、'6' 、 'r 。秘密保持程
序100使用值<3' 、 <6' 、 'r ,當(dāng)執(zhí)行式1時取得選擇識別符
'r 。這要執(zhí)行2次選擇對象數(shù)據(jù)14i 。
并且,若非法解析者知道相同塊不重復(fù)執(zhí)行,則可知道將此時選
擇對象數(shù)據(jù)141重復(fù)執(zhí)行的初始值的組合假設(shè)為'0' 、 、 '0'
的執(zhí)行步驟是錯誤的。這種情況下,非法解析者將知道該假設(shè)錯誤, 不再繼續(xù)解析之后的塊并制作出水印去除工具,可有效解析。
因此,在本實施方式中,提供一種秘密保持系統(tǒng)3,無論使用什
么樣的初始值的組合,相同的塊都不重復(fù)執(zhí)行。
3.1秘密保持系統(tǒng)3的概要
秘密保持系統(tǒng)3如圖15所示,由程序難破解化裝置50、和秘密 處理裝置60構(gòu)成。
程序難破解化裝置50根據(jù)想隱匿執(zhí)行順序的難破解化對象程 序,生成秘密保持程序500,將生成的秘密保持程序500分配給秘密 處理裝置60。
秘密處理裝置60執(zhí)行從程序難破解化裝置50分配的秘密保持程 序500。
3.2秘密保持程序500的構(gòu)造
說明秘密保持程序500的構(gòu)造。秘密保持程序500是被難破解化 成非法解析者不能解析程序中包含的程序指令群按什么樣的執(zhí)行順 序執(zhí)行的程序。
秘密保持程序500如圖16所示,由預(yù)處理指令群510、選擇處 理指令群520、管理信息更新指令群525、變遷處理指令群530、選 擇對象數(shù)據(jù)540、 541、 ...、 546構(gòu)成,它們按圖16所示的順序配置。
選擇對象數(shù)據(jù)540~546分別由選擇對象主要指令群550~556、更 新處理指令群560~566、分支指令群570 576構(gòu)成,它們按圖16所 示的順序配置。各指令部是由1個以上程序指令構(gòu)成的程序指令群。 選擇對象主要指令群550~556是表示該程序提供的功能(例如水印檢 測功能)的處理的一部分的程序指令群,或是與提供的功能無關(guān)、在 正常系統(tǒng)執(zhí)行時不執(zhí)行的指令群。這里,所謂正常系統(tǒng)是指不執(zhí)行使 用調(diào)試工具等強制變更程序計數(shù)器或選擇參數(shù)等特別操作來執(zhí)行秘 密保持程序500的情況。
難破解對象程序例如是執(zhí)行圖17所示的控制流程的程序的程 序。這里,圖17中的第1功能提供指令群601、第2功能提供指令 群602、第3功能提供指令群603是程序指令的集合,是在按圖17 所示的流程執(zhí)行的情況下輸出適當(dāng)結(jié)果的指令群。但是,由于若按該 順序不變地對其加以執(zhí)行,則容易解析,所以秘密保持程序500中實 施難以解析該執(zhí)行順序的難破解化。即,秘密保持程序500被難破解
化,以使得在多個選擇對象數(shù)據(jù)540~546之一中包含第1功能提供指 令群601、第2功能提供指令群602、第3功能提供指令群603。
這里,設(shè)選擇對象數(shù)據(jù)545、 546、 543中分別包含第1功能提供 指令群601、第2功能提供指令群602、第3功能提供指令群603, 當(dāng)正常系統(tǒng)執(zhí)行時,作為依次選擇并執(zhí)行選擇對象數(shù)據(jù)545、 546、 543,繼續(xù)說明。另外,未分配第1~第3功能提供指令群的選擇對象 數(shù)據(jù)540、 541、 542、 544是正常系統(tǒng)未執(zhí)行的選擇對象數(shù)據(jù)。這些 數(shù)據(jù)是有時在不知道正常執(zhí)行順序的非法解析者利用窮舉攻擊進行 解析時執(zhí)行的選擇對象數(shù)據(jù),為了非法解析者難以得到第1~第3功 能提供指令群而組裝。下面,將這種指令群稱為偽功能提供指令群。
這里,圖18中示出秘密保持程序500的控制流程的一例。秘密 保持程序500如該控制流程所示,首先依次執(zhí)行預(yù)處理指令群510、 選擇處理指令群520、管理信息更新指令群525、變遷處理指令群530,之后,根據(jù)變遷處理指令群530,執(zhí)行選擇對象數(shù)據(jù)540 546之一。 秘密保持程序500重復(fù)該處理,直到執(zhí)行選擇對象數(shù)據(jù)543為止。秘 密保持程序500構(gòu)造成即便知道變遷處理指令群130執(zhí)行哪個分支, 也不知道執(zhí)行選擇對象數(shù)據(jù)的順序。
這里,圖19示出用C語言記述的秘密保持程序500a,作為秘密 保持程序500的具體例。
程序指令群510a對應(yīng)于預(yù)處理指令群510,程序指令群520a對 應(yīng)于選擇處理指令群520,程序指令群525a對應(yīng)于管理信息更新指 令群525,程序指令群530a對應(yīng)于變遷處理指令群530。另外,程序 指令群540a、 543a、 545a、 546a分別對應(yīng)于選擇對象數(shù)據(jù)540、 543、 545、 546。
程序指令群550a、 553a、 555a、 556a分別對應(yīng)于選擇對象主要 指令群550、 553、 555、 556。程序指令群560a、 563a、 565a、 566a 分別對應(yīng)于更新處理指令群560、 563、 565、 566。程序指令群570a、 573a、 575a、 576a分別對應(yīng)于分支指令群570、 573、 574、 576。另 外,對應(yīng)于選擇對象數(shù)據(jù)541、 542、 544的具體例為了附圖方便未被
記述o
另外,圖20中具體示出圖19所示的程序的處理流程。
秘密保持程序500是如下程序指令群,g卩從調(diào)用源程序接收輸 入值in—1、 in—2、和執(zhí)行該程序提供的功能的處理時使用的參數(shù),執(zhí) 行該程序提供的功能的預(yù)處理的程序指令群。這里,設(shè)輸入值in_l 和in—2是選擇處理指令群520的處理中使用的選擇參數(shù)CP—1和CP—2 的初始值。在本實施方式中,由于選擇對象數(shù)據(jù)的數(shù)量為7個,所以 說明為in—1和in_2是不足7的非負(fù)整數(shù)。
這里,設(shè)秘密保持程序500使用、p一l' 、 'cp—2'作為表示選 擇參數(shù)CP一1和CP—2的變量,使用、v',作為表示選擇識別符swVar 的變量。選擇參數(shù)是在從選擇對象數(shù)據(jù)540、 541、 ...、 546中確定1 個選擇對象時使用的參數(shù),選擇識別符是唯一識別選擇對象數(shù)據(jù)的識 別符,是確定接著應(yīng)執(zhí)行的選擇對象數(shù)據(jù)的信息。
下面,說明圖18的各塊與圖20的各塊之間的對應(yīng)關(guān)系。
圖20中,圖18的預(yù)處理指令群510相當(dāng)于塊650中記載的 'cp—l=l;cp—2=2;tb[7]=0;,。選擇處理指令群520相當(dāng)于塊651中記 載的 'label A : sv=(cp—1+cp—2*2)%7; while(tb[sv]=l) {sv=(++SV)%7;},。另外,管理信息更新指令群525相當(dāng)于塊652中 記載的'tb[sv]=l;',變遷處理指令群530相當(dāng)于塊653中記載的 、witch(sv),,選擇對象數(shù)據(jù)540 546相當(dāng)于選擇對象數(shù)據(jù)660 666。
圖16所示的更新處理指令群560-566相當(dāng)于選擇對象數(shù)據(jù) 660-666中包含的各自的'cp—I=cp2;cp2—sv;,。另外,第1~第3功 能提供指令群分別相當(dāng)于'a=b=2;' 、 'a*b;, 、 'a—;,,分別包含 于選擇對象數(shù)據(jù)665、 666、 663中。因此,偽功能提供指令群是選擇 對象數(shù)據(jù)660、 661、 662、 664中包含的、=l,a=2;, 'a*=b;b+=a;, <b—;, 'a=b/a,。
另外,分支指令群570 572和574-576相當(dāng)于'goto label A;,, 分支指令群573相當(dāng)于'return;'。
下面,詳細(xì)說明各個指令群的具體動作。
3.2.1預(yù)處理指令群510
預(yù)處理指令群510是算出選擇處理指令群520中使用的選擇參數(shù) 群的初始值的程序指令群。
預(yù)處理指令群510是啟動秘密保持程序500時最初執(zhí)行的程序指 令群。
預(yù)處理指令群510具體而言是由從調(diào)用源程序接收輸入值in_l、 in_2、將接收到的值作為選擇參數(shù)群的初始值存儲在選擇參數(shù) CP—1~CP—2中的指令群、和數(shù)量與選擇對象數(shù)據(jù)的個數(shù)相同的管理 信息的初始化指令構(gòu)成的程序指令群。這里,管理信息分別對應(yīng)于選 擇對象數(shù)據(jù),管理是否執(zhí)行對應(yīng)的選擇對象數(shù)據(jù)。
這里,預(yù)處理指令群510執(zhí)行將in_l、 in_2的值分別存儲在選擇 參數(shù)CP一1 CP一2中的處理。另外,設(shè)當(dāng)正常系統(tǒng)執(zhí)行時,賦予值'r 、 '2,,作為輸入值in—1、 in_2。
預(yù)處理指令群510,作為管理信息的初始化,對秘密處理裝置60 所具有的管理信息進行初始化。這里,管理信息由6個陣列構(gòu)成,預(yù)
處理指令群510通過將表示未執(zhí)行的代入這些全部的值中,執(zhí) 行管理信息的初始化。
這里,預(yù)處理指令群510相當(dāng)于圖20的塊650中記載的 'cp—l=in—1; cp_2=in—2; tb[7]=0;,。
3.2.2選擇處理指令群520
選擇處理指令群520是使用選擇參數(shù)群來算出選擇識別符的程 序指令群。
下面,說明選擇處理指令群520算出選擇識別符的處理。在下面 的說明中,用NN等記號來表示選擇對象數(shù)據(jù)的個數(shù)。
首先,選擇處理指令群520利用使用了值麗、和作為與值麗 互質(zhì)的素數(shù)的pl和p2的式3 'plx(選擇參數(shù)CP一l)+p2x(選擇參數(shù) CP_2)modNN,,算出臨時的選擇識別符。這里,運算符、,表示 乘法。另外,pl與NN互質(zhì)表示pl與NN的最大公約數(shù)為1 。這里, 設(shè)pl、p2和NN分別為、 '2,、和。
接著,選擇處理指令群520將式3的結(jié)果作為臨時的選擇識別符 swVar,存儲在選擇識別符用變量sv中。接著,選擇處理指令群520 判斷sv表示的選擇對象數(shù)據(jù)是否已執(zhí)行。
在判斷為sv表示的選擇對象數(shù)據(jù)為未執(zhí)行的情況下,選擇處理 指令群520不變更sv的值,將選擇識別符的值確定為當(dāng)前的sv的值。
在判斷為sv表示的選擇對象數(shù)據(jù)已執(zhí)行的情況下,選擇處理指 令群520檢索在算出的值之后、最近的未執(zhí)行的選擇對象數(shù)據(jù)。這里, 在算出的值之后的全部選擇對象數(shù)據(jù)均已執(zhí)行的情況下,選擇處理指 令群520從最初的選擇對象數(shù)據(jù)開始順序檢索未執(zhí)行的選擇對象數(shù) 據(jù)。
選擇處理指令群520將通過檢索發(fā)現(xiàn)的選擇對象數(shù)據(jù)的序號存 儲在選擇識別符用變量sv中。通過執(zhí)行這種處理,即便在對應(yīng)于算 出值的選擇對象數(shù)據(jù)已被執(zhí)行的情況下,也始終選擇未執(zhí)行的選擇對 象數(shù)據(jù),與是否是正常系統(tǒng)的執(zhí)行時無關(guān),執(zhí)行始終不同的對象數(shù)據(jù)。 這里,選擇處理指令群520相當(dāng)于圖20的塊651中記載的 ,(sv=(cp—1 +cp—2*2)%7; while(tb[sv]=l){sv=(++sv)%7},。
3.2.3管理信息更新指令群525
管理信息更新指令群525是將對應(yīng)于由選擇處理指令群520選擇 的選擇對象數(shù)據(jù)的管理信息,更新為表示 <已執(zhí)行'的狀態(tài)的程序指 令群。具體而言,相當(dāng)于圖20的塊652中記載的<tb[sv]=l;'。
例如,在選擇處理指令群520的動作結(jié)果是、選擇識別符用變量 sv的值變?yōu)?5'的情況下,管理信息更新指令群525將對應(yīng)于選擇 對象數(shù)據(jù)545的管理信息tb [5]的值從表示未執(zhí)行的'0'更新為表 示已執(zhí)行的'l,。
3.2.4變遷處理指令群530
變遷處理指令群530是根據(jù)選擇處理指令群520選擇的選擇識別 符、執(zhí)行分支到任一選擇對象數(shù)據(jù)540 546的處理的程序指令群。具 體而言,在選擇識別符用變量sv的值為0、 1、 ...、 6的情況下,分 別是分支到選擇對象數(shù)據(jù)540、 541、 ...、 546的程序指令群。
作為具體例,在記述秘密保持程序500的程序是C語言程序,在 選擇對象數(shù)據(jù)540、 541、 ...、 546的開頭分別記述標(biāo)簽<label—140:'、 'label—141:, 、 ...、 'label—146:,的情況下,變遷處理指令群530變 為下面的程序指令。
switch (sv) {
case 0: goto label—140;
case 1: goto label—141;
case 6: goto label—146;
3.2.5選擇對象數(shù)據(jù)540-546
選擇對象數(shù)據(jù)540~546是當(dāng)由變遷處理指令群530分支來時、執(zhí) 行的程序指令群。
選擇對象數(shù)據(jù)540 546分別是由選擇對象主要指令群550 556、 更新處理指令群560 566、分支指令群570~576構(gòu)成的程序指令群。
選擇對象主要指令群550~556是表示各選擇對象數(shù)據(jù)中應(yīng)執(zhí)行 的處理的程序指令群。具體而言,例如選擇對象數(shù)據(jù)660中記載的 'a=l;b=2;'與之相當(dāng)。
更新處理指令群560~566是更新選擇參數(shù)群中包含的各值的程 序指令群。這里,作為一例,將存儲在選擇參數(shù)變量cp一2中的值代 入選擇參數(shù)變量cp—1,將選擇識別符用變量sv的值代入選擇參數(shù)變 量cp—2。具體而言,圖20中的選擇對象數(shù)據(jù)660 666的每個中包含 的'cp—l=cp2;cp—2=sv;,與之相當(dāng)。
分支指令群570~576分別是分支到位于選擇對象數(shù)據(jù)540~546 之外的選擇處理指令群520的程序指令群、和將控制返回程序調(diào)用源 的處理的程序指令群之一。
這里,包含應(yīng)最后執(zhí)行的第3功能提供指令群的選擇對象數(shù)據(jù) 543的分支指令群573,是將控制返回程序調(diào)用源的處理的程序指令 群,其它選擇對象數(shù)據(jù)中包含的分支指令群,是分支到選擇處理指令 群120的程序指令群。具體而言,圖20的選擇對象數(shù)據(jù)660~666的 每個中包含的'gotolabel A;,或'retum,相當(dāng)于此。
3.3秘密處理裝置60
這里,描述執(zhí)行秘密保持程序500的秘密處理裝置60。 秘密處理裝置60如圖21所示,由控制部700與存儲部701構(gòu)成。 秘密處理裝置60具體而言,是由微處理器、ROM、 RAM、硬盤 單元、顯示器單元、鍵盤、鼠標(biāo)等構(gòu)成的計算機系統(tǒng)。在所述RAM 或所述硬盤單元中存儲計算機程序。這里,計算機程序為了實現(xiàn)規(guī)定 的功能,組合多個表示對計算機的指令的指令代碼來構(gòu)成。通過所述 微處理器根據(jù)所述計算機程序動作,秘密處理裝置60實現(xiàn)其功能。 即,所述微處理器1個個地讀出所述計算機程序中包含的各指令,解 讀讀出的指令,根據(jù)解讀結(jié)果進行動作。 3.3.1存儲部701
存儲部701如圖21所示,具有第1程序存儲部702、第2程序 存儲部703、管理信息保持部704和選擇參數(shù)群保持部705。 (l)第1程序存儲部702 第1程序存儲部702存儲秘密保持程序中包含的多個選擇對象數(shù) 據(jù)。這里,選擇對象數(shù)據(jù)是表示使用秘密信息的處理的步驟的信息, 具體而言是程序指令的集合等。這些選擇對象數(shù)據(jù)對應(yīng)于來自控制部 700的指示選擇之一,由秘密處理裝置60執(zhí)行所選擇的選擇對象數(shù) 據(jù)所示的步驟。另外,選擇對象數(shù)據(jù)是分割了使用秘密信息的運算的 正確步驟之后的數(shù)據(jù),或包含使用了正常系統(tǒng)不執(zhí)行的偽秘密信息的 運算的數(shù)據(jù)。
這里,設(shè)第1程序存儲部702中存儲選擇對象數(shù)據(jù)540、 541、...、 546共計7個數(shù)據(jù),但當(dāng)然該數(shù)量不限于7個。
(2) 第2程序存儲部703
第2程序存儲部703存儲秘密保持程序中包含的多個選擇對象數(shù) 據(jù)以外的程序指令。
具體而言,第2程序存儲部703存儲秘密保持程序500中包含的 預(yù)處理指令群510、選擇處理指令群520、管理信息更新指令群525、 變遷處理指令群530。
(3) 管理信息保持部704
管理信息保持部704對各選擇對象數(shù)據(jù)的每個,保持管理信息,
該管理信息管理著選擇對象數(shù)據(jù)的執(zhí)行和未執(zhí)行的信息。
管理信息保持部704如圖22所示,具有管理信息表格T700。 管理信息表格T700具有由選擇對象數(shù)據(jù)的個數(shù)構(gòu)成、存儲對應(yīng)
于選擇對象數(shù)據(jù)的每個的管理信息的區(qū)域。
管理信息表格T700中包含的管理信息710 716的每個,順序?qū)?br>
應(yīng)于選擇對象數(shù)據(jù)540-546。
管理信息710 716中存儲的初始值是表示未執(zhí)行的值<0'。 若選擇對象數(shù)據(jù)被控制部700選擇,則對應(yīng)的管理信息被控制部
700從值'0'更新為表示已執(zhí)行的值。
(4) 選擇參數(shù)群保持部705
選擇參數(shù)群保持部705保持由選擇參數(shù)CP—1、 CP_2構(gòu)成的選擇 參數(shù)群。
3.3.2鄉(xiāng)部700
控制部700控制秘密處理裝置60整體的動作,并執(zhí)行,以使得 使用秘密信息的處理(秘密保持程序)難以解析。
控制部700如圖23所示,具有整體處理部720、預(yù)處理部721、 選擇處理部722、管理信息更新部723、變遷處理部724、和更新處 理部725。
控制部700也可不具備這些構(gòu)成要素作為單獨的構(gòu)成,控制部 700隨時實現(xiàn)這些構(gòu)成要素每個的功能。
(1) 預(yù)處理部721
預(yù)處理部721當(dāng)啟動秘密保持程序時最初動作。 預(yù)處理部721經(jīng)整體處理部720,從第2程序存儲部703讀出預(yù) 處理指令群中包含的1個以上的程序指令,根據(jù)秘密保持程序的構(gòu) 造,依次執(zhí)行讀出的l個以上程序指令。
具體而言,預(yù)處理部721首先取得來自調(diào)用源程序的輸入值in—1 、 in一2,作為選擇參數(shù)CP_1和CP—2的初始值,將取得的選擇參數(shù)CP一1 和CP—2經(jīng)整體處理部720存儲到選擇參數(shù)群保持部705。接著,預(yù) 處理部721執(zhí)行管理信息保持部704的初始化。即,將管理信息表格 T700中包含的各管理信息的值設(shè)定為'0'。
(2) 選擇處理部722
選擇處理部722使用選擇參數(shù),確定選擇識別符swVar。
選擇處理部722經(jīng)整體處理部720,從第2程序存儲部703中讀 出選擇處理指令群中包含的以上程序指令,并根據(jù)秘密保持程序的構(gòu) 造,依次執(zhí)行讀出的l個以上禾呈序指令。
具體而言,選擇處理部722使用存儲在選擇參數(shù)群保持部705中 的選擇參數(shù)CP一1和CP_2、與選擇處理指令群中包含的式3,算出臨 時的選擇識別符。選擇處理部722使用管理信息表格T700,判定對 應(yīng)于算出的臨時的選擇識別符的選擇對象數(shù)據(jù)是否已執(zhí)行。
在判定為已執(zhí)行的情況下,選擇處理部722取得表示未執(zhí)行的選 擇對象數(shù)據(jù)的識別符,將取得的值設(shè)為選擇識別符swVar。
在判定為未執(zhí)行的情況下,選擇處理部722將算出的臨時的選擇 識別符設(shè)為選擇識別符swVar。
通過執(zhí)行上述處理,選擇處理部722可始終取得對應(yīng)于未執(zhí)行的
選擇對象數(shù)據(jù)的值,作為選擇識別符swVar。 g口,由于無論選擇參數(shù) 的初始值是何值均不重復(fù)執(zhí)行相同的選擇對象數(shù)據(jù),所以非法解析者 難以解析。
(3) 管理信息更新部723
管理信息更新部723更新對應(yīng)于選擇處理部722選擇的選擇對象 數(shù)據(jù)的管理信息。
管理信息更新部723經(jīng)整體處理部720,從第2程序存儲部703 讀出管理信息指令群中包含的以上程序指令,并根據(jù)秘密保持程序的 構(gòu)造,依次執(zhí)行讀出的1個以上程序指令。
具體而言,管理信息更新部723將管理信息表格T700中包含的 多個管理信息中、對應(yīng)于選擇處理部722取得的選擇識別符swVar 的管理信息,從值<0'更新為值'l'。
例如在圖22中,在選擇處理部722將選擇識別符swVar的值設(shè) 為'5'的情況下,管理信息更新部723將對應(yīng)于選擇對象數(shù)據(jù)545 的管理信息715的值更新為。
(4) 變遷處理部724
變遷處理部724根據(jù)選擇處理部722選擇的選擇識別符swVar, 確定多個選擇對象數(shù)據(jù)中、分支目的地的選擇對象數(shù)據(jù),執(zhí)行確定的 選擇對象數(shù)據(jù)中包含的選擇對象主要指令群。
變遷處理部724經(jīng)整體處理部720,從第2程序存儲部703讀出 變遷處理指令群中包含的以上程序指令,并根據(jù)秘密保持程序的構(gòu) 造,依次執(zhí)行讀出的程序指令。
具體而言,變遷處理部724根據(jù)選擇處理部722選擇的選擇識別 符swVar,確定多個選擇對象數(shù)據(jù)中分支目的地的選擇對象數(shù)據(jù)。
變遷處理部724經(jīng)整體處理部720,讀出確定的選擇對象數(shù)據(jù)中 包含的選擇對象主要指令群,并執(zhí)行讀出的選擇對象主要指令群。
(5) 更新處理部725
更新處理部725在執(zhí)行選擇到的選擇對象數(shù)據(jù)中包含的選擇對 象主要指令群之后,執(zhí)行更新選擇參數(shù)的值的處理。
更新處理部725經(jīng)整體處理部720從第1程序存儲部702讀出所 選擇的選擇對象數(shù)據(jù)中包含的更新處理指令群,并執(zhí)行讀出的更新處 理指令群。
具體而言,更新處理部725使用選擇參數(shù)保持部705中存儲的選 擇參數(shù)CP一1和CP一2、與選擇識別符,更新選擇參數(shù)CP—1和CP一2。 更新方法如上所述,所以這里省略說明。
(6)整體處理部720
整體處理部720控制包含于控制部700中的各構(gòu)成部的動作。
整體處理部720在秘密保持程序開始執(zhí)行時,控制成按預(yù)處理部 721、選擇處理部722、管理信息更新部723、變遷處理部724、更新 處理部725的順序動作。
整體處理部720根據(jù)選擇對象數(shù)據(jù)中包含的分支指令群,執(zhí)行秘 密保持程序的結(jié)束控制和控制成按選擇處理部722、管理信息更新部 723、變遷處理部724、更新處理部725的順序進行動作的控制之一。
具體而言,整體處理部720經(jīng)整體處理部720從第1程序存儲部 702讀出選擇的選擇對象數(shù)據(jù)中包含的分支指令群。
整體處理部720在讀出的分支指令群是表示向選擇處理指令群 的分支的程序指令群的情況下,控制成按選擇處理部722、管理信息 更新部723、變遷處理部724、更新處理部725的順序動作。
整體處理部720在讀出的分支指令群是將控制返回程序調(diào)用源 的處理的程序指令群的情況下,整體處理部720結(jié)束秘密保持程序, 將控制返回秘密保持程序的調(diào)用源。
3.3.3秘密處理裝置60的動作
這里,用圖24所示的流程圖來說明秘密處理裝置60的動作。 秘密處理裝置60的預(yù)處理部721取得來自調(diào)用源程序或外部裝 置等的輸入值in—1、 in一2,作為選擇參數(shù)CP_1和CP一2的初始值, 經(jīng)整體處理部720將取得的選擇參數(shù)CP—1和CP—2存儲到選擇參數(shù) 群保持部705,對管理信息保持部704的管理信息表格T700進行初 始化(步驟S500)。
預(yù)處理部721在必要時在存儲部701上確保第1程序存儲部702、 第2程序存儲部703、管理信息保持部704、選擇參數(shù)群保持部705 所用的區(qū)域,初始化各區(qū)域中存儲的值。
選擇處理部722使用選擇參數(shù)群保持部705中存儲的選擇參數(shù) CP—1和CP一2、與選擇處理指令群中包含的式3,算出臨時的選擇識 別符(步驟S505)。
選擇處理部722使用管理信息表格T700,判定對應(yīng)于算出的臨 時的選擇識別符的選擇對象數(shù)據(jù)是否已執(zhí)行(步驟S510)。
在判定為已執(zhí)行的情況下(步驟S510為 <是'),選擇處理部722 更新臨時的選擇識別符(步驟S515)。這里,步驟S510和S515的具體 例是圖20中的塊651中包含的Vhile(tb[sv]=l){sv=(++sv)%7;}'等。 在該例中,只要tb[sv]的值為l(表示已執(zhí)行),則通過將sv遞增,搜 索相當(dāng)于未執(zhí)行的選擇對象數(shù)據(jù)的選擇識別符。
在判定為未執(zhí)行的情況下(步驟S510為 <否'),選擇處理部722 將算出的臨時的選擇識別符設(shè)為選擇識別符swVar。管理信息更新部 723將管理信息表格T700中包含的多個管理信息中、對應(yīng)于選擇識 別符swVar的管理信息,從值勺'更新為值'l'(步驟S520)。
變遷處理部724根據(jù)選擇識別符swVar,取得多個選擇對象數(shù)據(jù) 中、分支目的地的選擇對象數(shù)據(jù),執(zhí)行取得的選擇對象數(shù)據(jù)中包含的 選擇對象主要指令群(步驟S525)。
更新處理部725使用選擇參數(shù)群保持部705中存儲的選擇參數(shù) CP—1和CP—2、與選擇識別符,執(zhí)行選擇參數(shù)CP_1和CP一2的更新(步 驟S530)。
整體處理部720判斷選擇的選擇對象數(shù)據(jù)中包含的分支指令群 是否表示程序結(jié)束(步驟S535)。
在判斷為分支指令群表示程序結(jié)束的情況下(步驟S535為'是'), 整體處理部720結(jié)束秘密保持程序,將控制返回秘密保持程序的調(diào)用 源。
在判斷為分支指令群不表示程序結(jié)束的情況下(步驟S535為 <否'),即判斷為分支指令群表示向選擇處理指令群的分支的情況下, 整體處理部720返回步驟S505。
步驟S535具體而言,在選擇的選擇對象數(shù)據(jù)中包含的分支指令 群是分支到選擇處理指令群的指令群(例如goto語句)的情況下,將判 斷結(jié)果設(shè)為'否',在分支指令群是表示程序結(jié)束的指令群(例如return 語句)的情況下,將判斷結(jié)果設(shè)為 <是'。
3.4程序難破解化裝置50
這里,描述根據(jù)想隱匿執(zhí)行順序的難破解化對象程序生成秘密保 持程序500的程序難破解化裝置50。
程序難破解化裝置50如圖25所示,由程序存儲部800、輸入部 801、功能提供指令群生成部802、偽功能提供指令群生成部803、配 置順序確定部804、管理指令群生成部805、秘密保持程序生成部806 和輸出部807構(gòu)成。
程序難破解化裝置50具體而言,是由微處理器、ROM、 RAM、 硬盤單元、顯示器單元、鍵盤、鼠標(biāo)等構(gòu)成的計算機系統(tǒng)。在所述 RAM或所述硬盤單元中存儲計算機程序。這里,計算機程序為了實 現(xiàn)規(guī)定的功能,組合多個表示對計算機的指令的指令代碼來構(gòu)成。通 過所述微處理器根據(jù)所述計算機程序動作,程序難破解化裝置50實 現(xiàn)其功能。即,所述微處理器1個個地讀出所述計算機程序中包含的 各指令,解讀讀出的指令,根據(jù)解讀結(jié)果進行動作。
3.4.1程序存儲部800
程序存儲部800具有存儲該裝置生成的各指令群和選擇對象數(shù) 據(jù)用的區(qū)域。
3.4.2輸入部801
輸入部801接收賦予構(gòu)成難破解化對象的程序、和生成的秘密保 持程序的2個初始值。
3.4.3功能提供指令群生成部802
功能提供指令群生成部802將由輸入部801接收的難破解化對象 程序分割成由1個以上程序指令構(gòu)成的多個塊。功能提供指令群生成 部802將分割后的各塊設(shè)為功能提供指令群。由此,功能提供指令群 生成部802可根據(jù)由輸入部801接收的難破解化對象程序來生成多個 功能提供指令群。
功能提供指令群生成部802在分割成多個塊時,在難破解化對象 程序中包含執(zhí)行有條件跳躍的程序指令的情況下,功能提供指令群生 成部802進行分割,以使執(zhí)行該有條件跳躍的程序指令與多個某跳躍 目的地的程序指令全部包含于相同塊中。通過如此分割,功能提供指 令群生成部802必然可將來自1個塊的分支目的地變?yōu)?個塊。
在輸入程序中存在執(zhí)行無條件跳躍的程序指令的情況下,功能提 供指令群生成部802進行分割,使執(zhí)行該無條件跳躍的程序指令與跳 躍目的地的程序指令變?yōu)橄嗤瑝K。通過如此分割,功能提供指令群生 成部802必然可將對于1個塊的分支源變?yōu)?個塊。
這里,所謂'執(zhí)行有條件跳躍的指令'是根據(jù)規(guī)定條件跳躍程序 指令的指令,具體而言,在是Mf(a-^)gotolabelA;'等的情況下, 當(dāng)滿足變量a為零的條件時,向labdA執(zhí)行程序指令的跳躍。另外, 所謂'執(zhí)行無條件跳躍的指令'是始終跳躍程序指令的指令,具體而 言,是^oto labdA;'等。此時,與變量的值等無關(guān),始終執(zhí)行向labelA 的跳躍。
這里,設(shè)功能提供指令群生成部802分割成3個功能提供指令群。 此時的控制流程圖與圖17—樣。即,如上所述分割成跳躍指令的跳 躍源與跳躍目的地包含于1個塊中,所以生成的塊的控制流程圖構(gòu)成 無分支的控制流程。這里,從構(gòu)成控制流程起點的塊開始,將構(gòu)成各 塊的程序指令群順序設(shè)為第1、第2和第3功能提供指令群。
3.4.4偽功能提供指令群生成部803
偽功能提供指令群生成部803根據(jù)由輸入部801接收的難破解化 對象程序,生成多個偽功能提供指令群。
偽功能提供指令群生成部803例如生成隨機組合了記述難破解 化對象程序的編程語言的程序指令的偽功能提供指令群。
既可僅使用難破解化對象程序中包含的程序指令,隨機或手動地 生成偽功能提供指令群,也可適當(dāng)生成輸入程序內(nèi)沒有的指令。另外, 編程語言是C語言、Java(注冊商標(biāo))語言等執(zhí)行編譯處理的編程語言 的情況下,如編譯那樣使用輸入程序中使用的變量,生成偽功能提供 指令群?;蛘?,在輸入程序中未使用的變量包含于偽功能提供指令群中的情況下,通過向難破解化后的程序追加這種變量的說明,使編譯 不失敗。
這里,接著說明偽功能提供指令群生成部803生成4個偽功能提 供指令群。
3.4.5管理指令群生成部805
管理指令群生成部805生成不依賴于秘密保持程序500中難破解 化對象程序的程序指令群。即,若以圖16的秘密保持程序500為例, 則由于依賴于難破解化對象程序而變化的是,分割難破解化對象程序 步驟之后的、作為選擇對象主指令群的150~156,所以管理指令群生 成部805生成其它指令群。
具體而言,管理指令群生成部805生成預(yù)處理指令群510、選擇 處理指令群520、管理信息更新指令群525、變遷處理指令群530、 1 個更新處理指令群、由分支目的地表示選擇處理指令群的程序指令群 構(gòu)成的第1分支指令群、和由將控制返回到程序調(diào)用源的處理的程序 指令群構(gòu)成的第2分支指令群。
此時,管理指令群生成部805取得功能提供指令群生成部802生 成的多個功能提供指令群的個數(shù)(這里為3個)、和偽功能提供指令群 生成部803生成的多個偽功能提供指令群的個數(shù)(這里為4個),并算 出其合計值。管理指令群生成部805生成數(shù)量與算出的合計值(這里 為7個)相同的標(biāo)簽名。管理指令群生成部805通過對選擇處理指令 群520中包含的式3可取的值的每個、將生成的標(biāo)簽名建立對應(yīng),作 為分支目的地,生成變遷處理指令群530。
管理指令群生成部805生成僅由生成的各標(biāo)簽名構(gòu)成的選擇對 象數(shù)據(jù)。這里,管理指令群生成部805生成7個選擇對象數(shù)據(jù)540~546。
這里,管理指令群生成部805將生成的預(yù)處理指令群510、選擇 處理指令群520、管理信息更新指令群525、變遷處理指令群530、 1 個更新處理指令群、第1分支指令群、和第2分支指令群存儲到程序 存儲部800中。
另外,管理指令群生成部805將僅由生成的各標(biāo)簽名構(gòu)成的選擇 對象數(shù)據(jù)540 546也存儲到程序存儲部800中。
3.4.6配置順序確定部804
配置順序確定部804確定按何順序?qū)⑸傻墓δ芴峁┲噶钊?這 里為3個功能提供指令群)和偽功能提供指令群(這里為4個偽功能提 供指令群)分配給選擇對象主要指令群550 556。具體而言,配置順序 確定部804確定將第1~第3功能提供指令群配置給選擇對象主要指 令群550~556的某個,并確定將偽功能提供指令群配置給剩余的4個 選擇對象主要指令群的某個。
配置順序確定部804事先存儲上述式3。這里,將式3中的pl、 p2和NN分別設(shè)為<1' 、 '2'和",。
這里,設(shè)由后述的管理指令群生成部805生成由標(biāo)簽名構(gòu)成的選 擇對象主要指令群550-556。
配置順序確定部804使用由輸入部801接收的2個選擇參數(shù)的初 始值與事先存儲的式3,確認(rèn)實際上按何順序算出選擇識別符,由此 確定應(yīng)配置功能提供指令群和偽功能提供指令群的選擇對象主要指 令群。
設(shè)輸入部801接收選擇參數(shù)CP_1(=1)、 CP—2(=2),作為2個初始 值。下面,說明配置的確定方法的一例。
配置順序確定部804如圖26所示,具備控制部850、選擇處理 部851、管理信息更新部852、更新處理部853和管理信息保持部854。 下面,說明配置順序確定部804的各構(gòu)成要素的細(xì)節(jié)。
(l)管理信息保持部854
管理信息保持部854具有管理信息表格T800。管理信息表格 T800的數(shù)據(jù)構(gòu)造與管理信息保持部704具有的管理信息表格T700的 數(shù)據(jù)構(gòu)造一樣,所以這里省略說明。
這里,管理信息表格T800中存儲的值表示將功能提供指令 群配置在對應(yīng)的選擇對象數(shù)據(jù)中,值'0'表示不將功能提供指令群 配置在對應(yīng)的選擇對象數(shù)據(jù)中。
另外,管理信息表格T800的各管理信息的初始值為<0'。
由此,可存儲配置功能提供指令群的位置(已配置的選擇對象數(shù)據(jù))。
(2) 控制部850
控制部850具有存儲選擇參數(shù)群的參數(shù)存儲區(qū)域。 控制部850將輸入部801接收到的選擇參數(shù)的初始值CP_1和 cp—2(這里分別為'r 、 <2,)存儲在參數(shù)存儲區(qū)域中。
控制部850控制選擇處理部851、管理信息更新部852和更新處 理部853的動作。
控制部850執(zhí)行后述的選擇處理部851具有的式3可取的值、即 式3可取的選擇識別符的值的每個,與程序存儲部800存儲的選擇對 象數(shù)據(jù)之間的對應(yīng)。
控制部850從功能提供指令群生成部802取得生成的第i個功能 提供指令群??刂撇?50根據(jù)選擇處理部851取得的選擇識別符,將 取得的第i個功能提供指令群插入程序存儲部800存儲的對應(yīng)的選擇 對象數(shù)據(jù)中。這里,i是l以上m以下的整數(shù)。另外,控制部850暫 時存儲第i個功能提供指令群與插入目的地的選擇對象數(shù)據(jù)之間的對 應(yīng)關(guān)系。
控制部850從偽功能提供指令群生成部803取得生成的多個偽功 能提供指令群中、未插入選擇對象數(shù)據(jù)中的1個偽功能提供指令群。 控制部850將取得的偽功能提供指令群插入未插入第i功能提供指令 群或偽功能提供指令群的1個選擇對象數(shù)據(jù)中??刂撇?50對全部偽 功能提供指令群執(zhí)行該動作。
由此,控制部850可在各選擇對象數(shù)據(jù)中插入第i功能提供指令 群或偽功能提供指令群。
通過控制部850取得第i個功能提供指令群的動作,可選擇構(gòu)成 配置目的地的功能提供指令群。
(3) 選擇處理部851
選擇處理部851事先存儲上述式3。
選擇處理部851取得存儲在參數(shù)存儲區(qū)域中的選擇參數(shù)CP—1、 和CP_2。
選擇處理部851使用取得的CP—1、和CP—2、與事先存儲的式3, 算出臨時的選擇識別符。選擇處理部851使用管理信息表格T800, 判定對應(yīng)于算出的臨時的選擇識別符的選擇對象數(shù)據(jù)是否已配置。
在判定為已配置的情況下,選擇處理部851取得表示未配置的選 擇對象數(shù)據(jù)的識別符,將取得的值設(shè)為選擇識別符swVar。
在判定為未配置的情況下,選擇處理部851將算出的臨時的選擇 識別符設(shè)為選擇識別符swVar。
通過選擇處理部851的動作、以及控制部850進行的根據(jù)選擇處 理部851取得的選擇識別符而將第i個功能提供指令群插入選擇對象 數(shù)據(jù)中的動作,可將功能提供指令群配置到適當(dāng)?shù)呐渲媚康牡亍?br>
(4) 管理信息更新部852
管理信息更新部852將管理信息表格T800中包含的多個管理信 息中、對應(yīng)于選擇處理部851取得的選擇識別符swVar的管理信息從 值'0'更新為值",。
(5) 更新處理部853
更新處理部853使用參數(shù)存儲區(qū)域中存儲的選擇參數(shù)群、和選擇 處理部851取得的選擇識別符,更新選擇參數(shù)CP—1和CP一2。更新 方法如上所述,所以這里省略說明。
更新處理部853將更新后的選擇參數(shù)群蓋寫到控制部850的參數(shù) 存儲區(qū)域上。
3.4.7秘密保持程序生成部806
秘密保持程序生成部806插入程序存儲部800存儲的更新處理指 令群,以使得其對于選擇對象數(shù)據(jù)的每個,位于選擇對象主要指令群 之后。由此,秘密保持程序生成部806可對選擇對象數(shù)據(jù)的每個生成 更新處理指令群560-566。通過管理指令群生成部805的更新處理指 令群的生成動作、和秘密保持程序生成部806的上述動作,可將更新 處理指令群560 566插入到適當(dāng)?shù)呐渲媚康牡亍?br>
秘密保持程序生成部806對于插入了第m個功能提供指令群(即 正常系統(tǒng)最后執(zhí)行的功能提供指令群)的選擇對象數(shù)據(jù),插入管理指 令群生成部805生成的第2分支指令群,使之位于更新處理指令群之 后。此時,秘密保持程序生成部806在第m個功能提供指令群的最 后包含將控制返回到程序調(diào)用源的處理的程序指令的情況下,刪除該
程序指令,或不插入第2分支指令群。
秘密保持程序生成部806對于其它選擇對象數(shù)據(jù),插入管理指令 群生成部805生成的第1分支指令群,使之位于更新處理指令群之后。 由此,秘密保持程序生成部806可生成選擇對象數(shù)據(jù)540 546。
秘密保持程序生成部806配置程序存儲部800存儲的各指令群, 生成秘密保持程序500。 g卩,管理指令群生成部805按圖16所示的 順序配置生成的各指令群。
3.4.8輸出部807
輸出部807將生成的秘密保持程序輸出到秘密處理裝置60。
3.4.9程序難破解化裝置50的動作
(l)動作概要
這里,用圖27所示的流程圖來說明程序難破解化裝置50的動作 概要。
輸入部801接收賦予構(gòu)成難破解化對象的程序和所生成的秘密 保持程序的2個初始值(步驟S600)。
功能提供指令群生成部802將由輸入部801接收到的難破解化對 象程序分割成由1個以上程序指令構(gòu)成的多個塊(步驟S605)。
偽功能提供指令群生成部803根據(jù)輸入部801接收到的難破解化 對象程序,生成多個偽功能提供指令群(步驟S610)。
管理指令群生成部805生成預(yù)處理指令群510、選擇處理指令群 520、管理信息更新指令群525、變遷處理指令群530、 1個更新處理 指令群、由分支目的地表示選擇處理指令群的程序指令群構(gòu)成的第1 分支指令群、由將控制返回到程序調(diào)用源的處理的程序指令群構(gòu)成的 第2分支指令群、和僅由標(biāo)簽名構(gòu)成的多個選擇對象數(shù)據(jù)(步驟S615)。 選擇對象數(shù)據(jù)的個數(shù),與功能提供指令群的個數(shù)及偽功能提供指令群 的個數(shù)的合計值相同。
配置順序確定部804使用選擇參數(shù)群與事先存儲的式3,確定功 能提供指令群和偽功能提供指令群的配置目的地(步驟S620)。
秘密保持程序生成部806使用管理指令群生成部805生成的更新 處理指令群,生成對應(yīng)于選擇對象數(shù)據(jù)的每個的更新處理指令群 560~566。秘密保持程序生成部806使用第1和第2分支指令群,生 成選擇對象數(shù)據(jù)540~546。秘密保持程序生成部806配置生成的各指 令群,生成秘密保持程序500(步驟S625)。
輸出部807將生成的秘密保持程序輸出到秘密處理裝置60(步驟 S630)。
(2)配置確定處理
這里,用圖28所示的流程圖來說明圖27的步驟S620所示的配 置確定處理的動作。
控制部850對計數(shù)器i設(shè)定4',將選擇參數(shù)群的初始值存儲 到參數(shù)存儲區(qū)域中。控制部850執(zhí)行選擇識別符的值的每個與程序存 儲部800存儲的選擇對象數(shù)據(jù)之間的對應(yīng)(步驟S700)。這里,計數(shù)器 i表示當(dāng)前著眼的功能提供指令群應(yīng)第幾個執(zhí)行。g卩,這里,從第1 功能提供指令群開始順序確定配置順序。
選擇處理部851取得參數(shù)存儲區(qū)域中存儲的選擇參數(shù)CP_1和 CP—2。選擇處理部851使用取得的CP_1和CP一2與事先存儲的式3, 算出臨時的選擇識別符(步驟S705)。例如在選擇參數(shù)CP—1~CP_2的 值為'1, 、 '2'的情況下,式3的值變?yōu)?xl+2x2MOD7=5,。
選擇處理部851使用管理信息表格T800,判定對應(yīng)于算出的臨 時的選擇識別符的管理信息的值是否為'l'(步驟S710)。
在判定為是的情況下(步驟S710為'是'),選擇處理部851 更新臨時的選擇識別符(步驟S715),返回步驟S710。具體而言,選 擇處理部851在算出的臨時的選擇識別符為、',對應(yīng)于值'5'的 管理信息的值為'r的情況下,將臨時的選擇識別符之后最近 的值'6'設(shè)為臨時的選擇識別符。
在判定為不是'l'的情況下(步驟S710為 <否'),選擇處理部 851將算出的臨時的選擇識別符設(shè)為選擇識別符swVar,控制部850 根據(jù)選擇處理部851取得的選擇識別符swVar,將第i個功能提供指 令群插入對應(yīng)的選擇對象數(shù)據(jù)中(步驟S720)。例如在cont-l、選擇識 別符的值為的情況下,第1功能提供指令群被配置在選擇對象 數(shù)據(jù)545中。
管理信息更新部852將管理信息表格T800中包含的多個管理信 息中、對應(yīng)于選擇處理部851取得的選擇識別符swVar的管理信息從 值<0'更新為值'l,(步驟S725)。例如,在選擇識別符的值為<5' 的情況下,管理信息保持部854的管理信息表格T800中,對應(yīng)于選 擇對象數(shù)據(jù)545的管理信息從未配置變?yōu)橐雅渲谩?br>
更新處理部853使用參數(shù)存儲區(qū)域存儲的選擇參數(shù)群與選擇處 理部851取得的選擇識別符,更新選擇參數(shù)CP—1和CP_2。更新處 理部853將更新后的選擇參數(shù)群蓋寫到控制部850的參數(shù)存儲區(qū)域上 (步驟S730)。例如,在選擇參數(shù)的值為、'2'、選擇識別符的 值為'5'的情況下,選擇參數(shù)的值變?yōu)?2' 、 '5'。
控制部850將計數(shù)器i加上值(步驟S735)。
控制部850判定計數(shù)器i是否比功能提供指令群的個數(shù)大(步驟 S740)。
在判定為不大的情況下(步驟S740為 <否,),控制部850返回 步驟S705,控制選擇處理部851的動作。
在判定為大的情況下(步驟S740為'是'),控制部850對多個 偽功能提供指令群的每個確定配置目的地,使未插入功能提供指令群 的1個以上選擇對象數(shù)據(jù)之一變?yōu)榕渲媚康牡?步驟S745)。例如,若 選擇對象數(shù)據(jù)540、 541、 542、 544未執(zhí)行,則將配置偽功能提供指 令群的位置確定為這些選擇對象數(shù)據(jù),插入各偽提供指令群。
3.5匯總
第3實施方式的秘密處理裝置60的選擇處理部722、和秘密保 持程序500的選擇處理指令群520中,僅從多個選擇對象數(shù)據(jù)中的未 執(zhí)行的選擇對象數(shù)據(jù)中,確定接著選擇的選擇對象數(shù)據(jù)。由此,知道 秘密處理裝置60或秘密保持程序500不重復(fù)執(zhí)行同一選擇對象數(shù)據(jù) 的非法解析者即便執(zhí)行改變選擇參數(shù)群的初始值的窮舉搜索,也由于 在代入任一初始值的情況下都不會重復(fù)選擇選擇對象數(shù),所以難以有 效解析。
程序難破解化裝置50可將難破解化對象程序變換為秘密處理裝 置60執(zhí)行的秘密保持程序。由此,知道不重復(fù)執(zhí)行相同程序指令群
的非法解析者即便對變換后的程序執(zhí)行改變選擇參數(shù)群的初始值的 窮舉搜索,也不能根據(jù)是否重復(fù)而有效發(fā)現(xiàn)錯誤的初始值。因此,具 有可將輸入程序變換為可防止有效地在短時間內(nèi)執(zhí)行非法解析的程 序的效果。
3.6變形例1
上述所示的程序難破解化裝置50也可將配置順序確定部804置 換成下示的配置順序確定部804a(未圖示)。
其它的構(gòu)成要素與上述一樣,所以這里省略說明。
在本變形例1中,程序難破解化裝置50中輸入部801僅接收難 破解化對象程序。
3.6.1配置順序確定部804a
配置順序確定部804與配置順序確定部804a的不同之處在于前 者是在確定選擇參數(shù)用初始值之后、確定配置功能提供指令群的位置 的方法,相反,后者是在確定配置第1~第p個(p為選擇參數(shù)的數(shù)量) 的功能提供指令群的位置之后,確定選擇參數(shù)用變量的初始值,并確 定配置第p+l個以后的功能提供指令群的位置。
配置順序確定部804a具備控制部850a、選擇處理部851a、管理 信息更新部852a、更新處理部853a和管理信息保持部854a。下面, 說明配置順序確定部804a的各構(gòu)成要素的細(xì)節(jié)。
(1) 管理信息保持部854a
管理信息保持部854a與管理信息保持部854 —樣,所以這里省 略說明。以后必要時,用管理信息表格T800進行說明。
(2) 控制部850a
控制部850a事先存儲選擇參數(shù)的個數(shù)p(這里為2個)。
控制部850a具有存儲選擇參數(shù)群的參數(shù)存儲區(qū)域。
控制部850a執(zhí)行后述的選擇處理部851a具有的式3可取的值、
即式3可取的選擇識別符的值的每個,與程序存儲部800存儲的選擇
對象數(shù)據(jù)之間的對應(yīng)。
控制部850a隨機設(shè)定配置第l~p個功能提供指令群的位置。例
如,控制部850a使用隨機數(shù)來確定將第1功能提供指令群配置在選
擇對象數(shù)據(jù)540 546哪個中,接著,使用隨機數(shù)來確定將第2功能提 供指令群配置在未配置第1功能提供指令群的選擇對象數(shù)據(jù)哪個中。 下面,同樣使用隨機數(shù)來確定將功能提供指令群K(K-3…m)配置在 未配置功能提供指令群的選擇對象數(shù)據(jù)的哪個中。
控制部850a將對應(yīng)于第l~p個功能提供指令群的每個的配置目 的地的管理信息的值從'0'更新為"'??刂撇?50a使用更新后 的管理信息表格T800、涉及第l~p個功能提供指令群的每個的配置 目的地的信息、和算出選擇識別符的算出式,算出p個初始值??刂?部850a通過用顯示部(未圖示)顯示算出的p個初始值,通知用戶。
控制部850a將算出的p個初始值存儲在參數(shù)存儲區(qū)域中。
控制部850a控制選擇處理部851、管理信息更新部852和更新 處理部853的動作。
控制部850a根據(jù)選擇處理部851a取得的選擇識別符,將第i個 功能提供指令群插入對應(yīng)的選擇對象數(shù)據(jù)中。這里,i是(p+l)以上m 以下的整數(shù),m是功能提供指令群的個數(shù)。另外,控制部850a暫時 存儲第i個功能提供指令群與插入目的地的選擇對象數(shù)據(jù)之間的對 應(yīng)。選擇處理部851a如后所述。
控制部850a對未插入功能提供指令群的1個以上選擇對象數(shù)據(jù) 的每個,插入生成的多個偽功能提供指令群中的1個偽功能提供指令 群。這里,已插入1次的偽功能提供指令群不被插入其它選擇對象數(shù) 據(jù)中。
<初始值算出方法的具體例>
下面示出初始值算出方法的具體例。這里,設(shè)選擇參數(shù)數(shù)量p-2, 使用選擇對象數(shù)據(jù)540 546、式3。另外,第l個功能提供指令群被 配置在選擇對象數(shù)據(jù)545中,第2功能提供指令群被配置在選擇對象 數(shù)據(jù)546中。
控制部850a首先取得選擇對象數(shù)據(jù)545的處理結(jié)束時刻的選擇 參數(shù)的值CP—1和CP—2。下面說明該取得。由于選擇對象數(shù)據(jù)545 的更新處理指令群165是'cp_l=cp—2;cp—2=sv;',所以向選擇參數(shù) CP—l(相當(dāng)于程序中的變量cp一l)中代入對選擇參數(shù)CP—2設(shè)定的值。之后,向選擇參數(shù)CP—2灘當(dāng)于程序中的變量cp—2)中代入選擇識別 符的值(相當(dāng)于程序中的變量sv)的值。該時刻的選擇識別符是配置第 1功能提供指令群的選擇對象數(shù)據(jù)545的識別符(即5)。之后,使用如 上所述代入值后的選擇參數(shù),計算選擇識別符。若將此前的情況匯總, 則第1選擇參數(shù)的值變?yōu)檫x擇參數(shù)CP_2的初始值,第2選擇參數(shù)的 值變?yōu)榕渲昧说?功能提供指令群的選擇對象數(shù)據(jù)的識別符。在本變 形例1中,由于將配置第2功能提供指令群的位置設(shè)為選擇對象數(shù)據(jù) 546,所以由式3算出的臨時選擇識別符信息變?yōu)?lt;5,或。這 是因為若式3的值為,則選擇未執(zhí)行的選擇對象數(shù)據(jù)546,若 式3的值為'5',則不選擇已選擇完成的選擇對象數(shù)據(jù)545,而選 擇位于之后最近的未執(zhí)行的選擇對象數(shù)據(jù)546。
這里,為了使式3的值為<5,,必需是"x(選擇參數(shù)CP一l)+2x5 MOD 7=5',若求解,貝U選擇參數(shù)CP—1的值變?yōu)?2,。同樣,為 了使式的值為V ,必需是"x(選擇參數(shù)CP—l)+2x5MOD7=6,, 若求解,則選擇參數(shù)CP一1的值變?yōu)?3'。通常當(dāng)pl與NN互質(zhì)時, 對于全部自然數(shù)A,存在滿足'plxYMODNN=A,的Y。由此,可 確定選擇參數(shù)CPJ的值。
從而,選擇參數(shù)CP—2的初始值變?yōu)?lt;2'或<3,之一。控制部 850a將選擇參數(shù)CP—2的初始值選擇為'2,或<3,之一。
下面,繼續(xù)說明控制部850a選擇1'作為選擇參數(shù)CP一2的初 始值的情況。
接著,控制部850a確定選擇參數(shù)CP_1的初始值。
為了選擇配置了第1功能提供指令群的選擇對象數(shù)據(jù)545,由式 3算出的臨時的選擇識別符必需是'5,。由于該時刻全部選擇對象 數(shù)據(jù)均未執(zhí)行,所以式的值不能取直接表示選擇對象數(shù)據(jù)545的'5' 以外的值。從而,必需是^x(選擇參數(shù)CP一l)+2x(選擇參數(shù)CP_2) MOD 7=5'。并且,選擇參數(shù)CP—2的初始值如前面算出的那樣為<2', 在最初執(zhí)行管理信息更新指令群125的時刻,選擇參數(shù)CP—2的值為 其初始值。若將該值代入式3,則變?yōu)?x(選擇參數(shù)CP—l)+2x2 MOD 7=5'。若求解,則選擇參數(shù)CP—1的值變?yōu)?l'。此時,選擇參數(shù)cp一i的值仍為初始值,所以選擇參數(shù)cpj的初始值變?yōu)?r 。 由此,算出第i和第2選擇參數(shù)的初始值'r 、 。
(3) 選擇處理部851a
選擇處理部851a與選擇處理部851 —樣,所以這里省略說明。
(4) 管理信息更新部852a
管理信息更新部852a與管理信息更新部852 —樣,所以這里省 略說明。
(5) 更新處理部853a
更新處理部853a與更新處理部853 —樣,所以這里省略說明。 3.6.2變形例1的程序難破解化裝置的動作
(1) 動作概要
變形例1的程序難破解化裝置的動作通過在圖27所示的步驟 S615與配置確定處理(步驟S620)之間追加初始值算出處理,可生成 秘密保持程序。
(2) 初始值算出處理
這里,用圖29所示的流程圖來說明初始值算出處理的動作。 控制部850a隨機設(shè)定配置第l~p個功能提供指令群的位置(步驟 S800)。
控制部850a將與第l p個功能提供指令群的每個的配置目的地 相對應(yīng)的管理信息的值從更新為(步驟S805)。
控制部850a在j, 1之前的期間中,重復(fù)步驟S815~步驟S825(步 驟S810)。
控制部850a算出第j選擇參數(shù)的初始值(步驟S815),將算出的 第j選擇參數(shù)的初始值存儲到參數(shù)存儲區(qū)域中(步驟S820)。
在重復(fù)結(jié)束之后,控制部850a顯示算出的第l~p選擇參數(shù)的初 始值(步驟S830)。
3.6.2變形例1的效果
本變形例1的程序難破解化裝置可將難破解化對象程序變換為 第1實施方式所示的秘密保持程序。由此,知道不重復(fù)執(zhí)行同一程序 指令群的非法解析者即便對變換后的秘密保持程序執(zhí)行改變選擇參
數(shù)群的初始值的窮舉搜索,也不能根據(jù)是否重復(fù)來有效發(fā)現(xiàn)錯誤的初 始值。因此,具有可將難破解化對象程序變換為可阻止有效地在短時 間內(nèi)執(zhí)行非法解析的程序的效果。
本變形例1的程序難破解化裝置在確定第1 p功能提供指令群的 配置目的地之后,利用配置確定處理,再次確定第1 p功能提供指令 群的配置目的地。此時,由于算出各選擇參數(shù)的初始值以便算出事先 確定的配置目的地的選擇識別符,所以由配置確定處理確定的第l~p 功能提供指令群的配置目的地與事先確定的配置目的地相同。
這里,本變形例1的程序難破解化裝置也可不在確定第l~p功能 提供指令群的配置目的地之后,利用配置確定處理,再次確定第l p
功能提供指令群的配置目的地。此時,控制部850a算出依次執(zhí)行第 l~p功能提供指令群之后的各選擇參數(shù)的值,將算出的各值存儲到參 數(shù)存儲區(qū)域中,控制此后的選擇處理部851、管理信息更新部852和 更新處理部853的動作。此時,當(dāng)執(zhí)行圖28所示的配置確定處理時, 將步驟S600變更為i=p+l。由此,程序難破解化裝置可省略對配置 目的地已確定的第l~p功能提供指令群的位置確定處理,利用配置確 定處理,確定第p+l以后的功能提供指令群的配置目的地。 3.7變形例2
在變形例2中,說明按圖30所示的順序執(zhí)行功能提供指令群1~3 的秘密處理裝置。即,該秘密處理裝置是正常系統(tǒng)執(zhí)行時可以重復(fù)執(zhí) 行相同選擇對象數(shù)據(jù)的步驟的秘密處理裝置。變形例2的秘密處理裝 置通過將第3實施方式的選擇處理部722置換成圖31所示的選擇處 理部722b來實現(xiàn)。
3.7.1選擇處理部722b
選擇處理部722b具有計數(shù)執(zhí)行選擇對象數(shù)據(jù)的選擇的次數(shù)的計 數(shù)器,對應(yīng)于計數(shù)器的值,使選擇識別符的確定方法變化。
下面,將與第3實施方式一樣的選擇識別符的確定方法、即更新 選擇識別符直到得到表示未執(zhí)行的選擇對象數(shù)據(jù)的選擇識別符的確 定方法稱為《第一確定方法'。另外,將把選擇識別符的值設(shè)為與第 A次(B4、 2、 ...6)確定的選擇識別符相同的確定方法稱為 <第二確
定方法'。
下面,選擇處理部722b如圖31所示,具有確定方法保持部750b、 選擇履歷保持部751b、計數(shù)器752b、控制部753b。
(1) 確定方法保持部750b
確定方法保持部750b如圖31所示,具有確定方法表格TIOOO。 確定方法表格T1000具有存儲1個以上選擇次數(shù)與確定方法構(gòu)成 的組的區(qū)域。
選擇次數(shù)表示選擇對象數(shù)據(jù)的選擇次數(shù),確定方 去表示該次數(shù)的 情況下的選擇識別符的確定方法。
在將值'0'設(shè)定為確定方法的情況下,表示選擇識別符的確定 方法是第一確定方法,在將值<0'以外的值'A'設(shè)定為確定方法 的情況下,表示選擇識別符的確定方法是第二確定方法。在設(shè)定值 ^A'的情況下,表示取得與第A次選擇的值相同的選擇識別符。
例如,在選擇次數(shù)與確定方法構(gòu)成的組為'l、 0'的情況下,表 示確定第1次選擇的選擇對象數(shù)據(jù)的選擇識別符,使用第一確定方法 來確定。另外,在選擇次數(shù)與確定方法構(gòu)成的組為。、1'的情況下, 表示確定第3次選擇的選擇對象數(shù)據(jù)的選擇識別符,使用第二確定方 法來確定,設(shè)為與第1次確定的值相同的選擇識別符。
(2) 選擇履歷保持部75 lb
選擇履歷保持部751b將過去確定的選擇識別符與確定的時刻下 的計數(shù)器值相對應(yīng)來保持。
(3) 計數(shù)器752b
計數(shù)器752b計數(shù)當(dāng)前執(zhí)行的選擇對象數(shù)據(jù)的選擇是第幾次選 擇。計數(shù)器752b的初始值為l,每執(zhí)行一次選擇,將計數(shù)器752b的 值遞增。
(4) 控制部753b
控制部753b使用計數(shù)器752b的值與確定方法表格T1000,確定 選擇識別符的確定方法。具體而言,在計數(shù)器752b的值為<1'的情 況下,控制部753b取得確定方法表格T1000的選擇次數(shù)對應(yīng)于<1' 的確定方法'0'??刂撇?53b由于取得的確定方法為'0',所以 確定選擇識別符的確定方法是第一確定方法。在取得的確定方法的值
為<0'以外的情況下,控制部753b確定為選擇識別符的確定方法是 第二確定方法。
控制部753b在確定的確定方法是第一確定方法的情況下,利用 與執(zhí)行選擇處理指令群520時一樣的處理,選擇選擇識別符。
控制部753b在確定的確定方法是第二確定方法的情況下,使用 取得的值,從選擇履歷保持部751b中取得第A次確定的選擇 識別符。
控制部753b將計數(shù)器752b表示的值與確定的選擇識別符存儲在 選擇履歷保持部751b中??刂撇?53b將計數(shù)器1340的值累加計數(shù)。 3.7.2秘密處理裝置的動作
變形例2中的秘密處理裝置的動作向圖24所示的步驟S500追加 對計數(shù)器752b的計數(shù)器count設(shè)定初始值的處理。
之后,執(zhí)行下示的識別符算出處理,之后,執(zhí)行步驟S520以后 的步驟。在步驟S535的判斷為'是'的情況下,結(jié)束處理,在為'否' 的情況下,返回識別符算出處理。
下面,用圖32所示的流程圖來說明識別符算出處理的動作。
這里,設(shè)選擇參數(shù)的數(shù)量為2個,算出選擇識別符的式用式3。 必要時,用第3實施方式所示的構(gòu)成部來進行說明。
控制部753b使用計數(shù)器752b的值與確定方法表格T1000,確定 選擇識別符的確定方法(步驟S850)。
控制部753b判斷確定的確定方法是否是第一確定方法(步驟 S855)c
在判斷為是第一確定方法的情況下(步驟S855為 <是'),控制 部753b使用選擇參數(shù)群保持部705中存儲的選擇參數(shù)CP—1和CP—2、 與選擇處理指令群中包含的式3,算出臨時的選擇識別符(步驟S860)。
控制部753b使用管理信息表格T700,判定對應(yīng)于算出的臨時的 選擇識別符的選擇對象數(shù)據(jù)是否已執(zhí)行(步驟S865)。
控制部753b在判定為已執(zhí)行的情況下(步驟S865為'是'),控 制部753b更新臨時的選擇識別符(步驟S870)。
在判定為未執(zhí)行的情況下(步驟S865為'否'),控制部753b將 計數(shù)器752b所示的值與確定的選擇識別符存儲在選擇履歷保持部 751b中(步驟S880)。將計數(shù)器1340的值count遞增(步驟S885)。
在判斷為是第二確定方法的情況下(步驟S855為'否'),控制 部753b使用從確定方法表格T1000取得的確定方法的值'A',從 選擇履歷保持部751b中取得第A次確定的選擇識別符(步驟S875), 執(zhí)行步驟S880以后的動作。
3.7.3變形例2的效果
變形例2的選擇處理部722b當(dāng)在圖31所示的確定方法表格 T1000中選擇第3、 4、 6次執(zhí)行的選擇對象數(shù)據(jù)時,從已選擇的選擇 對象數(shù)據(jù)中選擇1個。從而,知道難破解化對象程序重復(fù)執(zhí)行同一選 擇對象數(shù)據(jù)的非法解析者即便執(zhí)行改變選擇參數(shù)群的初始值的窮舉 搜索,也不能在代入任一初始值的情況下重復(fù)選擇選擇對象數(shù)據(jù),不 能有效發(fā)現(xiàn)錯誤的初始值。因此,具有可將難破解化對象程序變換為 可阻止有效地在短時間內(nèi)執(zhí)行非法解析的程序的效果。
3.8變形例3
這里是程序難破解化裝置50c,根據(jù)具有循環(huán)、執(zhí)行循環(huán)內(nèi)的程 序指令群的次數(shù)為固定次數(shù)的難破解化對象程序,生成秘密保持程 序。在本變形例3中,作為1例,圖33示出難破解化對象程序的控 制流程。在該程序中有2處循環(huán)構(gòu)造,執(zhí)行各個循環(huán)內(nèi)的程序指令的 次數(shù)為2次。
下面,用圖33所示的難破解化對象程序進行說明。 3.8.1程序難破解化裝置50c
程序難破解化裝置50c如圖34所示,由程序存儲部800c、輸入 部801c、功能提供指令群生成部802c、偽功能提供指令群生成部 803c、配置順序確定部804c、管理指令群生成部805c、秘密保持程 序生成部806c、輸出部807和選擇處理指令群生成部808c構(gòu)成。
程序難破解化裝置50c具體而言,是由微處理器、ROM、 RAM、 硬盤單元、顯示器單元、鍵盤、鼠標(biāo)等構(gòu)成的計算機系統(tǒng)。在所述 RAM或所述硬盤單元中存儲計算機程序。這里,計算機程序為了實
現(xiàn)規(guī)定的功能,組合多個表示對計算機的指令的指令代碼來構(gòu)成。通
過所述微處理器根據(jù)所述計算機程序動作,程序難破解化裝置50c實 現(xiàn)其功能。即,所述微處理器1個個地讀出所述計算機程序中包含的 各指令,解讀讀出的指令,根據(jù)解讀結(jié)果進行動作。
設(shè)程序難破解化裝置50c從難破解化對象程序取得3個功能提供 指令群。另外,設(shè)由程序難破解化裝置50c生成的秘密保持程序的構(gòu) 造與上述所示的秘密保持程序500的構(gòu)造一樣,在下面的說明中,必 要時,用秘密保持程序500中使用的符號來說明。
(1) 程序存儲部800c
程序存儲部800c與上述第3實施方式所示的程序存儲部800 — 樣,所以省略說明。
(2) 輸入部80 lc
輸入部801c與上述第3實施方式所示的輸入部801 —樣,所以 省略說明。
輸入部801c接收的難破解化對象程序是具有循環(huán)、事先確定執(zhí) 行循環(huán)內(nèi)的程序指令群的次數(shù)的程序。
(3) 功能提供指令群生成部802c
功能提供指令群生成部802c根據(jù)輸入部801c接收的難破解化對 象程序,生成多個功能提供指令群。
功能提供指令群生成部802c,例如若輸入部801c接收圖33所示 的難破解化對象程序,則對循環(huán)內(nèi)存在的2個程序指令群(這里是步 驟S905執(zhí)行的程序指令群1與步驟S925執(zhí)行的程序指令群2)的每 個,與上述所示的功能提供指令群生成部802—樣執(zhí)行動作,生成多 個功能提供指令群。這里,功能提供指令群生成部802c分割程序指 令群1,生成2個功能提供指令群(下面稱為功能提供指令群1、 2。), 根據(jù)程序指令群2,生成1個功能提供指令群(下面稱為功能提供指令 群3。)。
圖35示出將圖33所示的控制流程置換為生成的3個功能提供指 令群的控制流程。
步驟S905執(zhí)行的程序指令群1被置換為步驟S906執(zhí)行的功能提 供指令群1與步驟S907執(zhí)行的功能提供指令群2,步驟S925執(zhí)行的 程序指令群2被置換為步驟S926執(zhí)行的功能提供指令群3。程序指 令群2與功能提供指令群3相同。
(4) 偽功能提供指令群生成部803c
偽功能提供指令群生成部803c與上述所示的偽功能提供指令群 生成部803 —樣,所以省略說明。
(5) 選擇處理指令群生成部808c
選擇處理指令群生成部808c生成使計算機等實現(xiàn)變形例2所示 的選擇處理部722b的程序指令群。
選擇處理指令群生成部808c首先生成確定方法保持部750b所具 有的確定方法表格TIOOO。
選擇處理指令群生成部808c根據(jù)圖35所示的控制流程,生成展 開循環(huán)之后的程序的控制流程。具體而言,在圖35中,對作為循環(huán) 內(nèi)的程序指令的第1和第2功能提供指令群進行執(zhí)行循環(huán)的次數(shù)的展 開、即2次展開,第3功能提供指令群同樣展開2次。圖36中示出 展開各功能提供指令群之后的程序的控制流程。
接著,選擇處理指令群生成部808c根據(jù)展開循環(huán)后的程序的控 制流程,生成確定方法保持部750b中保持的確定方法。
在圖36的控制流程中,步驟S950 S975分別是第1~第6個執(zhí)行 的塊。在該控制流程中第3個執(zhí)行的功能提供指令群1與第1個執(zhí)行 的功能提供指令群l相同。由此,選擇處理指令群生成部808c對確 定方法表格T1000中對應(yīng)于選擇次數(shù)'3'的確定方法設(shè)定值'1'。 同樣,選擇處理指令群生成部808c對確定方法表格T1000中對應(yīng)于 選擇次數(shù)^ 、 乂'的每個的確定方法設(shè)定值、 3'。
另外,設(shè)選擇雖然在圖36的控制流程上不存在、但在展開循環(huán) 后的控制流程上僅出現(xiàn)1次的塊時的選擇識別符的確定方法,為從未 配置的選擇對象數(shù)據(jù)中選擇的確定方法。
這樣,選擇處理指令群生成部808c生成由確定方法保持部750b 保持的確定方法表格TIOOO。具體而言,選擇處理指令群生成部808c 生成使計算機上具有確定方法表格T1000的數(shù)據(jù)構(gòu)造的程序指令群。
由此,可實現(xiàn)確定方法表格T1000,使得在使用第e次選擇識別符為
表示未執(zhí)行的選擇對象數(shù)據(jù)的選擇識別符的確定方法的情況下具有 'e、 (T的組、在設(shè)為與第f次確定的選擇識別符相同的情況下具有 <e、 f,的組。
另外,選擇處理指令群生成部808c還生成在計算機上實現(xiàn)選擇 履歷保持部751b、計數(shù)器752b和控制部753b的程序指令群。這里, 實現(xiàn)選擇履歷保持部75lb的程序指令群是將選擇識別符與計數(shù)器的 值相對應(yīng)地加以存儲的指令群。實現(xiàn)計數(shù)器752b的程序指令群是表 示將初始值設(shè)為'l'、并遞增1的計數(shù)器的指令群。另外,實現(xiàn)控 制部753b的指令群是實現(xiàn)變形例2中已說明的動作的程序指令群。 下面,將計數(shù)器表示的指令群、和實現(xiàn)控制部753b的指令群統(tǒng)稱為 確定方法控制指令群。
由此,選擇處理指令群生成部808c可生成使選擇處理部722b動 作的程序指令群。
選擇處理指令群生成部808c將生成的各指令群存儲到程序存儲 部800c中。
(6)配置順序確定部804c
配置順序確定部804c確定按何順序?qū)⑸傻墓δ芴峁┲噶钊?這 里為3個功能提供指令群)和偽功能提供指令群(這里為4個偽功能提 供指令群)分配給選擇對象主要指令群550 556。具體而言,配置順序 確定部804c確定將第1~第3功能提供指令群配置給選擇對象主要指 令群550~556的哪個,確定將偽功能提供指令群配置給剩余的4個選 擇對象主要指令群的哪個。
配置順序確定部804c事先存儲上述式3。這里,將式3中的pl、 p2和NN分別設(shè)為'l, 、 '2'禾n '7'。
配置順序確定部804c使用由輸入部801c接收的2個選擇參數(shù)的 初始值與事先存儲的式3,確認(rèn)實際上按何順序算出選擇識別符,由 此,確定應(yīng)配置功能提供指令群和偽功能提供指令群的選擇對象主要 指令群。
設(shè)輸入部801c接收選擇參數(shù)CPJ(-l)、 CP_2(=2),作為2個初始值。下面,說明配置的確定方法的一例。
配置順序確定部804c如圖37所示,具備控制部850c、選擇處理 部851c、管理信息更新部852c、更新處理部853c和管理信息保持部 854c。下面,說明配置順序確定部804c的各構(gòu)成要素的細(xì)節(jié)。
<管理信息保持部854c>
管理信息保持部854c與管理信息保持部854 —樣,所以省略說 明。之后在必要時,使用管理信息表格T800來說明。
由此,可存儲配置了功能提供指令群的位置(配置的選擇對象數(shù)據(jù))。
<控制部850O
控制部850c具有存儲選擇參數(shù)群的參數(shù)存儲區(qū)域。
控制部850c將輸入部801c接收到的選擇參數(shù)的初始值CP一1和 CP—2(這里分別為'T 、 1')存儲在參數(shù)存儲區(qū)域中。
控制部850c控制選擇處理部851c、管理信息更新部852c和更新 處理部853c的動作。
控制部850c執(zhí)行后述的選擇處理部851c具有的式3可取的值、 即式3可取的選擇識別符的值的每個,與程序存儲部800c存儲的選 擇對象數(shù)據(jù)之間的對應(yīng)。
控制部850c從功能提供指令群生成部802c取得所生成的第i個 功能提供指令群??刂撇?50c根據(jù)選擇處理部851c取得的選擇識別 符,將取得的第i個功能提供指令群插入程序存儲部800c存儲的對 應(yīng)的選擇對象數(shù)據(jù)中。這里,i是l以上m以下的整數(shù)。另外,控制 部850c暫時存儲第i個功能提供指令群與插入目的地的選擇對象數(shù) 據(jù)的對應(yīng)。
控制部850c從偽功能提供指令群生成部803取得生成的多個偽 功能提供指令群中、未插入選擇對象數(shù)據(jù)中的1個偽功能提供指令 群。控制部850c將取得的偽功能提供指令群插入未插入第i功能提 供指令群或偽功能提供指令群的1個選擇對象數(shù)據(jù)中。控制部850c 對全部偽功能提供指令群執(zhí)行該動作。
由此,控制部850c可在各選擇對象數(shù)據(jù)中插入第i功能提供指
令群或偽功能提供指令群。
通過控制部850c取得第i個功能提供指令群的動作,可選擇構(gòu) 成配置目的地的功能提供指令群。 <選擇處理部851c> 選擇處理部851c事先存儲上述式3。
選擇處理部851c根據(jù)圖36所示的控制流程和選擇處理指令群生 成部808c生成的使選擇處理部722b動作用的程序指令群,確定各功 能提供指令群的配置目的地。
選擇處理部851c通過圖36所示的控制流程,取得第t次執(zhí)行的 第i功能提供指令群。這里,t為1以上6以下的整數(shù),i為1以上3 以下的整數(shù)。
選擇處理部851c使用選擇處理指令群生成部808c生成的確定方 法表格TIOOO,取得對應(yīng)于選擇次數(shù)Y的確定方法。
在確定方法為的情況下,選擇處理部851c通過與上述所示 的選擇處理部851—樣的動作,取得選擇識別符swVar。選擇處理部 85 lc將取得的選擇識別符swVar與第i功能提供指令群相對應(yīng)。由此, 選擇處理部851c可將第i功能提供指令群插入由對應(yīng)的選擇識別符 swVar所示的選擇對象數(shù)據(jù)中。
在確定方法為'0'以外的值的情況下,選擇處理部851c取得第 t+l次執(zhí)行的第j功能提供指令群,執(zhí)行上述動作。
利用選擇處理部85lc的動作、和控制部850c根據(jù)選擇處理部 85 lc取得的選擇識別符將第i個功能提供指令群插入到選擇對象數(shù)據(jù) 中的動作,可將功能提供指令群插入適當(dāng)?shù)呐渲媚康牡刂小?br>
<管理信息更新部852c〉
管理信息更新部852c與管理信息更新部852 —樣,所以省略說明。
<更新處理部853c〉
更新處理部853c與更新處理部853 —樣,所以省略說明。 (7)管理指令群生成部805c
管理指令群生成部805c與上述所示的管理指令群生成部805 —
樣,所以省略說明。
(8) 秘密保持程序生成部806c
秘密保持程序生成部806c配置程序存儲部800c存儲的各指令 群,生成秘密保持程序。即,按圖38的順序,配置管理指令群生成 部805c生成的指令群、選擇處理指令群生成部808c生成的指令群、 和配置順序確定部804c生成的選擇對象數(shù)據(jù),生成秘密保持程序 1800。利用管理指令群生成部805c的更新處理指令群的生成動作與 秘密保持程序生成部806c的上述動作,可將各指令群插入適當(dāng)?shù)呐?置位置上。
選擇處理指令群生成部808c生成的確定方法控制指令群580以 外的其它指令群的位置未特別明示,但例如通過包含于預(yù)處理指令群 510中等,可確保執(zhí)行開始時所需的區(qū)域,或在例如存儲器上生成確 定方法保持部750b。
并且,秘密保持程序生成部806c對選擇對象主要指令群550~556 配置功能提供指令群生成部802c生成的多個功能提供指令群和偽功 能提供指令群生成部803c生成的多個偽功能提供指令群,以對應(yīng)于 配置順序確定部804c確定的順序。
(9) 輸出部807c
輸出部807c與上述所示的輸出部807 —樣,所以省略說明。
3.8.2程序難破解化裝置50c的動作
這里,說明程序難破解化裝置50c的動作。
程序難破解化裝置50c的動作基本上與程序難破解化裝置50 — 樣。下面,用圖27所示的流程圖,主要說明與程序難破解化裝置50 的動作的不同點。
步驟S620由配置順序確定部804c執(zhí)行。
另外,在圖27所示的流程圖中,加入選擇處理指令群生成部808c 動作的步驟。使選擇處理指令群生成部808c動作的步驟只要在配置 順序確定部804c確定配置順序之前,即步驟S620之前,則可以是任
意位置o
3.8.3變形例3的效果
本變形例3的程序難破解化裝置50c可將難破解化對象程序變換 為第3實施方式所示的秘密保持程序。這里,與第3實施方式所示的 程序難破解化裝置50不同,由于可以用具有循環(huán)的程序進行難破解 化,所以可對更多種的輸入程序?qū)嵤╇y破解化。
3.9.4變形例4
變形例4所示的程序難破解化裝置是如下裝置,即除第3實施方 式的程序難破解化裝置執(zhí)行的程序難破解化外,還追加將包含常數(shù)的 程序指令置換成不包含該常數(shù)的程序指令的難破解化。
3.9.1變形例4的程序難破解化裝置
這里,程序難破解化裝置將構(gòu)成功能提供指令群的程序指令中包 含的第一常數(shù)置換成、第1選擇參數(shù))+(第2選擇參數(shù))+(第二常數(shù))'。 例如,在功能提供指令群1中包含程序指令<b=a+30'、執(zhí)行功能提 供指令群1時的第1和第2選擇參數(shù)各自的值為'l' 、 '2'的情況 下,將'b=a+30'置換為'b-a+(選擇參數(shù)CP—1)+(選擇參數(shù)CP—2)+27'。
下面,說明執(zhí)行這種變換的程序難破解化裝置。
在變形例4中,使用配置順序確定部804d(未圖示)代替第3實施 方式所示的配置順序確定部804。配置順序確定部804d除第3實施 方式中說明的構(gòu)成要素外,具有程序指令變更部810d。
程序指令變更部810d如上所述,執(zhí)行將輸入程序中的常數(shù)置換 為、第1選擇參數(shù))+(第2選擇參數(shù))+(第二常數(shù))'的處理。具體而言, 配置順序確定部804d對于當(dāng)前看到的各功能提供指令群,在包含含 有常數(shù)的程序指令的情況下,取得存儲在參數(shù)存儲區(qū)域中的第1和第 2選擇參數(shù)。程序指令變更部810d使用取得的第1和第2選擇參數(shù), 執(zhí)行將該常數(shù)置換為'(第1選擇參數(shù))+(第2選擇參數(shù))+(第二常數(shù))' 的處理。
這里,第二常數(shù)通過從第一常數(shù)中減去第1和第2選擇參數(shù)各自 的值來算出。 3.9.2動作
下面,主要以配置順序確定部804d的處理流程用圖39來說明變 形例4的程序難破解化裝置的動作。變形例4的程序難破解化裝置的
動作除配置順序確定部804d的動作以外,與第3實施方式一樣。
配置順序確定部804d對計數(shù)器coimt設(shè)定4',將選擇參數(shù)群 的初始值存儲在參數(shù)存儲區(qū)域中(步驟siooo)。
配置順序確定部804d取得存儲在參數(shù)存儲區(qū)域中的選擇參數(shù) CP_1和CP—2。配置順序確定部804d使用取得的CP—1和CP—2與事 先存儲的式3,算出臨時的選擇識別符(步驟S1005)。
配置順序確定部804d確定第count個功能提供指令群的配置目 的地(步驟S1010)。具體而言,配置順序確定部804d執(zhí)行圖28所示 的步驟S710、 S715、 S720。
配置順序確定部804d判斷第count個功能提供指令群中是否存 在包含常數(shù)的程序指令(步驟S1015)。
在判斷為存在的情況下(步驟S1015為 <是'),則配置順序確定 部804d取得包含常數(shù)的程序指令,使用取得的程序指令中包含的常 數(shù)和參數(shù)存儲區(qū)域中存儲的第1和第2選擇參數(shù),算出第二常數(shù)(步 驟S1020)。配置順序確定部804d將取得的程序指令中包含的常數(shù)置 換為第1和第2選擇參數(shù)與算出的第二常數(shù)(步驟S1025)。例如,配 置順序確定部804d將<b=a+30,置換為、-a+(選擇參數(shù)CP—l)十(選 擇參數(shù)CP—2)+27,。配置順序確定部804d對第count個功能提供指 令群中存在的包含常數(shù)的程序指令全部執(zhí)行步驟S1020和S1025的動 作。
配置順序確定部804d使用參數(shù)存儲區(qū)域存儲的選擇參數(shù)群與選 擇處理部851取得的選擇識別符,執(zhí)行選擇參數(shù)CP—1和CP—2的更 新,將更新后的選擇參數(shù)群蓋寫到參數(shù)存儲區(qū)域(步驟S1030)。
配置順序確定部804d將管理信息表格T800中包含的多個管理信 息中、對應(yīng)于取得的選擇識別符swVar的管理信息,從值<0,更新 到值'1'(步驟S1035)。
配置順序確定部804d對計數(shù)器count加上值'T (步驟S1040)。
配置順序確定部804d判定計數(shù)器count是否比功能提供指令群 的個數(shù)大(步驟S1045)。
在判定為不大的情況下(步驟S1045為'否,),配置順序確定部
804d返回步驟S1005。
在判定為大的情況下(步驟S1045為'是')配置順序確定部804d 對多個偽功能提供指令群的每個配置配置目的地,使未插入功能提供 指令群的1個以上選擇對象數(shù)據(jù)之一構(gòu)成配置目的地(步驟S1050)。
在判斷為第count個功能提供指令群中不存在包含常數(shù)的程序指 令的情況下(步驟S1015為'否,),配置順序確定部804d執(zhí)行步驟 S1030之后的步驟。
這里,將置換常數(shù)的置換式設(shè)為乂選擇參數(shù)1)+(選擇參數(shù)2)+(第 二常數(shù))',但也可以是其它式。此時,也可制作根據(jù)式'(置換式)=(第 一常數(shù))'求出第二常數(shù)的式,并使用該式,算出第二常數(shù)。置換式 不一定是周定的,也可在每次進行置換時使用不同的式。
說明中使用的難破解化對象程序是一例,其控制流程或循環(huán)的次 數(shù)等控制構(gòu)造不限于此。
3.9.4變形例4的效果
根據(jù)本變形例4的這種變換,除第3實施方式中進行的難破解化 外,不能直接發(fā)現(xiàn)生成的程序中的常數(shù)的值,解析更加困難。尤其是 通過本變形例4不能直接看到作為秘密信息的密鑰的值等,可使秘密 信息的值的解析變困難。
3.10其它變形例
根據(jù)上述第3實施方式和變形例1~4說明了本發(fā)明,但本發(fā)明當(dāng) 然不限于上述實施方式。下面的情況也包含于本發(fā)明中。
(1) 在上述第3實施方式中,設(shè)選擇識別符的算出式為'lx(選擇 參數(shù)CP」)+2x(選擇參數(shù)CP—2)MOD7,,但不限于此。只要是可以 任何形式算出選擇識別符的候選的式,則也可以是其它式。
(2) 在上述第3實施方式中,將選擇參數(shù)群的更新處理(更新處理 指令群)埋入選擇對象數(shù)據(jù)540~546中(例如圖20中的選擇對象數(shù)據(jù) 660的'cp—l=cp—2;cp—2=sv;'等),但不限于此。秘密保持程序也可 構(gòu)成為在選擇對象數(shù)據(jù)540~546執(zhí)行之后參照更新處理指令群。
(3) 圖20中,構(gòu)成為未明示地執(zhí)行圖24所示的步驟S535的判斷, 在正常系統(tǒng)執(zhí)行中最后執(zhí)行的選擇對象數(shù)據(jù)543執(zhí)行之后結(jié)束處理,
但不限于此。秘密保持程序也可以以與選擇對象數(shù)據(jù)獨立的形式,執(zhí) 行對被執(zhí)行的選擇對象數(shù)據(jù)是否是處理最后應(yīng)執(zhí)行的選擇對象數(shù)據(jù) 進行判斷的判斷處理。
(4) 并且,在上述第3實施方式中,通過更新選擇參數(shù)來間接地更 新選擇對象識別符,但不限于此。秘密保持程序也可構(gòu)成為直接更新 選擇識別符。此時,在圖24所示的步驟S530中執(zhí)行選擇識別符的更 新,在步驟S535的判斷結(jié)果為'否,的情況下,返回步驟S510。
(5) 在上述第3實施方式中,秘密保持程序存儲來自調(diào)用源的輸入 值,作為選擇參數(shù)的初始值,但不限于此。秘密保持程序也可構(gòu)成為 將從網(wǎng)絡(luò)上的其它設(shè)備取得的值代入選擇參數(shù)的初始值,或構(gòu)成為將 程序執(zhí)行裝置執(zhí)行保持的其它程序的結(jié)果得到的輸出值代入選擇參 數(shù)的初始值。
(6) 在上述第3實施方式中,程序難破解化裝置當(dāng)將難破解化對象 程序變換為秘密保持程序時,由輸入部接收選擇參數(shù)的初始值,但不 限于此。程序難破解化裝置也可設(shè)定選擇參數(shù)的初始值,事先存儲。
(7) 在上述第3實施方式中,示出功能提供指令群為3個、偽功能 提供指令群為4個的情況,但未必是該個數(shù)。功能提供指令群為多個、 偽功能提供指令群為1個以上即可。
(8) 在上述第3實施方式中,描述固定選擇對象部的數(shù)量、選擇參 數(shù)的數(shù)量、選擇識別符的計算式來生成秘密保持程序的情況,但這些 值或式未必是固定的值,也可以是其它值或式。這些值或式可以構(gòu)成 為作為輸入提供給程序難破解化裝置,或是構(gòu)成為根據(jù)使用窮舉攻擊 進行攻擊時的窮舉來確定。在構(gòu)成為作為輸入提供的情況下,為了保 證生成的秘密保持程序500在計算機上正確動作,期望選擇識別符的 計算式是其計算結(jié)果始終為選擇對象數(shù)據(jù)的數(shù)量以下的式。另外,該 式為了使非法解析者難以解析,期望是對應(yīng)于選擇參數(shù)的值算出的值 變動大的式。
另外,選擇參數(shù)的初始值也可以是對構(gòu)成難破解化對象的每個程 序隨機的值。由此,即便假設(shè)非法解析者可得到正確的選擇參數(shù)的初 始值,也不能對其它程序適用該初始值。 (9) 在上述第3實施方式中,塊的分割以簡單的方法說明,但不限 于該方法,只要執(zhí)行對應(yīng)于塊的分割方式的控制構(gòu)造的解析,生成對 應(yīng)于塊的分割方式的功能提供指令群即可。
(10) 在上述第3實施方式中,以上述使用了程序的程序執(zhí)行裝置 的形式實現(xiàn)秘密處理裝置60,但不限于此,也可執(zhí)行硬件的安裝。
(11) 在上述第3實施方式中,秘密處理裝置60利用圖24的步驟 S535的判斷結(jié)果,執(zhí)行處理的結(jié)束或繼續(xù)的判斷,但不限于此。
秘密處理裝置60也可判斷是否選擇與分割后塊的個數(shù)相同的選 擇處理數(shù)據(jù),代替圖24的步驟S535所示的判斷。
用圖40的流程圖來表示此時的秘密保持程序500e的具體例。圖 40所示的程序的流程圖是用C語言記述圖18的各塊的具體例。
圖40中的值Y表示選擇對象數(shù)據(jù)的選擇次數(shù)。利用塊651e 中包含的條件式'if (i>3) then return;',控制秘密保持程序500e的 結(jié)束和處理的繼續(xù)。即,在選擇次數(shù)比3大的情況下,秘密處理裝置 60結(jié)束秘密保持程序500e的執(zhí)行,在為3以下的情況下,繼續(xù)執(zhí)行 秘密保持程序500e。這里,條件式中包含的值'3'是與分割后塊的 數(shù)量相同的值。
選擇對象數(shù)據(jù)中包含的分支指令群被統(tǒng)一成分支到選擇處理指
令群的分支指令。
由此,難以發(fā)現(xiàn)正常系統(tǒng)執(zhí)行中最后執(zhí)行的選擇對象數(shù)據(jù)。 另夕卜,通過將條件式<if(i>3) then return;'中包含的值設(shè)為與分
割后塊的數(shù)量相同,在執(zhí)行正常系統(tǒng)的動作中最后執(zhí)行的選擇對象數(shù)
據(jù)(例如第3功能提供指令群)之后,始終保證秘密保持程序500e的動
作結(jié)束。
(12) 在上述第3實施方式中,將選擇參數(shù)的數(shù)量設(shè)為2,但不限 于此。選擇參數(shù)的數(shù)量也可以是多個。
此時的式3為、lx(第1選擇參數(shù)用變量)+p2x(第2選擇參數(shù)用 變量)+…+pnx(第n選擇參數(shù)用變量)modNN, (n為2以上的整數(shù))。
NN與pl、 p2.....pn是互質(zhì)的素數(shù)。另外,當(dāng)更新選擇參數(shù)時,
將第i參數(shù)中存儲的值存儲在第i-l參數(shù)中。此時,按第1參數(shù)、第2 參數(shù).....第n-l參數(shù)的順序存儲。另外,在第n參數(shù)中,存儲選擇
對象數(shù)據(jù)的選擇中使用的選擇識別符的值。這里,i是2以上n以下 的整數(shù)。
(13) 在上述第3實施方式中,程序難破解化裝置50在向僅由標(biāo)簽 名構(gòu)成的多個選擇對象數(shù)據(jù)的每個中插入選擇對象主要指令群、更新 處理指令群和分支指令群之后,確定預(yù)處理指令群、選擇處理指令群、 變遷處理指令群和多個選擇對象數(shù)據(jù)的配置,生成秘密保持程序,但 不限于此。
程序難破解化裝置50也可確定預(yù)處理指令群、選擇處理指令群、 變遷處理指令群和僅由標(biāo)簽名構(gòu)成的多個選擇對象數(shù)據(jù)的配置目的 地,之后,向僅由標(biāo)簽名構(gòu)成的多個選擇對象數(shù)據(jù)的每個中,插入選 擇對象主要指令群、更新處理指令群和分支指令群,生成秘密保持程 序。
(14) 也可使上述實施方式和上述變形例分別組合。 4.第4實施方式
下面,參照附圖來說明作為本發(fā)明第4實施方式的秘密保持程序 2000、程序難破解化裝置1010和秘密處理裝置1020。
系統(tǒng)的構(gòu)成與第3實施方式所示的構(gòu)成一樣,省略說明。
秘密處理裝置1020與第3實施方式所示的秘密處理裝置60 — 樣,是使用秘密信息的裝置。
秘密處理裝置1020與第3實施方式所示的秘密處理裝置60的構(gòu) 成要素相同,但各部的處理各不相同。下面,由于主要說明各部的處 理,所以為了簡化說明,采用通過在計算機上執(zhí)行來實現(xiàn)秘密處理裝 置的秘密保持程序2000的說明,來代替秘密處理裝置的說明。這里, 秘密處理裝置1020的構(gòu)成與秘密保持程序2000的各部之間的對應(yīng)關(guān) 系與第3實施方式一樣。
4.1秘密保持程序2000
圖41示出秘密保持程序2000的整體構(gòu)成圖。下面,參照圖41 來說明秘密保持程序2000的細(xì)節(jié)。這里,向與第3實施方式的秘密 保持程序500—樣的部分附加相同的符號,省略說明。
秘密保持程序2000與第3實施方式所示的秘密保持程序500 — 樣,是進行了難破解化、以使非法解析者不能解析程序中包含的程序 指令群按什么樣的執(zhí)行順序執(zhí)行的程序。
秘密保持程序2000具備與第3實施方式一樣的管理信息更新指 令群525、變遷處理指令群530、與第3實施方式不同的預(yù)處理指令 群2010、選擇處理指令群2020、選擇對象數(shù)據(jù)2040、 2041、 ...、 2046, 它們按圖41所示的順序配置。各部的具體說明如后所述。
選擇對象數(shù)據(jù)2040~2046分別由與第3實施方式一樣的選擇對象 主要指令群550~556、與第3實施方式不同的更新處理指令群 2060-2066和分支指令群2070 2076構(gòu)成,它們按圖41所示的順序 配置。各部是由1個以上程序指令構(gòu)成的程序指令群。
秘密保持程序2000是如下程序指令群,即從調(diào)用源程序中接 收3個輸入值in一l、 in—2、 in—3、和執(zhí)行該程序提供的功能處理時使 用的參數(shù),并執(zhí)行該程序提供的功能處理。in—k(k是索引)是不足(7-k) 的非負(fù)整數(shù)。這里,將選擇對象數(shù)據(jù)設(shè)為2040~2046等7個,但不限 于此。也可將選擇對象數(shù)據(jù)的個數(shù)設(shè)為n+l個。這里,n為自然數(shù)。 此時,irUc是不足(n+l-k)的非負(fù)整數(shù)。另外,輸入值的個數(shù)設(shè)為in—1、 in—2、 &_3等3個,但不限于此。也可以是m(m為n+l以下的自然 數(shù))個。
在秘密保持程序2000的處理中,使用選擇處理指令群2020的處 理中使用的選擇參數(shù)群的選擇參數(shù)CP—1、 CP—2、 CP—3、與選擇參數(shù) 索引CPI、和保持選擇識別符的選擇識別符用變量。
這里,設(shè)秘密保持程序2000在正常系統(tǒng)執(zhí)行時從調(diào)用源程序中 接收的輸入值inj、 in—2、 in—3為值'2' 、 <4, 、 <3,。本實施 方式中提供的秘密保持程序2000是若使用從調(diào)用源程序中接收的 值、貝U可按正確順序執(zhí)行(包含選擇對象主要指令群的)選擇對象數(shù)據(jù) 的程序,是無法知道從調(diào)用源程序中接收的值的非法解析者難以知道 (包含選擇對象主要指令群的)選擇對象數(shù)據(jù)的執(zhí)行順序的程序。
4丄1預(yù)處理指令群2010
預(yù)處理指令群2010是設(shè)定選擇處理指令群2020中使用的選擇參數(shù)群的程序指令群。選擇參數(shù)群由選擇參數(shù)CP—1、選擇參數(shù)CP—2、
選擇參數(shù)CP_3與選擇參數(shù)索引CPI構(gòu)成。這些選擇參數(shù)CP_1~CP_3 是非負(fù)整數(shù)值,選擇參數(shù)索引CPI是自然數(shù)。
預(yù)處理指令群2010是啟動秘密保持程序2000時最初執(zhí)行的程序 指令群。包含如下程序指令群,即從調(diào)用源程序接收輸入值inj、 in_2、 in一3,將接收到的3個值的每個分別存儲在選擇參數(shù)群的選擇 參數(shù)CPJ、選擇參數(shù)CP一2、選擇參數(shù)CP—3中,將選擇參數(shù)群的選 擇參數(shù)索引CPI設(shè)定為值'1,的程序指令群。在正常系統(tǒng)執(zhí)行時, in—l、in_2、in—3為值'2' 、 '4'、。',執(zhí)行在選擇參數(shù)CP_1~CP_3 中分別存儲值'2,、 '4'、。'的處理。僅存在輸入值inj、in一2、… 的個數(shù)(在本實施方式中為3個)的選擇參數(shù)。
4丄2選擇處理指令群2020
選擇處理指令群2020包含使用選擇參數(shù)群來算出選擇識別符的 程序指令群。選擇識別符與第3實施方式一樣,是變遷處理指令群執(zhí) 行時使用的值。
在選擇處理指令群算出選擇識別符的處理中,首先,對選擇參數(shù) 群的選擇參數(shù)索引CPI,選擇選擇參數(shù)群的選擇參數(shù)CP—CPI(即在 CPhl的情況下,選擇選擇參數(shù)CPJ)。
接著,使用秘密處理裝置1020具有的管理信息,選擇未執(zhí)行的 選擇對象數(shù)據(jù)中第CP_CPI個選擇對象數(shù)據(jù)。將選擇到的選擇對象數(shù) 據(jù)的序號存儲在選擇識別用變量中。這里,選擇對象數(shù)據(jù)的序號不是 從l、而是從0開始順序計數(shù)。例如,在選擇對象數(shù)據(jù)2040未執(zhí)行、 CP_CPI=0的情況下,選擇選擇對象數(shù)據(jù)2040,將0存儲在選擇識別 符用變量中。
4丄3選擇對象數(shù)據(jù)2040~2046
選擇對象數(shù)據(jù)2040~2046是當(dāng)由變遷處理指令群530進行分支 后、任一被執(zhí)行的程序指令群。
選擇對象數(shù)據(jù)2040~2046分別是包含與第3實施方式一樣的選擇 對象主要指令群150~156、與第3實施方式不同的更新處理指令群 2060 2066和分支指令群2070~2076的程序指令群。
在本實施方式中,當(dāng)正常系統(tǒng)執(zhí)行時,通過按選擇對象主要指令
群552、 555、 554的順序執(zhí)行,執(zhí)行該秘密保持程序提供的功能處理。 即,在選擇對象主要指令群552、 555、 554的每個中插入第1~第3 功能提供指令群。另外,在選擇對象主要指令群550、 551、 553、 556 中插入偽功能提供指令群。
(1) 更新處理指令群2060~2066
更新處理指令群2060~2066是更新下次選擇時使用的選擇參數(shù) 群的值的程序指令群。具體而言,更新處理指令群2060~2066將選擇 參數(shù)索引CPI遞增。由此,選擇處理指令群2020直接指定選擇時使
用的選擇參數(shù)。
(2) 分支指令群2070~2076
分支指令群2070~2076分別由分支到位于選擇對象數(shù)據(jù) 2040~2046以外的選擇處理指令群2020的程序指令群、和將控制返 回到程序調(diào)用源的處理的程序指令群之一構(gòu)成。
包含第3功能提供指令群的選擇對象數(shù)據(jù)2044中包含的分支指 令群2074是將控制返回到程序調(diào)用源的處理的程序指令群,向其它 選擇對象數(shù)據(jù)中包含的選擇對象之外分支的分支指令群是分支到選 擇處理指令群2020的程序指令群。
4丄4動作
(l)秘密保持程序2000執(zhí)行時的動作
這里,用圖24說明執(zhí)行秘密保持程序2000時的秘密處理裝置 1020的動作與秘密處理裝置60的動作之間的不同之處。
秘密處理裝置1020的動作將圖24所示的步驟S500、步驟S505、 步驟S530的動作變更為以下的動作。
在本實施方式中,將步驟S500變更為取得與功能提供指令群相 同數(shù)量的選擇參數(shù)的初始值,進行選擇參數(shù)索引CPI的值的初始化和 預(yù)處理的執(zhí)行。
在本實施方式中,將步驟S505變更為通過選擇具有選擇參數(shù)索 引CPI所示的序號的選擇參數(shù),來對選擇識別符進行選擇。例如,在 選擇參數(shù)索引CPI為4'的情況下,選擇選擇參數(shù)CP—1。
在本實施方式中,將步驟S530變更為將選擇參數(shù)索引CPI的值 遞增。
(2)動作的具體例
下面,用圖42來說明本實施方式中的秘密保持程序2000的動作 的具體例。
這里,如上所述,在選擇對象主要指令群552、 555、 554的每個 中包含第1~第3功能提供指令群,在選擇對象主要指令群550、 551、 553、 556中包含偽功能提供指令群,在正常系統(tǒng)執(zhí)行時,通過按選 擇對象主要指令群552、 555、 554的順序執(zhí)行,進行該秘密保持程序 提供的功能的處理。
秘密保持程序2000執(zhí)行預(yù)處理指令群2010的處理(步驟S2000)。 具體而言,秘密保持程序2000的預(yù)處理指令群2010執(zhí)行從調(diào)用源程 序分別接收值'2, 、 '4, 、 '3'、作為輸入值inl、 in2、 in3、分 別將值<2' 、 、 存儲在第1 第3選擇參數(shù)用變量中的處
理、和將選擇參數(shù)索引CPI初始化為值的處理,分支到選擇處 理指令群2020。
秘密保持程序2000執(zhí)行選擇處理指令群2020的處理(步驟 S2005)。具體而言,選擇處理指令群2020根據(jù)選擇參數(shù)索引CPI中 存儲的值,取得l個選擇參數(shù)。選擇處理指令群2020根據(jù)取得的選 擇參數(shù),選擇多個選擇對象數(shù)據(jù)中的l個選擇對象數(shù)據(jù)。這里,由于 選擇參數(shù)索引CPI是1,所以選擇處理指令群2020取得選擇參數(shù) CP—1(=2)。選擇處理指令群2020利用秘密處理裝置1020具有的管理 信息,選擇未執(zhí)行的選擇對象數(shù)據(jù)(2040、 2041、 2042、 2043、 2044、 2045、 2046)中第CPJ(-2)個配置的選擇對象數(shù)據(jù)2042。選擇處理指 令群2020將值存儲在選擇識別符用變量中。
秘密保持程序2000執(zhí)行管理信息更新指令群525的處理(步驟 S2010)。具體而言,管理信息更新指令群525將對應(yīng)于選擇識別符用 變量'2'的選擇對象數(shù)據(jù)2042的管理信息更新為已執(zhí)行。
秘密保持程序2000執(zhí)行變遷處理指令群530的處理(步驟 S2015)。具體而言,變遷處理指令群530執(zhí)行分支到對應(yīng)于選擇識別
符用變量<2'的選擇對象數(shù)據(jù)2042的處理。
秘密保持程序2000執(zhí)行選擇對象數(shù)據(jù)2042中包含的選擇對象主 要指令群552的處理(步驟S2020)。具體而言,選擇對象數(shù)據(jù)2042執(zhí) 行相當(dāng)于該程序提供的功能的一部分——即第1功能提供指令群的 處理。
秘密保持程序2000執(zhí)行更新處理指令群2062的處理(步驟 S2025)。具體而言,更新處理指令群2062將選擇參數(shù)群的選擇參數(shù) 索引CPI遞增。這里,選擇參數(shù)索引CPI的值為<1,的變?yōu)?lt;2,。
秘密保持程序2000執(zhí)行分支指令群2072的處理(步驟S2030)。 具體而言,分支指令群2072執(zhí)行分支到選擇處理指令群2020的處理。
秘密保持程序2000執(zhí)行選擇處理指令群2020的處理(步驟 S2035)。具體而言,由于選擇參數(shù)索引CPI中存儲的值為'2',所 以選擇處理指令群2020取得選擇參數(shù)CP一2(-4)。選擇處理指令群 2020利用秘密處理裝置1020具有的管理信息,選擇未執(zhí)行的選擇對 象數(shù)據(jù)(2040、 2041、 2043、 2044、 2045、 2046)中第CP—2(=4)個配置 的選擇對象數(shù)據(jù)2045。選擇處理指令群2020將值<5,存儲在選擇 識別符用變量中。
秘密保持程序2000執(zhí)行管理信息更新指令群525的處理(步驟 S2040)。具體而言,管理信息更新指令群525將對應(yīng)于選擇識別符用 變量'5'的選擇對象數(shù)據(jù)2045的管理信息更新為已執(zhí)行。
秘密保持程序2000執(zhí)行變遷處理指令群530的處理(步驟 S2045)。具體而言,變遷處理指令群530執(zhí)行分支到對應(yīng)于選擇識別 符用變量'5'的選擇對象數(shù)據(jù)2045的處理。
秘密保持程序2000執(zhí)行選擇對象數(shù)據(jù)2045中包含的選擇對象主 要指令群555的處理(步驟S2050)。具體而言,選擇對象數(shù)據(jù)2045執(zhí) 行相當(dāng)于該程序提供的功能的一部分——即第2功能提供指令群的 處理。
秘密保持程序2000執(zhí)行更新處理指令群2065的處理(步驟 S2055)。具體而言,更新處理指令群2065將選擇參數(shù)群的選擇參數(shù) 索引CPI遞增。這里,選擇參數(shù)索引的值為的變?yōu)?lt;3,。
秘密保持程序2000執(zhí)行分支指令群2075的處理(步驟S2060)。 具體而言,分支指令群2075執(zhí)行分支到選擇處理指令群2020的處理。
秘密保持程序2000執(zhí)行選擇處理指令群2020的處理(步驟 S2065)。具體而言,由于選擇參數(shù)索引CPI中存儲的值為。',所 以選擇處理指令群2020取得選擇參數(shù)CP_3(=3)。選擇處理指令群 2020利用秘密處理裝置1020具有的管理信息,選擇未執(zhí)行的選擇對 象數(shù)據(jù)(2040、 2041、 2043、 2044、 2046)中第CP—3(=3)個配置的選擇 對象數(shù)據(jù)2044。選擇處理指令群2020將值<4'存儲在選擇識別符 用變量中。
秘密保持程序2000執(zhí)行管理信息更新指令群525的處理(步驟 S2070)。具體而言,管理信息更新指令群525將對應(yīng)于選擇識別符用 變量'4'的選擇對象數(shù)據(jù)2044的管理信息更新為已執(zhí)行。
秘密保持程序2000執(zhí)行變遷處理指令群530的處理(步驟 S2075)。具體而言,變遷處理指令群530執(zhí)行分支到對應(yīng)于選擇識別 符用變量'4'的選擇對象數(shù)據(jù)2044的處理。
秘密保持程序2000執(zhí)行選擇對象數(shù)據(jù)2044中包含的選擇對象主 要指令群554的處理(步驟S2080)。具體而言,選擇對象數(shù)據(jù)2044執(zhí) 行相當(dāng)于該程序提供的功能的一部分——即第3功能提供指令群的 處理。
秘密保持程序2000執(zhí)行更新處理指令群2064的處理(步驟 S2085)。具體而言,更新處理指令群2064將選擇參數(shù)群的選擇參數(shù) 索引CPI遞增。這里,選擇參數(shù)索引的值為<3'的變?yōu)?4,。
秘密保持程序2000執(zhí)行分支指令群2074的處理(步驟S2090)。 具體而言,分支指令群2074執(zhí)行分支到秘密保持程序2000的調(diào)用源 的處理。
4.2程序難破解化裝置1010
程序難破解化裝置1010如圖43所示,由程序存儲部800f、輸入 部801f、功能提供指令群生成部802f、偽功能提供指令群生成部803f、 配置順序確定部804f、管理指令群生成部805f、秘密保持程序生成部 806f和輸出部807f構(gòu)成。
程序難破解化裝置1010具體而言,是由微處理器、ROM、 RAM、 硬盤單元、顯示器單元、鍵盤、鼠標(biāo)等構(gòu)成的計算機系統(tǒng)。在所述 RAM或所述硬盤單元中存儲計算機程序。這里,計算機程序為了實 現(xiàn)規(guī)定的功能,組合多個表示對計算機的指令的指令代碼來構(gòu)成。通 過所述微處理器根據(jù)所述計算機程序動作,程序難破解化裝置1010 實現(xiàn)其功能。即,所述微處理器1個個地讀出所述計算機程序中包含 的各指令,解讀讀出的指令,根據(jù)解讀結(jié)果進行動作。
程序存儲部800f、輸入部801f、功能提供指令群生成部802f、 偽功能提供指令群生成部803f、管理指令群生成部805f、秘密保持程 序生成部806f和輸出部807f分別與第3實施方式所示的程序存儲部 800、輸入部80K功能提供指令群生成部802、偽功能提供指令群生 成部803、管理指令群生成部805、秘密保持程序生成部806和輸出 部807—樣,所以省略說明。
配置順序確定部804與配置順序確定部804f的不同之處在于, 前者使用選擇參數(shù)初始值與用于求出選擇識別符的計算式來算出選 擇識別符,而后者使用選擇參數(shù)的初始值,不使用計算式。
下面,說明配置順序確定部804f。
配置順序確定部804f未圖示,但具有控制部850f、選擇處理部 851f、管理信息更新部852f、更新處理部853f和管理信息保持部854f。 這些構(gòu)成要素的連接關(guān)系與圖26所示的配置順序確定部804的構(gòu)成 要素的連接關(guān)系一樣。
配置順序確定部804f通過使用選擇參數(shù)的初始值,確認(rèn)實際上 按什么樣的順序算出選擇識別符,由此,確定應(yīng)配置功能提供指令群 和偽功能提供指令群的選擇對象主要指令群。
在本實施方式中,與第3實施方式一樣,設(shè)由輸入部801f接收 選擇參數(shù)的初始值,設(shè)選擇參數(shù)CP—1~CP~3的初始值為、 M'、。
(l)管理信息保持部854f
管理信息保持部854f與管理信息保持部854 —樣,所以省略說 明。下面,必要時,使用管理信息表格T800進行說明。
由此,可存儲配置了功能提供指令群的位置(配置的選擇對象數(shù)據(jù))。
(2) 控制部850f
控制部850f具有存儲選擇參數(shù)群的參數(shù)存儲區(qū)域。
控制部850f將輸入部801f接收到的選擇參數(shù)的初始值CP—1、
CP—2和CP—3(這里分別為'2' 、 '4' 、 '3')存儲在參數(shù)存儲區(qū)域中。
在處理開始時,控制部850f對選擇參數(shù)索引CPI設(shè)定初始值'l', 并存儲在參數(shù)存儲區(qū)域中。
控制部850f控制選擇處理部851f、管理信息更新部852f和更新 處理部853f的動作。
控制部850f執(zhí)行選擇識別符的值的每個、與程序存儲部800f存 儲的選擇對象數(shù)據(jù)之間的對應(yīng)。
控制部850f從功能提供指令群生成部802f取得生成的第i個功 能提供指令群??刂撇?50f根據(jù)選擇處理部851f取得的選擇識別符, 將取得的第i個功能提供指令群插入程序存儲部800f存儲的對應(yīng)的選 擇對象數(shù)據(jù)中。這里,i是l以上m以下的整數(shù)。另夕卜,控制部850f 暫時存儲第i個功能提供指令群與插入目的地的選擇對象數(shù)據(jù)之間的 對應(yīng)關(guān)系。
控制部850f從偽功能提供指令群生成部803f取得生成的多個偽 功能提供指令群中、未插入到選擇對象數(shù)據(jù)中的1個偽功能提供指令 群??刂撇?50f將取得的偽功能提供指令群插入到未插入第i功能提 供指令群或偽功能提供指令群的1個選擇對象數(shù)據(jù)中??刂撇?50f 對全部偽功能提供指令群執(zhí)行該動作。
由此,控制部850f可在各選擇對象數(shù)據(jù)中插入第i功能提供指令 群或偽功能提供指令群。
通過控制部850f進行的取得第i個功能提供指令群的動作,可選 擇構(gòu)成配置對象的功能提供指令群。
(3) 選擇處理部85If
選擇處理部851f取得存儲在參數(shù)存儲區(qū)域中的選擇參數(shù)索引CPI,根據(jù)取得的CPI,取得選擇參數(shù)CP—k。這里,k是l以上3以 下的數(shù)。
選擇處理部851f使用取得的CP—k的值與管理信息表格T800, 取得選擇識別符。
下面說明選擇識別符的取得方法。
選擇處理部851f將管理信息表格T800中值為<0'的從上位起 依次設(shè)為第O個、第1個、…,取得與所取得的CP—k的值一致的管 理信息。選擇處理部851f取得對應(yīng)于所取得的管理信息的選擇對象 數(shù)據(jù)的選擇識別符。
通過選擇處理部851f的動作、和控制部850f進行的根據(jù)選擇處 理部851f取得的選擇識別符將第i個功能提供指令群插入到選擇對象 數(shù)據(jù)中的動作,可將功能提供指令群配置到適當(dāng)?shù)呐渲媚康牡亍?br>
(4) 管理信息更新部852f
管理信息更新部852f與管理信息更新部852 —樣,所以省略說明。
(5) 更新處理部853f
更新處理部853f更新參數(shù)存儲區(qū)域存儲的選擇參數(shù)索引CPI。 即,將參數(shù)存儲區(qū)域存儲的選擇參數(shù)索引CPI遞增。 4.3程序難破解化裝置1010的動作
程序難破解化裝置1010的動作通過將圖27所示的步驟S620的 處理置換為下示的配置確定處理,生成秘密保持程序。 4.3.1配置確定處理
這里,用圖44所示的流程圖來說明配置確定處理的動作。 控制部850f對計數(shù)器i設(shè)定(T ,對選擇參數(shù)索引CPI設(shè)定初 始值'l,,并將選擇參數(shù)索引CPI和選擇參數(shù)CP—1、 CP—2、 CP_3 的各初始值'2' 、 、 '3,存儲到參數(shù)存儲區(qū)域中??刂撇?50f 執(zhí)行選擇識別符的值的每個與選擇對象數(shù)據(jù)之間的對應(yīng)(步驟 S2500)。這里,計數(shù)器i表示當(dāng)前著眼的功能提供指令群應(yīng)第幾個執(zhí) 行。即,這里,從第1功能提供指令群開始順序確定配置順序。
選擇處理部851f取得選擇參數(shù)索引CPI,根據(jù)取得的CPI,取得
選擇參數(shù)CP_k。選擇處理部851f使用取得的CP—k的值與管理信息 表格T800,取得選擇識別符(步驟S2505)。這里,k是1以上3以下 的數(shù)。例如,選擇處理部851f在選擇參數(shù)索引CPI為<r的情況下, 取得選擇參數(shù)CP_1(=2),使用取得的CP_1與管理信息表格T800, 取得選擇識別符'2'。
控制部850f根據(jù)選擇處理部851f取得的選擇識別符,將第i個 功能提供指令群插入到對應(yīng)的選擇對象數(shù)據(jù)中(步驟S2510)。例如, 在cont^、選擇識別符的值為'2'的情況下,將第l功能提供指令 群配置在選擇對象數(shù)據(jù)542中。
管理信息更新部852f將管理信息表格T800中包含的多個管理信 息中、對應(yīng)于選擇處理部851f取得的選擇識別符的管理信息,從值 '0,更新為值'T (步驟S2515)。例如,在選擇識別符的值為'2, 的情況下,管理信息保持部854f的管理信息表格T800中,對應(yīng)于選 擇對象數(shù)據(jù)542的管理信息從未配置變?yōu)橐雅渲谩?br>
更新處理部853f將參數(shù)存儲區(qū)域存儲的選擇參數(shù)索引CPI遞增, 更新選擇參數(shù)索引CPI的值,將更新結(jié)果蓋寫到參數(shù)存儲區(qū)域上(步 驟S2520)。
控制部850f將計數(shù)器i加上值'1,(步驟S2525)。 控制部850f判定計數(shù)器i是否比功能提供指令群的個數(shù)大(步驟 S2530)。
在判定為不大的情況下(步驟S2530為 <否'),控制部850f返回 步驟S2505,控制選擇處理部851f的動作。
在判定為大的情況下(步驟S2530為 <是'),控制部850f對多個 偽功能提供指令群的每個,確定配置目的地,使未插入功能提供指令 群的1個以上選擇對象數(shù)據(jù)之一變?yōu)榕渲媚康牡?步驟S2535)。例如, 若選擇對象數(shù)據(jù)540、 541、 542、 544未執(zhí)行,則將配置偽功能提供 指令群的位置確定為這些選擇對象數(shù)據(jù),插入各偽提供指令群。
4.4變形例
(l)在上述第4實施方式中,秘密保持程序存儲來自調(diào)用源的輸入 值,作為選擇參數(shù)的初始值,但不限于此。秘密保持程序也可構(gòu)成為 將從網(wǎng)絡(luò)上的其它設(shè)備取得的值代入選擇參數(shù)的初始值,或構(gòu)成為將 程序執(zhí)行裝置執(zhí)行了保持的其它程序的結(jié)果得到的輸出值代入選擇 參數(shù)的初始值。
(2) 在上述第4實施方式中,示出功能提供指令群為3個、偽功能 提供指令群為4個的情況,但未必是該個數(shù)。功能提供指令群為多個、 偽功能提供指令群為1個以上即可。
(3) 在上述第4實施方式中,如上所述,以使用了程序的程序執(zhí)行 裝置的形式來實現(xiàn)秘密處理裝置1020,但不限于此,也可執(zhí)行硬件 的安裝。
(4) 也可使上述實施方式和上述變形例分別組合。 4.5第4實施方式的效果
在本實施方式中,選擇處理指令群2020僅從選擇對象數(shù)據(jù)中、 未執(zhí)行的選擇對象數(shù)據(jù)中,確定接著選擇的選擇對象數(shù)據(jù)。由此,知 道難破解化對象數(shù)據(jù)不重復(fù)執(zhí)行相同選擇對象數(shù)據(jù)的非法解析者即 便執(zhí)行改變選擇參數(shù)群的初始值的窮舉搜索,也不會在代入任一初始 值的情況下重復(fù)選擇選擇對象數(shù)據(jù),難以根據(jù)是否重復(fù)來有效發(fā)現(xiàn)錯 誤的初始值。
另外,在本實施方式中,準(zhǔn)備數(shù)量與功能提供指令群相同的輸入 值,選擇對應(yīng)于各輸入值的選擇對象數(shù)據(jù)。下面,給出具體例描述這 種實現(xiàn)帶來的效果。在上述實例中,由于功能提供指令群的數(shù)量為3 個,所以利用輸入值inj、 in—2、 in一3來選擇選擇對象數(shù)據(jù)。在本實 施方式的秘密保持程序2000中,開始使用6以下的非負(fù)整數(shù)in—l(存 在7種),選擇7種選擇對象數(shù)據(jù)2040~2046之一。這里,括號內(nèi)的 "存在7種"是指非法解析者可設(shè)定的in_l的值存在7種。接著使用 5以下的非負(fù)整數(shù)in一2(存在6種),選擇6種未執(zhí)行的選擇對象數(shù)據(jù)(從 選擇對象數(shù)據(jù)2040 2046中去除了以inj選擇的選擇對象數(shù)據(jù)之后 的選擇對象數(shù)據(jù))之一。再使用4以下的非負(fù)整數(shù)ir^3(存在5種),選 擇5種未執(zhí)行的選擇對象數(shù)據(jù)(從選擇對象數(shù)據(jù)2040-2046中去除了 以in一l和in—2選擇的選擇對象數(shù)據(jù)之后的選擇對象數(shù)據(jù))。通過如此 唯一選擇選擇對象數(shù)據(jù),對于輸入值,選擇對象數(shù)據(jù)的選擇的變化不
減少,不減少攻擊者窮舉攻擊時的組合數(shù)。 5.第5實施方式
下面,參照
作為本發(fā)明第5實施方式的秘密保持程序 2200、程序難破解化裝置3010和秘密處理裝置3020。
系統(tǒng)的構(gòu)成與第3實施方式所示的構(gòu)成一樣,ff以省略說明。
秘密處理裝置1020與第3實施方式所示的秘密處理裝置60 — 樣,是使用秘密信息的裝置。
秘密處理裝置3020與第3實施方式所示的秘密處理裝置60的構(gòu) 成要素相同,但各部的處理各不相同。下面,主要說明各部的處理, 所以為了簡化說明,采用通過在計算機上執(zhí)行來實現(xiàn)秘密處理裝置的 秘密保持程序2200的說明,來代替秘密處理裝置的說明。這里,秘 密處理裝置3020的構(gòu)成與秘密保持程序2200的各部的對應(yīng)關(guān)系與第 3實施方式一樣。
5.1秘密保持程序2200
圖45示出秘密保持程序2200的整體構(gòu)成圖。下面,參照圖45 來說明秘密保持程序2200的細(xì)節(jié)。這里,向與第3實施方式的秘密 保持程序500—樣的部分附加相同的符號,省略說明。
秘密保持程序2200與第3實施方式的秘密保持程序500 —樣, 是不想讓非法解析者解析程序中包含的程序指令群按什么樣的執(zhí)行 順序執(zhí)行的程序。
秘密保持程序2200包含管理信息更新指令群525、變遷處理指 令群530、與第3實施方式不同的預(yù)處理指令群2210、選擇處理指令 群2220、選擇對象數(shù)據(jù)2240、 2241、 ...、 2246,它們按圖45所示的 順序配置。
選擇對象數(shù)據(jù)2240~2246分別由與第3實施方式一樣的選擇對象 主要指令群550~556、與第3實施方式不同的更新處理指令群 2260~2266和分支指令群2270-2276構(gòu)成,它們按圖45所示的順序 配置。各指令群是由1個以上程序指令構(gòu)成的程序指令群。
秘密保持程序2200是如下程序指令群,g卩從調(diào)用源程序中接 收2個輸入值in一l、 in 2、和執(zhí)行該程序提供的功能處理時使用的參
數(shù),執(zhí)行該程序提供的功能的處理。in—k(k是索引)是不足(7-k)的非 負(fù)整數(shù)。這里,將選擇對象數(shù)據(jù)設(shè)為2240~2246等7個,但不限于此。 也可將選擇對象數(shù)據(jù)的個數(shù)設(shè)為n+l個。這里,n為自然數(shù)。此時, in一k是不足(n+l-k)的非負(fù)整數(shù)。另外,輸入值in一l、 in—2的個數(shù)設(shè)為 2個,但不限于此。也可以是m(m為n+l以下的自然數(shù))個。
在秘密保持程序2200的處理中,使用后述的選擇處理指令群 2220的處理中使用的選擇參數(shù)群的選擇參數(shù)CP—1、 CP—2與模數(shù)值 NN、和保持后述的選擇識別符的選擇識別符用變量。
這里,設(shè)秘密保持程序2200在正常系統(tǒng)執(zhí)行時從調(diào)用源程序中 接收的輸入值in一1、 in—2為值1' 、 '4'。本實施方式中提供的秘 密保持程序2200是若使用從調(diào)用源程序中接收的值、則可按正確順 序執(zhí)行(包含選擇對象主要指令群的)選擇對象數(shù)據(jù)的程序,是無法知 道從調(diào)用源程序中接收的值的非法解析者難以知道(包含選擇對象主 要指令群的)選擇對象數(shù)據(jù)的執(zhí)行順序的程序。
5丄1預(yù)處理指令群2210
預(yù)處理指令群2210是設(shè)定選擇處理指令群2220中使用的選擇參 數(shù)群的程序指令群。選擇參數(shù)群由選擇參數(shù)CP—1、選擇參數(shù)CP一2 與模數(shù)值NN構(gòu)成。這些選擇參數(shù)CP一1、 0 _2是非負(fù)整數(shù)值,模數(shù) 值NN是自然數(shù)。
預(yù)處理指令群2210是啟動秘密保持程序2200時最初執(zhí)行的程序 指令群。由從調(diào)用源程序接收輸入值inj、 in—2、預(yù)處理指令群2210 將接收到的值分別存儲在選擇參數(shù)群的選擇參數(shù)CP—1、選擇參數(shù) CP一2中、將選擇參數(shù)群的模數(shù)值NN設(shè)定為7的程序指令群,以及 分支到選擇處理指令群2220的程序指令群構(gòu)成,是順序執(zhí)行這些程 序指令群的程序指令群。在正常系統(tǒng)執(zhí)行時,in—1、 in—2為值、 M,,預(yù)處理指令群2210執(zhí)行在選擇參數(shù)CPJ、 CP—2中分別存儲 值'2' 、 M'的處理。僅存在輸入值in—1、 in_2、...的個數(shù)(在本實 施方式中為2個)的選擇參數(shù)。另外,在本實施方式中,模數(shù)值的初 始值與選擇對象數(shù)據(jù)的數(shù)量一致,為7。
5丄2選擇處理指令群2220 選擇處理指令群2220由使用選擇參數(shù)群來算出選擇識別符的程 序指令群、和分支到變遷處理指令群530的程序指令群構(gòu)成,是順序 執(zhí)行這些程序指令群的程序指令群。選擇識別符與第3實施方式一 樣,是變遷處理指令群530中使用的值。
在選擇處理指令群2220算出選擇識別符的處理中,首先,對選 擇參數(shù)群的選擇參數(shù)CP—1、 CP一2和模數(shù)值NN,設(shè)pl、 p2為與NN 互質(zhì)的素數(shù),算出式20 'plx(選擇參數(shù)CPJ)+p2x(選擇參數(shù)CP一2) modNN',將算出結(jié)果設(shè)定成IND。在后面的說明中,IND表示選 擇識別符。這里,pl與NN互質(zhì)表示pl與NN的最大公約數(shù)為1。 另外,運算符'x'表示乘法。接著,使用秘密處理裝置3020具有的 管理信息,選擇未執(zhí)行的選擇對象數(shù)據(jù)中第IND個選擇對象數(shù)據(jù)。 將選擇到的選擇對象數(shù)據(jù)的序號存儲在選擇識別符用變量中。這里, 選擇對象數(shù)據(jù)的序號不是從l、而是從O開始順序計數(shù)。因此,在選 擇對象數(shù)據(jù)2240未執(zhí)行、IND-O的情況下,選擇選擇對象數(shù)據(jù)2240, 選擇識別符用變量變?yōu)?。
在本實施方式中,將pl、 p2分別設(shè)為值、 <2',將式20 設(shè)為4x(選擇參數(shù)CPJ)+2x(選擇參數(shù)CP—2)modNN,。
5丄3選擇對象數(shù)據(jù)2240-2246
選擇對象數(shù)據(jù)2240-2246是當(dāng)由變遷處理指令群530分支來時被 執(zhí)行的程序指令群。
選擇對象數(shù)據(jù)2240 2246分別是由與第3實施方式一樣的選擇對 象主要指令群550~556、與第3實施方式不同的更新處理指令群 2260~2266和分支指令群2270-2276構(gòu)成的程序指令群。
在本實施例中,當(dāng)正常系統(tǒng)執(zhí)行時,通過按選擇對象主要指令群 553、 555、 554的順序執(zhí)行,執(zhí)行該秘密保持程序提供的功能的處理。 即,在選擇對象主要指令群553、 555、 554的每個中插入第3實施方 式中的第1功能提供指令群、第2功能提供指令群、和第3功能提供 指令群,設(shè)在選擇對象主要指令群550、 551、 552、 556中插入與第 3實施方式一樣的偽功能提供指令群。
(l)更新處理指令群2260-2266
更新處理指令群2260-2266是更新選擇參數(shù)群的值的程序指令 群。將選擇參數(shù)CP—2的值代入選擇參數(shù)CP_1中,將選擇識別符用 變量中存儲的值代入選擇參數(shù)CP一2中,將選擇參數(shù)群的模數(shù)值遞減。 這里,選擇參數(shù)的數(shù)量為2個,但在m個的情況下,將選擇參數(shù)CP—m 的值代入選擇參數(shù)CP—(m-l)中,將選擇參數(shù)CP一(m-l)的值代入選擇 參數(shù)CP—(m-2)中,...,將選擇參數(shù)CP_2的值代入選擇參數(shù)CP_1中, 將選擇識別符用變量中存儲的值代入選擇參數(shù)CP_m中,將模數(shù)值遞 減。另外,在將模數(shù)值遞減的情況下,遞減后的模數(shù)值未必與pl、 p2互質(zhì)。
(2)分支指令群2270~2276
分支指令群2270~2276分別是分支到位于選擇對象數(shù)據(jù) 2240~2246以外的選擇處理指令群520的程序指令群、或?qū)⒖刂品祷?到程序調(diào)用源的處理的程序指令群。包含第3功能提供指令群的選擇 對象數(shù)據(jù)2244中包含的分支指令群2274,是將控制返回到程序調(diào)用 源的處理的程序指令群,其它選擇對象數(shù)據(jù)中包含的分支指令群是分 支到選擇處理指令群520的程序指令群。
5丄4動作
這里,用圖24說明執(zhí)行秘密保持程序2200時的秘密處理裝置 3020的動作與秘密處理裝置60的動作的不同之處。
秘密處理裝置3020的動作將圖24所示的步驟S500、步驟S505、 步驟S530的動作變更為以下的動作。
在本實施方式中,將步驟S500變更為除選擇參數(shù)的初始化和預(yù) 處理的執(zhí)行外,還執(zhí)行模數(shù)值NN的初始化。這里,模數(shù)值的初始值 與選擇對象數(shù)據(jù)的數(shù)量相同。
在本實施方式中,將步驟S505變更為取得選擇參數(shù)群中包含的 模數(shù)值NN,使用式20與取得的模數(shù)值NN,算出選擇識別符。這里 的NN不是選擇對象數(shù)據(jù)的數(shù)量,而是模數(shù)值。
在本實施方式中,將步驟S530變更為除更新選擇參數(shù)外,還將 模數(shù)值遞減。
(2)動作的具體例
下面,用圖46來說明本實施方式中的秘密保持程序2200的動作 的具體例。
這里,如上所述,在選擇對象主要指令群553、 555、 554的每個 中包含第1~第3功能提供指令群,在選擇對象主要指令群550、 551、 552、 556中包含偽功能提供指令群,在正常系統(tǒng)執(zhí)行時,通過按選 擇對象主要指令群553、 555、 554的順序執(zhí)行,執(zhí)行該秘密保持程序 提供的功能的處理。
秘密保持程序2200執(zhí)行預(yù)處理指令群2210的處理(步驟S3000)。 具體而言,預(yù)處理指令群2210將值'2' 、 '4'存儲在選擇參數(shù)CP一1、 CP一2的每個中,將值"'設(shè)定給模數(shù)值NN。
秘密保持程序2200執(zhí)行選擇處理指令群2220的處理(步驟 S3005)。具體而言,選擇處理指令群2220使用式20、選擇參數(shù) CP—1(=2)、 CP—2(=4)和模數(shù)值NN(=7),算出值IND。這里,算出的 值IND為< 1x2+2x4 mod 7=3,。根據(jù)秘密處理裝置3020具有的管 理信息,選擇未執(zhí)行的選擇對象數(shù)據(jù)(2240、 2241、 2242、 2243、 2244、 2245、 2246)中第3個選擇對象數(shù)據(jù)2243。選擇識別符用變量的值變 為<3,。
秘密保持程序2200執(zhí)行管理信息更新指令群525的處理(步驟 S3010)。具體而言,管理信息更新指令群525將對應(yīng)于選擇識別符用 變量'3'的選擇對象數(shù)據(jù)2243的管理信息更新為已執(zhí)行。
秘密保持程序2200執(zhí)行變遷處理指令群530的處理(步驟 S3015)。具體而言,變遷處理指令群530執(zhí)行分支到對應(yīng)于選擇識別 符用變量。'的選擇對象數(shù)據(jù)2243的處理。
秘密保持程序2200執(zhí)行選擇對象數(shù)據(jù)2243中包含的選擇對象主 要指令群553的處理(步驟S3020)。具體而言,選擇對象數(shù)據(jù)2243執(zhí) 行相當(dāng)于程序提供的功能一部分——即第1功能提供指令群的處理。
秘密保持程序2200執(zhí)行更新處理指令群2263的處理(步驟 S3025)。具體而言,更新處理指令群2263將選擇參數(shù)CP—2的值代入 選擇參數(shù)CP_1中,將選擇識別符用變量的值代入選擇參數(shù)CP_2中。 這里,選擇參數(shù)CP一1、 CP—2各自的值為'2' 、 4'的變?yōu)?4,、 3,。并且,將模數(shù)值NN遞減。這里,模數(shù)值NN為"'的變?yōu)?V 。
秘密保持程序2200執(zhí)行分支指令群2273的處理(步驟S3030)。 具體而言,分支指令群2273執(zhí)行分支到選擇處理指令群2220的處理。
秘密保持程序2200執(zhí)行選擇處理指令群2220的處理(步驟 S3035)。具體而言,選擇處理指令群2220使用式20、選擇參數(shù) CP_1(=4)、 CP一2(-3)和模數(shù)值NN(=6),算出值IND。這里,算出的 值IND為"x4+2x3 mod 6=4,。根據(jù)秘密處理裝置3020具有的管 理信息,選擇未執(zhí)行的選擇對象數(shù)據(jù)(2240、 2241、 2242、 2244、 2245、 2246)中第4個選擇對象數(shù)據(jù)2245。選擇識別符用變量的值變?yōu)?5,。
秘密保持程序2200執(zhí)行管理信息更新指令群525的處理(步驟 S3040)。具體而言,管理信息更新指令群525將對應(yīng)于選擇識別符用 變量'5'的選擇對象數(shù)據(jù)2245的管理信息更新為己執(zhí)行。
秘密保持程序2200執(zhí)行變遷處理指令群530的處理(步驟 S3045)。具體而言,變遷處理指令群530執(zhí)行分支到對應(yīng)于選擇識別 符用變量'5'的選擇對象數(shù)據(jù)2245的處理。
秘密保持程序2200執(zhí)行選擇對象數(shù)據(jù)2245中包含的選擇對象主 要指令群555的處理(步驟S3050)。具體而言,選擇對象數(shù)據(jù)2245執(zhí) 行相當(dāng)于程序提供的功能一部分——即第2功能提供指令群的處理。
秘密保持程序2200執(zhí)行更新處理指令群2265的處理(步驟 S3055)。具體而言,更新處理指令群2265將選擇參數(shù)CP一2的值代入 選擇參數(shù)CP—1中,將選擇識別符用變量的值代入選擇參數(shù)CP—2中。 這里,選擇參數(shù)CP—1、 CP—2各自的值為'4' 、 '3'的變?yōu)?3,、 '5,。并且,將模數(shù)值NN遞減。這里,模數(shù)值NN為'6,的變?yōu)?br>
秘密保持程序2200執(zhí)行分支指令群2275的處理(步驟S3060)。 具體而言,分支指令群2275執(zhí)行分支到選擇處理指令群2220的處理。
秘密保持程序2200執(zhí)行選擇處理指令群2220的處理(步驟 S3065)。具體而言,選擇處理指令群2220使用式20、選擇參數(shù) CP_1(=3)、 0 _2(=5)和模數(shù)值NN(=5),算出值IND。這里,算出的
值IND為'1x3+2x5 mod 5=3'。根據(jù)秘密處理裝置3020具有的管 理信息,選擇未執(zhí)行的選擇對象數(shù)據(jù)(2240、 2241、 2242、 2244、 2246) 中第3個選擇對象數(shù)據(jù)2244。選擇識別符用變量的值變?yōu)?4'。
秘密保持程序2200執(zhí)行管理信息更新指令群525的處理(步驟 S3070)。具體而言,管理信息更新指令群525將對應(yīng)于選擇識別符用 變量'4'的選擇對象數(shù)據(jù)2244的管理信息更新為己執(zhí)行。
秘密保持程序2200執(zhí)行變遷處理指令群530的處理(步驟 S3075)。具體而言,變遷處理指令群530執(zhí)行分支到對應(yīng)于選擇識別 符用變量'4'的選擇對象數(shù)據(jù)2244的處理。
秘密保持程序2200執(zhí)行選擇對象數(shù)據(jù)2244中包含的選擇對象主 要指令群554的處理(步驟S3080)。具體而言,選擇對象數(shù)據(jù)2244執(zhí) 行相當(dāng)于程序提供的功能的一部分——即第3功能提供指令群的處 理。
秘密保持程序2200執(zhí)行更新處理指令群2264的處理(步驟 S3085)。具體而言,更新處理指令群2264將選擇參數(shù)CP一2的值代入 選擇參數(shù)CP—1中,將選擇識別符用變量的值代入選擇參數(shù)CP一2中。 這里,選擇參數(shù)CPJ、 CP—2各自的值為<3' 、 <5'的變?yōu)?5,、 <4,。并且,將模數(shù)值NN遞減。這里,模數(shù)值NN為<5'的變?yōu)?W 。
秘密保持程序2200執(zhí)行分支指令群2274的處理(步驟S3090)。 具體而言,分支指令群2274執(zhí)行分支到秘密保持程序2200的調(diào)用源 的處理。
4.2程序難破解化裝置3010
程序難破解化裝置3010如圖47所示,由程序存儲部800g、輸 入部801g、功能提供指令群生成部802g、偽功能提供指令群生成部 803g、配置順序確定部804g、管理指令群生成部805g、秘密保持程 序生成部806g和輸出部807g構(gòu)成。
程序難破解化裝置3010具體而言,是由微處理器、ROM、 RAM、 硬盤單元、顯示器單元、鍵盤、鼠標(biāo)等構(gòu)成的計算機系統(tǒng)。在所述 RAM或所述硬盤單元中存儲計算機程序。這里,計算機程序為了實現(xiàn)規(guī)定的功能,組合多個表示對計算機的指令的指令代碼來構(gòu)成。通 過所述微處理器根據(jù)所述計算機程序動作,程序難破解化裝置3010 實現(xiàn)其功能。即,所述微處理器1個個地讀出所述計算機程序中包含 的各指令,解讀讀出的指令,根據(jù)解讀結(jié)果進行動作。
程序存儲部800g、輸入部801g、功能提供指令群生成部802g、 偽功能提供指令群生成部803g、管理指令群生成部805g、秘密保持 程序生成部806g和輸出部807g分別與第3實施方式所示的程序存儲 部800、輸入部801、功能提供指令群生成部802、偽功能提供指令 群生成部803、管理指令群生成部805、秘密保持程序生成部806和 輸出部807—樣,所以省略說明。
配置順序確定部804與配置順序確定部804g的不同之處在于用 于求出選擇識別符的計算式不同,和后者中計算式的模數(shù)值是變化 的。
下面,說明配置順序確定部804g。
配置順序確定部804g未圖示,但具有控制部850fg、選擇處理部 851g、管理信息更新部852g、更新處理部853g和管理信息保持部 854g。這些構(gòu)成要素的連接關(guān)系與圖26所示的配置順序確定部804 的構(gòu)成要素的連接關(guān)系一樣。
配置順序確定部804g通過使用選擇參數(shù)的初始值與選擇識別符 的計算式,確認(rèn)實際上按什么樣的順序算出選擇識別符,由此確定應(yīng) 配置功能提供指令群和偽功能提供指令群的選擇對象主要指令群。在 本實施方式中,設(shè)由輸入部801g接收選擇參數(shù)的初始值,設(shè)選擇參 數(shù)CP_1~CP~2的初始值為'2' 、<4'。
(1) 管理信息保持部854g
管理信息保持部854g與管理信息保持部854 —樣,所以省略說 明。下面,必要時,使用管理信息表格T800進行說明。
由此,可存儲配置了功能提供指令群的位置(配置的選擇對象數(shù)據(jù))。
(2) 控制部850g
控制部850g具有存儲選擇參數(shù)群的參數(shù)存儲區(qū)域。
控制部850g將輸入部801g接收到的選擇參數(shù)的初始值CP_1和 CP一2(這里分別為'2' 、'4')存儲在參數(shù)存儲區(qū)域中。
在處理開始時,控制部850g對模數(shù)值NN設(shè)定初始值"',并 存儲在參數(shù)存儲區(qū)域中。
控制部850g控制選擇處理部851g、管理信息更新部852g和更 新處理部853g的動作。
控制部850g執(zhí)行選擇處理部85lg具有的式20可取的值、即由 式20可取的選擇識別符的值的每個、與程序存儲部800g存儲的選擇 對象數(shù)據(jù)之間的對應(yīng)。
控制部850g從功能提供指令群生成部802g取得生成的第i個功 能提供指令群。控制部850g根據(jù)選擇處理部851g取得的選擇識別符, 將取得的第i個功能提供指令群插入程序存儲部800g存儲的對應(yīng)的 選擇對象數(shù)據(jù)中。這里,i是1以上m以下的整數(shù)。另外,控制部850g 暫時存儲第i個功能提供指令群與插入目的地的選擇對象數(shù)據(jù)之間的 對應(yīng)關(guān)系。
控制部850g從偽功能提供指令群生成部803g取得生成的多個偽 功能提供指令群中、未插入到選擇對象數(shù)據(jù)中的1個偽功能提供指令 群??刂撇?50g將取得的偽功能提供指令群,插入到未插入第i功 能提供指令群或偽功能提供指令群的1個選擇對象數(shù)據(jù)中。控制部 850g對全部偽功能提供指令群執(zhí)行該動作。
由此,控制部850g可在各選擇對象數(shù)據(jù)中插入第i功能提供指 令群或偽功能提供指令群。
通過控制部850g取得第i個功能提供指令群的動作,可選擇構(gòu) 成配置對象的功能提供指令群。
(3)選擇處理部85lg
選擇處理部851g取得存儲在參數(shù)存儲區(qū)域中的選擇參數(shù)CP_1、 CP—2和模數(shù)值NN,使用取得的各值與式20,算出值IND。
選擇處理部851g使用算出的值IND與管理信息表格T800,取得 選擇識別符。
下面說明選擇識別符的取得方法。
選擇處理部851g將管理信息表格T800中值為W的從上位起 依次設(shè)為第O個、第1個、...,取得與算出的IND的值一致的管理 信息。選擇處理部851g取得對應(yīng)于取得的管理信息的選擇對象數(shù)據(jù) 的選擇識別符。
通過選擇處理部851的動作、和控制部850進行的根據(jù)選擇處理 部851取得的選擇識別符將第i個功能提供指令群插入到選擇對象數(shù) 據(jù)中的動作,可將功能提供指令群配置到適當(dāng)?shù)呐渲媚康牡亍?br>
(4) 管理信息更新部852g
管理信息更新部852g與管理信息更新部852 —樣,所以省略說明。
(5) 更新處理部853g
更新處理部853g更新參數(shù)存儲區(qū)域存儲的選擇參數(shù)CP_1、CP_2 和模數(shù)值NN。
這里,更新處理部853g將選擇參數(shù)CP—2的值代入選擇參數(shù)CP—1 中,將選擇識別符用變量的值代入選擇參數(shù)CP一2中,分別更新選擇 參數(shù)的值。更新處理部853g將更新后的選擇參數(shù)CP_1和CP一2蓋寫 到控制部850g的參數(shù)存儲區(qū)域上。更新處理部853g將模數(shù)值NN遞 減,將其結(jié)果蓋寫到控制部850g的參數(shù)存儲區(qū)域上。
5.3程序難破解化裝置3010的動作
程序難破解化裝置3010的動作通過將圖27所示的步驟S620的 處理置換為下示的配置確定處理,生成秘密保持程序。 5.3.1配置確定處理
這里,用圖48所示的流程圖來說明配置確定處理的動作。 控制部850g對計數(shù)器i設(shè)定'T ,對模數(shù)值NN設(shè)定初始值<7', 并將選擇參數(shù)群中包含的選擇參數(shù)CP—1、 CP—2和模數(shù)值NN的各初 始值'2' 、 (4,、",存儲到參數(shù)存儲區(qū)域中??刂撇?50g執(zhí)行 選擇識別符的值的每個與選擇對象數(shù)據(jù)之間的對應(yīng)(步驟S3500)。這 里,計數(shù)器i表示當(dāng)前著眼的功能提供指令群應(yīng)第幾個執(zhí)行。即,這 里,從第1功能提供指令群開始順序確定配置順序。
選擇處理部851g取得參數(shù)存儲區(qū)域中存儲的CP—1、 CP一2和模
數(shù)值NN,使用取得的各值與式20,算出值IND。選擇處理部851g 使用算出的值IND與管理信息表格T800,取得選擇識別符(步驟 S3505)。例如,在選擇參數(shù)CP—1~CP—2的值為、 <4',模數(shù) 值NN為(7,的情況下,式20的值變?yōu)?lx2+2x4mod 7=3,。選 擇處理部851g從管理信息表格T800中,選擇未執(zhí)行的選擇對象數(shù)據(jù) (2240、 2241、 2242、 2243、 2244、 2245、 2246)中第3個選擇對象數(shù) 據(jù)2243。選擇識別符用變量的值變?yōu)?3,。這里,所謂'未執(zhí)行, 表示功能提供指令群未配置在選擇對象數(shù)據(jù)中。另外,所謂'己執(zhí)行' 表示功能提供指令群已配置在選擇對象數(shù)據(jù)中。
控制部850g根據(jù)選擇處理部851g取得的選擇識別符,將第i個 功能提供指令群插入到對應(yīng)的選擇對象數(shù)據(jù)中(步驟S3510)。例如, 在cont-l、選擇識別符的值為'3,的情況下,將第l功能提供指令 群配置在選擇對象數(shù)據(jù)543中。
管理信息更新部852g將管理信息表格T800中包含的多個管理信 息中、對應(yīng)于選擇處理部851g取得的選擇識別符的管理信息,從值 '0,更新為值(1'(步驟S3515)。例如,在選擇識別符的值為'3, 的情況下,管理信息保持部854g的管理信息表格T800中,對應(yīng)于選 擇對象數(shù)據(jù)543的管理信息從未配置變?yōu)橐雅渲谩?br>
更新處理部853g更新參數(shù)存儲區(qū)域存儲的選擇參數(shù)CP_1和 CP—2,將更新結(jié)果蓋寫到參數(shù)存儲區(qū)域上(步驟S3520)。更新方法如 上所述,所以這里省略說明。例如,在選擇參數(shù)CP—1和CP_2各自 的值為'2' 、 '4'、選擇識別符的值為《3'的情況下,將選擇參 數(shù)CP—1和CP—2各自的值變?yōu)?lt;4' 、 '3'。
更新處理部853g將模數(shù)值NN遞減,將其結(jié)果蓋寫到參數(shù)存儲 區(qū)域上(步驟S3525)。
控制部850g將計數(shù)器i加上值U'(步驟S3530)。
控制部850g判定計數(shù)器i是否比功能提供指令群的個數(shù)大(步驟 S3535)。
在判定為不大的情況下(步驟S3535為'否,),控制部850g返 回步驟S3505,控制選擇處理部851g的動作。 在判定為大的情況下(步驟S3535為'是'),控制部850g對多 個偽功能提供指令群的每個確定配置目的地,使未插入功能提供指令 群的1個以上選擇對象數(shù)據(jù)之一變?yōu)榕渲媚康牡?步驟S3540)。例如, 若選擇對象數(shù)據(jù)540、 541、 542、 544未執(zhí)行,則將配置偽功能提供 指令群的位置確定為這些選擇對象數(shù)據(jù),插入各偽提供指令群。
5.4變形例
(1) 在上述第5實施方式中,秘密保持程序存儲來自調(diào)用源的輸入 值,作為選擇參數(shù)的初始值,但不限于此。秘密保持程序也可構(gòu)成為 將從網(wǎng)絡(luò)上的其它設(shè)備取得的值代入選擇參數(shù)的初始值,或構(gòu)成為將 程序執(zhí)行裝置執(zhí)行了保持的其它程序的結(jié)果得到的輸出值代入選擇 參數(shù)的初始值。
(2) 在上述第5實施方式中,示出功能提供指令群為3個、偽功能 提供指令群為4個的情況,但未必是該個數(shù)。功能提供指令群為多個、 偽功能提供指令群為1個以上即可。
(3) 在上述第5實施方式中,如上所述,以使用程序的程序執(zhí)行裝 置的形式來實現(xiàn)秘密處理裝置3020,但不限于此,也可執(zhí)行硬件的 安裝。
(4) 也可使上述實施方式和上述變形例分別組合。 5.5第5實施方式的效果
在本實施方式中,選擇處理指令群2220僅從選擇參數(shù)數(shù)據(jù)中、 未執(zhí)行的選擇對象數(shù)據(jù)中,確定接著選擇的選擇對象數(shù)據(jù)。由此,知 道難破解化對象數(shù)據(jù)不重復(fù)執(zhí)行相同選擇對象數(shù)據(jù)的非法解析者即 便執(zhí)行改變選擇參數(shù)群的初始值的窮舉搜索,也不會在代入任一初始 值的情況下重復(fù)選擇選擇對象數(shù)據(jù),難以根據(jù)是否重復(fù)來有效發(fā)現(xiàn)錯 誤的初始值。
另外,在本實施方式中,利用輸入值inj、 in—2,唯一選擇選擇 對象數(shù)據(jù)。下面描述其理由。開始使用6以下的非負(fù)整數(shù)in—1(存在7 種),選擇7種選擇對象數(shù)據(jù)2240~2246之一。接著使用5以下的非 負(fù)整數(shù)in—2(存在6種),選擇6種未執(zhí)行的選擇對象數(shù)據(jù)(從選擇對象 數(shù)據(jù)2040~2046中去除了以in—1選擇的選擇對象數(shù)據(jù)之后的選擇對
象數(shù)據(jù))之一。由于輸入的in一k(k=l、 2)可取的種類與選擇對象數(shù)據(jù)可 選擇的種類相同,所以這些選擇使用in—1、 ii^2來唯一確定。因此, 利用輸入值in一l、 in—2來唯一選擇選擇對象數(shù)據(jù)。通過如此唯一選擇 選擇對象數(shù)據(jù),對于輸入值,選擇對象數(shù)據(jù)的選擇的變化不減少,不 減少攻擊者窮舉攻擊時的組合數(shù)。 6.變形例
上述說明的實施方式是本發(fā)明的實施一例,本發(fā)明不限于該實施 方式,在不脫離其精神的范圍內(nèi),可以各種方式來實施。例如,下面 的情況也包含于本發(fā)明中。
(1) 上述第3實施方式的選擇處理指令群算出選擇識別符的處理 中,使用的式為式3 、lx(選擇參數(shù)CPJ)+p2x(選擇參數(shù)CP—2)mod NN',但不限于此。該式只要滿足在固定了選擇參數(shù)CP一1的值時, 選擇參數(shù)CP—2的值與式的計算結(jié)果為1對1的條件即可。在式3中, 若選擇參數(shù)CP一2是不足NN的值,則由于p2與NN互質(zhì),所以若存 在NN種可取的選擇參數(shù)CP—2,則與之對應(yīng),p2x(選擇參數(shù)CP—2) mod NN也存在NN種。
另外,第5實施方式也一樣,將選擇識別符的計算式設(shè)為式20, 但不限于此。例如,該式只要滿足在固定了選擇參數(shù)CP一1的值時, 選擇參數(shù)CP一2的值與式的計算結(jié)果為1對1的條件即可。
(2) 在各實施方式的動作中,選擇對象主要指令群與變遷處理指令 群也可替換順序。在第3實施方式中,更新處理指令群560~566為包 含于選擇對象數(shù)據(jù)540~546中的構(gòu)成,但也可構(gòu)成為在管理信息更新 指令群525之后僅配置1個。另外,構(gòu)成為選擇處理指令群520、管 理信息更新指令群525、變遷處理指令群530等3個指令群各為1個, 但也可構(gòu)成為配置所述3個指令群,代替各選擇對象數(shù)據(jù)中包含的分 支指令群570 576的每個。
另外,第4和第5實施方式也一樣。
(3) 各指令群未必是獨立的指令群,也可構(gòu)成為組合多個指令群提 供的功能的部件。
(4) 在第3、第4和第5實施方式中,采取在算出相當(dāng)于已執(zhí)行的
選擇對象數(shù)據(jù)的選擇識別符的情況下,算出對應(yīng)于未執(zhí)行的選擇識別 符的最近的值的方法,但不限于該計算方法。例如,也可以是隨機計 算選擇識別符、重復(fù)確認(rèn)是否執(zhí)行對應(yīng)的選擇對象數(shù)據(jù)的計算方法 等。此時,非法解析者更難以解析。
(5) 上述各實施方式和變形例中的功能提供指令群、偽功能提供指 令群、管理指令群的生成順序不限于上述順序。各步驟只要在使用生 成的各指令群生成秘密保持程序的步驟之前結(jié)束,則按什么樣的順序 執(zhí)行均無妨。例如,也可使偽功能提供指令群與功能提供指令群的生 成順序顛倒等。
(6) 各實施方式的說明中例舉的數(shù)值全部是一例,不限于該數(shù)值。 例如,可進一步增加選擇對象數(shù)據(jù)的數(shù)量或初始值的數(shù)量,或?qū)⒊跏?值的數(shù)值設(shè)為其它數(shù)值。
通過增加初始值的數(shù)量,可進一步使解析變困難。
(7) 在第1實施方式中,秘密保持程序包含1個以上偽功能提供指 令群,但不限于此。
秘密保持程序也可不包含偽功能提供指令群。 另外,第3、第4和第5實施方式中也一樣,秘密保持程序也可 不包含偽功能提供指令群。
(8) 在上述各實施方式的秘密處理裝置或秘密保持程序中,均將分 割程序后生成的指令群作為選擇對象數(shù)據(jù),但不限于此,只要是在按 照某一順序使用的情況下得到正當(dāng)結(jié)果的信息均可。作為具體例,考 慮在用多個加密密鑰執(zhí)行依照順序的多重加密的情況下,將該加密密 鑰分別處理為選擇對象數(shù)據(jù)。另外,秘密保持程序也一樣。
(9) 在上述各實施方式的秘密處理裝置或秘密保持程序中,均采取 接收選擇參數(shù)的初始值、在內(nèi)部更新該值的構(gòu)成,但不限于此。具體 而言,也可在秘密處理裝置等的外部更新選擇參數(shù)的值,秘密處理裝 置等接收更新后的值。另外,也可事先接收秘密處理裝置執(zhí)行的處理 結(jié)束之前使用的選擇參數(shù)全部,作為基于陣列的數(shù)據(jù),執(zhí)行依照該數(shù) 據(jù)的動作。另外,秘密保持程序也一樣。
(10) 在第1實施方式中,作為選擇識別符的算出方法,也可使用
第3實施方式所示的方法、第4實施方式所示的方法和第5實施方式 所示的方法之一。
(11) 在上述第1實施方式中,程序難破解化裝置IO使用式1算出 與塊的配置位置相對應(yīng)的值,但不限于此。
程序難破解化裝置10也可使用算出配置了塊的地址的算出式。 此時,程序執(zhí)行裝置20使用所述算出式,算出接著執(zhí)行的塊的地址。
第3、第4和第5實施方式中也一樣,程序難破解化裝置也可使 用算出配置了塊的地址的算出式。
(12) 本發(fā)明中的 <變量'不限于特定語言中的變量,也可以是寄 存器、高速緩沖存儲器、RAM、 HDD等可改寫的存儲器中存儲的內(nèi) 容、和用記載于這些存儲器中的值指定的位置上存儲的內(nèi)容。
(13) 在上述第1實施方式中,更新處理指令群配置在緊挨著選擇 對象主要指令群的后面,但不限于此。也可插入到選擇對象主要指令 群中。
這里,在緊挨著選擇主要指令群中包含的1個以上程序指令群中 位于最后的程序指令群的后面配置更新處理指令群,也稱為插入到選 擇對象主要指令群中。
在緊挨著選擇主要指令群中包含的1個以上程序指令群中位于 最后的程序指令群的后面插入更新處理指令群,與配置在緊挨著選擇 對象主要指令群的后面的情況相同。
(14) 在上述實施方式中,在更新選擇參數(shù)的情況下,將上次算出 的選擇識別符本身代入選擇參數(shù)中,但不限于此。
也可對算出的選擇識別符實施運算,使用該運算結(jié)果,更新選擇 參數(shù)。例如,也可設(shè)AK算出的選擇識別符的值)+1,將A的值代入 選擇參數(shù)中。作為其它實例,也可設(shè)A氣算出的選擇識別符的值)x3, 將A的值代入選擇參數(shù)中。
或者,也可代入表示之前2個選擇的選擇對象數(shù)據(jù)等、在過去某 個時刻處理后的選擇對象數(shù)據(jù)的選擇識別符的值。g卩,只要反映表示 過去選擇的選擇對象數(shù)據(jù)的選擇識別符,則可以是任何代入方式。這 里,所謂表示過去某個時刻處理后的選擇對象數(shù)據(jù)的選擇識別符,還
包含表示當(dāng)前選擇的選擇對象數(shù)據(jù)的選擇識別符。
例如,也可使用表示上次算出的選擇對象數(shù)據(jù)的選擇識別符、與
表示過去2次以上算出的選擇對象數(shù)據(jù)的選擇識別符,更新選擇參 數(shù)。具體而言,也可設(shè)A-(上次算出的選擇識別符)+(2次之前算出的 選擇識別符),將A的值代入選擇參數(shù)中。
(15) 設(shè)本發(fā)明的指令群由1個以上的指令構(gòu)成。即,本發(fā)明的指 令群還包含由1個指令構(gòu)成的情況。
(16) 在上述第1實施方式中,使用多個選擇參數(shù)全部,算出選擇 識別符,但不限于此。
也可使用多個選擇參數(shù)中1個以上的選擇參數(shù)來算出選擇識別 符。例如,也可以是在3個選擇參數(shù)A、 B、 C中,當(dāng)算出某個選擇 識別符時使用選擇參數(shù)A、 B,而當(dāng)算出其它選擇識別符時,使用選 擇參數(shù)A、 C。
第2實施方式、第3實施方式、第4實施方式和第5實施方式中 也一樣,也可使用多個選擇參數(shù)中1個以上的選擇參數(shù)來算出選擇識 別符。
(17) 在上述第2實施方式中,在各選擇對象數(shù)據(jù)中存儲1個數(shù)據(jù), 但不限于此。
各選擇對象數(shù)據(jù)中存儲的數(shù)據(jù)的個數(shù)也可是1個以上。
(18) 在上述第2實施方式中,當(dāng)更新選擇參數(shù)時,將選擇識別符 的值代入更新對象的選擇參數(shù)中,但不限于此。
也可對選擇識別符的值實施運算,將其運算結(jié)果代入更新對象的 選擇參數(shù)中。例如,向選擇識別符的值加上常數(shù),將加法結(jié)果代入更 新對象的選擇參數(shù)中。
第3實施方式、第4實施方式和第5實施方式中也一樣,也可對 選擇識別符的值實施運算,將其運算結(jié)果代入更新對象的選擇參數(shù) 中。
另外,在第2實施方式中,程序難破解化裝置當(dāng)生成秘密保持程 序時,將秘密信息變換為秘密信息用變量,但不限于此。
也可變換為包含秘密信息用變量的運算式。例如,也可將秘密信
息變換為秘密信息用變量與常數(shù)之和的運算式。
(19) 構(gòu)成上述各裝置的構(gòu)成要素的一部分或全部也可由一個系統(tǒng) LSI(Large Scale Integration:大規(guī)模集成電路)構(gòu)成。系統(tǒng)LSI是在一 個芯片上集成多個構(gòu)成部制造的超多功能LSI,具體而言,是包含微 處理器、ROM、 RAM等構(gòu)成的計算機系統(tǒng)。在所述RAM中存儲計 算機程序。通過所述微處理器根據(jù)所述計算機程序動作,系統(tǒng)LSI 實現(xiàn)其功能。這里為系統(tǒng)LSI,但也可根據(jù)集成度的不同稱為IC、LSI、 超LSI、甚LSI。另夕卜,集成電路化的方法不限于LSI,也可由專用 電路或通用處理器來實現(xiàn)。也可利用在LSI制造后可編程的 FPGA(Field Programmable Gate Array:現(xiàn)場可編程門陣列)或可再構(gòu)成 LSI內(nèi)部的電路單元連接或設(shè)定的可重構(gòu)處理器。
并且,如果因半導(dǎo)體技術(shù)的進步或派生的其它技術(shù)而出現(xiàn)置換 LSI的集成電路化技術(shù),則當(dāng)然也可使用該技術(shù)來進行構(gòu)成要素的集 成化??蛇m應(yīng)于生物技術(shù)等。
(20) 構(gòu)成上述各裝置的構(gòu)成要素的一部分或全部也可由可拆裝于 各裝置上的IC卡或單體模塊構(gòu)成。所述IC卡或所述模塊是由微處理 器、ROM、 RAM等構(gòu)成的計算機系統(tǒng)。所述IC卡或所述模塊也可 包含上述超多功能LSI。通過微處理器根據(jù)計算機程序動作,所述IC 卡或所述模塊實現(xiàn)其功能。該IC卡或該模塊也可具有耐篡改性。
(21) 本發(fā)明也可以是上述所示的方法。另夕卜,也可是由計算機來 實現(xiàn)這些方法的計算機程序,或是由所述計算機程序構(gòu)成的數(shù)字信 號。
(22) 另外,本發(fā)明也可將所述計算機程序或所述數(shù)字信號記錄在 計算機可讀的記錄媒體中,例如軟盤、硬盤、CD-ROM、 MO、 DVD、 DVD-ROM、 DVD-RAM、 BD(Blu-my Disc:藍(lán)光光盤)、半導(dǎo)體存儲 器等中。另外,也可以是記錄在這些記錄媒體中的所述數(shù)字信號。
(23) 另外,本發(fā)明也可經(jīng)由電氣通信線路、無線或有線通信線路、 以因特網(wǎng)為代表的網(wǎng)絡(luò)、數(shù)據(jù)廣播等來傳輸所述計算機程序或所述數(shù) 字信號。
(24) 另外,本發(fā)明也可以是具備微處理器與存儲器的計算機系統(tǒng), 所述存儲器存儲上述計算機程序,所述微處理器根據(jù)0f述計算機程序 動作。
(25) 另外,也可通過將所述程序或所述數(shù)字信號記錄在所述記錄 媒體中移送,或經(jīng)由所述網(wǎng)絡(luò)等移送所述程序或所述數(shù)字信號,由獨 立的其它計算機系統(tǒng)來實施。
(26) 也可組合這些實施方式及變形例。 產(chǎn)業(yè)上的可利用性
本發(fā)明的秘密處理裝置、秘密保持程序由于在執(zhí)行處理加密密鑰 等秘密信息的處理時使非法解析者的攻擊變困難,所以在執(zhí)行使用那 些若向非法解析者泄漏則將導(dǎo)致不利的秘密信息的處理的裝置等領(lǐng) 域中有用。
另外,本發(fā)明的程序難破解化裝置由于可將處理加密密鑰等秘密 信息的程序變換為更難以解析的形式,所以在執(zhí)行使用那些若向非法 解析者泄漏則將導(dǎo)致不利的秘密信息的處理的軟件等領(lǐng)域中有用。
另外,上述所示的程序難破解化裝置可在電器設(shè)備制造產(chǎn)業(yè)中經(jīng) 營地、并繼續(xù)和反復(fù)地制造并出售。
權(quán)利要求
1、一種程序變換裝置,根據(jù)原始程序生成秘密保持程序,其特征在于具備程序取得部件,取得原始程序;選擇對象數(shù)據(jù)生成部件,生成多個選擇對象數(shù)據(jù),其中該多個選擇對象數(shù)據(jù)通過按規(guī)定順序進行處理、輸出與所述原始程序相同的執(zhí)行結(jié)果,并且對應(yīng)了不同的選擇識別符;預(yù)處理指令群生成部件,生成將值代入多個選擇參數(shù)的每個中的預(yù)處理指令群;選擇處理指令群生成部件,根據(jù)使用了所述多個選擇參數(shù)的運算式,生成選擇處理指令群,該選擇處理指令群包含取得表示接著處理的選擇對象數(shù)據(jù)的選擇識別符的指令群;更新處理指令群生成部件,生成更新處理指令群,該更新處理指令群使選擇參數(shù)的值,反映表示過去處理的選擇對象數(shù)據(jù)的選擇識別符、或過去代入所述選擇參數(shù)中的1個以上選擇參數(shù)值中的至少1個選擇參數(shù)值;和秘密保持程序生成部件,生成包含所述預(yù)處理指令群、所述處理選擇指令群、所述更新處理指令群、所述多個選擇對象數(shù)據(jù)的秘密保持程序,該秘密保持程序重復(fù)進行執(zhí)行所述處理選擇指令群的處理、處理由所述選擇處理指令群取得的選擇識別符表示的選擇對象數(shù)據(jù)的處理、和若處理所述選擇對象數(shù)據(jù)則執(zhí)行所述更新處理指令群的處理。
2、 根據(jù)權(quán)利要求1所述的程序變換裝置,其特征在于 所述規(guī)定順序是向所述多個選擇參數(shù)賦予規(guī)定的初始值、通過重復(fù)執(zhí)行所述選擇處理指令群和所述更新處理指令群、從而依次算出的 選擇識別符的順序。
3、 根據(jù)權(quán)利要求2所述的程序變換裝置,其特征在于 所述多個選擇對象數(shù)據(jù)的每個由l個以上的數(shù)據(jù)構(gòu)成。
4、 根據(jù)權(quán)利要求3所述的程序變換裝置,其特征在于-所述原始程序具有應(yīng)隱匿的秘密信息,所述選擇處理指令群生成部件生成選擇處理指令群,該選擇處理 指令群由通過使用所述多個選擇參數(shù)的第1運算式來算出所述選擇 識別符的指令群構(gòu)成,所述更新處理指令群生成部件生成更新處理指令群,該更新處理 指令群根據(jù)由所算出的所述選擇識別符表示的選擇對象數(shù)據(jù)的值,更 新所述多個選擇參數(shù),所述程序變換裝置還具備變遷處理指令群生成部件,生成變遷處理指令群,該變遷處理指 令群利用使用了更新后的多個選擇參數(shù)的第2運算式,算出與所述秘 密信息相同的值,所述秘密保持程序生成部件,將生成的變遷處理指令群配置在所 述更新處理指令群的配置位置與所述秘密信息的配置位置之間,并置 換成由所述變遷處理指令群算出所述秘密信息的處理。
5、 根據(jù)權(quán)利要求2所述的程序變換裝置,其特征在于 程序變換裝置還具備分割部件,將所述原始程序分割成1個以上的塊,所述多個選擇對象數(shù)據(jù)的每個包含不同的塊。
6、 根據(jù)權(quán)利要求5所述的程序變換裝置,其特征在于所述多個選擇參數(shù)是從第1到第n的選擇參數(shù),所述更新處理指令群生成部件生成更新處理指令群,該更新處理 指令群對于所述多個選擇對象數(shù)據(jù)的每個,將存儲在第j-l選擇參數(shù) 中的值存儲到第j選擇參數(shù),將常數(shù)值存儲在第l選擇參數(shù)中,其中j是2以上n以下的整數(shù)。
7、 根據(jù)權(quán)利要求6所述的程序變換裝置,其特征在于 所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù)所述運算式對所述第1到第n的選擇參數(shù)的每個,算出Pix第i 選擇參數(shù),將算出的結(jié)果分別相加,對加法結(jié)果實施以所述規(guī)定數(shù)量 為模數(shù)值N的模數(shù)運算,算出選擇識別符,其中i是l以上n以下的整數(shù),Pi與模數(shù)值N互質(zhì)。
8、 根據(jù)權(quán)利要求5所述的程序變換裝置,其特征在于 選擇對象數(shù)據(jù)生成部件具備存儲部,存儲當(dāng)前時刻之前由所述運算式算出的選擇識別符的每個;執(zhí)行部,對l個塊選擇l個值,將存儲在第j-l選擇參數(shù)中的值 存儲到第j選擇參數(shù),將選擇到的值存儲在第l選擇參數(shù)中,執(zhí)行所 述運算式,其中j是2以上n以下的整數(shù);判斷部,判斷與算出的算出值相同的選擇識別符是否存儲在所述 存儲部中;存儲部,在判斷結(jié)果為否定的情況下,將所述選擇到的1個值確 定為對所述1個塊的所述常數(shù)值,并將所述1個塊存儲在所算出的算 出值表示的選擇對象數(shù)據(jù)中;和重復(fù)控制部,在判斷結(jié)果為肯定的情況下,確定所述常數(shù)值,并 進行控制,使得在l個塊被存儲在選擇對象數(shù)據(jù)之前的期間中,重復(fù) 所述執(zhí)行部與所述判斷部的處理,對全部塊執(zhí)行所述選擇對象數(shù)據(jù)生成部件的處理。
9、 根據(jù)權(quán)利要求5所述的程序變換裝置,其特征在于 所述選擇處理指令群生成部件生成選擇處理指令群,該選擇處理指令群始終取得表示是未執(zhí)行的選擇對象數(shù)據(jù)的識別符。
10、 根據(jù)權(quán)利要求9所述的程序變換裝置,其特征在于 所述選擇處理指令群生成部件生成選擇處理指令群,該選擇處理指令群使用表示對所述多個選擇對象數(shù)據(jù)的每個是否已執(zhí)行完的管 理信息,取得表示是未執(zhí)行的選擇對象數(shù)據(jù)的識別符。
11、 根據(jù)權(quán)利要求10所述的程序變換裝置,其特征在于 所述多個選擇參數(shù)是從第1到第n的選擇參數(shù), 所述管理信息是表示對所述多個選擇對象數(shù)據(jù)的每個,在當(dāng)前時刻已執(zhí)行完或未執(zhí)行中的某一個的狀態(tài)的排列表格,所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù) 所述選擇處理指令群生成部件生成 所述排列表格;所述運算式,對所述第1到第n的選擇參數(shù)的每個算出Pix第i 選擇參數(shù),將算出的結(jié)果分別相加,對加法結(jié)果實施以所述規(guī)定數(shù)量 為模數(shù)值N的模數(shù)運算,算出表示包含接著應(yīng)執(zhí)行的塊的選擇對象 數(shù)據(jù)的臨時的選擇識別符,其中i是1以上n以下的整數(shù);禾口取得程序指令群,在由所述算出式算出的所述臨時的選擇識別符 所示的選擇對象數(shù)據(jù)在所述排列表格中表示未執(zhí)行的情況下,將所述 臨時的選擇識別符設(shè)為表示包含接著應(yīng)執(zhí)行的塊的選擇對象數(shù)據(jù)的 真選擇識別符,在表示已執(zhí)行完的情況下,根據(jù)取得未執(zhí)行的選擇對 象數(shù)據(jù)之前事先確定的選擇順序,取得臨時的選擇識別符,所述選擇處理指令群包含所述排列表格、所述運算式、和所述取 得程序指令群,Pi與模數(shù)值N互質(zhì)。
12、 根據(jù)權(quán)利要求ll所述的程序變換裝置,其特征在于 所述更新處理指令群生成部件生成所述更新處理指令群,該更新處理指令群將存儲在第j選擇參數(shù)中的值存儲到第j-l選擇參數(shù),將 所述選擇處理指令群取得的所述真選擇識別符存儲到第n變量,其中 j是2以上n以下的整數(shù)。
13、 根據(jù)權(quán)利要求10所述的程序變換裝置,其特征在于 所述運算式是第1取得程序指令群,該第1取得程序指令群使用表示1個選擇參數(shù)的索引,從所述多個選擇參數(shù)中取得所述1個參數(shù), 所述管理信息是排列表格,該排列表格對所述多個選擇對象數(shù)據(jù) 的每個,表示在當(dāng)前時刻己執(zhí)行完或未執(zhí)行中的某一狀態(tài),所述選擇處理指令群生成部件生成所述第1取得程序指令群; 所述排列表格;和第2取得程序指令群,根據(jù)表示所述排列表格中未執(zhí)行的1個以 上選擇對象數(shù)據(jù)的選擇識別符的排列順序,取得按由所述取得程序指 令群取得的參數(shù)值所示的順序來配置的選擇識別符,所述選擇處理指令群包含所述第1取得程序指令群、所述排列表格和所述第2取得程序指令群。
14、 根據(jù)權(quán)利要求13所述的程序變換裝置,其特征在于所述更新處理指令群生成部件生成將所述索引值遞增的所述更 新處理指令群。
15、 根據(jù)權(quán)利要求10所述的程序變換裝置,其特征在于所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù)所述多個選擇參數(shù)是第1到第n的參數(shù),所述管理信息是排列表格,該排列表格對所述多個選擇對象數(shù)據(jù) 的每個,表示在當(dāng)前時刻已執(zhí)行完或未執(zhí)行中的某一個的狀態(tài),所述選擇處理指令群生成部件生成所述排列表格;所述運算式,對所述第1到第n的選擇參數(shù)的每個算出Pix第i 選擇參數(shù),將算出的結(jié)果分別相加,對加法結(jié)果實施以所述規(guī)定數(shù)量 為模數(shù)值N的模數(shù)運算,算出表示包含接著應(yīng)執(zhí)行的塊的選擇對象 數(shù)據(jù)的值,其中i是l以上n以下的整數(shù);和取得程序指令群,根據(jù)在與所述排列表格相同的表格內(nèi)、表示未 執(zhí)行的1個以上選擇對象數(shù)據(jù)的選擇識別符的排列順序,取得按由所 述運算式算出的所述值表示的順序來配置的選擇識別符,所述選擇處理指令群包含所述排列表格、所述運算式、和所述取 得程序指令群。
16、 根據(jù)權(quán)利要求5所述的程序變換裝置,其特征在于 所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù)所述秘密保持程序生成部件還在所述多個塊的每個包含于選擇 對象數(shù)據(jù)中之后,在未包含塊的1個以上選擇對象數(shù)據(jù)中,插入包含 1個以上程序指令的偽塊。
17、 一種秘密處理裝置,通過對確定了處理順序的多個選擇對象數(shù)據(jù)進行處理,執(zhí)行應(yīng)隱匿的秘密處理,其特征在于 具備預(yù)處理執(zhí)行部件,將值代入多個選擇參數(shù)的每個中;選擇處理執(zhí)行部件,根據(jù)使用了所述多個選擇參數(shù)的運算式,取 得表示接著處理的選擇對象數(shù)據(jù)的選擇識別符;更新處理執(zhí)行部件,使選擇參數(shù)的值,反映表示過去處理的選擇 對象數(shù)據(jù)的選擇識別符、或過去代入所述選擇參數(shù)中的1個以上選擇 參數(shù)值中的至少l個選擇參數(shù)值;和選擇對象數(shù)據(jù)執(zhí)行部件,對由所述選擇處理執(zhí)行部件取得的選擇 識別符表示的選擇對象數(shù)據(jù)進行處理,在視為所述秘密保持程序結(jié)束之前,重復(fù)所述選擇處理執(zhí)行部 件、更新處理指令執(zhí)行部件、選擇對象數(shù)據(jù)執(zhí)行部件進行的處理。
18、 根據(jù)權(quán)利要求17所述的秘密處理裝置,其特征在于 所述多個選擇對象數(shù)據(jù)的每個由1個以上的數(shù)據(jù)構(gòu)成。
19、 根據(jù)權(quán)利要求18所述的秘密處理裝置,其特征在于 所述秘密處理是代替使用應(yīng)隱匿的秘密信息、實施規(guī)定處理后算出所述秘密信息的處理,所述選擇處理執(zhí)行部件利用使用了所述多個選擇參數(shù)的運算式, 算出所述選擇識別符,所述更新處理執(zhí)行部件根據(jù)由所述選擇識別符表示的選擇對象 數(shù)據(jù)的值,更新所述多個選擇參數(shù),所述秘密處理裝置還具備變遷處理執(zhí)行部件,該變遷處理執(zhí)行部 件利用使用了更新后的多個選擇參數(shù)的所述規(guī)定處理,算出與所述秘 密信息相同的值。
20、 根據(jù)權(quán)利要求17所述的秘密處理裝置,其特征在于所述秘密處理是由外部裝置執(zhí)行被分割成1個以上塊的原始程 序的處理,所述塊包含1個以上的程序指令, 所述多個選擇對象數(shù)據(jù)的每個包含不同的塊。
21、 根據(jù)權(quán)利要求20所述的秘密處理裝置,其特征在于-所述多個選擇參數(shù)是從第1到第n的選擇參數(shù), 所述更新處理執(zhí)行部件對于所述多個選擇對象數(shù)據(jù)的每個,將存儲在第j-l選擇參數(shù)中的值存儲到第j選擇參數(shù),將常數(shù)值存儲在第1選擇參數(shù)中,其中j是2以上n以下的整數(shù),所述常數(shù)值是所述外部裝置在所述秘密保持程序生成時事先設(shè)定的值,以便使用所述運算式,算出表示接著執(zhí)行的選擇對象數(shù)據(jù)的選擇識別符。
22、 根據(jù)權(quán)利要求21所述的秘密處理裝置,其特征在于 所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù)所述運算式對所述第1到第n的選擇參數(shù)的每個,算出Pix第i 選擇參數(shù),將算出的結(jié)果分別相加,對加法結(jié)果實施以所述規(guī)定數(shù)量 為模數(shù)值N的模數(shù)運算,算出選擇識別符,其中i是l以上n以下的 整數(shù),Pi與模數(shù)值N互質(zhì)。
23、 根據(jù)權(quán)利要求20所述的秘密處理裝置,其特征在于 所述選擇處理執(zhí)行部件始終取得表示未執(zhí)行的選擇對象數(shù)據(jù)的識別符。
24、 根據(jù)權(quán)利要求23所述的秘密處理裝置,其特征在于 所述選擇處理執(zhí)行部件使用表示對所述多個選擇對象數(shù)據(jù)的每個是否已執(zhí)行完的管理信息,取得表示未執(zhí)行的選擇對象數(shù)據(jù)的識別 符。
25、 根據(jù)權(quán)利要求24所述的秘密處理裝置,其特征在于 所述多個選擇參數(shù)是第1到第n的選擇參數(shù), 所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù)所述管理信息是排列表格,該排列表格對所述多個選擇對象數(shù)據(jù) 的每個,表示在當(dāng)前時刻已執(zhí)行完或未執(zhí)行中的某一個的狀態(tài), 所述選擇處理執(zhí)行部件保持所述排列表格, 所述運算式是如下運算式,SP:對所述第l到第n的選擇參數(shù)的每個算出Pix第i選擇參數(shù),將算出的結(jié)果分別相加,對加法結(jié)果實施以所述規(guī)定數(shù)量為模數(shù)值N的模數(shù)運算,算出表示包含接著應(yīng)執(zhí) 行的塊的選擇對象數(shù)據(jù)的臨時的選擇識別符,其中i是1以上n以下 的整數(shù);所述選擇處理執(zhí)行部件在由所述算出式算出的所述臨時的選擇 識別符所示的選擇對象數(shù)據(jù)在所述排列表格中表示未執(zhí)行的情況下, 將所述臨時的選擇識別符設(shè)為表示包含接著應(yīng)執(zhí)行的塊的選擇對象 數(shù)據(jù)的真選擇識別符,在表示已執(zhí)行完的情況下,根據(jù)取得未執(zhí)行的 選擇對象數(shù)據(jù)之前事先確定的選擇順序,取得臨時的選擇識別符,Pi與模數(shù)值N互質(zhì)。
26、 根據(jù)權(quán)利要求25所述的秘密處理裝置,其特征在于 所述更新處理執(zhí)行部件將存儲在第j選擇參數(shù)中的值存儲到第j-l選擇參數(shù),將所述選擇處理執(zhí)行部件取得的所述真選擇識別符存 儲到第n變量,其中j是2以上n以下的整數(shù)。
27、 根據(jù)權(quán)利要求24所述的秘密處理裝置,其特征在于 所述管理信息是排列表格,該排列表格對所述多個選擇對象數(shù)據(jù)的每個,表示在當(dāng)前時刻已執(zhí)行完或未執(zhí)行中的某一個的狀態(tài), 所述選擇處理執(zhí)行部件保持所述排列表格,并且包含-第1取得部,執(zhí)行所述運算式,該運算式使用表示1個選擇參數(shù)的索引,從所述多個選擇參數(shù)中取得所述1個選擇參數(shù);和第2取得部,根據(jù)表示所述排列表格中未執(zhí)行的1個以上選擇對象數(shù)據(jù)的選擇識別符的排列順序,取得按由所述第1取得部取得的選擇參數(shù)值所示的順序來配置的選擇識別符。
28、 根據(jù)權(quán)利要求27所述的秘密處理裝置,其特征在于 所述更新處理執(zhí)行部件將所述索引的值遞增。
29、 根據(jù)權(quán)利要求24所述的秘密處理裝置,其特征在于所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù) 所述多個選擇參數(shù)是第1到第n的參數(shù),所述管理信息是排列表格,該排列表格對所述多個選擇對象數(shù)據(jù)的每個,表示在當(dāng)前時刻已執(zhí)行完或未執(zhí)行中的某一個的狀態(tài), 所述選擇處理執(zhí)行部件保持所述排列表格,所述運算式是如下運算式,即對所述第1到第n的選擇參數(shù)的每個算出Pix第i選擇參數(shù),將算出的結(jié)果分別相加,對加法結(jié)果實施以所述規(guī)定數(shù)量為模數(shù)值N的模數(shù)運算,算出表示包含接著應(yīng)執(zhí) 行的塊的選擇對象數(shù)據(jù)的臨時的選擇識別符,其中i是1以上n以下 的整數(shù);所述選擇處理執(zhí)行部件根據(jù)在與所述排列表格相同的表格內(nèi)、表 示未執(zhí)行的1個以上選擇對象數(shù)據(jù)的選擇識別符的排列順序,取得按 由所述運算式算出的所述值表示的順序來配置的選擇識別符。
30、 根據(jù)權(quán)利要求20所述的秘密處理裝置,其特征在于 所述秘密處理是由所述外部裝置執(zhí)行根據(jù)所述原始程序生成的秘密保持程序的處理,所述選擇對象數(shù)據(jù)的個數(shù)是由所述塊的個數(shù)以上構(gòu)成的規(guī)定數(shù)在不包含塊的1個以上選擇對象數(shù)據(jù)中,包含含有1個以上程序 指令的偽塊,所述秘密保持程序包含從所述原始塊分割出的各塊、和1個以上 的偽塊。
31、 一種根據(jù)原始程序生成秘密保持程序的程序變換裝置中使用的變換方法,其特征在于 該變換方法包含 程序取得步驟,取得原始程序;選擇對象數(shù)據(jù)生成步驟,生成通過按規(guī)定順序處理、輸出與所述 原始程序相同的執(zhí)行結(jié)果、并對應(yīng)了不同選擇識別符的多個選擇對象數(shù)據(jù);預(yù)處理指令群生成步驟,生成將值代入多個選擇參數(shù)的每個中的 預(yù)處理指令群;選擇處理指令群生成步驟,根據(jù)使用了所述多個選擇參數(shù)的運算 式,生成選擇處理指令群,該選擇處理指令群包含取得表示接著處理的選擇對象數(shù)據(jù)的選擇識別符的指令群;更新處理指令群生成步驟,生成更新處理指令群,該更新處理指 令群使選擇參數(shù)的值,反映表示過去處理的選擇對象數(shù)據(jù)的選擇識別 符、或過去代入所述選擇參數(shù)中的1個以上選擇參數(shù)值中的至少1個選擇參數(shù)值;和秘密保持程序生成步驟,生成包含所述預(yù)處理指令群、所述處理 選擇指令群、所述更新處理指令群、所述多個選擇對象數(shù)據(jù)的秘密保 持程序,該秘密保持程序重復(fù)進行執(zhí)行所述處理選擇指令群的處理、 處理由所述選擇處理指令群取得的選擇識別符表示的選擇對象數(shù)據(jù) 的處理、和若處理所述選擇對象數(shù)據(jù)則執(zhí)行所述更新處理指令群的處 理。
32、 一種根據(jù)原始程序生成秘密保持程序的程序變換裝置中使用 的變換程序,其特征在于 該變換程序包含 程序取得步驟,取得原始程序;選擇對象數(shù)據(jù)生成步驟,生成通過按規(guī)定順序處理、輸出與所述 原始程序相同的執(zhí)行結(jié)果、并對應(yīng)了不同選擇識別符的多個選擇對象數(shù)據(jù);預(yù)處理指令群生成步驟,生成將值代入多個選擇參數(shù)的每個中的 預(yù)處理指令群;選擇處理指令群生成步驟,根據(jù)使用了所述多個選擇參數(shù)的運算 式,生成選擇處理指令群,該選擇處理指令群包含取得表示接著處理 的選擇對象數(shù)據(jù)的選擇識別符的指令群;更新處理指令群生成步驟,生成更新處理指令群,該更新處理指 令群使選擇參數(shù)的值,反映表示過去處理的選擇對象數(shù)據(jù)的選擇識別 符、或過去代入所述選擇參數(shù)中的1個以上選擇參數(shù)值中的至少1個 選擇參數(shù)值;和秘密保持程序生成步驟,生成包含所述預(yù)處理指令群、所述處理 選擇指令群、所述更新處理指令群、所述多個選擇對象數(shù)據(jù)的秘密保 持程序,該秘密保持程序重復(fù)進行執(zhí)行所述處理選擇指令群的處理、處理由所述選擇處理指令群取得的選擇識別符表示的選擇對象數(shù)據(jù) 的處理、和若處理所述選擇對象數(shù)據(jù)則執(zhí)行所述更新處理指令群的處 理。
33、 根據(jù)權(quán)利要求32所述的變換程序,其特征在于所述變換程序記錄在計算機可讀取的記錄媒體中。
34、 一種秘密處理裝置中使用的秘密處理方法,通過對確定了處 理順序的多個選擇對象數(shù)據(jù)進行處理,執(zhí)行應(yīng)隱匿的秘密處理,其特征在于該秘密處理方法包含預(yù)處理執(zhí)行步驟,將值代入多個選擇參數(shù)的每個中;選擇處理執(zhí)行步驟,根據(jù)使用了所述多個選擇參數(shù)的運算式,取得表示接著處理的選擇對象數(shù)據(jù)的選擇識別符;更新處理執(zhí)行步驟,使選擇參數(shù)的值,反映表示過去處理的選擇 對象數(shù)據(jù)的選擇識別符、或過去代入所述選擇參數(shù)中的1個以上選擇 參數(shù)值中的至少l個選擇參數(shù)值;和選擇對象數(shù)據(jù)執(zhí)行步驟,對所述選擇處理執(zhí)行步驟取得的選擇識 別符表示的選擇對象數(shù)據(jù)進行處理。
35、 一種秘密處理裝置中使用的秘密處理程序,執(zhí)行包含確定了 執(zhí)行順序的多個選擇對象數(shù)據(jù)、且解析困難的秘密保持程序,其特征 在于該秘密處理程序包含預(yù)處理執(zhí)行步驟,將值代入多個選擇參數(shù)的每個中;選擇處理執(zhí)行步驟,根據(jù)使用了所述多個選擇參數(shù)的運算式,取 得表示接著處理的選擇對象數(shù)據(jù)的選擇識別符;更新處理執(zhí)行步驟,使選擇參數(shù)的值,反映表示過去處理的選擇 對象數(shù)據(jù)的選擇識別符、或過去代入所述選擇參數(shù)中的1個以上選擇 參數(shù)值中的至少l個選擇參數(shù)值;和選擇對象數(shù)據(jù)執(zhí)行步驟,對所述選擇處理執(zhí)行步驟取得的選擇識 別符表示的選擇對象數(shù)據(jù)進行處理。
36、 根據(jù)權(quán)利要求35所述的秘密處理程序,其特征在于所述秘密處理程序記錄在計算機可讀取的記錄媒體中。
37、 一種根據(jù)原始程序生成秘密保持程序的程序變換裝置的集成 電路,其特征在于該集成電路具備-程序取得部件,取得原始程序;選擇對象數(shù)據(jù)生成部件,生成通過按規(guī)定順序處理、輸出與所述 原始程序相同的執(zhí)行結(jié)果、并對應(yīng)了不同選擇識別符的多個選擇對象數(shù)據(jù);預(yù)處理指令群生成部件,生成將值代入多個選擇參數(shù)的每個中的 預(yù)處理指令群;選擇處理指令群生成部件,根據(jù)使用了所述多個選擇參數(shù)的運算 式,生成選擇處理指令群,該選擇處理指令群包含取得表示接著處理 的選擇對象數(shù)據(jù)的選擇識別符的指令群;更新處理指令群生成部件,生成更新處理指令群,該更新處理指 令群使選擇參數(shù)的值,反映表示過去處理的選擇對象數(shù)據(jù)的選擇識別 符、或過去代入所述選擇參數(shù)中的1個以上選擇參數(shù)值中的至少1個 選擇參數(shù)值;和秘密保持程序生成部件,生成包含所述預(yù)處理指令群、所述處理 選擇指令群、所述更新處理指令群、所述多個選擇對象數(shù)據(jù)的秘密保 持程序,該秘密保持程序重復(fù)進行執(zhí)行所述處理選擇指令群的處理、 處理由所述選擇處理指令群取得的選擇識別符表示的選擇對象數(shù)據(jù) 的處理、和若處理所述選擇對象數(shù)據(jù)則執(zhí)行所述更新處理指令群的處 理。
38、 一種秘密處理裝置的集成電路,通過對確定了處理順序的多 個選擇對象數(shù)據(jù)進行處理,執(zhí)行應(yīng)隱匿的秘密處理,其特征在于該集成電路具備預(yù)處理執(zhí)行部件,將值代入多個選擇參數(shù)的每個中; 選擇處理執(zhí)行部件,根據(jù)使用了所述多個選擇參數(shù)的運算式,取 得表示接著處理的選擇對象數(shù)據(jù)的選擇識別符;更新處理執(zhí)行部件,使選擇參數(shù)的值,反映表示過去處理的選擇 對象數(shù)據(jù)的選擇識別符、或過去代入所述選擇參數(shù)中的1個以上選擇參數(shù)值中的至少l個選擇參數(shù)值;和選擇對象數(shù)據(jù)執(zhí)行部件,對由所述選擇處理執(zhí)行部件取得的選擇 識別符表示的選擇對象數(shù)據(jù)進行處理,在視為所述秘密保持程序結(jié)束之前,重復(fù)所述選擇處理執(zhí)行部 件、更新處理指令執(zhí)行部件、選擇對象數(shù)據(jù)執(zhí)行部件。
全文摘要
提供一種生成非法解析者不能容易地解析原始程序的秘密保持程序的程序變換裝置。程序變換裝置生成取得代入到多個選擇參數(shù)中的值的第1指令群;包含根據(jù)使用所述多個選擇參數(shù)的運算式、取得表示接著處理的選擇對象數(shù)據(jù)的選擇識別符的指令群的第2指令群;使選擇參數(shù)的值反映表示過去處理的選擇對象數(shù)據(jù)的選擇識別符、或過去代入所述運算式中的1個以上選擇參數(shù)的值中至少1個選擇參數(shù)的值的第3指令群;和通過按規(guī)定順序處理輸出與所述原始程序相同的執(zhí)行結(jié)果、并對應(yīng)于不同的選擇識別符的多個選擇對象數(shù)據(jù),生成包含所述第1指令群、所述第2指令群、所述第3指令群與所述多個選擇對象數(shù)據(jù)的秘密保持程序。
文檔編號G06F21/22GK101203860SQ20068002246
公開日2008年6月18日 申請日期2006年4月21日 優(yōu)先權(quán)日2005年4月21日
發(fā)明者佐藤太一, 大森基司, 布田裕一, 淺井理惠子, 滿保雅浩, 芳賀智之 申請人:松下電器產(chǎn)業(yè)株式會社