SSL 與 數字證書 的基本概念和工做原理

前言linux

SSL是讓人頭大的東西,看起來很複雜,我學過信息安全課,可是對SSL仍然是模糊一片。對於數字證書也是隻知其一;不知其二,歷來沒有去認真研究過。只知道個大概,「反正就是對稱加密和非對稱加密」,詳細的就不懂了。其實這些跟操做系統,計算機體系結構同樣,是基礎知識,即便你不是專門研究信息安全的,即便你平時用不到,這些東西也應該是必須瞭解的~ It’s not rocket science!git

我這篇文章首先介紹有關信息安全的一些基本概念。而後分析數字證書的構成,用途以及SSL的工做原理。Enjoy! 算法

1、爲何網絡是不安全的?

計算機世界是基於網絡的,根據目前網絡的結構和實現,數據包在世界各地的路由器之間遊蕩,任何人均可以得到你的發送的數據包,從而得到你發送的數據。局域網內就更方便了,只要你開個Sniffer在那裏監聽,別人QQ聊天的信息盡收眼底啊~爲什呢?我來簡單解釋一下計算機網絡是如何傳輸數據的。瀏覽器

現實生活中,若是你請快遞幫你寄東西,通常狀況下,快遞會把東西送到目的地,而不是其餘地方。路由器就像是快遞,在Internet上負責送數據。但和真實的快遞不一樣的是,路由器會把你要發送的信息廣播給離目的地更近的路由器,多是一個路由器,也多是多個路由器(別問我爲啥,我不想深刻了,有興趣本身查資料)。這樣你的信息就變成多份的了。複製虛擬的信息不值錢那~現實生活中的快遞可不能複製你要寄的東西。通常狀況下,只有一份數據會被目的計算機接收到,其餘的拷貝在網絡上游蕩一段時間之後就被拋棄了。可是,這給***們有了不少可乘之機。他們在網絡上監聽不少垃圾信息,過濾掉沒用的,留下他們感興趣的,而後就能夠偷窺別人隱私了。安全

正是由於網絡有這樣的問題,人們就發明了不少加密通訊的手段,來保證本身的通訊的內容不會被泄露。SSL和數字證書就是用來幹這個的。服務器

2、信息安全的基本概念

在解釋SSL和數字證書以前,我以爲有必要解釋一下幾個有關信息安全的基本概念。網絡

安全的定義架構

若是說兩我的之間的通訊是安全的,那麼如何定義這個安全呢?ide

  1. 保密性(Confidentiality)
    保密性應該很容易理解,就是隻有你本身和你容許的人能看到相關的信息。這和物理文件的保密性是同樣的。 工具

  2. 完整性(Integrity)
    所謂完整性就是你的信息沒有被破壞或者篡改過。舉個例子好比網絡聊天,保證對方收到的信息就是你發出的信息也是信息安全的一部分。

  3. 可得到性(Availability)
    可得到性是指你本身在須要的時候可以訪問到信息或者保證對方可以收到你的信息。

一般,咱們平時說的「安全」每每只包括第一點,保密性。其實後面兩點也是很重要的,特別是在信息安全領域。若是沒有完整性和可得到性,光保密又有什麼用呢?回到咱們的主題,SSL和數字證書主要關注的是前兩點。至於可得到性就須要涉及到硬件,管理等等了。

認證與受權

如今的問題是,咱們如何保證上面所定義的「安全」?一般,有如下兩個方法:

  1. 認證(Authentication)
    認證是證實你就是那個你所聲稱的那我的。舉個例子,你說你是張三,而後去機場登機,機場工做人員怎麼知道你就是張三呢?你必須出示你的×××或者護照,這樣就能夠證實你就是那個你所聲稱的張三。在信息安全領域也同樣,好比你想去google查看zhlmmc的郵件,而後google會問你要zhlmmc的密碼,由於只有zhlmmc知道zhlmmc賬戶的密碼,若是你能說出那個密碼,那麼你就是zhlmmc,google就會把zhlmmc的郵件返回給你。有些文章把這個過程稱爲Identification。

  2. 受權(Authorization)
    受權是指一個系統裏面有不少用戶,有些用戶能作某些事情,有些用戶不能作某些事情。好比Linux,不少用戶能夠同時經過認證而登陸到Linux主機,可是隻有root才能修改或刪除系統文件,普通用戶只能修改本身的home。

這裏每一點均可能涉及不少不一樣的技術來保證過程的順利進行。「受權」跟業務邏輯的牽扯比較大,SSL和數字證書更多的關注第一點。

3、加密與算法

加密是保護信息安全的經常使用手段之一。對信息的加密是須要加密算法的,若是加密算法被破解了,那麼一切免談。不過,基本上,要破解一個加密算法是很是很是困難的。至少,目前流行的加密算法仍是安全的,因此咱們也就沒必要考慮這個問題了。

散列(Hash)

常常用bt下載的人應該很熟悉這個。這就是MD5啊~雖然Hash不僅是MD5,常見的還有SHA1。不過MD5最流行因此通常你們說的hash就是它了。值得一提的是,山東大學的王小云在2005年的時候發了一篇「 How to Break MD5 and Other Hash Functions」引發了信息安全界的轟動。雖然我沒仔細研讀過這篇paper,不過我相信按照paper裏面的說法要破解MD5仍是很費勁的,要不早就出亂子了。因此咱們就不考慮這個問題了。那麼究竟什麼是MD5呢?我來簡單解釋一下。

Hash就是一個工具,能把任意大小的文檔變成一個 固定大小(MD5是32個字符)的字符串。而且,這個過程是 不可逆的,也就是說,沒有任何辦法從那個字符串獲得原來那個文檔。還有很重要的一點是, 任意兩個文檔(哪怕極其類似)獲得相同字符串的機率幾乎等於0。如今你有一個10000字的文章,發給你的朋友,那你的朋友怎麼判斷他收到的文章一個標點符號都沒有少呢?你在發送文章的同時把這個文章的Hash字符串也發過去,這樣你的朋友收到文章之後,根據收到的文章從新計算一遍這個字符串,若是這個字符串和你發過去的同樣,那就證實你朋友收到的文章是和你發送的如出一轍。

對稱加密(Symmetric Cryptography)

所謂加密就是把一段能看懂的東西經過某種變換變成看不懂的東西。固然這種變換是可逆的,不然加密有什麼用啊!這裏所說的「變換」就是加密算法。目前咱們所說的加密算法基本上都是基於密鑰的。加密算法不能單獨工做,必須有密鑰配合。就像現實生活中的鎖,同一型號的鎖的原理都同樣,可是沒把鎖都有各自的鑰匙,用來開鎖和關鎖。 加密的算法是公開的,但密鑰是保密的。本身「發明」加密算法是很愚蠢的,除非你是密碼學專家。歷史上有不少使用本身發明的加密算法的笑話,每每你發明的算法都是自覺得是,其實很容易破解的拉。而目前流行的加密算法都是通過時間和衆人檢驗的,通常狀況下,只要密鑰不泄露,那就是安全的。有一點要說明的是,雖然咱們平時通常說「加密算法」,但每每這個加密算法都包含解密算法的。 「對稱加密」是指加密和解密的密鑰是同一個。目前流行的對稱加密算法有DES,AES,Blowfish等等。舉個例子,你有一篇文章想要發給你朋友,可是你不想讓別人看見這篇文章因此你選擇AES加密。用的密鑰是你和你朋友事先約定的,只有大家兩我的知道。在發送以前,你用AES算法和約定好的密鑰給文章加密,而後把加密過的文章發送給你的朋友。你朋友收到之後能夠用AES算法和那個密鑰解密而得到原始的那篇文章。 對稱加密算法的優勢是速度快,缺點是密鑰管理不方便,要求共享密鑰。

非對稱加密(Asymmetric Cryptography)

若是你理解了上面講的對稱加密,那麼這裏的非對稱加密就很簡單了。從字面上理解就能夠猜到, 加密和解密不是用的同一個密鑰,其中一個稱爲公鑰(public key),另外一個稱爲私鑰(private key)。公鑰就是公開的,你們都知道,而私鑰只有你本身知道。這兩個密鑰在數學上是有聯繫的,用公鑰加密的內容只能由相應的私鑰來解密,反過來,用私鑰加密的內容只能由相應的公鑰來解密。另外很重要的一點是, 不能從公鑰推導出私鑰,或者說很困難。經常使用的非對稱加密算法有RSA,ECC等等。舉個例子,你想要把一篇文章發送給你的朋友,可是不想讓別人看到這篇文章。除了用上面講的方法之外,你還能夠用非對稱加密來實現。在發送以前,你把文章用你朋友的公鑰加密(公鑰是公開的,每一個人都知道),而後把加密事後的文章發送給你的朋友,你的朋友能夠用他的私鑰來解密。其餘人得到了你傳送的內容都是沒有用的,由於只有你朋友有私鑰能夠解密。 非對稱加密算法的優勢是密鑰管理很方便,缺點是速度慢。

數字簽名(Digital Signature)

咱們先來看看現實生活中的簽名是如何實現的。好比爲信用卡帳單簽名,商家會打印一張消費單子給你,你看過之後以爲沒有問題,因而在這張紙上籤上本身的大名,表示你認可了這筆消費,並贊成商家從你的信用卡帳戶扣錢。而商家能夠對比你的簽名和信用卡背後的簽名是否一致來驗證你是否冒用別人的信用卡(事實上不少商家不看的哦)。這個流程是基於一個假設的: 只有你本身能重現你的簽名。雖然咱們不能每次都籤的一摸同樣,可是經過筆跡鑑定,咱們能夠肯定這個簽名是否出自你手。分析一下,簽名具備哪些特色呢?

  1. 不可僞造 - 經過筆記鑑定來保證。

  2. 不可移植,複製 - 複印,剪貼的簽名固然無效咯!

  3. 不能否認 – 由於不可僞造,不可移植,不可複製,因此不能否認。

類似的,在虛擬世界裏,咱們有數字簽名來幫助證實某個文檔是你建立的,或者是你承認的。 數字簽名所用的技術是散列和非對稱加密。數字簽名的假設是: 只有你本身有你的私鑰。根據前面對散列的介紹,咱們先爲你要簽名的信息生成一個Hash字串,Hash1,而後用你的私鑰加密獲得Encrypted(Hash1),這就是你對這個文檔的數字簽名。當別人須要驗證某個文檔是不是你簽名的時候,只須要用你的公鑰解密你的簽名獲得Hash1,並和該文檔計算出來的Hash2對比,查看是否一致。若是一致則說明你確實對該文檔簽過名,不然就是沒有。下面來分析一下,數字簽名是如何保證上面所講的簽名的特色的。

  1. 不可僞造
    由於只有你有你本身的私鑰,因此任何其餘人都沒法產生用你的私鑰加密過的Hash1。

  2. 不可移植,複製
    你對文檔A的簽名不可能對文檔B也有效,由於你對文檔B的簽名必然和對A的簽名不同,這是由Hash的惟一性保證的。拿你對A的簽名去驗證B是不可能經過的。

  3. 不能否認
    由於不可僞造,不可移植,不可複製,因此不能否認。

仔細想一想數字簽名和現實生活中的簽名真的蠻像的,邏輯上是同樣的。或許你在想,爲何要對Hash加密呢?我直接對文檔用個人私鑰加密不就完了嘛?對啊,效果是同樣的,可是效率不同哦~別忘了非對稱算法是很慢的,加密一個100M的文件要算半天呢!

這裏要順便提一下消息認證碼( Message Authentication Code)。 它和數字簽名很類似,只不過它是用對稱加密的而數字簽名用的是非對稱加密。

在現實生活中,各類加密手段每每是配合使用以達到最好的效果和效率。好比我將要介紹的SSL和數字證書,就是混合了各類的加密手段。

4、數字證書

上面講了這麼多都是前戲,如今該到主題了。前面提到的認證(Authentication)的時候說,現實生活中能夠用×××和護照來證實身份, 那麼在虛擬世界裏,數字證書就是×××。和現實生活不一樣的是,並非每一個上網的用戶都有數字證書的,每每只有當一我的須要證實本身的身份的時候才須要用到數字證書。那麼何時須要證實本身的身份呢?普通用戶通常是不須要的,網站並不關心是誰訪問了網站,如今的網站只關心流量啊~反過來,網站就須要證實本身的身份了。好比你想要提交信用卡信息給預約航班的網站,那麼你如何肯定你正在訪問的網站就是你所想要訪問的那個呢?如今 釣魚網站不少的。好比你想訪問的是「www.ctrip.com」,但其實你訪問的是「www.otrip.com」,因此在提交本身的信息以前你須要驗證一下網站的身份,要求網站出示數字證書。通常正常的網站都會主動出示本身的數字證書。因爲證書在網頁瀏覽中最爲常見,因此我下面舉的例子都是基於瀏覽器的。

數字證書的構成

咱們的×××是由公安機關頒發的,並加有不少防僞技術,不能僞造(或者說很難)。一樣的,數字證書也有專門的發證機關(Certificate Authority,簡稱CA,實際上是一些商業公司啦)。比較常見的發證機關是 VeriSign。數字證書的發證機關會對本身發放的證書加上本身的數字簽名,以保證證書不能被僞造。那數字證書到底包含了些什麼呢?

  • 持有者姓名(Common Name)

  • 發證機關(Issuer)

  • 有效日期(Validity)

  • 證書持有人的公鑰(Subject’s Public Key Info)

  • 擴展信息 (Extension)

  • 用發證機關對該證書的數字簽名(Certificate Signature)

基本信息就這些了(這些信息會在後面的章節有所解釋),爲了更清晰的說明問題,來幾張截圖:

0824ab18972bd407b07dbdd97a899e510fb3095f
圖1:數字證書的基本內容

d50735fae6cd7b89160b54a70e2442a7d9330eaa
圖2:數字證書的結構

96dda144ad345982a08a8bb60df431adcbef8495
圖3:數字證書詳細內容

這幾張截圖都是我從Firefox裏面拷貝出來的,這張證書已通過期了,不過不影響理解。從圖2咱們能夠看到,Certificate(證書)和Signature(簽名)是分開的,但其實這個Signature也是證書的一部分。能夠這麼理解,數字證書包含證書主體和數字簽名。證書中的簽名是對證書主體的簽名。

如何驗證數字證書?

好了,如今咱們有了虛擬世界的×××了,那如何使用呢?和現實生活中檢查×××同樣,包含三個步驟:

1.    檢查×××防僞標記

數字證書的防僞標記就是發證機關的私鑰加密的那段內容。如何驗證?首先咱們是默認擁有發證機關的公鑰的。若是是瀏覽器的話,常見的發證機關的公鑰是內置的。以下圖所示:

4a36acaf2edda3cc60e4d60400e93901213f9295
圖4:Firefox內置的發證機關的數字證書

雖然Firefox內置的是數字證書,可是有數字證書就有公鑰,因此是同樣的。當瀏覽器拿到一個數字證書,先看發證機關,而後找到相應的發證機關的證書,得到發證機關的公鑰,用此公鑰解密被加密的MD5,這樣就得到了此證書的MD5值,咱們稱它爲Hash1。而後瀏覽器用MD5算法對此證書從新計算一遍MD5,得到Hash2。而後比較Hash1和Hash2是否相等。若是相等就證實這張證書是由發證機關頒發的,而且沒有被篡改過。回過頭去看看上面講Hash和MD5的部分,你應該能想明白爲何的。

2.    覈對相貌

在現實生活中,你的×××只有一張,你應該好好保管不被別人拿到。但不免錢包丟了,×××跟着遭殃。因此咱們在驗證完×××的真假以後咱們要驗證持證的人,和×××上所聲明的那我的是否是同一個,咱們每每經過比較相貌來辨別。那在虛擬世界又是怎樣的呢?你應該已經發現,任何人均可以擁有你的證書就像咱們裝的Firefox就有不少發證機關的證書。因此覈對持有證書人的身份就很重要了。這就要依賴證書裏面包含的公鑰了。此公鑰是這張證書全部者的公鑰(注意,我這裏指的是全部者,而不是持有者!),咱們用此公鑰加密一段信息發送給證書的持有者,若是持有者能發送回(能夠是被私鑰加密,也能夠是明文,沒有關係)被加密的這段信息的話就證實該持有者擁有該證書對應的私鑰,也就是說,該持有者就是該證書的全部者。

3.    覈對姓名

最後一步,也是最重要的一步。看清楚了,站在你面前的人的名字和登記在冊的名字同樣。舉個例子,我拿着護照去機場登機,護照和人都沒有問題,問題是我根本沒有買機票。若是機場工做人員只覈對了前面兩步的話,我就能夠登機了,豈不是很荒謬?一樣的,在虛擬世界,好比那個「ctrip」的例子,你拿到了一個證書,而且驗證沒有問題,可是證書上的Common Name明明寫的是「otrip」,你還繼續嗎?

若是這三個步驟都沒有問題,你就能夠確信正在和你通訊的對方是能夠信任的,是你想要聯繫的那我的。

數字證書的級聯(Certificate Chain)

根據上述討論,咱們能夠知道,全部數字證書都是基於另一張默認爲可信任(瀏覽器內置)的數字證書的。也就是說,咱們必須用一張已知合法的數字證書去驗證另一張未知的數字證書。第二節提到的發證機關的數字證書就是默認爲可信任的。事實上,發證機關的證書是本身簽發給本身的,驗證沒有意義。由於這些證書是人工配置在咱們電腦上的,因此默認爲安全的。這些證書稱爲「根證書」。

因爲申請證書的人數衆多,發證機關忙不過來,須要一些代理來幫忙簽發證書,有可能代理也須要代理來幫忙。這樣就產生了證書的層級關係,以下圖所示:

faedab64034f78f06d6cf4d778310a55b3191caa
圖5:級聯的數字證書

這裏的「www.paypal.com」是由二級代理「VeriSign Class 3 Extended Validation SSL SGC CA」簽發的,而二級代理的證書又是由一級代理「VeriSign Class 3 Public Primary Certification Authority – G5」簽發的,而一級代理的證書是由根證書機關「Buildin Object Token: Verisign Class 3 Public Primary Certification Authority」簽發的。沒必要太關注這裏的名字,名字而已,重要的是他們各自的位置。在驗證這張證書的時候須要從下往上遞歸驗證。先驗證用戶證書(最下面的證書,這裏就是「www.paypal.com」),若是這樣證書在瀏覽器的可信任列表裏面那麼驗證到此結束,若是不是的話就要檢查證書的防僞標記,這須要用到二級代理的證書,一樣的,若是二級代理的證書在可信任列表裏面,那麼直接使用,不然就要檢查二級代理證書的防僞標記,這須要用到一級代理的證書……直到根證書爲止,若是根證書不在可信任列表裏面,那麼這張證書就無法驗證了。這個過程的簡單流程圖是這樣的:

203fb80e7bec54e712ec743ab8389b504fc26a95
圖6:級聯證書的驗證流程

須要注意的是,這是一個遞歸過程,因此這裏的返回只是返回到上層遞歸。對於咱們這個例子中的級聯證書的驗證多是這樣的:

b8389b504fc2d562af08bec9e61190ef76c66c95
圖7:級聯證書驗證流程示例

這個過程看起來沒有什麼問題。可是仔細一想,發現有一個大問題。任何一個擁有合法證書的人均可以給別人簽發證書了,不就是在這個繼承關係上面多加一層嗎?黃粱大夢!事情沒那麼簡單啦~可以簽發證書的叫CA,無論是不是代理,它都是CA,只有CA的證書才能擁有下級,那如何判斷一張證書是不是CA呢?還記得咱們在第一節講過的證書中包含的擴展信息嗎?這裏能夠放不少東西,包括這張證書的合法用途,以下圖所示:

f3d3572c11dfa9ec477c383363d0f703918fc140
e1fe9925bc315c600b9505cb8cb1cb1349547795
1c950a7b02087bf4cd5639cdf3d3572c11dfcf58
圖8:證書的擴展信息

這裏咱們很清楚的能夠看到用戶證書是不能做爲CA來用的,白紙黑字寫着「Is not a Certificate Authority」。而CA的證書也有不一樣的權限。「Maximum number of intermediate CAs」說明了這個CA的權限大小。若是這個數字是0(好比這裏的二級代理的證書),說明這個CA只能簽發用戶證書,而不能再受權其餘機構爲CA。若是這個數字是1,說明這個CA能夠再受權一層代理,以此類推。圖中沒有顯示根證書的Extension,由於根證書沒有Extension,沒有表示沒有限制。在驗證級聯證書的時候,瀏覽器會檢查證書的Extension,若是某個證書超範圍使用了,瀏覽器會發出警告的。級聯證書爲證書的簽發帶來了很大的方便和靈活性。事實上咱們能夠看到,任何一張用戶證書都應該是級聯的,至少擁有一個上級證書(根證書)。因此在咱們前面的例子中的「ebiz.isir.cmu.edu」這張證書是很奇怪的,不是標準的證書。這張證書是沒法驗證的,只在學校內部網上使用,默認接收就好了(瀏覽器會把它當成根證書來處理)。

關於數字證書,我還有幾點想要提一下:

  1. 數字證書自己不加密,加密的是數字證書的hash。數字證書加密了就很麻煩了,如何獲知發證機關呢?不知道發證機關就不知道解密的公鑰啊!還有,明文的數字證書能夠顯示數字證書的信息,即便不能驗證數字證書的真僞,可是給了人爲判斷一個機會。

  2. 數字證書中的公鑰能夠是本身指定的,也能夠是發證機關生成的。不一樣的發證機關可能有不一樣的要求。

  3. 申請證書的過程是安全的。若是申請證書的過程都不安全的話,後面的一切都免談了。現實生活中,申請數字證書每每要求郵寄,或者電話,傳真,甚至當面申請的。

5、SSL的基本原理

如今回到咱們最原始的問題,因爲Internet的架構問題,信息在網絡上傳輸是很容易被別人獲取的,那如何創建一個安全的傳輸網絡呢?前面咱們討論了不少保證信息安全的技術,而SSL就是創建在這些技術的基礎上的一套協議,用來保證通訊的安全。SSL全稱是 Secure Sockets Layer,它是一種間於傳輸層(好比TCP/IP)和應用層(好比HTTP)的協議。具體的SSL協議很複雜,我這裏只講一個大概。

最簡單的方法來保證通訊安全是用非對稱加密。咱們前面講過數字證書的認證,若是雙方都認證了對方的數字證書,那麼每次傳輸信息的時候都用對方的公鑰加密,這樣就只有對方能解密,從而保證了信息的安全。可是對於平常應用(好比網頁瀏覽)有兩個問題:

  1. 非對稱加密速度緩慢,消耗資源
    若是客戶端和服務器之間傳輸文件用非對稱加密的話,速度必定慢的忍無可忍。

  2. 不可能要求每一個用戶都去申請數字證書
    申請數字證書是一個至關麻煩的過程,要求每一個上網的用戶都擁有證書是不可能的事情。

SSL經過「握手協議」和「傳輸協議」來解決上述問題。握手協議是基於非對稱加密的,而傳輸協議是基於對稱加密的。根據不一樣的應用,SSL對證書的要求也是不同的,能夠是單方認證(好比HTTP, FTP),也能夠是雙方認證(好比網上銀行)。一般狀況下,服務器端的證書是必定要具有的,客戶端的證書不是必須的。下面兩張圖片顯示了SSL握手的過程。

0823dd54564e92589934e8ca9d82d158ccbf4e95
圖9:SSL握手,單方服務器認證

d058ccbf6c81800a56e5e72ab03533fa828b4795
圖10:SSL握手,雙方認證

握手協議能夠當作是客戶端和服務器協商的一個過程,結果就是一個對稱密鑰,而後就進入了傳輸協議的部分。也許,你在想,「如今還不簡單嗎?用這個對稱密鑰加密傳輸數據唄!」。否,沒那麼簡單。先來看一下結果,等會兒再解釋緣由。在通訊雙方協商出一個對稱密鑰之後,他們用這個密鑰來加密傳輸的數據。同時爲每一個消息生成時間戳,用此密鑰爲消息和相應的時間戳生成消息認證碼(MAC)。也就是說,每次發送的內容包括 Encrypt(message) + MAC(message + timestamp)

這麼作有幾個好處:

1. 防止消息的篡改

所謂消息篡改就是有第三者插在通訊雙方之間,篡改往來的消息。因爲消息是加密的,第三者不能得到消息的內容,可是他能夠閉着眼睛瞎改。若是沒有MAC的話,接受者就沒法判斷此消息是否被篡改過。

2. 防止消息重放

消息的重放是隻第三者記錄下通訊雙方的每一次發送的消息,雖然他不能得到消息的內容。可是它能夠經過從新發送客戶端或者服務端的信息來把本身裝成是客戶端或者服務端。若是在MAC裏面加上了時間戳,消息接收方驗證時間戳就能夠阻止消息的重放***。

SSL的基本思想是用非對稱加密來創建連接(握手階段),用對稱加密來傳輸數據(傳輸階段)。這樣既保證了密鑰分發的安全,也保證了通訊的效率。

經過上面對SSL的分析,咱們能夠看到,SSL並不能阻止別人得到你傳輸的數據,可是因爲你傳輸的數據都是加密過的,別人拿到了毫無用處,同樣能夠保護信息的安全。還有一點須要強調一下,SSL並不依賴於TCP,它能夠創建在任何可靠的傳輸層協議(好比TCP)之上。也就是說SSL是不能創建在UDP之上的。這是顯然的,若是傳輸都不可靠,偶爾丟兩個包或者包的順序換一換的話,怎麼保證安全呢?

結束語

信息安全這東西平時看起來挺懸,你們都知道重要,可是不多有人真的在意。我相信90%的網民是不考慮信息安全這件事的,或者說有的根本不知道。一般狀況下,瀏覽器報告什麼證書不合法,用戶都是直接點OK跳過。而做爲搞計算機的專業人員,你能夠不在意,但你不能不明白。這篇文章不是什麼信息安全的教程,只是我本身學習的一個總結,怕之後忘記了,還有東西讓我翻翻回憶一下,方便本身也造福他人。

相關文章
相關標籤/搜索