為什麼非對稱加密演算法中,能用私鑰解密公鑰加密的內容?

時間 2021-07-11 20:13:54

1樓:以夢為馬

這是由加密演算法基於的數學問題決定的。

加密演算法是基於數學上的困難問題,比如大整數分解、離散對數問題等。困難性能夠保證知道公鑰的前提下,無法獲知私鑰,而私鑰能夠正確解密出使用公鑰加密的訊息。

我看前面已經有舉RSA的例子了,那我以EIGamal加密演算法為例吧,它的安全性基於計算離散對數的困難性。

首先,令 是乙個多項式時間演算法,輸入為 ,輸出乙個迴圈群 ,其階為 (其中 ),生成元為 。EIGamal加密的一種情況是: 是乙個橢圓曲線群。

該方案定義如下:

Gen:輸入 ,執行 來獲得 。然後選擇隨機的 並計算 。公鑰是 ,私鑰是 。

Enc:輸入公鑰 和訊息 ,選擇乙個隨機數 ,並且輸出密文 " eeimg="1"/>。

Dec:輸入私鑰 和密文 " eeimg="1"/>,輸出 。

證明解密過程正確:

我們看到,公鑰裡的 和私鑰裡的 存在乙個指數關係,這個關係能夠保證解密正確。

2樓:saturnman

這個簡單來說主要是函式中的恒等函式,就是F(x)=x,看起來簡單吧但是如果F是乙個復合函式F=g.f, 這時就能用f加密再用g解密了,當然為了安全g和f的設計要符合一定的安全規範和強度。

3樓:超級露

以非對稱加密中使用很廣泛的RSA演算法為例說明:

金鑰檔案生成過程

金鑰檔案(包含公鑰和私鑰)內部結構大概如下:

typedef

struct

rsa_st

RSA;

接下來看看如何生成金鑰對:

選取兩個很大的質數p和q

求這兩個數的乘積n

取乙個公開指數e,這個數的值小於(p-1)(q-1),e對應的值和(p-1)(q-1)的值互質

e和n組合起來就相當於公鑰,n值的長度就相當於金鑰對的長度

通過e、p、q能夠計算出私鑰d,d和n組合起來就是私鑰。一旦計算出私鑰,p和q這兩個數就可以丟棄,這樣更安全。如果不丟棄且和d一同儲存在私鑰檔案中,則運算時效率更高。

e和d之間存在互逆的關係

2. 加密過程

RSA演算法加入應用於加密,一般使用公鑰加密,私鑰解密,具體過程:

C = M ^ e (mod n)

這個過程表示對明文M進行多次冪運算,運算的次數就是公鑰,計算出值後再進行模運算(mod n),最終得到的C就是密文。

3. 解密過程

對密文進行d次的冪運算,然後進行模運算,最終得到明文M

M = C ^ d (mod n)

至於加密和解密如何互逆,依賴於演算法和金鑰對,過程如下:

C^d的過程相當於(M^e)^d

(M^e)^d相當於M^(e*d)

(e*d)mod n等於1

C^d (mod n)最終就能反解出M

4. RSA演算法安全性

冪運算的逆過程就是求對數問題,而模運算可以認為是離散問題,組合起來RSA演算法就是離散對數模型,只要金鑰長度足夠長,離散對數很難破解。

公鑰持有人有e和n,而要計算出私鑰d,需要知道p和q,想通過乙個巨大的數字n獲取p和q是乙個因式分解問題,暴力破解很難

攻擊者加入想通過密文和公鑰破解私鑰,就要求解決離散對數問題,更是難上加難。

目前對於RSA非對稱加密演算法來說,乙個2048位元長度的金鑰對被認為是安全的。

從上面的過程可以看出,金鑰對的生成是依賴於數學知識的,有複雜的關係,加密和解密是互逆的關係,但是演算法的整個過程是公開的,如果對其他非對稱加密演算法過程感興趣,也可以通過各種途徑獲取相關的計算過程。

DH演算法為什麼屬於非對稱加密演算法?

雲子可信 DH 演算法其實也叫作Diffie Hellman金鑰交換協議,是乙個不安全的秘鑰共享網路協議,無法避免中間人攻擊。假設Ali和Bob需要互相通訊並共享秘鑰 Ali先給Bob乙個明文共享引數 此資訊可以被任何人識別 Ali自己生成乙個隨機數 Ali的私鑰 並不將 告訴包括Bob在內的任何人...

為什麼對稱加密演算法不能用於簽名場景?

白頭雁 從合法簽名的角度說,必須保證私鑰只有擁有者擁有,在實踐中私鑰是儲存在USBKey這樣的儲存介質中。金鑰的擁有者也只能呼叫USBKey的介面,進行計算,不能匯出備份私鑰。這樣私鑰的唯一性才能保證,採用私鑰完成的數字簽名才能證明擁有者身份。對稱金鑰也在一些場合用作數字簽名如HMAC等,需要第三方...

非對稱加密的設計原理是什麼?

劉昴星 非對稱加密其實只是指加密和解密使用的金鑰不一樣的加密方法。你只要在數學上能證明你的明文通過公鑰能進行加密,通過私鑰能進行正確的解密,而公鑰和私鑰又不一樣,那你就設計了一種非對稱加密演算法。例如我們把凱撒密碼換一種方式 比如乙個26個字母的輪盤,加密就是順時針轉3格,a變d,b變e z變c,解...