安全通信具有下列所需要的的特性:
- 機(jī)密性(confidentiality)
希望入侵者無(wú)法理解報(bào)文內(nèi)容,所以這必須要求發(fā)送方對(duì)報(bào)文做加密,接收方對(duì)數(shù)據(jù)做解謎 - 報(bào)文完整性(message integrity)
報(bào)文不能在傳輸?shù)耐局斜粣阂飧膭?dòng)或者意外變動(dòng)。 - 端點(diǎn)鑒別(end-point authentication)
明確身份,不允許冒充。 - 運(yùn)行安全性(operational security)
詞語(yǔ)解釋?zhuān)?br>
明文:報(bào)文的最初形式 m
密文:經(jīng)過(guò)加密算法加密的明文 KA(m)
加密密鑰:KA
加密過(guò)程:KA(m)
解謎密鑰:KB
解謎過(guò)程:KB(KA(m))=m
兩種系統(tǒng):
- 對(duì)稱密鑰系統(tǒng)(symmetric key system)
- 公開(kāi)密鑰系統(tǒng)(public key system)
公開(kāi)密鑰加密
K+:公鑰
K-:私鑰
加密:K+(m),其中K+的含義包括一個(gè)用于加密的算法和一個(gè)公開(kāi)密鑰
解密:K-(K+(m)),這里的K+同上:算法+鑰匙
RSA
經(jīng)典公鑰加密算法
其過(guò)程:
1. 大素?cái)?shù)p和q
2. 計(jì)算n=pq,z=(p-1)(q-1)
3. 選擇e,e和z互素
4. 求一個(gè)d,使(ed)mod z =1
5. 得到:
K+:(n,e) 公鑰
K-:(n,d) 私鑰
加密報(bào)文:c=(m^e)mod ns
解密報(bào)文:m=(c^d)mod n
e=5,n=35,加密:
| 字母 | m:數(shù)字表示 | m^e | c=m^e mod n |
|---|---|---|---|
| l | 12 | 248832 | 17 |
| o | 15 | 759375 | 15 |
| v | 22 | 5153632 | 22 |
| e | 5 | 3125 | 10 |
d=29,n=35,解密:
| 密文 | c^d | m=c^d mod n | 明文 |
|---|---|---|---|
| 17 | 481968572106750915091........ | 12 | l |
| 15 | 12783.... | 15 | o |
| 22 | 85164... | 22 | v |
| 10 | 10000.... | 5 | e |
報(bào)文完整性
報(bào)文完整性確保了報(bào)文在發(fā)送途中沒(méi)有被篡改,這涉及了幾個(gè)概念:密碼散列函數(shù),數(shù)字簽名
密碼散列函數(shù)
通常用H(x)來(lái)表示,它的特性之一:
- 找到任意兩個(gè)不同的報(bào)文x和y使H(x)=H(y),在計(jì)算上是不可能的
如果說(shuō)發(fā)送報(bào)文是(m,H(m)),入侵方就不可能用其他報(bào)文替換該受保護(hù)的報(bào)文 - 接收方視角:收到報(bào)文(m,k),驗(yàn)證H(m)==k?,相同則證明沒(méi)有被篡改。
作用:(m,H(m))可以保證發(fā)送報(bào)文不被篡改。
常見(jiàn)的密碼散列函數(shù):MD5,SHA-1
數(shù)字簽名
上面如果單純用密碼散列函數(shù)會(huì)引發(fā)這樣一個(gè)問(wèn)題:
入侵者雖然不能篡改報(bào)文,但是可以整體替換整個(gè)報(bào)文發(fā)送(m',H(m')),這樣仍然會(huì)使通信不安全,因此這種方式只保證了報(bào)文完整性,而不能端點(diǎn)鑒別。下面的數(shù)字簽名解決了這個(gè)問(wèn)題
K-(H(m)) ->實(shí)際上就是用發(fā)送方私鑰加密的密碼散列函數(shù)
發(fā)送方可發(fā)送(m,K-(H(m)))
接收方視角:
K+(k)==H(m)? 相同則證明沒(méi)有被篡改,且因?yàn)槭怯冒l(fā)送方的公鑰來(lái)解密,所以可以證明對(duì)方就是發(fā)送方。
那么引出下一個(gè)問(wèn)題:如何可靠的獲取發(fā)送方的公鑰,如果這個(gè)不能保證,數(shù)字簽名依然是不安全的。
證書(shū)
公鑰證書(shū)CA
Bob從CA獲取到的證書(shū):CA-(B,KB+)
其中CA-是CA的私鑰,B是Bob的實(shí)體信息,KB+是bob的公鑰
接收方用CA+解密CA-(B,KB+),即可獲得KB+