目錄
公鑰私鑰
rsa理論
安全性rsa 1024
一、公鑰加密
假設一下,我找了兩個數字,乙個是1,乙個是2。我喜歡2這個數字,就保留起來,不告訴你們(私鑰),然後我告訴大家,1是我的公鑰。
我有乙個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用
數字2,就是我的私鑰,來解密。這樣我就可以保護資料了。
我的好朋友x用我的公鑰1加密了字元a,加密後成了b,放在網上。別人偷到了這個檔案,但是別人解不開,因為別人不知道2就是我的私鑰,
只有我才能解密,解密後就得到a。這樣,我們就可以傳送加密的資料了。
二、私鑰簽名
如果我用私鑰加密一段資料(當然只有我可以用私鑰加密,因為只有我知道2是我的私鑰),結果所有的人都看到我的內容了,因為他們都知
道我的公鑰是1,那麼這種加密有什麼用處呢?
但是我的好朋友x說有人冒充我給他發信。怎麼辦呢?我把我要發的信,內容是c,用我的私鑰2,加密,加密後的內容是d,發給x,再告訴他
解密看是不是c。他用我的公鑰1解密,發現果然是c。
這個時候,他會想到,能夠用我的公鑰解密的資料,必然是用我的私鑰加的密。只有我知道我得私鑰,因此他就可以確認確實是我發的東西。
這樣我們就能確認傳送方身份了。這個過程叫做數字簽名。當然具體的過程要稍微複雜一些。用私鑰來加密資料,用途就是數字簽名。
總結:公鑰和私鑰是成對的,它們互相解密。
公鑰加密,私鑰解密。
私鑰數字簽名,公鑰驗證。
1、什麼是rsa
rsa公鑰加密演算法是2023年由羅納德·李維斯特(ron rivest)、阿迪·薩莫爾(adi shamir)和倫納德·阿德曼(leonard adleman)一起提出的。2023年首次公布,當時他們三人都在麻省理工學院工作。rsa就是他們三人姓氏開頭字母拼在一起組成的。
rsa是目前最有影響力的公鑰加密演算法,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被iso推薦為公鑰資料加密標準。
今天只有短的rsa鑰匙才可能被強力方式解破。到2023年為止,世界上還沒有任何可靠的攻擊rsa演算法的方式。只要其鑰匙的長度足夠長,用rsa加密的資訊實際上是不能被解破的。但在分布式計算和量子計算機理論日趨成熟的今天,rsa加密安全性受到了挑戰。
rsa演算法基於乙個十分簡單的數論事實:將兩個大質數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。
rsa演算法是現今使用最廣泛的公鑰密碼演算法,也是號稱地球上最安全的加密演算法。在了解rsa演算法之前,先熟悉下幾個術語
根據金鑰的使用方法,可以將密碼分為對稱密碼和公鑰密碼
對稱密碼:加密和解密使用同一種金鑰的方式
公鑰密碼:加密和解密使用不同的密碼的方式,因此公鑰密碼通常也稱為非對稱密碼。
2.rsa加密
rsa的加密過程可以使用乙個通式來表達
密文=明文^e (mod n)也就是說rsa加密是對明文的e次方後除以n後求餘數的過程。
從通式可知,只要知道e和n任何人都可以進行rsa加密了,所以說e、n是rsa加密的金鑰,也就是說e和n的組合就是公鑰,我們用(e,n)來表示公鑰
公鑰 = (e,n)不過e和n不並不是隨便什麼數都可以的,它們都是經過嚴格的數學計算得出的,關於e和n擁有什麼樣的要求及其特性後面會講到。e是加密(encryption)的首字母,n是數字(number)的首字母。
3.rsa解密
明文 = 密文^d (mod n)也就是說對密文進行d次方後除以n的餘數就是明文,這就是rsa解密過程。知道d和n就能進行解密密文了,所以d和n的組合就是私鑰
私鑰=(d,n)從上述可以看出rsa的加密方式和解密方式是相同的,加密是求「e次方的mod n」;解密是求「d次方的mod n」 此處d是解密(decryption)的首字母;n是數字(number)的首字母。
4.生成金鑰對
生成金鑰對(e,d,n)的步驟:
4.1 求n
準備兩個質數p,q。這兩個數不能太小,太小則會容易破解,將p乘以q就是n
n = p * q4.2 求φ(n)
φ(n) = (p-1) * (q-1)
4.3 求e
1 < e < φ(n),且e與φ(n)互質4.4 求d
數d是由數e計算出來的。d、e和φ(n)之間必須滿足以下關係:
1 < d < φ(n)只要d滿足上述2個條件,則通過e和n進行加密的密文就可以用d和n進行解密。e*d mod φ(n) = 1
簡單地說條件2是為了保證密文解密後的資料就是明文。 現在私鑰自然也已經生成了,金鑰對也就自然生成了。
具體原理主要依據尤拉定理
(1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d
(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
(3)n=pq。只有將n因數分解,才能算出p和q。=>npc問題
當p和q是乙個大素數的時候,從它們的積pq去分解因子p和q,這是乙個公認的數學難題。比如當pq大到1024位時,迄今為止還沒有人能夠利用任何計算工具去完成分解因子的任務。因此,rsa從提出到現在已近二十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。
然而,雖然rsa的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯rsa的難度與大數分解難度等價。即rsa的重大缺陷是無法從理論上把握它的保密性能如何。
此外,rsa的缺點還有:a)產生金鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。b)分組長度太大,為保證安全性,n 至少也要 600 bits 以上,使運算代價很高,尤其是速度較慢,較對稱密碼演算法慢幾個數量級;且隨著大數分解技術的發展,這個長度還在增加,不利於資料格式的標準化。因此,使用rsa只能加密少量資料,大量的資料加密還要靠對稱密碼演算法。
n為1024bit(n=p*q,mod n的這個n),一次可以加密的明文不能大於n,否則會產生迴繞,無法正確解密,因此明文和密文最大都可以達到1024/8=128b,但由於明文長度可以小於n,需要給二進位制乙個結束標誌,用到padding(填充),一般使用的padding標準有noppadding、oaeppadding、pkcs1padding等,其中pkcs#1建議的padding就占用了11個位元組。那麼真正的明文最大只有117位元組了。
對於填充規則,博主還不會,有大佬懂得麻煩指個路,感激不盡。
如有錯誤,感謝大家糾正。
公鑰私鑰:
rsa概念:
rsa原理:
rsa原理,推導,證明:
RSA演算法原理及應用示例
rsa演算法是一種基於公鑰和私鑰的加密演算法,是由ronald rivest,adi shamir和len adleman三人在diffie helman指數金鑰交換演算法的 基礎上於1977年設計出來的,rivest設計的加密系統利用了數學領域的乙個事實,那就是雖然把兩個大素數相乘生成乙個合數是件...
RSA演算法原理及加密解密簡介
素數又稱質數,指在乙個大於1的自然數中,除了1和此整數自身外,不能被其他自然數整除的數。公因數只有1的兩個數,叫做互質數 又稱互素,若n個整數的最大公因子是1,則稱這n個整數互質。rsa演算法 是根據數論中相關理論求出公鑰和私鑰 找出質數p和q 2.n p q l p 1 q 1 此為尤拉函式 數論...
rsa驗籤中文 RSA簽名及驗籤原理解析
一 名詞解釋 公鑰rsa 金鑰體系中對外公開的部分,通常用於資料加密 驗證數字簽名。私鑰rsa 金鑰體系中非公開的部分,通常用於資料解密 資料簽名。數字簽名 就是只有資訊的傳送者才能產生的,別人無法偽造的一段數字串,它同時也是對傳送者傳送的資訊的真實性的乙個證明。二 為什麼要使用簽名 在系統間報文互...