[TOC]
聲明
** 本篇文章只是記錄一些加密類型和常見算法呆盖,所用的并不是嚴(yán)謹(jǐn)?shù)男g(shù)語,而是使用日常用語以方便理解,當(dāng)然都是參考各種資料后自己的理解,所以難免有理解偏差之處,歡迎指正赃绊。大神請(qǐng)繞路。不喜勿噴蝎亚。 **
本篇文章將記錄總結(jié)常見的加密類型及其算法登颓,并最終得出常用的安全通信的方式
1 基本概念
這里只指出各個(gè)名稱的關(guān)鍵點(diǎn),具體的名詞解釋就不談了……
1.1 中間人攻擊
中間人攻擊(Man-in-the-Middle Attack, MITM)就是通過攔截正常的網(wǎng)絡(luò)通信數(shù)據(jù)躏惋,并進(jìn)行數(shù)據(jù)篡改和嗅探幽污,而通信的雙方卻毫不知情。
1.2 機(jī)密性
機(jī)密性針對(duì)的是防止對(duì)信息進(jìn)行"未授權(quán)"的"讀"簿姨。
- 比如距误,傳輸?shù)男畔⒓幢惚恢虚g人竊取了,中間人拿到的信息也是對(duì)他來說不可理解的密文扁位。
- 另外准潭,就算是中間人花時(shí)間能解密密文,只是待他解密之后信息早就沒有了當(dāng)時(shí)的價(jià)值域仇,這種情況也可以算作保證了機(jī)密性惋鹅。
1.3 完整性
完整性要面對(duì)的是防止或者至少是檢測(cè)出"未授權(quán)"的"寫"(對(duì)數(shù)據(jù)的改變)。
比如:
- A對(duì)B發(fā)消息說下午兩點(diǎn)見面殉簸,結(jié)果中間人C截取了消息并篡改消息為下午四點(diǎn)見面闰集。這時(shí)候可以認(rèn)為違背了完整性。
1.4 身份驗(yàn)證
簡(jiǎn)言之就是確認(rèn)消息發(fā)送方的身份是否真的是他所聲稱的身份般卑。
比如:
- 常常聽說的釣魚網(wǎng)站,例如冒充某個(gè)銀行的頁(yè)面等你輸入賬戶密碼等武鲁,這種情況就算是違背了身份驗(yàn)證。
1.5 抗抵賴性
本人認(rèn)為抗抵賴性可以歸結(jié)到身份驗(yàn)證中去蝠检。當(dāng)然沐鼠,只是個(gè)人觀點(diǎn)了。
1.6 怎么樣才算安全的通信?饲梭?乘盖?
一般而言,同時(shí)滿足了 機(jī)密性
(信息不被泄露,或泄露后對(duì)別人來說并沒實(shí)際價(jià)值)憔涉、 完整性
(信息不被非法篡改或被篡改后可以檢測(cè)到)和 身份驗(yàn)證
(和自己通信的人確實(shí)就是我認(rèn)為和我正在通信的人)订框。就可以認(rèn)為是安全通信了。
此處將抗抵賴性歸結(jié)到身份驗(yàn)證中兜叨。
下面就來看看常見的一些加密類型滿足哪些安全要素穿扳。
2 單向加密
2.1 特征
- 輸入一致 ==> 特征碼一致
- 特征碼一致 ==> 輸入不一定一致(碰撞)
- 雪崩效應(yīng)
- 特征碼定長(zhǎng)
- 不可逆(無法根據(jù)特征碼還原數(shù)據(jù))
2.2 常見算法
- MD5(Message Digest algorithm 5):消息摘要算法
- SHA(Secure Hash Algorithm):安全散列算法
- HMAC(Hash Message Authentication Code):散列消息鑒別碼
- CRC(Cyclical Redundancy Check):循環(huán)冗余碼校驗(yàn)
2.3 滿足哪些安全特性?
機(jī)密性 | 完整性 | 身份驗(yàn)證 |
---|---|---|
不滿足 | 滿足(特征碼不一致可以檢測(cè)出數(shù)據(jù)被篡改過) | 不滿足 |
3 對(duì)稱加密
雙向加密是加密算法中最常用的,它將我們可以直接理解的明文數(shù)據(jù)加密為我們不可直接理解的密文數(shù)據(jù)国旷,然后矛物,在需要的時(shí)候,可以使用一定的算法將這些加密以后的密文解密為原來可以理解的明文跪但。
3.1 特征
- 優(yōu)點(diǎn)
- 加/解密速度快
- 密鑰管理簡(jiǎn)單
- 適宜一對(duì)一的信息加密傳輸
- 缺點(diǎn)
- 加密算法簡(jiǎn)單
- 密鑰長(zhǎng)度有限
- 加密強(qiáng)度不高
- 密鑰分發(fā)困難
- 不適宜一對(duì)多的加密信息傳輸
3.2 常見算法
- DES(Data Encryption Standard):數(shù)據(jù)加密標(biāo)準(zhǔn)
- AES(Advanced Encryption Standard):高級(jí)加密標(biāo)準(zhǔn)
3.3 滿足哪些安全特性?
- 機(jī)密性:滿足
- 完整性:不滿足
- 對(duì)稱密鑰可能泄露或被破解
- 無法保證解密后的數(shù)據(jù)沒被修改過
- 身份驗(yàn)證:不滿足
- 對(duì)稱密鑰可能泄露或被破解
- 無法保證能正常解密的數(shù)據(jù)不是中間人發(fā)的
4 IKE
Internet Key Exchange(IKE) 互聯(lián)網(wǎng)秘鑰交換履羞。此處簡(jiǎn)單提一下Diffie-Hellman-key-exchange。
http,ftp,smtp,telnet這些常見的協(xié)議本身并不直接支持加密傳輸數(shù)據(jù)屡久。
4.1 秘鑰交換過程
此處假設(shè)A和B雙方要生成秘鑰忆首,秘鑰交換的大致過程如下:
雙方協(xié)商好一個(gè)大素?cái)?shù)p和一個(gè)生成數(shù)g,p和g是真正在互聯(lián)網(wǎng)上傳輸?shù)摹kp方協(xié)商好p和g之后計(jì)算如下:
1) A生成一個(gè)隨機(jī)數(shù)x
B生成一個(gè)隨機(jī)數(shù)y
2) A計(jì)算g^x%p 記為M,將M傳輸給B
B計(jì)算g^y%p 記為N,將N傳輸給A
3) A計(jì)算N^x==(g^y%p)^x==g^xy%p 記為C1
B計(jì)算M^y==(g^x%p)^y==g^xy%p 記為C2
4) C1和C2就是秘鑰涂身,并且C1==C2
4.2 特征
- 在整個(gè)過程中,只有p、g搓蚪、M蛤售、N四個(gè)數(shù)字在互聯(lián)網(wǎng)上傳輸。
- 真正的秘鑰是雙方計(jì)算出來的妒潭,并不需要在互聯(lián)網(wǎng)上直接傳輸悴能。
- 只憑借這四個(gè)數(shù)字來推算出真正的秘鑰幾乎是不可能的。
- 可以方便的更換秘鑰
5 非對(duì)稱加密算法
5.1 特征
- 非對(duì)稱加密,機(jī)密解密使用不同的秘鑰
- 秘鑰對(duì)兒
- 私鑰(s):很長(zhǎng)的一段密碼,比如1024位雳灾、2048位或者更長(zhǎng)
- 公鑰(p):利用一定的機(jī)制從公鑰中提取
- 用自己的私鑰加密的密文只能用與之配對(duì)的公鑰解密(簽名漠酿、身份驗(yàn)證)
- 用對(duì)方的公鑰加密的密文只能用與之配對(duì)的私鑰解密(機(jī)密性)
5.2 身份認(rèn)證
- 公鑰加密解密代價(jià)太高,所有很少直接用來解密傳輸數(shù)據(jù)的機(jī)密性
- 主要用途就是身份認(rèn)證
此處以A向B發(fā)送數(shù)據(jù)為例:
此處暫且認(rèn)為公鑰私鑰已經(jīng)拿到并且可靠
1) A用自己的私鑰加密明文數(shù)據(jù)的特征碼,并傳輸消息體(明文數(shù)據(jù)+私鑰加密后的特征碼)
2) B用A的公鑰解密特征碼
解密出錯(cuò)===>無法用A的公鑰解密===>消息不是由A發(fā)送的
解密成功
B重新計(jì)算特征碼并和解密之后的特征碼比較
一致===>則認(rèn)為數(shù)據(jù)沒被篡改并且是由A發(fā)送的
不一致===>則認(rèn)為數(shù)據(jù)是由A發(fā)送的,但是傳輸?shù)拿魑臄?shù)據(jù)被篡改過了
整個(gè)過程中:
- 中間人若是只修改明文數(shù)據(jù)===>B計(jì)算的兩次特征碼不一致
- 中間人若是修改了特征碼===>B無法用A的公鑰解密
5.3 常見算法
- RSA(設(shè)計(jì)者的名字命名-Ron Rivest, AdiShamir、Leonard Adleman)
- DSA(Digital Signature Algorithm):數(shù)字簽名
5.4 滿足哪些安全特性?
- 機(jī)密性:不滿足
- 數(shù)據(jù)是明文的
- 完整性:滿足
- 信息被修改后無法通過對(duì)應(yīng)的公鑰或私鑰解密
- 身份驗(yàn)證:滿足
- 私鑰加密的數(shù)據(jù)只能用對(duì)應(yīng)的公鑰解密
5.5 引入的問題
- 公鑰谎亩、私鑰去哪里獲取呢炒嘲?
- 怎么確定公鑰、私鑰的可靠性呢匈庭?
通信雙方找一個(gè)雙方都信可的機(jī)構(gòu)夫凸,作為公正方。
這就類似于現(xiàn)實(shí)生活中的公安局頒發(fā)身份證阱持,你認(rèn)可公安局就得認(rèn)可公安局發(fā)的身份證了夭拌。
這里的公正方就是CA(Certification Authority)了。請(qǐng)看下文:
6 CA(Certification Authority)
6.1 簡(jiǎn)單介紹
上面說了既然CA是通信雙方都信任的公正機(jī)構(gòu),那么找CA驗(yàn)證和自己通信的對(duì)方的證書的真?zhèn)尉涂梢粤恕?/p>
CA將用戶的基本信息和用戶公鑰生成特征碼并用CA自己的私鑰加密作為用戶的證書鸽扁。另一個(gè)用戶想要辨別該證書真?zhèn)嗡庹溃恍栌肅A的公鑰解密該證書,并對(duì)比特征碼即可桶现。
以下是來自百度百科對(duì)CA的描述:
- CA 也擁有一個(gè)證書(內(nèi)含公鑰和私鑰)躲雅。任何都可以用戶通過驗(yàn)證 CA 的簽字從而信任 CA ,任何人都可以得到 CA 的證書(含公鑰)巩那,用以驗(yàn)證它所簽發(fā)的證書吏夯。
- 如果用戶想得到一份屬于自己的證書,他應(yīng)先向 CA 提出申請(qǐng)即横。在 CA 審核通過后噪生,為申請(qǐng)者分配一個(gè)公鑰,并且 CA 將該公鑰與申請(qǐng)者的身份信息綁在一起东囚,并為之簽字后跺嗽,便形成證書發(fā)給申請(qǐng)者。
- 如果一個(gè)用戶想鑒別另一個(gè)證書的真?zhèn)我吃澹梢杂?CA 的公鑰對(duì)那個(gè)證書上的簽字進(jìn)行驗(yàn)證桨嫁,一旦驗(yàn)證通過,該證書就被認(rèn)為是有效的份帐。證書實(shí)際是由證書簽證機(jī)關(guān)(CA)簽發(fā)的對(duì)用戶的公鑰的認(rèn)證璃吧。
- 證書的內(nèi)容包括:電子簽證機(jī)關(guān)的信息、公鑰用戶信息废境、公鑰畜挨、權(quán)威機(jī)構(gòu)的簽字和有效期等等。目前噩凹,證書的格式和驗(yàn)證方法普遍遵循X.509 國(guó)際標(biāo)準(zhǔn)巴元。
6.2 PKI
PKI(Public Key Infrastructure)----公鑰基礎(chǔ)設(shè)施,其核心就是CA了驮宴。關(guān)于具體的嚴(yán)謹(jǐn)?shù)男g(shù)語定義請(qǐng)自行科普逮刨。
6.3 引入的問題
難題一:
- 去哪里獲得CA自己的證書呢?
- 怎么確保自己獲得的就是真正的CA的證書呢堵泽?
- 怎么確保CA不是冒名頂替的修己?
感覺又跳坑里了……
- 一般情況獲得證書都是通過網(wǎng)絡(luò)傳輸?shù)?/li>
其實(shí),到這一步就真的沒什么能保證的了……
互聯(lián)網(wǎng)這么大,計(jì)算機(jī)這么多,誰知道和你網(wǎng)上談話的是人還是計(jì)算機(jī)呢?
不扯了……
如果你非要保證萬無一失,那么CA當(dāng)然也提供付費(fèi)服務(wù)來盡力為你保證安全了:
- CA上門來把你的公鑰通過安全的存儲(chǔ)介質(zhì)復(fù)制到CA自己的服務(wù)器上……
- 做成證書用安全的存儲(chǔ)介質(zhì)給你復(fù)制到你自己的服務(wù)器上……
- ……
難題二:
自己辛辛苦苦搞到手的私鑰丟失怎么辦迎罗,被人竊取怎么辦箩退?
- 可以借助于秘鑰管理工具
- 但是秘鑰管理工具被攻擊了呢?
- 一個(gè)標(biāo)準(zhǔn)的CA應(yīng)該有CRL(證書吊銷列表)
………………………………
………………………………
這樣一層一層想下去……會(huì)瘋掉的………………
總之佳谦,還是有風(fēng)險(xiǎn)的……目前大概沒有什么可以萬無一失的策略吧……
7 如何安全通信呢戴涝?
以上的加密類型并沒有一種同時(shí)滿足了機(jī)密性、完整性和身份驗(yàn)證這三個(gè)安全特征的?
這么多加密算法啥刻、加密類型奸鸯。怎么確保通信是“安全的”的呢?
以下所說都是基于CA以及CA自己的證書是可信的基礎(chǔ)之上的可帽。還是以A和B通信為例:
7.1 方式一
1) A和B拿到對(duì)方的公鑰
A的公鑰娄涩、私鑰分別記為:pa,sa
B的公鑰、私鑰分別記為:pb,sb
2) A和B通過IKE協(xié)議生成一個(gè)對(duì)稱秘鑰映跟,記為m
3) A===>B發(fā)送信息
A將消息體用2中生成的對(duì)稱秘鑰m加密
消息體包括:
明文數(shù)據(jù)(plantext)
sa加密的plantext的特征碼
4) B解密數(shù)據(jù)
B用m解密整個(gè)消息體(m是通過IKE生成的,可以認(rèn)為只有AB雙方知曉)
解密出錯(cuò)===>消息不可信
正常解密===>繼續(xù)下面步驟
B用pa解密用sa加密的特征碼
解密出錯(cuò)===>身份驗(yàn)證失敗
正常解密===>繼續(xù)下面步驟
B重新生成特征碼并和解密后的特征碼對(duì)比
對(duì)比一致===>消息可靠(機(jī)密性蓄拣、完整性、身份驗(yàn)證都保證了)
不一致=====>消息發(fā)生了變化
雖然同時(shí)滿足了機(jī)密性努隙、完整性和身份驗(yàn)證三個(gè)安全因素球恤。
但這個(gè)過程有點(diǎn)復(fù)雜了,還要借助于IKE協(xié)議荸镊,非對(duì)稱加密的代價(jià)也是很大咽斧。
7.2 方式二
此處還是以A向B發(fā)送信息為例:
1) A和B拿到對(duì)方的公鑰
A的公鑰、私鑰分別記為:pa,sa
B的公鑰躬存、私鑰分別記為:pb,sb
2) A生成一個(gè)隨機(jī)串兒(m)作為對(duì)稱密鑰來機(jī)密明文數(shù)據(jù)
消息體包括:
用m加密的明文消息
用sa加密的特征碼
用pb加密的m
3) B解密消息
用sb解密得到對(duì)稱密鑰m
用m解密密文得到明文
重新計(jì)算特征碼并與用pa解密得到的特征碼對(duì)比
這個(gè)過程并不依賴于IKE協(xié)議生成對(duì)稱密鑰张惹。
真正的對(duì)稱密鑰是加密后附加在消息體中的。