天天看點

加密技術---openss 理論

OpenSSL

兩台主機之間怎樣進行安全的資料傳輸呢?

ssl/TLS 是什麼?為什麼可以實作資料的加密傳輸?

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

什麼是openssl?

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

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

libssl (ssl/TLS的實作。基于會話的、實作身份認證、資料機密性和會話完整性的ssl/TLS庫)openssl 多用途的指令行工具

密鑰算法和協定

   對稱加密

       特性:

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

           2、将原始資料分割成為固定大小的塊,逐個進行加密; 注:可以保證資料的機密性

      缺陷:

           1、密鑰過多;

           2、密鑰分發困難;

      算法:3DES,AES,Blowfish

  公鑰加密 密鑰分為公鑰與私鑰

    特點:用公鑰加密的資料,隻能使用與之配對兒的私鑰解密;反之亦然;

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

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

             資料加密

     算法:RSA(主要用于密鑰交換,也可簽名,也可以加密和解密資料), DSA(隻能用于簽名),           ELGamal

    單向加密

          特性:定長輸出、雪崩效應;提出資料指紋;隻能加密,不能解密;

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

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

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

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

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

加密技術---openss 理論

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

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

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

為什麼要用到pki?

加密技術---openss 理論

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後,計算生成本次會話所有到的“會話密鑰”;

        向用戶端發送如下資訊:

        服務端握手結束通知;

繼續閱讀