2012-03-27 54 views
4

驗證生成的散列需要將已知的驗證密鑰。所以它是對稱的。什麼是除SSL之外的模擬器非對稱解決方案?因爲我希望簽名像md5哈希一樣小。並且生成和驗證過程很輕鬆。我正在瀏覽Rabin的簽名算法,但找不到任何實現或僞代碼。不對稱HMAC

回答

3

最小的非對稱簽名來自elliptic curce密碼系統就像ECDSA。 ECDSA簽名方案要求籤名大約是具有同等安全性的對稱密碼密鑰長度的四倍。因此,在安全性上與128位AES相當的方案將具有512位的簽名。這就是現在的技術水平 - 具有較小簽名但具有相同或更高安全性的方案並不爲人所知。

如果您不需要安全性比較高,你可以使用192位的曲線,這將導致384位簽名。您可以下降到320位特徵碼(160位曲線),並且仍具有與80位對稱密碼相媲美的安全性。如果您真的不特別關心安全性,則可以使用112位曲線,提供224位的簽名,這些簽名幾乎與DES一樣難以破解。

下面的曲線是什麼,我會建議爲每個安全級別:

SecP112R1:224位簽名,56位安全級別
SecP128R1:256位簽名,64位安全水平
SecP160K1:320位簽名,80位的安全級別
SecP192K1:386位簽名,96位的安全級別
SecP224K1:448位簽名,112位的安全級別
SecP256K1:512位簽名,128位的安全級別

對於每個曲線,私鑰是大小爲曲線相同。公鑰(壓縮形式)比曲線大小大一點。簽名是曲線大小的兩倍。因此,對於SecP256K1,私鑰爲256位,公鑰爲257位,簽名爲512位。這些是原始二進制值的最小大小。

注意事項:我認爲160位曲線是任何安全因素的最小值。如果在小時間範圍內生成,使用並丟棄密鑰,較小的曲線可能是合適的。爲了長期安全性,應該使用256位曲線。整個系統在被依賴之前應由專家進行評估。

+0

你能提供任何實施鏈接嗎?其主要用於什麼? – 2012-03-27 20:22:38

+0

[OpenSSL](http://www.openssl.org/)與[Bouncy Castle](http://www.bouncycastle.org/)一樣具有ECDSA的實現。只要需要具有儘可能最小位長的簽名方案,就使用ECDSA。 (例如,[比特幣(http://bitcoin.stackexchange.com/)交易由SecP256K1 ECDSA簽名擔保。) – 2012-03-27 20:35:55

+0

你能幫我多一點?我正在用'openssl ecparam -name secp112r1 -genkey'生成一個私鑰,現在我需要用什麼命令生成一個公鑰?我不太瞭解openssl命令。 – 2012-03-28 07:57:37