專利名稱::一種密碼模塊api安全性檢測(cè)方法與系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)軟件相關(guān)領(lǐng)域,具體涉及一種密碼模塊API安全性檢測(cè)方法與系統(tǒng),屬于信息安全
技術(shù)領(lǐng)域:
。
背景技術(shù):
:密碼模塊是指被容納在加密邊界范圍內(nèi)執(zhí)行認(rèn)可安全功能(包括加密算法與密鑰的產(chǎn)生)的硬件、軟件和/或固件的組合。密碼模塊作為密碼技術(shù)直接應(yīng)用的產(chǎn)品,廣泛應(yīng)用于金融、電子商務(wù)、網(wǎng)絡(luò)認(rèn)證等各個(gè)方面。常見的密碼模塊包括USBKey、智能卡、RFID、TPM等。密碼模塊對(duì)外提供的密碼服務(wù)主要包括:用戶認(rèn)證、加解密信息、數(shù)字簽名及驗(yàn)證等。密碼模塊作為信息安全系統(tǒng)的核心部分,它的安全性直接關(guān)系到安全功能的實(shí)現(xiàn)甚至是整個(gè)信息系統(tǒng)的安全。密碼模塊API(ApplicationProgrammingInterface)是指密碼模塊應(yīng)用程序接口,它是密碼模塊對(duì)外提供密碼服務(wù)的編程接口。應(yīng)用程序通過API調(diào)用密碼模塊提供的各種密碼服務(wù)而無需知道所涉及的詳細(xì)軟硬件信息。目前主流的API規(guī)范與標(biāo)準(zhǔn)有:RSAPKCS#1ICryptographicTokenInterfaceStandard、MicrosoftCryptoAP1、GenericSecurityServicesAPI(GSS-API)、RSABSAFEAPI和Intel/OpenGroupCommonDataSecurityArchitecture(CDSA)。由于在密碼實(shí)踐中密碼模塊都是以API形式向外界提供密碼服務(wù),所以即使密碼模塊采用的密碼算法、實(shí)現(xiàn)的安全協(xié)議以及物理環(huán)境上都是安全的,也有可能因?yàn)槊艽a模塊API的設(shè)計(jì)不當(dāng)導(dǎo)致以非正常方式使用密碼模塊時(shí)泄露機(jī)密信息。自從針對(duì)密碼模塊API的攻擊概念被提出以來,實(shí)際API攻擊不斷出現(xiàn),使得密碼模塊API的安全性檢測(cè)成為日益緊迫的問題。早期密碼模塊API的安全性檢測(cè)大都是通過手工對(duì)指令進(jìn)行詳細(xì)分析,但是手工分析的缺點(diǎn)是方法繁瑣復(fù)雜、效率較低、不能窮盡所有狀態(tài)。因此需要一種自動(dòng)分析系統(tǒng)來代替手工分析,借助形式化分析方法和計(jì)算機(jī)的輔助來實(shí)現(xiàn)對(duì)密碼模塊API的安全性進(jìn)行自動(dòng)化檢測(cè),找出在密碼模塊API設(shè)計(jì)中可能存在的安全漏洞,及時(shí)修補(bǔ)存在的安全隱患,從而確保密碼模塊的安全性和可靠性。
發(fā)明內(nèi)容針對(duì)密碼模塊API的安全性檢測(cè)所存在的技術(shù)問題,本發(fā)明的目的在于提出一種密碼模塊API安全性檢測(cè)方法與系統(tǒng),實(shí)現(xiàn)對(duì)密碼模塊API安全性的自動(dòng)化檢測(cè),檢測(cè)密碼模塊API在設(shè)計(jì)和實(shí)現(xiàn)中是否存在安全漏洞,輔助密碼模塊API的設(shè)計(jì)。本發(fā)明提供的密碼模塊API安全性檢測(cè)系統(tǒng)架構(gòu)由相互關(guān)聯(lián)的三個(gè)模塊組成:其一是對(duì)密碼模塊API的功能實(shí)現(xiàn)進(jìn)行自動(dòng)化識(shí)別的功能實(shí)現(xiàn)識(shí)別模塊,該模塊可以自動(dòng)對(duì)待檢測(cè)的密碼模塊API的功能實(shí)現(xiàn)進(jìn)行分析,獲取密碼模塊API功能實(shí)現(xiàn)情況的具體信息;其二是對(duì)密碼模塊API的自動(dòng)化分析模塊,該模塊根據(jù)獲取的密碼模塊API的功能實(shí)現(xiàn)信息建立相應(yīng)的形式化模型,然后對(duì)該形式化模型進(jìn)行自動(dòng)化的安全性檢測(cè),檢測(cè)是否存在攻擊;其三是實(shí)例攻擊驗(yàn)證模塊,該模塊根據(jù)自動(dòng)分析模塊得出的檢測(cè)結(jié)果生成相應(yīng)的攻擊實(shí)例,并對(duì)密碼模塊進(jìn)行實(shí)際攻擊,驗(yàn)證攻擊是否存在。該系統(tǒng)的主要設(shè)計(jì)特點(diǎn)包括:I)該系統(tǒng)對(duì)密碼模塊API的安全性進(jìn)行自動(dòng)化檢測(cè)和分析,不需要繁瑣的手工分析和人工參與,提高了檢測(cè)的效率;2)形式化分析和實(shí)際攻擊檢測(cè)相結(jié)合,首先通過形式化分析檢測(cè)是否存在攻擊,然后根據(jù)形式化分析結(jié)果做實(shí)際的抗攻擊檢測(cè);3)采用模塊化、可擴(kuò)展接口設(shè)計(jì),擴(kuò)展方便,可以對(duì)各種密碼模塊API標(biāo)準(zhǔn)進(jìn)行自動(dòng)化檢測(cè)和分析。該架構(gòu)的具體組成結(jié)構(gòu)如圖1所示,各部分說明如下:1.功能實(shí)現(xiàn)識(shí)別模塊功能實(shí)現(xiàn)識(shí)別模塊負(fù)責(zé)對(duì)密碼模塊API的功能實(shí)現(xiàn)進(jìn)行自動(dòng)化分析,獲取待檢測(cè)密碼模塊API的實(shí)現(xiàn)信息。由于不同密碼模塊可能采用不同的API標(biāo)準(zhǔn),本發(fā)明的功能實(shí)現(xiàn)識(shí)別模塊設(shè)計(jì)為實(shí)現(xiàn)信息采集和具體識(shí)別模塊兩部分。具體識(shí)別模塊部分設(shè)計(jì)為可擴(kuò)展接口,不同的API標(biāo)準(zhǔn)有不同的具體識(shí)別模塊。具體識(shí)別模塊通過枚舉調(diào)用API命令及設(shè)置相關(guān)參數(shù)來測(cè)試其API功能實(shí)現(xiàn)情況,從而獲取形式化模型需要的實(shí)現(xiàn)信息。在實(shí)際檢測(cè)具體密碼模塊時(shí),只需根據(jù)其支持的API標(biāo)準(zhǔn)采用對(duì)應(yīng)的具體識(shí)別模塊即可。實(shí)現(xiàn)信息采集部分根據(jù)具體識(shí)別模塊的檢測(cè)結(jié)果生成相應(yīng)的文本配置文件,該配置文件將提供給自動(dòng)化分析模塊進(jìn)行形式化建模及分析。2.自動(dòng)化分析模塊自動(dòng)化分析模塊負(fù)責(zé)對(duì)密碼模塊API進(jìn)行形式化建模和分析。該模塊包括兩個(gè)部分,分別是形式化建模部分和檢測(cè)算法部分。形式化建模部分根據(jù)功能實(shí)現(xiàn)識(shí)別模塊收集的實(shí)現(xiàn)信息對(duì)密碼模塊API建立基于項(xiàng)重寫系統(tǒng)的形式化模型。該形式化模型專門針對(duì)密碼模塊API設(shè)計(jì),被廣泛應(yīng)用于密碼模塊API的形式化建模當(dāng)中。該模型的建立是根據(jù)各條API命令的具體實(shí)現(xiàn)建立對(duì)應(yīng)的規(guī)則,每條API命令對(duì)應(yīng)一條規(guī)則。所有API命令組成的規(guī)則系統(tǒng)及密碼模塊的初始化狀態(tài)構(gòu)成了該形式化模型。模型檢測(cè)部分負(fù)責(zé)對(duì)建立的形式化模型進(jìn)行自動(dòng)化分析,檢測(cè)是否存在API攻擊。該部分采用一種自主提出的新的檢測(cè)算法,提高了檢測(cè)效率。該檢測(cè)算法首先假定存在一個(gè)敵手,并給定敵手一初始知識(shí)集,敵手的知識(shí)集代表敵手知道的信息。然后,算法利用API形式化模型中的規(guī)則系統(tǒng)對(duì)敵手的知識(shí)集進(jìn)行擴(kuò)充,即模擬實(shí)際情況下敵手通過API調(diào)用獲取新的信息。算法通過不斷調(diào)用API形式化模型中的規(guī)則來搜索敵手是否能夠獲得機(jī)密信息,如秘密密鑰等。搜索的過程采用廣度優(yōu)先搜索思想。如果在搜索的某一狀態(tài)敵手獲得了機(jī)密信息,則表示搜索到攻擊,算法停止搜索并給出攻擊。如果算法搜索完成所有狀態(tài)也沒有發(fā)現(xiàn)攻擊,則表示該API形式化模型是安全的。3.實(shí)例攻擊驗(yàn)證模塊實(shí)例攻擊驗(yàn)證模塊根據(jù)自動(dòng)化分析模塊的檢測(cè)結(jié)果對(duì)密碼模塊進(jìn)行實(shí)際的抗攻擊檢測(cè)。該模塊包括攻擊實(shí)例生成和攻擊實(shí)施兩部分。攻擊實(shí)例生成部分負(fù)責(zé)根據(jù)自動(dòng)化分析模塊的檢測(cè)結(jié)果自動(dòng)生成攻擊實(shí)例。攻擊實(shí)例的生成主要是根據(jù)自動(dòng)化分析模塊檢測(cè)到的攻擊路徑生成相應(yīng)的具體的API調(diào)用序列,同時(shí)加上調(diào)用密碼模塊API命令之前的初始化及攻擊結(jié)束后的清理等輔助API命令序列,從而得到一個(gè)完整的實(shí)際調(diào)用密碼模塊API的全部命令序列。如果自動(dòng)化分析模塊沒有發(fā)現(xiàn)攻擊,則沒有實(shí)例生成;若發(fā)現(xiàn)攻擊,則會(huì)根據(jù)發(fā)現(xiàn)的攻擊路徑生成具體的攻擊實(shí)例,包括具體的API命令、調(diào)用序列及參數(shù)等。攻擊實(shí)施部分負(fù)責(zé)根據(jù)生成的攻擊實(shí)例對(duì)密碼模塊進(jìn)行實(shí)際攻擊,驗(yàn)證實(shí)踐中是否存在攻擊。和現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)勢(shì):1.采用形式化驗(yàn)證的方法對(duì)密碼模塊API的安全性進(jìn)行自動(dòng)化分析,避免了手工分析的繁瑣和低效;2.提出了一種新的針對(duì)密碼模塊API形式化模型的檢測(cè)算法,提高了檢測(cè)效率;3.采用模塊化、可擴(kuò)展接口設(shè)計(jì),擴(kuò)展方便,能夠?qū)Ω鞣N密碼模塊API標(biāo)準(zhǔn)進(jìn)行自動(dòng)化檢測(cè)和分析。圖1是密碼模塊API安全性檢測(cè)系統(tǒng)架構(gòu)圖;圖2是密碼模塊API形式化檢測(cè)檢測(cè)算法流程圖。具體實(shí)施例方式下面結(jié)合附圖和一個(gè)范例對(duì)本發(fā)明做進(jìn)一步詳細(xì)的說明,但不以任何方式限制本發(fā)明的范圍。在實(shí)施例中,以對(duì)密碼模塊USBKey的API接口標(biāo)準(zhǔn)PKCS#11進(jìn)行自動(dòng)化檢測(cè)為例說明本發(fā)明的具體實(shí)施步驟。本方法同樣適用于其他密碼模塊的API標(biāo)準(zhǔn)。第一步,本發(fā)明的功能實(shí)現(xiàn)識(shí)別模塊首先會(huì)對(duì)該USBKey實(shí)現(xiàn)PKCS#11的具體情況進(jìn)行分析,確定該USBKey具體支持的PKCS#11的功能(PKCS#11是一種API標(biāo)準(zhǔn))。具體的檢測(cè)方式是通過調(diào)用PKCS#11提供的相關(guān)API功能命令及參數(shù)來獲得該USBKey的配置信息。調(diào)用的API命令及參數(shù)完全按照PKCS#11提供的標(biāo)準(zhǔn)實(shí)現(xiàn)。檢測(cè)的具體信息包括:是否支持對(duì)稱或非對(duì)稱密碼算法、支持的密碼原語操作、支持的密鑰屬性、支持的密鑰屬性策略等。檢測(cè)結(jié)果以預(yù)定義的格式保存為配置文件,以供自動(dòng)化分析模塊進(jìn)行讀取建模。該配置文件每行為一條具體的配置信息,每條配置信息以列表或字典數(shù)據(jù)結(jié)構(gòu)形式給出相關(guān)f目息。例如:sym_keys=['kl','k2','k3']sym_handles=['hnl','hn2']key_attribute=['extractable_hnlkl','extractable_hnlk2']sym_keys表示同時(shí)可用的3個(gè)對(duì)稱密鑰為'kl','k2','k3';sym_handles表不每個(gè)密鑰最多有兩個(gè)句柄'hnl1和'hn21;1extractable_hnlkl1和'extractable_hnlk2'分別表示初始狀態(tài)時(shí)USBKey內(nèi)兩個(gè)密鑰句柄hnlkl和hnlk2的extractable屬性為真。第二步,自動(dòng)化分析模塊建立形式化模型。形式化模型分為初始化配置和規(guī)則系統(tǒng)兩部分。上一步中檢測(cè)的配置信息將作為形式化模型的初始化配置部分。要建立針對(duì)PKCS#11的規(guī)則系統(tǒng),首先給定以下集合:I)函數(shù)符號(hào)集:E={h,senc,asenc,pub,priv}2)謂詞符號(hào)集:T={wrap,unwrap,encrypt,decrypt,sensitive,extractable,trusted,11rap_with_trusted]3)模式集:M={Cipher,Key,Seed,Nonce,Handle,Attribute}這些集合中的內(nèi)容需要根據(jù)API標(biāo)準(zhǔn)提供的內(nèi)容及功能識(shí)別模塊收集的信息共同決定。函數(shù)符號(hào)集E中包含該API標(biāo)準(zhǔn)所支持的函數(shù)功能。函數(shù)符號(hào)集E中h代表密鑰的句柄,senc和asenc分別代表對(duì)稱加密及非對(duì)稱加密,pub和priv分別代表取得公鑰及私鑰。例如,h(n,x)表示密鑰X的句柄,n為加入的隨機(jī)數(shù),以區(qū)別同一密鑰的不同句柄。謂詞符號(hào)集Jp表示密鑰的屬性。例如,wrap(n,x)表示密鑰句柄h(n,x)是否擁有wrap屬性:若有則wrap(n,x)為true,否則為false。同時(shí),我們對(duì)每個(gè)函數(shù)符號(hào)及謂詞符號(hào)都給定相應(yīng)模式,例如h:NonceXKey—Handle。接下來,我們將PKCS#11的每一條API命令建模為項(xiàng)重寫規(guī)則,例如我們將導(dǎo)出密鑰的API命令C_WrapKey建模為:hOi1,X1),h(n2,x2);wrap(X1),extract(X2)—senc(x2,X1)這條規(guī)則表示,如果敵手的知識(shí)集中包含hOi1,X1)和h(n2,x2),并且wrap(X1)和extract(X1)在當(dāng)前狀態(tài)下為真,那么該規(guī)則可被觸發(fā)。該規(guī)則的效果則是將對(duì)稱密碼加密項(xiàng)senc(x2,X1)加入到敵手的知識(shí)集中。第三步,自動(dòng)化分析模塊對(duì)建立的形式化模型進(jìn)行檢測(cè)。首先,攻擊狀態(tài)定義為敵手的知識(shí)集中獲取到了設(shè)定的機(jī)密信息,如秘密密鑰等。敵手的知識(shí)集的狀態(tài)被定義為狀態(tài)節(jié)點(diǎn),而敵手的知識(shí)集在形式化模型下所有的可能狀態(tài)被定義為整個(gè)狀態(tài)空間。檢測(cè)算法的主要思想是使用形式化模型中的項(xiàng)重寫規(guī)則,利用符號(hào)化檢測(cè)及廣度優(yōu)先搜索,對(duì)給定的敵手的初始知識(shí)集不斷進(jìn)行匹配和擴(kuò)展,直到搜索到攻擊狀態(tài),或者搜索完?duì)顟B(tài)空間。匹配和擴(kuò)展的過程是首先利用形式化模型的規(guī)則對(duì)敵手的知識(shí)集進(jìn)行匹配,然后利用匹配到的規(guī)則對(duì)敵手的知識(shí)集進(jìn)行擴(kuò)展,即將匹配到的規(guī)則生成新的信息加入到敵手的知識(shí)集中。檢測(cè)算法的流程如圖2所示,搜索過程中維護(hù)Open隊(duì)列和Closed表,Open隊(duì)列中存儲(chǔ)已經(jīng)探索到但未檢測(cè)的狀態(tài)節(jié)點(diǎn),Closed表中存儲(chǔ)已經(jīng)檢測(cè)過的狀態(tài)節(jié)點(diǎn)。算法開始時(shí)首先設(shè)置初始狀態(tài),即敵手的初始知識(shí)集,并將其作為初始節(jié)點(diǎn)加入到Open隊(duì)列中。然后算法進(jìn)入一個(gè)主循環(huán)體,退出條件是Open隊(duì)列為空。在循環(huán)中,首先取出Open隊(duì)列的首節(jié)點(diǎn)N,將其加入到Closed表中,然后檢測(cè)節(jié)點(diǎn)N是否為攻擊狀態(tài)。若是,則表示發(fā)現(xiàn)攻擊,算法終止;若不是,則將節(jié)點(diǎn)N擴(kuò)展的子節(jié)點(diǎn)加入到Open隊(duì)列中,并進(jìn)入下一次循環(huán)。如果模型檢測(cè)發(fā)現(xiàn)攻擊,則會(huì)以預(yù)定義的格式給出攻擊路徑。攻擊路徑只包括主要API命令的調(diào)用,預(yù)定義的格式為每一行為一條API命令,包括API命令的名稱及對(duì)應(yīng)的形式化模型的規(guī)貝U。例如,針對(duì)PKCS#11的包裹密鑰攻擊,則會(huì)給出如下路徑:Set_wrap:h(rij,k2)—WrapOi1,k2)Wrap:h(rij,k2),h(n2,kj)—senc(k17k2)Set_decrypt:h(n1,k2)—decrypt(n1,k2)SDecrypt:h(n1,k2),senc(k1,k2)—k1該攻擊路徑主要分為四步,每一步調(diào)用相應(yīng)的API命令。敵手通過這些API命令的調(diào)用獲得秘密密鑰k1,從而導(dǎo)致API攻擊。第四步,實(shí)例攻擊驗(yàn)證模塊根據(jù)自動(dòng)化分析模塊的結(jié)果進(jìn)行實(shí)例攻擊檢測(cè)。實(shí)例攻擊驗(yàn)證模塊首先根據(jù)自動(dòng)化分析模塊的檢測(cè)結(jié)果生成攻擊實(shí)例,若檢測(cè)到攻擊,則根據(jù)給出的攻擊路徑生成相應(yīng)的PKCS#11命令調(diào)用序列,若沒有檢測(cè)到攻擊,則無攻擊實(shí)例生成。然后,攻擊實(shí)施部分根據(jù)PKCS#11命令調(diào)用序列依次調(diào)用各個(gè)API命令,驗(yàn)證攻擊是否真正存在。例如,上一步中針對(duì)PKCS#11的包裹密鑰攻擊,將會(huì)產(chǎn)生如下API命令的調(diào)用:第一步調(diào)用C_SetAttributeValue命令設(shè)置密鑰k2的wrap屬性值;第二步調(diào)用C_WrapKey命令用密鑰k2導(dǎo)出k1,得到Senc(k1,k2);第三步調(diào)用C_SetAttributeValue命令設(shè)置k2的decrypt屬性值;最后調(diào)用C_Decrypt命令解密Senc(k1,k2)得到秘密密鑰k1.以上詳細(xì)說明的具體的實(shí)施方式僅僅是為了更好了理解本發(fā)明使用的,本發(fā)明不局限于此,本領(lǐng)域一般技術(shù)人員可以根據(jù)本發(fā)明的公開內(nèi)容,采用其他多種實(shí)施方式來實(shí)施本發(fā)明,凡是采用本發(fā)明的設(shè)計(jì)結(jié)構(gòu)和思路的,在不脫離權(quán)利要求范圍的變換和替代,都屬于本發(fā)明的保護(hù)范圍。權(quán)利要求1.一種密碼模塊API安全性檢測(cè)方法,其步驟為:1)功能實(shí)現(xiàn)識(shí)別模塊獲取待檢測(cè)的密碼模塊API的實(shí)現(xiàn)信息;2)自動(dòng)化分析模塊根據(jù)所述實(shí)現(xiàn)信息建立該密碼模塊API的形式化模型,然后對(duì)該形式化模型進(jìn)行安全性檢測(cè),檢測(cè)是否存在攻擊;3)如果存在攻擊,實(shí)例攻擊驗(yàn)證模塊根據(jù)自動(dòng)分析模塊得出的檢測(cè)結(jié)果生成相應(yīng)的攻擊實(shí)例,并對(duì)密碼模塊API進(jìn)行實(shí)際攻擊,驗(yàn)證攻擊是否存在,如果實(shí)際驗(yàn)證攻擊不存在,則該密碼模塊API是安全的。2.按權(quán)利要求1所述的方法,其特征在于所述形式化模型的建立方法為:根據(jù)所述實(shí)現(xiàn)信息對(duì)該密碼模塊API建立基于項(xiàng)重寫系統(tǒng)的形式化模型;其中,根據(jù)該密碼模塊API的每條API命令的具體實(shí)現(xiàn)建立一對(duì)應(yīng)的規(guī)則,該密碼模塊API的所有API命令組成的規(guī)則系統(tǒng)及該密碼模塊API的初始化狀態(tài)構(gòu)成所述形式化模型。3.按權(quán)利要求2所述的方法,其特征在于對(duì)該形式化模型進(jìn)行安全性檢測(cè),檢測(cè)是否存在攻擊的方法為:首先假定存在一個(gè)敵手,并給定敵手一初始知識(shí)集,敵手的知識(shí)集代表敵手知道的信息;然后,利用所述形式化模型中的規(guī)則系統(tǒng)對(duì)敵手的知識(shí)集進(jìn)行擴(kuò)充,直到搜索到攻擊狀態(tài),或者搜索完?duì)顟B(tài)空間;如果發(fā)現(xiàn)攻擊狀態(tài),則停止搜索并給出攻擊,如果搜索完成狀態(tài)空間所有狀態(tài)也沒有發(fā)現(xiàn)攻擊狀態(tài),則表示所述形式化模型是安全的;其中,攻擊狀態(tài)為敵手的知識(shí)集中獲取到了設(shè)定的機(jī)密信息,敵手的知識(shí)集在形式化模型下所有的可能狀態(tài)定義為狀態(tài)空間。4.按權(quán)利要求3所述的方法,其特征在于利用所述形式化模型中的規(guī)則系統(tǒng)對(duì)敵手的知識(shí)集進(jìn)行擴(kuò)充的方法為:首先利用形式化模型的規(guī)則對(duì)敵手的知識(shí)集進(jìn)行匹配,然后利用匹配到的規(guī)則對(duì)敵手的知識(shí)集進(jìn)行擴(kuò)展,即將匹配的規(guī)則生成新的信息加入到敵手的知識(shí)集中。5.按權(quán)利要求3所述的方法,其特征在于搜索所述狀態(tài)空間的方法為:1)將敵手的知識(shí)集的狀態(tài)定義為狀態(tài)節(jié)點(diǎn),建立一Open隊(duì)列和一Closed表;2)將已經(jīng)探索到但未檢測(cè)的狀態(tài)節(jié)點(diǎn)存儲(chǔ)到Open隊(duì)列中,將已經(jīng)檢測(cè)過的狀態(tài)節(jié)點(diǎn)存儲(chǔ)到Closed表中;3)將敵手的初始知識(shí)集設(shè)置為初始狀態(tài),并將其作為初始節(jié)點(diǎn)加入到Open隊(duì)列中;4)取出Open隊(duì)列的首節(jié)點(diǎn)N,將其加入到Closed表中,然后檢測(cè)節(jié)點(diǎn)N是否為攻擊狀態(tài);若是,則表示發(fā)現(xiàn)攻擊,終止搜索;若不是攻擊狀態(tài)且節(jié)點(diǎn)N可擴(kuò)展,則將節(jié)點(diǎn)N擴(kuò)展的子節(jié)點(diǎn)加入到Open隊(duì)列中,并取出Open隊(duì)列中的下一節(jié)點(diǎn),直到Open隊(duì)列為空,若不是攻擊狀態(tài)且節(jié)點(diǎn)N不可擴(kuò)展,則取出Open隊(duì)列中的下一節(jié)點(diǎn),直到Open隊(duì)列為空。6.按權(quán)利要求3或4或5所述的方法,其特征在于所述給出攻擊的方法為:以預(yù)定義的格式給出攻擊路徑,其中攻擊路徑只包括API命令的調(diào)用,預(yù)定義的格式為每一行為一條API命令,包括API命令的名稱及對(duì)應(yīng)的形式化模型的規(guī)則。7.按權(quán)利要求6所述的方法,其特征在于所述攻擊實(shí)例的生成方法為:根據(jù)自動(dòng)化分析模塊檢測(cè)到的攻擊路徑生成相應(yīng)的具體的API調(diào)用序列,同時(shí)加上調(diào)用密碼模塊API命令之前的初始化及攻擊結(jié)束后的清理輔助API命令序列,從而得到一個(gè)完整的實(shí)際調(diào)用密碼模塊API的全部命令序列。8.按權(quán)利要求1所述的方法,其特征在于根據(jù)API標(biāo)準(zhǔn),對(duì)每一API標(biāo)準(zhǔn)的密碼模塊API建立一對(duì)應(yīng)的功能實(shí)現(xiàn)識(shí)別模塊。9.按權(quán)利要求1或8所述的方法,其特征在于所述功能實(shí)現(xiàn)識(shí)別模塊通過枚舉調(diào)用API命令及設(shè)置相關(guān)參數(shù)來測(cè)試其API功能實(shí)現(xiàn)情況,從而獲取所述實(shí)現(xiàn)信息,并將所述實(shí)現(xiàn)信息生成一文本配置文件。10.一種密碼模塊API安全性檢測(cè)系統(tǒng),其特征在于包括功能實(shí)現(xiàn)識(shí)別模塊、自動(dòng)化分析模塊、實(shí)例攻擊驗(yàn)證模塊;其中所述功能實(shí)現(xiàn)識(shí)別模塊,用于對(duì)待檢測(cè)的密碼模塊API的功能實(shí)現(xiàn)進(jìn)行分析,獲取密碼模塊API的實(shí)現(xiàn)信息;所述自動(dòng)化分析模塊,用于根據(jù)獲取的所述實(shí)現(xiàn)信息建立該密碼模塊API的形式化模型,然后對(duì)該形式化模型進(jìn)行自動(dòng)化的安全性檢測(cè),檢測(cè)是否存在攻擊;所述實(shí)例攻擊驗(yàn)證模塊,用于根據(jù)自動(dòng)分析模塊得出的檢測(cè)結(jié)果生成相應(yīng)的攻擊實(shí)例,并對(duì)密碼模塊API進(jìn)行實(shí)際攻擊,驗(yàn)證攻擊是否存在。11.按權(quán)利要求10所述的系統(tǒng),其特征在于根據(jù)所述實(shí)現(xiàn)信息對(duì)該密碼模塊API建立基于項(xiàng)重寫系統(tǒng)的形式化模型;其中,根據(jù)該密碼模塊API的每條API命令的具體實(shí)現(xiàn)建立一對(duì)應(yīng)的規(guī)則,該密碼模塊API的所有API命令組成的規(guī)則系統(tǒng)及該密碼模塊API的初始化狀態(tài)構(gòu)成所述形式化模型。12.按權(quán)利要求10所述的系統(tǒng),其特征在于根據(jù)API標(biāo)準(zhǔn),對(duì)每一API標(biāo)準(zhǔn)的密碼模塊API建立一對(duì)應(yīng)的功能實(shí)現(xiàn)識(shí)別模塊;所述功能實(shí)現(xiàn)識(shí)別模塊通過枚舉調(diào)用API命令及設(shè)置相關(guān)參數(shù)來測(cè)試其API功能實(shí)現(xiàn)情況,從而獲取所述實(shí)現(xiàn)信息,并將所述實(shí)現(xiàn)信息生成一文本配置文件。全文摘要本發(fā)明公開了一種密碼模塊API安全性檢測(cè)方法與系統(tǒng)。本方法為1)功能實(shí)現(xiàn)識(shí)別模塊獲取待檢測(cè)的密碼模塊API的實(shí)現(xiàn)信息;2)自動(dòng)化分析模塊根據(jù)所述實(shí)現(xiàn)信息建立該密碼模塊API的形式化模型,然后對(duì)該形式化模型進(jìn)行安全性檢測(cè),檢測(cè)是否存在攻擊;3)如果存在攻擊,實(shí)例攻擊驗(yàn)證模塊根據(jù)自動(dòng)分析模塊得出的檢測(cè)結(jié)果生成相應(yīng)的攻擊實(shí)例,并對(duì)密碼模塊API進(jìn)行實(shí)際攻擊,驗(yàn)證攻擊是否存在,如果實(shí)際驗(yàn)證攻擊不存在,則該密碼模塊API為安全的。本系統(tǒng)包括功能實(shí)現(xiàn)識(shí)別模塊、自動(dòng)化分析模塊、實(shí)例攻擊驗(yàn)證模塊。與現(xiàn)有技術(shù)相比,本發(fā)明大大提高了密碼模塊API安全性的檢測(cè)效率。文檔編號(hào)G06F21/55GK103093144SQ201310013010公開日2013年5月8日申請(qǐng)日期2013年1月14日優(yōu)先權(quán)日2013年1月14日發(fā)明者劉波,陳華,高思,范麗敏,馮登國申請(qǐng)人:中國科學(xué)院軟件研究所