通信加密和解密基礎

數(shù)據(jù)加密和解密概述

傳輸層協(xié)議:TCP,UDP,SCTP
port:進程地址,進程向內(nèi)核注冊使用某端口(獨占)

同一主機上的進程間通信:IPC, message queue, shm, semerphor
不同主上的進程間通信:socket
client ip:port <-- --> service ip:port
clentip:55673 <-- --> service ip:80
監(jiān)聽模式:LISTEN (ip:port)

安全的目標:

  • 保密性:confidentiality,確保通信信息不被任何無關的人看到
  • 完整性:integrity,實現(xiàn)通信雙方的報文不會產(chǎn)生信息丟失
  • 可用性:availability,通信任何一方產(chǎn)生的信息應當對授權(quán)實體可用

攻擊類型:

  • 威脅保密性的攻擊:竊聽、通信量分析;
  • 威脅完整性的攻擊:更改、偽裝、重放、否認
  • 威脅可用性的攻擊:拒絕服務(DoS)

解決方案

技術(加密和解密)、服務(用于抵御攻擊的服務,也即是為了上述安全目標而特地設計的安全服務)

加密和解密
  • 傳統(tǒng)加密方法:替代加密方法、置換加密方法
  • 現(xiàn)代加密方法:現(xiàn)代塊加密方法
服務
  • 認證機制
  • 訪問控制機制

密鑰算法和協(xié)議

  • 對稱加密
  • 公鑰加密
  • 單向加密
  • 密鑰交換

Linux系統(tǒng)上述功能解決方案:OpenSSL(ssl),GPG(pgp)
GPG是gpg協(xié)議的實現(xiàn),OpenSSL是ssl協(xié)議和加密加密庫的實現(xiàn)

加密算法和協(xié)議:

對稱加密:

加密和解密使用同一個密鑰


DES:Data Encryption Standard,數(shù)據(jù)加密標準
3DES:Triple DES,DES的增強版,比DES多3個數(shù)量級
AES:Advanced Encryption Standard,高級加密標準 (128bits, 192bits, 256bits, 384bits)
商業(yè):Blowfish,Twofish,IDEA,RC6,CAST5

特性:

  • 加密、解密使用同一個密鑰
  • 將原始數(shù)據(jù)分割成為固定大小的塊,逐個進行加密

缺陷:

  • 密鑰過多
  • 密鑰分發(fā)困難
公鑰加密

密鑰分成公鑰和與之配對的私鑰


公鑰:從私鑰中提取產(chǎn)生;可公開給所有人;pubkey
私鑰:通過工具創(chuàng)建,使用者自己留存,必須保證其私密性;secret key;
特點:用公鑰加密的數(shù)據(jù),只能使用與之配對兒的私鑰解密;反之亦然;

用途:

  • 數(shù)字簽名:主要在于讓接收方確認發(fā)送方的身份
  • 密鑰交換:發(fā)送方用對方公鑰加密一個對稱密鑰,并發(fā)送給對方
  • 數(shù)據(jù)加密:這種直接使用公鑰加密算法來實現(xiàn)通信時數(shù)據(jù)的保密性的方式并不常用,因為這種方式要比使用對稱加密慢上3個數(shù)量級,不推薦。

算法:

RSA:名稱由RSA三個提出者(Ron Rivest, AdiShamir, Leonard Adleman)的姓氏首字母組合而成,這種算法的可靠性由對極大整數(shù)做因數(shù)分解的難度決定;RSA既能實現(xiàn)數(shù)字簽名,又能實現(xiàn)加解密。

DSA:Digital Signature Algorithm,即數(shù)字簽名算法,又稱DSS(Digital Signature Standard, 數(shù)字簽名標準);DSA僅能實現(xiàn)數(shù)字簽名,不能用于加解密。

單向加密

即提出數(shù)據(jù)指紋,只能加密,不能解密

特性:
定長輸出:提取出來的數(shù)據(jù)量是定長的,與進行加密的數(shù)據(jù)的量無關
雪崩效應:初識條件的微小改變會引起加密結(jié)果的巨大變化

功能:用于實現(xiàn)數(shù)據(jù)完整性的驗證

算法:

md5:Message Digest 5,即信息摘要,'5'是版本號;取出的特征碼定長為128bits
sha1:Secure Hash Algorithm 1,即安全哈希算法,'1'是版本號;取出的特征碼定長為160bits
sha224:secure hash algorithm,224bits
sha256:secure hash algorithm,256bits
sha384:secure hash algorithm,384bits
sha512:secure hash algorithm,512bits

注意:CentOS 5用戶密碼加密使用的是md5,CentOS 6/7用戶密碼加密使用的是sha512.

密鑰交換: IKE(Internet Key Exchange)
  • 公鑰加密:常見的算法有RSA等
  • DH(Deffie-Hellman):Deffie-Hellman(迪菲-赫爾曼)算法
  • 其他用于實現(xiàn)密鑰交換的算法有:ECDH(橢圓曲線DH)、ECDHE(臨時橢圓曲線DH)等
DH算法的工作原理圖

一般的過程:
1.Alice生成隨機自然數(shù)a、隨機大質(zhì)數(shù)p和原根g;
2.Alice計算,計算結(jié)果為A,并把p,g,A發(fā)送給Bob;
3.Bob生成隨機自然數(shù)b,根據(jù)Alice發(fā)過來的p,g,計算,計算結(jié)果為B;
4.Bob把B發(fā)送給Alice,并計算,計算結(jié)果為K;而Alice計算,計算結(jié)果也為K;
5.Alice和Bob以K值作為密鑰進行通信。

一次加密通信的過程

加密和發(fā)送過程:

1、當發(fā)送方Alice有數(shù)據(jù)要發(fā)送給Bob時,為了確保數(shù)據(jù)能夠完整地發(fā)送至Bob,首先需要使用單向加密算法去計算出這段要發(fā)送的數(shù)據(jù)的特征碼;
2、為了便于Bob收到數(shù)據(jù)之后可驗證身份,發(fā)送方Alice使用本地私鑰加密這段特征碼,并將加密后的特征碼附加在數(shù)據(jù)后面;
3、為了確保通信過程是保密的,發(fā)送方Alice生成一個臨時的對稱密鑰,并使用這個對稱密鑰加密整段數(shù)據(jù);
4、發(fā)送方Alice獲取Bob的公鑰,再使用Bob的公鑰加密來加密剛才生成的臨時的對稱密鑰,并把加密后的對稱密鑰附加在整段加密數(shù)據(jù)后面,而后發(fā)送給Bob。

接收和解密過程:

1、接收方Bob收到數(shù)據(jù)之后,先使用自己的私鑰去解密這段加密過的對稱密鑰(由Alice生成);
2、接收方Bob用解密得到的對稱密鑰去解密整段(發(fā)送方用對稱密鑰)加密的內(nèi)容;此時接收方Bob得到Alice發(fā)送給自己的數(shù)據(jù)和加密后的特征碼;
3、接收方Bob用對方Alice的公鑰去解密這段特征碼,如果能解密出來,則發(fā)送方的身份得到驗證(沒錯,就是Alice發(fā)送的);
4、接收方Bob再用同樣的單向加密算法去計算這段數(shù)據(jù)的特征碼,與解密得到的特征碼進行比較,如果相同,則數(shù)據(jù)完整性得到驗證,否則說明數(shù)據(jù)有可能被篡改或被破壞。

PKI:Public Key Infrastructure(公鑰基礎設施)

  • 簽證機構(gòu):CA,負責簽署證書
  • 注冊機構(gòu):RA,負責接收簽署證書的申請
  • 證書吊銷列表:CRL,負責公開所有已經(jīng)吊銷的證書
  • 證書存取庫:CR,負責將公開所有已申請的證書的相關信息
證書

為了統(tǒng)一數(shù)字證書的格式,國際電信聯(lián)盟(ITU-T)制定了數(shù)字證書標準--X.509,即數(shù)字證書的格式遵循X.509標準。在X.509v3版本中,定了數(shù)字證書的結(jié)構(gòu)以及認證協(xié)議標準。

版本號,序列號,簽名算法ID,發(fā)行者名稱,有效期限,主體名稱,主體公鑰,
發(fā)行者的惟一標識,主體的惟一標識,發(fā)行者的簽名

數(shù)字證書授權(quán)機構(gòu)--CA

前面的加密通信過程中能夠保證通信過程的保密性、通信數(shù)據(jù)的完整性,但這是以雙方(Alice和Bob)能夠在此之前可靠地獲取對方的公鑰為前提的。如果不能保證能夠可靠獲取對方公鑰,那么就有可能出現(xiàn)中間人攻擊(Man-in-the-middleattack,縮寫:MITM)。假設這個中間人是Eve,Eve就可以分別與Alice和Bob建立聯(lián)系,而這時Alice獲取的是“假的”Bob公鑰,而Bob獲取的是“假的”Alice公鑰;這時候Alice和Bob在毫不知情的情況下進行通信,但其實他們之間數(shù)據(jù)包的轉(zhuǎn)發(fā)是經(jīng)由Eve的。

上述的通信過程中缺失的一環(huán)在于通信雙方不能保證可靠地獲取對方的公鑰,因此,為了保證可靠地獲取通信對方的公鑰,于是就有了數(shù)字證書認證機構(gòu)(CertificateAuthority,縮寫:CA)。CA就是為了能夠保證通信雙方能夠可靠獲取對方的公鑰,而特地設定的一個雙方公信的第三方可信機構(gòu)。

為了避免出現(xiàn)上述一環(huán)的缺失,Alice和Bob可向公信的CA申請有效的證書,并由CA分別頒發(fā)給Alice和Bob,其中這個證書中的信息包括了證書擁有者的名稱、公鑰、證書的有效期等信息,而CA還會提取證書中信息的特征碼,并用CA自己的私鑰進行加密,再把加密后的特征碼附加在證書中最后面。此后,當雙方通信時,Alice和Bob雙方都把自己的證書發(fā)給對方,并都分別使用CA的公鑰去解密證書中的特征碼,如果能解密,則說明證書的確由他們所信任的CA機構(gòu)所頒發(fā);接著使用同樣的單向加密算法去提取證書中信息的特征碼,與解密出來的特征碼進行比較,如果兩者相同,說明證書內(nèi)容完整,沒有被篡改或破壞,而對方的證書中就有對方的公鑰。

但這又引入了一個問題,Alice和Bob如何可靠地獲取CA的呢?顯然,不能基于網(wǎng)絡通信的方式獲取CA的公鑰(一切基于網(wǎng)絡的傳輸都是不可靠的),而應該當面交易。全球有多個CA機構(gòu),這些CA的數(shù)量是有限、基本固定的;它們彼此之間存在互信鏈,也就是說CA的信任關系是可以傳遞的。為了管理方便,全球有一個根CA,它與其他CA是從屬關系。

為了解決通信主機能夠可靠獲取CA的公鑰,CA需要自簽一份證書,就是CA自簽名證書,在證書信息中包括了CA的名稱、CA的公鑰等,通信主機(這里是Alice和Bob)需要獲取CA證書,這樣才能獲取CA公鑰以及其他的CA信息,并能通過CA證書來驗證其他通信主機的證書是否可靠。CA證書的獲取需要通過當面交易來實現(xiàn),而微軟公司直接在windows操作系統(tǒng)上集成了在全球具有公信力的CA證書,但在Linux中一般不內(nèi)置CA證書,需要自己通過可靠手段獲取。

雖然通過上述手段可以極大地保證通信過程的安全性,但仍然存在問題,例如在這整個通信過程中使用的某種算法出現(xiàn)漏洞依然不夠安全。

上述的通信過程中缺失的一環(huán)在于通信雙方不能保證可靠地獲取對方的公鑰,因此,為了保證可靠地獲取通信對方的公鑰,于是就有了數(shù)字證書認證機構(gòu)(CertificateAuthority,縮寫:CA)。CA就是為了能夠保證通信雙方能夠可靠獲取對方的公鑰,而特地設定的一個雙方公信的第三方可信機構(gòu)。

CA如何在A和B通信之間發(fā)揮作用?

基本過程:

1、首先,在A和B通信之前需要互相發(fā)送證書;

2、A和B之間協(xié)商通信過程中要使用的加密算法(對稱加密、公鑰加密、單向加密、密鑰交換);

3、開始驗證證書
1)用CA的公鑰去解密CA的簽名,如果能解密,則說明證書來源可靠;
2)用同樣的單向加密算法計算出證書中信息的特征碼,與解密得到的特征碼進行比較;如果兩者相同,則說明證書完整性可靠;
3)檢查證書的有效日期是否在當前時間的合理范圍內(nèi);如果證書過期了則不會被認可;
4)檢查證書的主體名稱與期望通信的對方是否一致;如果不一致則不會被認可;
5)檢查證書是否被吊銷過;如果沒有吊銷則可使用該證書,否則證書不會被認可。

本博客參考:https://blog.csdn.net/qq_22030347/article/details/69573207

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379