https原理

https中用到了--對稱加密&非對稱加密
open-ssl


急速開發(fā)系列——Retrofit中如何正確的使用https臊旭? - 代碼之道超埋,編程之法 - 博客頻道 - CSDN.NET
http://blog.csdn.net/dd864140130/article/details/52625666
很多文章對客戶端https的使用都是很模糊的鼓黔,不但如此键耕,有些開發(fā)者直接從網上拷貝一些使用https的“漏洞”代碼翼闹,無形之中讓客戶端處在一種高風險的情況下枫振。

今天我們就對有關https使用的問題進行深入的探討喻圃,希望能解決以往的困惑。對于https粪滤,需要了解其工作原理的可以參考https是如何工作的斧拍?,更多關于https的問題我會站在客戶端的角度在后面陸陸續(xù)續(xù)的寫出來杖小。


最近在看到這么一篇講解Https原理的文章肆汹,語言精煉,通俗易懂予权,特地將其翻譯下昂勉,原文在此how does https work
加密算法簡介
正文開始之前,我先來解釋簡單的解釋下對稱加密和非對稱加密.
對稱加密采用對稱密碼編碼技術扫腺,也就是編碼和解碼采用相同描述字符岗照,即加密和解密使用相同的密鑰,實現這種加密技術的算法稱對稱加密算法斧账。對稱加密使用簡單冻璃,密鑰較短陌粹,加密和解密過程較快砸脊,耗時短殃饿,常見的對稱加密算法有DES宏胯,3DES谦秧,lDEA蝎土,AES樱报,RC4等。
非對稱加密與對稱加密不同闪萄,其加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(private)梧却,兩者是一對的。如果用公鑰加密败去,只能用私鑰才能解密放航。非對稱加密保密性好,但加密和解密花費的時間較長圆裕,不適合對大文件加密而只適合對少量的數據加密广鳍。常見的非對稱加密算法有RSA,ECC吓妆,DSA(數字簽名)等赊时。
Hash算法是一種單向算法,通過Hash算法可以對目標數據生成一段特定長度行拢、唯一的hash值,但是不能通過這個hash值重新計算出原始的數據祖秒,因此也稱之為摘要算法,經常被用在不需要數據還原的密碼加密以及數據完整性校驗上舟奠,常用的算法有MD2竭缝,MD4,MD5沼瘫,SHA等歌馍。

現在我們對對稱加密,非對稱加密及Hash算法做了簡單的說明之后晕鹊,就可以開始了解https的工作原理了松却。
https是如何工作的?
這篇文章是我在我團隊中分享的溅话。很多人不理解https的好處晓锻,不理解https的原理,因此我將這篇文章也分享給大家飞几。
加密(Cipher)
在java 1.2時砚哆,引入JCR(java 加密擴展)系統(tǒng),用來負責java中的密鑰和證書屑墨。
我們都知道躁锁,如果我們想要加密或解密一些信息,我們必須要有一個密鑰卵史。這好比你想要開門或者鎖門战转,必須要有鑰匙一樣。
在java中以躯,密鑰由KeyGenerator或KeyPairGenerator生成槐秧。前者用來生成對稱密鑰啄踊,后者用來生成非對稱密鑰。
對稱密鑰:使用同一個密鑰進行加密和解密
非對稱密鑰:使用不同的密鑰進行加密和解密刁标,通常被稱為公鑰(public key)和私鑰(private key)颠通。 公鑰可以廣泛傳播,但是私鑰只有其所有者知道膀懈。在一個安全的非對稱密鑰加密方案中顿锰,當信息用公鑰加密后,只有用私鑰才能解密启搂。所以撵儿,即使一個黑客拿到你公鑰加密過后的信息,也無法解密它狐血,因為它沒有配對的私鑰淀歇。這樣,傳輸的消息就是安全的匈织。

證書(Certificate)
在現實中浪默,如果你進入到鉆石專賣店中想要買一顆鉆石,你怎么知道鉆石是真的缀匕?作為一個普通人來說纳决,我們沒有鉆石方面的知識,但是如果這鉆石有個由美國政府頒發(fā)的許可證乡小,我們就會相信它是真的阔加。(去過珠寶店的同學都知道,每件珠寶都有自己的鑒定書)
證書的作用也是如此满钟。在計算機世界中胜榔,它可能是包含一些密鑰,是另一個證書(姑且稱之為證書B好了)湃番。這些密鑰是我們需要的夭织,而證書B是一個許可證,用來證明這個證書是可信賴的吠撮。
做個簡短的解釋尊惰,每個鉆石都有自己的“身份證書”,但是如何說明這個身份證書是合法的泥兰,而不是自己偽造的弄屡?因此,我們需要一個權威的機構來證明這個鉆石的身份證書是合法的鞋诗,如果這個鉆石的身份是合法的膀捷,該權威機構就會為其頒發(fā)一個“許可證”,這個許可證就相當于上面我們說到的證書B师脂〉?祝可以看到,證書B的目的就是證明這個身份證書是這個鉆石的身份證書吃警,即證明某某東西是某某東西的東西

問題來了:我們怎么確定證書B是可信賴的呢糕篇?這個問題非常棒。
Android已經把將近150個CA根證書(數字證書認證機構認證過的證書)內置在我們手機中酌心。這150多個證書被全世界信賴拌消,他們就像是美國的大法官。
這150多個證書類似我們剛才說的證書B安券,分別用來證明某某東西是某某東西的東西

B證書中里有另外一個證書(姑且稱之為C證書)墩崩,我們通過檢查C來確定C是否是可信任的。侯勉。鹦筹。通過這個證書鏈,如果我們找到的最后一個或根證書 和手機中預置的150個證書中某個相同址貌,我們就可以這個證書原件(此處就是B)
這里我對證書鏈進行說明铐拐。證書之間的信任關系是可以嵌套的。比如练对,CA信任D遍蟋,D信任C,C信任B ,B信任A螟凭。虚青。。這就是證書鏈螺男。只要我們信任證書鏈上的頭一個證書棒厘,那么后續(xù)的證書都是可以信任的。這里也就是如果我信任了證書CA下隧,那么后面的D绊谭,C,B汪拥,A都是可以信任的达传。這里來打個比方,架設軍隊中的每個士兵都只認識自己的直接上級迫筑,那么這時候總司令怎么確認某個士兵是自己部隊 當中的呢宪赶?總司令(CA)會問的直接下級(D),而司令的直接下級又會找自己的直接下級脯燃,依次往下找…如果最后能找到這個士兵直屬上級搂妻,那就說明這個士兵是該部隊當中的。

附:證書有多種格式
x.509 x.509證書通常用于包含一個公鑰

PKCS12 PKCS12證書通常用來包含一個私鑰辕棚。因此欲主,PKCS12需要密碼才能打開邓厕。

Https
現在我們來了解https部分。Https(http over ssl)包含上面提到的加密和證書兩部分扁瓢,被設計用來在Internet安全進行通信详恼。
如何安全的通信?

如何安全通信呢引几?對稱加密是我們最先想到的方案:將數據進行加密昧互,然后將加密過的數據和密鑰同時傳到服務器,服務器使用這個密鑰解密加密過后的數據伟桅。
這里寫圖片描述

現在敞掘,我們來看看這種可能的場景:黑客截獲了該通信,這意味著黑客擁有了密鑰和密文楣铁。一旦黑客有了密鑰玖雁,那么解密密文就是很簡單的事情了,我們的數據就這樣泄漏了盖腕。
如何使用非對稱加密茄菊?
上面的解決方案非常不安全。我們繼續(xù)往下看赊堪。使用非對稱加密怎么樣面殖?

這個想法非常棒:服務端發(fā)送給你公鑰,你使用這個公鑰加密數據哭廉。因為服務端是唯一擁有私鑰的脊僚, 這意味著只有服務端能夠解密密文。即使黑客截獲了該通訊遵绰,但因為沒有私鑰也就無法解密密文辽幌。
但是,非對稱加密比對稱加密更加耗時椿访。為了用戶體驗乌企,不建議使用非對稱加密這種方式來加密/解密大量的數據 。
最終方案

前兩種方案都無法解決我們安全通信成玫,我們怎么結合上面的兩種方案呢加酵?來看看最終方案:
這里寫圖片描述

上面這張圖片已經清楚的展示了HTTPS工作的流程。
1.[Server]生成一對密鑰:公鑰和私鑰哭当,我們稱之為“KeyPub”猪腕,“KeyPri” 2.[Server]服務端將公鑰(KeyPub)發(fā)送到客戶端 3.[Client]生成一個對稱密鑰(姑且稱之為key2),然后用key2加密數據钦勘。 4.[Client]使用公鑰(KeyPub)加密key2.這時陋葡,key2是安全的,因為只有服務度有私鑰KeyPri 5.[Client]發(fā)送用key2加密后的信息及用KeyPub加密過的key2到服務端 6.[Server]服務端使用KeyPri解密得到加密過的key2彻采,得到真正的key2 7.[Server]使用key2解密消息正文腐缤。這樣捌归,數據就被安全的傳輸到了服務端。
結論
由于對稱加密比非對稱加密快岭粤,https決定使用對稱加密來加密數據惜索,使用非對稱加密對稱加密生成的密鑰,以確保安全绍在。
這篇文章最后并沒有很好的說明證書的作用门扇,因此如果你以前沒了解過雹有,到此可能產生一些困惑偿渡,后面我會再單獨寫一篇文章來說明下。

--EOF--

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末霸奕,一起剝皮案震驚了整個濱河市溜宽,隨后出現的幾起案子,更是在濱河造成了極大的恐慌质帅,老刑警劉巖适揉,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異煤惩,居然都是意外死亡嫉嘀,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門魄揉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剪侮,“玉大人,你說我怎么就攤上這事洛退“旮” “怎么了?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵兵怯,是天一觀的道長彩匕。 經常有香客問我,道長媒区,這世上最難降的妖魔是什么驼仪? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮袜漩,結果婚禮上谅畅,老公的妹妹穿的比我還像新娘。我一直安慰自己噪服,他們只是感情好毡泻,可當我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著粘优,像睡著了一般仇味。 火紅的嫁衣襯著肌膚如雪呻顽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天丹墨,我揣著相機與錄音廊遍,去河邊找鬼。 笑死贩挣,一個胖子當著我的面吹牛喉前,可吹牛的內容都是我干的。 我是一名探鬼主播王财,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼卵迂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绒净?” 一聲冷哼從身側響起见咒,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挂疆,沒想到半個月后改览,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡缤言,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年宝当,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胆萧。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡庆揩,死狀恐怖,靈堂內的尸體忽然破棺而出鸳碧,到底是詐尸還是另有隱情盾鳞,我是刑警寧澤,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布瞻离,位于F島的核電站腾仅,受9級特大地震影響,放射性物質發(fā)生泄漏套利。R本人自食惡果不足惜推励,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肉迫。 院中可真熱鬧验辞,春花似錦、人聲如沸喊衫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至壳贪,卻和暖如春陵珍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背违施。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工互纯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人磕蒲。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓留潦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辣往。 傳聞我的和親對象是個殘疾皇子兔院,可洞房花燭夜當晚...
    茶點故事閱讀 45,995評論 2 361

推薦閱讀更多精彩內容

  • 眾所周知,http協議是以明文進行傳輸的排吴,http在明文的傳輸過程中很容易出現數據被攔截秆乳、篡改懦鼠、監(jiān)控的危險钻哩,這種情...
    Tony_Qiu閱讀 1,491評論 0 8
  • HTTPS 簡介 在日常互聯網瀏覽網頁時肛冶,我們接觸到的大多都是 HTTP 協議街氢,這種協議是未加密,即明文的睦袖。這使得...
    Kerwong閱讀 12,014評論 7 25
  • 2018-Read-Record 記錄我的2018學習歷程 文中首先解釋了加密解密的一些基礎知識和概念馅笙,然后通過一...
    NinthDay閱讀 11,311評論 8 105
  • 文中首先解釋了加密解密的一些基礎知識和概念伦乔,然后通過一個加密通信過程的例子說明了加密算法的作用,以及數字證書的出現...
    sunny沖哥閱讀 1,391評論 0 3
  • 文中首先解釋了加密解密的一些基礎知識和概念董习,然后通過一個加密通信過程的例子說明了加密算法的作用烈和,以及數字證書的出現...
    已認證用戶閱讀 3,849評論 1 4