2010-11-28 87 views
5

我正在學習測試,我仍然沒有得到它爲什麼公鑰算法比對稱算法慢。爲什麼公鑰算法很慢?

+0

在stackoverflow.com或programmers.stackexchange.com的傢伙將能夠更好地回答這個問題。 – Iain 2010-11-28 22:33:45

+0

或者可能是這樣的:http://security.stackexchange.com/ – DanFromGermany 2015-06-24 10:19:22

回答

6

Public-key cryptographyasymmetric cryptography的一種形式,其中區別在於使用了額外的密鑰。

Symmetric algorithms使用「共享祕密」,其中兩個系統各自使用單個加密密鑰來加密解密通信。

公鑰加密不使用單個共享密鑰,而是使用數學密鑰對:公鑰和私鑰。在這個系統中,通信是用公鑰加密的,並用私鑰解密。下面是來自維基百科的一個更好的解釋:

在 公共密鑰加密中使用的識別技術是利用 非對稱密鑰算法,其中使用的 密鑰加密的消息不 一樣使用的密鑰解密 吧。每個用戶都有一對 密鑰 - 公鑰加密密鑰和一個私鑰解密密鑰。 公開可用的加密密鑰是廣泛分佈的 ,而私人的 解密密鑰只有 收件人知道。消息使用收件人的公鑰加密 ,並且只能使用 對應的私鑰解密 。密鑰 在數學上是相關的,但私鑰不可行(即在 實際或計劃的練習中)是從公鑰導出的 。 算法的發現可能產生公鑰/私鑰對 革命化的做法 密碼學開始於20世紀70年代中期 。

的計算開銷則相當明顯:公鑰是提供給它暴露於任何系統(公共密鑰系統在互聯網上,例如暴露公鑰到整個互聯網)。爲了彌補,公鑰和私鑰都必須相當大才能確保更高級別的加密。但是,結果是一個更加強大的加密級別,因爲私有解密密鑰(迄今爲止)不能從公用加密密鑰進行反向設計。

還有更多可能影響public-key infrastructure(PKI)的「速度」。由於這個系統的一個問題是信任,所以大多數實現涉及certificate authority(CA),它們是可信的委託密鑰對並驗證密鑰的「身份」的實體。所以總結一下:更大的加密密鑰大小,兩個加密密鑰而不是一個密鑰,以及引入證書頒發機構:額外的DNS查詢和服務器響應時間。

這是因爲這種額外開銷,大多數實現受益於hybrid algorithm,其中公鑰和私鑰用於生成會話密鑰(很像對稱算法中的共享密鑰)以獲得兩全其美。

2

加密和鍵控方法是一個非常深刻和複雜的話題,只有世界上最聰明的數學思想才能完全理解,但是大多數人都可以理解的頂級視圖。

主要區別在於對稱算法比非對稱(PKI)方法需要更多,更小的密鑰。因爲對稱算法是在一個以可信通信方式傳輸的「共享密鑰」(例如abcd1234)上工作的(例如,我打電話給你打電話詢問共享密鑰),那麼它們不會只要他們依賴於其他安全方法(即我相信你不要告訴任何人),就需要這樣做。 PK基礎設施涉及通過互聯網,不可信空間發送該「密鑰」,並涉及使用巨大的素數和大量密鑰(例如1024位或2048位而不是128位或256位)。

一般的經驗法則是PKI方法大約比對稱密鑰慢1000倍。

+0

=)ah keyize是其中一個問題:) – 2010-11-28 22:38:54

3

公鑰算法依賴於「陷門」計算,這些算法在計算上花費昂貴的加密和計算上難以用祕密密鑰解密。如果第一步太容易了(與速度相關),第二步變得更難(更易破碎)。因此,公鑰算法往往是資源密集型的。

私鑰算法在加密階段已經有了祕密,所以他們不必像做公開祕密的算法那樣做很多工作。

以上是一個過度概括,但應該讓你感覺到相對速度差異背後的原因。話雖如此,私鑰算法可能會很慢,公鑰算法可能會有一個有效的實現。魔鬼是在細節:-)