亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于動(dòng)態(tài)二進(jìn)制插樁的密鑰安全性檢測(cè)

        2017-11-23 01:20:37林昊康緋光焱
        關(guān)鍵詞:加解密密碼學(xué)漏洞

        林昊,康緋,光焱

        ?

        基于動(dòng)態(tài)二進(jìn)制插樁的密鑰安全性檢測(cè)

        林昊,康緋,光焱

        (信息工程大學(xué)數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室,河南鄭州 450001)

        針對(duì)加密軟件中的密鑰安全性問(wèn)題,提出一種基于動(dòng)態(tài)二進(jìn)制插樁的密鑰安全性檢測(cè)方法。該方法面向CryptoAPI加密應(yīng)用程序,首先通過(guò)對(duì)CryptoAPI密鑰應(yīng)用模式的分析,指出潛在的密鑰安全性漏洞;然后以動(dòng)態(tài)二進(jìn)制分析平臺(tái)Pin為支撐,動(dòng)態(tài)記錄程序運(yùn)行期間的加解密過(guò)程信息;在此基礎(chǔ)上設(shè)計(jì)關(guān)聯(lián)性漏洞檢測(cè)算法,實(shí)現(xiàn)對(duì)密鑰安全性的檢測(cè)。測(cè)試結(jié)果表明,該方法能夠有效檢測(cè)出兩大類(lèi)密鑰安全性漏洞。

        密鑰安全性檢測(cè);動(dòng)態(tài)二進(jìn)制插樁;Pin平臺(tái);CryptoAPI加密應(yīng)用程序

        1 引言

        越來(lái)越多的應(yīng)用程序采用加密手段來(lái)保護(hù)數(shù)據(jù)安全,但是由于開(kāi)發(fā)人員的編程失誤等原因,會(huì)導(dǎo)致加解密過(guò)程存在安全隱患。密鑰是密碼機(jī)制的核心環(huán)節(jié),然而近年來(lái),由于密鑰的安全性所引發(fā)的各類(lèi)漏洞和安全事件層出不窮,因此,對(duì)加密應(yīng)用程序的密鑰進(jìn)行安全性檢測(cè)在提高軟件安全性、保護(hù)隱私數(shù)據(jù)等方面具有重要意義。

        目前,針對(duì)加密應(yīng)用程序的密鑰安全性檢測(cè)主要通過(guò)兩種方法。方法一是綜合利用反匯編、二進(jìn)制分析、軟件動(dòng)態(tài)調(diào)試等逆向分析手段[1],對(duì)加密應(yīng)用程序的加解密過(guò)程分別進(jìn)行靜態(tài)語(yǔ)義分析和動(dòng)態(tài)特征提取,從中發(fā)現(xiàn)潛在的密鑰安全性漏洞,此方法的弊端是需要耗費(fèi)大量人工分析的時(shí)間和精力。方法二是基于安全漏洞檢測(cè)技術(shù),由于密鑰安全性漏洞屬于軟件漏洞中密碼學(xué)漏洞的范疇,通過(guò)形式化證明、靜態(tài)程序分析、動(dòng)態(tài)軟件測(cè)試[2]等方法進(jìn)行密碼學(xué)安全性驗(yàn)證,可以快速、有效地發(fā)現(xiàn)數(shù)據(jù)加解密過(guò)程中的密碼學(xué)缺陷,實(shí)現(xiàn)密鑰安全性的檢測(cè)。現(xiàn)階段國(guó)內(nèi)外的研究主要是利用方法二的密碼學(xué)安全性驗(yàn)證的思想,進(jìn)行密碼學(xué)應(yīng)用安全性漏洞的自動(dòng)化檢測(cè),已有的檢測(cè)工具主要有以下兩種類(lèi)型。

        第一類(lèi)工具是依靠靜態(tài)程序分析和動(dòng)態(tài)數(shù)據(jù)跟蹤技術(shù)來(lái)實(shí)現(xiàn)安全性檢測(cè),代表性的檢測(cè)工具有以下幾種。2013年,針對(duì)Android加密應(yīng)用程序,Egele等[3]總結(jié)出6條密碼學(xué)應(yīng)用漏洞的規(guī)則,并實(shí)現(xiàn)了CryptoLint系統(tǒng)[3],該系統(tǒng)利用靜態(tài)程序切片技術(shù)跟蹤密鑰、初始化向量等數(shù)據(jù)流向,并進(jìn)行漏洞規(guī)則的檢測(cè),由于靜態(tài)分析的約束,該系統(tǒng)會(huì)存在一定程度的誤報(bào)。2014年,Shao等[4]建立Android應(yīng)用程序的密碼學(xué)誤用模型,并實(shí)現(xiàn)了動(dòng)靜結(jié)合的分析系統(tǒng)CMA(crypto misuse analyzer)[4],該系統(tǒng)首先對(duì)Android應(yīng)用程序做靜態(tài)分析還原控制流圖和密碼函數(shù)調(diào)用圖,以此指導(dǎo)應(yīng)用程序的動(dòng)態(tài)執(zhí)行,并生成運(yùn)行日志,在此基礎(chǔ)上進(jìn)行密碼學(xué)安全性分析。李勇等[5]則以靜態(tài)程序掃描和動(dòng)態(tài)跟蹤分析為技術(shù)支撐。實(shí)現(xiàn)了面向iOS應(yīng)用的密碼學(xué)分析系統(tǒng)iCryptoTracer,該系統(tǒng)僅針對(duì)密碼學(xué)漏洞中的敏感數(shù)據(jù)泄露一類(lèi)問(wèn)題。除此之外,文獻(xiàn)[6~9]也分別從靜態(tài)程序分析和動(dòng)態(tài)數(shù)據(jù)跟蹤角度進(jìn)行了分析研究。第二類(lèi)工具則是以漏洞挖掘中的Fuzzing技術(shù)為支撐。例如,POET(padding oracle exploitation tool)系統(tǒng)[10]通過(guò)Fuzzing技術(shù)對(duì)Web應(yīng)用的Padding Oracle攻擊進(jìn)行自動(dòng)化檢測(cè);FIAT[11]利用Fault Injection技術(shù)對(duì)密碼設(shè)備進(jìn)行安全性檢測(cè);2017年的Black Hat會(huì)議上,Aumasson等[12]提出通過(guò)Differential Fuzzing技術(shù)來(lái)檢測(cè)加密應(yīng)用程序的安全性,并實(shí)現(xiàn)了自動(dòng)化檢測(cè)工具CDF(crypto differential fizzing)。

        從上述研究現(xiàn)狀中可知,雖然現(xiàn)階段的密碼學(xué)應(yīng)用安全性漏洞檢測(cè)已經(jīng)取得了一定的研究成果,但其針對(duì)的目標(biāo)問(wèn)題相對(duì)單一、分散,沒(méi)有專(zhuān)門(mén)針對(duì)密鑰安全性的檢測(cè)方案,且目前還沒(méi)有完善的針對(duì)Windows平臺(tái)應(yīng)用程序的密碼學(xué)應(yīng)用安全性檢測(cè)技術(shù)。

        本文以Windows平臺(tái)的CryptoAPI加密應(yīng)用程序?yàn)檠芯繉?duì)象,提出一種基于動(dòng)態(tài)二進(jìn)制插樁的密鑰安全性檢測(cè)方法。首先,對(duì)CVE信息庫(kù)中的密鑰安全性漏洞的成因機(jī)理進(jìn)行分類(lèi)分析;然后,分析CryptoAPI的3種密鑰應(yīng)用模式及其潛在安全性漏洞;最后,利用動(dòng)態(tài)二進(jìn)制插樁技術(shù)提取加解密過(guò)程信息,以此為基礎(chǔ)設(shè)計(jì)關(guān)聯(lián)性漏洞檢測(cè)算法,實(shí)現(xiàn)對(duì)密鑰安全性檢測(cè)。利用上述方法,檢測(cè)出在通信軟件RTX中存在著可預(yù)測(cè)的不安全密鑰的漏洞,該漏洞會(huì)造成聊天信息的泄露。

        2 密鑰安全性漏洞分類(lèi)

        密碼學(xué)漏洞是一類(lèi)特殊的軟件漏洞,通常會(huì)造成中間人攻擊、旁路攻擊和暴力破解攻擊等[13]危害,對(duì)軟件安全、數(shù)據(jù)保密構(gòu)成威脅,而由于密鑰安全性導(dǎo)致的密碼學(xué)漏洞更是威脅巨大,通常會(huì)造成嚴(yán)重的隱私數(shù)據(jù)泄露。本文對(duì)NVD(national vulnerability database)中2011年~2016年期間CVE信息庫(kù)中的密碼學(xué)漏洞進(jìn)行統(tǒng)計(jì)分析,結(jié)果如圖1所示。

        圖1 2011年~2016年NVD中密碼學(xué)漏洞數(shù)量變化

        為研究密鑰安全性漏洞的成因,本文進(jìn)一步從上述統(tǒng)計(jì)的密碼學(xué)漏洞中提取出與密鑰相關(guān)的127條漏洞記錄,對(duì)造成密鑰安全性漏洞的機(jī)理進(jìn)行分析,并依據(jù)其機(jī)理進(jìn)行分類(lèi)與統(tǒng)計(jì),結(jié)果如下所示。

        1) 密鑰自身為弱密鑰而導(dǎo)致的安全漏洞

        Key-Weak-Insecure密鑰的安全屬性沒(méi)有達(dá)到安全需求,包括密鑰長(zhǎng)度、密鑰強(qiáng)度等。例如CVE-2012-0655漏洞,蘋(píng)果操作系統(tǒng)MacOS的libsecurity庫(kù)沒(méi)有合理限定X.509證書(shū)中的RSA密鑰長(zhǎng)度,從而導(dǎo)致密鑰存在安全性缺陷。

        Key-Weak-Randomless密鑰未經(jīng)隨機(jī)數(shù)生成器處理,不具有足夠的隨機(jī)性,如直接取自字符串等方式都會(huì)導(dǎo)致此類(lèi)漏洞。例如CVE-2012- 4366,Belkin無(wú)線(xiàn)路由器基于WAN MAC地址的8 bit數(shù)字產(chǎn)生密碼,導(dǎo)致此類(lèi)漏洞。

        Key-Weak-UnsafeRNG密鑰經(jīng)過(guò)隨機(jī)數(shù)生成器的處理,但隨機(jī)數(shù)生成器自身存在安全缺陷。此類(lèi)漏洞有CVE-2013-4442和CVE-2016-1618等。

        Key-Weak-Predicable密鑰可以被預(yù)測(cè)或產(chǎn)生密鑰的隨機(jī)數(shù)種子可預(yù)測(cè),包括無(wú)種子、固定種子、順序/時(shí)間種子以及種子復(fù)用等情況。CVE- 2011-0766、CVE-2012-2681和CVE-2013-5180都屬于此類(lèi)漏洞。

        2) 密鑰應(yīng)用過(guò)程不當(dāng)而導(dǎo)致的安全漏洞

        Key-ImproperUse-Reuse不安全復(fù)用了密鑰,包括同一用戶(hù)不安全復(fù)用了自身的密鑰以及不同用戶(hù)之間復(fù)用了相同的密鑰等情況。例如在CVE-2016-2364漏洞中,Chrome插件HUDweb在不同的安裝用戶(hù)之間使用了相同的私鑰,就屬于此類(lèi)漏洞。

        Key-ImproperUse-Hardcoded密鑰被硬編碼在程序中,造成密鑰可以被直接獲取。CVE-2015-4080漏洞中AES密鑰和CVE-2015-3960漏洞中RSA私鑰都存在此類(lèi)漏洞。

        Key-ImproperUse-Exposed密鑰的存儲(chǔ)、傳輸?shù)冗^(guò)程處理不當(dāng),造成密鑰敏感信息泄露。存儲(chǔ)不當(dāng)導(dǎo)致的安全漏洞如CVE-2014-0199,傳輸不當(dāng)導(dǎo)致的安全漏洞如CVE-2011-2223。

        圖2是不同類(lèi)型的密鑰安全性漏洞的數(shù)量統(tǒng)計(jì)。從整體上看,應(yīng)用過(guò)程的安全漏洞數(shù)量共67個(gè),由弱密鑰導(dǎo)致的漏洞有60個(gè),前者要略高于后者。針對(duì)具體的漏洞類(lèi)型,密鑰敏感信息泄露類(lèi)型的漏洞所占比重最高,由于密碼機(jī)制的復(fù)雜性,造成密鑰敏感信息泄露的原因多種多樣,例如CVE-2015-3322漏洞是Lenovo ThinkServer RD350等系列服務(wù)器由于采用了弱算法來(lái)加密存儲(chǔ)用戶(hù)與管理員的BIO密碼而導(dǎo)致密鑰泄露;CVE-2011-2483漏洞是由于未能正確處理8 bit特征從而導(dǎo)致密鑰泄露。此類(lèi)漏洞的成因復(fù)雜,要實(shí)現(xiàn)對(duì)此類(lèi)漏洞的檢測(cè)相對(duì)困難。在統(tǒng)計(jì)結(jié)果中,與隨機(jī)數(shù)、隨機(jī)數(shù)種子相關(guān)的3類(lèi)漏洞Key-Weak- Randomless、Key-Weak-UnsafeRNG、Key-Weak- Predicable共占總漏洞數(shù)的35%,由此可見(jiàn),隨機(jī)性缺陷是引發(fā)密鑰安全漏洞的一個(gè)重要因素。

        圖2 密鑰安全性漏洞機(jī)理的分類(lèi)統(tǒng)計(jì)

        3 CryptoAPI密碼機(jī)制分析

        在密碼學(xué)的現(xiàn)實(shí)應(yīng)用中,應(yīng)用程序通過(guò)調(diào)用各類(lèi)密碼算法庫(kù)來(lái)實(shí)現(xiàn)隱私數(shù)據(jù)的保護(hù)、安全的數(shù)據(jù)通信。CryptoAPI是目前應(yīng)用最為廣泛的密碼庫(kù)之一,是微軟針對(duì)Win32平臺(tái)的應(yīng)用程序,為開(kāi)發(fā)者提供了豐富的編程接口,包括數(shù)據(jù)加解密、散列計(jì)算、數(shù)字簽名和證書(shū)管理等功能,這些功能函數(shù)為應(yīng)用軟件的開(kāi)發(fā)提供了極大的便利。從勒索軟件WannaCry[14]到通信軟件FeiQ,都采用CryptoAPI來(lái)實(shí)現(xiàn)安全的數(shù)據(jù)加解密過(guò)程。

        在CryptoAPI的機(jī)制中,真正實(shí)現(xiàn)加解密操作的是獨(dú)立的模塊,全稱(chēng)為加密服務(wù)提供者(CSP, cryptographic service provider),每個(gè)CSP有自己的密鑰數(shù)據(jù)庫(kù),統(tǒng)一管理加解密過(guò)程中的會(huì)話(huà)密鑰、公私鑰對(duì)。本文在對(duì)CryptoAPI密鑰機(jī)制分析的基礎(chǔ)上,結(jié)合對(duì)大量樣本中CryptoAPI調(diào)用信息的分析,提取出在實(shí)際應(yīng)用軟件中,密鑰的3種主要應(yīng)用模式,圖3為3種模式對(duì)應(yīng)的密碼函數(shù)流程。

        圖3 CryptoAPI 3種密鑰應(yīng)用模式

        模式一 通過(guò)調(diào)用接口函數(shù)在CSP內(nèi)部產(chǎn)生

        模式一的核心函數(shù)是CryptGenKey,通過(guò)傳入CSP句柄和相關(guān)標(biāo)志位參數(shù),在CSP內(nèi)部生成指定算法的密鑰,返回給用戶(hù)密鑰句柄。此密鑰句柄是不透明的,即用戶(hù)無(wú)法通過(guò)密鑰句柄直接訪(fǎng)問(wèn)密鑰的內(nèi)容,只能利用此句柄進(jìn)行加解密操作。密鑰句柄的不透明特性,降低了密鑰泄露的風(fēng)險(xiǎn),在一定程度上提高了CryptoAPI體制的密鑰安全性。

        模式二 通過(guò)散列值派生出會(huì)話(huà)密鑰

        模式二將散列運(yùn)算引入到密鑰的生成過(guò)程中,其具體的調(diào)用模式如下:首先CryptCreateHash申請(qǐng)散列算法句柄,然后通過(guò)CryptHashData傳入要進(jìn)行散列計(jì)算的散列對(duì)象,最后通過(guò)CryptDeriveKey從散列運(yùn)算結(jié)果中派生出指定算法的會(huì)話(huà)密鑰,并返回密鑰句柄。

        模式三 通過(guò)接口函數(shù)從外部導(dǎo)入到CSP中

        CryptoAPI提供了CryptImportKey和Crypt- ExportKey 2個(gè)接口函數(shù)完成密鑰的導(dǎo)入導(dǎo)出操作。在對(duì)海量樣本的分析中發(fā)現(xiàn),應(yīng)用程序會(huì)事先通過(guò)模式一或模式二生成密鑰,然后通過(guò)CryptExportKey將密鑰以Blob形式導(dǎo)出并保存。在軟件真正執(zhí)行過(guò)程中,直接通過(guò)CryptImportKey將事先存儲(chǔ)的密鑰Blob導(dǎo)入到CSP中,供應(yīng)用程序使用。

        3種密鑰應(yīng)用模式分別存在不同類(lèi)型的密鑰安全性漏洞。針對(duì)模式一,密鑰在CryptGenKey函數(shù)內(nèi)部生成,開(kāi)發(fā)者無(wú)法自行指定密鑰也無(wú)法干預(yù)密鑰的內(nèi)部生成過(guò)程,保證了密鑰的安全性。但是,傳入的參數(shù)dwFlags標(biāo)志位必須滿(mǎn)足對(duì)應(yīng)密碼算法的安全需求,否則會(huì)導(dǎo)致弱密鑰的安全性漏洞,這種類(lèi)型的漏洞在現(xiàn)實(shí)應(yīng)用中的數(shù)量較少。對(duì)此類(lèi)安全性漏洞進(jìn)行檢測(cè),需要提取應(yīng)用程序動(dòng)態(tài)執(zhí)行時(shí)CryptGenKey的dwFlags參數(shù),然后對(duì)參數(shù)進(jìn)行條件檢查。在模式二中,進(jìn)行散列計(jì)算的散列對(duì)象和散列算法將直接影響到密鑰的安全性。與散列相關(guān)的密鑰安全性漏洞出現(xiàn)較多,常見(jiàn)的漏洞有:每次散列計(jì)算的散列對(duì)象為固定值導(dǎo)致密鑰可預(yù)測(cè);散列計(jì)算的散列對(duì)象為數(shù)字和字母組合的簡(jiǎn)單字符串,且散列算法為MD5等已被證實(shí)是不安全的算法時(shí),導(dǎo)致生成弱密鑰。散列函數(shù)應(yīng)用廣泛,除了派生密鑰外,還用于完整性檢驗(yàn)、簽名與驗(yàn)簽等,而單一密碼函數(shù)的參數(shù)檢查無(wú)法實(shí)現(xiàn)對(duì)此類(lèi)安全漏洞的檢測(cè),為此下文引入關(guān)聯(lián)性檢測(cè),即對(duì)多個(gè)彼此存在關(guān)聯(lián)關(guān)系的密碼函數(shù)及其參數(shù)進(jìn)行聯(lián)合檢查,從而實(shí)現(xiàn)漏洞檢測(cè)。在模式三中最大的安全威脅是:一旦密鑰Blob處理不當(dāng),就會(huì)造成密鑰泄露。比如直接將會(huì)話(huà)密鑰的Blob明文硬編碼在應(yīng)用程序中,或者Blob未經(jīng)安全加密處理就進(jìn)行本地存儲(chǔ)或網(wǎng)絡(luò)發(fā)送,都會(huì)造成嚴(yán)重的密鑰信息泄露,屬于密鑰應(yīng)用過(guò)程不當(dāng)而導(dǎo)致的漏洞。對(duì)于這類(lèi)漏洞的檢測(cè),則需要借助動(dòng)態(tài)污點(diǎn)分析技術(shù)[15],跟蹤密鑰Blob的數(shù)據(jù)流,包括正向跟蹤C(jī)ryptExportKey導(dǎo)出密鑰Blob的流向和逆向追蹤C(jī)ryptImportKey導(dǎo)入密鑰Blob的來(lái)源。

        基于以上分析,CryptoAPI應(yīng)用程序主要存在Key-Weak-Insecure和Key-Weak-Predicable兩類(lèi)弱密鑰漏洞,本文接下來(lái)將圍繞這兩類(lèi)密鑰安全性漏洞進(jìn)行檢測(cè)。檢測(cè)的工作包含2個(gè)環(huán)節(jié):1) 設(shè)計(jì)準(zhǔn)確、高效的密鑰安全性檢測(cè)規(guī)則和檢測(cè)算法;2) 通過(guò)本節(jié)的分析形成密碼函數(shù)知識(shí)庫(kù),指導(dǎo)加解密過(guò)程信息的提取。

        4 密鑰安全性檢測(cè)

        4.1 檢測(cè)規(guī)則的形式化描述

        密鑰安全性檢測(cè)需要對(duì)加解密過(guò)程信息進(jìn)行規(guī)則檢測(cè),本節(jié)設(shè)計(jì)了能夠?qū)γ艽a函數(shù)、參數(shù)等信息進(jìn)行規(guī)則檢測(cè)的形式化描述方法。

        定義1 加解密過(guò)程

        加解密過(guò)程表示為軟件動(dòng)態(tài)執(zhí)行的密碼函數(shù)調(diào)用序列1,2,···, f,其中f表示為在第個(gè)時(shí)刻的密碼函數(shù)調(diào)用信息。每個(gè)f定義為三元組{},其中表示密碼函數(shù)調(diào)用點(diǎn)地址,表示調(diào)用的密碼函數(shù)名稱(chēng),為參數(shù)集合{P|?},表示密碼函數(shù)調(diào)用的參數(shù)信息。

        定義2 安全性漏洞檢測(cè)規(guī)則

        面向加解密過(guò)程的安全性漏洞檢測(cè)規(guī)則分為原子規(guī)則和復(fù)合規(guī)則。原子規(guī)則定義為三元組{},其中表示密碼函數(shù)名稱(chēng),表示觸發(fā)因子,表示關(guān)聯(lián)因子。復(fù)合規(guī)則定義為原子規(guī)則的組合。

        定義3 觸發(fā)因子

        觸發(fā)因子定義為集合{<P,C>|?},其中P表示所要檢測(cè)的參數(shù),C表示安全性漏洞觸發(fā)條件。觸發(fā)因子表示對(duì)密碼函數(shù)的特定參數(shù)進(jìn)行相應(yīng)的條件檢查,如果符合條件則表示激活觸發(fā)因子,滿(mǎn)足了此條安全性漏洞檢測(cè)的原子規(guī)則。

        定義4 關(guān)聯(lián)因子

        對(duì)于密碼函數(shù)的分析發(fā)現(xiàn),密碼函數(shù)的調(diào)用呈現(xiàn)關(guān)聯(lián)性特征,即為實(shí)現(xiàn)一個(gè)復(fù)雜的密碼學(xué)功能,需要由多個(gè)彼此關(guān)聯(lián)的密碼函數(shù)協(xié)同完成,而這多個(gè)密碼函數(shù)間通過(guò)特定的數(shù)據(jù)對(duì)象傳遞信息。圖4所示是一次CryptoAPI的加密操作,這是一種以句柄和句柄指針為媒介彼此關(guān)聯(lián)、傳遞信息的方式。另外一種關(guān)聯(lián)關(guān)系則是不同密碼算法在參數(shù)取值上存在相等關(guān)系。因此,有的安全性漏洞需要多個(gè)彼此關(guān)聯(lián)的原子規(guī)則共同作用才會(huì)觸發(fā),對(duì)于此類(lèi)安全性漏洞的檢測(cè),需要進(jìn)行復(fù)合規(guī)則的檢查,而復(fù)合規(guī)則內(nèi)的原子規(guī)則通過(guò)特定的關(guān)聯(lián)因子彼此連接。

        圖4 CryptoAPI加密示例

        關(guān)聯(lián)因子定義為三元組{,,},其中表示源關(guān)聯(lián)對(duì)象,表示與之相關(guān)聯(lián)規(guī)則的目標(biāo)密碼函數(shù)名稱(chēng),表示目標(biāo)密碼函數(shù)的目標(biāo)關(guān)聯(lián)對(duì)象。

        通過(guò)上述定義,實(shí)現(xiàn)對(duì)安全性漏洞檢測(cè)規(guī)則的形式化描述,且該檢測(cè)規(guī)則具有良好的通用性和擴(kuò)展性,不局限于對(duì)CryptoAPI的密鑰安全性漏洞檢測(cè)。將形式化的檢測(cè)規(guī)則映射到XML規(guī)則描述文件中,分析程序參照規(guī)則文件對(duì)加解密過(guò)程信息進(jìn)行規(guī)則檢測(cè),下面給出針對(duì)每條規(guī)則的安全性漏洞檢測(cè)算法。

        算法1 安全性漏洞檢測(cè)算法

        輸入:動(dòng)態(tài)提取的加解密過(guò)程信息1,2,···, f,檢測(cè)規(guī)則

        輸出:漏洞類(lèi)型及漏洞點(diǎn)的密碼函數(shù)、參數(shù)信息

        算法開(kāi)始

        1) 依次從加解密過(guò)程信息中讀取一條密碼函數(shù)調(diào)用信息f,根據(jù)檢測(cè)規(guī)則進(jìn)行檢查。如果是原子規(guī)則,則執(zhí)行2);如果是復(fù)合規(guī)則,則執(zhí)行3)。

        2) 首先,判斷是否匹配,檢查觸發(fā)因子是否匹配。若兩者均匹配,說(shuō)明滿(mǎn)足此安全性缺陷檢測(cè)的原子規(guī)則,輸出漏洞信息,然后轉(zhuǎn)到1)進(jìn)入下一次檢查。如果不匹配,則直接轉(zhuǎn)到1)進(jìn)行下一次檢查。

        3) 從復(fù)合規(guī)則中依次取出一條原子規(guī)則,進(jìn)行原子規(guī)則的檢查。如果匹配,則執(zhí)行4);否則轉(zhuǎn)到1)進(jìn)入下一次檢查。

        4) 檢查此條原子規(guī)則的關(guān)聯(lián)因子。如果非空,則根據(jù)關(guān)聯(lián)因子從加解密過(guò)程信息中搜索與之匹配的關(guān)聯(lián)信息f,如果找到關(guān)聯(lián)信息f,則以f為輸入轉(zhuǎn)到3)進(jìn)行復(fù)合規(guī)則的下一條原子規(guī)則檢查;如果未找到關(guān)聯(lián)記錄,則表明復(fù)合規(guī)則檢查不通過(guò),轉(zhuǎn)到1)進(jìn)入下一次檢查。如果為空,則表明已完成復(fù)合規(guī)則的檢查,輸出漏洞信息,轉(zhuǎn)到1)進(jìn)入下一次檢查。

        算法結(jié)束

        4.2 基于規(guī)則的密鑰安全性檢測(cè)

        下面針對(duì)要檢測(cè)的Key-Weak-Insecure和Key-Weak-Predicable兩類(lèi)密鑰安全性漏洞,用定義的形式化語(yǔ)言描述其檢測(cè)規(guī)則。

        漏洞1 Key-Weak-Insecure

        漏洞1在CryptoAPI的應(yīng)用中有3種具體表現(xiàn)形式。1) 在調(diào)用CryptGenKey函數(shù)生成指定算法密鑰時(shí),dwFlags參數(shù)的高位16 bit指明密鑰的長(zhǎng)度信息,如果不能正確通過(guò)參數(shù)指定長(zhǎng)度信息,便會(huì)導(dǎo)致生成弱密鑰。2) 針對(duì)于密鑰導(dǎo)入和導(dǎo)出函數(shù)而言,pbData參數(shù)指向密鑰Blob數(shù)據(jù),Blob具有特定的格式規(guī)范,其包含有算法標(biāo)志、密鑰長(zhǎng)度、密鑰數(shù)據(jù)等數(shù)據(jù)成員,因此需要檢測(cè)Blob是否為弱密鑰。3) 在以散列值派生密鑰的模式中,當(dāng)散列運(yùn)算的對(duì)象為數(shù)字和字母組合的簡(jiǎn)單字符串且散列算法為MD5等已被證實(shí)是不安全的算法時(shí),其派生的密鑰則被認(rèn)為是不安全的弱密鑰。漏洞1對(duì)應(yīng)的檢測(cè)規(guī)則如下所示,其中1、2、3為原子規(guī)則,4為復(fù)合規(guī)則。

        漏洞2 Key-Weak-Predicable

        在散列值派生密鑰的過(guò)程中,如果密鑰種子參數(shù)為固定種子,則認(rèn)為其派生的密鑰是可預(yù)測(cè)的不安全密鑰。此漏洞檢測(cè)規(guī)則如下所示。

        5 加解密過(guò)程信息的動(dòng)態(tài)提取

        加解密過(guò)程信息的提取是密鑰安全性檢測(cè)的基礎(chǔ),本文通過(guò)動(dòng)態(tài)二進(jìn)制插樁技術(shù)提取應(yīng)用程序動(dòng)態(tài)執(zhí)行時(shí)的加解密過(guò)程信息,最終實(shí)現(xiàn)動(dòng)態(tài)信息提取與離線(xiàn)規(guī)則檢測(cè)相結(jié)合的密鑰安全性檢測(cè)方法。圖5所示為動(dòng)態(tài)信息提取的框架,利用動(dòng)態(tài)二進(jìn)制平臺(tái),監(jiān)控應(yīng)用程序調(diào)用密碼算法庫(kù)的過(guò)程,按照函數(shù)參數(shù)庫(kù)提取動(dòng)態(tài)執(zhí)行過(guò)程中的API名稱(chēng)、返回值和輸入輸出參數(shù)等信息,并最終形成完整的加解密過(guò)程信息。

        動(dòng)態(tài)二進(jìn)制插樁(DBI,dynamic binary instrumentation)技術(shù)[16]指在不影響程序動(dòng)態(tài)執(zhí)行結(jié)果的前提下,按照用戶(hù)的分析需求,在程序執(zhí)行過(guò)程中插入特定分析代碼,實(shí)現(xiàn)對(duì)程序動(dòng)態(tài)執(zhí)行過(guò)程的監(jiān)控與分析。目前,應(yīng)用廣泛的動(dòng)態(tài)二進(jìn)制分析平臺(tái)有Pin[17]、DynamoRIO[18]和Valgrind[19]等。其中Intel公司的Pin平臺(tái)提供了豐富的編程接口,開(kāi)發(fā)者可以通過(guò)調(diào)用編程接口方便地獲取程序動(dòng)態(tài)執(zhí)行期間的指令、內(nèi)存和寄存器等信息,實(shí)現(xiàn)細(xì)粒度的動(dòng)態(tài)監(jiān)控,因此本文選取Pin平臺(tái)進(jìn)行動(dòng)態(tài)分析。

        圖5 動(dòng)態(tài)監(jiān)控記錄的框架

        Pin提供了指令、基本塊和系統(tǒng)調(diào)用等多個(gè)層次插樁分析,其中,RTN是函數(shù)級(jí)的插樁機(jī)制,能夠自動(dòng)識(shí)別API函數(shù);Trace是軌跡層次的插樁機(jī)制,能夠自動(dòng)識(shí)別單一入口、多出口的指令軌跡塊。本文通過(guò)RTN插樁和Trace插樁的結(jié)合,實(shí)現(xiàn)對(duì)CryptoAPI動(dòng)態(tài)調(diào)用信息的獲取。

        算法2 加解密過(guò)程信息動(dòng)態(tài)提取算法

        輸入 加密應(yīng)用程序

        輸出 加解密過(guò)程信息1,2,···, f

        RTN插樁模塊

        1) 監(jiān)控每一次API調(diào)用,判斷是否滿(mǎn)足兩個(gè)條件:是否是需要分析的密碼函數(shù),是否是來(lái)自用戶(hù)空間的函數(shù)調(diào)用。若滿(mǎn)足條件則執(zhí)行2),否則不處理。

        2) 更新為當(dāng)前密碼函數(shù)調(diào)用的返回地址。

        3) 依據(jù)函數(shù)參數(shù)庫(kù),獲取當(dāng)前動(dòng)態(tài)執(zhí)行狀態(tài)的密碼函數(shù)輸入?yún)?shù)信息。

        Trace插樁模塊

        1) 攔截Trace軌跡,判斷當(dāng)前指令的地址空間,如果位于用戶(hù)空間,則執(zhí)行步驟2);否則不處理。

        2) 獲取Trace軌跡的入口指令的地址,與當(dāng)前狀態(tài)的匹配。若相等,則說(shuō)明識(shí)別出當(dāng)前動(dòng)態(tài)執(zhí)行的狀態(tài)是對(duì)應(yīng)密碼函數(shù)的返回,此時(shí)清空并轉(zhuǎn)到步驟3);否則不處理。

        3) 依據(jù)函數(shù)參數(shù)庫(kù),獲取當(dāng)前動(dòng)態(tài)執(zhí)行狀態(tài)的密碼函數(shù)輸出參數(shù)信息、返回值信息。

        6 測(cè)試分析

        6.1 功能測(cè)試

        為驗(yàn)證基于動(dòng)態(tài)二進(jìn)制插樁的密鑰安全性檢測(cè)方法的正確性和有效性,本文針對(duì)Key-Weak- Insecure和Key-Weak-Predicable兩類(lèi)密鑰安全性漏洞,選取1 000個(gè)包含CryptoAPI調(diào)用信息的樣本進(jìn)行測(cè)試分析,測(cè)試環(huán)境:Win7 x64操作系統(tǒng),Intel i7處理器,16 GB內(nèi)存,2 T硬盤(pán),Pin 2.14-71313 動(dòng)態(tài)二進(jìn)制平臺(tái)。

        測(cè)試結(jié)果中,存在漏洞的樣本比例達(dá)到6%,其中Key-Weak-Insecure類(lèi)漏洞有5個(gè),Key- Weak-Predicable類(lèi)漏洞有55個(gè),前者遠(yuǎn)少于后者,這也說(shuō)明在實(shí)際CryptoAPI應(yīng)用程序中更易發(fā)生由于密鑰種子問(wèn)題而導(dǎo)致密鑰可預(yù)測(cè)的漏洞。對(duì)于存在密鑰安全性漏洞的樣本而言,其漏洞造成的實(shí)際危害取決于具體的加解密過(guò)程。下面以RTX(騰訊通 2015)為例進(jìn)行詳細(xì)的分析說(shuō)明。

        RTX是騰訊公司推出的企業(yè)級(jí)即時(shí)通信平臺(tái),提供消息發(fā)送、文本傳輸?shù)榷喾N辦公功能。通過(guò)RTX提供的服務(wù)器和客戶(hù)端軟件,部署搭建測(cè)試環(huán)境,然后對(duì)客戶(hù)端的登錄、消息發(fā)送等過(guò)程進(jìn)行檢測(cè)分析,結(jié)果如表1所示。

        表1 RTX的檢測(cè)結(jié)果

        檢測(cè)結(jié)果表明在sqlite3.dll的派生密鑰過(guò)程中,傳入的密鑰種子參數(shù)為固定的字符串“RTX!”,從而導(dǎo)致產(chǎn)生可預(yù)測(cè)的不安全密鑰,且該密鑰對(duì)于不同RTX用戶(hù)而言是相同的。為了對(duì)檢測(cè)結(jié)果進(jìn)行驗(yàn)證,手動(dòng)對(duì)RTX進(jìn)行逆向分析,圖6所示為密鑰派生過(guò)程的反編譯代碼片段,代碼顯示通過(guò)對(duì)“RTX!”字符串進(jìn)行MD5計(jì)算派生出RC4算法密鑰,證實(shí)了檢測(cè)結(jié)果的準(zhǔn)確性。

        圖6 反編譯代碼片段

        為了研究此漏洞會(huì)帶來(lái)的危害,進(jìn)一步對(duì)加解密過(guò)程及通信機(jī)制進(jìn)行逆向分析,跟蹤不安全密鑰的應(yīng)用過(guò)程。通過(guò)分析發(fā)現(xiàn),聊天信息的發(fā)送首先調(diào)用Crypt.dll的oi_symmetry_encrypt2函數(shù)進(jìn)行對(duì)稱(chēng)加密,而該函數(shù)是RTX自實(shí)現(xiàn)并封裝的TEA算法,聊天信息的發(fā)送過(guò)程并未用到上述不安全密鑰。但是在信息發(fā)送之后,RTX會(huì)利用不安全密鑰對(duì)聊天信息進(jìn)行RC4加密,并將密文存儲(chǔ)到本地文件。

        根據(jù)不安全密鑰編寫(xiě)逆向解密過(guò)程,對(duì)本地的密文文件進(jìn)行解密,圖7所示為一段解密后的明文片段,包括聊天信息和字體信息等內(nèi)容。由于不安全密鑰在不同用戶(hù)間是相同的,因此會(huì)導(dǎo)致本地加密存儲(chǔ)的聊天信息可以被任何人解密,造成聊天信息泄露,是一種較為嚴(yán)重的隱私泄露。

        6.2 性能對(duì)比分析

        將本文方法與現(xiàn)有的典型工具從技術(shù)手段和目標(biāo)漏洞類(lèi)型2個(gè)角度進(jìn)行對(duì)比分析,結(jié)果如表2所示。

        通過(guò)表2中的數(shù)據(jù)可以看出,相較于CryptoLint而言,本文所采用的動(dòng)態(tài)分析方法準(zhǔn)確更高;CMA和iCryptoTracer具有動(dòng)靜結(jié)合的混合分析優(yōu)勢(shì),但是iCryptoTracer僅針對(duì)單一的敏感數(shù)據(jù)泄露問(wèn)題,CMA檢測(cè)的密碼學(xué)誤用相對(duì)簡(jiǎn)單,不能實(shí)現(xiàn)復(fù)雜問(wèn)題的深度檢測(cè),而本文對(duì)密鑰安全性的檢測(cè)顯然更加深入、全面;POET、FIAT和CDF均采用了Fuzzing技術(shù)做支撐,但它們面向的目標(biāo)漏洞類(lèi)型僅針對(duì)特定類(lèi)別的攻擊或漏洞,而本文的方法能夠覆蓋整個(gè)密鑰安全性漏洞的檢測(cè)。另一方面,本文對(duì)檢測(cè)規(guī)則的形式化描述方法通用性強(qiáng),可以進(jìn)一步應(yīng)用于數(shù)據(jù)加解密過(guò)程的其他安全性檢測(cè)。

        7 結(jié)束語(yǔ)

        本文首先對(duì)CryptoAPI密碼機(jī)制進(jìn)行分析,然后給出了密鑰安全性檢測(cè)規(guī)則的形式化描述,最后討論了基于動(dòng)態(tài)二進(jìn)制插樁的密鑰安全性檢測(cè)方法。實(shí)驗(yàn)測(cè)試表明,本文的方法對(duì)于CryptoAPI應(yīng)用程序具有很好的檢測(cè)效果,能夠正確地提取應(yīng)用程序動(dòng)態(tài)運(yùn)行時(shí)的加解密過(guò)程信息,并且在此基礎(chǔ)上能夠準(zhǔn)確地檢測(cè)加解密過(guò)程中潛在的密鑰安全性漏洞,通過(guò)與其他檢測(cè)工具之間進(jìn)行對(duì)比,體現(xiàn)了本文方法的優(yōu)越性。

        由于動(dòng)態(tài)分析的限制,當(dāng)動(dòng)態(tài)執(zhí)行沒(méi)有觸發(fā)加解密函數(shù)時(shí),就無(wú)法獲取加解密過(guò)程信息進(jìn)行安全性檢測(cè)。提高動(dòng)態(tài)分析的路徑覆蓋率,需要以樣本的完整性分析技術(shù)為支撐,能夠?qū)崿F(xiàn)環(huán)境感知、敏感分支點(diǎn)識(shí)別判斷,尤其在惡意代碼分析領(lǐng)域,其采用的反檢測(cè)、反調(diào)試等技術(shù)手段,使行為分析缺乏完整性,加解密行為無(wú)法被激發(fā)。針對(duì)樣本的完整性分析是當(dāng)前研究的一大熱點(diǎn)、難點(diǎn)問(wèn)題。

        圖7 密文文件解密片段

        表2 各種工具從技術(shù)手段和目標(biāo)漏洞類(lèi)型角度進(jìn)行分析結(jié)果對(duì)比

        [1] 段鋼.加密與解密(第三版)[M].北京:電子工業(yè)出版社,2008. DUAN G. Encryption and decryption(Third Edition)[M]. Beijing: Electronic Industry Press,2008.

        [2] 李舟軍, 張俊賢, 廖湘科,等. 軟件安全漏洞檢測(cè)技術(shù)[J]. 計(jì)算機(jī)學(xué)報(bào), 2015, 38(4):717-732.

        LI Z J,ZHANG J X,LIAO X K,et al.Software security vulnerability detection technology[J].Chinese Journal of Computers,2015, 38(4): 717-732.

        [3] EGELE M, BRUMLEY D, FRATANTONIO Y, et al. An empirical study of cryptographic misuse in android applications[C]// ACM Sigsac Conference on Computer & Communications Security. 2013:73-84.

        [4] SHAO S, DONG G, GUO T, et al. Modelling analysis and auto-detection of cryptographic misuse in android applications[C]// IEEE International Conference on Dependable, Autonomic and Secure Computing. 2014:75-80.

        [5] LI Y, ZHANG Y, LI J, et al. iCryptoTracer: Dynamic Analysis on Misuse of Cryptography Functions in iOS Applications[C]// International Conference on Network and System Security. 2014: 349-362.

        [6] MA S, LO D, LI T, et al. CDRep: automatic repair of cryptographic misuses in android applications[C]// ACM on Asia Conference on Computer and Communications Security.2016:711-722.

        [7] CHATZIKONSTANTINOU A, NTANTOGIAN C, KAROPOULOS G, et al. Evaluation of cryptography usage in android applications[C]// Eai International Conference on Bio-Inspired Information and Communications Technologies. 2016:83-90.

        [8] ALMEIDA J B, BARBOSA M, FILLI?TRE J C, et al. CAOVerif : an open-source deductive verification platform for cryptographic software implementations[J]. Science of Computer Programming, 2014, 91(91):216-233.

        [9] FAHL S, HARBACH M, MUDERS T, et al. Why eve and mallory love Android: an analysis of android SSL (in)security[C]// ACM Conference on Computer and Communications Security. 2012:50-61.

        [10] RIZZO J, DUONG T. Practical padding oracle attacks[C]// Usenix Conference on Offensive Technologies. 2010:1-8.

        [11] BARENGHI A, BREVEGLIERI L, KOREN I, et al. Fault injection attacks on cryptographic devices: theory, practice, and counter- measures[C]// Proceedings of the IEEE.2012:3056-3076.

        [12] Automated testing of crypto software using differential fuzzing[EB/OL].https://www.blackhat.com/docs/us-17/wednesday/us-17-Aumasson-Automated-Testing-Of-Crypto-Software-Using-Differential-Fuzzing.pdf.

        [13] LAZAR D, CHEN H, WANG X, et al. Why does cryptographic software fail? A case study and open problems[C]// Asia-Pacific Workshop. 2014:1-7.

        [14] 安天針對(duì)勒索蠕蟲(chóng)“魔窟”(WannaCry)的深度分析報(bào)告[EB/OL]. http://www.antiy.com/response/wannacry.html.

        [15] NEWSOME J, SONG D. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software[C]//Conference on NDSS. 2005.

        [16] NETHERCOTE N. Dynamic binary analysis and instrumentation or building tools is easy[D]. Trinity Lane, Cambridge: University of Cambridge. 2004.

        [17] LUK C K, COHN R, MUTH R, et al. Pin: building customized program analysis tools with dynamic instrumentation[J]. ACM Sigplan Notices, 2005, 40(6):190-200.

        [18] BRUENING D L. Efficient, transparent, and comprehensive runtime code manipulation[C]// Massachusetts Institute of Technology.2004.

        [19] NETHERCOTE N, SEWARD J. Valgrind:a framework for heavyweight dynamic binary instrumentation[C]// ACM Sigplan Conference on Programming Language Design & Implementation. 2007:89-100.

        Key security detection based on dynamic binary instrumentation

        LIN Hao, KANG Fei, GUANG Yan

        (State Key Laboratory of Mathematical Engineering and Advanced Computing, PLA Information Engineering University, Zhengzhou 450001,China)

        For the key security problem in the cryptographic software, the method of key security detection based on dynamic binary instrumentation was proposed. Aimed at CryptoAPI cryptographic software, the method firstly pointed out the potential key security vulnerabilities by analyzing the key applying patterns of CryptoAPI. Then it recorded cryptographic data information during the execution of the program dynamically using Pin platform. On this basis, a relevance vulnerability detection algorithm was designed to detect the key security. Test result indicated that it can effectively detect the two kinds of key security vulnerabilities.

        key security detection, dynamic binary instrumentation, Pin platform, CryptoAPI cryptographic software

        TP309

        A

        10.11959/j.issn.2096-109x.2017.00213

        林昊(1992-),男,山東榮成人,信息工程大學(xué)碩士生,主要研究方向?yàn)榫W(wǎng)絡(luò)信息安全。

        康緋(1972-),女,河南周口人,信息工程大學(xué)教授,主要研究方向?yàn)榫W(wǎng)絡(luò)信息安全。

        光焱(1983-),男,安徽樅陽(yáng)人,博士,信息工程大學(xué)講師,主要研究方向?yàn)槊艽a學(xué)、網(wǎng)絡(luò)信息安全。

        2017-09-14;

        2017-10-23。

        林昊,284149270@qq.com

        猜你喜歡
        加解密密碼學(xué)漏洞
        漏洞
        圖靈獎(jiǎng)獲得者、美國(guó)國(guó)家工程院院士馬丁·愛(ài)德華·海爾曼:我們正處于密鑰學(xué)革命前夕
        密碼學(xué)課程教學(xué)中的“破”與“立”
        PDF中隱私數(shù)據(jù)的保護(hù)方法
        三明:“兩票制”堵住加價(jià)漏洞
        漏洞在哪兒
        電子取證中常見(jiàn)數(shù)據(jù)加解密理論與方法研究
        基于FPGA的LFSR異步加解密系統(tǒng)
        矩陣在密碼學(xué)中的應(yīng)用
        高鐵急救應(yīng)補(bǔ)齊三漏洞
        人人妻人人狠人人爽| 99国语激情对白在线观看| 亚洲自拍偷拍一区二区三区| 日韩欧美aⅴ综合网站发布| 国产成人免费一区二区三区| 国产精品亚洲一区二区杨幂| 国产精品女人一区二区三区| 久久一本日韩精品中文字幕屁孩| 日韩欧美成人免费观看| 99精品视频免费热播| 日本视频精品一区二区| 成人免费av色资源日日| 国产精品美女久久久久av福利| 亚洲av区无码字幕中文色| 久久亚洲精彩无码天堂| 尤物精品国产亚洲亚洲av麻豆| 免费a级毛片无码a∨中文字幕下载| 精品成人乱色一区二区| 国产视频嗯啊啊啊| 久久精品国产亚洲av一般男女| 曰本女人与公拘交酡| 精品性影院一区二区三区内射| 国产精品国产三级国产三不| 白白色发布免费手机在线视频观看| 国产成+人+综合+亚洲欧美丁香花| 丰满少妇人妻无码专区| 国产高清精品在线二区| 中文字幕一区二区三区的| 国产在视频线精品视频| 中文字幕avdvd| 男人天堂亚洲一区二区| 亚洲国产成人av在线观看| 极品尤物高潮潮喷在线视频| 一区二区三区国产偷拍| 欧美精品无码一区二区三区| 成 人 免费 黄 色 视频| 久久婷婷是五月综合色狠狠| 日韩av在线亚洲女同| 国产av无码专区亚洲av蜜芽 | 亚洲免费天堂| 免费av在线 国产精品|