1. 程式人生 > >資訊保安——非對稱密碼體制

資訊保安——非對稱密碼體制

經典密碼(包括現代對稱密碼)都建立在基本的替代和置換工具的基礎上。公鑰密碼體制是基於數學中的單向陷門函式

公鑰密碼體制採用了兩個不同的祕鑰這對在公開的網路上進行保密通訊、祕鑰分配、數字簽名和認證有著深遠的影響。

一 非對稱密碼體制特性

加密和解密由不同的祕鑰完成。

加密:X->Y:Y=EKU(X)

解密:Y->X:X=DKR(Y)=DKR(EKU(X))

知道加密演算法,從加密祕鑰得到解密祕鑰在計算上是不可行的。

兩個祕鑰中任何一個都可以用作加密而另一個用作解密。

二 非對稱加密的應用範圍

使用者擁有自己的祕鑰對KU、KR。公鑰KU公開,私鑰KR保密。

2.1 實現保密

A->B:Y=EKUb(X)   ——用B的公鑰加密

B:DKRb(Y)=X           ——用B的私鑰解密

2.2 實現鑑別

A->ALL:Y=DKRa(X)  ——用A的私鑰加密

ALL:EKUa(Y)=X        ——用A的公鑰解密

2.3 鑑別+保密

A->B:Z=EKUb( DKRa(X) )    ——先用a的私鑰加密,再用b的公鑰加密。

B:EKUa(DKRb(Z))=X              ——先用b的私鑰解密,再用a的公鑰解密。

總結:要實現保密,則必須用b的私鑰才能解密;要實現鑑別,則必須用a的私鑰加密。

三 常見非對稱加密演算法

數學基礎:單向陷門函式——已知x,易於計算f(x),已知f(x)卻難以計算x,然而,一旦給出f(x)和一些祕密資訊y(祕密陷門)就很容易計算x。

計算f(x)相當於加密,利用陷門y求f(x)中的x則相當於解密。

3.1 Diffie Hellman演算法

用於祕鑰交換。步驟如下:

(1)n與g為公開的兩個大素數,可事先商定。

(2)雙方各選一個較大值x和y。

(3)A計算出g的x次方 mod n,發給B。

(4)B計算出g的y次方 mod n,發給A。

(5)雙方利用以上資訊計算出共享祕鑰。

例子:

(1)Alice選定:n=47,g=3,x=8,計算出:g的x次方mod n=28 mod 47。

所以Alice傳遞給Bob的資訊是:{47,3,28} 

(2)Bob選定y=10,計算出:g的y次方mod n=17 mod 47。所以Bob傳遞給Alice{17}

(3)Alice計算共享祕鑰:(g的y次方mod n)的y次方=(17的8次方)mod 47=4 mod 47。

(4)Bob計算共享祕鑰:(g的x次方mod n)的x次方=(28的10次方)mod 47=4 mod 47。

(5)得出共享祕鑰為4。

安全隱患——中間人攻擊

截獲資訊將x和y改為z。

3.2 RSA演算法

數學基礎:大整數因子分解——任何大於1的整數總可以唯一分解成素因數乘積的形式

演算法步驟:

(1)選擇一對不同的素數p和q,計算n=pq和f(n)=(p-1)(q-1)。

(2)隨機找一個與f(n)互素的數e,計算其逆d,即d*e=1 mod f(n)。

(3)公鑰:n,e。

(4)私鑰:n,d。

(5)加密:c=m的e次方 mod n。

(6)解密:m=c的d次方 mod n。

例子:

(1)取兩個素數:p=11和q=13,n=pq=143,f(n)=(p-1)(q-1)=10*12=120。

(2)隨機找一個與f(n)互素的數e=7,計算其逆d=103。

(3)公鑰:{143,7}。

(4)私鑰:{143,103}。

(5)明文m=85,密文c=85的7次方 mod 143=123。

(6)解密:m=123的103次方 mod 143=85。

安全性分析:

RSA祕鑰安全性依賴於p,q。獲取p,q的問題為數學上的大數分解。就目前計算機水平而言,n取1024位是安全的,取2048位是絕對安全的。

缺點分析:

(1)速度慢,比DES慢100倍,一般來說只用於少量資料加密。

(2)產生祕鑰麻煩,受到素數產生技術的限制,難以做到一次一密。

(3)若分組大小為k,n需要滿足:2的k次方<n<2的k+1次方。為了保證安全性,需要使n儘可能大,所以分組長度也跟著增大,不僅運算代價高,而且不利於資料格式的標準化。

備註:基本RSA公鑰密碼存在很多缺陷,實際中使用其改進型,n一般取1024位,e常用3,7,65573等。

3.3 其它常見公鑰體制演算法

公鑰演算法總是要基於一個數學上的難題。

ElGamal演算法——美國數字簽名標準DSS——資料加密,數字簽名——素域乘法群離散對數難題。

橢圓曲線演算法(ECC)——數字簽名(快)——有限域上的橢圓曲線離散對數問題。

四 各種演算法應用範圍

RSA::加解密,數字簽名,祕鑰交換

Dieffie-Hellman:祕鑰交換

DSS:數字簽名,也可加密?

ECC:數字簽名