加密解密基礎

現代網絡通信中網絡安全是至關重要,安全的最基本的當然就是加密與解密了,今天跟大家分享一下加密與解密的基礎。

安全的目標:

  保密性:confidentiality

  完整性:integrity

  可用性:availability

***類型:

  威脅保密性的***:竊聽、通信量分析;

  威脅完整性的***:更改、僞裝、重放、否認;

  威脅可用性的***:拒絕服務(DoS);

解決方案:

  技術方面:加密和解密;

    傳統加密方法:替代加密方法、置換加密方法

    現代加密方法:現代塊加密方法

  服務方面:用於抵禦***的服務,也即是爲了上述安全目標而特地設計的安全服務;

    認證機制

    訪問控制機制

加密算法和協議:

  1、單向加密:即提出數據指紋;

    特性:定長輸出、有雪崩效應;

    功能:完整性驗證;

    缺陷:只能加密,不能解密;

    常用算法:MD5(128bits)、sha1(160bits)、sha224、sha256、sha384、sha512...

  2、對稱加密:加密和解密使用同一個密鑰;

    特性:(1)加密和解密使用同一個密鑰;(2)將原始數據分割成爲固定大小的塊,逐個進行加密;

    功能:加密性好,加密速度快;

    缺陷:(1)密鑰過多;(2)密鑰分發困難;

    常用算法:3DES(Triple DES)、AES(128bits, 192bits, 256bits, 384bits)、Blowfish、RC6...

  3、公鑰加密:密鑰分爲公鑰與私鑰;

    私鑰:secret key,通過工具創建,使用者自己留存,必須保證其私密性;

    公鑰:pubkey,從私鑰中提取產生,可公開給所有人;

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

    功能:

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

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

     數據加密:不常用,比對稱加密要慢3個數量級;

    常用算法:RSA(即可簽名,也可加解密)、DSA(只能簽名,不可加解密)、ELGamal...

  介紹了以上三種加密算法,下面來具體說一下加密和解密的過程:

    加密過程:

      1、數字簽名:

       (1)發送者使用單向加密技術,提取原數據特徵碼;

       (2)發送者使用自己私鑰加密特徵碼,並附加於原數據後方;

      2、密鑰交換:

       (1)發送者使用對稱加密技術對附有數字簽名的數據進行加密,並生成一個臨時對稱密鑰;

       (2)發送者使用接收者的公鑰加密生成的臨時對稱密鑰,並附加於加了密的數據後方;

    解密過程:

     1、密鑰交換:

       (1)接收者用自己私鑰解密加了密的對稱密鑰,得到臨時密鑰;

       (2)接收者使用得到的臨時對稱密鑰,解密數據,得到附有數字簽名的數據;

     2、身份認證:接收者使用發送者的公鑰解密數字簽名,驗證發送者身份,並得到原特徵碼;

     3、數據完整性驗證:接收者用單向加密技術,提取數據特徵碼,並與原特徵碼比較,驗證數據完整性

這種加密和解密的過程即能保證數據的安全性與完整性,也能保證通信雙方身份的認證。但由於公鑰是所有人可以拿到的,所有這樣的安全機制還是有安全隱患,即中間人欺騙。不過別擔心,有CA機構可以解決此問題,CA機構將在後面再做詳細介紹。下面我們繼續介紹最後一種加密協議:密鑰交換。

  4、密鑰交換:IKE:Internet Key Exchange

    實現方法有兩種:

     (1)公鑰加密,在講公鑰加密與加密、解密過程已說到過,不再多說;

     (2)DH:Deffie-Hellman 

       通信雙方無需在網絡上傳送公鑰,通過協商生成隨機數並在網絡上傳送隨機數,

      通過計算隨機數生成密鑰。下面舉例說明:

       (1)A和B爲通信雙方,雙方先協商生成兩個隨機數m和n,並在網絡上傳送;

         現在狀態:A和B同時擁有兩個隨機數m和n;

       (2)A和B再各自生成一個私有的隨機數,不在網絡上傳送,只有自己知道自己私有隨機數;

     比如:A生成x隨機數,B生成y隨機數,且只有自己知道自己的私有隨機數;

        現在狀態:A擁有3個隨機數:m、n、x,其中x只有自己知道,m和n和B共享;

             B擁有3個隨機數:m、n、y,其中y只有自己知道,m和n和B共享;

       (3)計算隨機數,並將結果發送對方。

        A: --> m^x%n ==> B

        B: --> m^y%n ==> A

       (4)收到對方的結果,再用自己私有的隨機數和結果計算,得到相同的密鑰;

        A: (m^y%n)^x = m^xy%n 

        B: (m^x%n)^y = m^xy%n

        m^xy%n即爲雙方協商後計算出的密鑰,提高了安全性,即使別人獲取了m和n兩個數值,

       也無法計算出x和y的數值。

接下來我們再介紹一下防止中間人欺騙CA機構,CA機構是一個第三方可信機構,爲通信方頒發證書,可讓通信方可靠獲取對方公鑰的基礎保證機制。他是由PKI一套架構體系來完成的。

PKI:Public Key Infrastructure

  公鑰基礎設施,以CA爲核心生成的一套架構體系,提供證書服務,保證證書的合法性。組成部分如下:

    簽證機構:CA

    註冊機構:RA

    證書吊銷列表:CRL

    證書存取庫:CB

  通過X.509v3定義了證書的結構以及認證協議標準,結構及標準如下:

   版本號

   序列號

   簽名算法ID

   發行者名稱

   有效期限

   主體名稱

   主體公鑰

   發行者的惟一標識

   主體的惟一標識

   擴展

   發行者的簽名

那麼CA是如何來保證通信雙方證書的合法性及通信雙方可靠獲取對方公鑰的呢?CA工作過各如下:

  1、自簽證書:CA先給自己頒發一個證書,證書內容如X.509v3所規定,並將證書發送給有需要的通信方。取得通信方對CA的信任,通信方並可從證書中獲取CA的公鑰;

  2、CA頒發證書:通信方向CA申請註冊證書,CA將簽署好證書並在證書後方加數字簽名,再將證書頒給申請方;

  3、通信方獲取並驗證證書:

   (1)通信方獲取自己證書或獲取對方證書後,可用CA公鑰解密證書後方數字簽名,確認證書確實是自己所信任的CA所頒發;

   (2)用同樣的單向加密算法計算證書特徵碼,對比原特徵碼,驗證證書完整性;

    (3)檢查證書有效期,看證書是否在有效期內;

    (4)驗證證書內主體名稱,是否是通信對方的名稱;

    (5)檢查證書是否被吊銷;

至此我們再來總結一下通信雙方通信過程:

  1、通信方獲取CA證書,並申請取得自己證書;

  2、通信雙方協商各加密算法;

  3、通信雙方協商獲取對方公鑰並驗證證書;

  4、發送方加密數據,併發送;

  5、接收方接收數據,並解密驗證;

具體過程以上都介紹過,此處不再詳細說明了。

至此有關安全加密解密基礎的內容就結束了。只是個人總結,希望相互學習!

 

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