相比對稱加密,非對稱密鑰通常用于在信任程度不對等的系統(tǒng)之間,實現(xiàn)數(shù)字簽名驗簽或者加密傳遞敏感信息。
非對稱密鑰由一對公鑰和私鑰組成,他們在密碼學上互相關聯(lián),其中的公鑰可以被分發(fā)給任何人,而私鑰必須被安全的保護起來,只有受信任者可以使用。阿里云支持主流的非對稱密鑰算法并且提供足夠的安全強度,保證數(shù)據(jù)加密和數(shù)字簽名的安全性。
KMS支持對非對稱密鑰類型的用戶主密鑰生成證書簽名請求CSR(Certificate Signing Request)文件,證書申請者提交CSR給證書頒發(fā)機構后,證書頒發(fā)機構使用其CA私鑰為用戶簽發(fā)數(shù)字證書。簽發(fā)的數(shù)字證書可以用于安全電子郵件、安全終端保護、代碼簽名保護、可信網(wǎng)站服務、身份授權管理等。
非對稱密鑰的類型
算法 | 密鑰規(guī)格 | 說明 | 用途 |
---|---|---|---|
RSA |
|
RSA非對稱密碼 |
|
ECC |
|
橢圓曲線密碼(Elliptic Curve Cryptography) | 數(shù)字簽名 |
SM2 | EC_SM2 | 標準GBT32918定義的橢圓曲線密碼 |
|
數(shù)據(jù)加密
- 信息接收者將加密公鑰分發(fā)給信息傳送者。
- 信息傳送者使用公鑰對敏感信息進行加密保護。
- 信息傳送者將敏感信息的密文傳遞給信息接收者。
- 信息接收者使用私鑰將敏感信息的密文解密。
由于解密的私鑰只有信息接收者可以使用,因此可以確保敏感信息的明文在傳遞過程中不被惡意者截獲。這種敏感信息傳遞的方式,被廣泛用于各類密鑰交換場景。例如:在TLS中交換會話密鑰、在不同的密碼機之間導入導出加密密鑰。
更多信息,請參見非對稱數(shù)據(jù)加解密。
數(shù)字簽名
- 驗證數(shù)據(jù)的完整性(integrity):如果數(shù)據(jù)和簽名不匹配,數(shù)據(jù)可能受到了篡改。
- 驗證消息的真實性(authenticity):如果消息和簽名不匹配,消息傳送者不是真實持有私鑰的用戶。
- 為簽名提供不可抵賴性(non-repudiation):如果數(shù)據(jù)和簽名能夠匹配,簽名者不可以否認此簽名。
- 簽名者將驗簽公鑰分發(fā)給消息接收者。
- 簽名者使用簽名私鑰,對數(shù)據(jù)產(chǎn)生簽名。
- 簽名者將數(shù)據(jù)以及簽名傳遞給消息接收者。
- 消息接收者獲得數(shù)據(jù)和簽名后,使用公鑰針對數(shù)據(jù)驗證簽名的合法性。
數(shù)字簽名被廣泛用于數(shù)據(jù)防篡改、身份認證等相關技術領域。
- 案例1:數(shù)字簽名用于對二進制代碼提供完整性保護,代碼執(zhí)行者可以驗證代碼未被篡改,以提供可信的執(zhí)行環(huán)境。
- 案例2:數(shù)字證書系統(tǒng)中,證書機構(CA)對頒發(fā)的數(shù)字證書提供簽名,證明數(shù)字證書的主體信息、公私鑰信息、密鑰用途、有效期、簽發(fā)者等信息。證書私鑰持有者使用私鑰對消息進行簽名,消息接收者使用證書中包含的公鑰對消息簽名進行驗證,同時使用證書簽發(fā)者的公鑰,驗證證書本身的合法性。
更多信息,請參見非對稱數(shù)字簽名。
密鑰版本
由于公私鑰使用場景的特殊性,KMS不支持對非對稱的用戶主密鑰進行自動輪轉(zhuǎn)。您可以調(diào)用CreateKeyVersion接口,在指定用戶主密鑰中創(chuàng)建新的密鑰版本,生成全新的一對公鑰和私鑰。如果您使用新的版本進行數(shù)字簽名或者數(shù)據(jù)加密,則需要重新分發(fā)新版本的公鑰。
除此之外,和對稱類型的用戶主密鑰不同,非對稱的用戶主密鑰沒有主版本(PrimaryKeyVersion)的概念,因此使用非對稱密碼運算的接口除需指定用戶主密鑰標志符(或別名)之外,還需指定密鑰版本。
公鑰運算的方式
大多數(shù)情況下,公鑰加密、公鑰驗簽的操作,都可以調(diào)用GetPublicKey接口獲取公鑰,之后分發(fā)給公鑰使用者。使用者在業(yè)務端通過OpenSSL、Java JCE等常用的密碼運算庫進行本地計算。
KMS也提供公鑰運算的接口AsymmetricEncrypt和AsymmetricVerify,滿足您的業(yè)務需求。和在業(yè)務端使用公鑰本地運算相比,調(diào)用KMS的公鑰運算接口可以幫助您更方便的記錄調(diào)用日志,或者通過訪問控制服務對公鑰的使用場景進行一些限制,滿足您的特定需求。
私鑰運算的方式
您僅能通過KMS提供的私鑰運算的接口AsymmetricDecrypt和AsymmetricSign,來使用私鑰進行數(shù)據(jù)解密或者數(shù)字簽名。