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

        ?

        openssl硬件引擎加解密漏洞

        2011-03-14 06:44:40趙春平凌志祥
        關(guān)鍵詞:引擎

        趙春平 凌志祥

        江南計(jì)算技術(shù)研究所 江蘇 214083

        0 引言

        openssl是一個(gè)開源的SSL協(xié)議實(shí)現(xiàn),它采用C語言作為開發(fā)語言,因此 openssl具有優(yōu)秀的跨平臺(tái)性能,并被廣泛使用。openssl支持Linux、Windows、BSD、Mac、VMS等平臺(tái),這使得openssl具有廣泛的適用性。openssl目前最新的版本是1.0.0d。 有很多系統(tǒng)都是用openssl來構(gòu)建安全的通信,比如apache的httpd中的ssl模塊、openldap等優(yōu)秀的開源軟件。

        openssl主要由三部分組成:crypto庫(kù)、ssl庫(kù)以及openssl命令。其中crypto庫(kù)中實(shí)現(xiàn)了大量的對(duì)稱算法、非對(duì)稱算法和摘要算法,并且這些算法都支持硬件引擎。

        1 openssl硬件引擎

        openssl是一個(gè)自包含的軟件,它不依賴于第三方庫(kù),它實(shí)現(xiàn)了各種軟算法。為了支持硬件以提高性能,openssl通過引擎機(jī)制來支持硬件算法。當(dāng)用戶調(diào)用上層的對(duì)稱加解密函數(shù)時(shí),如何沒有注冊(cè)對(duì)應(yīng)算法的引擎,openssl使用默認(rèn)的軟算法;當(dāng)用戶注冊(cè)了某個(gè)算法的硬件引擎時(shí),openssl將會(huì)調(diào)用該硬件引擎的算法。下面簡(jiǎn)要介紹對(duì)稱計(jì)算中,openssl如何使用硬件引擎。

        openssl的對(duì)稱計(jì)算主要crypto/evp/evp_enc.c中實(shí)現(xiàn),調(diào)用接口和主要數(shù)據(jù)結(jié)構(gòu)在evp.h中定義。對(duì)稱計(jì)算主要有兩個(gè)數(shù)據(jù)結(jié)構(gòu),如下所示:

        對(duì)稱計(jì)算調(diào)用接口主要有:

        (1)對(duì)稱計(jì)算初始化

        (2)進(jìn)行對(duì)稱計(jì)算

        (3)獲取余下的對(duì)稱計(jì)算結(jié)果

        從接口可以看出,用戶調(diào)用 openssl進(jìn)行對(duì)稱計(jì)算時(shí),主要使用的數(shù)據(jù)結(jié)構(gòu)為 EVP_CIPHER_CTX,該結(jié)構(gòu)主要包括了對(duì)稱算法信息以及硬件引擎。如果無硬件引擎,將使用軟算法。openssl進(jìn)行對(duì)稱計(jì)算時(shí),使用的是 EVP_CIPHER結(jié)構(gòu)中的 do_cipher函數(shù)指針。硬件引擎的加載是在EVP_CipherInit_ex中完成的。在EVP_CipherInit_ex的實(shí)現(xiàn)中,如果指定了對(duì)稱計(jì)算引擎,EVP_CIPHER_CTX中的cipher將指向硬件引擎所實(shí)現(xiàn)的 EVP_CIPHER,后續(xù)的update操作和final操作都將使用硬件引擎提供的函數(shù)。

        do_cipher函數(shù)對(duì)數(shù)據(jù)進(jìn)行對(duì)稱計(jì)算,其參數(shù)主要有:輸入緩沖區(qū)、輸出緩沖區(qū)以及輸入長(zhǎng)度。輸入緩沖區(qū)和輸出緩沖區(qū)可以是不同的內(nèi)存地址。該函數(shù)返回非0時(shí)表示成果,返回0表示對(duì)稱計(jì)算失敗。不過對(duì)于軟算法,基本上不可能出現(xiàn)計(jì)算失敗的情況,而如果用硬件來做對(duì)稱計(jì)算,由于硬件以及硬件接口的原因,則有可能出現(xiàn)對(duì)稱計(jì)算失敗。

        2 openssl硬件引擎加解密漏洞

        在 openssl的各個(gè) SSL協(xié)議版本實(shí)現(xiàn)中(包括當(dāng)前的1.0.0d),無論在ssl握手階段還是數(shù)據(jù)發(fā)送和接收階段,對(duì)于數(shù)據(jù)的加解密運(yùn)算都會(huì)調(diào)用函數(shù)EVP_Cipher進(jìn)行運(yùn)算(分別對(duì)應(yīng)文件d1_enc.c、s2_enc.c、s3_enc.c和t1_enc.c)。s3_enc.c中調(diào)用方式如下:

        該函數(shù)將對(duì)稱計(jì)算直接調(diào)用了do_cipher。

        在openssl運(yùn)行時(shí),該函數(shù)的輸入緩沖區(qū)rec->data與輸出緩沖區(qū) rec->input指向相同的內(nèi)存地址,并且不判斷其返回值,由此會(huì)帶來安全問題。

        特定情況下,openssl采用硬件引擎進(jìn)行ssl握手和通信時(shí),當(dāng)客戶端和服務(wù)端因?yàn)槟撤N硬件原因?qū)е录咏饷苁r(shí),由于它沒有檢查EVP_Cipher函數(shù)的返回值(硬件引擎加解密函數(shù)會(huì)有返回值,但上層并不判斷),數(shù)據(jù)的傳輸將變成明文通信。即使僅僅因?yàn)橐环接布驅(qū)е录用苁?,?dāng)前發(fā)出的數(shù)據(jù)也將是明文。SSL通信一旦變成明文通信,用戶將很難察覺。

        此漏洞雖然被利用的概率較低,但一旦出現(xiàn)上面描述的特定情況,將會(huì)帶來巨大的安全問題。

        修補(bǔ)該漏洞很簡(jiǎn)單,僅僅判斷返回值,如果出錯(cuò)立即終止SSL連接即可。

        3 漏洞的驗(yàn)證

        作者在兩臺(tái) linux操作系統(tǒng)上對(duì)該漏洞進(jìn)行了驗(yàn)證,為了便于抓包,其中一臺(tái)裝在虛擬機(jī)上。硬件引擎替換了RC4算法,并進(jìn)行了加解密故障模擬,引擎名稱為 TestEngine,openssl版本為1.0.0a。

        在服務(wù)端運(yùn)行命令:

        ./openssl s_server -CAfile demoCA/cacert.pem -ssl3 -cipher RC4-SHA -cert cert.pem -key key.pem -engine TestEngine

        在客戶端運(yùn)行命令:

        ./openssl s_client -ssl3 -cipher RC4-SHA -host 192.168. 1.24 -cipher RC4-SHA -engine TestEngine

        然后通過wireshark進(jìn)行抓包,服務(wù)端中的Hello消息如圖1所示。

        圖1 服務(wù)端中的Hello消息

        服務(wù)Hello消息表明加密使用RC4算法。

        發(fā)送的應(yīng)用數(shù)據(jù)如2所示。

        圖2 發(fā)送的應(yīng)用數(shù)據(jù)

        圖2中,傳輸?shù)臄?shù)據(jù)是明文。不僅僅傳輸?shù)臄?shù)據(jù)是明文,其他的握手?jǐn)?shù)據(jù)也是明文。

        [1] rfc2246,The TLS Protocol Version 1.0.2009.

        [2] WDKDocs_12112009.chm, windows wdk.2009.

        猜你喜歡
        引擎
        以學(xué)促干 挺膺擔(dān)當(dāng) 激活砥礪前行的紅色引擎
        江陰市“三個(gè)創(chuàng)新”打造危化品安全監(jiān)管新引擎
        新海珠,新引擎,新活力!
        消費(fèi)繼續(xù)發(fā)揮經(jīng)濟(jì)增長(zhǎng)第一引擎作用
        三生 三大引擎齊發(fā)力
        藍(lán)谷: “涉藍(lán)”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        休閑垂釣 傳統(tǒng)漁業(yè)新引擎
        信息化,“盛京”加速的新引擎
        無形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        基于Cocos2d引擎的PuzzleGame開發(fā)
        毛茸茸的中国女bbw| 亚洲av综合av一区| 国产办公室秘书无码精品99| 熟女人妻在线视频| 久久久久久久妓女精品免费影院 | 亚洲午夜久久久精品国产| 69精品国产乱码久久久| 国产尤物精品视频| 免费黄色电影在线观看| 吃下面吃胸在线看无码| 人妻在线有码中文字幕| 岛国av无码免费无禁网站| 六月丁香婷婷色狠狠久久| 无码中文字幕专区一二三| 国产麻豆一区二区三区在| 亚洲国产成人一区二区精品区 | 日韩一区二区超清视频| 久久亚洲宅男天堂网址| 国产精品久久久久久久久久红粉 | 亚洲中文字幕无码爆乳| 91亚洲人成手机在线观看| 亚洲蜜臀av一区二区三区漫画| 精品亚洲a∨无码一区二区三区| 精品欧洲av无码一区二区三区| 国产av一区二区三区丝袜| 亚洲长腿丝袜中文字幕| 人妻少妇精品无码专区| 欧美老妇与禽交| 日本av在线精品视频| 国产亚洲精品国产精品| 欧美成人免费全部| 久久婷婷色香五月综合激情| 成人国产av精品麻豆网址| 日本又色又爽又黄的a片18禁| 久久福利青草精品免费| 亚洲精品尤物av在线网站| 国产精品国产高清国产专区| 国产最新进精品视频| 亚洲无码性爱视频在线观看| 在线人妻va中文字幕| 国产特级毛片aaaaaa视频|