密鑰使用介紹及通用流程
為了實現對數據機密性、完整性等保護,可使用生成/導入的密鑰,對數據進行密鑰操作,比如:
- [加密解密]
- [簽名驗簽]
- [密鑰協商]
- [密鑰派生]
- 開發前請熟悉鴻蒙開發指導文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
本章節提供了以上常用密鑰操作的示例,這部分示例均沒有設置二次身份訪問控制,如設置了密鑰訪問控制請參考[密鑰訪問控制]用法。
加密/解密介紹及算法規格
在HUKS中已經有密鑰,需要對一段數據加密或是解密,均可以使用HUKS完成加密/解密操作。
支持的算法
以下為密鑰加密/解密支持的規格說明。
面向OpenHarmony的廠商適配密鑰管理服務規格分為必選規格和可選規格。必選規格為所有廠商均支持的算法規格。而對于可選規格,廠商將基于實際情況決定是否實現,如需使用,請查閱具體廠商提供的說明,確保規格支持再使用。
建議開發者使用必選規格開發應用,可保證全平臺兼容。
算法/分組模式/填充模式 | 備注 | API級別 | 是否必選規格 |
---|---|---|---|
AES/ECB/NoPadding AES/ECB/PKCS7 | - | 8+ | 否 |
AES/CBC/NoPadding AES/CBC/PKCS7 AES/CTR/NoPadding | IV參數必選 | 8+ | 是 |
AES/GCM/NoPadding | 加密:Nonce參數必選 解密:Nonce、AEAD參數必選 | 8+ | 是 |
RSA/ECB/NoPadding RSA/ECB/PKCS1_V1_5 RSA/ECB/OAEP | OAEP填充模式支持的摘要算法:SHA256/SHA384/SHA512 | 8+ | 是 |
SM4/ECB/NoPadding SM4/ECB/PKCS7 SM4/CBC/PKCS7 | CBC模式下 IV 參數必選, ECB模式不推薦使用 | 9+ | 否 |
SM4/CTR/NoPadding SM4/CBC/NoPadding SM4/CFB/NoPadding | IV 參數必選 | 12+ | 是 |
SM4/OFB/NoPadding | Nonce 參數必選 | 12+ | 是 |
SM2/-/NoPadding | 摘要算法SM3 | 11+ | 是 |
簽名/驗簽介紹及算法規格
為實現數據完整性保護和防抵賴,可使用生成/導入的密鑰,對數據進行簽名驗簽操作。
支持的算法
以下為密鑰簽名/驗簽支持的規格說明。
面向OpenHarmony的廠商適配密鑰管理服務規格分為必選規格和可選規格。必選規格為所有廠商均支持的算法規格。而對于可選規格,廠商將基于實際情況決定是否實現,如需使用,請查閱具體廠商提供的說明,確保規格支持再使用。
建議開發者使用必選規格開發應用,可保證全平臺兼容。
算法/摘要算法/填充模式 | 備注 | API級別 | 是否必選規格 |
---|---|---|---|
RSA/MD5/PKCS1_V1_5 RSA/SHA1/PKCS1_V1_5 RSA/SHA224/PKCS1_V1_5 RSA/SHA224/PSS | - | 8+ | 否 |
RSA/SHA256/PKCS1_V1_5 RSA/SHA384/PKCS1_V1_5 RSA/SHA512/PKCS1_V1_5 RSA/SHA256/PSS RSA/SHA384/PSS RSA/SHA512/PSS | - | 8+ | 是 |
RSA/NoDigest/PKCS1_V1_5 | NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE | 9+ | 否 |
DSA/SHA1 DSA/SHA224 DSA/SHA256 DSA/SHA384 DSA/SHA512 | - | 8+ | 否 |
DSA/NoDigest | NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE | 9+ | 否 |
ECC/SHA1 ECC/SHA224 | - | 8+ | 否 |
ECC/SHA256 ECC/SHA384 ECC/SHA512 | - | 8+ | 是 |
ECC/NoDigest | NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE | 9+ | 否 |
ED25519/NoDigest | NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE | 8+ | 是 |
SM2/SM3 | - | 9+ | 是 |
密鑰協商介紹及算法規格
為了避免惡意第三方獲取到保密信息,密鑰本身是不可以直接在設備間傳輸的。一般情況下,會采取密鑰協商的方式,安全地在雙方(或多方)間共享密鑰。密鑰協商只會傳輸密鑰的公鑰部分,私鑰仍存留在設備內,以保護數據的安全性和機密性。
兩臺設備間進行密鑰協商,雙方各準備一個非對稱密鑰,并互換非對稱密鑰的公鑰,以對端公鑰與己端私鑰協商出一個密鑰,該密鑰在兩臺設備相同。
支持的算法
以下為密鑰協商支持的規格說明。
面向OpenHarmony的廠商適配密鑰管理服務規格分為必選規格和可選規格。必選規格為所有廠商均支持的算法規格。而對于可選規格,廠商將基于實際情況決定是否實現,如需使用,請查閱具體廠商提供的說明,確保規格支持再使用。
建議開發者使用必選規格開發應用,可保證全平臺兼容。
算法 | 備注 | API級別 | 是否必選規格 |
---|---|---|---|
ECDH | 協商密鑰類型為ECC類型密鑰 | 8+ | 是 |
DH | - | 8+ | 是 |
X25519 | - | 8+ | 是 |
密鑰派生介紹及算法規格
在密碼學中,密鑰派生函數(Key derivation function,KDF)使用偽隨機函數從諸如主密碼或密碼的秘密值中派生出一個或多個密鑰。
支持的算法
以下為密鑰派生支持的規格說明。
面向OpenHarmony的廠商適配密鑰管理服務規格分為必選規格和可選規格。必選規格為所有廠商均支持的算法規格。而對于可選規格,廠商將基于實際情況決定是否實現,如需使用,請查閱具體廠商提供的說明,確保規格支持再使用。
建議開發者使用必選規格開發應用,可保證全平臺兼容。
派生密鑰是業務基于三段式得到密鑰會話結果,業務可決定派生密鑰是否由HUKS管理(即密鑰不出TEE)亦或是業務獨立管理。
算法/摘要 | 派生密鑰的算法/長度 | 派生結果密鑰可用算法/長度 | API級別 | 是否必選規格 |
---|---|---|---|---|
HKDF/SHA256 | AES/192-256 | AES/128/192/256 HMAC/8-1024 SM4/128 | 8+ | 是 |
HKDF/SHA384 | AES/256 | AES/128/192/256 HMAC/8-1024 SM4/128 | 8+ | 是 |
HKDF/SHA512 | AES/256 | AES/128/192/256 HMAC/8-1024 SM4/128 | 8+ | 是 |
PBKDF2/SHA256 | AES/192-256 | AES/128/192/256 HMAC/8-1024 SM4/128 | 8+ | 是 |
PBKDF2/SHA384 | AES/256 | AES/128/192/256 HMAC/8-1024 SM4/128 | 8+ | 是 |
PBKDF2/SHA512 | AES/256 | AES/128/192/256 HMAC/8-1024 SM4/128 | 8+ | 是HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
通用開發流程
HUKS基于密鑰會話來操作數據,使用密鑰時基于以下流程:
- (必選)初始化密鑰會話[huks.initSession()]。 傳入密鑰別名和密鑰操作參數,初始化一個密鑰會話并獲取會話句柄。其中密鑰操作參數中必須包含對應密碼算法所必須的參數,包括密碼算法、密鑰大小、密鑰目的、工作模式、填充模式、散列模式、IV、Nonce、AAD等。
- (可選)分段操作數據[huks.updateSession()]。 當使用的數據過大(超過100K)或是部分密碼算法有要求時,需要對數據進行分段操作。否則可跳過此步驟。
- (必選)結束密鑰會話[huks.finishSession()]。 操作最后一段數據并結束密鑰會話。
以上任一階段中發生錯誤或不需要此次密鑰操作數據,均需要取消會話[huks.abortSession()],終止密鑰的使用。
審核編輯 黃宇
-
密鑰
+關注
關注
1文章
146瀏覽量
20241 -
鴻蒙
+關注
關注
59文章
2595瀏覽量
43980
發布評論請先 登錄
鴻蒙開發:Universal Keystore Kit密鑰管理服務 密鑰導入介紹及算法規格

鴻蒙開發:Universal Keystore Kit 密鑰管理服務 密鑰協商 C、C++

鴻蒙開發:Universal Keystore Kit密鑰管理服務 密鑰派生介紹及算法規格
鴻蒙開發:Universal Keystore Kit 密鑰管理服務 HMAC ArkTS
鴻蒙開發:Universal Keystore Kit密鑰管理服務 密鑰證明介紹及算法規格
鴻蒙開發:Universal Keystore Kit 密鑰管理服務 獲取密鑰屬性ArkTS
鴻蒙開發:Universal Keystore Kit 密鑰管理服務 獲取密鑰屬性C C++

評論