基於大整數因子分解困難問題--RSA公鑰密碼算法


RSA公鑰密碼算法

RSA的安全性依賴於大數分解,

在RSA私鑰和公鑰生成的過程中,共出現過p,q,n,φ(n),e,d,其中(n,e組成公鑰),其他的都不是公開的,一旦d泄露,就等於私鑰泄露。那么能不能根據n,e推導出d呢?

ed ≡ 1(mod φ(n))。只有知道e和φ(n),才能算出d φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n) n=pq,只有將n分解才能算出p和q

所以,只有將n質因數分解,才能算出d。也就意味着私鑰破譯。

但是,大整數的質因數分解是非常困難的。

RSA 的一些變種算法已被證明等價於大數分解。分解n是最顯然的攻擊方法。人們已能分解多個十進制位的大素數。因此,模數n必須選大一些,因具體適用情況而定。

一:簡介

RSA公鑰加密算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。

算法簡介:https://baike.so.com/doc/133562-141114.html

二:算法描述

密鑰生成:選取大素數p,q,計算n=pq,以及n的歐拉函數,φ(n)= φ(p)φ(q)=(p-1)(q-1)

選取e(1<e<φ(n)),e 與φ(n)互素,計算d,使得ed=1(modφ(n))

公鑰為(n,e),私鑰為(n,d)

加密:c=memod n

解密:e=mdmod n

三:涉及到的知識點

歐拉函數φ(n)表示不大於n且與n互素的正整數的個數。

當n是素數,φ(n)=n-1。n=pq,p,q均為素數時,則φ(n)= φ(p)φ(q)=(p-1)(q-1)。

對於互素的a和n,有a^φ(n)≡1(mod n)

如何利用計算機程序從公鑰e,以及φ(n)求得私鑰d?

問題可以化為求: e *x +φ(n)* y = 1 類型的方程,利用擴展歐幾里得算法求解

那如何在計算機內驗證他們互質呢,此時就要用到歐幾里德算法(就是小學時候的最大公約數),如果e和phi(n)的最大公約數為1,他們就互質。

費馬定理

若p是素數,a與p互素,則

a^(p-1)≡1 (mod p)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM