0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā):Universal Keystore Kit 密鑰管理服務(wù) 密鑰使用介紹及通用流程

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-07-09 11:56 ? 次閱讀

密鑰使用介紹及通用流程

為了實(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/NoPaddingIV參數(shù)必選8+
AES/GCM/NoPadding加密:Nonce參數(shù)必選 解密:Nonce、AEAD參數(shù)必選8+
RSA/ECB/NoPadding RSA/ECB/PKCS1_V1_5 RSA/ECB/OAEPOAEP填充模式支持的摘要算法:SHA256/SHA384/SHA5128+
SM4/ECB/NoPadding SM4/ECB/PKCS7 SM4/CBC/PKCS7CBC模式下 IV 參數(shù)必選, ECB模式不推薦使用9+
SM4/CTR/NoPadding SM4/CBC/NoPadding SM4/CFB/NoPaddingIV 參數(shù)必選12+
SM4/OFB/NoPaddingNonce 參數(shù)必選12+
SM2/-/NoPadding摘要算法SM311+

簽名/驗(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_5NoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE9+
DSA/SHA1 DSA/SHA224 DSA/SHA256 DSA/SHA384 DSA/SHA512-8+
DSA/NoDigestNoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE9+
ECC/SHA1 ECC/SHA224-8+
ECC/SHA256 ECC/SHA384 ECC/SHA512-8+
ECC/NoDigestNoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE9+
ED25519/NoDigestNoDigest需要指定TAG HuksKeyDigest.HUKS_DIGEST_NONE8+
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/SHA256AES/192-256AES/128/192/256 HMAC/8-1024 SM4/1288+
HKDF/SHA384AES/256AES/128/192/256 HMAC/8-1024 SM4/1288+
HKDF/SHA512AES/256AES/128/192/256 HMAC/8-1024 SM4/1288+
PBKDF2/SHA256AES/192-256AES/128/192/256 HMAC/8-1024 SM4/1288+
PBKDF2/SHA384AES/256AES/128/192/256 HMAC/8-1024 SM4/1288+
PBKDF2/SHA512AES/256AES/128/192/256 HMAC/8-1024 SM4/1288+HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

QQ截圖20240705211318.png

通用開發(fā)流程

HUKS基于密鑰會話來操作數(shù)據(jù),使用密鑰時基于以下流程:

  1. (必選)初始化密鑰會話[huks.initSession()]。 傳入密鑰別名和密鑰操作參數(shù),初始化一個密鑰會話并獲取會話句柄。其中密鑰操作參數(shù)中必須包含對應(yīng)密碼算法所必須的參數(shù),包括密碼算法、密鑰大小、密鑰目的、工作模式、填充模式、散列模式、IV、Nonce、AAD等。
  2. (可選)分段操作數(shù)據(jù)[huks.updateSession()]。 當(dāng)使用的數(shù)據(jù)過大(超過100K)或是部分密碼算法有要求時,需要對數(shù)據(jù)進(jìn)行分段操作。否則可跳過此步驟。
  3. (必選)結(jié)束密鑰會話[huks.finishSession()]。 操作最后一段數(shù)據(jù)并結(jié)束密鑰會話。

以上任一階段中發(fā)生錯誤或不需要此次密鑰操作數(shù)據(jù),均需要取消會話[huks.abortSession()],終止密鑰的使用。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 密鑰
    +關(guān)注

    關(guān)注

    1

    文章

    136

    瀏覽量

    19723
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2303

    瀏覽量

    42691
收藏 人收藏

    評論

    相關(guān)推薦

    鴻蒙開發(fā)Universal Keystore Kit密鑰管理服務(wù)簡介

    Universal Keystore Kit密鑰管理服務(wù),下述簡稱為HUKS)向業(yè)務(wù)/應(yīng)用提供
    的頭像 發(fā)表于 07-04 14:20 ?348次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b>簡介

    鴻蒙開發(fā)Universal Keystore Kit密鑰管理服務(wù) 通用密鑰庫基礎(chǔ)概念

    在使用通用密鑰庫完成應(yīng)用開發(fā)前,開發(fā)者需要了解以下相關(guān)概念,以下概念將貫穿整個開發(fā)過程。
    的頭像 發(fā)表于 07-05 10:57 ?363次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b> <b class='flag-5'>通用</b><b class='flag-5'>密鑰</b>庫基礎(chǔ)概念

    鴻蒙開發(fā)Universal Keystore Kit密鑰管理服務(wù) 密鑰生成介紹及算法規(guī)格

    當(dāng)業(yè)務(wù)需要使用HUKS生成隨機(jī)密鑰,并由HUKS進(jìn)行安全保存時,可以調(diào)用HUKS的接口生成密鑰。
    的頭像 發(fā)表于 07-04 21:50 ?288次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b> <b class='flag-5'>密鑰</b>生成<b class='flag-5'>介紹</b>及算法規(guī)格

    鴻蒙開發(fā)Universal Keystore Kit密鑰管理服務(wù) 生成密鑰ArkTS

    以生成DH密鑰為例,生成隨機(jī)密鑰。具體的場景介紹及支持的算法規(guī)格
    的頭像 發(fā)表于 07-05 15:17 ?282次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b> 生成<b class='flag-5'>密鑰</b>ArkTS

    鴻蒙開發(fā)Universal Keystore Kit密鑰管理服務(wù) 生成密鑰C、C++

    以生成ECC密鑰為例,生成隨機(jī)密鑰。具體的場景介紹及支持的算法規(guī)格。
    的頭像 發(fā)表于 07-06 10:48 ?1086次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b> 生成<b class='flag-5'>密鑰</b>C、C++

    鴻蒙開發(fā)Universal Keystore Kit密鑰管理服務(wù) 密鑰導(dǎo)入介紹及算法規(guī)格

    如果業(yè)務(wù)在HUKS外部生成密鑰(比如應(yīng)用間協(xié)商生成、服務(wù)器端生成),業(yè)務(wù)可以將密鑰導(dǎo)入到HUKS中由HUKS進(jìn)行管理。密鑰一旦導(dǎo)入到HUKS
    的頭像 發(fā)表于 07-06 10:45 ?637次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b> <b class='flag-5'>密鑰</b>導(dǎo)入<b class='flag-5'>介紹</b>及算法規(guī)格

    鴻蒙開發(fā)Universal Keystore Kit 密鑰管理服務(wù) 加密導(dǎo)入密鑰 ArkTS

    以加密導(dǎo)入ECDH密鑰對為例,涉及業(yè)務(wù)側(cè)加密密鑰的[密鑰生成]、[協(xié)商])等操作不在本示例中體現(xiàn)。
    的頭像 發(fā)表于 07-08 14:22 ?293次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b> <b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b> 加密導(dǎo)入<b class='flag-5'>密鑰</b> ArkTS

    鴻蒙開發(fā)Universal Keystore Kit 密鑰管理服務(wù) 密鑰協(xié)商ArkTS

    以協(xié)商密鑰類型為X25519 256,并密鑰僅在HUKS內(nèi)使用為例,完成密鑰協(xié)商。
    的頭像 發(fā)表于 07-10 09:22 ?274次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b> <b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b> <b class='flag-5'>密鑰</b>協(xié)商ArkTS

    鴻蒙開發(fā)Universal Keystore Kit 密鑰管理服務(wù) 密鑰協(xié)商 C、C++

    以協(xié)商密鑰類型為ECDH,并密鑰僅在HUKS內(nèi)使用為例,完成密鑰協(xié)商。具體的場景介紹及支持的算法規(guī)格,請參考[密鑰生成支持的算法]。
    的頭像 發(fā)表于 07-10 14:27 ?293次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b> <b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b> <b class='flag-5'>密鑰</b>協(xié)商 C、C++

    鴻蒙開發(fā)Universal Keystore Kit密鑰管理服務(wù) 密鑰派生介紹及算法規(guī)格

    在密碼學(xué)中,密鑰派生函數(shù)(Key derivation function,KDF)使用偽隨機(jī)函數(shù)從諸如主密碼或密碼的秘密值中派生出一個或多個密鑰。
    的頭像 發(fā)表于 07-11 16:30 ?282次閱讀

    鴻蒙開發(fā)Universal Keystore Kit密鑰管理服務(wù) 密鑰派生C、C++

    以HKDF256密鑰為例,完成密鑰派生。具體的場景介紹及支持的算法規(guī)格,請參考[密鑰生成支持的算法]。
    的頭像 發(fā)表于 07-11 14:28 ?253次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b><b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b> <b class='flag-5'>密鑰</b>派生C、C++

    鴻蒙開發(fā)Universal Keystore Kit 密鑰管理服務(wù) HMAC ArkTS

    HMAC是密鑰相關(guān)的哈希運(yùn)算消息認(rèn)證碼(Hash-based Message Authentication Code),是一種基于Hash函數(shù)和密鑰進(jìn)行消息認(rèn)證的方法。
    的頭像 發(fā)表于 07-12 18:22 ?588次閱讀

    鴻蒙開發(fā)Universal Keystore Kit密鑰管理服務(wù) 密鑰證明介紹及算法規(guī)格

    HUKS為密鑰提供合法性證明能力,主要應(yīng)用于非對稱密鑰的公鑰的證明。
    的頭像 發(fā)表于 07-15 18:28 ?641次閱讀

    鴻蒙開發(fā)Universal Keystore Kit 密鑰管理服務(wù) 獲取密鑰屬性ArkTS

    HUKS提供了接口供業(yè)務(wù)獲取指定密鑰的相關(guān)屬性。在獲取指定密鑰屬性前,需要確保已在HUKS中生成或?qū)氤志没鎯Φ?b class='flag-5'>密鑰。
    的頭像 發(fā)表于 07-17 10:46 ?280次閱讀

    鴻蒙開發(fā)Universal Keystore Kit 密鑰管理服務(wù) 獲取密鑰屬性C C++

    HUKS提供了接口供業(yè)務(wù)獲取指定密鑰的相關(guān)屬性。在獲取指定密鑰屬性前,需要確保已在HUKS中生成或?qū)氤志没鎯Φ?b class='flag-5'>密鑰。
    的頭像 發(fā)表于 07-17 09:47 ?313次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b> <b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務(wù)</b> 獲取<b class='flag-5'>密鑰</b>屬性C C++