首页 > 其他分享 >HarmonyOS Next 椭圆曲线密码学应用:ECC 与 SM2 深入剖析

HarmonyOS Next 椭圆曲线密码学应用:ECC 与 SM2 深入剖析

时间:2024-11-18 08:49:35浏览次数:1  
标签:公钥 ECC 压缩 曲线 SM2 算法 密码学

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

一、引言

在现代密码学领域,椭圆曲线密码学(Elliptic Curve Cryptography,ECC)已成为一种备受瞩目的加密技术。它凭借着独特的数学原理和卓越的性能优势,在众多密码体系中脱颖而出。相较于传统的加密算法,如 RSA,ECC 能够在更短的密钥长度下提供同等甚至更高的安全性。这意味着在保障数据安全的同时,ECC 可以显著减少计算资源的消耗,提高加密和解密的效率,尤其适用于资源受限的设备,如移动终端和物联网设备。在数字签名、密钥交换以及数据加密等关键密码学应用中,ECC 都发挥着至关重要的作用。例如,在移动支付场景中,ECC 算法确保了交易信息的安全传输和数字签名的有效性,保护用户的资金安全和隐私。HarmonyOS Next 充分利用了椭圆曲线密码学的优势,其中 ECC 和我国自主研发的 SM2 算法是其重要组成部分。接下来,我们将深入探讨 ECC 和 SM2 算法在 HarmonyOS Next 中的应用,包括相关操作及其特性。

二、ECC 算法相关操作

(一)压缩/非压缩点格式转换(代码示例与解释)

  1. 代码示例
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
function eccPointUncompressedToCompressed() {
  let pkData = new Uint8Array([4, 143, 39, 57, 249, 145, 50, 63, 222, 35, 70, 178, 121, 202, 154, 21, 146, 129, 75, 76, 63, 8, 195, 157, 111, 40, 217, 215, 148, 120, 224, 205, 82, 83, 92, 185, 21, 211, 184, 5, 19, 114, 33, 86, 85, 228, 123, 242, 206, 200, 98, 178, 184, 130, 35, 232, 45, 5, 202, 189, 11, 46, 163, 156, 152]);
  let returnPoint = cryptoFramework.ECCKeyUtil.convertPoint('NID_brainpoolP256r1', pkData);
  console.info('convertPoint success');
  let returnData = cryptoFramework.ECCKeyUtil.getEncodedPoint('NID_brainpoolP256r1', returnPoint, 'COMPRESSED');
  console.info('returnData: ' + returnData);
}
  1. 解释
       - 首先,定义了一个包含非压缩点数据的 Uint8Array,这里的数据表示一个椭圆曲线上的点。然后,使用 cryptoFramework.ECCKeyUtil.convertPoint 函数,传入曲线名 NID_brainpoolP256r1 和点数据 pkData,将非压缩点数据转换为 Point 对象。如果转换成功,会输出 convertPoint success。接着,使用 cryptoFramework.ECCKeyUtil.getEncodedPoint 函数,传入曲线名和转换后的 Point 对象以及格式参数 'COMPRESSED',将 Point 对象转换为压缩格式的点数据,并输出结果。通过这个过程,实现了从非压缩点格式到压缩点格式的转换。

(二)压缩/非压缩公钥格式转换(代码示例与解释)

  1. 代码示例
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
async function eccPubUncompressedToCompressed() {
  let pkData = new Uint8Array([48, 90, 48, 20, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 9, 43, 36, 3, 3, 2, 8, 1, 1, 7, 3, 66, 0, 4, 143, 39, 57, 249, 145, 50, 63, 222, 35, 70, 178, 121, 202, 154, 21, 146, 129, 75, 76, 63, 8, 195, 157, 111, 40, 217, 215, 148, 120, 224, 205, 82, 83, 92, 185, 21, 211, 184, 5, 19, 114, 33, 86, 85, 228, 123, 242, 206, 200, 98, 178, 184, 130, 35, 232, 45, 5, 202, 189, 11, 46, 163, 156, 152]);
  let pubKeyBlob: cryptoFramework.DataBlob = { data: pkData };
  let generator = cryptoFramework.createAsyKeyGenerator('ECC_BrainPoolP256r1');
  let keyPair = await generator.convertKey(pubKeyBlob, null);
  let returnBlob = keyPair.pubKey.getEncodedDer('X509|COMPRESSED');
  console.info('returnBlob data:' + returnBlob.data);
}
  1. 解释
       - 首先,创建了一个包含非压缩公钥数据的 Uint8Array,并将其封装成 DataBlob 对象。接着,创建了一个密钥算法为 ECC、特定曲线的非对称密钥生成器。然后,调用 convertKey 方法,传入公钥的 DataBlob 对象(私钥部分传入 null,因为这里只进行公钥转换),将非压缩公钥数据转换为非对称密钥对象。最后,使用 getEncodedDer 方法,传入格式参数 'X509|COMPRESSED',获取压缩格式的公钥数据字节流并输出。这个过程实现了从非压缩公钥格式到压缩公钥格式的转换,并且遵循了 X509 规范。

三、SM2 算法相关操作

(一)与 ECC 算法的异同点分析

  1. 相同点
       - 数学基础:SM2 算法与 ECC 算法都基于椭圆曲线数学理论。它们利用椭圆曲线上的点运算来实现加密、解密、签名和验签等功能。在椭圆曲线的数学模型下,通过定义在有限域上的点和运算规则,构建了安全的密码学体系。
       - 安全性优势:两者都在相对较短的密钥长度下能够提供较高的安全性。相比传统的基于大整数分解或离散对数问题的加密算法(如 RSA),ECC 和 SM2 能够以更小的密钥长度达到相当甚至更高的安全级别,从而减少计算资源的消耗和密钥管理的复杂性。
       - 应用场景相似性:在实际应用中,ECC 和 SM2 都广泛应用于数字签名、密钥交换和数据加密等领域。例如,在保障网络通信安全、保护用户数据隐私以及确保电子交易的真实性和完整性等方面,它们都发挥着重要作用。
  2. 不同点
       - 算法标准和来源:ECC 是一种广泛应用的国际标准算法,在全球范围内得到了广泛的研究和应用。而 SM2 是我国自主研发的椭圆曲线公钥密码算法,具有自主知识产权,是我国密码体系中的重要组成部分,主要应用于国内的信息安全领域,如政府、金融、电信等行业,以保障国家关键信息基础设施的安全。
       - 参数和曲线选择:虽然都基于椭圆曲线,但在具体的参数和曲线选择上可能存在差异。不同的曲线参数会影响算法的性能、安全性和兼容性等方面。例如,ECC 算法在实现中可能会根据不同的应用场景和安全需求选择不同的标准椭圆曲线,如 NID_secp224r1NID_X9_62_prime256v1 等;而 SM2 算法则使用特定的椭圆曲线参数,这些参数是根据我国的密码标准和安全要求确定的。
       - 应用侧重:由于 SM2 是针对国内信息安全需求定制的算法,在一些特定的国内应用场景中可能具有更好的适应性和优化。例如,在一些对国产化和自主可控要求较高的领域,SM2 算法能够更好地满足安全政策和法规的要求,确保信息系统的安全性和可控性。

四、总结

在 HarmonyOS Next 的加密体系中,ECC 和 SM2 算法都具有不可替代的重要性。ECC 算法凭借其高效的性能和广泛的国际应用基础,为 HarmonyOS Next 提供了强大的加密能力,尤其适用于资源受限的设备和对性能要求较高的场景。通过其压缩/非压缩点格式转换和公钥格式转换等操作,展示了其在密钥管理和数据加密方面的灵活性。而 SM2 算法作为我国自主研发的密码学成果,在保障国家信息安全方面发挥着关键作用。它与 ECC 算法既有共同的优势,又在算法标准、参数选择和应用侧重等方面有所不同,为 HarmonyOS Next 在国内的广泛应用提供了坚实的安全保障,确保了数据在各种应用场景下的保密性、完整性和真实性。

标签:公钥,ECC,压缩,曲线,SM2,算法,密码学
From: https://www.cnblogs.com/samex/p/18551611

相关文章

  • SAM4MLLM:结合多模态大型语言模型和SAM实现高精度引用表达分割 | ECCV'24
    来源:晓飞的算法工程笔记公众号,转载请注明出处论文:SAM4MLLM:EnhanceMulti-ModalLargeLanguageModelforReferringExpressionSegmentation论文地址:https://arxiv.org/abs/2409.10542论文代码:https://github.com/AI-Application-and-Integration-Lab/SAM4MLLM创......
  • 密码学之MD5(Cryptography MD5)
      ......
  • 密码学知识点整理一:密码学概论
    密码学是什么?密码学是一门研究编制密码和破译密码的技术科学。密码学,作为信息安全的核心技术之一,其重要性在于能够为信息传输提供安全保障,确保数据在存储或传输过程中的机密性、完整性与真实性不被破坏。从古至今,随着科技的发展和计算机技术的广泛应用,密码学已经由最初的......
  • RAC:无训练持续扩展,基于检索的目标检测器 | ECCV'24
    来源:晓飞的算法工程笔记公众号,转载请注明出处论文:OnlineLearningviaMemory:Retrieval-AugmentedDetectorAdaptation论文地址:https://arxiv.org/abs/2409.10716创新点提出一种通过检索增强分类过程的创新在线学习框架RAC,与传统的基于离线训练/微调的方法相比,具......
  • AnytimeCL:难度加大,支持任意持续学习场景的新方案 | ECCV'24
    来源:晓飞的算法工程笔记公众号,转载请注明出处论文:AnytimeContinualLearningforOpenVocabularyClassification论文地址:https://arxiv.org/abs/2409.08518论文代码:https://github.com/jessemelpolio/AnytimeCL创新点在线训练时,每个批次由新训练样本和类别平衡......
  • ATC:多快好省,无参数token reduction方法 | ECCV'24
    来源:晓飞的算法工程笔记公众号,转载请注明出处论文:AgglomerativeTokenClustering论文地址:https://arxiv.org/abs/2409.11923论文代码:https://github.com/JoakimHaurum/ATC创新点提出了层次token聚类(AgglomerativeTokenClustering,ATC),这是一种新型的无参数层次合......
  • DDR Study -LPDDR5 DFE / Data Copy / Write X / Link ECC / FSP
    参考来源:JESD209-5B简单分享下LPDDR5中部分功能模块DFE,WriteX,DataCopy的设计。以及对比LPDDR4,ECC和FSP的变化。DFE-DecisionFeedbackEqualization首先需要了解在LPDDR5的高频工作模式下,最高的DataRate可以逼近6400Mbps,而LPDDR5x最高速率更是可以达到8533Mbps......
  • 极市平台 | ECCV‘24|Plain-Det:同时支持多数据集训练的新目标检测
    本文来源公众号“极市平台”,仅用于学术分享,侵权删,干货满满。原文链接:ECCV'24|Plain-Det:同时支持多数据集训练的新目标检测极市导读论文提出了Plain-Det,提供了灵活性以适应新的数据集,具有跨多样数据集的稳健性能、训练效率和与各种检测架构的兼容性。结合Def-DETR和Plain-Det,......
  • 【密码学】全同态加密基于多项式环计算的图解
    全同态加密方案提供了一种惊人的能力——能够在不知道数据具体内容的情况下对数据进行计算。这使得你可以在保持潜在敏感源数据私密的同时,得出问题的答案。  这篇文章的整体结构包括多项式环相关的数学介绍,基于多项式环的加密和解密是如何工作的,同态加法和乘法如何实......
  • DPaRL:耶鲁+AWS出品,开放世界持续学习场景的新解法 | ECCV'24
    来源:晓飞的算法工程笔记公众号,转载请注明出处论文:Open-WorldDynamicPromptandContinualVisualRepresentationLearning论文地址:https://arxiv.org/abs/2409.05312创新点在开放世界中建立了一种新的持续视觉表征学习的实用设置。提出了一种简单而强大的方法,动......