RSA加密

算法:

  1. 選擇兩個素數p,q
  2. 計算n=p×q
  3. 計算λ(n) = lcm(λ(p),λ(q)) = lcm(p-1,q-1)
  4. 選擇e滿足:1<e<λ(n) 且  gcd(e, λ(n)) = 1,即e和λ(n)互質
  5. 計算d滿足:d×e≡1(mod λ(n))

公鑰:n 和 e

私鑰:d

加密:

Alice想要向Bob發送信息M

  1. 獲取Bob的公鑰n和e
  2. 將信息M分割轉化爲若干整數
  3. 對每一個整數m,計算密文c滿足:c≡m^{e} (mod n)
  4. 將密文發送給Bob

解密:

  1. 用自己的私鑰d對每一段密文c計算明文m滿足:m≡c^{d} (mod n)
  2. 拼接明文獲取信息

示例:

計算密鑰公鑰:

  1. 取p=61,q=53
  2. n=61×53=3233
  3. λ(3233)=lcm(λ(61),λ(53))=lcm(60,52)=780
  4. 取e=17
  5. 計算d=413
  6. 密鑰d:413,公鑰(n,e)=(3233,17)

加密:

  1. 明文取m=65
  2. 計算c滿足:c≡m^{e} (mod n) 得c=2790

解密:

  1. 有密文c=2790
  2. 計算m滿足:m≡c^{d} (mod n) m=65

原理:

證明基於費馬小定理:對任意的整數a和不能整除a的素數p有,a^{p-1} ≡ 1 (mod p)

解密時:m≡c^{d}(m^{e})^{d} (mod n) 

只需證明:{\displaystyle (m^{e})^{d}\equiv m{\pmod {pq}}}

只需證明:{\displaystyle (m^{e})^{d}\equiv m{\pmod {q}}}{\displaystyle (m^{e})^{d}\equiv m{\pmod {p}}}同時成立

對於所有的整數m,由於p和q是不同的素數,e和d是滿足ed ≡ 1 (mod λ(pq))的正整數,λ(pq) = lcm(p − 1, q − 1)可以被p-1和q-1整除,有

{\displaystyle ed-1=h(p-1)=k(q-1)}

其中h和k是非負整數

{\displaystyle m^{ed}=m^{ed-1}m=m^{h(p-1)}m=(m^{p-1})^{h}m\equiv 1^{h}m\equiv m{\pmod {p}}}

利用費馬小定理將m^{p-1} (mod p) = 1.

同理

{\displaystyle m^{ed}=m^{ed-1}m=m^{k(q-1)}m=(m^{q-1})^{k}m\equiv 1^{k}m\equiv m{\pmod {q}}}

得證

破解:

破解者將有公鑰(n,e)和密文c

因爲d×e≡1 (mod n)將得到多個d,而不確定到底是哪一個

目前最有效的方式是對整數n進行分解,分解爲兩個素因子p和q,再進行標準的流程進行解密

目前沒有找到在常規計算機上多項式時間的分解算法,但是也沒有證明這樣的算法是不存在的

翻譯自:

https://en.wikipedia.org/wiki/RSA_(cryptosystem)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章