加密技術---openss 理論

OpenSSL

 

兩臺主機之間怎樣進行安全的數據傳輸呢?

wKiom1cE_H_SF4j4AAYx0hLPSus236.bmp


ssl/TLS 是什麼?爲什麼可以實現數據的加密傳輸?

 ssl/TLS是安全的套接字層,在應用層和傳輸層又虛擬了一個層,當http封裝完後傳輸給TCP層時候,調用SSL層來對數據進行加密


什麼是openssl?

openssl 是SSL的開源的實現。它有三部分構成。

libcrypto:加密庫(不通信時候可以單純加密本地數據)

libssl (ssl/TLS的實現。基於會話的、實現身份認證、數據機密性和會話完整性的ssl/TLS庫)openssl 多用途的命令行工具



***類型:
      威脅保密性的***:竊聽、通信量分析;
      威脅完整性的***:更改、僞裝、重放、否認
      威脅可用性的***:拒絕服務(DoS)
解決方案:
      技術(加密和解密)、
      服務(用於抵禦***的服務,也即是爲了上述安全目標而特地設計的安全服務)
      
      服務: 認證機制 、訪問控制機制




密鑰算法和協議

   對稱加密

       特性:

           1、加密、解密使用同一個密鑰;

           2、將原始數據分割成爲固定大小的塊,逐個進行加密; 注:可以保證數據的機密性

      缺陷:

           1、密鑰過多;

           2、密鑰分發困難;

      算法:3DES,AES,Blowfish



  公鑰加密 密鑰分爲公鑰與私鑰

    特點:用公鑰加密的數據,只能使用與之配對兒的私鑰解密;反之亦然;

       用途:數字簽名:主要在於讓接收方確認發送方的身份;

             密鑰交換:發送方用對方公鑰加密一個對稱密鑰,併發送給對方;

             數據加密

     算法:RSA(主要用於密鑰交換,也可簽名,也可以加密和解密數據), DSA(只能用於簽名),           ELGamal


    單向加密

          特性:定長輸出、雪崩效應;提出數據指紋;只能加密,不能解密;

       

          算法:md5: 128bits  sha1 160bits  sha224, sha256, sha384, sha512



你知道怎樣保證密鑰傳輸的安全性?密鑰交換: IKE

   公鑰加密RSA(使用對方的公鑰加密)  缺點是:在網上傳輸了

   Diffie-Hellman(密碼不在網上傳輸)




A和B傳輸數據如何保證數據機密性、完整性、身份驗證的呢? 如下圖

wKiom1cFDryx3RtdAAYwRgz0fFs086.bmp

1、同理B收到數據後,用自己的私鑰解密,得到對稱密鑰。

2、然後用對稱密碼解密整個數據,保證了數據的機密性。B用A的公鑰能夠解密數據特徵碼,可以驗證數據來自於A。

3、B再次用單向加密算法就算出數據特徵碼進行比對,如果一樣表示數據沒有改動,驗證了數據的完整性。



爲什麼要用到pki?

wKiom1cFG7yS8_aEAApn_nUQVB8887.bmp

PKI: 公鑰基礎設施:可以用來驗證數據來源的合法性

 組成:   簽證機構:CA

          註冊機構:RA

         證書吊銷列表:CRL

         證書存取庫:





SSL會話主要三步:

     客戶端向服務器端索要並驗正證書;

     雙方協商生成“會話密鑰”;

     雙方採用“會話密鑰”進行加密通信;




如圖:

 client                         server

A-----------------------------------B

 ------->hello

                hello <---------------              

驗證證書,公鑰加密隨機數--------->

                               B計算所有的隨機密鑰,生成一個對稱密鑰

             服務端握手結束通知




SSL Handshake Protocol:

第一階段:ClientHello:

      支持的協議版本,比如tls 1.2;

      客戶端生成一個隨機數,稍後用戶生成“會話密鑰”

      支持的加密算法,比如AES、3DES、RSA;

      支持的壓縮算法;


第二階段:ServerHello

        確認使用的加密通信協議版本,比如tls 1.2;

        服務器端生成一個隨機數,稍後用於生成“會話密鑰”

        確認使用的加密方法;

        服務器證書;


第三階段:

        驗正服務器證書,在確認無誤後取出其公鑰;(發證機構、證書完整性、證書持有者、證書有效期、吊銷列表)

        發送以下信息給服務器端:一個隨機數;

        編碼變更通知,表示隨後的信息都將用雙方商定的加密方法和密鑰發送;

        客戶端握手結束通知;


第四階段:

        收到客戶端發來的第三個隨機數pre-master-key後,計算生成本次會話所有到的“會話密鑰”;

        向客戶端發送如下信息:

        編碼變更通知,表示隨後的信息都將用雙方商定的加密方法和密鑰發送;

        服務端握手結束通知;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章