251。
[0280]在關(guān)注節(jié)點(diǎn)命令的右邊不包含保護(hù)對(duì)象變量的情況下(否),進(jìn)入S260。
[0281]在S251中,保護(hù)對(duì)象狀態(tài)取得部131基于S240的分析結(jié)果,判定關(guān)注節(jié)點(diǎn)命令(賦值語(yǔ)句)的右邊(代入源)是否為加密函數(shù)和密碼狀態(tài)變量中的任意一個(gè)。
[0282]在關(guān)注節(jié)點(diǎn)命令的右邊為加密函數(shù)和密碼狀態(tài)變量中的任意一個(gè)的情況下(是),進(jìn)入S252。
[0283]在關(guān)注節(jié)點(diǎn)命令的右邊既不是加密函數(shù)也不是密碼狀態(tài)變量的情況下(否),進(jìn)人 S253。
[0284]在S252中,保護(hù)對(duì)象狀態(tài)取得部131將關(guān)注節(jié)點(diǎn)命令(賦值語(yǔ)句)的左邊(代入目標(biāo))的變量名與關(guān)注節(jié)點(diǎn)的行編號(hào)對(duì)應(yīng)地追加到保護(hù)對(duì)象狀態(tài)管理表195的項(xiàng)目“密文”。保護(hù)對(duì)象狀態(tài)管理表195的項(xiàng)目“密文”中追加的變量是密碼狀態(tài)變量的一例。
[0285]此外,在關(guān)注節(jié)點(diǎn)命令的右邊是加密函數(shù)的情況下,保護(hù)對(duì)象狀態(tài)取得部131與追加的密碼狀態(tài)變量對(duì)應(yīng)地,設(shè)定加密函數(shù)的函數(shù)名和使用加密函數(shù)的行的編號(hào)。
[0286]此外,保護(hù)對(duì)象狀態(tài)取得部131從密碼函數(shù)提取列表193取得該加密函數(shù)的密鑰變量名,將取得的密鑰變量名與關(guān)注節(jié)點(diǎn)的行編號(hào)對(duì)應(yīng)地追加到保護(hù)對(duì)象狀態(tài)管理表195的項(xiàng)目“明文”。保護(hù)對(duì)象狀態(tài)管理表195的“明文”項(xiàng)目中追加的密鑰變量是明文狀態(tài)變量的一例。
[0287]例如,圖22所示的對(duì)象程序1lD的第7行(賦值語(yǔ)句)的右邊為加密函數(shù)“enc (name1、key) ”,密鑰變量為 “key”。
[0288]在關(guān)注節(jié)點(diǎn)的行編號(hào)是第7行的情況下,保護(hù)對(duì)象狀態(tài)取得部131將對(duì)象程序1lD的第7行的左邊的變量名“enc_name”與關(guān)注節(jié)點(diǎn)的行編號(hào)“第7行”對(duì)應(yīng)地追加到保護(hù)對(duì)象狀態(tài)管理表1%D的項(xiàng)目“密文”。
[0289]此外,保護(hù)對(duì)象狀態(tài)取得部131與追加的變量名“enc_name”對(duì)應(yīng)地,將加密函數(shù)名“enc”和行編號(hào)“第7行”設(shè)定到保護(hù)對(duì)象狀態(tài)管理表1%D。
[0290]此外,保護(hù)對(duì)象狀態(tài)取得部131將密鑰變量名“key”與關(guān)注節(jié)點(diǎn)的行編號(hào)“第7行”對(duì)應(yīng)地追加到保護(hù)對(duì)象狀態(tài)管理表1%D的項(xiàng)目“明文”。
[0291]由此,保護(hù)對(duì)象狀態(tài)管理表1%D成為圖23的狀態(tài)。
[0292]圖22是示出實(shí)施方式I的對(duì)象程序101的一例的圖。
[0293]圖23是示出實(shí)施方式I的保護(hù)對(duì)象狀態(tài)管理表195的一例的圖。
[0294]在S252 之后,進(jìn)入 S260。
[0295]在S253中,保護(hù)對(duì)象狀態(tài)取得部131將關(guān)注節(jié)點(diǎn)命令(賦值語(yǔ)句)的左邊(代入目標(biāo))的變量名與關(guān)注節(jié)點(diǎn)的行編號(hào)對(duì)應(yīng)地追加到保護(hù)對(duì)象狀態(tài)管理表195的項(xiàng)目“明文”。保護(hù)對(duì)象狀態(tài)管理表195的項(xiàng)目“明文”中追加的變量是明文狀態(tài)變量的一例。
[0296]此外,在關(guān)注節(jié)點(diǎn)命令的右邊為解密函數(shù)的情況下,保護(hù)對(duì)象狀態(tài)取得部131與追加的明文狀態(tài)變量對(duì)應(yīng)地設(shè)定解密函數(shù)的函數(shù)名和使用解密函數(shù)的行的編號(hào)。
[0297]例如,圖22所示的對(duì)象程序1lD的第3行(賦值語(yǔ)句)的右邊是未被加密的保護(hù)對(duì)象變量“name”。
[0298]在關(guān)注節(jié)點(diǎn)的行編號(hào)是第3行的情況下,保護(hù)對(duì)象狀態(tài)取得部131將對(duì)象程序101的第3行的左邊的變量名“namel”與關(guān)注節(jié)點(diǎn)的行編號(hào)“第3行”對(duì)應(yīng)地追加到保護(hù)對(duì)象狀態(tài)管理表1%D的項(xiàng)目“明文”。
[0299]由此,保護(hù)對(duì)象狀態(tài)管理表1%D成為圖24的狀態(tài)。
[0300]圖24是示出實(shí)施方式I的保護(hù)對(duì)象狀態(tài)管理表195的一例的圖。
[0301 ]在 S253 之后,進(jìn)入 S260。
[0302]在S260中,保護(hù)對(duì)象狀態(tài)取得部131判定由處理指針指定的關(guān)注節(jié)點(diǎn)是否為流程圖的最終節(jié)點(diǎn)。
[0303]在關(guān)注節(jié)點(diǎn)是最終節(jié)點(diǎn)的情況下(是),進(jìn)入S261。
[0304]在關(guān)注節(jié)點(diǎn)不是最終節(jié)點(diǎn)的情況下(否),保護(hù)對(duì)象狀態(tài)取得部131利用處理指針指定關(guān)注節(jié)點(diǎn)的下一節(jié)點(diǎn)作為新的關(guān)注節(jié)點(diǎn)。然后,返回到S231。
[0305]在S261中,保護(hù)對(duì)象狀態(tài)取得部131判定保護(hù)對(duì)象狀態(tài)管理表195是否發(fā)生了變化。即,判定在S231?S260的循環(huán)中是否執(zhí)行了 S252或S253。如果執(zhí)行了 S252或S253,則保護(hù)對(duì)象狀態(tài)管理表195發(fā)生了變化。
[0306]例如,保護(hù)對(duì)象狀態(tài)取得部131在執(zhí)行了 S252或S253時(shí),在變化標(biāo)志中設(shè)定表示“保護(hù)對(duì)象狀態(tài)管理表195發(fā)生變化”的變化標(biāo)志值。然后,保護(hù)對(duì)象狀態(tài)取得部131判定在變化標(biāo)志中是否設(shè)定了變化標(biāo)志值。在判定后,保護(hù)對(duì)象狀態(tài)取得部131用表示保護(hù)對(duì)象狀態(tài)管理表195沒(méi)有變化的無(wú)變化標(biāo)志值對(duì)變化標(biāo)志進(jìn)行初始化。
[0307]不過(guò),保護(hù)對(duì)象狀態(tài)取得部131也可以在S230中復(fù)制保護(hù)對(duì)象狀態(tài)管理表195,對(duì)復(fù)制的保護(hù)對(duì)象狀態(tài)管理表195與當(dāng)前的保護(hù)對(duì)象狀態(tài)管理表195進(jìn)行比較,由此判定保護(hù)對(duì)象狀態(tài)管理表195是否發(fā)生了變化。
[0308]保護(hù)對(duì)象狀態(tài)管理表195沒(méi)有變化例如是指對(duì)流程圖的全部節(jié)點(diǎn)結(jié)束了處理,即,對(duì)流程圖的全部處理路徑結(jié)束了處理。
[0309]因此,保護(hù)對(duì)象狀態(tài)取得部131也可以判定是否對(duì)流程圖的全部節(jié)點(diǎn)結(jié)束了處理,即,判定是否對(duì)流程圖的全部處理路徑結(jié)束了處理,以替代判定保護(hù)對(duì)象狀態(tài)管理表195是否發(fā)生了變化。
[0310]在保護(hù)對(duì)象狀態(tài)管理表195發(fā)生了變化的情況下(是),返回到S230,從S230起反復(fù)進(jìn)行處理。
[0311]在保護(hù)對(duì)象狀態(tài)管理表195沒(méi)有變化的情況下(否),保護(hù)對(duì)象狀態(tài)取得處理(S200)結(jié)束。
[0312]圖25是示出實(shí)施方式I的密碼函數(shù)提取列表193的一例的圖。
[0313]圖26是示出實(shí)施方式I的保護(hù)對(duì)象狀態(tài)管理表195的一例的圖。
[0314]通過(guò)保護(hù)對(duì)象狀態(tài)取得處理(S200)(參照?qǐng)D18),保護(hù)對(duì)象狀態(tài)取得部131基于圖22所示的對(duì)象程序101D、圖19所示的保護(hù)對(duì)象提取列表191D和圖25所示的密碼函數(shù)提取列表193D,生成圖26所示的保護(hù)對(duì)象狀態(tài)管理表1%D。
[0315]圖27是示出實(shí)施方式I的對(duì)象程序101的一例的圖。
[0316]圖28是示出實(shí)施方式I的保護(hù)對(duì)象提取列表191的一例的圖。
[0317]圖29是示出實(shí)施方式I的密碼函數(shù)提取列表193的一例的圖。
[0318]圖30是示出實(shí)施方式I的保護(hù)對(duì)象狀態(tài)管理表195的一例的圖。
[0319]通過(guò)保護(hù)對(duì)象狀態(tài)取得處理(S200)(參照?qǐng)D18),保護(hù)對(duì)象狀態(tài)取得部131基于圖27所示的對(duì)象程序101E、圖28所示的保護(hù)對(duì)象提取列表191E和圖29所示的密碼函數(shù)提取列表193E,生成圖30所示的保護(hù)對(duì)象狀態(tài)管理表195E。
[0320]圖31是示出實(shí)施方式I的密鑰狀態(tài)取得處理(S300)的一例的流程圖。
[0321]基于圖31,對(duì)實(shí)施方式I的密鑰狀態(tài)取得處理(S300)的一例進(jìn)行說(shuō)明。
[0322]密鑰狀態(tài)取得處理(S300)由S310?S370的各處理構(gòu)成。
[0323]在S310中,密鑰狀態(tài)取得部132生成對(duì)象程序101的流程圖。不過(guò),密鑰狀態(tài)取得部132也可以不生成對(duì)象程序101的流程圖而使用由保護(hù)對(duì)象狀態(tài)取得部131生成的流程圖(參照?qǐng)D18的S210)。
[0324]在S310 之后,進(jìn)入 S320。
[0325]在S320中,密鑰狀態(tài)取得部132生成密鑰狀態(tài)管理表196來(lái)進(jìn)行初始化。
[0326]在S320 之后,進(jìn)入 S330。
[0327]圖32是實(shí)施方式I的密鑰狀態(tài)管理表196的結(jié)構(gòu)圖。
[0328]基于圖32,對(duì)實(shí)施方式I的密鑰狀態(tài)管理表196的結(jié)構(gòu)進(jìn)行說(shuō)明。
[0329]密鑰狀態(tài)管理表196對(duì)應(yīng)地包含有“位置(行編號(hào))”、“密鑰變量”、“運(yùn)算符(函數(shù)名)”和“內(nèi)容”。
[0330]“位置(行編號(hào))”表示使用加密函數(shù)的行的編號(hào)。
[0331]“密鑰變量”表示作為加密密鑰使用的密鑰變量。
[0332]“運(yùn)算符(函數(shù)名)”表示被用于生成密鑰變量的運(yùn)算符和函數(shù)。
[0333]“內(nèi)容”表示密鑰變量中設(shè)定的值是“可變”還是“不變”。
[0334]初始化后的密鑰狀態(tài)管理表196是沒(méi)有被設(shè)定任何信息的狀態(tài)(參照?qǐng)D32)。
[0335]返回到圖31,從S330起繼續(xù)進(jìn)行密鑰狀態(tài)取得處理(S200)的說(shuō)明。
[0336]在S330中,密鑰狀態(tài)取得部132利用處理指針指定密碼函數(shù)提取列表193的起始行。在此,處理指針指定密碼函數(shù)提取列表193的行。
[0337]在S330 之后,進(jìn)入 S331。
[0338]在S331中,密鑰狀態(tài)取得部132從密碼函數(shù)提取列表193將由處理指針指定的行讀入到存儲(chǔ)器。以下,設(shè)在S331中讀入的行為“關(guān)注行”。
[0339]在S331 之后,進(jìn)入 S340。
[0340]在S340中,密鑰狀態(tài)取得部132從密碼函數(shù)提取列表193的關(guān)注行取得密鑰變量的變量名,從變量信息提取列表194取得由取得的變量名識(shí)別的密鑰變量的內(nèi)容(可變或不變)。
[0341]例如,在圖33所示的密碼函數(shù)提取列表193F的序號(hào)“I”為關(guān)注行的情況下,密鑰狀態(tài)取得部132從圖34所示的變量信息提取列表194F取得與和密鑰用的實(shí)際自變量“key2”(密鑰變量)相同的變量名對(duì)應(yīng)的內(nèi)容“可變”。
[0342]圖33是示出實(shí)施方式I的密碼函數(shù)提取列表193的一例的圖。
[0343]圖34是示出實(shí)施方式I的變量信息提取列表194的一例的圖。
[0344]在S340 之后,進(jìn)入 S350。
[0345]在S350中,密鑰狀態(tài)取得部132針對(duì)關(guān)注行的密鑰變量而分析流程圖,取得被用于生成關(guān)注行的密鑰變量的運(yùn)算符和函數(shù)作為分析結(jié)果。
[0346]關(guān)于密鑰變量分析處理(S350)的詳細(xì)情況將在后面記述。
[0347]在S350 之后,進(jìn)入 S360。
[0348]在S360中,密鑰狀態(tài)取得部132將密碼函數(shù)提取列表193中設(shè)定的關(guān)注行的行編號(hào)、在S340中取得的密鑰變量的內(nèi)容和在S350中取得的分析結(jié)果(運(yùn)算符和函數(shù))登記到密鑰狀態(tài)管理表196。
[0349]在S360 之后,進(jìn)入 S370。
[0350]在S370中,密鑰狀態(tài)取得部132判定當(dāng)前的關(guān)注行是否為密碼函數(shù)提取列表193的最終行。
[0351]在當(dāng)前的關(guān)注行是密碼函數(shù)提取列表193的最終行的情況下(是),密鑰狀態(tài)取得處理(S300)結(jié)束。
[0352]在當(dāng)前的關(guān)注行不是密碼函數(shù)提取列表193的最終行的情況下(否),密鑰狀態(tài)取得部132利用處理指針指定當(dāng)前的關(guān)注行的下一行作為新的關(guān)注行。然后,返回到S331。
[0353]圖35是示出實(shí)施方式I的對(duì)象程序101的一例的圖。
[0354]圖36是示出實(shí)施方式I的密鑰狀態(tài)管理表196的一例的圖。
[0355]在圖35所示的對(duì)象程序1lF中,加密變量“enc”的密鑰變量“key2”是使用運(yùn)算符“xor”(第6行)、哈希函數(shù)“hash”(第5行)和運(yùn)算符“ + ”(第5行)生成的。
[0356]通過(guò)密鑰狀態(tài)取得處理(S300)(參照?qǐng)D31),密鑰狀態(tài)取得部132基于圖35所示的對(duì)象程序101F、圖33所示的密碼函數(shù)提取列表193F、圖34所示的變量信息提取列表194F,生成圖36所示的密鑰狀態(tài)管理表196F。
[0357]在此,假定哈希函數(shù)列表184包含“hash”作為哈希函數(shù)的函數(shù)名。
[0358]圖37是示出實(shí)施方式I的密鑰變量分析處理(S350)的流程圖。
[0359]基于圖37,對(duì)密鑰狀態(tài)取得處理(S300)(參照?qǐng)D31)的密鑰變量分析處理(S350)進(jìn)行說(shuō)明。
[0360]密鑰變量分析處理(S350)由S351?S356的各處理構(gòu)成。
[0361]在S351中,密鑰狀態(tài)取得部132從變量信息提取列表194取得使用密碼函數(shù)提取列表193的關(guān)注