2017-12-28

HTTPS 原理及安全加密方案


一肺樟、什么是HTTPS


在說HTTPS之前先說說什么是HTTP,HTTP就是我們平時(shí)瀏覽網(wǎng)頁時(shí)候使用的一種協(xié)議哥攘。HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,也就是明文的,因此使用HTTP協(xié)議傳輸隱私信息非常不安全椎眯。為了保證這些隱私數(shù)據(jù)能加密傳輸,于是網(wǎng)景公司設(shè)計(jì)了SSL(Secure Sockets

Layer)協(xié)議用于對HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行加密胳岂,從而就誕生了HTTPS编整。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定義在RFC 6101中乳丰,之后IETF對SSL 3.0進(jìn)行了升級掌测,于是出現(xiàn)了TLS(Transport Layer

Security) 1.0,定義在RFC 2246产园。實(shí)際上我們現(xiàn)在的HTTPS都是用的TLS協(xié)議汞斧,但是由于SSL出現(xiàn)的時(shí)間比較早,并且依舊被現(xiàn)在瀏覽器所支持什燕,因此SSL依然是HTTPS的代名詞粘勒,但無論是TLS還是SSL都是上個(gè)世紀(jì)的事情,SSL最后一個(gè)版本是3.0屎即,今后TLS將會繼承SSL優(yōu)良血統(tǒng)繼續(xù)為我們進(jìn)行加密服務(wù)仲义。目前TLS的版本是1.2,定義在RFC 5246中,暫時(shí)還沒有被廣泛的使用埃撵。


對歷史感興趣的朋友可以參考http://en.wikipedia.org/wiki/Transport_Layer_Security赵颅,這里有對TLS/SSL詳盡的敘述。


二暂刘、HTTPS到底安全嗎饺谬?


這個(gè)答案是肯定的,很安全谣拣。谷歌公司已經(jīng)行動起來要大力推廣HTTPS的使用募寨,在未來幾周,谷歌將對全球所有本地域名都啟用HTTPS森缠,用戶只要在搜索前用Google帳號登錄拔鹰,之后所有的搜索操作都將使用TLS協(xié)議加密,見:http://thenextweb.com/google/2012/03/05/google-calls-for-a-more-secure-web-expands-ssl-encryption-to-local-domains/贵涵。


三列肢、HTTPS的工作原理

HTTPS在傳輸數(shù)據(jù)之前需要客戶端(瀏覽器)與服務(wù)端(網(wǎng)站)之間進(jìn)行一次握手,在握手過程中將確立雙方加密傳輸數(shù)據(jù)的密碼信息宾茂。TLS/SSL協(xié)議不僅僅是一套加密傳輸?shù)膮f(xié)議瓷马,更是一件經(jīng)過藝術(shù)家精心設(shè)計(jì)的藝術(shù)品,TLS/SSL中使用了非對稱加密跨晴,對稱加密以及HASH算法欧聘。握手過程的簡單描述如下:此處游覽器可以理解為我們android的客戶端

1.瀏覽器將自己支持的一套加密規(guī)則發(fā)送給網(wǎng)站。


2.網(wǎng)站從中選出一組加密算法與HASH算法端盆,并將自己的身份信息以證書的形式發(fā)回給瀏覽器怀骤。證書里面包含了網(wǎng)站地址,加密公鑰焕妙,以及證書的頒發(fā)機(jī)構(gòu)等信息蒋伦。


3.獲得網(wǎng)站證書之后瀏覽器要做以下工作:


a)

驗(yàn)證證書的合法性(頒發(fā)證書的機(jī)構(gòu)是否合法,證書中包含的網(wǎng)站地址是否與正在訪問的地址一致等)访敌,如果證書受信任凉敲,則瀏覽器欄里面會顯示一個(gè)小鎖頭衣盾,否則會給出證書不受信的提示寺旺。


b)

如果證書受信任,或者是用戶接受了不受信的證書势决,瀏覽器會生成一串隨機(jī)數(shù)的密碼阻塑,并用證書中提供的公鑰加密。


c)

使用約定好的HASH計(jì)算握手消息果复,并使用生成的隨機(jī)數(shù)對消息進(jìn)行加密陈莽,最后將之前生成的所有信息發(fā)送給網(wǎng)站。


4.網(wǎng)站接收瀏覽器發(fā)來的數(shù)據(jù)之后要做以下的操作:


a)

使用自己的私鑰將信息解密取出密碼,使用密碼解密瀏覽器發(fā)來的握手消息走搁,并驗(yàn)證HASH是否與瀏覽器發(fā)來的一致独柑。


b)

使用密碼加密一段握手消息,發(fā)送給瀏覽器私植。


5.瀏覽器解密并計(jì)算握手消息的HASH忌栅,如果與服務(wù)端發(fā)來的HASH一致,此時(shí)握手過程結(jié)束曲稼,之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機(jī)密碼并利用對稱加密算法進(jìn)行加密索绪。

這里瀏覽器與網(wǎng)站互相發(fā)送加密的握手消息并驗(yàn)證,目的是為了保證雙方都獲得了一致的密碼贫悄,并且可以正常的加密解密數(shù)據(jù)瑞驱,為后續(xù)真正數(shù)據(jù)的傳輸做一次測試。另外窄坦,HTTPS一般使用的加密與HASH算法如下:

非對稱加密算法:RSA唤反,DSA/DSS

對稱加密算法:AES,RC4嫡丙,3DES

HASH算法:MD5拴袭,SHA1,SHA256

其中非對稱加密算法用于在握手過程中加密生成的密碼曙博,對稱加密算法用于對真正傳輸?shù)臄?shù)據(jù)進(jìn)行加密拥刻,而HASH算法用于驗(yàn)證數(shù)據(jù)的完整性。由于瀏覽器生成的密碼是整個(gè)數(shù)據(jù)加密的關(guān)鍵父泳,因此在傳輸?shù)臅r(shí)候使用了非對稱加密算法對其加密般哼。非對稱加密算法會生成公鑰和私鑰,公鑰只能用于加密數(shù)據(jù)惠窄,因此可以隨意傳輸蒸眠,而網(wǎng)站的私鑰用于對數(shù)據(jù)進(jìn)行解密,所以網(wǎng)站都會非常小心的保管自己的私鑰杆融,防止泄漏楞卡。

TLS握手過程中如果有任何錯(cuò)誤,都會使加密連接斷開脾歇,從而阻止了隱私信息的傳輸蒋腮。正是由于HTTPS非常的安全,攻擊者無法從中找到下手的地方藕各,于是更多的是采用了假證書的手法來欺騙客戶端池摧,從而獲取明文的信息,但是這些手段都可以被識別出來激况,我將在后續(xù)的文章進(jìn)行講述作彤。


不過2010年還是有安全專家發(fā)現(xiàn)了TLS

1.0協(xié)議處理的一個(gè)漏洞:


http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl/膘魄,實(shí)際上這種稱為BEAST的攻擊方式早在2002年就已經(jīng)被安全專家發(fā)現(xiàn),只是沒有公開而已竭讳。目前微軟和Google已經(jīng)對此漏洞進(jìn)行了修復(fù)创葡。見:http://support.microsoft.com/kb/2643584/en-us

https://src.chromium.org/viewvc/chrome?view=rev&revision=90643


HTTPS建立連接時(shí)證書的驗(yàn)證流程



2.什么是SSL

Pinning?


可以理解為證書綁定绢慢,是指客戶端直接保存服務(wù)端的證書蹈丸,建立https連接時(shí)直接對比服務(wù)端返回的和客戶端保存的兩個(gè)證書是否一樣,一樣就表明證書是真的呐芥,不再去系統(tǒng)的信任證書機(jī)構(gòu)里尋找驗(yàn)證逻杖。這適用于非瀏覽器應(yīng)用,因?yàn)闉g覽器跟很多未知服務(wù)端打交道思瘟,無法把每個(gè)服務(wù)端的證書都保存到本地荸百,但CS架構(gòu)的像手機(jī)APP事先已經(jīng)知道要進(jìn)行通信的服務(wù)端,可以直接在客戶端保存這個(gè)服務(wù)端的證書用于校驗(yàn)滨攻。


為什么直接對比就能保證證書沒問題够话?如果中間人從客戶端取出證書,再偽裝成服務(wù)端跟其他客戶端通信光绕,它發(fā)送給客戶端的這個(gè)證書不就能通過驗(yàn)證嗎女嘲?確實(shí)可以通過驗(yàn)證,但后續(xù)的流程走不下去诞帐,因?yàn)橄乱徊娇蛻舳藭米C書里的公鑰加密欣尼,中間人沒有這個(gè)證書的私鑰就解不出內(nèi)容,也就截獲不到數(shù)據(jù)停蕉,這個(gè)證書的私鑰只有真正的服務(wù)端有愕鼓,中間人偽造證書主要偽造的是公鑰。


為什么要用SSL

Pinning慧起?正常的驗(yàn)證方式不夠嗎菇晃?如果服務(wù)端的證書是從受信任的的CA機(jī)構(gòu)頒發(fā)的,驗(yàn)證是沒問題的蚓挤,但CA機(jī)構(gòu)頒發(fā)證書比較昂貴磺送,小企業(yè)或個(gè)人用戶可能會選擇自己頒發(fā)證書,這樣就無法通過系統(tǒng)受信任的CA機(jī)構(gòu)列表驗(yàn)證這個(gè)證書的真?zhèn)瘟瞬右猓孕枰猄SL

Pinning這樣的方式去驗(yàn)證

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末估灿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子脾歧,更是在濱河造成了極大的恐慌甲捏,老刑警劉巖演熟,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞭执,死亡現(xiàn)場離奇詭異司顿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)兄纺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門大溜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人估脆,你說我怎么就攤上這事钦奋。” “怎么了疙赠?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵付材,是天一觀的道長。 經(jīng)常有香客問我圃阳,道長厌衔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任捍岳,我火速辦了婚禮富寿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锣夹。我一直安慰自己页徐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布银萍。 她就那樣靜靜地躺著变勇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贴唇。 梳的紋絲不亂的頭發(fā)上贰锁,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機(jī)與錄音滤蝠,去河邊找鬼豌熄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛物咳,可吹牛的內(nèi)容都是我干的锣险。 我是一名探鬼主播窃祝,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼疾掰,長吁一口氣:“原來是場噩夢啊……” “哼哲嘲!你這毒婦竟也來了喉誊?” 一聲冷哼從身側(cè)響起俯萌,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤柿汛,失蹤者是張志新(化名)和其女友劉穎陪毡,沒想到半個(gè)月后绪杏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體油吭,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡击蹲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年署拟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歌豺。...
    茶點(diǎn)故事閱讀 38,664評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡推穷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出类咧,到底是詐尸還是另有隱情馒铃,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布痕惋,位于F島的核電站区宇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏值戳。R本人自食惡果不足惜萧锉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望述寡。 院中可真熱鬧柿隙,春花似錦、人聲如沸鲫凶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽螟炫。三九已至波附,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昼钻,已是汗流浹背掸屡。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留然评,地道東北人仅财。 一個(gè)月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像碗淌,于是被迫代替她去往敵國和親盏求。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容