1. rsa密碼體系是什麼樣的密碼體系
RSA密碼系統是較早提出的一種公開鑰密碼系統。1978年,美國麻省理工學院(MIT)的Rivest,Shamir和Adleman在題為《獲得數字簽名和公開鑰密碼系統的方法》的論文中提出了基於數論的非對稱(公開鑰)密碼體制,稱為RSA密碼體制。RSA是建立在「大整數的素因子分解是困難問題」基礎上的,是一種分組密碼體制。
2. 密碼學中的rsa演算法是什麼
密碼學中的rsa演算法是什麼如下:
演算法原理:
RSA公開密鑰密碼體制的原理是:根據數論,尋求兩個大素數比較簡單,而將它們的乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰
RSA的難度與大數分解難度等價。因為沒有證明破解RSA就一定需要做大數分解。假設存在一或胡種無須分解悄冊大數的演算法衫運攔,那它肯定可以修改成為大數分解演算法,即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數人士傾向於因子分解不是NPC問題
3. RSA的全稱(密碼學)
由美國麻塌茄 省理族衫歷工 學兆搜院三 位學者 Riv est、Sh amir 及
Adleman 研 究發 展出 一套 可實 際使用 的公 開金 鑰密 碼系 統,那 就是
RSA(Rivest-Shamir-Adleman)密碼系統。
4. 什麼是RSA
RSA公鑰密碼體制是以發明該體制的三位密碼學家Rivest,Shamir和Adleman的名字命名的,目前成為商業化最成功的演算法。
系統建立和密鑰產生
選擇兩個大素數p和q,另n=pq,按照一定規則選擇隨機數e和d,使其滿足ed mod (p-1)(q-1)=1。則公開(e, n)為用戶公開密鑰,保留d作為對應的用戶私鑰。
加密過程
如果想將明文消息M加密後發給該用戶,則密文C的計算過程如下:C=Me mod n。
解密過程
當用戶收到密文C後,計算Cd mod n=M 就恢復出密文了。
RSA公鑰體制的安全是建立在大整數的素因子分解這一數學難題之上的。一旦人們發現一種分解大整數的有效方法,則RSA公鑰密碼體制的安全性隨著崩潰。
RSA公鑰密碼體制可以很容易改造成為數字簽名方案。假設一個用戶(用戶A)擁有RSA公私鑰對,即擁有對應公鑰(e, n)的私鑰d。
產生簽名
當用戶A要對明文消息m進行數字簽名時,計算s=md mod n,則s就是對消息m的數字簽名。
驗證簽名
當一個用戶(用戶B)要對該用戶A的數字簽名進行驗證時,用戶B需要得到明文消息m和數字簽名s,然後驗證等式se mod n=m是否成立,如果成立,則驗證通過,否則,不能接受s為m的合法數字簽名。
注意數字簽名不提供消息的機密性,因為簽名者需要將簽名消息m和簽名s同時發給驗證者。如果在此過程中不希望其他人能非法獲取m的內容,需要再對m進行加密處理,這種情況不是簡單的數字簽名,而是加密與數字簽名的結合。一種更有效的途徑是使用簽密演算法(SignEncryption)。
(轉載前請告知)
5. RSA是什麼意思
RSA演算法是一種非對稱密碼演算法,所謂非對稱,就是指該演算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。
RSA的演算法涉及三個參數,n、e1、e2。
其中,n是兩個大質數p、q的積,n的二進製表示時所佔用的位數,就是所謂的密鑰長度。
e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n及e1),(n及e2)就是密鑰對。
RSA加解密的演算法完全相同,設A為明文,B為密文,則:A=B^e1 mod n;B=A^e2 mod n;
e1和e2可以互換使用,即:
A=B^e2 mod n;B=A^e1 mod n;
補充回答:
對明文進行加密,有兩種情況需要這樣作:
1、您向朋友傳送加密數據,您希望只有您的朋友可以解密,這樣的話,您需要首先獲取您朋友的密鑰對中公開的那一個密鑰,e及n。然後用這個密鑰進行加密,這樣密文只有您的朋友可以解密,因為對應的私鑰只有您朋友擁有。
2、您向朋友傳送一段數據附加您的數字簽名,您需要對您的數據進行MD5之類的運算以取得數據的"指紋",再對"指紋"進行加密,加密將使用您自己的密鑰對中的不公開的私鑰。您的朋友收到數據後,用同樣的運算獲得數據指紋,再用您的公鑰對加密指紋進行解密,比較解密結果與他自己計算出來的指紋是否一致,即可確定數據是否的確是您發送的、以及在傳輸過程中是否被篡改。
密鑰的獲得,通常由某個機構頒發(如CA中心),當然也可以由您自己創建密鑰,但這樣作,您的密鑰並不具有權威性。
計算方面,按公式計算就行了,如果您的加密強度為1024位,則結果會在有效數據前面補0以補齊不足的位數。補入的0並不影響解密運算。
6. 什麼是rsa密碼
RSA公鑰密碼是1977年由Ron Rivest、Adi Shamirh和LenAdleman在MIT即美國麻省理工學院開發的。1978年首次公布,它是目前最有影響的公鑰加密演算法,它能夠抵抗到目前為止已知的禪答所有密碼攻擊。目前它已被ISO推薦為公鑰數據加密標准。RSA演算法基於一個十分簡單的數論事實:清襲槐兩個大素數可以簡單地相乘,但是乘積分解很困難。具體就答友是把原來的數據經過模冪運算之後轉化到另外一個數,將轉化後的數據當作私鑰和密鑰。
7. Rsa是什麼意思
RSA加密演算法是一種非對稱加密演算法。在公開密鑰加密和電子商業中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開汪輪輪頭字母拼在一起組成的。
1973年,在英國政府通訊總部工作的數學家克利福德·柯克斯(Clifford Cocks)在一個內部文件中提出了一個相同的演算法,但他的發現被列入機密,一直到1997年才被發表。
(7)rsa密碼是什麼體系擴展閱讀
RSA的安全性依賴於大數分解,但是否等同於大數桐含分解一直未能得到理論上的證明,因為沒有證明破解RSA就一定需要作大數分解。
假設存在一種無須分解大數的演算法,那它肯定可以修改成為大數分解演算法。 RSA 的一些變種演算法已被證明等價於大數分解。不管怎樣,分解n是最顯然的攻擊方法。人們已能分解多個十進制位的大素數。因此,困信模數n必須選大一些,因具體適用情況而定。
8. (多選)RSA屬於哪些密碼體制A非對稱密碼體制B序列密碼體制C對稱密碼體制D傳統密碼體制E分組密碼體制
A非對稱密碼體制,E分組密碼體制。
n的歐拉函數=(5-1)*(7-1)=24
e和d的關系關於n的歐拉函數為逆元
也就是說 e*d=1(mod n的歐拉函數)
可以算出來5*5=1(mod 24) 也就是說d湊巧也為5
M=10的五次方(mod 35)
n的歐拉函數,永遠算公鑰和私鑰也就是凱雀e和d
n用於加密解密
(8)rsa密碼是什麼體系擴展閱讀:
RSA密碼體制是根據PKC演算法,該和攜體制的理論基礎是數論中的下述論斷:要求得到兩個大素數(如大到100位)的乘積在計算機上很容易實盯棚早現,但要分解兩個大素數的乘積在計算機上幾乎不可能實現,即為單向函數。
由於進行的都是大數計算,使得RSA最快的情況也比DES慢上好幾倍,無論是軟體還是硬體實現。速度一直是RSA的缺陷。一般來說只用於少量數據加密。RSA的速度比對應同樣安全級別的對稱密碼演算法要慢1000倍左右。
9. 在數據加密類型中RSA採用的是對稱密鑰體制嗎
密碼體制分類密碼體制大體上分為三類:(1)「常規密碼」,又稱為「單鑰密碼」,「對稱密碼」。(2)「公開鑰密碼」,又稱為「雙鑰密碼」,「非對稱密碼」。(3) 基於身份的密碼。對稱密碼體制是一種傳統密碼體制,握孝也稱為私鑰密碼體制。在對稱加密系統中,加密和解密採用相同的密鑰。因為加解密密鑰相同,需要通信的雙方必須選擇和保存他們共同的密鑰,各方必須信任對方不會將密鑰泄密出去,這樣就可以實現數據的機密性和完整性。對於具有n個用戶的網路,需要n(n-1)/2個密鑰,在用戶群不是很大的情況下,對稱加密系統是有效的。但是對於大型網路,當用戶群很大,分布很廣時,密鑰的分配和保存就成了問題。對機密信息進行加密和驗證隨報文一起發送報文摘要(或散列值)來實現。比較典型的演算法有DES(Data Encryption Standard數據加密標准)演算法及其變形Triple DES(三重DES),GDES(廣義DES);歐洲的IDEA;日本的FEAL N、RC5等。DES標准由美國國家標准局提出,主要應用於銀行業的電子資金轉帳(EFT)領域。DES的密鑰長度為56bit。Triple DES使用兩個獨立的56bit密鑰對交換的信息進行3次加密,從而使其有效長度達到112bit。RC2和RC4方法是RSA數據安全公司的對稱加密專利演算法,它們採用可變密鑰長度的演算法。通過規定不同的密鑰長度,,C2和RC4能夠提高或降低安全的程度。對稱密碼演算法的優點是計算開銷小,加密速度快,是目前用於信息加密的主要演算法。它的局限性在於它存在著通信的貿易雙方之間確保密鑰安全交換的問題。此外,某一貿易方有幾個貿易關系,他就要維護幾個專用密鑰。碰判它也沒法鑒別貿易發起方或貿易最終方,因為貿易的雙方的密鑰相同。另外,由於對稱加密系統僅笑皮改能用於對數據進行加解密處理,提供數據的機密性,不能用於數字簽名。因而人們迫切需要尋找新的密碼體制。
10. 公鑰密碼→RSA詳解
在對稱密碼中,由於加密和解密的密鑰是相同的,因此必須向接收者配送密鑰。用於解密的密鑰必須被配送給接收者,這一問題稱為 密鑰配送問題 ,如果使用公鑰密碼,則無需向接收者配送用於解密的密鑰,這樣就解決了密鑰配送問題。可以說公鑰密碼是密碼學歷史上最偉大的發明。
解決密鑰配送問題的方法
在人數很多的情況下,通信所需要的密鑰數量會增大,例如:1000名員工中每一個人都可以和另外999個進行通信,則每個人需要999個通信密鑰,整個密鑰數量:
1000 x 999 ÷ 2 = 499500
很不現實,因此此方法有一定的局限性
在Diffic-Hellman密鑰交換中,進行加密通信的雙方需要交換一些信息,而這些信息即便被竊聽者竊聽到也沒有問題(後續文章會進行詳解)。
在對稱密碼中,加密密鑰和解密密鑰是相同的,但公鑰密碼中,加密密鑰和解密密鑰卻是不同的。只要擁有加密密鑰,任何人都可以加密,但沒有解密密鑰是無法解密的。
公鑰密碼中,密鑰分為加密密鑰(公鑰)和解密密鑰(私鑰)兩種。
公鑰和私鑰是一一對應的,一對公鑰和私鑰統稱為密鑰對,由公鑰進行加密的密文,必須使用與該公鑰配對的私鑰才能夠解密。密鑰對中的兩個密鑰之間具有非常密切的關系——數學上的關系——因此公鑰和私鑰是不能分別單獨生成的。
發送者:Alice 接收者:Bob 竊聽者:Eve
通信過程是由接收者Bob來啟動的
公鑰密碼解決了密鑰配送的問題,但依然面臨著下面的問題
RSA是目前使用最廣泛的公鑰密碼演算法,名字是由它的三位開發者,即Ron Rivest、Adi Shamir和Leonard Adleman的姓氏的首字母組成的(Rivest-Shamir-Adleman)。RSA可以被使用公鑰密碼和數字簽名(此文只針對公鑰密碼進行探討,數字簽名後續文章敬請期待)1983年在美國取得了專利,但現在該專利已經過期。
在RSA中,明文、密鑰和密文都是數字,RSA加密過程可以用下列公式來表達
密文 = 明文 E mod N
簡單的來說,RSA的密文是對代表明文的數字的 E 次方求mod N 的結果,換句話說:將明文和自己做 E 次乘法,然後將結果除以 N 求余數,這個余數就是密文。
RSA解密過程可以用下列公式來表達
明文 = 密文 D mod N
對表示密文的數字的 D 次方求mod N 就可以得到明文,換句話說:將密文和自己做 D 次乘法,在對其結果除以 N 求余數,就可以得到明文
此時使用的數字 N 和加密時使用的數字 N 是相同的,數 D 和數 N 組合起來就是RSA的解密密鑰,因此 D 和 N 的組合就是私鑰 。只要知道 D 和 N 兩個數的人才能夠完成解密的運算
根據加密和解密的公式可以看出,需要用到三個數—— E 、 D 和 N 求這三個數就是 生成密鑰對 ,RSA密鑰對的生成步驟如下:
准備兩個很大的質數 p 和 q ,將這兩個數相乘,結果就是 N
N = p x q
L 是 p-1 和 q-1 的最小公倍數,如果用lcm( X , Y )來表示 「 X 和 Y 的最小公倍數」 則L可以寫成下列形式
L = lcm ( p - 1, q - 1)
E 是一個比1大、比 L 小的數。 E 和 L 的最大公約數必須為1,如果用gcd( X , Y )來表示 X 和 Y 的最大公約數,則 E 和 L 之間存在下列關系:
1 < E < L
gcd( E , L ) = 1 (是為了保證一定存在解密時需要使用的數 D )
1 < D < L
E x D mod L = 1
p = 17
q = 19
N = p x q = 17 x 19 = 323
L = lcm ( p - 1, q - 1) = lcm (16,18) = 144
gcd( E , L ) = 1
滿足條件的 E 有很多:5,7,11,13,17,19,23,25,29,31...
這里選擇5來作為 E ,到這里我們已經知道 E = 5 N = 323 這就是公鑰
E x D mod L = 1
D = 29 可以滿足上面的條件,因此:
公鑰: E = 5 N = 323
私鑰: D = 29 N = 323
要加密的明文必須是小於 N 的數,這是因為在加密運算中需要求 mod N 假設加密的明文是123
明文 E mod N = 123 5 mod 323 = 225(密文)
對密文225進行解密
密文 D mod N = 225 29 mod 323 = 225 10 x 225 10 x 225 9 mod 323 = (225 10 mod 323) x (225 10 mod 323) x (225 9 mod 323) = 16 x 16 x 191 mod 323 = 48896 mod 323 = 123(明文)
如果沒有mod N 的話,即:
明文 = 密文 D mod N
通過密文求明文的難度不大,因為這可以看作是一個求對數的問題。
但是,加上mod N 之後,求明文就變成了求離散對數的問題,這是非常困難的,因為人類還沒有發現求離散對數的高效演算法。
只要知道 D ,就能夠對密文進行解密,逐一嘗試 D 來暴力破譯RSA,暴力破解的難度會隨著D的長度增加而加大,當 D 足夠長時,就不能再現實的時間內通過暴力破解找出數 D
目前,RSA中所使用的 p 和 q 的長度都是1024比特以上, N 的長度為2048比特以上,由於 E 和 D 的長度可以和N差不多,因此要找出 D ,就需要進行2048比特以上的暴力破解。這樣的長度下暴力破解找出 D 是極其困難的
E x D mod L = 1 L = lcm ( p - 1, q - 1)
由 E 計算 D 需要使用 p 和 q ,但是密碼破譯者並不知道 p 和 q
對於RSA來說,有一點非常重要,那就是 質數 p 和 q 不能被密碼破譯這知道 。把 p 和 q 交給密碼破譯者與把私鑰交給密碼破譯者是等價的。
p 和 q 不能被密碼破譯者知道,但是 N = p x q 而且 N 是公開的, p 和 q 都是質數,因此由 N 求 p 和 q 只能通過 將 N 進行質因數分解 ,所以說:
一旦發現了對大整數進行質因數分解的高效演算法,RSA就能夠被破譯
這種方法雖然不能破譯RSA,但卻是一種針對機密性的有效攻擊。
所謂中間人攻擊,就是主動攻擊者Mallory混入發送者和接收者的中間,對發送者偽裝成接收者,對接收者偽裝成發送者的攻擊,在這里,Mallory就是「中間人」
這種攻擊不僅針對RSA,而是可以針對任何公鑰密碼。在這個過程中,公鑰密碼並沒有被破譯,所有的密碼演算法也都正常工作並確保了機密性。然而,所謂的機密性並非在Alice和Bob之間,而是在Alice和Mallory之間,以及Mallory和Bob之間成立的。 僅靠公鑰密碼本身,是無法防禦中間人攻擊的。
要防禦中間人攻擊,還需要一種手段來確認所收到的公鑰是否真的屬於Bob,這種手段稱為認證。在這種情況下,我們可以使用公鑰的 證書 (後面會陸續更新文章來進行探討)
網路上很多伺服器在收到格式不正確的數據時都會向通信對象返回錯誤消息,並提示「這里的數據有問題」,然而,這種看似很貼心的設計卻會讓攻擊者有機可乘。 攻擊者可以向伺服器反復發送自己生成的偽造密文,然後分析返回的錯誤消息和響應時間獲得一些關於密鑰和明文的信息。
為了抵禦這種攻擊,可以對密文進行「認證」,RSA-OAEP(最優非對稱加密填充)正是基於這種思路設計的一種RSA改良演算法。
RSA-OAEP在加密時會在明文前面填充一些認證信息,包括明文的散列值以及一定數量的0,然後用RSA進行加密,在解密的過程中,如果解密後的數據的開頭沒有找到正確的認證信息,則可以判定有問題,並返回固定的錯誤消息(重點是,不能將具體的錯誤內容告知開發者)
RSA-OAEP在實際應用中,還會通過隨機數使得每次生成的密文呈現不同的排列方式,從而進一步提高安全性。
隨著計算機技術的進步等,以前被認為是安全的密碼會被破譯,這一現象稱為 密碼劣化 ,針對這一點: