成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一分鐘了解 RSA 算法到底是個什么鬼?

開發 前端
本文將概述 RSA 算法的流程,并用一個簡單示例進行闡述,最后講解了一種意想不到的“旁門左道”的破解方式。

背景

大家好,我是石頭哥。

RSA 算法大家肯定都聽說過了,它是一種常見的非對稱加密算法,常用來對一些在網絡上傳輸的敏感信息進行加密。

但具體流程不知道大家清楚不?本文將概述 RSA 算法的流程,并用一個簡單示例進行闡述,最后講解了一種意想不到的“旁門左道”的破解方式。

RSA 算法流程

具體算法流程如下:

找到互質的兩個數, p 和 q, 計算 N = p*q

確定一個數 e, 使得 e 與 (p-1)(q-1) 互質, 此時公鑰為 (N, e), 告訴給對方

確定私鑰 d, 使得 e*d-1能夠被(p-1)(q-1)整除

消息傳輸方傳輸消息 M, 加密密文C為:

消息接受方通過收到密文消息 C, 解密消息 M:

RSA算法依賴于歐拉定理,一個簡化版本為大致為 a 和 p 互質,那么有:

即a 的 p-1 次方 對 p 取余為1,(a 的 p-1次方減去1可以整除 p)

歐拉定理的證明比較復雜,可以參考下文末的參考資料。

舉個例子

還是用個簡單示例來說明:

N = pq, 取倆素數 p=11, q = 3, N = p * q = 33, 取 e 與 (p-1)(q-1) = 20 互質的數 e = 3, 然后通過

確定私鑰, 即取一個 d 使得 3*d -1 能 20 被整除, 假設取 d=7 或者d=67。(3*7-1=20 當然能被20整除, 3*67-1=200 也能被20整除)

因此 public key 為 (N=33, e=3), private key 為 d=7 或者d=67。

假設加密消息M=8, 通過加密算法,得到密文 C=8^3 % 33 = 17。

再來看解密, 由,得到明文 M = 17^7 % 33 = 8 或者 M=17^67 % 33=8, 是不是很神奇? (這里^ 表示多少次方,后文中的有的表示異或)

來, 安利一個計算器的工具, bc 命令, 支持任意精度的計算, 其實 Mac簡單的計算就可以通過前面介紹的 Alfred 可以方便得完成。

linux計算器

RSA 破解

如果需要破解 RSA 的話,就是需要找到 p 和 q, 使得 pq=33, 如果知道了 p 和 q 就能通過公鑰 N 和 e 反推出私鑰 d 了。

當然上面所述的案例較簡單,當 N 很大時,就特別困難了。大數分解在歷史以來就一直是數學上的難題。

曾經有人花了五個月時間分解了這個數39505874583265144526419767800614481996020776460304936454139376051579355626529450683609727842468219535093544305870490251995655335710209799226484977949442955603(159位數), RSA-155 (512 bits) [from wikipedia]。

這條路走不通, 就有人走了"旁門左道"了, Stanford 的幾個研究者用了兩個小時破解了 OpenSSL 0.9.7 的 1024-bit 的 RSA 私鑰 (感興趣的同學可以看他們的論文Remote Timing Attacks are Practical),用到的方法就是后面提到的時序攻擊(或譯為"計時攻擊")。

計時攻擊(Timing Attack)

計時攻擊是邊信道攻擊(或稱"側信道攻擊",Side Channel Attack,簡稱 SCA) 的一種, 主要是一種利用不同的輸入會有不同的執行時間這個特點進行的。

剛開始看到這個,我還是大為震驚的。憑直覺想,感覺要實際應用起來干擾項太多了,是不是可以直接忽略?

不過,看到上述論文有實際攻破成功的案例,以及各大編程語言紛紛補丁來看,這樣做還是非常需要的,至少是“政治”正確的。

例如 JDK 1.6.0_17 中的Release Notes 中就提到了 MessageDigest.isEqual中的 bug 的修復,如下圖所示:

MessageDigest.isEqual計時攻擊

參考資料:

[Timing Attacks on RSA: Revealing Your Secrets through the Fourth Dimension](http://www.cs.sjsu.edu/faculty/stamp/students/article.html)

[Remote Timing Attacks are Practical](http://crypto.stanford.edu/~dabo/papers/ssl-timing.pdf)

[費馬小定理](https://zh.wikipedia.org/wiki/%E8%B4%B9%E9%A9%AC%E5%B0%8F%E5%AE%9A%E7%90%86)


責任編輯:武曉燕 來源: 程序猿石頭
相關推薦

2017-07-06 08:12:02

索引查詢SQL

2022-07-18 06:16:07

單點登錄系統

2020-07-17 07:44:25

云計算邊緣計算IT

2020-07-09 07:37:06

數據庫Redis工具

2021-08-06 08:50:45

加密貨幣比特幣區塊鏈

2020-09-23 06:54:51

路由表接口數據包

2017-03-30 19:28:26

HBase分布式數據

2022-06-02 08:46:04

網卡網絡服務器

2016-09-14 15:57:53

架構分布式系統負載均衡

2017-02-21 13:00:27

LoadAverage負載Load

2018-07-31 16:10:51

Redo Undo數據庫數據

2018-06-26 05:23:19

線程安全函數代碼

2020-05-21 19:46:19

區塊鏈數字貨幣比特幣

2017-12-26 16:24:36

接口代碼數據

2018-01-14 23:19:25

靜態動態互聯網

2015-10-10 14:11:00

互聯網數據挖掘爬蟲

2020-01-30 11:26:17

QinQVLAN協議

2018-12-12 22:51:24

Java包裝語言

2016-09-12 17:28:45

云存儲應用軟件存儲設備

2012-06-26 09:47:23

大數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线成人www免费观看视频 | 中文字幕一区二区三区四区不卡 | 亚洲精品99999| 99热精品在线 | 国产在线www | 国产成人短视频在线观看 | 国产一级视频在线观看 | 日韩亚洲视频 | 久久久久久成人 | 美女在线一区二区 | 日韩福利 | 中文字幕在线观看视频网站 | 亚洲精品免费观看 | 国产综合视频 | 91视频大全 | 亚洲福利 | 久久91| 亚洲欧美在线视频 | 日韩在线视频观看 | 蜜臀网 | 久久婷婷国产麻豆91 | 亚洲va在线va天堂va狼色在线 | 国产精品日韩 | 二区高清 | 亚洲国产成人精品女人久久久 | 久久国产精品免费一区二区三区 | 精品啪啪 | www.一区二区三区.com | 超碰操| 中文字幕第一页在线 | 中文字幕视频在线 | 亚洲精品乱码久久久久久黑人 | 欧美午夜影院 | 国产精品视频久久久久久 | 成人 在线 | 操射视频| 国产一级视频在线 | 亚洲精品欧洲 | 亚洲 欧美 日韩在线 | 久久乐国产精品 | 亚洲精品美女在线观看 |