目前已知的最強加密算法RSA

2021-02-15 IT大咖說

前面有人讓我講解一下RSA算法,今天我就用我所學的知識講解一下,首先我們先了解一下RSA

RSA是一種非對稱加密算法,1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的,因此以三人姓氏的首字母命名了該非對稱加密算法,RSA算法。

在了解非對稱性加密的時候我們需要了解什麼叫對稱性加密。我們就那徐克導演拍的電影《智取威虎山》,其中的一段對話

土匪:天王蓋地虎!
楊子榮:寶塔鎮河妖!
土匪:野雞悶頭鑽,哪能上天王山!
楊子榮:地上有的是米,餵呀,有根底!
土匪:拜見過阿媽啦?
楊子榮:他房上沒瓦,非否非,否非否!

通過他們的對話我們知道 土匪在試探楊子榮的身份。當土匪說,天王蓋地虎,我就必須說 寶塔鎮河妖!也就是雙方都知道 這段話是什麼意思。翻譯成程式設計師的話就是 雙方都有加密的密鑰。因此對稱加密也可以說是秘密交易者的暗號。

不過對稱加密有一個很大的問題,密鑰容易洩露。土匪的暗號被楊子榮知道了這個就很容易取得了他們的信任。

RSA加密

我們需要先預習一下還給數學老師的知識

歐拉函數
在數論中,存在正整數 n,小於n並且與n互質的正整數的數目稱為n的歐拉函數記著φ(n)。例如:
φ(7) 7對應的比7小的與7互質的數有1、2、3、4、5、6共6個,因此φ(7)=6;
φ(8) 8對應的比8小的與8互質的數有1,3,5,7共4個,因此φ(8)=4;
φ(9) 9對應的比9小的與9互質的數有1,2,4,5,6,7,8共7個,,因此φ(9)=7。

通式(P是數N的質因數)

φ(10)=10×(1-1/2)×(1-1/5)=4;

φ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8;

φ(49)=49×(1-1/7)=42。若m n互質:φ(n * m)=φ(n)* φ(m),如果n為質數那麼φ(n)=n-1。
分解質因數求值:φ(12)=φ(4 * 3)=φ( 2^2 * 3^1 )=( 2^2 - 2^1 ) * (3^1 - 3^0)=4。

歐拉定理
如果兩個正整數m和n互質,那麼m的φ(n) 次方對n取餘衡等於1。m^φ(n)%n≡1。

費馬小定理
存在一個質數p,而整數a不是p的倍數,則存在a^(p-1)%p≡1。費馬小定理是歐拉定理的特殊情況。因為φ(p)=p-1(任何數都與質數互質)。

模反元素
如果兩個正整數e和x互質,那麼一定存在一個整數d,使得ed-1能夠被x整除,則稱d是e對x的模反元素。e * d % x≡1,那麼e * d ≡ k*x+1。

由以上定理得出以下幾個公式:
1、m^φ(n)%n≡1
2、m^(k * φ(n))%n≡1 兩端同乘以m
3、m^(k * φ(n)+1)%n≡m
4、e * d≡k * x+1
5、m^e * d%n≡m 替換第3步k * φ(n)+1

而m^e*d%n≡m就是我們需要的一個非對稱加密的公式。m為明文,e和d分別對應的是公鑰私鑰。迪菲卡爾曼秘鑰交換對公式拆分:
m^e%n=c 加密
c^d%n=m 解密
其中c為通過e加密後的密文,然後通過d可以解出明文m。因此:
公鑰: e、n
秘鑰:d、n
明文:m
密文:c

RSA加密過程
1、取兩個質數p1、p2;
2、確定n值,n=p1 * p2,n值一般會很大長度一般為1024個二進位位;
3、確定φ(n),φ(n)=(p1-1) * (p2-1);
4、確定e值,1<e<φ(n),e為整數並且與φ(n)互質;
5、確定d值,e*d%φ(n)=1;
6、加密 c=m^e%n;
7、解密m=c^d%n。

實際驗證:
1、p1=3, p2=7;
2、n=p1 * p2=3 * 7=21;
3、φ(n)=(p1-1) * (p2-1)=2*6=12;
4、1<e<12,e=5(e與12互質則取值{1,5,7,11},φ(12)=4個互質數,滿足條件的有4個);
5、e * d % φ(n)=5 * d % 12=1,得d=17;
6、設置明文m=3,則c = m^e % n = 3^5 % 21=12;
7、解密密文m=c^d % n=12^17 % 21=3。

通過上面的講解我們知道在RSA 加密中用到的幾6個參數

p1
p2
n
φ(n)
e
d

這六個數字之中,公鑰用到了兩個(n和e),其餘四個數字都是不公開的。其中最關鍵的是d,因為n和d組成了私鑰,一旦d洩漏,就等於私鑰洩漏。

那麼,有無可能在已知n和e的情況下,推導出d?

1) e*d%φ(n)=1 (只有知道e和φ(n),才能算出d。)

2) φ(n)=(p1-1) * (p2-1) (只有知道p1和p2,才能算出φ(n)。)

3) n=p1*p2 (只有將n因數分解,才能算出p和q。)

結論:如果n可以被因數分解,d就可以算出,也就意味著私鑰被破解。

可是,大整數的因數分解,是一件非常困難的事情。目前,除了暴力破解,還沒有發現別的有效方法。維基百科這樣寫道:

  "對極大整數做因數分解的難度決定了RSA算法的可靠性。換言之,對一極大整數做因數分解愈困難,RSA算法愈可靠。

  假如有人找到一種快速因數分解的算法,那麼RSA的可靠性就會極度下降。但找到這樣的算法的可能性是非常小的。今天只有短的RSA密鑰才可能被暴力破解。到2008年為止,世界上還沒有任何可靠的攻擊RSA算法的方式。

  只要密鑰長度足夠長,用RSA加密的信息實際上是不能被解破的。"

或許你看到這裡還不相信,我寫個程序挨著試 不就可以破解出來嗎?例如 21 你或許會很快的分解成 3×7 但是這個數再大一點 比如 這個質數 2^57,885,161-1 它有超過1千7百萬個數位 如果讓傳統計算機來驗證他是不是質數 估計可以跑到天荒地老。

本文參考了 百度百科和維基百科

來源:

https://www.toutiao.com/i6909656008197603843/

「IT大咖說」歡迎廣大技術人員投稿,投稿郵箱:aliang@itdks.com


 IT大咖說  |  關於版權 

由「IT大咖說(ID:itdakashuo)」原創的文章,轉載時請註明作者、出處及微信公眾號。投稿、約稿、轉載請加微信:ITDKS10(備註:投稿),茉莉小姐姐會及時與您聯繫!

感謝您對IT大咖說的熱心支持!

相關焦點

  • 最安全的加密算法RSA
    tiankonguse曾是一名ACMer,現在是鵝廠視頻部門的後臺開發。 這裡主要記錄算法,數學,計算機技術等好玩的東西。這裡一般一周更新兩篇文章。今天記錄一下RSA加密算法。前幾天朋友讓我贈送她魔遊紀系列電影,於是贈送了,每部還剩四個名額不能浪費了,這裡送給大家,回復公眾號"魔遊紀N"得到對應的贈送連結,N代表第幾部,目前只有3、4、5。零、背景之前介紹了AES加密算法,這個算法的缺點是加密鑰匙和解密鑰匙一樣,缺少安全性。
  • 常見加密算法DES、AES和RSA的原理和特點
    本文轉載自【微信公眾號:strongerHuang,ID:strongerHuang】經微信公眾號授權轉載,如需轉載與原文作者聯繫主要總結下常用的對稱性加密算法DES和AES,非對稱性加密算法RSA。1DES加密算法1.DES含義DES全稱為Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊算法,1977年被美國聯邦政府的國家標準局確定為聯邦資料處理標準(FIPS),並授權在非密級政府通信中使用,隨後該算法在國際上廣泛流傳開來。DES是對稱性加密裡常見的一種,是一種使用秘鑰加密的塊算法。
  • 用OpenSSL加密文件
    / 怎樣用對稱密碼加密文件?Openssl的子命令,用於用對稱密碼加密或解密一個文件.-des3the algorithm is des3.使用des3算法.-eencrypt a file.It's counterpart is '-d',decrypt.加密文件.與之相對的是-d,表示解密.
  • 圖解|什麼是RSA算法
    加密算法的一點歷史我們知道常見的加密算法有:對稱加密和非對稱加密,非對稱加密是我們今天的主角。非對稱加密不是一蹴而就的,它是1976年之後才出現的,可以說非對稱加密是對稱加密的優化。需要特別注意轉換後的數字X需要小於密鑰組中的N,如果字符串轉換後的數字大於N則需要進行拆分,這可能也是在數據量大時我們使用對稱加密算法來加密內容,用非對稱加密算法來加密密鑰的原因吧。
  • 什麼是加密算法?
    常用的加密算法有對稱加密算法,非對稱加密算法,哈希算法,數字籤名等幾類。    對稱加密顧名思義就是加密和解密是對稱的,加密時用一個秘鑰去加密,解密時用同一個秘鑰去解密,由信息發送方和接收方共同約定一個秘鑰。缺點是風險都在這個秘鑰上面,一旦被竊取,信息會暴露。所以安全級別不夠高。常用對稱加密算法有DES,3DES,AES等。在jdk中也都有封裝。
  • 區塊鏈丨非對稱加密算法,區塊鏈的加密秘訣!
    前面講到了對稱加密算法,今天講講非對稱加密算法。可以說非對稱算法是對稱算法的升級,因為非對稱算法是基於對稱算法而被研究出來的。非對稱算法與對稱算法的不同之處在於非對稱算法省去了對稱加密算法時要分發密鑰的麻煩,所以說是對稱加密算法的升級。在非對稱加密算法中同樣具有兩種密鑰:私鑰(private key)和公鑰(public key)。
  • RSA加密與破解
    如果一對一的話,那麼兩人需要交換一個密鑰。每個用戶可以用鎖來加密自己的信用卡信息。即使被別人竊聽到,也不用擔心:只有銀行才有鑰匙呢!這樣一種加密算法叫做非對稱加密(asymmetric encryption)。非對稱加密的經典算法是RSA算法。它來自於數論與計算機計數的奇妙結合。
  • 加密算法科普:des、aes加密、對稱、非對稱加密、Hash算法都是啥
    對稱密碼算法有時又叫傳統密碼算法、秘密密鑰算法或單密鑰算法,非對稱密碼算法也叫公開密鑰密碼算法或雙密鑰算法。對稱密碼算法的加密密鑰能夠從解密密鑰中推算出來,反過來也成立。在大多數對稱算法中,加密解密密鑰是相同的。它要求發送者和接收者在安全通信之前,商定一個密鑰。對稱算法的安全性依賴於密鑰,洩漏密鑰就意味著任何人都能對消息進行加密解密。只要通信需要保密,密鑰就必須保密。對稱算法又可分為兩類。
  • RSA 算法發明人因籤證問題被迫缺席會議!史丹福大學發聲明:「國籍...
    而會議名稱(也是知名加密算法RSA)中的字母S,正是源自於Adi Shamir 的名字。即便為該領域做出過巨大貢獻,同樣被迫在「暗箱操作」的籤證制度下讓步,引起了學界的熱議。Adi Shamir,2002年圖靈獎得主,國際著名密碼學專家,RSA非對稱加密算法的三位創始人之一(RSA裡的字母S代表Shamir的姓氏),如今在以色列魏茨曼研究所擔任研究員。
  • 數據加密中的DES加密算法詳解
    [摘要] 本文詳細介紹了DES數據加密算法的原理,並給出了一個例子演示了如何使用c#中的加密包進行DES算法加密,最後對DES進行了評價。本文引用地址:http://www.eepw.com.cn/article/202130.htm[關鍵詞] 加密 對稱 非對稱 DES 密鑰 明文 密文從最初的保密通信發展到目前的網絡信息加密,信息加密技術一直伴隨著信息技術的發展而發展。作為計算機信息保護的最實用和最可靠的方法,信息加密技術被廣泛應用到信息安全的各個領域。
  • 密碼學 RSA加密與破解
    如果一對一的話,那麼兩人需要交換一個密鑰。一對多的話,比如總部和多個特工的通信,依然可以使用同一套密鑰。每個用戶可以用鎖來加密自己的信用卡信息。即使被別人竊聽到,也不用擔心:只有銀行才有鑰匙呢!這樣一種加密算法叫做非對稱加密(asymmetric encryption)。非對稱加密的經典算法是RSA算法。它來自於數論與計算機計數的奇妙結合。
  • 加密類型:5種加密算法以及如何選擇正確的算法
    加密是一種將數據轉換為無法解密的格式,以便只有授權方才能訪問信息的方法。加密密鑰與加密算法一起使加密過程成為可能。並且,基於這些密鑰的應用方式,主要主要使用兩種類型的加密方法:「對稱加密」和「非對稱加密」。這兩種方法都使用不同的數學算法(即我們剛才提到的那些加密算法)對數據進行加密。常見的加密算法列表包括RSA,ECC,3DES,AES等。
  • 區塊鏈丨對稱加密算法
    在前面的文章中,有提到「對稱加密算法」,這是一種相對應用得比較早的加密算法之一,其技術也是比較成熟的。在執行對稱加密時,數據發出方將需要明文(之前的文章中有解釋)和加密密鑰一起輸入至加密算法中進行處理,使之變成更為複雜的加密密文,之後再將密文發布出去。
  • DES、RC4、AES等加密算法優勢及應用
    程式設計師捍衛自己珍貴的代碼,全靠花式的加密算法。代碼加密有多重要?程式設計師半年做出的產品,盜版者可能半天就能完全破解。  加密算法的本質,首先是為了對數據進行保密並防止篡改,其次更具有了身份驗證的功能。像是你跟女友約定好的話術,這句話一說出來,她就知道是什麼意思,並且知道說話的人是你,但任何其他人根本不知道你們在說什麼。  根據密鑰類型的不同,加密算法分為對稱和非對稱兩種。
  • 利用帕斯卡三角和謝爾賓斯基三角的加密算法
    本文中,我們將使用一種基於替換法和置換法的用於加解密的算法,這種算法基於要論述的帕斯卡三角和謝爾賓斯基三角的概念。帕斯卡三角的概念用於在一種特殊的模式下對純文本中字符進行異或運算,運算結束後得到我們想要的密文。二、參考文獻這一節裡,我們會提到一些經典和現代加密數據技術的概述。
  • 利用彙編語言實現DES加密算法
    DES算法是一種數據加密算法。自從1977年公布以來,一直是國際上的商用保密通信和計算機通信的最常用的加密標準。DES算法的實現一般用高級語言。
  • 一種基於DES加密算法的加密方法
    摘要:本發明公開了一種基於DES加密算法的加密方法,其加密方法採用服務端與客戶端共享密鑰集文件,實現通信過程中使用動態密鑰的對稱加密方法,建立密鑰集文件,密鑰集文件由三個互相垂直方向的X、Y、Z組成的長方體形的三維模型;伺服器端在X、Y有效值範圍內隨機一個坐標,確定一組密鑰,進行DES加密;將選取的X、Y分別值轉換為4位16進位數
  • 到底什麼是DES加密算法?這樣理解試試!
    在說DES加密算法之前,我們首先了解幾個基本概念:明文:明文是指沒有經過加密的數據。一般而言,明文都是等待傳輸的數據。由於沒有經過加密,明文很容易被識別與破解,因此在傳輸明文之前必須進行加密處理。密文:密文只是明文經過某種加密算法而得到的數據,通常密文的形式複雜難以識別及理解。
  • 走進算法:ECDSA算法如何保護你的數據(上)
    一般來說,數字籤名不會對信息直接進行加密,而是選擇對信息的Hash值(Hash值是根據信息內容計算出來的一個指定長度數字,可以驗證數據傳遞的完整性)進行加密,並把加密結果附加到被籤名的信息後面。如今,常用的數字籤名算法有基於RSA的數字籤名、DSA、ECDSA等,我們今天就要談談基於橢圓曲線密碼學的ECDSA算法。