如何使用密鑰實現數據加解密?
KMS提供了REST(Representational State Transfer)風格API,支持通過HTTPS請求調用。用戶可使用提供的API實現加解密運算等操作。下面以使用用戶主密鑰進行數據加解密為例介紹實現過程:
加密流程(以加密證書為例):
1.通過KMS控制臺或者調用CreateKey接口,創建一個用戶主密鑰(CMK);
2.調用KMS服務的Encrypt接口,將明文證書加密為密文證書;
3.將密文證書部署在服務器上;
4.當服務器啟動需要使用證書時,調用KMS服務的Decrypt接口將密文證書解密為明文證書。
如何導入外部自帶密鑰?
創建密鑰后,首先進入密鑰詳情頁獲取導入主密鑰材料的參數,參數包括加密公鑰及導入令牌,用戶使用獲取到的公鑰加密自帶密鑰材料,然后在控制臺密鑰詳情頁,根據頁面提示上傳自帶密鑰材料即可。
從KMS獲取到的導入令牌與加密密鑰材料的公鑰具有綁定關系,一個令牌只能為其生成時指定的主密鑰導入密鑰材料。導入令牌的有效期為24小時,在有效期內可以重復使用,失效以后需要獲取新的導入令牌和加密公鑰。
如何刪除密鑰?
KMS不支持立即刪除,僅支持計劃刪除,即用戶需設置預刪除周期(自定義7~30天),系統會在到期時自動刪除密鑰,預刪除期間密鑰仍托管至系統中,但無法被調用實現加解密等相關功能。
設置密鑰計劃刪除后,密鑰將不再產生費用。若您在預刪除期間發現密鑰仍需繼續使用,則可以選擇取消計劃刪除,使密鑰重新變為可用。
為什么KMS不支持立即刪除密鑰?
由于密鑰刪除后不可恢復,一旦刪除密鑰,所有使用該密鑰加密的數據均無法解密,因此刪除密鑰的操作需要非常謹慎,KMS通過計劃刪除的機制,即執行計劃刪除操作后,密鑰狀態變為待刪除,密鑰不會立即刪除,系統會根據用戶設置的預刪除周期推遲刪除密鑰。到達執行時間點,系統才會真正刪除密鑰,在此之前用戶均可以取消刪除計劃。KMS通過這種方式來減少用戶誤操作所帶來的損失。
處于待刪除狀態的密鑰不可用,無法用于加解密、產生數據密鑰等。
如果您不再使用密鑰,推薦您先禁用密鑰,確保不影響您的業務后再通過計劃刪除密鑰來進行刪除。為避免誤刪,您可以開啟刪除保護功能。
KMS是否支持國密算法?
支持。KMS支持創建SM2、SM4類型的密鑰,適用于數據加解密、簽名驗簽等場景。
| 密碼算法大類 | 密碼算法子類 | 保護級別 | 是否支持加解密 | 是否支持簽名驗簽 |
|---|---|---|---|---|
| 對稱密鑰 | AES_256 | Software HSM | 支持 | 不支持 |
| SM4 | HSM | 支持 | 不支持 | |
| 非對稱密鑰 | RSA_2048 | Software HSM | 支持 | 支持 |
| SM2 | HSM | 支持 | 支持 |
軟件保護級別和硬件保護級別的區別是什么?
軟件保護級別的密鑰通過軟件模塊進行保護,其根密鑰通過公鑰加密形成密文存儲在軟件文件系統中;而用于解密根密鑰密文的私鑰,通過對稱加密形成密文存儲在文件系統中的不同位置;同時對稱密鑰也存儲在不同位置,進而增加系統根密鑰的安全性;
硬件保護級別的密鑰通過專用硬件保護密鑰,硬件根密鑰需要存儲密碼機的內部密鑰索引,通過索引確認根密鑰;所有涉及根密鑰使用的過程均在密碼機內部完成,包括加密解密等。
密鑰自動輪轉周期的可設置范圍是什么?
對稱密鑰支持設置自動輪轉周期,周期最短為7天,最長為730天(2年)。
對稱密鑰支持設置自動輪轉,系統根據自動輪轉周期自動生成新的密鑰版本,并將最新的版本設置為主版本,原密鑰版本作為非主版本保存在KMS中,KMS不會刪除或禁用非主版本,它們需要被用作解密數據。
非對稱密鑰是否支持自動輪轉?
非對稱密鑰不支持設置自動輪轉,可以手動創建新的版本。
由于公私鑰使用場景的特殊性,KMS不支持對非對稱的用戶主密鑰進行自動輪轉。可在指定用戶主密鑰中人工創建新的密鑰版本,生成全新的一對公鑰和私鑰。
除此之外,和對稱類型的用戶主密鑰不同,非對稱的用于主密鑰沒有主版本(PrimaryKeyVersion)的概念,因此使用非對稱密碼運算的接口除需指定用戶主密鑰標志符(或別名)之外,還需指定密鑰版本。
什么情況下需要導入外部密鑰?
當用戶擁有自己的密鑰材料,需要繼續使用該密鑰材料實現數據加解密,比如用戶需要將本地加密數據遷移到云上時,云上云下共用同一個密鑰材料,此時可以將密鑰材料導入至KMS中進行托管,便于后續使用。
當您選擇密鑰材料來源為外部,使用您自己導入的密鑰材料時,需要注意以下幾點:
請確保您使用了符合安全要求的隨機源生成密鑰材料;
在使用導入密鑰時,需要對自己密鑰材料的可靠性負責;
請保存密鑰材料的原始備份,以便在意外刪除密鑰材料時,能及時將備份的密鑰材料重新導入KMS。
什么類型的密鑰支持導入外部密鑰材料?
當前AES_256類型的對稱密鑰,支持導入外部密鑰材料。
您可通過控制臺創建密鑰,選擇AES_256類型的對稱密鑰后,密鑰材料來源選項選擇 外部 ,并勾選“我了解使用外部密鑰材料的方法和意義”,點擊確定即可完成密鑰創建;
密鑰創建成功后,您需要進入密鑰詳情頁,進行密鑰材料導入操作。導入密鑰材料前需要先獲取導入材料參數,包括加密公鑰、導入令牌,具體操作步驟可參考用戶指南中的相關章節。
外部導入的密鑰材料是否支持自動輪轉?
不支持。外部導入的密鑰材料不支持自動輪轉,無密鑰版本概念。
導入密鑰材料時,可以設置可以設置密鑰材料過期時間,密鑰材料過期后,KMS將自動刪除密鑰材料,但該主密鑰及其元數據仍然保留。
外部導入的密鑰材料支持手動刪除,但該主密鑰及其元數據仍然保留。
當密鑰材料被誤刪或已經過期導致密鑰不可用,如何處理使密鑰恢復可用?
密鑰材料被刪除或過期時,可以再次導入相同的密鑰材料,成功后密鑰將恢復可用。您需要自行備份密鑰材料,以便密鑰材料失效或誤刪除時進行重新導入。
用戶主密鑰CMK與密鑰材料具有關聯性,當您將密鑰材料導入某個CMK時,該CMK與該密鑰材料永久關聯,不能將其他密鑰材料導入該CMK中,即便密鑰材料已經過期或者被刪除。
當用戶主密鑰的密鑰材料刪除或過期后,是否可以導入其他的密鑰材料到該主密鑰中?
不可以。用戶主密鑰包含密鑰元數據(密鑰ID、密鑰別名、描述、密鑰狀態與創建日期)和用于加解密數據的密鑰材料。
將密鑰材料成功導入主密鑰后,該主密鑰與密鑰材料永久關聯,不能再將其他密鑰材料導入該主密鑰中。
具備相同密鑰材料的不同用戶主密鑰,是否可以相互加解密數據?
不可以。用戶主密鑰包含密鑰元數據(密鑰ID、密鑰別名、描述、密鑰狀態與創建日期)和用于加解密數據的密鑰材料。
用戶主密鑰具有唯一性,使用主密鑰加密的數據,只能用相同的主密鑰解密。即使其他主密鑰具有相同的密鑰材料,也無法解密該主密鑰加密的數據。
用戶主密鑰別名的作用是什么?
為密鑰創建別名方便用戶管理密鑰,一個別名對應唯一的用戶主密鑰。在通過openAPI調用KMS服務接口時,參數中的密鑰ID可以用別名代替。
別名必須依附于用戶主密鑰存在,其特點如下:
一個用戶主密鑰下可以綁定多個別名,刪除別名不會刪除其關聯的用戶主密鑰。
別名不可修改。您可以通過為一個用戶主密鑰創建新的別名,并且刪除舊的別名來達到修改主密鑰別名的目的。
可以調用UpdateAlias接口更改別名綁定的用戶主密鑰,而不會影響用戶主密鑰。
默認主密鑰的別名不能刪除和添加。
用戶主密鑰與別名的對應關系是什么?
別名作為用戶主密鑰的可選標識,必須與密鑰關聯。同一個賬戶在一個地域中的別名具有唯一性。
一個用戶主密鑰可以綁定多個別名,同一個別名只能指向唯一的用戶主密鑰。
默認主密鑰的別名不支持刪除、更改。
別名支持修改嗎?
別名不支持直接修改,您可以通過創建新的別名,并刪除舊的別名來達到修改別名的目的。
為密鑰創建新的別名時,不會影響已有的其他別名。刪除舊的別名前,請確保該別名已不再使用,否則可能會導致數據加密失敗。
默認主密鑰的別名不支持刪除和添加。
刪除別名是否會影響用戶主密鑰的使用?
別名是用戶主密鑰的可選標識,支持刪除別名,刪除別名不會刪除其關聯的用戶主密鑰。
創建別名的作用是可以在調用API接口時,使用別名來代替密鑰ID。因此刪除如果仍在使用別名作為api調用參數時,刪除別名會導致服務調用失敗,請確保預刪除的別名已不再使用。
同一資源池內的用戶主密鑰,是否可以設置相同的別名?
不可以。同一個賬戶在同一個地域中的別名具有唯一性,每個別名只能指向同地域的一個用戶主密鑰,但是每個用戶主密鑰可以綁定多個別名。
相同的別名可以綁定不同資源池內的用戶主密鑰。
為用戶主密鑰設置自動輪轉的目的是什么?
KMS提供密鑰輪轉功能,支持通過密鑰版本化和定期輪轉來加強密鑰使用的安全性,有效提升業務數據的安全性。
通過密鑰輪轉,可以減少每個密鑰版本加密的數據量,降低沒密碼分析攻擊風險;
密鑰輪轉可以減小破解密鑰的時間窗口。應對密碼分析攻擊風險的有效實踐是在定期輪轉密鑰的基礎上,將舊密鑰加密的密文數據使用新版本的密鑰重新加密,這意味著如果想要破解密碼拿到明文數據,需要在密鑰輪轉周期內完成密碼破解。密鑰輪轉周期即為密鑰破解時間窗口,該窗口越小,破解難度越大。
密鑰經過輪轉產生新的密鑰版本后,是否會影響舊數據的解密?
不影響。密鑰輪轉產生新的版本后,加密數據時將使用新的版本;同時舊版本不會刪除或禁用,在解密舊數據時,需要使用舊版本密鑰完成。
對稱密鑰版本分為主版本和非主版本。主版本是CMK的活躍加密密鑰(Active Encryption Key)。每個CMK在任何時間點上有且僅有一個主版本。調用GenerateDataKey、Encrypt等加密API接口時,KMS使用指定CMK的主版本對明文進行加密。非主版本是CMK的非活躍加密密鑰(Inactive Encryption Key)。每個CMK可以有零到多個非主版本。非主版本歷史上曾經是主版本,在當時被用作活躍加密密鑰。密鑰輪轉產生新的主版本后,KMS不會刪除或禁用非主版本,它們需要被用作解密數據。
使用密鑰進行加密數據時,是否需要指定密鑰版本?
使用密鑰加密是否需要指定密鑰版本與密鑰類型有關。
調用對稱密鑰加密數據時,不需要指定密鑰版本,系統會默認使用最新的主版本進行數據加密。
調用非對稱密鑰加密數據時,除了要指定主密鑰外,還需要指定密鑰版本。