程序驗(yàn)證裝置、程序驗(yàn)證方法和程序驗(yàn)證程序的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及例如驗(yàn)證程序的可靠性的程序驗(yàn)證裝置、程序驗(yàn)證方法和程序驗(yàn)證程序。
【背景技術(shù)】
[0002]在驗(yàn)證程序的可靠性的技術(shù)中存在如下方法:找出機(jī)密信息或個(gè)人信息等重要信息通過程序而流出到外部(互聯(lián)網(wǎng)、其它程序、其它文件或數(shù)據(jù)庫等)這樣的脆弱性。
[0003]在以往技術(shù)中,僅關(guān)注數(shù)據(jù)的流動而分析程序,因此會將向外部發(fā)送被適當(dāng)加密后的信息的情況也誤檢測為脆弱性。
[0004]基于程序開發(fā)者的立場,不希望從實(shí)施了安全安裝的程序中誤檢測出脆弱性。另一方面,基于用戶的立場,存在希望確認(rèn)在程序內(nèi)自身的重要信息是否被適當(dāng)?shù)靥幚磉@樣的需求。
[0005]在此所謂“重要信息被適當(dāng)?shù)靥幚怼笔侵笣M足以下的條件。
[0006]■重要信息沒有以明文的形態(tài)從程序輸出到外部。
[0007]■在重要信息被加密的情況下,用于加密的密鑰沒有在程序內(nèi)被硬編碼(常量化)。
[0008]現(xiàn)有技術(shù)文獻(xiàn)
[0009]專利文獻(xiàn)
[0010]專利文獻(xiàn)1:日本特表2010-507165號公報(bào)[0011 ] 專利文獻(xiàn)2:日本特表2008-502046號公報(bào)
[0012]非專利文獻(xiàn)
[0013]非專利文獻(xiàn)1:中田育男、「3 y/W歹CD構(gòu)成t最適化」、朝倉書店、1999年9月、ISBN4-254-12139-3
【發(fā)明內(nèi)容】
[0014]發(fā)明要解決的課題
[0015]本發(fā)明的目的在于,例如驗(yàn)證由作為驗(yàn)證對象的對象程序輸出的信息是否是被加密后輸出的信息。
[0016]用于解決課題的手段
[0017]本發(fā)明的程序驗(yàn)證裝置具有:
[0018]程序輸入部,其輸入使用變量、輸出函數(shù)和加密函數(shù)且包含賦值語句的程序;
[0019]輸出變量提取部,其從所述程序提取設(shè)定由所述輸出函數(shù)輸出的輸出信息的輸出變量;
[0020]密碼變量提取部,其從所述程序提取設(shè)定由所述加密函數(shù)加密后的密碼信息的密碼變量;
[0021]密碼狀態(tài)變量提取部,其參照所述程序中包含的賦值語句從所述程序提取密碼狀態(tài)變量,其中,該密碼狀態(tài)變量被代入由所述密碼變量提取部提取出的所述密碼變量中設(shè)定的所述密碼信息;
[0022]密碼狀態(tài)判定部,其判定由所述密碼狀態(tài)變量提取部提取出的所述密碼狀態(tài)變量與由所述輸出變量提取部提取出的所述輸出變量是否為相同的變量;以及
[0023]驗(yàn)證結(jié)果輸出部,其基于所述密碼狀態(tài)判定部的判定結(jié)果,輸出所述程序的驗(yàn)證結(jié)果。
[0024]發(fā)明效果
[0025]根據(jù)本發(fā)明,例如能夠驗(yàn)證由作為驗(yàn)證對象的對象程序輸出的信息是否是被加密后輸出的信息。
【附圖說明】
[0026]圖1是實(shí)施方式I的程序驗(yàn)證裝置100的結(jié)構(gòu)圖。
[0027]圖2是實(shí)施方式I的必要信息提取部120的結(jié)構(gòu)圖。
[0028]圖3是實(shí)施方式I的保護(hù)狀態(tài)分析部130的結(jié)構(gòu)圖。
[0029]圖4是實(shí)施方式I的脆弱性判定部140的概要圖。
[0030]圖5是示出實(shí)施方式I的程序驗(yàn)證裝置100的程序驗(yàn)證方法的流程圖。
[0031]圖6是示出實(shí)施方式I的必要信息提取處理(S120)的流程圖。
[0032]圖7是示出實(shí)施方式I的對象程序101的一例的圖。
[0033]圖8是示出實(shí)施方式I的信息取得函數(shù)列表181的一例的圖。
[0034]圖9是示出實(shí)施方式I的保護(hù)對象提取列表191的一例的圖。
[0035]圖10是示出實(shí)施方式I的輸出函數(shù)列表182的一例的圖。
[0036]圖11是示出實(shí)施方式I的輸出函數(shù)提取列表192的一例的圖。
[0037]圖12是示出實(shí)施方式I的對象程序101的一例的圖。
[0038]圖13是示出實(shí)施方式I的密碼函數(shù)列表183的一例的圖。
[0039]圖14是示出實(shí)施方式I的密碼函數(shù)提取列表193的一例的圖。
[0040]圖15是示出實(shí)施方式I的對象程序101的一例的圖。
[0041]圖16是示出實(shí)施方式I的變量信息提取列表194的一例的圖。
[0042]圖17是示出實(shí)施方式I的保護(hù)狀態(tài)分析處理(S130)的流程圖。
[0043]圖18是示出實(shí)施方式I的保護(hù)對象狀態(tài)取得處理(S200)的一例的流程圖。
[0044]圖19是示出實(shí)施方式I的保護(hù)對象提取列表191的一例的圖。
[0045]圖20是示出實(shí)施方式I的保護(hù)對象狀態(tài)管理表195的初始化的一例的圖。
[0046]圖21是示出實(shí)施方式I的保護(hù)對象狀態(tài)管理表195的一例的圖。
[0047]圖22是示出實(shí)施方式I的對象程序101的一例的圖。
[0048]圖23是示出實(shí)施方式I的保護(hù)對象狀態(tài)管理表195的一例的圖。
[0049]圖24是示出實(shí)施方式I的保護(hù)對象狀態(tài)管理表195的一例的圖。
[0050]圖25是示出實(shí)施方式I的密碼函數(shù)提取列表193的一例的圖。
[0051]圖26是示出實(shí)施方式I的保護(hù)對象狀態(tài)管理表195的一例的圖。
[0052]圖27是示出實(shí)施方式I的對象程序101的一例的圖。
[0053]圖28是示出實(shí)施方式I的保護(hù)對象提取列表191的一例的圖。
[0054]圖29是示出實(shí)施方式I的密碼函數(shù)提取列表193的一例的圖。
[0055]圖30是示出實(shí)施方式I的保護(hù)對象狀態(tài)管理表195的一例的圖。
[0056]圖31是示出實(shí)施方式I的密鑰狀態(tài)取得處理(S300)的一例的流程圖。
[0057]圖32是實(shí)施方式I的密鑰狀態(tài)管理表196的結(jié)構(gòu)圖。
[0058]圖33是示出實(shí)施方式I的密碼函數(shù)提取列表193的一例的圖。
[0059]圖34是示出實(shí)施方式I的變量信息提取列表194的一例的圖。
[0060]圖35是示出實(shí)施方式I的對象程序101的一例的圖。
[0061]圖36是示出實(shí)施方式I的密鑰狀態(tài)管理表196的一例的圖。
[0062]圖37是示出實(shí)施方式I的密鑰變量分析處理(S350)的流程圖。
[0063]圖38是示出實(shí)施方式I的脆弱性判定處理(S140)的一例的流程圖。
[0064]圖39是示出實(shí)施方式I的輸出函數(shù)提取列表192的一例的圖。
[0065]圖40是示出實(shí)施方式I的密鑰狀態(tài)管理表196的一例的圖。
[0066]圖41是示出實(shí)施方式I的程序驗(yàn)證裝置100的硬件資源的一例的圖。
【具體實(shí)施方式】
[0067]實(shí)施方式I
[0068]對用于驗(yàn)證作為驗(yàn)證對象的對象程序是否為將保護(hù)對象信息適當(dāng)?shù)丶用芎筝敵龅某绦虻姆绞竭M(jìn)行說明。
[0069]圖1是實(shí)施方式I的程序驗(yàn)證裝置100的結(jié)構(gòu)圖。
[0070]基于圖1,對實(shí)施方式I的程序驗(yàn)證裝置100進(jìn)行說明。
[0071]程序驗(yàn)證裝置100是驗(yàn)證作為驗(yàn)證對象的程序是否為通過加密對作為保護(hù)對象的信息進(jìn)行保護(hù)后輸出的高可靠性的程序的計(jì)算機(jī)。信息也稱作數(shù)據(jù)(以下相同)。
[0072]以下,設(shè)作為驗(yàn)證對象的程序?yàn)椤皩ο蟪绦?01”,設(shè)作為保護(hù)對象的信息為“保護(hù)對象信息”。
[0073]程序驗(yàn)證裝置100 (程序驗(yàn)證裝置的一例)具有程序輸入部110、必要信息提取部120、保護(hù)狀態(tài)分析部130、脆弱性判定部140和驗(yàn)證裝置存儲部190。
[0074]以下,對程序驗(yàn)證裝置100的各結(jié)構(gòu)的概要進(jìn)行說明。程序驗(yàn)證裝置100的各結(jié)構(gòu)的詳細(xì)情況將在后面記述。
[0075]程序輸入部110 (程序輸入部的一例)輸入對象程序101。
[0076]必要信息提取部120(輸出變量提取部、密碼變量提取部、保護(hù)對象變量提取部、密鑰變量提取部的一例)從程序輸入部110輸入的對象程序101提取驗(yàn)證所需的各種信息。
[0077]必要信息提取部120生成保護(hù)對象提取列表191、輸出函數(shù)提取列表192、密碼函數(shù)提取列表193和變量信息提取列表194作為各種信息的提取結(jié)果。
[0078]保護(hù)對象提取列表191是保護(hù)對象信息用變量的變量名的一覽表。
[0079]輸出函數(shù)提取列表192是輸出信息的輸出函數(shù)的函數(shù)名的一覽表。
[0080]密碼函數(shù)提取列表193是對信息對進(jìn)行加密(或解密)的密碼函數(shù)的函數(shù)名的一覽表。
[0081]變量信息提取列表194是變量的變量名的一覽表。
[0082]保護(hù)狀態(tài)分析部130(密碼狀態(tài)變量提取部、密鑰內(nèi)容判定部、密鑰狀態(tài)判定部的一例)基于必要信息提取部120對各種信息的提取結(jié)果,針對保護(hù)對象信息的保護(hù)狀態(tài)而分析對象程序101。
[0083]保護(hù)狀態(tài)分析部130基于分析結(jié)果,生成保護(hù)對象狀態(tài)管理表195和密鑰狀態(tài)管理表196。
[0084]保護(hù)對象狀態(tài)管理表195是按照保護(hù)對象信息用的每個(gè)變量示出保護(hù)對象信息是否被加密的一覽表。
[0085]密鑰狀態(tài)管理表196是按照在加密中使用的每個(gè)加密密鑰示出加密密鑰是否被保護(hù)的一覽表。
[0086]脆弱性判定部140 (密碼狀態(tài)判定部、保護(hù)對象判定部、驗(yàn)證結(jié)果輸出部的一例)基于保護(hù)狀態(tài)分析部130對對象程序101的分析結(jié)果,判定對象程序101中包含的脆弱要素,將判定結(jié)果作為程序驗(yàn)證結(jié)果197輸出。
[0087]未被適當(dāng)?shù)丶用芏敵龅谋Wo(hù)對象信息越多,則對象程序101越脆弱,未被適當(dāng)?shù)丶用芏敵龅谋Wo(hù)對象信息越少,則對象程序101的可靠性越高。
[0088]驗(yàn)證裝置存儲部190 (列表存儲部的一例)存儲在程序驗(yàn)證裝置100中使用的數(shù)據(jù)。
[0089]例如,驗(yàn)證裝置存儲部190存儲以下的數(shù)據(jù)。
[0090]驗(yàn)證裝置存儲部190存儲程序輸入部110輸入的對象程序101。
[0091]驗(yàn)證裝置存儲部190預(yù)先存儲信息取得函數(shù)列表181、輸出函數(shù)列表182、密碼函數(shù)列表183和哈希函數(shù)列表184。
[0092]驗(yàn)證裝置存儲部190存儲由必要信息提取部120生成的保護(hù)對象提取列表191、輸出函數(shù)提取列表192、密碼函數(shù)提取列表193和變量信息提取列表194。
[0093]驗(yàn)證裝置存儲部190存儲由保護(hù)狀態(tài)分析部130生成的保護(hù)對象狀態(tài)管理表195和密鑰狀態(tài)管理表196。
[0094]驗(yàn)證裝置存儲部190存儲由脆弱性判定部140生成的程序驗(yàn)證結(jié)果197。
[0095]信息取得函數(shù)列表181 (信息取得函數(shù)列表的一例)是定義取得保護(hù)對象信息的信息取得函數(shù)的一覽表,被用于生成保護(hù)對象提取列表191。
[0096]輸出函數(shù)列表182 (輸出函數(shù)列表的一例)是定義輸出信息的輸出函數(shù)的一覽表,被用于生成輸出函數(shù)提取列表192。
[0097]密碼函數(shù)列表183 (加密函數(shù)列表的一例)是定義對信息進(jìn)行加密(或解密)的密碼函數(shù)的一覽表,被用于生成密碼函數(shù)提取列表193。
[0098]哈希函數(shù)列表184是通常能夠使用的密碼學(xué)上的哈希函數(shù)(SHA1、MD5等)的一覽表,被用于生成密鑰狀態(tài)管理表196。
[0099]圖2是實(shí)施方式I的必要信息提取部120的結(jié)構(gòu)圖。
[0100]基于圖2,對實(shí)施方式I的必要信息提取部120的結(jié)構(gòu)進(jìn)行說明。
[0101]必要信息提取部120具有保護(hù)對象提取部121、輸出函數(shù)提取部122、密碼函數(shù)提取部123和變量信息提取部124。
[0102]以下,對必要信息提取部120的各結(jié)構(gòu)的概要進(jìn)行說明。必要信息提取部120的各結(jié)構(gòu)的詳細(xì)情況將在后面記述。
[0103]保護(hù)對象提取部121 (保護(hù)對象變量提取部的一例)基于信息取得函數(shù)列表181,從對象程序101提取保護(hù)對象信息用的變量,生成將提取出的變量作為一覽的保護(hù)對象提取列表191。
[0104]輸出函數(shù)提取部122 (輸出變量提取部的一例)基于輸出函數(shù)列表182,從對象程序101