算法:
- 選擇兩個素數p,q
- 計算n=p×q
- 計算λ(n) = lcm(λ(p),λ(q)) = lcm(p-1,q-1)
- 選擇e滿足:1<e<λ(n) 且 gcd(e, λ(n)) = 1,即e和λ(n)互質
- 計算d滿足:d×e≡1(mod λ(n))
公鑰:n 和 e
私鑰:d
加密:
Alice想要向Bob發送信息M
- 獲取Bob的公鑰n和e
- 將信息M分割轉化爲若干整數
- 對每一個整數m,計算密文c滿足:c≡ (mod n)
- 將密文發送給Bob
解密:
- 用自己的私鑰d對每一段密文c計算明文m滿足:m≡ (mod n)
- 拼接明文獲取信息
示例:
計算密鑰公鑰:
- 取p=61,q=53
- n=61×53=3233
- λ(3233)=lcm(λ(61),λ(53))=lcm(60,52)=780
- 取e=17
- 計算d=413
- 密鑰d:413,公鑰(n,e)=(3233,17)
加密:
- 明文取m=65
- 計算c滿足:c≡ (mod n) 得c=2790
解密:
- 有密文c=2790
- 計算m滿足:m≡ (mod n) m=65
原理:
證明基於費馬小定理:對任意的整數a和不能整除a的素數p有, ≡ 1 (mod p)
解密時:m≡≡ (mod n)
只需證明:
只需證明:和同時成立
對於所有的整數m,由於p和q是不同的素數,e和d是滿足ed ≡ 1 (mod λ(pq))的正整數,λ(pq) = lcm(p − 1, q − 1)可以被p-1和q-1整除,有
其中h和k是非負整數
利用費馬小定理將 (mod p) = 1.
同理
得證
破解:
破解者將有公鑰(n,e)和密文c
因爲d×e≡1 (mod n)將得到多個d,而不確定到底是哪一個
目前最有效的方式是對整數n進行分解,分解爲兩個素因子p和q,再進行標準的流程進行解密
目前沒有找到在常規計算機上多項式時間的分解算法,但是也沒有證明這樣的算法是不存在的