非對稱式密碼學 - RSA - 附錄
這一邊我想要跟大家說說,RSA的一些提升安全性的規則。
當然參考了很多很多的文章,因此我也會把這些資料分享出來。
那這邊屬於一個附錄的部分,密碼學實在太多有趣的細節,搞的我十分想要塞進來說說。
另一件事情就是,因為這樣會導致後面的章節可能沒辦法講。
那該怎麼辦呢?很簡單!我們明年見!
好~廢話不多說,直接進行討論。
公鑰的質數
這個問題很有趣,但必需要看一些論文跟文章才能回答這問題。
我摘錄了一些重點然後一一地來跟大家說說。
RSA當中牽涉的兩個質數,而一般公鑰的質數都是65537。
在早期的OpenSSL會設e為3當作公鑰,但目前普遍來說RSA的公鑰設定3其實是很不安全。
而為什麼要要設定3呢?其實也不難理解,就是在做『模反元素』只需要2次,而要是隨機,那就會很多次(至少1000次的可能)。
你說會不會很容易被破解?其實如果有好好地照著 PKCS 的2.1或1.5規範來說,其實還算是安全。
而攻擊分析的話可以看這篇文章为什么RSA 公钥指数(e=65537)。
這邊推薦一份文檔公鑰密碼學標準
密碼學跟很多學科一樣,其實有很多很多的細節跟資訊。
我是無意在寫文章時,從搜尋結果找到的,然後才發現有這樣的標準。
這也深深地讓我知道自己其實學習得很不夠;在一邊寫文章、一邊找了一堆資料後,學習了很多很多。
而我也盡可能的把這些東西寫出來,畢竟我想也有些人不知道。
如果大家有興趣,我們可以在之後來做導讀跟學習。
一起讀文件標準其實也是很有意思的。
其實我有排兩個章節是來讀TLS 1.0 1.1 1.2 1.3 的規範文件與原理細節。
但我有看到好像有人有開,如果大神寫的很完整,那我們就直接推薦。
要是他最後沒參賽的話,明年之類的我就多開來講各項的協定。(或者有人敲碗,那我就慢慢寫。)
私鑰的質數
公鑰跟私鑰要滿足一些條件,才能達到安全要件。
一樣我們來看一些論文跟資訊。
這是我找的文章:
RSA 生成公私钥时质数是怎么选的?
因為兩個質數有一些特別的條件要達成。
我們一一來看:
- 質數q跟p兩個不能離太近。
- 如果說N的長度為n,那麼|p-q|要滿足:
- log(|p-q|) > n/2 - 100
- log(|p-q|) > n/3
- 上述來自D. Coppersmith 1996年的論文:
- Coppersmith D. Finding a small root of a bivariate integer equation; factoring with high bits known. EUROCRYPT 1996. pp. 178-189, ACM, 1996.
- 公鑰e不能太小。
- 格密碼學的LLL算法將會被破解。
- 但因為會用到m^e,因此e太大會很慢。
- 上述來自D. Coppersmith 1997年的論文:
- Coppersmith D., Small solutions to polynomial equations, and low exponent RSA vulnerabilities, Journal of Cryptology, 10: 233–260, 1997.
- 私鑰d必須足夠大。
- 私鑰d要滿足:
- d < 2^(n/2)
- d < (1/3)*(N^(1/4))
- 上述來自M. Wiener 1990年的論文:
- Wiener M. Cryptanalysis of short RSA secret exponents. IEEE Transactions on Information Theory. 36: 553–558, 1990.
- N的NAF不能太小
- 先瞭解NAF資料。
- N的NAF權重需要滿足:大於N/4。
- 上述來自O. Schirokauer 2010年的論文:
- Schirokauer O. The number field sieve for integers of low weight. Mathematics of Computation, 79(269): 583-602, 2010.
目前OpenSSL的檔案
其實這個也很有趣,但我沒時間一一來講。
目前有兩種:
- DER
- PEM
但目前兩種方式內容都是相同的,編碼上的不同而已。
目前的規範是ASN.1來做編碼的。
一樣我收集了一下文章,請大家自己看啦:
RSA的公钥和私钥的ASN.1编码
rsa秘钥介绍及openssl生成命令
使用openssl命令剖析RSA私鑰文件格式
asn1js
ASN.1
參考資料
为什么RSA 公钥指数(e=65537)
公鑰密碼學標準
Finding a Small Root of a Bivariate Integer Equation; Factoring with High Bits Known
RSA 生成公私钥时质数是怎么选的?
RSA 加密演算法 wiki
NAF
RSA的公钥和私钥的ASN.1编码
rsa秘钥介绍及openssl生成命令
使用openssl命令剖析RSA私鑰文件格式
補充資料
國家標準暨技術研究院