近年來(lái)互聯(lián)網(wǎng)上的安全事故頻發(fā),因此行業(yè)內(nèi)開(kāi)始了新的一輪對(duì)互聯(lián)網(wǎng)安全的大討論。其中已經(jīng)有20多年歷史的Http協(xié)議備受爭(zhēng)議,由于其采用明文傳輸,讓黑客有了可乘之機(jī)。但是其“安全版本”Https處理效率慢導(dǎo)致的訪問(wèn)延時(shí)則成為阻礙其推廣的一大瓶頸。近期,浪潮推出了針對(duì)Https的SSL加解密加速解決方案,使Https加解密效率提升十倍以上,保障訪問(wèn)安全的同時(shí),不會(huì)影響網(wǎng)站訪問(wèn)的效率,為打造更安全的網(wǎng)絡(luò)環(huán)境奠定基礎(chǔ)。
有天,小A接到用戶(hù)的反饋,說(shuō)是在其官網(wǎng)下載的游戲是另家公司的產(chǎn)品。當(dāng)時(shí)小A還很天真的以為是網(wǎng)站的運(yùn)營(yíng)掛錯(cuò)了鏈接,怒氣沖沖的與運(yùn)營(yíng)理論了一番,卻發(fā)現(xiàn)鏈接沒(méi)有問(wèn)題,后來(lái)以為是用戶(hù)自己下載錯(cuò)了,這件事也就過(guò)去了。但是,過(guò)了一段時(shí)間,公司內(nèi)部人員在下載時(shí)發(fā)現(xiàn)了同樣的事情!于是,內(nèi)部開(kāi)展深入調(diào)查,發(fā)現(xiàn)大概有20%左右的正常鏈接會(huì)被重定向到另一個(gè)鏈接。技術(shù)分析原因,應(yīng)該是黑客在數(shù)據(jù)出口截取下載地址,并進(jìn)行了替換。于是,公司采用了Https,以后就再未復(fù)現(xiàn)過(guò)此問(wèn)題。
其實(shí),這僅僅是危險(xiǎn)的互聯(lián)網(wǎng)中一個(gè)小小的事件,釣魚(yú)網(wǎng)站、DNS劫持、DNS污染、網(wǎng)站篡改等等都無(wú)時(shí)無(wú)刻不在發(fā)生。為何看似平靜的互聯(lián)網(wǎng)會(huì)有如此多的風(fēng)波?起因,是當(dāng)時(shí)技術(shù)能力的限制,以及對(duì)人心的信任。由于Http只是基于TCP協(xié)議的字符串明文傳輸,在不可信任的網(wǎng)絡(luò)中,這和裸奔沒(méi)有任何區(qū)別,黑客用抓包軟件可以輕易的看到網(wǎng)絡(luò)上誰(shuí)在訪問(wèn)哪個(gè)鏈接,這些瑣碎的信息則會(huì)暴露用戶(hù)的隱私。
Https:安全與性能不可兼得?
為了提升數(shù)據(jù)傳輸?shù)陌踩詥?wèn)題, Https應(yīng)運(yùn)而生。Https在HTTP下加入SSL層(安全套接層)/TLS(TLS是SSL的升級(jí)協(xié)議),HTTPS在傳輸數(shù)據(jù)之前需要客戶(hù)端(瀏覽器)與服務(wù)端(網(wǎng)站)之間進(jìn)行數(shù)次握手,在握手過(guò)程中將確立雙方加密傳輸數(shù)據(jù)的密碼信息,這樣,Https就能保障數(shù)據(jù)在傳輸過(guò)程中不被非法篡改和利用。
但是我們卻看到了一個(gè)不幸的現(xiàn)狀,為什么我們現(xiàn)在看到的大部分網(wǎng)站仍是Http開(kāi)頭?原因很多,比如會(huì)牽涉到將已有的網(wǎng)站改動(dòng)、認(rèn)證證書(shū)需要費(fèi)用等。但是阻礙大部分網(wǎng)站采用Https協(xié)議的主要原因在于,Https相比Http的延時(shí)更大。
是什么導(dǎo)致了Https延遲?
是什么導(dǎo)致了更高的延遲?http使用TCP 三次握手即可建立連接,客戶(hù)端和服務(wù)器需要交換3個(gè)包,但是https除了 TCP 的三個(gè)包,還要加上 ssl握手需要的9個(gè)包,一共是12個(gè)包。那么實(shí)際SSL握手到底需要多長(zhǎng)時(shí)間?目前有一些同時(shí)支持Http和Https的網(wǎng)站,以Computer Science House網(wǎng)站為測(cè)試范本,建立一個(gè)Http鏈接需要114毫秒,而https建立連接,則耗費(fèi)436毫秒。也就是說(shuō)Https比Http多花費(fèi)322毫秒,其中大部分是ssl 本身加解密的開(kāi)銷(xiāo)。為什么一個(gè)握手環(huán)節(jié)環(huán)節(jié)會(huì)有如此大的時(shí)間消耗?
Https工作模式圖
我們來(lái)看看,在Https建立連接前的這300多毫秒中到底發(fā)生了什么?Https的握手環(huán)節(jié)中,首先當(dāng)你的瀏覽器向服務(wù)器請(qǐng)求一個(gè)安全的網(wǎng)頁(yè)(通常是 https://),服務(wù)器就把它的證書(shū)和公匙發(fā)回來(lái),瀏覽器檢查證書(shū)是不是由可以信賴(lài)的機(jī)構(gòu)頒發(fā)的,確認(rèn)證書(shū)有效和此證書(shū)是此網(wǎng)站的。使用公鑰加密了一個(gè)隨機(jī)對(duì)稱(chēng)密鑰,包括加密的URL一起發(fā)送到服務(wù)器,服務(wù)器用自己的私匙解密了你發(fā)送的鑰匙。然后用這把對(duì)稱(chēng)加密的鑰匙給你請(qǐng)求的URL鏈接解密。服務(wù)器用你發(fā)的對(duì)稱(chēng)鑰匙給你請(qǐng)求的網(wǎng)頁(yè)加密,你也有相同的鑰匙就可以解密發(fā)回來(lái)的網(wǎng)頁(yè)了。
Tips:看著有點(diǎn)暈?那么換個(gè)形象的說(shuō)法。比如小A要和遠(yuǎn)方的女朋友B通信,而且又不想信息被其他人(比如郵遞員)獲取,那么小A先買(mǎi)一個(gè)帶鎖的箱子,但是在寄給女友B的時(shí)候不上鎖,只是把開(kāi)著的鎖放在開(kāi)著的箱子里,通過(guò)郵遞員寄給女友B。當(dāng)B收到箱子后,明白了這是小A想要傳遞秘密信息。那么B拿出了自己的另一個(gè)密碼箱,把明文信件放在這個(gè)密碼箱中,為了讓小A能夠打開(kāi)密碼箱,B在一張紙條上寫(xiě)上這個(gè)密碼箱的密碼,并連同密碼箱一同放進(jìn)小A的箱子里,然后通過(guò)小A的鎖鎖上箱子郵遞回小A(這類(lèi)似俄羅斯套娃,在一個(gè)大箱子里放入一個(gè)小箱子),這樣小A收到箱子后,用自己的要是打開(kāi)箱子,并依照箱子里的密碼紙條打開(kāi)B的密碼箱,就能夠讀到信息了;貜(fù)的話(huà),則采用同樣的方式。這種方式,在傳輸過(guò)程中始終沒(méi)有明文鑰匙的傳遞,也就避免了信件被偷窺。
怎么降低延遲?浪潮加解密解決方案,提升十倍性能
從Https握手過(guò)程來(lái)看,在多次的握手過(guò)程中,最耗時(shí),也最消耗服務(wù)器計(jì)算資源的是非對(duì)稱(chēng)加密密鑰的生成和加解密。以目前主流的RSA2048為例,秘鑰是兩個(gè)大質(zhì)數(shù)的積,長(zhǎng)度為2048位(二進(jìn)制位),也就是每次訪問(wèn)過(guò)程中,服務(wù)器需要先生成兩個(gè)大質(zhì)數(shù),并進(jìn)行公開(kāi)秘鑰的計(jì)算。(計(jì)算公式為A=B^e2 mod n,B=A^e1 mod n。A、B互為公鑰和私鑰,n為兩個(gè)大質(zhì)數(shù)的乘積,e1、e2為一對(duì)隨機(jī)相關(guān)值)。在同等硬件條件下,2048bit https比http并發(fā)性能要弱5-10倍,甚至更多。
據(jù)某互聯(lián)網(wǎng)公司實(shí)測(cè),正常情況下一個(gè)16核的CPU能夠達(dá)到3000 OPS(每秒3000次RSA操作)就算不錯(cuò)的成績(jī)了,也就是說(shuō)一臺(tái)雙路服務(wù)器每秒能夠同時(shí)處理的握手次數(shù)500次(Https每次連接需要12次握手)。而且,每個(gè)網(wǎng)站不僅包括一個(gè)頁(yè)面,比如主頁(yè)面、登錄頁(yè)面、子頁(yè)面等等,這些都需要通過(guò)SSL進(jìn)行加密傳輸數(shù)據(jù),因此通用x86服務(wù)器做SSL加解密會(huì)造成較高的延時(shí),并且在高并發(fā)訪問(wèn)時(shí)容易造成服務(wù)器宕機(jī)。以淘寶雙十一為例,千萬(wàn)級(jí)的訪問(wèn)量,如果采用通用服務(wù)器來(lái)處理Https的加解密,則需要數(shù)千臺(tái),這顯然是現(xiàn)實(shí)的。
既然依靠CPU的通用計(jì)算不能很好地進(jìn)行SSL加解密的高速運(yùn)算,那么是不是能夠通過(guò)專(zhuān)用的加速卡來(lái)實(shí)現(xiàn)?就像用GPU來(lái)實(shí)現(xiàn)圖像運(yùn)算那樣,答案是肯定的。SSL專(zhuān)用加速卡,相比x86架構(gòu)的CPU,雖然不能勝任通用計(jì)算應(yīng)用需求,但是經(jīng)過(guò)專(zhuān)門(mén)的算法和架構(gòu)優(yōu)化,在進(jìn)行RSA加密計(jì)算時(shí)的性能大大優(yōu)于傳統(tǒng)架構(gòu)。
浪潮SA5212M4服務(wù)器
近日,浪潮推出了基于SA5212M4的、專(zhuān)門(mén)面向SSL加解密加速的軟硬一體化解決方案,支持IPsec、SSL 加速和壓縮功能,可提供高達(dá) 50 Gbps 的加密速度和高達(dá) 24 Gbps 的壓縮性能。浪潮SSL加解密加速解決方案在單卡情況下即可實(shí)現(xiàn)在RSA1024操作中190K OPS(每秒運(yùn)算次數(shù)),而在RSA2048時(shí)也能達(dá)到35K的速度,與通用服務(wù)器相比能夠有10倍以上的性能提升。
2015年,GoogleI/O大會(huì)上,谷歌提出了在網(wǎng)絡(luò)上使用“HTTPS everywhere”的倡導(dǎo),目前在國(guó)內(nèi)百度和淘寶已經(jīng)實(shí)現(xiàn)了Https的全站覆蓋,并且越來(lái)越多的網(wǎng)站開(kāi)始使用Https協(xié)議來(lái)保障數(shù)據(jù)的安全,浪潮SSL加解密解決方案將為更安全的網(wǎng)絡(luò)環(huán)境奠定基礎(chǔ)。