加密赋续、解密原理和openssl自建CA過程詳解

一牙寞、加密和解密相關知識簡介

1袜啃、信息安全標準

NIST(National Institute of Standards and Technology)美國國家標準與技術研究院,制定了網(wǎng)絡信息安全與保密的三個要素:(這三大要素被簡稱為:CIA)

  • 保密性(confidentiality):信息不泄露給非授權用戶崔拥、實體或過程极舔,或供其利用的特性。(一般包括數(shù)據(jù)保密性链瓦、隱私性拆魏。)
  • 完整性(Integrity):數(shù)據(jù)未經(jīng)授權不能進行改變的特性。即信息在存儲或傳輸過程中保持不被修改慈俯、不被破壞和丟失的特性渤刃。(一般包括數(shù)據(jù)完整性、系統(tǒng)完整性贴膘。)
  • 可用性(Availability):可被授權實體訪問并按需求使用的特性卖子。即當需要時能否存取所需的信息。例如網(wǎng)絡環(huán)境下拒絕服務刑峡、破壞網(wǎng)絡和有關系統(tǒng)的正常運行等都屬于對可用性的攻擊洋闽;

盡管三要素能保證網(wǎng)絡信息安全和保密,但從很多從事網(wǎng)絡安全的研究人員的反饋發(fā)現(xiàn)突梦,除了CIA外诫舅,還有另外兩個標準也被經(jīng)常提醒:

  • 真實性:一個實體是真實的,是可被驗證的宫患。要確保數(shù)據(jù)發(fā)送方的確是它所聲稱的那個人刊懈。
  • 可追溯性:一旦受到攻擊,能追溯攻擊發(fā)生的原處在什么地方撮奏。

2俏讹、OSI組織定義的安全框架x.800

安全攻擊:

  • 被動攻擊:竊聽、(常見報文捕獲畜吊、監(jiān)聽流量)
  • 主動攻擊:偽裝泽疆、重播、消息修改玲献、拒絕服務

安全機制:

  • 加密殉疼、數(shù)字簽名梯浪、訪問控制、數(shù)據(jù)完整性瓢娜、認證交換挂洛、流量填充、路由控制眠砾、公證

安全服務:

  • 認證 :同等實體認證
  • 訪問控制
  • 數(shù)據(jù)保密性:連接保密性虏劲、無連接保密性、選擇域保密性褒颈、流量保密性
  • 數(shù)據(jù)完整性 :不允許插入柒巫、刪除、修改谷丸、重播
  • 不可否認性

3堡掏、加密方式和算法

(1)、對稱加密

對稱加密:采用單鑰密碼系統(tǒng)的加密方法刨疼,同一個密鑰可以同時用作信息的加密和解密泉唁。
對稱加密的算法:

DES : 數(shù)據(jù)加密標準(56位密鑰)
3DES
AES :高級加密標準(128,192揩慕,256亭畜,384,512)
Blowfish
Twofish
IDEA
RC6
CAST5

對稱加密的特性:

  • 加密漩绵、解密使用同一口令贱案;
  • 將明文分隔成固定大小的塊,逐個進行加密

對稱加密的缺陷:

  • 密鑰過多止吐;
  • 密鑰傳輸;
    密鑰交換侨糟、身份驗正碍扔、數(shù)據(jù)完整性

(2)、公鑰加密

公鑰加密:由對應的一對唯一性密鑰(即公開密鑰和私有密鑰)組成的加密方法秕重。

密鑰:public key, secret key (p/s)
公鑰是從私鑰中提取出來的不同。
公鑰加密,只能私鑰解密溶耘。私鑰加密二拐,也只能公鑰解密。

常用加密算法:

RSA
DSA:只能用于身份驗證
EIGamal

(3)凳兵、單向加密

單向加密:不可逆的加密
單向加密特性:

  • 定長輸出: 無論原始數(shù)據(jù)是多大百新,結果大小都相同的
  • 雪崩效應: 輸入的微小改變,將會引起結果的巨大改變

單向加密算法:

MD5(128位)庐扫、SHA1饭望、SHA256仗哨、SHA384、SHA512

二铅辞、加密和解密的過程和原理

首先問一個問題:

假設B與A通信厌漂,B向A發(fā)送報文,怎么才能保證B的報文安全斟珊、可靠地被A接收到苇倡,并且保證報文數(shù)據(jù)的完整性?

接下來圍繞著這個問題來說明一下囤踩。

加密和解密的過程和原理圖

加密解密過程和原理詳細說明:

1旨椒、發(fā)送端B

  • 為保證安全,要對報文加密高职。加密方法有三類:對稱加密钩乍、公鑰加密和單向加密。對稱加密不安全怔锌,單向加密是不可逆的寥粹,因而使用公鑰加密。

    問題:公鑰加密安全(一般為2048位)埃元,但是加密過程太慢了涝涤,不適用當前網(wǎng)絡需求,該怎么辦岛杀?

  • 為了解決上述問題阔拳,B可以用單向加密提取出報文的特征碼(特征碼能保證報文的數(shù)據(jù)完整性),再使用自身的私鑰對特征碼進行公鑰加密(特征碼數(shù)據(jù)小类嗤,對其進行公鑰加密速度快)糊肠,并把加密后的特征碼附加到報文后。(使用私鑰加密是為了驗證身份)

    問題:這種方式能實現(xiàn)數(shù)據(jù)完整性和身份驗證的檢驗遗锣,但是卻缺失了報文的數(shù)據(jù)保密性货裹,又該怎么辦?

  • 為了解決上述問題精偿,B在把加密的特征碼附加到報文后弧圆,把特征碼和報文當做一個數(shù)據(jù)(假設為data),使用對稱加密算法對該數(shù)據(jù)(data)加密得出一個密碼笔咽,再把密碼附加到該數(shù)據(jù)(data)后搔预。為了使得在傳輸過程中密碼不被其他人獲取或篡改,使用A的公鑰對密碼進行加密(只有A的私鑰能對其解密)叶组,把加密的密碼附加到數(shù)據(jù)data后拯田,再這些數(shù)據(jù)一并發(fā)送給A。

2扶叉、接收端A

  • A接收到B傳來的報文勿锅,利用自身的私鑰對其解密帕膜,獲得密碼。因為只有A的私鑰能對B傳來的報文(使用A的公鑰加密密碼)解密溢十,所以能防止其他人對該傳輸?shù)膱笪倪M行解密而獲得其中的信息垮刹,保證了數(shù)據(jù)的保密性。
  • A利用獲得的密碼解密其中對稱加密的數(shù)據(jù)张弛,獲得經(jīng)過加密的特征碼和原報文荒典。
  • A使用B的公鑰對該特征碼解密,能解密則說明該報文是B發(fā)送過來的吞鸭,實現(xiàn)了身份驗證寺董。(假設解密后的特征碼是fcode)
  • A使用同等單向加密算法對接收到的原報文提取其特征碼。使用該特征碼和解密后獲得的特征碼(fcode)做比較刻剥,如果一樣遮咖,則說明原報文的數(shù)據(jù)完整。

問題:以上這種方式能保證數(shù)據(jù)完整性造虏、身份驗證和數(shù)據(jù)的保密性御吞,在加密和解密的過程中都要用到對方的公鑰,如何在傳輸過程中安全可靠地獲得對方的公鑰就成了關鍵的一環(huán)漓藕,那該如何做呢陶珠?
答:安全可靠地獲取對方的公鑰靠CA(Certificate Authority )證書授權中心來實現(xiàn)。

因而接下來享钞,我們來說說CA揍诽。

三、CA(證書授權中心)

1栗竖、CA證書標準:x.509

x.509: 定義了證書結構和認證協(xié)議標準暑脆;(基于公鑰和數(shù)字簽名)
用于:IP安全、TLS/SSL(傳輸層安全)和S/MIME(安全電子郵件通信)


x.509證書標準詳細說明:

(1)版本號(默認為1狐肢,如果有多個擴展饵筑,可能為3)
(2)證書序列號(是一個整數(shù),在CA中唯一標識处坪,表明發(fā)行了多少個證書)
(3)算法參數(shù) (標志用了那種算法)
(4)發(fā)行者的名稱(CA自己的名字)
(5)有效期限
(6)主體名稱(證書擁有者名稱)(很關鍵!<茏ā同窘!)(個人用戶使用的是個人用戶名,主機使用的必須是主機名而不是ip地址)
(7)公鑰(最重要)(公鑰由證書擁有者提供)
(8)發(fā)行者的ID(CA的唯一編號)
(9)主體的ID(CA生成的證書擁有者唯一編號)
(10)擴展
(11)CA的簽名(用于驗證CA的來源合法性)

CA是相對于發(fā)送方B和接收方A的第三方部脚,是具有公信力的機構想邦。

2、驗證數(shù)字證書的過程

B在發(fā)送之前獲得A的數(shù)字證書或A在接收之前獲得B的數(shù)字證書委刘,都會去驗證該數(shù)字證書的真?zhèn)巍?br> 以B在發(fā)送之前獲得A的數(shù)字證書為例丧没,說明驗證數(shù)字證書的過程:

  1. 要用對應給A發(fā)數(shù)字證書的那個CA的公鑰去解密CA的簽名鹰椒,如果能解密,則說明A的數(shù)字證書確實是那個信任的CA所頒發(fā)的證書呕童。
  1. 解密出一段特征碼漆际,B再使用同樣的單向加密算法提取A的數(shù)字證書的特征碼,比較這兩個特征碼是否一樣夺饲,如果一樣奸汇,則表示獲得的A的數(shù)字證書是完整的。
  2. 此后往声,還要去驗證該數(shù)字證書中的持有者是不是A擂找,如果驗證通過,才可以確定該數(shù)字證書確實是A的數(shù)字證書浩销。
  3. 確認該數(shù)字證書的擁有者是A后贯涎,還要去查看該數(shù)字證書是否在有效期限內和是否在CA的數(shù)字證書吊銷列表中。

四慢洋、SSL層

1塘雳、SSL層

SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網(wǎng)絡通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議且警。
版本:sslv1, sslv2, sslv3

ssl是介于應用層和傳輸層之間的半層粉捻,一般被制作成公共共享庫,要想使用ssl就要調用ssl共享庫斑芜。

2肩刃、https通信過程

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道杏头,簡單講是HTTP的安全版盈包。即HTTP下加入SSL層,HTTPS的安全基礎是SSL醇王。

以https為例呢燥,進一步說明如何依靠CA來可靠的獲得通信對方的公鑰


https的主要實現(xiàn)過程說明:

(1)在通信之前,服務器端通過加密算法生成一對密鑰寓娩,并把其公鑰發(fā)給CA申請數(shù)字證書
(2)CA審核后叛氨,結合服務端發(fā)來的相關信息生成數(shù)字證書,并把該數(shù)字證書發(fā)回給服務器端棘伴。
(3)客戶端和服務器端經(jīng)tcp三次握手寞埠,建立初步連接。
(4)客戶端發(fā)送http報文請求并協(xié)商使用哪種加密算法焊夸。
(5)服務端響應報文并把自身的數(shù)字簽名發(fā)給服務端仁连。
(6)客服端下載CA的公鑰,驗證其數(shù)字證書的擁有者是否是服務器端(這個過程可以得到服務器端的公鑰)阱穗。(一般是客戶端驗證服務端的身份饭冬,服務端不用驗證客戶端的身份使鹅。)
(7)如果驗證通過,客戶端生成一個隨機對稱密鑰昌抠,用該密鑰加密要發(fā)送的URL鏈接申請患朱,再用服務器端的公鑰加密該密鑰
(8)客戶端把加密的密鑰和加密的URL鏈接一起發(fā)送到服務器。
(9)服務器端使用自身的私鑰解密扰魂,獲得一個對稱密鑰麦乞,再用該對稱密鑰解密經(jīng)加密的URL鏈接,獲得URL鏈接申請劝评。
(10)服務器端根據(jù)獲得的URL鏈接取得該鏈接的網(wǎng)頁內容姐直,并用客戶端發(fā)來的對稱密鑰把該網(wǎng)頁內容加密后發(fā)給客戶端。
(11)客戶端收到加密的網(wǎng)頁內容蒋畜,用自身的對稱密鑰解密声畏,就能獲得網(wǎng)頁的內容了。
(12)TCP四次揮手姻成,通信結束插龄。

五、openssl自建CA過程詳解

OpenSSL是套開放源代碼的軟件庫包科展,實現(xiàn)了SSL與TLS協(xié)議均牢。其主要庫是以C語言所寫成,實現(xiàn)了基本的加密功能才睹。
OpenSSL可以運行在絕大多數(shù)類Unix操作系統(tǒng)上(包括Solaris徘跪,Linux,Mac OS X與各種版本的開放源代碼BSD操作系統(tǒng))琅攘,OpenVMS與Microsoft Windows垮庐。它也提供了一個移植版本,可以在IBM i(OS/400)上運作坞琴。
此軟件是以Eric Young以及Tim Hudson兩人所寫的SSLeay為基礎所發(fā)展的哨查,SSLeay隨著兩人前往RSA公司任職而停止開發(fā)。
雖然此軟件是開放源代碼的剧辐,但其授權書條款與GPL有沖突之處寒亥,故GPL軟件使用OpenSSL時(如Wget)必須對OpenSSL給予例外。

openssl建立私有CA

openssl創(chuàng)建私有CA的過程:

前提:安裝openssl

# yum install openssl

1荧关、建立CA服務器

(1)生成密鑰

# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

命令解釋:

  • ( ) 表示將會在當前shell中新建一個子shell护盈,將()中的命令放到該子shell中執(zhí)行,執(zhí)行完畢后關閉子shell并回到當前shell羞酗。
    由于要對生成的cakey.pem文件設置合適權限,可使用umask修改文件的默認權限設置紊服。為了不影響當前shell的默認權限設置檀轨,使用()將這些命令放到子shell中執(zhí)行就行了胸竞!
  • genrsa : 指定使用rsa算法生成私鑰
  • -out :指定生成的私鑰的存放位置(注意:該存放位置是在配置文件中默認定義了的,路徑和文件名不能隨意修改2翁选N乐Α!)
  • 2048 :指定生成一個2048位的私鑰

(2)自簽證書

# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655

命令解釋:

  • req: 生成證書簽署請求
  • -news: 新請求
  • -x509: 專門用于生成自簽署證書
  • -key /path/to/keyfile: 指定私鑰文件(req命令能根據(jù)私鑰自動抽取出公鑰)
  • -out /path/to/somefile: (注意:路徑和文件名不用隨意修改6锟妗)
  • -days n: 有效天數(shù)(一般和-x509一起使用才有意義校赤。)

(3)初始化工作環(huán)境

只有第一次創(chuàng)建CA時,才需要初始化工作環(huán)境

# touch /etc/pki/CA/{index.txt,serial}
# echo 01 > /etc/pki/CA/serial   (指定序列號從那個數(shù)字開始)

2筒溃、節(jié)點申請證書

(1) 節(jié)點生成請求

  • 生成密鑰對兒
# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
  • 生成證書簽署請求
# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr

.csr :證書簽署請求马篮,一般都是這樣的后綴


紅框中的信息,需要和CA自簽證書中填寫的保持一致怜奖,否則會出錯浑测。

  • 把簽署請求文件發(fā)送給CA服務器

(2) CA簽署證書

  • 驗正證書中的信息
  • 簽署證書

格式:openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days N
說明:-in 指定證書簽署請求文件 ; -out CA根據(jù)請求文件生成的證書歪玲,一般為 .crt 后綴迁央;N 指定證書生效時長,天為單位

[root@localhost CA]# openssl ca -in /etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/httpd.crt -days 1000     
Using configuration from /etc/pki/tls/openssl.cnf      
Check that the request matches the signature      
Signature ok      
Certificate Details:      
        Serial Number: 1 (0x1)      
        Validity      
            Not Before: Jul  3 14:07:23 2014 GMT      
            Not After : Mar 29 14:07:23 2017 GMT      
        Subject:      
            countryName               = CN      #國家名
            stateOrProvinceName       = GuangDong   #省份名   
            organizationName          = 51CTOblog   #公司名
            organizationalUnitName    = Ops         #部門名
            commonName                = www.hjqjk.com   #主機名   
            emailAddress              = hjqjk@163.com   #郵箱   
        X509v3 extensions:      
            X509v3 Basic Constraints:       
                CA:FALSE      
            Netscape Comment:       
                OpenSSL Generated Certificate      
            X509v3 Subject Key Identifier:       
                F9:DB:00:04:8A:D7:17:C8:21:B7:2D:15:F2:E9:89:66:BB:6D:D5:F9      
            X509v3 Authority Key Identifier:       
                keyid:98:56:B3:30:B0:9D:75:A1:69:AD:BF:2F:E4:0D:FE:3F:17:87:B0:A8
Certificate is to be certified until Mar 29 14:07:23 2017 GMT (1000 days)     
Sign the certificate? [y/n]:y  #詢問是否簽署證書
1 out of 1 certificate requests certified, commit? [y/n]y     
Write out database with 1 new entries      
Data Base Updated      
[root@localhost CA]# ls /etc/httpd/ssl      #證書已簽署滥崩,自建CA到這里就成功了
httpd.crt  httpd.csr  httpd.key
  • 發(fā)送給請求者

之后岖圈,只要把簽署的證書發(fā)回給申請者就行了!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末钙皮,一起剝皮案震驚了整個濱河市蜂科,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌株灸,老刑警劉巖崇摄,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異慌烧,居然都是意外死亡逐抑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門屹蚊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厕氨,“玉大人,你說我怎么就攤上這事汹粤∶” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵嘱兼,是天一觀的道長国葬。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么汇四? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任接奈,我火速辦了婚禮,結果婚禮上通孽,老公的妹妹穿的比我還像新娘序宦。我一直安慰自己,他們只是感情好背苦,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布互捌。 她就那樣靜靜地躺著,像睡著了一般行剂。 火紅的嫁衣襯著肌膚如雪秕噪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天硼讽,我揣著相機與錄音巢价,去河邊找鬼。 笑死固阁,一個胖子當著我的面吹牛壤躲,可吹牛的內容都是我干的。 我是一名探鬼主播备燃,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼碉克,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了并齐?” 一聲冷哼從身側響起漏麦,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎况褪,沒想到半個月后撕贞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡测垛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年捏膨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片食侮。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡号涯,死狀恐怖,靈堂內的尸體忽然破棺而出锯七,到底是詐尸還是另有隱情链快,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布眉尸,位于F島的核電站域蜗,受9級特大地震影響巨双,放射性物質發(fā)生泄漏。R本人自食惡果不足惜地消,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一炉峰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脉执,春花似錦、人聲如沸戒劫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迅细。三九已至巫橄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茵典,已是汗流浹背湘换。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留统阿,地道東北人彩倚。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像扶平,于是被迫代替她去往敵國和親帆离。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內容