fbpx
维基百科

RSA加密演算法

RSA加密演算法是一种非对称加密演算法,在公开密钥加密电子商业中被广泛使用。RSA是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。[1]

RSA
概述
设计者羅納德·李維斯特
阿迪·薩莫爾
倫納德·阿德曼
首次发布1977
认证PKCS#1, ANSI X9.31, IEEE 1363
密码细节
密钥长度2048 - 4096 位 (常规情况)
重复回数1
最佳公开破解
传统计算机:普通数域筛选法
量子计算机:秀尔算法
RSA-250(829位)已经被攻破
RSA的作者之一:阿迪·萨莫尔

1973年,在英国政府通讯总部工作的数学家克利福德·柯克斯(Clifford Cocks)在一个内部文件中提出了一个与之等效的算法,但该算法被列入机密,直到1997年才得到公开。[2]

對极大整数做因数分解的難度決定了 RSA 算法的可靠性。換言之,對一极大整数做因数分解愈困难,RSA 算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的 RSA 钥匙才可能被强力方式破解。到2020年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被破解的。

1983年9月12日麻省理工学院在美国为RSA算法申请了专利[3]这个专利于2000年9月21日失效。[4]由于该算法在申请专利前就已经被發表了[5],在世界上大多数其它地区这个专利权不被承认。

操作

公钥与私钥的产生

假設Alice想要通過不可靠的媒體接收Bob的私人訊息。她可以用以下的方式來產生一個公鑰和一個私鑰

  1. 隨意選擇兩個大的質數   不等於 ,計算 
  2. 根據歐拉函數,求得 
  3. 選擇一個小于 的整數 ,使  互质。並求得 关于 模反元素,命名为 (求  )。(模反元素存在,当且仅当  互质)
  4.   的記錄銷毀。

 是公鑰, 是私鑰。Alice將她的公鑰 傳給Bob,而將她的私鑰 藏起來。

加密消息

假设Bob想给Alice送消息 ,他知道Alice产生的  。他使用起先与Alice约好的格式将 转换为一个小于 的非负整数 ,比如他可以将每一个字转换为这个字的Unicode码,然后将这些数字连在一起组成一个数字。假如他的信息非常长的话,他可以将这个信息分为几段,然后将每一段转换为 。用下面这个公式他可以将 加密为 

 

计算 并不复杂。Bob算出 后就可以将它传递给Alice。

解密消息

Alice得到Bob的消息 后就可以利用她的密钥 来解码。她可以用以下这个公式来将 转换为 

 

得到 后,她可以将原来的信息 重新复原。

解码的原理是

 

已知 ,即  。那么有

 

  互質,則由欧拉定理得:

 

  不互質,則不失一般性考慮 ,以及 ,得:

 
 

  得證。

签名消息

RSA也可以用来为一个消息署名。假如Alice想给Bob传递一个署名的消息的话,那么她可以为她的消息计算一个散列值(Message digest),然后用她的私钥“加密”(如同前面“加密消息”的步骤)这个散列值并将这个“署名”加在消息的后面。这个消息只有用她的公钥才能被解密。Bob获得这个消息后可以用Alice的公钥“解密”(如同前面“解密消息”的步骤)这个散列值,然后将这个数据与他自己为这个消息计算的散列值相比较。假如两者相符的话,那麼Bob就可以知道发信人持有Alice的私钥,以及这个消息在传播路径上没有被篡改过。

正确性证明

首选取两个互质数  , 乘法计算 得到 

然后计算出欧拉  函数 是小于或等于 的正整数中与 互质的数的数目。 根据欧拉公式,由于  都是质数,故

 

这时候我们随机选择一个整数 ,条件是 ,且   互质。 接着我们计算  的模逆元得到 

 

这个公式简单的说就是  除以 得到的余数为1,这个公式可以转换成

 

 

于是,RSA公钥为 ,私钥为 

加密原文 得到密文

 

解密公式为

 

证明解密逻辑:

  的狀況下证明 ,就是证明 

 

 

 

 

 

当m与N互质时,根据费马小定理公式

 

 

 

 

 

 

当m与N不互质时,不妨设公因子为p,即 

假設q整除m。因此 ,因為q與p互質,根據歐幾里德引理 。所以 ,而這與 矛盾,所以q不整除m。

此时m与q互质,根据费马小定理公式

 

 

 

 

 ,证明完成。

安全性

假设偷听者Eve获得了Alice的公钥  以及Bob的加密消息 ,但她无法直接获得Alice的密钥 。要获得 ,最简单的方法是将 分解为  ,这样她可以得到同余方程 并解出 ,然后代入解密公式

 

导出n(破密)。但至今为止还没有人找到一个多項式時間的算法来分解一个大的整数的因子,同时也还没有人能够证明这种算法不存在(见因数分解)。

至今为止也没有人能够证明对 进行因数分解是唯一的从 导出 的方法,直到今天也还没有找到比它更简单的方法。(至少没有公开的方法。)

因此今天一般认为只要 足够大,那么駭客就没有办法了。

假如 的长度小于或等于256,那么用一台个人电脑在几个小时内就可以分解它的因子了。1999年,数百台电脑合作分解了一个512位长的 。一个由Shamir 和Tromer在2003年从理论上构建的硬件TWIRL[6],使人们开始质疑1024位长的N的安全性,目前推荐 的长度至少为2048位。[7]

1994年,彼得·秀爾证明一台量子计算机可以在多項式時間内进行因数分解。假如量子计算机有朝一日可以成为一种可行的技术的话,那么秀爾的算法可以淘汰RSA和相关的衍生算法。(即依赖于分解大整数困难性的加密算法)

假如有人能够找到一种有效的分解大整数的算法的话,或者假如量子计算机可行的话,那么在解密和制造更长的钥匙之间就会展开一场竞争。但从原理上来说RSA在这种情况下是不可靠的。

实现细节

密钥生成

首先要使用概率算法来验证随机产生的大的整数是否質数,这样的算法比较快而且可以消除掉大多数非質数。假如有一个数通过了这个测试的话,那么要使用一个精确的测试来保证它的确是一个質数。

除此之外这样找到的  还要满足一定的要求,首先它们不能太靠近,此外  的因子不能太小,否则的话 也可以被很快地分解。

此外寻找質数的算法不能给攻击者任何信息,这些質数是怎样找到的,尤其产生随机数的软件必须非常好。要求是随机不可预测。这两个要求并不相同。一个随机过程可能可以产生一个不相关的数的系列,但假如有人能够预测出(或部分地预测出)这个系列的话,那么它就已经不可靠了。比如有一些非常好的随机数算法,但它们都已经被发表,因此它们不能被使用,因为假如一个攻击者可以猜出  一半的位的话,那么他们就已经可以轻而易举地推算出另一半。

此外密钥 必须足够大,1990年有人证明假如 大于 而小于 (这是一个很常見的情况)而 ,那么从  可以很有效地推算出 。此外 永远不应该被使用。

速度

比起AES3DES和其它对称算法来說,RSA要慢得多。实际的運用(如TLS)一般結合了對稱加密(如AES)和非對稱加密(如RSA)兩者。

密钥分配

和其它加密过程一样,对RSA来说分配公钥的过程是非常重要的。分配公钥的过程必须能够抵挡中间人攻击。假设Eve交给Bob一个公钥,并使Bob相信这是Alice的公钥,并且她可以截下Alice和Bob之间的信息传递,那么她可以将她自己的公钥传给Bob,Bob以为这是Alice的公钥。Eve可以将所有Bob传递给Alice的消息截下来,将这个消息用她自己的密钥解密,读这个消息,然后将这个消息再用Alice的公钥加密后传给Alice。理论上Alice和Bob都不会发现Eve在偷听他们的消息。今天人们一般用可靠的第三方機構簽發憑證来防止这样的攻击。

典型密钥长度

NIST建議的RSA密鑰長度為至少2048位元[8]

已公开的或已知的攻击方法

大数因数分解

针对RSA最流行的攻击一般是基于大数因数分解。1999年,RSA-155(512 bits)被成功分解,花了五个月时间(约8000 MIPS年)和224 CPU hours在一台有3.2G中央内存的Cray C916计算机上完成。[9]


RSA-155表示如下:

39505874583265144526419767800614481996020776460304936454139376051579355626529450683609 727842468219535093544305870490251995655335710209799226484977949442955603 = 3388495837466721394368393204672181522815830368604993048084925840555281177× 11658823406671259903148376558383270818131012258146392600439520994131344334162924536139 

2009年12月12日,编号为RSA-768(768 bits, 232 digits)数也被成功分解[10]。这一事件威胁了现通行的1024-bit密钥的安全性,普遍认为用户应尽快升级到2048-bit或以上。

RSA-768表示如下:

123018668453011775513049495838496272077285356959533479219732245215172640050726 365751874520219978646938995647494277406384592519255732630345373154826850791702 6122142913461670429214311602221240479274737794080665351419597459856902143413 = 3347807169895689878604416984821269081770479498371376856891 2431388982883793878002287614711652531743087737814467999489× 3674604366679959042824463379962795263227915816434308764267 6032283815739666511279233373417143396810270092798736308917 

时间攻击

1995年,丹·博內英语Dan Boneh大衛·布魯姆利英语David Brumley提出了一种非常意想不到的攻击方式:假如Eve(竊密者)对Alice的硬件有充分的了解,而且知道它对一些特定的消息加密时所需要的时间的话,那么她可以很快地推导出d。這種攻擊方式之所以會成立,主要是因為在進行加密時所進行的模指數運算是一個位元一個位元進行的,而位元為1所花的運算比位元為0的運算要多很多,因此若能得到多組訊息與其加密時間,就會有機會可以反推出私鑰的內容。[11]

相關條目

参考文献

  1. ^ Calderbank, Michael. (PDF). 2007-08-20. (原始内容 (PDF)存档于2016-12-13). 
  2. ^ Cocks, C.C. A Note on Non-Secret Encryption (PDF). www.gchq.gov.uk. 1973-11-20 [2017-05-30]. (原始内容 (PDF)于2017-02-16). 
  3. ^ Cryptographic communications system and method, 1977-12-14 [2018-04-09], (原始内容于2019-02-17) 
  4. ^ . [2010-03-03]. (原始内容存档于2007-06-21). 
  5. ^ Robinson, Sara. (PDF). SIAM News. June 2003, 36 (5) [2018-04-09]. (原始内容 (PDF)存档于2017-01-16). 
  6. ^ Tromer, Eran. TWIRL (The Weizmann Institute Relation Locator). cs.tau.ac.il. [2018-04-16]. (原始内容于2018-04-20). 
  7. ^ Has the RSA algorithm been compromised as a result of Bernstein's Paper? (页面存档备份,存于互联网档案馆) What key size should I be using?
  8. ^ Keylength - NIST Report on Cryptographic Key Length and Cryptoperiod (2019). www.keylength.com. [2020-04-22]. (原始内容于2020-04-04). 
  9. ^ . [2018-04-09]. (原始内容存档于2017-07-01). 
  10. ^ (PDF). 2010年1月7日 [2010年1月10日]. (原始内容 (PDF)存档于2010年3月31日). 
  11. ^ Remote timing attacks are practical. (页面存档备份,存于互联网档案馆). SSYM'03 Proceedings of the 12th conference on USENIX Security Symposium.

外部链接

rsa加密演算法, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目內容疑欠准确, 有待查證, 2014年6月4日, 請在讨论页討論問題所在及加以改善, 若此條目仍有爭議及准确度欠佳, 會被提出存廢討論, 此條目需要精通或熟悉相关主题的编者参与及协助编辑, 2014年6月4日, 請邀請適合的人士改善本条目, 更多的細節與詳情請參见討論頁, 是一种非对称加密演算法, 在公开密钥加密和电子商业中被广泛使用, rsa是由罗纳德, 李维斯特, rivest, 阿迪, 萨莫尔, shamir, 和伦. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目內容疑欠准确 有待查證 2014年6月4日 請在讨论页討論問題所在及加以改善 若此條目仍有爭議及准确度欠佳 會被提出存廢討論 此條目需要精通或熟悉相关主题的编者参与及协助编辑 2014年6月4日 請邀請適合的人士改善本条目 更多的細節與詳情請參见討論頁 RSA加密演算法是一种非对称加密演算法 在公开密钥加密和电子商业中被广泛使用 RSA是由罗纳德 李维斯特 Ron Rivest 阿迪 萨莫尔 Adi Shamir 和伦纳德 阿德曼 Leonard Adleman 在1977年一起提出的 当时他们三人都在麻省理工学院工作 RSA 就是他们三人姓氏开头字母拼在一起组成的 1 RSA概述设计者羅納德 李維斯特阿迪 薩莫爾倫納德 阿德曼首次发布1977认证PKCS 1 ANSI X9 31 IEEE 1363密码细节密钥长度2048 4096 位 常规情况 重复回数1最佳公开破解传统计算机 普通数域筛选法量子计算机 秀尔算法RSA 250 829位 已经被攻破RSA的作者之一 阿迪 萨莫尔 1973年 在英国政府通讯总部工作的数学家克利福德 柯克斯 Clifford Cocks 在一个内部文件中提出了一个与之等效的算法 但该算法被列入机密 直到1997年才得到公开 2 對极大整数做因数分解的難度決定了 RSA 算法的可靠性 換言之 對一极大整数做因数分解愈困难 RSA 算法愈可靠 假如有人找到一种快速因数分解的算法的话 那么用 RSA 加密的信息的可靠性就会极度下降 但找到这样的算法的可能性是非常小的 今天只有短的 RSA 钥匙才可能被强力方式破解 到2020年为止 世界上还没有任何可靠的攻击RSA算法的方式 只要其钥匙的长度足够长 用RSA加密的信息实际上是不能被破解的 1983年9月12日麻省理工学院在美国为RSA算法申请了专利 3 这个专利于2000年9月21日失效 4 由于该算法在申请专利前就已经被發表了 5 在世界上大多数其它地区这个专利权不被承认 目录 1 操作 1 1 公钥与私钥的产生 1 2 加密消息 1 3 解密消息 1 4 签名消息 2 正确性证明 3 安全性 4 实现细节 4 1 密钥生成 4 2 速度 4 3 密钥分配 5 典型密钥长度 6 已公开的或已知的攻击方法 6 1 大数因数分解 6 2 时间攻击 7 相關條目 8 参考文献 9 外部链接操作 编辑公钥与私钥的产生 编辑 假設Alice想要通過不可靠的媒體接收Bob的私人訊息 她可以用以下的方式來產生一個公鑰和一個私鑰 隨意選擇兩個大的質數p displaystyle p 和q displaystyle q p displaystyle p 不等於q displaystyle q 計算N p q displaystyle N pq 根據歐拉函數 求得r f N f p f q p 1 q 1 displaystyle r varphi N varphi p times varphi q p 1 q 1 選擇一個小于r displaystyle r 的整數e displaystyle e 使e displaystyle e 与r displaystyle r 互质 並求得e displaystyle e 关于r displaystyle r 的模反元素 命名为d displaystyle d 求d displaystyle d 令e d 1 mod r displaystyle ed equiv 1 pmod r 模反元素存在 当且仅当e displaystyle e 与r displaystyle r 互质 將p displaystyle p 和q displaystyle q 的記錄銷毀 N e displaystyle N e 是公鑰 N d displaystyle N d 是私鑰 Alice將她的公鑰 N e displaystyle N e 傳給Bob 而將她的私鑰 N d displaystyle N d 藏起來 加密消息 编辑 假设Bob想给Alice送消息m displaystyle m 他知道Alice产生的N displaystyle N 和e displaystyle e 他使用起先与Alice约好的格式将m displaystyle m 转换为一个小于N displaystyle N 的非负整数n displaystyle n 比如他可以将每一个字转换为这个字的Unicode码 然后将这些数字连在一起组成一个数字 假如他的信息非常长的话 他可以将这个信息分为几段 然后将每一段转换为n displaystyle n 用下面这个公式他可以将n displaystyle n 加密为c displaystyle c c n e mod N displaystyle c n e bmod N 计算c displaystyle c 并不复杂 Bob算出c displaystyle c 后就可以将它传递给Alice 解密消息 编辑 Alice得到Bob的消息c displaystyle c 后就可以利用她的密钥d displaystyle d 来解码 她可以用以下这个公式来将c displaystyle c 转换为n displaystyle n n c d mod N displaystyle n c d bmod N 得到n displaystyle n 后 她可以将原来的信息m displaystyle m 重新复原 解码的原理是 c d n e d m o d N displaystyle c d equiv n e cdot d mathrm mod N 已知e d 1 mod r displaystyle ed equiv 1 pmod r 即 e d 1 h f N displaystyle ed 1 h varphi N 那么有 n e d n 1 h f N n n h f N n n f N h displaystyle n ed n 1 h varphi N n cdot n h varphi N n left n varphi N right h 若n displaystyle n 與N displaystyle N 互質 則由欧拉定理得 n e d n n f N h n 1 h n mod N displaystyle n ed equiv n left n varphi N right h equiv n 1 h equiv n pmod N 若n displaystyle n 與N displaystyle N 不互質 則不失一般性考慮n p h displaystyle n ph 以及e d 1 k q 1 displaystyle ed 1 k q 1 得 n e d p h e d 0 p h n mod p displaystyle n ed ph ed equiv 0 equiv ph equiv n pmod p n e d n e d 1 n n k q 1 n n q 1 k n 1 k n n mod q displaystyle n ed n ed 1 n n k q 1 n n q 1 k n equiv 1 k n equiv n pmod q 故 n e d n mod N displaystyle n ed equiv n pmod N 得證 签名消息 编辑 RSA也可以用来为一个消息署名 假如Alice想给Bob传递一个署名的消息的话 那么她可以为她的消息计算一个散列值 Message digest 然后用她的私钥 加密 如同前面 加密消息 的步骤 这个散列值并将这个 署名 加在消息的后面 这个消息只有用她的公钥才能被解密 Bob获得这个消息后可以用Alice的公钥 解密 如同前面 解密消息 的步骤 这个散列值 然后将这个数据与他自己为这个消息计算的散列值相比较 假如两者相符的话 那麼Bob就可以知道发信人持有Alice的私钥 以及这个消息在传播路径上没有被篡改过 正确性证明 编辑首选取两个互质数p displaystyle p 和q displaystyle q 乘法计算p q displaystyle p q 得到N displaystyle N 然后计算出欧拉F N displaystyle Phi N F displaystyle Phi 函数F N displaystyle Phi N 是小于或等于N displaystyle N 的正整数中与N displaystyle N 互质的数的数目 根据欧拉公式 由于p displaystyle p 和q displaystyle q 都是质数 故 F N p 1 q 1 displaystyle Phi N p 1 q 1 这时候我们随机选择一个整数e displaystyle e 条件是1 lt e lt F N displaystyle 1 lt e lt Phi N 且e displaystyle e 与F N displaystyle Phi N 互质 接着我们计算e displaystyle e 对F N displaystyle Phi N 的模逆元得到d displaystyle d e d 1 m o d F N displaystyle e d equiv 1 mod Phi N 这个公式简单的说就是 e d displaystyle e d 除以F N displaystyle Phi N 得到的余数为1 这个公式可以转换成 e d p 1 q 1 1 displaystyle ed p 1 q 1 1 即 e d k p 1 q 1 1 displaystyle ed k p 1 q 1 1 于是 RSA公钥为 N e displaystyle N e 私钥为 N d displaystyle N d 加密原文m displaystyle m 得到密文 x m e N displaystyle x m e N 解密公式为 m x d N displaystyle m x d N 证明解密逻辑 在 m lt N displaystyle m lt N 的狀況下证明m x d N displaystyle m x d N 就是证明x d N m 0 displaystyle x d N m 0 x d N m displaystyle x d N m m e N d N m displaystyle m e N d N m m e d N m a b p a p b p displaystyle m ed N m quad because a b p a p b p m k p 1 q 1 1 N m displaystyle m k p 1 q 1 1 N m m m k p 1 q 1 1 N displaystyle m m k p 1 q 1 1 N 当m与N互质时 根据费马小定理公式a p 1 1 m o d p displaystyle a p 1 equiv 1 mod p m k q 1 p 1 1 m o d p displaystyle Rightarrow m k q 1 p 1 equiv 1 mod p m k p 1 q 1 1 m o d q displaystyle Rightarrow m k p 1 q 1 equiv 1 mod q m k p 1 q 1 1 m o d p q displaystyle Rightarrow m k p 1 q 1 equiv 1 mod pq m k p 1 q 1 1 m o d N displaystyle Rightarrow m k p 1 q 1 equiv 1 mod N m m k p 1 q 1 1 N 0 displaystyle Rightarrow m m k p 1 q 1 1 N 0 当m与N不互质时 不妨设公因子为p 即m p h 1 h 1 lt q displaystyle m ph 1 h 1 lt q 假設q整除m 因此q p h 1 displaystyle q mid ph 1 因為q與p互質 根據歐幾里德引理 q h 1 displaystyle q mid h 1 所以q h 1 displaystyle q leq h 1 而這與h 1 lt q displaystyle h 1 lt q 矛盾 所以q不整除m 此时m与q互质 根据费马小定理公式a p 1 1 m o d p displaystyle a p 1 equiv 1 mod p m q 1 1 m o d q displaystyle Rightarrow m q 1 equiv 1 mod q m k p 1 q 1 1 m o d q displaystyle Rightarrow m k p 1 q 1 equiv 1 mod q m k p 1 q 1 1 q h 2 displaystyle Rightarrow m k p 1 q 1 1 qh 2 m m k p 1 q 1 1 N p h 1 q h 2 N N h 1 h 2 N 0 displaystyle Rightarrow m m k p 1 q 1 1 N ph 1 qh 2 N Nh 1 h 2 N 0 证明完成 安全性 编辑假设偷听者Eve获得了Alice的公钥N displaystyle N 和e displaystyle e 以及Bob的加密消息c displaystyle c 但她无法直接获得Alice的密钥d displaystyle d 要获得d displaystyle d 最简单的方法是将N displaystyle N 分解为p displaystyle p 和q displaystyle q 这样她可以得到同余方程d e 1 m o d p 1 q 1 displaystyle de equiv 1 mathrm mod p 1 q 1 并解出d displaystyle d 然后代入解密公式 c d n m o d N displaystyle c d equiv n mathrm mod N 导出n 破密 但至今为止还没有人找到一个多項式時間的算法来分解一个大的整数的因子 同时也还没有人能够证明这种算法不存在 见因数分解 至今为止也没有人能够证明对N displaystyle N 进行因数分解是唯一的从c displaystyle c 导出n displaystyle n 的方法 直到今天也还没有找到比它更简单的方法 至少没有公开的方法 因此今天一般认为只要N displaystyle N 足够大 那么駭客就没有办法了 假如N displaystyle N 的长度小于或等于256位 那么用一台个人电脑在几个小时内就可以分解它的因子了 1999年 数百台电脑合作分解了一个512位长的N displaystyle N 一个由Shamir 和Tromer在2003年从理论上构建的硬件TWIRL 6 使人们开始质疑1024位长的N的安全性 目前推荐N displaystyle N 的长度至少为2048位 7 1994年 彼得 秀爾证明一台量子计算机可以在多項式時間内进行因数分解 假如量子计算机有朝一日可以成为一种可行的技术的话 那么秀爾的算法可以淘汰RSA和相关的衍生算法 即依赖于分解大整数困难性的加密算法 假如有人能够找到一种有效的分解大整数的算法的话 或者假如量子计算机可行的话 那么在解密和制造更长的钥匙之间就会展开一场竞争 但从原理上来说RSA在这种情况下是不可靠的 实现细节 编辑密钥生成 编辑 首先要使用概率算法来验证随机产生的大的整数是否質数 这样的算法比较快而且可以消除掉大多数非質数 假如有一个数通过了这个测试的话 那么要使用一个精确的测试来保证它的确是一个質数 除此之外这样找到的p displaystyle p 和q displaystyle q 还要满足一定的要求 首先它们不能太靠近 此外p 1 displaystyle p 1 或q 1 displaystyle q 1 的因子不能太小 否则的话N displaystyle N 也可以被很快地分解 此外寻找質数的算法不能给攻击者任何信息 这些質数是怎样找到的 尤其产生随机数的软件必须非常好 要求是随机和不可预测 这两个要求并不相同 一个随机过程可能可以产生一个不相关的数的系列 但假如有人能够预测出 或部分地预测出 这个系列的话 那么它就已经不可靠了 比如有一些非常好的随机数算法 但它们都已经被发表 因此它们不能被使用 因为假如一个攻击者可以猜出p displaystyle p 和q displaystyle q 一半的位的话 那么他们就已经可以轻而易举地推算出另一半 此外密钥d displaystyle d 必须足够大 1990年有人证明假如p displaystyle p 大于q displaystyle q 而小于2 q displaystyle 2q 这是一个很常見的情况 而d lt 1 3 N 1 4 displaystyle d lt frac 1 3 times N frac 1 4 那么从N displaystyle N 和e displaystyle e 可以很有效地推算出d displaystyle d 此外e 2 displaystyle e 2 永远不应该被使用 速度 编辑 比起AES 3DES和其它对称算法来說 RSA要慢得多 实际的運用 如TLS 一般結合了對稱加密 如AES 和非對稱加密 如RSA 兩者 密钥分配 编辑 和其它加密过程一样 对RSA来说分配公钥的过程是非常重要的 分配公钥的过程必须能够抵挡中间人攻击 假设Eve交给Bob一个公钥 并使Bob相信这是Alice的公钥 并且她可以截下Alice和Bob之间的信息传递 那么她可以将她自己的公钥传给Bob Bob以为这是Alice的公钥 Eve可以将所有Bob传递给Alice的消息截下来 将这个消息用她自己的密钥解密 读这个消息 然后将这个消息再用Alice的公钥加密后传给Alice 理论上Alice和Bob都不会发现Eve在偷听他们的消息 今天人们一般用可靠的第三方機構簽發憑證来防止这样的攻击 典型密钥长度 编辑NIST建議的RSA密鑰長度為至少2048位元 8 已公开的或已知的攻击方法 编辑大数因数分解 编辑 针对RSA最流行的攻击一般是基于大数因数分解 1999年 RSA 155 512 bits 被成功分解 花了五个月时间 约8000 MIPS年 和224 CPU hours在一台有3 2G中央内存的Cray C916计算机上完成 9 RSA 155表示如下 39505874583265144526419767800614481996020776460304936454139376051579355626529450683609 727842468219535093544305870490251995655335710209799226484977949442955603 3388495837466721394368393204672181522815830368604993048084925840555281177 11658823406671259903148376558383270818131012258146392600439520994131344334162924536139 2009年12月12日 编号为RSA 768 768 bits 232 digits 数也被成功分解 10 这一事件威胁了现通行的1024 bit密钥的安全性 普遍认为用户应尽快升级到2048 bit或以上 RSA 768表示如下 123018668453011775513049495838496272077285356959533479219732245215172640050726 365751874520219978646938995647494277406384592519255732630345373154826850791702 6122142913461670429214311602221240479274737794080665351419597459856902143413 3347807169895689878604416984821269081770479498371376856891 2431388982883793878002287614711652531743087737814467999489 3674604366679959042824463379962795263227915816434308764267 6032283815739666511279233373417143396810270092798736308917 时间攻击 编辑 1995年 丹 博內 英语 Dan Boneh 和大衛 布魯姆利 英语 David Brumley 提出了一种非常意想不到的攻击方式 假如Eve 竊密者 对Alice的硬件有充分的了解 而且知道它对一些特定的消息加密时所需要的时间的话 那么她可以很快地推导出d 這種攻擊方式之所以會成立 主要是因為在進行加密時所進行的模指數運算是一個位元一個位元進行的 而位元為1所花的運算比位元為0的運算要多很多 因此若能得到多組訊息與其加密時間 就會有機會可以反推出私鑰的內容 11 相關條目 编辑公开密钥加密 橢圓曲線密碼學 量子電腦 秀爾演算法 米勒 拉賓質數判定法 迪菲 赫爾曼密鑰交換 快速幂 扩展欧几里得算法参考文献 编辑 Calderbank Michael The RSA Cryptosystem History Algorithm Primes PDF 2007 08 20 原始内容 PDF 存档于2016 12 13 Cocks C C A Note on Non Secret Encryption PDF www gchq gov uk 1973 11 20 2017 05 30 原始内容存档 PDF 于2017 02 16 Cryptographic communications system and method 1977 12 14 2018 04 09 原始内容存档于2019 02 17 RSA Security Releases RSA Encryption Algorithm into Public Domain 2010 03 03 原始内容存档于2007 06 21 Robinson Sara Still Guarding Secrets after Years of Attacks RSA Earns Accolades for its Founders PDF SIAM News June 2003 36 5 2018 04 09 原始内容 PDF 存档于2017 01 16 Tromer Eran TWIRL The Weizmann Institute Relation Locator cs tau ac il 2018 04 16 原始内容存档于2018 04 20 Has the RSA algorithm been compromised as a result of Bernstein s Paper 页面存档备份 存于互联网档案馆 What key size should I be using Keylength NIST Report on Cryptographic Key Length and Cryptoperiod 2019 www keylength com 2020 04 22 原始内容存档于2020 04 04 存档副本 2018 04 09 原始内容存档于2017 07 01 Factorization of a 768 bit RSA modulus PDF 2010年1月7日 2010年1月10日 原始内容 PDF 存档于2010年3月31日 Remote timing attacks are practical 页面存档备份 存于互联网档案馆 SSYM 03 Proceedings of the 12th conference on USENIX Security Symposium 外部链接 编辑RSA The Security Division of EMC 页面存档备份 存于互联网档案馆 RSA算法详解 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title RSA加密演算法 amp oldid 74750803, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。