首页 > 其他分享 >HarmonyOS Next加密安全的双剑合璧:Device Certificate Kit与Crypto Architecture Kit的结合

HarmonyOS Next加密安全的双剑合璧:Device Certificate Kit与Crypto Architecture Kit的结合

时间:2024-11-10 09:31:30浏览次数:1  
标签:加密 Certificate Crypto Kit huks let Device

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。

在华为鸿蒙HarmonyOS的安全世界里,Device Certificate Kit(设备证书服务)和Crypto Architecture Kit(加解密算法框架服务)就像是一对默契十足的搭档,共同为确保加密安全而努力。今天,咱们就来深入研究一下它们是如何协同工作,为我们的设备和应用保驾护航的。

首先,让我们了解一下这两个Kit的协同工作机制。Device Certificate Kit主要负责证书的管理和验证,而Crypto Architecture Kit则专注于加解密算法的实现。当我们需要进行设备真实性验证时,Device Certificate Kit可以利用其证书管理功能,获取设备的证书信息,其中就包含了公钥。然后,将这个公钥传递给Crypto Architecture Kit,由它来进行后续的加密操作。这就好比一个负责提供钥匙(公钥),另一个则利用这把钥匙来锁门(加密)或开门(解密),两者相辅相成,缺一不可。

接下来,我们看看如何生成和获取公钥,并用于设备真实性验证。假设我们在一个需要设备认证的应用场景中,首先要使用Device Certificate Kit来创建一个应用公私钥对(包含应用公钥和应用私钥),这里以RSA或EC算法为例。示例代码如下:

import { huks } from '@kit.UniversalKeystoreKit';
import { BusinessError } from '@kit.BasicServicesKit';

let keyAlias ='serviceKey'; 

function GetGenerateProperties() {
    let properties: Array<huks.HuksParam> = new Array();
    let index = 0;
    properties[index++] = {
        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
        value: huks.HuksKeyAlg.HUKS_ALG_ECC
    };
    properties[index++] = {
        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
        value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
    };
    properties[index++] = {
        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
        value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
            huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
    };
    properties[index++] = {
        tag: huks.HuksTag.HUKS_TAG_DIGEST,
        value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
    }
    return properties;
}

async function GenerateKey(keyAlias: string) {
    let genProperties = GetGenerateProperties();
    let options: huks.HuksOptions = {
        properties: genProperties
    }
    await huks.generateKeyItem(keyAlias, options)
      .then(() => {
            console.info(`promise: generate Key success.`);
        }).catch((err: BusinessError) => {
            console.error(`promise: generate Key failed, error: ` + err.message);
        })
}

在生成公私钥对后,我们可以通过Device Certificate Kit获取应用公钥,并将其用于设备真实性验证。比如,在与服务器通信时,将公钥发送给服务器,服务器可以利用公钥对设备发送的数据进行验证,确保数据来自真实的设备。

然后,我们来了解使用Crypto Architecture Kit进行安全加密的流程。假设我们要对一段数据进行加密,首先需要初始化加密算法,然后传入数据进行加密操作,最后获取加密结果。以下是一个简单的示例,使用HMAC算法进行消息认证码计算(这里只是示例,实际应用中可根据需求选择合适的加密算法):

import { cryptoFramework } from '@kit.CryptoArchitectureKit';
import { buffer } from '@kit.ArkTS';

async function doHmac() {
    // 把字符串按utf - 8解码为Uint8Array,使用固定的128位的密钥,即16字节
    let keyData = new Uint8Array(buffer.from("12345678abcdefgh", 'utf - 8').buffer);
    let key = await genSymKeyByData(keyData);
    let macAlgName = 'SHA256'; 
    let message = 'hmacTestMessgae'; 
    let mac = cryptoFramework.createMac(macAlgName);
    await mac.init(key);
    // 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制
    await mac.update({ data: new Uint8Array(buffer.from(message, 'utf - 8').buffer) });
    let macResult = await mac.doFinal();
    console.info('HMAC result:' + macResult.data);
    let macLen = mac.getMacLength();
    console.info('HMAC len:' + macLen);
}

为了更清晰地展示Device Certificate Kit与Crypto Architecture Kit的功能区别和联系,我们来看一个模块功能对比表格:

功能模块 Device Certificate Kit Crypto Architecture Kit
主要功能 证书管理(安装、存储、使用、销毁)、证书验证、证书链校验等。 加解密算法实现(如消息认证码计算、消息摘要计算、对称和非对称加密等)。
数据处理对象 证书及相关信息(如证书链、证书扩展域段、证书吊销列表等)。 原始数据(如要加密的消息、要计算摘要的数据等)。
安全目标侧重点 确保设备身份真实性、证书合法性和信任链完整性。 保障数据在传输和存储过程中的机密性、完整性和真实性。

通过这个表格,我们可以清楚地看到两个Kit在功能上的差异和互补之处。

总之,Device Certificate Kit和Crypto Architecture Kit的联动为鸿蒙系统提供了强大的加密安全保障。它们就像两个守护天使,一个守护着设备的身份认证,一个守护着数据的加密安全。开发者在实际应用中,要充分理解和利用它们的协同工作机制,根据具体需求合理调用相关功能,确保应用的安全性。就像组建一支篮球队,每个球员都有自己的位置和职责,只有相互配合,才能赢得比赛。希望大家在鸿蒙开发的道路上,能够巧妙地运用这两个工具,打造出坚不可摧的安全应用。如果在使用过程中遇到问题,不要气馁,多思考、多尝试,相信你一定能够攻克难题。加油哦,各位开发者小伙伴们!

标签:加密,Certificate,Crypto,Kit,huks,let,Device
From: https://www.cnblogs.com/samex/p/18537648

相关文章

  • 鸿蒙HarmonyOS:深入Device Certificate Kit API:从集成到实战鸿蒙HarmonyOS:深入Device C
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在鸿蒙系统的开发之旅中,DeviceCertific......
  • 鸿蒙HarmonyOS证书的安全管家:Device Certificate Kit中的证书管理模块
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在华为鸿蒙HarmonyOS的世界里,设备的安全......
  • HarmonyOS Device Certificate Kit简介:鸿蒙设备证书的核心功能与应用
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在当今数字化时代,设备安全成为了至关重......
  • 干货分享:通用加解密函数(crypto),Air780E篇
    一、加解密概述加解密算法是保证数据安全的基础技术,无论是在数据传输、存储,还是用户身份验证中,都起着至关重要的作用.随着互联网的发展和信息安全威胁的增加,了解并掌握常用的加解密算法已经成为开发者和安全从业者的必修课.常见的15种加密解密算法分别是:散列哈希[MD5、SHA......
  • HarmonyOS Next之Asset Store Kit基础功能全解析
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)在开发多语言电商平台方面的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在HarmonyOS......
  • Ubuntu安装Nvidia驱动与Cuda Toolkit详细教程 | 步骤解析与环境配置 - 幽络源
    步骤概述步骤1:检查是否安装Nvidia驱动步骤2:查询显卡匹配的驱动版本步骤3:安装Nvidia驱动步骤4:检查Nvidia是否安装并加载步骤5:禁用nouveau步骤6:重新加载nvidia驱动并检查步骤7:下载cudatoolkit步骤8:安装cudatoolkit到指定目录步骤9:配置cudatoolkit环境变量步骤10:测试cudatool......
  • CommunityToolkit.Mvvm框架
    .NETWPFCommunityToolkit.Mvvm框架1源生成器1.1ObservablePropertyAttribute&RelayCommandAttributeusingCommunityToolkit.Mvvm.ComponentModel;usingCommunityToolkit.Mvvm.Input;usingSystem.Windows;namespaceTestCommunityToolkit._1_Attribute{pub......
  • 鸿蒙开发进阶(HarmonyOS )Form Kit(卡片开发服务)概念
     鸿蒙NEXT开发实战往期必看文章:一分钟了解”纯血版!鸿蒙HarmonyOSNext应用开发!“非常详细的”鸿蒙HarmonyOSNext应用开发学习路线!(从零基础入门到精通)HarmonyOSNEXT应用开发案例实践总结合(持续更新......)HarmonyOSNEXT应用开发性能优化实践总结(持续更新......)FormKi......
  • KITTI_00_SPTAM轨迹和KITTI_00_ORB轨迹
    KITTI_00_SPTAM轨迹和KITTI_00_ORB轨迹分别代表什么KITTI_00_SPTAM轨迹和KITTI_00_ORB轨迹分别代表的是两种不同的SLAM(SimultaneousLocalizationandMapping,即同时定位与建图)算法在KITTI数据集上生成的轨迹估计结果。1.KITTI_00_SPTAM轨迹:这代表了S-PTAM(Stereo......
  • Pycharm中使用AI辅助Coding工具Aws Toolkit
    一、安装插件 二、重启完了以后点击左下角的aws 三、点developertools,双击codewhisperer中的start,点击connect 四、点击signout,openandcopycode五、跳转到网页浏览器中打开登录界面,我们在图中所示的code一栏中粘贴上验证码,点击"next"按钮六、没有账号的会创......