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