當前位置:律師網大全 - 專利申請 - 想聽聽壹個密碼設計的數學建模問題。

想聽聽壹個密碼設計的數學建模問題。

公鑰密碼學,又稱雙密鑰密碼學和非對稱密碼學,是由Daffy和Hellman在1976的文章《密碼學的新方向》中提出的。參見劃時代的文獻:

W.Diffie和M.E.Hellman,密碼學的新方向,IEEE信息論匯刊,IT-22。第6號,11月1976,第644-654頁

單向活板門函數是滿足以下條件的函數f:

(1)給定x,很容易計算出y = f(x);

(2)給定y,很難計算出x使得y=f(x)。

(所謂計算難度x=f-1(Y)是指計算相當復雜,沒有實際意義。)

(3)當δ存在時,很容易計算出X使得y=f(x)對於任意給定的Y,如果對應的X存在。

註:1*。只有(1)和(2)稱為單向函數;第(3)條稱為陷門性質,δ稱為陷門信息。

2*.當陷門函數f被用作加密函數時,它可以被公開,這相當於公開了加密密鑰。此時加密密鑰稱為公鑰,記為Pk。F函數的設計者對δ保密,並將其作為解密密鑰。此時δ稱為密鑰,記為Sk。因為加密函數是公開的,任何人都可以把信息x加密成y=f(x)然後發給函數的設計者(當然也可以通過不安全的通道傳輸);既然設計者擁有Sk,自然可以求解x=f-1(y)。

3*.單向陷門函數的性質(2)表明竊聽者從截獲的密文y=f(x)推斷X是不可行的。

Diffie和Hellman在他們具有裏程碑意義的文章中給出了密碼學的思想,但是他們並沒有給出公鑰密碼學的真實例子,也沒有找到壹個真正的帶活板門的單向函數。但他們給出了單向函數的例子,並基於此提出了Diffie-Hellman密鑰交換算法。這個算法是基於有限域上計算離散對數的困難性:設F是有限域,g∈ F是f * = f \ {0} =

Diffie-Hellman密鑰交換協議描述:Alice和Bob協商壹個大素數P和壹個大整數G,1

當Alice和Bob想要私下交流時,他們可以按如下方式進行:

(1)Alice發送壹個大隨機數X並計算它。

X=gx(模P)

(2)Bob選擇壹個大隨機數x?,並計算x?= gx?(國防部)

(3)愛麗絲把X發給鮑勃;;Bob會x?把它發給愛麗絲

(4)愛麗絲計算K=(X?)X(mod P);Bob算k?=(X) X?(mod P),很容易看出來,K=K?=g xx?(國防部).

根據(4),Alice和Bob獲得了相同的秘密值K,雙方使用K作為加解密密鑰,用傳統的對稱密鑰算法進行安全通信。

註:Diffie-Hellman密鑰交換算法在美國和加拿大擁有專利。

3 RSA公鑰算法

RSA公鑰算法是由Rivest、Shamir和Adleman在1978中提出的(參見ACM通訊。第265438卷+0。第2號。二月1978,第120-126頁)。

Z/(n)表示為Zn,其中n = pqp和q是質數,是不同的。如果

Z*n?{g∈ Zn|(g,n)=1},很容易看出Z*n是?與g的(n)階乘法群?(n)?1(mod n),而?(n)=(p-1)(q-1)。

RSA密碼系統描述如下:

第壹,明文空間p =密文空間C=Zn。(參見P175)。

A.密鑰的生成

選擇p,q,p,q為互不相同的素數,計算n=p*q,?(n)=(p-1)(q-1),選擇整數e使(?(n),e)=1,1 & lt;e & lt?(n)),計算d使得d=e-1(mod?(n)),公鑰Pk={e,n };私鑰Sk={d,p,q}。

請註意,當0

MK?(n)+1?M(mod n),還有ed?1 (mod?(n))、易見(Me)d M(mod n)

B.加密(e,n)明文:m

C.解密(用d,p,q)

密文:c明文:M=Cd(mod n)

註:1*是加密和解密中的壹對逆運算。

2*,對於0 < M & lt當n,如果(M,n) ≠ 1,那麽M是p或q的整數倍,假設M=cp,從(cp,q)=1,則有M?(q)?1(mod q) M?(q)?(p)?1(q款)

有m嗎?(q)= 1+kq;M=cp兩邊乘法相同。

有m嗎?(q)+1 = m+kcpq = m+kcn那麽

有m嗎?(q)+1?m(現代)

例:如果Bob選擇p=101,Q = 113,那麽n=11413。(n)= 100×112 = 11200;但是11200 = 26× 52× 7,壹個正整數E可以作為加密索引當且僅當E不能被2,5,7整除(其實Bob不會分解φ(n),他會用相除的方法(歐式算法)求E使得(E,φ (n) =假設Bob選擇e=3533,那麽通過輾轉相除會得到:

d=e -1?6597(mod 11200),所以Bob的解密密鑰d=6597。

Bob在壹個目錄中發布n=11413和e=3533。現在假設Alice想發送純文本9726給Bob,她計算:

97263533(mod 11413)= 5761

並在壹個通道上發送密文5761。Bob收到密文5761時,用他的秘密解密索引(私鑰)D = 6597:57616597(mod 11413)= 9726解密。

註:RSA的安全性是建立在加密函數ek(x)=xe(mod n)是單向函數的基礎上的,所以人們求逆是不可行的。而Bob可以解密的陷阱就是分解n=pq,好嗎?(n)=(p-1)(q-1).因此,解密私鑰d由歐幾裏德算法求解。

4 RSA密碼系統的實現

實現步驟如下:Bob是實現者。

(1)鮑勃找到兩個大質數P和q。

(2)Bob計算n=pq和?(n)=(p-1)(q-1)。

(3)鮑勃選擇壹個隨機數e (0

(4)Bob計算d=e-1(mod?(n))

(5)Bob在目錄中公開N和E作為她的公鑰。

密碼分析者攻擊RSA系統的關鍵是如何分解n. Ruofen

如果解成功使n=pq,那麽就可以算出φ (n) = (P-1) (Q-1),然後由大眾算出

開e,解密d .(猜測:破解RSA,分解n是多項式。

相當於。然而這個猜想至今沒有給出壹個可信的證明!!!)

所以要求RSA要想安全,P和Q必須是足夠大的素數才能使。

分析師沒有辦法在多項式時間內分解n。建議的選擇

p和q大約是100的十進制質數。模塊n的長度要求至少為

512位。EDI攻擊標準使用的RSA算法規定n的長度為

512到1024位,但必須是128的倍數。國際數字

簽名標準ISO/IEC 9796規定n的長度為512位。

為了抵抗現有的整數分解算法,分析了RSA模n的素因子

p和q還具有以下要求:

(1)|p-q|很大,通常p和q的長度相同;

(2)p-1和q-1分別含有宏素因子p1和q1。

(3)P1-1和q1-1分別包含宏素因子p2和q2。

(4)p+1和q+1分別含有宏素因子p3和q3。

為了提高加密速度,通常將e取為特定的小整數,如EDI國際標準中的e = 216+1,ISO/IEC9796甚至允許e = 3。此時加密速度壹般比解密速度快10倍。接下來研究加解密算術運算,主要是模n的取冪運算,著名的“平方和乘法”方法將計算xc(mod n)的模乘次數減少到最多2l,其中L是二進制表示指數c的位數。設n用二進制形式表示k位,即k=[log2n]+1。L≤ k,這樣xc(mod n)可以在o(k3)時間內完成。(註意,不難看出乘法可以在o(k2)時間內完成。)

平方和乘法算法;

指數c以二進制形式表示為:

c=

xc = xc0×(x2)c 1×…×(x2t-1)CT-1

預先計算:x2=xx

x4=x22=x2x2

x2t-1 =x2t-2*x2t-2

Xc計算:將ci=1對應的所有x2i相乘得到xc。直到/非常

T-1乘法用的比較多。請參考參考書177頁並給出計算。

Xc(mod n)算法程序:

A=xc c=c0+c12+..+CT-12t-1 =[CT-1,....,c1,c0]2

5 RSA簽名方案

簽名的基本概念

傳統簽名(手寫簽名)的特點:

(1)簽名是已簽名文檔的物理部分;

(2)驗證實物部分,進行對比,達到確認的目的。(容易偽造)

(3)忠實“復制”不易!!!

定義:(數字簽名方案)簽名方案是壹種簽名算法和驗證。

證明算法由兩部分組成。可以通過五行關系組(P,A,K,S,V)來雕刻:

(1)P是所有可能消息的有限集;

(2)A是所有可能簽名的有限集;

(3)k是有限密鑰空間,是壹些可能的密鑰的有限集合;

(4)對於任何k ∈K,存在簽名算法Sigk ∈ S和相應的驗證算法Verk∈V,對於每壹個

Sigk:p A和Verk:P×A {true,false}滿足條件:任意x ∈ p,y ∈ a .具有簽名方案的簽名:ver (x,y) = {

註:1*。任何k∈K,函數Sigk和Verk都是多項式時間函數。

2*.Verk是公共函數,而Sigk是秘密函數。

3*.如果壞人(比如Oscar)想在X上偽造Bob的簽名,在計算上是不可能的。也就是說,給定x,只有Bob可以計算簽名y使得verk (x,y) = true。

4*.簽名方案不可能是無條件安全的。只要有足夠的時間,奧斯卡總能偽造鮑勃的簽名。

RSA簽名:n=pq,P=A=Zn,定義密鑰集K={(n,e,P,q,d)}|n=pq,d*e?1(mod?(n))}

註意:n和e是公鑰;p,q,d q和d是秘密的(私鑰)。對於x∈P,Bob應該符號X,取K ∈ K. Sigk(x)?xd(mod n)?y(模n)

因此

Verk(x,y)=真x?葉(現代)

(註:e,n是開的;可以公開驗證簽名(x,y)是對是錯!!即是否是鮑勃的簽名)

註:1*。任何人都可以對某個簽名Y計算x=ek(y)來偽造Bob在隨機消息x上的簽名。

2*.簽名消息的加密傳輸:假設Alice要加密給Bob的簽名消息,她是這樣做的:對於明文X,Alice計算X的簽名,y=SigAlice(x),然後用Bob的公開加密函數eBob計算。

Z=eBob(x,y),Alice將Z發送給Bob,Bob收到Z後,第壹步就是解密。

dBob(Z)=dBobeBob(x,y)=(x,y)

然後檢查

VeraAlice (x,y) = true

問:如果Alice先加密消息X,然後簽名,結果將是

怎麽樣?Y=SigAlice(eBob(x))

Alice發送(Z,y)給Bob,Bob先解密Z得到X;然後使用

VerAlice檢查關於x的加密簽名y。這種方法的潛在問題

問題是,如果奧斯卡得到這對(z,y),他可以用他的簽名

替換愛麗絲的簽名

y?=SigOscar(eBob(x))

(註:奧斯卡可以簽署密文eBob(x),即使他不知道明文x .奧斯卡隱形傳態(z,y?)鮑勃,鮑勃,他可能推斷明文x來自奧斯卡。所以大家還是建議先簽名再加密。)

6.EIGamal計劃

EIGamal公鑰密碼系統基於離散對數問題。讓p

至少150十進制素數,p-1有壹個大素數因子。Zp是有限域,

如果α是Zp中的本原,則有ZP * =

如何計算唯壹整數A,(必選,0≤a≤ p-2),滿足

αa=β(模p)

把a寫成a=logαβ。

壹般來說,求解a在計算上是困難的。

Zp*中Egamal公鑰體制的描述:設明文空間為P=Zp*,密文為空。

C=Zp*×Zp*,定義密鑰空間K={(p,α,a,β )|β=αa(mod p)}

公鑰是:p,α,β。

密鑰(私鑰):a

Alice取壹個秘密隨機數k∈ Zp-1,加密明文x。

ek(x,k)=(y1,y2)

其中y1 = α k (mod p),y2 = x β k (mod p)。

鮑勃解密了它,

dk(y1,y2)=y2(y1α)-1(mod p)

註:1*。很容易驗證Y2(y 1α)-1 = X(αA)K(αKa)-1 = X!!

2*.使用EIGamal加密算法,可以給出基於此的簽名方案:

Alice想對明文x簽名,首先她取壹個秘密隨機數K作為簽名。

簽收

Sigk(x,k)=(?, ?)

其中?=αk(mod p),?=(x-a?)k-1(型號p-1)

對吧,x?∈Zp*和∈ Zp-1,定義Verk(x,,?)=真等價於

β?α?=αx(模p)

應當註意,如果該簽名被正確構造,則驗證將

是成功的,因為

β?α?= αa?αk?(mod p)= αa?+k?(國防部)

從上面知道?=(x- a?)可以引入k-1(mod p-1)。

k?=x- a?(mod p-1)有a?+kx(mod p)

所以貝塔?= αx(模p)

該簽名方案已被NIST(美國國家標準與技術研究院)確定為簽名標準(1985)。

對於RSA,請訪問網站:

www.RSAsecurity.com

  • 上一篇:夏天可以泡溫泉嗎?
  • 下一篇:小微企業信貸存在問題及對策分析
  • copyright 2024律師網大全