成人免费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數據庫數據

2020-05-21 19:46:19

區塊鏈數字貨幣比特幣

2018-06-26 05:23: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協議

2012-06-26 09:47:23

大數據

2018-12-12 22:51:24

Java包裝語言

2016-09-12 17:28:45

云存儲應用軟件存儲設備
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品色欧美aⅴ一区二区 | 91久久久久久久久久久 | 亚洲国产成人久久久 | 天天人人精品 | 久久久久久久久久久国产 | 国产色爽 | 中文字幕av在线播放 | 成人在线小视频 | 国产精品久久久久无码av | av中文天堂 | 亚洲国产成人一区二区 | 蜜臀久久99精品久久久久久宅男 | 色就干| 国产精品123区 | 成年人黄色小视频 | 国产成在线观看免费视频 | 欧美日韩在线一区二区三区 | 欧美一区二区 | 久久久成人免费一区二区 | 精品国产青草久久久久福利 | 久久久久久亚洲精品 | 在线看黄免费 | 亚洲精品4 | 操射视频| 中文字幕一区二区三区乱码在线 | 欧美aa在线 | 日韩欧美在线精品 | 欧美日韩国产三级 | 一级毛片观看 | 最新av在线播放 | 国产精品3区 | 日韩欧美久久精品 | 91久久 | av天天看 | 一区在线视频 | 国产一区在线免费观看视频 | 亚洲一区自拍 | 日韩一区二区三区在线观看视频 | 99爱在线| 日韩av一区二区在线观看 | 久久精品亚洲精品国产欧美 |