專利名稱:基于冗余編碼的變量簽名唯一性安全處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種安全編碼技術(shù),尤其是涉及一種基于冗余編碼的變量簽名唯一性安全處理方法。
背景技術(shù):
在現(xiàn)有的安全冗余編碼系統(tǒng)中,對源碼中所有的變量都會生成高位和低位,其中高位存儲源碼的變量值,低位存儲變量的校驗信息,通過高位和低位信息可以計算出變量的簽名。所以,在系統(tǒng)每個周期運(yùn)行結(jié)束之后,可以通過檢查變量的簽名是否正確來判斷系統(tǒng)在運(yùn)行過程中是否出現(xiàn)尋址錯誤、硬件失效等故障(非系統(tǒng)本身的邏輯錯誤)。如果變量的簽名不唯一,就會導(dǎo)致系統(tǒng)的故障可能檢測不出來,同時也不方便對系統(tǒng)的安全進(jìn)行定量的分析。
發(fā)明內(nèi)容
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種大大降低了系統(tǒng)的錯誤不可檢出率的基于冗余編碼的變量簽名唯一性安全處理方法。本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn):一種基于冗余編碼的變量簽名唯一性安全處理方法,其特征在于,包括以下步驟:I)按照簽名生成算法產(chǎn)生簽名;2)輸入待編碼的文件,判斷待編碼的語句的類型,為每個變量分配或計算簽名;3)對步驟2)得到的簽名做簽名唯一性檢查,如果該簽名與已經(jīng)分配的簽名相同,則轉(zhuǎn)向步驟4),否則轉(zhuǎn)向步驟5);4)從簽名表中重新取一個簽名分配給該變量,再轉(zhuǎn)向步驟3);5)存儲經(jīng)過簽名唯一性檢查的簽名,并判斷編碼是否結(jié)束,如果沒有到達(dá)待編碼文件的結(jié)尾,則轉(zhuǎn)向步驟2),否則轉(zhuǎn)向步驟6);6)結(jié)束。所述的步驟2)具體為:21)若語句為變量定義或聲明,則從步驟I)生成的簽名表中分配一個簽名給該變量;22)若語句為基本運(yùn)算,則判斷該基本運(yùn)算屬于哪種運(yùn)算,并按照相應(yīng)算法的簽名方式計算簽名;23)若語句為數(shù)組運(yùn)算,判斷其是數(shù)組賦值運(yùn)算還是數(shù)組取值運(yùn)算,如果是數(shù)組賦值運(yùn)算,則按數(shù)組賦值運(yùn)算的簽名計算方式計算簽名;如果是數(shù)組取值運(yùn)算,則按數(shù)組取值運(yùn)算的簽名計算方式計算簽名。2.4)若語句為分支、循環(huán)結(jié)構(gòu),判斷是分支結(jié)構(gòu)還是循環(huán)結(jié)構(gòu),如果是分支結(jié)構(gòu),則按分支結(jié)構(gòu)的簽名計算方式計算簽名;如果為循環(huán)結(jié)構(gòu),則按循環(huán)結(jié)構(gòu)的簽名計算方式計算簽名;2.5)若語句為函數(shù)調(diào)用,判斷其是模塊函數(shù)調(diào)用還是計算函數(shù)調(diào)用,如果為模塊函數(shù)調(diào)用,則按模塊函數(shù)調(diào)用的簽名計算方式計算簽名;如果為計算函數(shù)調(diào)用,則按計算函數(shù)調(diào)用的簽名計算方式計算簽名。所述的步驟22)判斷該基本運(yùn)算屬于哪種運(yùn)算,并按照相應(yīng)算法的簽名方式計算簽名具體為:如果是加法運(yùn)算,則按加法運(yùn)算的簽名計算方式計算簽名;如果是減法運(yùn)算,則按減法運(yùn)算的簽名計算方式計算簽名;如果是乘法運(yùn)算,則按乘法運(yùn)算的簽名計算方式計算簽名;如果是除法運(yùn)算,則按除法運(yùn)算的簽名計算方式計算簽名;如果是邏輯與運(yùn)算,則按邏輯與運(yùn)算的簽名計算方式計算簽名;如果是邏輯或運(yùn)算,則按邏輯或運(yùn)算的簽名計算方式計算簽名;如果是邏輯非運(yùn)算,則按邏輯非運(yùn)算的簽名計算方式計算簽名;如果是左移運(yùn)算,則按左移運(yùn)算的簽名計算方式計算簽名;如果是右移運(yùn)算,則按右移運(yùn)算的簽名計算方式計算簽名。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:I)該發(fā)明保證了所有變量的簽名都是唯一的,利用對系統(tǒng)的安全進(jìn)行定量的分析;2)該發(fā)明保證了所有變量的簽名都是唯一的,使所有的變量都被唯一標(biāo)識,對于系統(tǒng)的所有單點故障都能檢測出來;對于系統(tǒng)的多點故障,系統(tǒng)的錯誤不可檢出率也明顯降低,所以該發(fā)明大大降低了系統(tǒng)的錯誤不可檢出率。
圖1為本發(fā)明的功能模塊圖;圖2為本發(fā)明的流程圖;圖3為本發(fā)明簽名產(chǎn)生模塊的流程圖;圖4為語句為基本運(yùn)算的簽名計算流程圖;圖5為語句為數(shù)組運(yùn)算的簽名計算流程圖;圖6為語句為分支、循環(huán)結(jié)構(gòu)的簽名計算流程圖;圖7為語句為函數(shù)調(diào)用的簽名計算流程圖。
具體實施例方式下面結(jié)合附圖和具體實施例對本發(fā)明進(jìn)行詳細(xì)說明。實施例圖1所示為本發(fā)明的功能模塊結(jié)構(gòu)示意圖,本發(fā)明包括經(jīng)簽名產(chǎn)生模塊后依次進(jìn)入簽名分配模塊或簽名計算模塊、簽名檢查模塊,最后在簽名存儲模塊存儲簽名。圖2所示為本發(fā)明的工作流程圖,下面結(jié)合圖2-圖7對各步驟進(jìn)行詳細(xì)描述:步驟1:按照簽名生成算法產(chǎn)生簽名,圖3是簽名產(chǎn)生模塊的具體步驟,如果產(chǎn)生的簽名個數(shù)足夠,就轉(zhuǎn)向步驟2,否則繼續(xù)執(zhí)行步驟I。例如可以設(shè)定產(chǎn)生10000個簽名。
步驟2:輸入待編碼的文件,判斷待編碼的語句的類型,為每個變量分配或計算簽名。2.1)該語句為變量定義或聲明,則從步驟I生成的簽名表中分配一個簽名給該變量;2.2)該語句屬于基本運(yùn)算,則判斷該基本運(yùn)算屬于哪種運(yùn)算,圖4是描述了該過程的具體步驟。如果是加法運(yùn)算,則按加法運(yùn)算的簽名計算方式計算簽名;如果是減法運(yùn)算,則按減法運(yùn)算的簽名計算方式計算簽名;如果是乘法運(yùn)算,則按乘法運(yùn)算的簽名計算方式計算簽名;如果是除 法運(yùn)算,則按除法運(yùn)算的簽名計算方式計算簽名;如果是邏輯與運(yùn)算,則按邏輯與運(yùn)算的簽名計算方式計算簽名;如果是邏輯或運(yùn)算,則按邏輯或運(yùn)算的簽名計算方式計算簽名;如果是邏輯非運(yùn)算,則按邏輯非運(yùn)算的簽名計算方式計算簽名;如果是左移運(yùn)算,則按左移運(yùn)算的簽名計算方式計算簽名;如果是右移運(yùn)算,則按右移運(yùn)算的簽名計算方式計算簽名。2.3)該語句為數(shù)組運(yùn)算,圖5描述了該過程的具體步驟。如果是數(shù)組賦值運(yùn)算,則按數(shù)組賦值運(yùn)算的簽名計算方式計算簽名;如果是數(shù)組取值運(yùn)算,則按數(shù)組取值運(yùn)算的簽名計算方式計算簽名。2.4)該語句為分支、循環(huán)結(jié)構(gòu),圖6描述了該過程的具體步驟。如果是分支結(jié)構(gòu),則按分支結(jié)構(gòu)的簽名計算方式計算簽名;如果為循環(huán)結(jié)構(gòu),則按循環(huán)結(jié)構(gòu)的簽名計算方式計算簽名。2.5)該語句為函數(shù)調(diào)用,圖7描述了該過程的具體步驟。如果為模塊函數(shù)調(diào)用,則按模塊函數(shù)調(diào)用的簽名計算方式計算簽名;如果為計算函數(shù)調(diào)用,則按計算函數(shù)調(diào)用的簽名計算方式計算簽名。為變量分配或計算好簽名之后,則轉(zhuǎn)向步驟3.
步驟3:對步驟2得到的簽名做簽名唯一性檢查,如果該簽名與已經(jīng)分配的簽名相同,則轉(zhuǎn)向步驟4,否則轉(zhuǎn)向步驟5。步驟4:從簽名表中重新取一個簽名分配給該變量,再轉(zhuǎn)向步驟3。步驟5:存儲經(jīng)過簽名唯一性檢查的簽名,并判斷編碼是否結(jié)束,如果沒有到達(dá)待編碼文件的結(jié)尾,則轉(zhuǎn)向步驟2,否則轉(zhuǎn)向步驟6。步驟6:結(jié)束。
權(quán)利要求
1.一種基于冗余編碼的變量簽名唯一性安全處理方法,其特征在于,包括以下步驟: 1)按照簽名生成算法產(chǎn)生簽名; 2)輸入待編碼的文件,判斷待編碼的語句的類型,為每個變量分配或計算簽名; 3)對步驟2)得到的簽名做簽名唯一性檢查,如果該簽名與已經(jīng)分配的簽名相同,則轉(zhuǎn)向步驟4),否則轉(zhuǎn)向步驟5); 4)從簽名表中重新取一個簽名分配給該變量,再轉(zhuǎn)向步驟3); 5)存儲經(jīng)過簽名唯一性檢查的簽名,并判斷編碼是否結(jié)束,如果沒有到達(dá)待編碼文件的結(jié)尾,則轉(zhuǎn)向步驟2),否則轉(zhuǎn)向步驟6); 6)結(jié)束。
2.根據(jù)權(quán)利要求1所述的一種基于冗余編碼的變量簽名唯一性安全處理方法,其特征在于,所述的步驟2)具體為: 21)若語句為變量定義或聲明,則從步驟I)生成的簽名表中分配一個簽名給該變量; 22)若語句為基本運(yùn)算,則判斷該基本運(yùn)算屬于哪種運(yùn)算,并按照相應(yīng)算法的簽名方式計算簽名; 23)若語句為數(shù)組運(yùn)算,判斷其是數(shù)組賦值運(yùn)算還是數(shù)組取值運(yùn)算,如果是數(shù)組賦值運(yùn)算,則按數(shù)組賦值運(yùn)算的簽名計算方式計算簽名;如果是數(shù)組取值運(yùn)算,則按數(shù)組取值運(yùn)算的簽名計算方式計算簽名。
2.4)若語句為分支、循環(huán)結(jié)構(gòu),判斷是分支結(jié)構(gòu)還是循環(huán)結(jié)構(gòu),如果是分支結(jié)構(gòu),則按分支結(jié)構(gòu)的簽名計算方式計算簽名;如果為循環(huán)結(jié)構(gòu),則按循環(huán)結(jié)構(gòu)的簽名計算方式計算簽名; 2.5)若語句為函數(shù)調(diào)用,判斷其是模塊函數(shù)調(diào)用還是計算函數(shù)調(diào)用,如果為模塊函數(shù)調(diào)用,則按模塊函數(shù)調(diào)用的簽名計算方式計算簽名;如果為計算函數(shù)調(diào)用,則按計算函數(shù)調(diào)用的簽名計算方式計算簽名。
3.根據(jù)權(quán)利要求2所述的一種基于冗余編碼的變量簽名唯一性安全處理方法,其特征在于,所述的步驟22)判斷該基本運(yùn)算屬于哪種運(yùn)算,并按照相應(yīng)算法的簽名方式計算簽名具體為: 如果是加法運(yùn)算,則按加法運(yùn)算的簽名計算方式計算簽名; 如果是減法運(yùn)算,則按減法運(yùn)算的簽名計算方式計算簽名; 如果是乘法運(yùn)算,則按乘法運(yùn)算的簽名計算方式計算簽名; 如果是除法運(yùn)算,則按除法運(yùn)算的簽名計算方式計算簽名; 如果是邏輯與運(yùn)算,則按邏輯與運(yùn)算的簽名計算方式計算簽名; 如果是邏輯或運(yùn)算,則按邏輯或運(yùn)算的簽名計算方式計算簽名; 如果是邏輯非運(yùn)算,則按邏輯非運(yùn)算的簽名計算方式計算簽名; 如果是左移運(yùn)算,則按左移運(yùn)算的簽名計算方式計算簽名; 如果是右移運(yùn)算,則按右移運(yùn)算的簽名計算方式計算簽名。
全文摘要
本發(fā)明涉及一種基于冗余編碼的變量簽名唯一性安全處理方法,包括以下步驟1)按照簽名生成算法產(chǎn)生簽名;2)輸入待編碼的文件,判斷待編碼的語句的類型,為每個變量分配或計算簽名;3)對步驟2)得到的簽名做簽名唯一性檢查,如果該簽名與已經(jīng)分配的簽名相同,則轉(zhuǎn)向步驟4),否則轉(zhuǎn)向步驟5);4)從簽名表中重新取一個簽名分配給該變量,再轉(zhuǎn)向步驟3);5)存儲經(jīng)過簽名唯一性檢查的簽名,并判斷編碼是否結(jié)束,如果沒有到達(dá)待編碼文件的結(jié)尾,則轉(zhuǎn)向步驟2),否則轉(zhuǎn)向步驟6);6)結(jié)束。與現(xiàn)有技術(shù)相比,本發(fā)明具有大大降低了系統(tǒng)的錯誤不可檢出率等優(yōu)點。
文檔編號G06F11/08GK103150227SQ201310043978
公開日2013年6月12日 申請日期2013年2月4日 優(yōu)先權(quán)日2013年2月4日
發(fā)明者孫軍峰, 汪明新, 張磊, 曹杰, 秘慧杰, 江偉, 何昀鋒 申請人:卡斯柯信號有限公司