網路安全 6 安全體系(二) RSA演算法詳解

2021-09-24 09:23:15 字數 3469 閱讀 4171

文章是從網上覆制過來的,原文有很多錯別字和錯誤的地方,我在這裡已經更正了,可直接閱覽。另外我還在文中新增了一些注釋,以便初學者能更好更快的理解。

本文主要講述rsa演算法使用的基本數學知識、秘鑰的計算過程以及加密和解密的過程。

rsa公鑰加密演算法是2023年由羅納德·李維斯特(ron rivest)、阿迪·薩莫爾(adi shamir)和倫納德·阿德曼(leonard adleman)一起提出的。2023年首次公布,當時他們三人都在麻省理工學院工作。rsa演算法以他們三人姓氏開頭字母命名。

rsa是目前最有影響力的公鑰加密演算法,到2023年為止,世界上還沒有任何可靠的攻擊rsa演算法的方式。只要秘鑰長度足夠長,用rsa加密的資訊實際上是不能被解破的。iso推薦它為公鑰資料加密標準。

rsa演算法基於簡單的數論事實:將兩個大質數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。

rsa是"非對稱加密演算法",非對稱加密演算法需要兩個金鑰:公開金鑰(publickey)和私有金鑰(privatekey)。公鑰與私鑰是配對的,用公鑰加密的資料只有配對的私鑰才能解密,反之亦然。因加解密使用兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。

非對稱演算法的在應用的過程如下,假設傳送方向接收方傳送訊息(明文):

1.接收方生成公鑰和私鑰,公鑰公開,私鑰保留;

2.傳送方將要傳送的訊息採用公鑰加密,得到密文,然後將密文傳送給接收方;

3.接收方收到密文後,用自己的私鑰進行解密,獲得明文。

可以看出,非對稱加密解決了對稱加密金鑰傳輸的問題。

rsa加密演算法中,只用到素數、互質數、尤拉函式、模運算等簡單的數學知識。

1.素數

素數又稱質數,指在乙個大於1的自然數中,除了1和此整數自身外,不能被其他自然數整除的數。

2.互質數

公因數只有1的兩個數,叫做互質數;又稱互素,若n個整數的最大公因子是1,則稱這n個整數互質。

判斷互質的簡單法則:

a.任意兩個質數是互質的;

b.乙個數是質數,另乙個數不是它的倍數,兩者互質(比如正整數p是質數,則小於p的正整數和p都是互質的);

c.兩個不相等的數,較大的那個數是質數,兩者互質;

d.1和任意自然數互質;

e.2和任何奇數是互質;

f.如果p是大於1的整數,則p和p-1互質;

g.如果p是大於1的奇數,則p和p-2互質。

尤拉函式的推導:

任意給定正整數n,求在小於等於n的正整數中,有多少個與n互質的正整數?

推導步驟如下:

a.當n=1時,φ(1)=1(2.1中的d);

b.n為質數時,φ(n)=n-1(2.1中的b);

c.如果n是某一質數的m次方,即n=pm(p為質數,m為整數且大於等於1),則

φ(pm)=pm-pm-1=pm(1-1/p)

這個式子是如何得到的呢?

當m=1時,同情況b。

根據2.1的b,p是質數,則從1到pm的整數中,除去pk(m≥k≥1),餘下的都與pm互質,也就是說,一共n(其中n=pm)個數,其中有pm-1(即p,p2,…pm)個整數與n不是互質關係,則與n互質的整數個數為pm-pm-1。

d.當n=p1*p2,且p1、p2互質時,有

φ(n)= φ(p1p2)=φ(p1) φ(p2)

即積的歐如果a與p1互質(ae.對於任意乙個大於1的正整數,都可以寫成

n=p1k1p2k2…prkr,其中,p1,p2,…,pk為質數。

由d可知

φ(n)= φ(p1k1)φ(p2k2)…φ(prkr),

再由c可知

φ(n)= p1k1p2k2…prkr(1-1/p1)(1-1/p2)…(1-1/pr)

即φ(n)=n(1-1/p1)(1-1/p2)…(1-1/pr)

這就是尤拉函式的通用計算公式。

尤拉定理:

如果兩個正整數a和n互質,則n的尤拉函式φ(n)可使下面等式成立

aφ(n)≡1(mod n)

上式表示,a的φ(n)次方被n除的餘數為1,或者敘述為,a的φ(n)次方減去1後可以被n整除。注意,φ(n)是n的尤拉函式。

尤拉定理的特殊情況:如果正整數a與質數p互質,因為質數p的φ(p)等於p-1,則尤拉定理可以寫成就是我們所說的費馬小定理

ap-1≡1(mod p)

注:①mod函式是求模取餘函式;

②「≡」是「恆等於」的意思。

模反元素:

如果兩個正整數a和n互質,那麼一定可以找到整數b,使得ab-1被n整除,或者說ab被n除的餘數是1。這時b被稱為a的模反元素。公式如下:

ab≡1(mod n)

注意,模反元素並不唯一,如果b是a的模反元素,則b+kn都是a的模反元素。

尤拉定理可以用來證明模反元素的必然存在:

aφ(n)= a×aφ(n)-1≡1(mod n)

用來計算秘鑰的d和e,這裡不詳細介紹,可參考擴充套件歐幾里得演算法。

金鑰生成的步驟如下:

1.隨機選擇兩個不相等的質數p和q;

2.計算p和q的乘積n(將n轉換為二進位制後,二進位制的長度就是金鑰的長度,實際應用中一般選擇1024位、2048位);

3.計算n的尤拉函式φ(n);

4.隨機選擇乙個整數e,其中φ(n)>e>1,且e與φ(n)互質(實際應用中e一般選為65537);

5.計算e對於φ(n)的模反元素d;

6.將n和e封裝成公鑰,n和d封裝成私鑰。

舉例:1.隨機選擇兩個不相等的質數47和59;

2.二者的乘積為43×57=2773,2773轉化為二進位制為1010,1101,0101,長度為12位,所以金鑰的長度為12位;

3.根據尤拉函式公式φ(n)=n(1-1/p)(1-1/q)計算,φ(2773)= 2773×(1-1/47)(1-1/59)=(47-1)(59-1)=2668;

4.隨機選擇乙個整數e=63,2668>63>1,並且63與2668互質;

5.計算63對於2668的模反元素d,根據公式ed≡1(mod φ(n)),有63d-1=2668k,由歐幾里得擴充套件公式計算得d=847。

6.公鑰(n,e)=(2773,63),私鑰(n,d)=(2773,847)。

1.加密

假設傳送方向接收方傳送資訊m,m未加密,我們稱之為明文。傳送方從接收方獲得的公鑰為(n,e),加密公式為

me=c(mod n)

其中,m必須是整數,而且m必須比n小。

m,e,n已知,從上面的公式中計算出c,c就是加密後的資訊,我們稱之為密文。傳送方將密文傳送給接收方。

2.解密

接收方從傳送方接收到密文c,用自己的配對私鑰(n,d)進行解密,解密公式為

cd=m(mod n)

已知c,n,d,從上面公式中計算出m,就是傳送方發過來的明文。

舉例:1.加密

根據上面計算出的公鑰(n,e)=(2773,63),假如m=244,根據公式me=c(mod n),可計算出密文c=465。

2.解密

根據上面計算出的私鑰(n,d)=(2773,847),已知c=465,根據公式cd=m(mod n),可計算出明文m=244。

網路安全體系

網路安全體系 目前計算機網路面臨的主要風險包括利用系統漏洞 暴力破解密碼 病毒和木馬 系統掃瞄 dos 網路釣魚和中間人攻擊 mitm 等。因此乙個良好的網路安全體系對企業至關重要,如下所示 1 物理安全 需要乙個安全的環境,如防火 防盜 防雷擊 還需要合適的溫度等 2 系統安全 3 網路安全 4 ...

安全體系(二) RSA演算法詳解

正文 本文主要講述rsa演算法使用的基本數學知識 秘鑰的計算過程以及加密和解密的過程。安全體系 零 加解密演算法 訊息摘要 訊息認證技術 數字簽名與公鑰證書 安全體系 一 des演算法詳解 安全體系 三 sha1演算法詳解 回到頂部 rsa公鑰加密演算法是1977年由羅納德 李維斯特 ron riv...

網路安全 練習RSA演算法

已知rsa演算法中,素數p 5,q 7,模數n 35,公鑰e 5,明文為bed,對明文進行加解密,使用手工完成rsa公開秘鑰密碼體制演算法加密運算。字母數字對映表如下 請參考 1 設計公私金鑰 e,n 和 d,n 根據題設,p 5,q 7,故 模數n 5 7 35 f n p 1 q 1 4 6 2...