压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

SSL/TLS協議詳解

  SSL/TLS協議詳解

  SSL(Secure Sockets Layer,安全套接層),及其繼任者 TLS(Transport Layer Security,傳輸層安全)是為網絡通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。

  為Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程中不會被截取及竊聽。

  SSL協議位于TCP/IP協議與各種應用層協議之間,為數據通訊提供安全支持。SSL協議可分為兩層:

  SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。

  SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用于在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。

  SSL協議提供的服務主要有:

  1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器;

  2)加密數據以防止數據中途被竊取;

  3)維護數據的完整性,確保數據在傳輸過程中不被改變。

  一、什么是SSL?

  SSL或者Secure Socket Layer,是一種允許web瀏覽器和web服務器通過一個安全的連接進行交流的技術。這意味著將被發送的數據在一端被翻譯成密碼,傳送出去,然后在另一端解開密碼,再進行處理。這是一個雙向的過程,也就是瀏覽器和服務器都需要在發送數據之前對它們進行加密。

  SSL協定的另一個重要方面是認證(Authentication)。這就是說,在你開始試圖通過一個安全連接與一個Web服務器交流的時候,這個服務器會要求你的瀏覽器出示一組證件,通過“鑒定”的方式來證明這就是你所聲明的網站。在某些情況下,服務器還會要求你的web瀏覽器的認證書,證明你就是你所說的那個人。這就是所知的“客戶認證”,盡管實際情況中,更多地用在商務-對-商務(B2B)交易,而不是對個人用戶。大多數有SSL功能的web服務器不要求客戶認證(Client Authentication)。

  二、證書:Certificate

  為了能實施SSL,一個web服務器對每個接受安全連接的外部接口(IP地址)必須要有相應的認證書(Certificate)。關于這個設計的理論是一個服務器必須提供某種合理的保證以證明這個服務器的主人就是你所認為的那個人,特別是在接收任何敏感信息之前要這樣做。關于Certificates的更廣泛的解釋超過了這個文檔資料的范圍,就把一個認證書當作一個英特網地址的“數碼駕駛執照”。這個認證書要陳述與這個網站相關聯的公司,以及這個網站的所有者或系統管理員的一些基本聯系信息。

  這個"駕駛執照"由所有人以密碼方式簽字,其他人非常難偽造。對于進行電子商務 (e-commerce)的網站,或其他身份認證至關重要的任何商業交易,認證書要向大家所熟知的認證權威 (Certificate Authority (CA))如VeriSign或Thawte來購買。這樣的認證書可用電子技術證明屬實——實際上,認證權威單位會擔保它發出的認證書的真實性,如果你信任發出認證書的認證權威單位的話,你就可以相信這個認證書是有效的。

  從技術上說,SSL 證書(也稱為數字證書)將身份與一對可用于加密和簽名數字信息的電子密鑰綁定。SSL 證書能夠實現對某人自稱有權使用特定密鑰的聲明的驗證,有助于防止有人使用欺騙性密鑰來模擬其他用戶。當與加密配合使用時,SSL 證書可提供完整的安全解決方案,可以保證參與事務的一方或各方的身份。

  SSL 證書是由受信任的第三方(稱為證書頒發機構 (CA))發放的。CA 的作用有些像護照辦理處。CA 必須采取一些措施來確定要向其發放 ID 的人或組織的身份。一旦 CA 建立某個組織的身份后,就可以發出一個包含該組織的公鑰的證書,并用 CA 的私鑰對其簽名。

  通過使用 SSL 證書,您就能在自己的站點上開展驗證身份的、加密的在線商務活動。訪問您站點的用戶將可以向站點提交信用卡號或其他個人信息,從而保證他們真心實意與您進行業務交易(并非是騙子),并且他們發送給您的信息不會被目標接收者以外的任何人截取或解密。您的 SSL 證書將包含下列信息:

  您的組織的公用名稱(如 www.bea.com

  其它標識性信息(如 IP 和物理地址)

  您的公鑰

  公鑰的到期日期

  發出此 ID 的 CA 的名稱(如 VeriSign)

  一個唯一的序列號

  VeriSign 的數字簽名

  三、證書格式

  主要的證書類型有:

  PEM

  DER

  PKCS#12

  PEM

  可以包括所有私鑰(RSA 和 DSA)、公鑰(RSA 和 DSA)和 (x509) 證書。它存儲用 Base64 編碼的 DER 格式數據,用 ascii 報頭包圍,因此適合系統之間的文本模式傳輸。

  —–BEGIN CERTIFICATE—–

  MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx

  EzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xFTAT

  BgNVBAoTDEJFQSBXZWJMb2dpYzERMA8GA1UECxMIU2VjdXJpdHkxIzAhBgNVBAMT

  GkRlbW8gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9zdXBw

  b3J0QGJlYS5jb20wHhcNMDAwNTMwMjEzODAxWhcNMDQwNTEzMjEzODAxWjCBjDEL

  MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG

  cmFuY2lzY28xFTATBgNVBAoTDEJFQSBXZWJMb2dpYzEZMBcGA1UEAxMQd2VibG9n

  aWMuYmVhLmNvbTEeMBwGCSqGSIb3DQEJARYPc3VwcG9ydEBiZWEuY29tMFwwDQYJ

  KoZIhvcNAQEBBQADSwAwSAJBALdsXEHqKHgs6zj0hU5sXMAUHzoT8kgWXmNkKHXH

  79qbPh6EfdlriW9G/AbRF/pKrCQu7hhllAxREbqTuSlf2EMCAwEAATANBgkqhkiG

  9w0BAQQFAANBACgmqflL5m5LNeJGpWx9aIoABCiuDcpw1fFyegsqGX7CBhffcruS

  1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=

  —–END CERTIFICATE—–

  DER

  辨別編碼規則 (DER) 可包含所有私鑰、公鑰和證書。它是大多數瀏覽器的缺省格式,并按 ASN1 DER 格式存儲。它是無報頭的 - PEM 是用文本報頭包圍的 DER。

  PKCS#12

  公鑰加密標準 #12 (PKCS#12) 可包含所有私鑰、公鑰和證書。其以二進制格式存儲,也稱為 PFX 文件。

  四、加密算法

  加密算法有倆大類,第一種是不基于KEY的,另一種是不基于KEY的。

  基于KEY的,舉個簡單的例子,我要加密"fordesign"這么一串字符,就把每個字符都變成它的后一個字符,那么就是"gpseftjhm"了,這樣的東西人家當然看不明白,接收方用相反的方法就可以得到原文。當然這只是個例子,現在應該沒人用這么搞笑的加密算法了吧。

  不基于KEY,好象一直用到了計算機出現。我記得古中國軍事機密都是用這種方式加密的。打戰的時候好象軍隊那些電報員也要帶著密碼本,也應該是用這種方式加密的。這種算法的安全性以保持算法的保密為前提。

  這種加密算法的缺點太明顯了,就是一旦你的加密算法給人家知道,就肯定掛。日本中途島慘敗好象就是密碼給老米破了。設計一種算法是很麻煩的,一旦給人破了就沒用了,這也忑浪費。

  我們現在使用的加密算法一般是基于key的,也就是說在加密過程中需要一個key,用這個key來對明文進行加密。這樣的算法即使一次被破,下次改個key,還可以繼續用。key是一個什么東西呢?隨便你,可以是一個隨機產生的數字,或者一個單詞,啥都行,只要你用的算法認為你選來做key的那玩意合法就行。

  這樣的算法最重要的是:其安全性取決于key,一般來說取決于key的長度。也就是說應該保證人家在知道這個算法而不知道key的情況下,破解也相當困難。其實現在常用的基于KEY的加密算法在網絡上都可以找到。

  基于key的加密算法又包括倆類:對稱加密和不對稱加密。

  對稱加密指的是雙方使用完全相同的key, 最常見的是DES. DES3, RC4等。對稱加密算法的原理很容易理解,通信一方用KEK加密明文,另一方收到之后用同樣的KEY來解密就可以得到明文。

  不對稱加密指雙方用不同的KEY加密和解密明文,通信雙方都要有自己的公共密鑰和私有密鑰。

  舉個例子比較容易理解, 我們們假設通信雙方分別是A、B。

  A 擁有 KEY_A1、KEY_A2, 其中KEY_A1是A的私有密鑰,KEY_A2是A的公共密鑰。

  B 擁有 KEY_B1、KEY_B2, 其中KEY_B1是B的私有密鑰,KEY_B2是B的公共密鑰。

  公共密鑰和私有密鑰的特點是,經過其中任何一把加密過的明文,只能用另外一把才能夠解開。也就是說經過KEY_A1加密過的明文,只有KEY_A2才能夠解密,反之亦然。

  通信過程如下:

  A——–>KEY_A2————>B

  A<——–KEY_B2<————A

  這個過程叫做公共密鑰交換,老外管這叫key exchange。

  之后A和B就分別用對方的公共密鑰加密,用自己的私有密鑰解密。

  一般公共密鑰是要發布出去的,然后你通過自己的私有密鑰加密明文,人家用你的公共密鑰解密,如果能解開,那么說明你是加密人,這就是SSL使用的驗證機制。

  我如果要發給你,我就用你的公鑰加密,這讓只有你能用自己的私鑰解密。如果我用自己的私鑰加密,然后發布出去,這就不屬于保密,而是屬于認證,證明這條信息是我發的,而且我不能賴帳,因為私鑰只有我自己知道。

  常用的不對稱加密一般有RSA、 DSA、 DH等。我們一般使用RSA。

  五、數字簽名

  數字簽名也是不對稱加密算法的一個重要應用,理解它對于理解SSL很重要的,放在這里一起介紹一下。

  簽名是什么大家都很熟悉吧?證明該東西是你寫的,是你發布的,你就用簽名搞定。看看那些重要文件都要頭頭簽名。數字簽名就是數字化的簽名了。記得公用密鑰和私有密鑰的特征嗎?只有你一個人有你自己的私有密鑰。而你的公用密鑰是其他人都知道的 了。那么你在寫完一封郵件之后,用自己的私有密鑰加密自己的名字,接收人用你的公共密鑰解開一看,哦,是你發的。這就是你的數字簽名過程了。

  上面的解釋是很簡化的了,其實數字簽名比這個復雜多了,但我們沒有了解的必要,知道數字簽名是這么一回事就可以了。

  還有一種我們需要知道的加密算法,其實我不覺得那是加密算法 ,應該叫哈希算法,英文是message digest, 是用來把任何長度的一串明文以一定規則變成固定長度的一串字符串。它在SSL中的作用也很重要,以后會慢慢提及的。一般使用的是MD5、SHA、base64不是加密算法,但也是SSL經常使用的一種算法,它是編碼方式,用來把asc碼和二進制碼轉來轉去的。

  具體的加密解密過程我們不需要了解,因為SSL根本不關心。但了解加密算法的一些基本原理是必要的,否則很難理解SSL。

    文章來源:http://1192748.blog.51cto.com/1182748/1583827

上一篇:安卓防火墻 PS DroidWall

下一篇:解密WPA/WPA2加密高速破解的真相