加密解密基礎及openssl構建私有CA初步

        方今社會,互聯網的普及給我們的生活帶來了極大的便利,但任何事物都有其兩面性:窗戶打開了,陽光和新鮮的空氣進來了,蒼蠅也進來了。如何在利用互聯網帶來便利的同時,又儘量規避其風險,保護自己網絡通信中信息的安全及私密,成爲了一個熱門話題,下面本文將主要探討兩個方面的問題,不當之處還請各位前輩不吝斧正。


(一)加密解密基礎


        首先要搞清楚的一個問題是,我們平時的網絡通信存在哪些風險呢?目前互聯網上常見的***方式有兩種:主動***和被動***。主動***包括報文僞裝、重複、消息篡改、拒絕服務等;被動***主要是監聽等。

        基於對抗這種種***的目的,我們就需要對自己在網絡通信中的數據進行加密,常見的加密方式有三種:對稱加密、公鑰加密和單向加密。       

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

            依賴於:算法和密鑰

                因爲算法可以公開,所以其安全性依賴於密鑰,而非算法

             常見算法

                DES:(Data Encryption Standard),使用56bits密鑰

                3DES

                AES:(Advanced Encryption Standard),可自定密鑰長度,最長512bits

                Blowfish

                Twofish

                IDEA

                RC6

                CAST5

            特性

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

                2、將明文分隔成固定大小的塊,逐個進行加密;

            缺陷

                1、密鑰過多

                2、密鑰分發難


    非對稱加密(公鑰加密):密鑰成對兒出現,公鑰從私鑰中提取而來

            公鑰:public key--公開給所有人獲取

            私鑰:secret key--僅允許個人使用

            常見算法

                RSA

                DSA:僅能做數字簽名,用於身份認證

                ELGamal

       特性

         1、使用公鑰加密的數據,只能使用與此公鑰配對兒的私鑰解密;反之亦然;

                2、密鑰長度較大,最短512bits,常見2048bits、4096bits;

                3、常用於數字簽名和密鑰交換;

            用處

                身份認證:私鑰擁有者用自己的私鑰加密的數據,只要能用其公鑰解密,即可認證其身份

                密鑰交換:與被通信方通信前,首先獲取對方的公鑰,自己生成一個加密密碼,用對方的公鑰加密,併發給對方--用於密鑰交換

                數據加密:因加密速度太慢(比對稱加密慢3個數量級0,所以很少用於數據加密


    單向加密:用於提取數據特徵碼

            依賴於算法

            特性

                1、定長輸出:無論原來數據大小,加密結果的長度一樣;

                2、雪崩效應:原始數據的微小變化,將會導致結果的巨大變化;

                3、不可逆;

            常見算法

                MD5:128bits定長輸出

                SHA1:160bits定長輸出

                SHA256

                SHA384

                SHA512


                CRC32:循環冗餘校驗碼

            用處

                數據完整性校驗


        由上述三種加密方式的特性我們可以知道,在網絡通信中,我們主要藉助於對稱加密來加密我們的通信數據,藉助於公鑰加密來完成對稱加密密鑰的交換及身份認證,藉助於單向加密來驗證數據的完整性,那麼一次完整的加密通信過程應該如下:

        發送者:

            1、使用單向加密算法提取生成數據的特徵碼;

            2、使用自己的私鑰加密特徵碼附加在數據後面;

            3、生成用於對稱加密的臨時密鑰;

            4、用此臨時密鑰加密數據和已經使用私鑰加密後的特徵碼;

            5、使用接收方的公鑰加密此臨時密鑰,附加在對稱加密後的數據後方;


        接收方:

            1、使用自己的私鑰解密加密的臨時密鑰;從而獲得對稱密鑰;

            2、使用對稱密鑰解密對稱加密的數據和私鑰加密的特徵碼密文;獲得數據和特徵碼密文;

            3、使用發送方的公鑰解密特徵碼密文,從而獲得從計算生成的特徵碼;

            4、使用與對方同樣的單向加密算法計算數據的特徵碼,並與解密而來的進行比較;

   
    上述加密方式就基本保障了整個通信過程的安全性,但是不知各位有沒有發現,其中有一個極大的漏洞:我們如何確保自己獲得的對方的公鑰是安全合法的呢?由此我們要引入PKI和CA的概念。

    1、PKI

    PKI是Public Key Infrastructure的首字母縮寫,翻譯過來就是公鑰基礎設施;PKI是一種遵循標準的利用公鑰加密技術爲電子商務的開展提供一套安全基礎平臺的技術和規範;包含四個部分:簽證機構(CA)、註冊機構(RA)、證書吊銷列表(CRL)和證書存取庫。

   

    2、CA

    CA是PKI系統中通信雙方都信任的實體,被稱爲可信第三方(Trusted Third Party,簡稱TTP),是整個PKI組成的基石和靈魂。目前其證書版本爲x509的v3版,格式如下圖所示:

    wKiom1U3njSy7joCAADoxe_14PI973.jpg


 (二)使用openssl命令構建私有CA


   openssl命令初解


   1、使用openssl命令生成密鑰對兒

  wKioL1U3oK6zwCesAAUo67tHjDk714.jpg

  wKioL1U3oQWhnZi7AAK7sjvyHTI771.jpg


   2、openssl命令的配置文件及工作目錄

   wKioL1U3osOSpwRNAAPjprFnkRI407.jpg

 wKioL1U3oxKzALSgAADr5bpx4_c643.jpg

   

   使用openssl構建私有CA及證書籤發、吊銷流程

    

   前期準備:構建私有CA

 wKioL1U3pSqA3vKTAAGclSlkfwc277.jpg

wKiom1U3pF7zyzdtAASg7ZLYE8I825.jpg

wKiom1U3pJSAvt22AAK_hrhFmcY255.jpg  

  

   證書籤發及吊銷流程

   wKiom1U3pWnzNDcxAAE8RezkVXY314.jpg

   wKioL1U3pzOCn__lAANLcG6QDaE538.jpg

   wKioL1U3p7PzQe_3AAOWmkV9l-Q484.jpg

   wKiom1U3ppTgVBPQAAElrz_hhoQ215.jpg

   wKioL1U3qCeTfQDWAAVzfotDPmk570.jpg

   wKiom1U3pv-Tzk2eAANPbMQz3m4853.jpg

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