歐拉定理與RSA公鑰密碼的原理

2021-02-25 數學教學研究

觸碰標題下面一行的「邵勇老師」查看所有文章;觸碰「數學教學研究」, 關注本微信公眾號(sx100sy)。本公眾號內容均由邵勇本人獨創,歡迎轉發,但未經許可不能轉載。特別聲明,本人未曾授權任何網站(包括微博)和公眾號轉載邵勇「數學教學研究」公眾號的內容。每周推送兩到三篇內容上有份量的數學文章,但在行文上力爭做到深入淺出。幾分鐘便可讀完,輕鬆學數學。 

祝您2020年新春快樂!平安!健康!

前兩期的文章在最後都提及RSA公鑰密碼。它的原理已經應用於我們已經使用多年的網絡傳輸當中。而我們不知不覺。這其中的數學原理就是歐拉定理。我很多年前曾經講過一些對稱密碼的加密和解密,但對稱密碼不管設計得多麼精緻巧妙,仍然會有被破解的危險。正像從一個函數可以求出它的反函數。比如,加密函數為y=x+1,由這個函數可以把1,2,3,4,...,n變換成2,3,4,5,...,n+1;那麼,很容易導出它的反函數:y=x-1,這個反函數可以把2,3,4,5,...,n+1再變回到1,2,3,4,...,n。可以說,知道兩個函數中的任意一個,就可以導出另一個。所以,一旦加密規則被截獲,解密規則隨之無秘密可言,保密工作必將以失敗告終。於是,人們便想方設法去發明不對稱的加密方法。RSA公鑰密碼就是一種不對稱的加密機制,可以確保不被破譯。打個比方,我是信息接收方,那麼,要由我來主宰信息的傳輸過程:我準備一個箱子和一把打開了的掛鎖;把它們寄給信息發送方;信息發送方把要發送的絕密信息放入箱子中,並用這把打開著的掛鎖把箱子鎖上;然後把上了鎖的箱子寄回給接收方;接收方有開鎖的鑰匙,打開箱子取出絕密信息,於是,便成功完成信息的安全傳輸任務。RSA公鑰密碼機制本質上就是運用了類似這個掛鎖傳遞絕密信息的機制。但是,原理說起來簡單,真正實現可就沒那麼容易了。於是數學出場了。數論中的歐拉定理在RSA中扮演著重要角色。

好的,下面我們就具體來講解。

有A和B兩方,A方是發送方,它要把一段不想被其他人知曉的信息(任何信息都可以轉換成數字,以數字的形式發送)加密後發送給B方。B方是接收方,它有解密的鑰匙可以把A方發送的加密信息還原成原來信息。那麼RSA公鑰密碼機制是怎樣做到的呢?這就用到了數學上的歐拉定理及數論中有關同餘的一些性質。

歐拉定理:有正整數m與n,m與n互素。設φ(m)為小於m且與m互素的正整數的個數。那麼,

能被m整除。其中的φ(m)叫做歐拉函數。歐拉函數很重要,我們必須會求它的值。這個函數的表達式如下:

其中的p1,p2,…,pk都為素數,且p1<p2<…<pk。它們來自m的標準分解式:

上式中的α1,α2,…,αk是確定的正整數。這個標準分解式叫做一個正整數的素因數分解。這個標準分解式是唯一的。

若m正好是兩個素數p和q的乘積,即m=p×q,那麼,根據上面公式,可以得出歐拉函數φ(m)的值等於 (p-1)×(q-1)。

下面就來詳細講解RSA的工作流程。

(1)接收方(B方)首先選取兩個比較大甚至很大的素數p和q。把p和q相乘,得到m=p×q。所以,m也是一個很大的正整數。注意,這個p和q是B方也就是接收方選定的,不告訴任何人,甚至也不告訴發送方(A方)。這個p和q將是RSA機制的核心,沒有這麼兩個大素數,也就沒有RSA。只有掌握了p和q這兩個大素數的接收方,才能最終解密。

(2)接收方(B方)知道p和q,當然可以計算出(p-1)×(q-1)(這個乘積在以後的解密過程中發揮著重要作用)。然後B方再選取一個與(p-1)×(q-1)互素的正整數k。

(3)接收方(B方)把p和q的乘積m(而不是p和q)及k這一對正整數(m,k)告訴發送方(A方)。m和k這兩個數就是所謂的公鑰密碼。現在,接收方(B方)就處於等待狀態,等待著發送方(A方)把加了密的信息傳送給自己。A方必須利用m和k來給要發送的信息加密。我們說過RSA是由接收方主宰的,所以,發送方(A方)一定要使用接收方(B方)發來的公鑰密碼(m,k),否則聯繫如何建立起來?!

(4)發送方(A方)收到接收方(B方)發來的公鑰密碼m和k。設A方要發送的機密信息是正整數n(任何信息都可以轉換成某個正整數)。注意,這個n要小於B方發來的正整數m,這一般是沒有什麼問題的,因為B方一定選取了兩個很大的素數p和q從而m=p×q也一定很大。並且n與m互素也幾乎是肯定的,這是因為我們把一個很大的數進行素因數分解這件事本身就很難,何況現在這個大數m只是兩個大素數的乘積,A方所要發送的信息n正好就是p或q中的一個這種可能性基本不存在,所以,n與m互素可以得到保證。好的,我們繼續。這時,A方已經準備好了要發送的信息n ,也知道了B方發來的正整數k。於是,他就計算n的k次方,並用所得結果除以m(k和m都使用上了),於是將獲得一個餘數。我們記這個餘數為r。用同餘式表示就是:

(5)發送方(A方)把這個r當成密碼發送給接收方(B方)。注意,這個密碼r就算被第三方截獲也沒有用,因為第三方是很難從這個r反推出原信息n的,這是因為數m可能是一個很大很大的數,與它互素的數也很多很多,想要 一 一 驗證這些數的k次方除以m後的餘數是不是r,幾乎是不可能的。(發送方當然不會傻到直接把n的k次方當成密碼發送,因為第三方獲取後把結果簡單地開k次方就得到原文n了。這就成了對稱密碼了:發送規則與接收規則是正反函數的關係。而我們的RSA機制就是要極力避免類似的對稱關係的出現!)

(6)這時又該輪到接收方(B方)進行數據處理了。B方接收到A方發來的密碼r後,把r進行a次方,使得r的a次方除以m後的餘數正好是n:

但是,如何確定這個正整數a呢?這就要用到歐拉定理。這是解密的關鍵。我們前面已經說過,發送方(A方)要發送的機密信息n是與接收方(B方)給他的公鑰密碼m(=p×q)互素的,於是由歐拉定理,我們就有:

根據同餘的乘法性質,我們得到:

其中b為任意正整數。把上式兩邊同時乘以n,就將得到:

(7)我們比較上面得到的(1)式與(2)式:

發現,我們若可以求出a和b,使得上面兩式左側的指數相等,即

那麼,便可以通過

求出n。也就說,接收方(B方)就成功解密了發送方(A方)發送的機密信息n。

(8)上面的成功得助於(4式)的成功求解。我們把(4)式變形為:

這不就是一個一次不定方程麼!其中的k和(p-1)×(q-1)是已知的且兩者是互素的,完全符合一次不定方程中的係數的要求。從而這個一次不定方程有整數解a和b(我在前不久的某期講過求解方法)。解a和b有無窮多組,我們選取a是最小正整數的那個組解。(4)式或(5)式就像是一座橋,發送方(A方)要發送的存在風險的信息,過了這座橋到達接收方(B方)後就安全了!因為只有接收方(B方)知道p和q,也就是只有B方可以算出(p-1)×(q-1),也就是只有B方可以解不定方程(5),最終也就是只有B方可以把發送方發送來的機密信息n解密。

上面就講解了RSA的傳輸機制,有些複雜,但確實做到了保密和安全。原本數學中純之又純的數論知識,卻神奇般地在密碼學及網絡傳輸中發揮了重要作用。

參考書:

相關焦點

  • RSA 加密是什麼原理?
    RSA是一個非對稱加密的系統,意思是說它有一對密鑰,也就是一個公鑰和一個私鑰。你保管好私鑰,然後公鑰可以隨意的分發出去。數據通過公鑰加密,私鑰解密。反之亦然。正是由於這種特性,在不洩漏私鑰的情況下,中間人只通過公鑰無法竊取到信息。
  • 密碼學_RSA算法原理詳解
    圖片來字網絡     RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被ISO推薦為公鑰數據加密標準。      今天只有短的RSA鑰匙才可能被強力方式解破。到2008年為止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長度足夠長,用RSA加密的信息實際上是不能被解破的。
  • 數據傳輸安全:RSA加密算法及其數學原理
    對稱加密算法計算機A在發送信息'Hello'之前,先把'Hello'進行加密.用最簡單的凱撒密碼(Caesar)加密.設置秘鑰為2,此時'Hello'就變成了'Jgnnq'「凱撒密碼(Caesar)加密時會將明文中的 每個字母 都按照其在字母表中的順序向後(或向前)移動固定數目(循環移動)作為密文
  • 終於還是要講到這一篇——RSA算法原理
    RSA原理其實沒有想像的那麼難。對於這篇文章,有數論的基礎更好,沒有的話只要不糾結具體的數學定理如何證明,應該也可以看懂。一、數學準備首先要準備一下如下數學概念和原理。上述數學概念都是中學學過的,下面的定理就進入數論部分了。4.歐拉函數:對於自然數n,計算在小於等於n的自然數中,與n互質的數字的個數的函數。歐拉函數一般寫成φ(n)。
  • RSA加密算法數學原理和實現(筆記)
    設密文為C,則加密過程為:C≡Me(modn)(8)解密過程為:M≡Cd(modn)實例描述:在這篇科普小文章裡,不可能對RSA算法的正確性作嚴格的數學證明,但我們可以通過一個簡單的例子來理解RSA的工作原理。為了便於計算。
  • 什麼是 RSA 算法
    數學之美和密碼學前陣子閒來無事看了會兒《數學之美》,其中第17章講述了由電視劇《暗算》展開的密碼學背後的一些數學原理。書中從凱撒密碼到二戰盟軍和日軍,講到密碼學中均勻分布&統計獨立的基礎理論,看得我津津有味,但是其中一些細節沒有整明白,於是決定搞篇文章。
  • CTF密碼學之RSA攻擊算法
    前言:學習完基本數論後,我們開始學習 RSA 的各種攻擊算法及其數學原理。希望大家在學習的過程中更多的去關注攻擊算法實現的原理,而不僅僅只在於 copy 攻擊代碼。或者可以用kali自帶的Openssl從公鑰文件中提取出n和e。
  • 圖解|什麼是RSA算法
    數學之美和密碼學前陣子閒來無事看了會兒《數學之美》,其中第17章講述了由電視劇《暗算》展開的密碼學背後的一些數學原理。本文只是闡述算法原理,在實際中密鑰長度在1024位以上才安全,12位基本上就是個演示。歐拉函數的定義:任意給定正整數n,請問在小於等於n的正整數之中,有多少個與n構成互質關係?歐拉函數有個通用的計算公式:
  • TLS/SSL 協議-非對稱加密(RSA)原理
    前面文章學習過 對稱加密的原理,在通信雙方發送完加密的密文之後,需要發送密鑰給對方才能解密,這就要求發送密鑰的信息通道安全可靠
  • RSA公鑰加密法-銀行密碼中使用的單射
    「單射關係成立,得出結果很簡單,但變回原樣很難」,這是分解質因數的特性,許多密碼的設置正是運用了這個特性。 以N=p×q為基礎設定的密碼,稱為RSA公鑰加密法,這種加密法廣泛地應用於網絡和現金卡的密碼中。以前的密碼只要知道加密的方法,便能解讀出密碼,所以如何嚴守加密的方法成為一個大問題。
  • RSA算法詳解
    RSA算法用到的數學知識特別多,所以在中間介紹這個算法生成私鑰和公鑰的過程中會穿插一些數學知識。生成步驟如下:1.尋找兩個不相同的質數隨意選擇兩個大的質數p和q,p不等於q,計算N=p*q;什麼是質數?
  • 非對稱加密算法——RSA加密原理及數學推導
    是一種公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種「由已知加密密鑰推導出解密密鑰在計算上是不可行的」密碼體制。是由該算法設計者「Rivest、Shamir、Adleman」的名字構成,(可能看之前還認識「RSA」三個字母,看完後迷糊了。下面將詳細介紹。)
  • 歐拉函數φ(m) | 互素 | 容斥原理
    比如,我之前講過費馬小定理,但其實費馬小定理只是規律更加普遍的歐拉定理的特殊情況。歐拉定理就用到這個個數。後面我們將看到,這個個數可以通過歐拉函數(即下面我們將要講到的φ(m) )求得。我們可以比較一下費馬小定理與歐拉定理(在下面用藍字顯示,您可以跳過不看,不影響後面的閱讀)。
  • 多項式定理:歐拉對牛頓二項式定理的擴展及延伸
    大數學家歐拉在牛頓發現的二項式定理基礎上不斷進行擴展,得到更為廣泛的多項式定理首先令Z=az,m換成m-1 則得到:把上述的級數記為你會發現任何一個係數N都由它的前一項決定,這個通用公式就是歐拉假設Z=αz+βz^2 ,m換成m-1 則:展開按升冪排列得到把它記做為:那麼任何一個係數N由它的前兩個係數決定的公式就是:從第一項1開始利於該公式
  • CTF|玩轉RSA加密算法(一)
    if (1-t*i)%e == 0:         break      i-=1     print i print 'ok:' + '%d' % ((1-t*i)/e)求d的腳本,也可以又rsatool.py這個腳本來實現,需要安裝gmpy這個模塊,連結如下連結:http://pan.baidu.com/s/1bCDyoQ 密碼
  • 網絡安全加密——DES、AES、RSA、Base64、MD5加密原理介紹,代碼實現
    本專題將連續的、全方位的、深入地闡述網絡安全加密的原理及實用案例分析,希望對學習網絡安全的你有幫助,覺得有用記得轉發給身邊需要的朋友哈~~ 學好密碼技術變身信息安全保護神,科普式教學的《現代密碼學》全新上線,乾貨+視頻,學習效果槓槓滴,別說小編沒告訴你~特別感謝本期作者——時間已靜止。
  • 一周一定理No.3 歐拉定理
    高德納今天我們介紹初等數論中一個地地道道的定理,歷史上著名的歐拉定理。大數學家歐拉(Euler)有許多定理,我們這裡所指的是下一個:歐拉定理:設 n是正整數,a 是一個整數,且a 與 n互素,則aφ(n)≡1(modn){\displaystyle a^{\varphi (n)}\equiv 1{\pmod {n}}}
  • 費馬小定理的證明
    費馬小定理:若p是素數,n為不能被p整除的正整數,則上一次我曾用二項式定理的二項式係數和數學歸納法證明了費馬小定理。今天,我再給出另一種證明方法,這個方法更加簡潔、巧妙。我想,用具體的p和n可能更加易於您的理解。我們取素數p=13。
  • 五分鐘知識科普:什麼是 RSA 算法
    例如:  (1)乙方生成兩把密鑰(公鑰和私鑰)。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。  (2)甲方獲取乙方的公鑰,然後用它對信息加密。  (3)乙方得到加密後的信息,用私鑰解密。數學知識互質關係:如果兩個正整數,除了數字 1 之外沒有其他公因子,我們稱這兩個數是互質關係。
  • 非對稱加密——RSA
    在上述過程中,公鑰和密文是有被竊取的風險的(也就是圖中標紅的兩部分內容)。因為只要私鑰才能解密,所以只要密文接收者能夠保管好私鑰,就不容易出現密文被破解的情況。但如果公鑰被竊取,就容易遭受中間人攻擊,所以需要公鑰證書來保證公鑰的正確性。      不同非對稱加密算法的加密流程是相同的,但密鑰對生成的原理、加解密的原理卻是不同的。