加密技術---openss 理論

OpenSSL算法

 

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

wKiom1cE_H_SF4j4AAYx0hLPSus236.bmp


ssl/TLS 是什麼?爲何能夠實現數據的加密傳輸?bash

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


什麼是openssl?併發

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

libcrypto:加密庫(不通訊時候能夠單純加密本地數據)工具

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



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




密鑰算法和協議加密

   對稱加密spa

       特性:

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

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

      缺陷:

           一、密鑰過多;

           二、密鑰分發困難;

      算法:3DES,AES,Blowfish



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

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

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

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

             數據加密

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


    單向加密

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

       

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



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

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

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




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

wKiom1cFDryx3RtdAAYwRgz0fFs086.bmp

一、同理B收到數據後,用本身的私鑰解密,獲得對稱密鑰。

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

三、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後,計算生成本次會話全部到的「會話密鑰」;

        向客戶端發送以下信息:

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

        服務端握手結束通知;

相關文章
相關標籤/搜索