1. 程式人生 > 其它 >安全加解密引擎基礎(PKE DSA)

安全加解密引擎基礎(PKE DSA)

1 基本概念 

 

1.2 DSA

DSA(Digital Signature Algorithm,數字簽名演算法)是用於數字簽名的聯邦資訊處理標準。它的安全性取決於離散的對數問題。與RSA相比,DSA的簽名生成速度更快,但驗證速度較慢。如果使用錯誤的數字生成器,可能會破壞安全性。

DSA是另一種公開金鑰演算法,它不能用作加密,只用作數字簽名。DSA使用公開金鑰,為接受者驗證資料的完整性和資料傳送者的身份。它也可用於由第三方去確定簽名和所籤資料的真實性。DSA演算法的安全性基於解離散對數的困難性,這類簽字標準具有較大的相容性和適用性,成為網路安全體系的基本構件之一。

1.3 ECC

Elliptic Curves Cryptography,橢圓曲線密碼學(英語:Elliptic curve cryptography,縮寫為ECC),一種建立

公開金鑰加密演算法,基於橢圓曲線數學。橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的。

ECC的主要優勢是在某些情況下它比其他的方法使用更小的金鑰(比如RSA加密演算法)提供相當的或更高等級的安全。ECC的另一個優勢是可以定義群之間的雙線性對映,基於Weil對或是Tate對;雙線性對映已經在密碼學中發現了大量的應用,例如基於身份的加密。 其缺點是同長度金鑰下加密和解密操作的實現比其他機制花費的時間長,但由於可以使用更短的金鑰達到同級的安全程度,所以同級安全程度下速度相對更快。一般認為160位元的橢圓曲線金鑰提供的安全強度與1024位元RSA金鑰相當。
更多參考《橢圓曲線密碼學_百度百科 (baidu.com)》。

1.3.1 ECC引數

ECC的引數可以有很多,通過openssl ecparam -list_curves檢視:

...
  secp160r1 : SECG curve over a 160 bit prime field
  secp224r1 : NIST/SECG curve over a 224 bit prime field
  secp384r1 : NIST/SECG curve over a 384 bit prime field
  secp521r1 : NIST/SECG curve over a 521 bit prime field
  brainpoolP160r1: RFC 5639 curve over a 160 bit prime field
  brainpoolP192r1: RFC 5639 curve over a 192 bit prime field
  brainpoolP224r1: RFC 5639 curve over a 224 bit prime field
  brainpoolP256r1: RFC 5639 curve over a 256 bit prime field
  brainpoolP384r1: RFC 5639 curve over a 384 bit prime field
  brainpoolP512r1: RFC 5639 curve over a 512 bit prime field
  SM2       : SM2 curve over a 256 bit prime field

更多參考:

SECG | Standard curve database (neuromancer.sk)》-SEC 2: Recommended Elliptic Curve Domain Parameters version 2.0 January 27, 2010

SEC 2, ver. 2.0 (secg.org)》-SEC 2: Recommended Elliptic Curve Domain Parameters

1.4 ECDH

橢圓曲線迪菲-赫爾曼金鑰交換(英語:Elliptic Curve Diffie–Hellman key Exchange,縮寫為ECDH),一種匿名的金鑰合意協議(Key-agreement protocol)。

在這個協定下,雙方通過迪菲-赫爾曼金鑰交換演算法,利用由橢圓曲線加密建立的公鑰與私鑰對,在一個不安全的通道中,建立起安全的共有加密資料。這是迪菲-赫爾曼金鑰交換的變種,採用橢圓曲線加密來加強安全性。

ECDH全稱是橢圓曲線迪菲-赫爾曼祕鑰交換(Elliptic Curve Diffie–Hellman key Exchange),主要是用來在一個不安全的通道中建立起安全的共有加密資料,一般來說交換的都是私鑰,這個金鑰一般作為“對稱加密”的金鑰而被雙方在後續資料傳輸中使用。ECDH是ECC演算法和DH結合使用,用於金鑰磋商,這個金鑰交換演算法稱為ECDH。交換雙方可以在不共享任何祕密的情況下協商出一個金鑰。ECC是建立在基於橢圓曲線的離散對數問題上的密碼體制。

1.5 ECDSA

ECDSA(橢圓曲線數字簽名演算法)是DSA(數字簽名演算法)的橢圓曲線實現。橢圓曲線密碼術能夠以較小的金鑰提供與RSA相對相同的安全級別。它還具有DSA對不良RNG敏感的缺點。

1.6 EdDSA

EdDSA(愛德華茲曲線數字簽名演算法)是一種使用基於扭曲愛德華茲曲線的Schnorr簽名變體的數字簽名方案。簽名建立在EdDSA中是確定性的,其安全性是基於某些離散對數問題的難處理性,因此它比DSA和ECDSA更安全,後者要求每個簽名都具有高質量的隨機性。

 

3 Python關於RSA、ECDH、ECDSA的使用

 

 

ecdsa · PyPI