iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0
Security

無趣的密碼學,有趣的加密!系列 第 13

[Day 13] 013 - 非對稱式密碼學 - Asymmetric cryptography (一)(附錄)

非對稱式密碼學 - 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 生成公私钥时质数是怎么选的?

因為兩個質數有一些特別的條件要達成。

我們一一來看:

  1. 質數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.
  2. 公鑰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.
  3. 私鑰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.
  4. 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的檔案

其實這個也很有趣,但我沒時間一一來講。

目前有兩種:

  1. DER
  2. 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私鑰文件格式


補充資料

國家標準暨技術研究院


上一篇
[Day 12] 012 - 非對稱式密碼學 - Asymmetric cryptography (番外)(二)
下一篇
[Day 14] 014 - 非對稱式密碼學 - Asymmetric cryptography (二)(上)​
系列文
無趣的密碼學,有趣的加密!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言