計算機網絡與通信技術-數據加密

數據加密

加密體制:對稱密鑰體制(DES)和非對稱密鑰體制

一.Elgamal加密算法(基於離散對數的加密方法)

1.公鑰與密鑰的產生

     選擇一個素數P(很大)和一個整數g,再祕密選擇一個整數x(私鑰),其中需要g和x均小於P.

        計算:y=g^x mod P

          則y爲公鑰(加密密鑰),x爲私鑰(解密密鑰)。

            公開: P,    g,y

2.加密:

       設明文M,(M看成一個整數且M<P),發送方選擇一個隨機數k(k與P-1互素),

         計算:   a=g^k mod P

                b=y^k * M mod P

則(a , b)爲密文(注:密文長度正好是明文的兩倍)。

3.解密:

        M=b/a^x mod P

例:

Alice                                   Bob

Pka (Alice的公鑰)                     Pkb

Ska (Alice的私鑰)                     Skb

1.A用Pkb加密——>B用Skb解密。

2.A用Ska簽名——>B用Pka驗證。

(加密要用對方的公鑰,簽名要用自己的私鑰)

二.數字簽名

滿足三個條件:

能夠覈實簽名者;簽名者不能抵賴;不能篡改簽名報文。

基本原理:



三.RSA數字簽名

設:簽名者分別有一個公鑰e和私鑰d,n = p*q(其中p和q爲兩個很大的素數),H爲哈希函數,m爲代簽的報文。

Hash函數(單向函數),把任意長度的輸入變成固定長度的輸出,產生消息摘要

1)產生簽名    簽名者計算 M = H(m),S = M^d mod n,則(M,S)爲m的簽名。 將(m,S )發送給驗證者(接收方)

2)驗證簽名   M' = S^e mod n        M = H(m)  若M' = M,則簽名有效,否則無效。

     分析:①Trudy若僞造簽名:
A:則必須知道d

B:將m->m',則H(m) = H(m'),但H發生衝突的概率很小。

② 哈希函數H的引入,減少了運算量。(但同時安全性相應降低)。

四.Elgamal 數字簽名

設簽名者的私鑰爲x,相應的公鑰爲y = g^x mod p

1)產生簽名 簽名者選擇一隨機數k(k<p且k與p-1互素)

                  計算: r = g^k mod p

                  解同餘方程:g^m≡ y^r *r^s mod p                (1)

                    gm ≡g^(xr)* g^(ks) mod p               (2)

                      m≡ xr + ks mod (p-1)           (3)

得到 S    將(m , r , s )發送給驗證者。

2)驗證簽名 驗證者驗證方程:g^m ≡ y^r*r^s mod p

若上式成立,則簽名有效,否則無效。

3)安全性分析    Trudy 試圖恢復簽名者的私鑰x

方式1:Trudy截取L個簽名報文(mi,ri,si)i = 1.2.......L。由此根據(3)式,將得到由L個方程組成的方程組:

     M1 ≡  xr1 + k1s1 mod (p-1)

     M2 ≡  xr2 + k2s2 mod (p-1)

     。。。。。。。。。。。。。。。。。。。。。。。。。。

     ML ≡  xrL + kLsL mod (p-1)

上式方程組中只有(x , k1 , k2 , ....kL)爲未知數,由於每次簽名都選擇不同的ki,所以上述方程組中有L個方程組成,卻包含L+1個未知數,無論如何都解不出x的值,故此攻擊方式無效。

(故Elgamal儘量選擇不同的隨機數k,避免短時間內使用重複的k值。)

方式二:Trudy試圖根據y=g^x mod P求解x。會遇到離散對數求解的困難。

方式三:Trudy試圖假冒簽名,給定m,Trudy試圖找到r和s,使其滿足簽名驗證方程

g^m ≡ y^r r^s mod p 如果隨即選擇k,計算出r = g^k mod p,再由g^m≡ y^r *r^s mod p   計算S,但這等價於離散對數求解問題。

g^m≡y^r r^s mod p     A≡B r^s mod p       AB-1≡ r^s mod p

如果先固定S,再計算下式求r

A≡ r^s*y^r mod p

但其難度不低於離散對數求解,若同時求r和s,但依照目前的研究成果,尚無有效法。              

五 身份認證

1.含義:⑴ 僅證實通信連接雙方的真實身份,而不與其後要傳輸的數據聯繫,其安全性有限;⑵ 不僅證實通信雙方的真實身份,併爲後繼傳輸數據建立了安全通道,具有更高安全性。

2.簡單的身份認證協議:

    設Alice和Bob共享一個密鑰KAB

反射攻擊:利用截取對方的有用信息來攻擊對方

挫敗反射攻擊的方法:Alice和Bob分別從不同的整數集合中選擇隨機數,例如Alice選擇奇數,Bob選擇偶數
本協議沒有考慮到如何產生和管理共享會話密鑰:1)每個用戶產生和管理n-1個會話密鑰2)難以做到“一次一密“

3.基於公鑰證書的認證協議:由公鑰和私鑰產生共享會話密鑰

基於公鑰的認證:PKI(公鑰基礎設施)通過頒發離線公鑰證書(即數字證書)

CA:證書頒發機構(可信的第三者)

A、B:表示兩個用戶Alice、Bob

1.申請公鑰證書:用戶提交自己的標識、公鑰、用戶名及身份等信息。以及自己的公鑰(也可由CA產生)

2.CA產生和頒發公鑰證書(數字證書):

覈實用戶的真實身份;產生公鑰證書;通過安全信道頒發:

1)直接發給Alice    2)存放在證書庫中

3.Bob認證Alice:

Alice將公鑰證書發送給B,B用CA的公鑰驗證證書,同理Alice也可以認證Bob。

4.產生會話密鑰:

說明:1)產生Kab(或者命名Ks)是爲了節省運算量 2)協議不是唯一的

1.RSA算法
(1)祕密的選取兩個大素數P和Q(>=2^512);

(2)計算n=p*q和z=(p-1)(q-1);(歐拉方程)

(3)祕密地選擇一個與z互素的數d作爲解密私鑰(密鑰)

(4)解同餘方程(e*d)mod z =1;解得e作爲加密密鑰(公鑰),公開(e,n)

(5)加密:c = P^e mod n

(6)解密:P = c^d mod n

P爲明文,C爲密文
2.橢圓曲線密鑰算法(ECC)

(1)數學定義:由威爾斯特拉斯方程:y^2+axy+by=x^3+cx^2+dx+e所確定的平面曲線稱爲橢圓曲線(關於x軸對稱)稱爲橢圓曲線E;滿足上述方程的(x,y)稱爲橢圓上的點,則在E上還定義一個無窮點(零點)0;

對有限域Fp,可通過一系列變換將上述方程簡化爲y^2=x^3+ax+b
ECC感興趣的是模P橢圓羣,即給定一個素數P,選擇來年規格小於P的非負整數a和b,使得(4a^2+27b^2)mod p != 0

因此對ECC來講,橢圓曲線的參數可由多元偶(a,b,p)來確定
設有限域Fp上的E:y^2=x^3+ax+b mod p,P、Q爲E上的兩點,L是P、Q的連線。R爲L與E相交的另一點,L'是R與無窮點0的連線(即與y軸平行),則L'與E的另一個交點S稱爲P與Q的點加,記作S=P+Q;

K個P的點加稱爲k與P的點積k*P=P+p+……+P

設m爲大於1的整數,若x^2=n mod m可解,則稱n爲對m的平方剩餘,否則爲n對m的非平方剩餘

設P、Q爲E的任意兩點,L爲P、Q的連線,L與E相交於另一點R,則
P+0=P     P+Q+R=0     P+Q=Q+R     (P+Q)+R=P+(Q+R)


(1)ECC算法

1)確定某一橢圓曲線E    y^2=x^2+ax+b mod p,其中P>2^130,4a^3+27b^2 mod p != 0,a,b均小於P,再從E中選取一個基點G,選擇G的準則:nG=0,最小n值是一個足夠大的素數。選定的參數(P,a,b,G)保存在一個公開的文件中。

2)私鑰和公鑰以及共享密鑰的產生
公鑰爲E上點,私鑰爲整數,G公開
用戶A隨機選擇一個整數Sa作爲自己的私鑰,計算Pa=Sa*G(Pa爲A的公鑰也就是加密密鑰)

用戶B用類似的方法產生自己的私鑰和公鑰Sb和Pb

用戶A產生共享會話密鑰Ka=SaPb

用戶B產生共享會話密鑰Kb=SbPa

顯然Ka=SaPb=Sa(Sb*G)=Sb(Sa*G)=SbPa=Kb

3)編碼:將明文映射到橢圓曲線上,在對明文m加密前需要將m映射到E上,如果m較長,可分段處理。注意:編碼方法不唯一;編碼不保密

下面介紹一種編碼方法:

將m看成二進制整數,使得0<=m<=[P/256]-1  (256的大小可調整)

即將m映射到Pm(x,y),使得

256m<=x<=256(m+1);Pm(x,y)屬於Fp,滿足平方剩餘的點

一般情況下:y^2=x^3+ax+b mod p是非平方剩餘的概率很小

4)加密處理:c = Pm(x,y) + SaPb

5)解密處理:Pm(x,y) = c - SbPa

6)解碼:m=[x/256]

3.身份認證協議:大嘴蛙協議 Borrows


KDC:可信的密鑰分發中心

Ka:Alice與KDC的共享密鑰
Kb:Bob與KDC的共享密鑰
Ks:Alice挑選的與Bob的會話密鑰

分析:

1)每個用戶僅需保存和管理一個會話密鑰

2)Ks可以做到“一次一密”,Ka,Kb不能做到“一次一密”

3)容易受到“重放攻擊”

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章