在非對稱加密中,是怎麼做到知道公鑰也沒法破解密文的?

時間 2021-05-08 16:07:15

1樓:馬聰

其實我覺得問這個問題的人不見得要了解如此詳細的細節吧。問題大致的意思就是說我明明可以從A走到B,我反著走從B走到A不行嗎?

而事實上,從A走出來的內容是B+C,在對外公開的時候,C被丟棄了,其實通過B+C是非常容易反推A的。那麼有人說,C我可以猜啊,但是C的可能性非常多,多到目前全世界計算機根本算不完,具體一點就是,假設你可以把宇宙中每乙個原子做成乙個計算機,所有計算機一起算,算到宇宙毀滅的時間,還差好多個數量級。所以從B走不到A。

當然,可能隨著數學的發展,可能存在通過B的內容可以得到C的方法,那麼,從B到A就容易了。

而所謂的RSA和橢圓曲線中的B就是一種預設的計算結果的最後n位,C就是前面的那些位數,由於C反正要被丟棄,現在在計算過程中也會陸續丟棄C的中間過程,加快計算速度。密碼學就是要設計更好的B和C以及如何從B來得到C的過程。具體的BC究竟如何工作,可以檢視其他的答案。

2樓:我想談談

乙個鎖上兩把鑰匙,當然知道乙個鑰匙沒用了,你的標題這麼解釋就足夠了呵呵,開個玩笑了

起始看看外面好多的抓蚊蟲的那個小玩意,就知道,可逆不是這麼容易的啊你找個很大很大的數字,比如說1000位,把它分解成兩個30位的普通相乘,怎麼做,目前的方法就是逐步遍歷啊

我找個兩個30位的數相乘,然後告訴你結果,你無法在很短時間知道,我是哪兩個數字,這是就是基本原理

當然具體加密演算法,比這個要複雜點

3樓:

取餘運算, 你可以通過 13(明文) 對 5 取餘得出 3(密文), 但 3 和 5 不能確定 13(明文)

n mod 5 = 3 -> n?

我之前接觸RSA時候還有乙個疑問是為什麼私鑰怎麼解公鑰(數學渣別嘲笑我), 後來看到乙個式子:

abc* 91 * 11 =abc* 1001 =abcabc

當然這些只是幫助理解的式子, 實際加密並不是這樣, 要比這複雜的多.

4樓:布束

以最著名的非對稱加密演算法RSA為例,先列出RSA的基本原理:

金鑰生成式:e*d =1 mod phi(n)

加密式:c=m^d mod n

解密式:m=c^e mod n

公鑰(n,d),私鑰(n,e)

其中n=p*q,p與q為兩個大素數

phi(n) 是n的尤拉函式。在這裡phi(n) =(p-1) (q-1)

e是和phi(n) 互質的隨機數,d是利用拓展歐幾里得演算法計算的e在mod phi(n) 下的逆元。

e和d乙個作為私鑰,乙個作為公鑰。m是要加密的明文,c是密文

接下來說明RSA的公鑰為什麼不能逆推出私鑰:

考慮金鑰生成式:e*d =1 mod phi(n)

在已知公鑰(n,e)的情況下,你還需要模數phi(n) 才能執行擴充套件歐幾里得演算法來得到d。

關鍵就在這裡:要求出phi(n),如果不知道p和q,那麼求phi(n) 的困難性不會低於對n進行質因數分解。

而由於n是乙個極大的數(2^1024或更長),因此對它進行質因數分解,在當下來說是計算上不可行的。當代的計算機沒辦法在有限時間內完成這一任務。

因此,也就是說已知公鑰(n,e)求私鑰(n,d) 是【計算上不可行】的。

5樓:風起松濤聲

首先你得明白RSA加密的演算法,簡單講RSA的核心演算法就是利用兩個最大素數相乘來產生公私鑰密碼對(這麼看來加密演算法是很簡單的),所以如果要利用公鑰解出私鑰就必須先解出這兩個最大素數。

但遺憾的是,RSA已經發明40多年了,就是這麼簡單的加密演算法,人類卻沒有找到一種演算法能夠短時間內將乙個較大數分解為兩個大素數的乘積。這就是無法利用公鑰解出私鑰的根本原因(就算使用窮舉法解出來了,那也是猴年馬月了)。但是一旦某一天這種演算法被發明出來了,那麼整個現代加密體系就會徹底崩塌,RSA就廢了。

RSA有乙個缺點就是運算很慢,因為加密過程有大量的除法運算。對於計算機來講,做除法運算所需要的時間是加減法運算的幾千倍。如果用RSA來對龐大的資料進行加密,計算機就不能實現實時加密。

為了解決這個問題,人們就用AES(對稱加密演算法)來加密資料,只需用RSA來加密AES金鑰,大大縮短了加密時間,這麼做即利用了AES的快速加密,又利用了RSA來保護AES金鑰,從而避免了AES金鑰在傳輸過程中洩露的可能。這就是現代加密體系。

例如伺服器與客戶端的連線建立過程如下:

①客戶端向伺服器發出連線請求

②伺服器利用RSA產生乙個公私鑰密碼對,將公鑰傳送給客戶端

③客戶端產生乙個AES金鑰,用收到的RSA公鑰對其進行加密,傳送給伺服器

④伺服器利用收到的AES金鑰(利用RSA私鑰解出)加密要傳輸的資料,傳送給客戶端。

這樣就保證了伺服器向客戶端傳送資料的安全性。

6樓:石大頭

rsa為例:

公鑰: (n,e)

私鑰: (n,d)

其中n=p*q,d=e^(-1) mod (p-1)*(q-1)就是說要從公鑰e算出私鑰d,你得知道p和q是多少。

但是問題來了,你只知道n=p*q,要知道p和q就要對n做因數分解,而n是乙個超大的數,對它做因數分解很困難。所以一般認為你不太可能從公鑰推出私鑰來。

7樓:冒泡

值域有限(一般也是離散)的情況下,逆運算是絕對可能的,最起碼你可以列舉解然後進行正向運算驗證,所以所謂的沒法破解,是指不可操作,而不是不可計算

不可操作一般是指時間上無法接受,比如如果乙個逆運算只能通過列舉+驗證來做,而列舉的範圍特別大,那麼我們就說這個演算法是「無法(在可接受代價下)破解」了

8樓:八里土人

不存在「無法推導」的,至少「窮舉」是可以的。

給你乙個簡單的例子:

如果知道係數,很容易根據x算出y來。

但是給你100個甚至200個y和x,讓你倒推係數,是萬難的。

9樓:「已登出」

難道不能直接根據公鑰逆運算嗎?

可以。不論演算法具體的實現如何,你永遠都有根據加密金鑰推算解密金鑰的方法。最簡單的,如果你知道密文,加密金鑰和加密函式,那麼無論如何,你都可以通過列舉所有可能明文的密文並進行對比來得到明文。

但是這裡有另外乙個問題,時間。

比如說,你要解密的通訊是敵軍明天的部署,而你計算出解密金鑰所需的時間是24小時零1秒,那麼解密之後資訊就已經沒有用了,這樣的解密你是不會去做的。

所以說,解密金鑰的絕對安全是不重要的,重要的是在資訊的時效結束之前,解密金鑰的安全。

比如,你通過某種非對稱加密向銀行伺服器傳輸憑據,攻擊者需要進行10天的運算才能解密出你通訊的內容,那麼你只需要每7天修改一次憑據,就可以保證賬戶安全。

而對於目前的演算法來說,10天還是很容易做到的。

p.s.

10樓:JennyVenus

演算法最難受的就是只有理論沒有資料

寫過乙個小短文,能看明白如何加密解密

11樓:Zign

這是我在另乙個回答裡對rsa簡單的解釋,應該很好懂。

12樓:myohmy0

如果我製作一把鎖,並大量量產,發到市場上,但不同時配發鑰匙。那麼誰都可以從市場上買到這把鎖,用它鎖東西交給我。我有鑰匙能開啟,其他人不能。不算特別準確,但大概就是這樣乙個比喻。

13樓:61nevermore

看下rsa的安全性研究就知道了,這個只有你自己看才能懂。

看了大家的回答,還是補充一下。這個問題很難用非數學的方法去解釋,確切來說,解密這個對於現代密碼學而言是乙個時間問題,而不是能或者不能的問題。所謂非對稱的加密方案,可以理解為乙個密碼學方案有兩個KEY,乙個KEY解密速度非常快,也就是大家說的可以實現解密,因為這個KEY裡包含了更多的關於方案的資訊;另外乙個KEY解密速度非常慢,慢到了就算你解密出來也沒有意義,現在一般是要求做到和窮舉的時間複雜度差異不大的程度(所以對方案的攻擊只要求有明顯大於窮舉的效能特徵就足夠了,並不要求一定能多快解密出來),因為這個KEY裡包含了很少的關於方案的資訊。

比如說冪和對數的計算過程是典型的可逆的但複雜度差異很大的計算過程,計算冪非常快,但是計算對數就非常慢。那麼如果說解密的時候KEY包含的資訊較少就只能通過求對數去解密,那這個速度就非常慢,但如果KEY包含的資訊較多那就可以用更好的方法(有很多解問題的方法是可以相互替代的,並不是一定要通過特定方法)。從資訊的角度來看,一般私鑰是可以轉換成公鑰的,這個過程也就是減少了有效資訊的過程。

14樓:王傑

在非對稱加密中,使用了「陷門單向函式」,這類函式特點如下:

(1)對 的定義域中的每乙個 ,均存在函式 ,使得 ;

(2) 和 都容易計算;

(3)僅根據已知的計算 的演算法,去找出計算 的容易演算法是困難的。

舉個栗子,已知兩個1024 bit位的的大素數,計算他們的乘積相對比較容易;反之如果已知這兩個大素數的乘積,分解出這兩個大素數,就相對困難了,題主可以自己試試。

這類單向函式如果稍加改進,配上「陷門」,就可以拿來用於非對稱加密,沒有「陷門」逆向難以計算,有了「陷門」計算就很方便,典型例子就是RSA,以及離散對數,具體實現網上一查一大把。

Duet Display是怎麼做到在iPad上擴充套件顯示Mac內容的

明天發布會Sidecar正式版要出來了,測試版已經可以肯定Sidecar的體驗比Duet好太多了。Duet 現在的處境很尷尬啊。Sidecar出現了。看下面這個問題。WWDC19 發布的 Sidecar 副屏功能好用嗎?李巨俠的回答 知乎 https www. 中中 坐等for iPad Pro的測...

在RSA加密中既然公鑰和私鑰是可逆的,為什麼都是把公鑰給別人,而不能把私鑰給別人?

詹天佐 從另外乙個角度考慮下,公鑰資料裡一般包含公鑰指數e,模N 私鑰資料裡一般包含私鑰d,公鑰指數e,模N。很多時候公鑰指數e約定好,固定取值3或者65537,這樣一來e是公開的,而N在公鑰和私鑰運算時都需要用到,也必須公開 加解密雙方或者簽名驗證雙方都要知道N 那d就必須保密了。因為N是必須公開...

中本聰是怎麼做到在人肉搜尋那麼強大的網際網路上隱藏自己的身份的?

烏和安 人類有自己的固有弱點。每個人都會在鉅額的資產和巨大的權力裡迷失自己,無一例外,除非是死人或非人。什麼叫 臨在 啊?臨在就是世界上慣常的普通現象集合,但是你看到的那一刻就自然知曉,老天爺對一切都自有安排。 公悵一葉舟 以前看過一篇文章分析,挺有意思的。 谷岳 它的現身影響太大,現在絕對是不會再...