一文看懂码灵半导体CFW32C7UL系列产品应用(二):国密算法●上篇

本文主要是介绍一文看懂码灵半导体CFW32C7UL系列产品应用(二):国密算法●上篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎再次来到“码灵半导体CFW32C7UL系列产品应用介绍”连载专题。通过上期CFW32C7UL系列启动阶段的特点介绍,相信您对CFW327UL系列启动阶段 的“程序安全启动”特点还有印象。文中提到芯片启动时可支持对经AES或SM4加密过的程序的加载启动,所述的AES和SM4就是人们常说的加解密算法,其中SM4为我国自主设计的一种密码算法,通常也称为国密算法。本期专题聚焦于CFW32C7UL系列硬件所支持的国密算法。
一、国密算法及其重要性
在详细介绍CFW32C7UL系列的国密算法前,我们先普及下什么是密码、密码的作用以及国家对国密的重视。
这里我们所述的密码是指采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务。随着社会信息化的高速发展,信息传输和信息存储对安全的要求变得愈来愈重要,而密码是解决信息安全方面是核心技术手段、是基础支撑保障,是解决网络与信息安全问题最有效、最可靠、最经济的手段。
密码主要有两个大功能:加密保护和安全认证。作为保障网络安全的核心技术,密码算法和密码产品的自主可控是确保我国信息安全的重中之重。但在当前,我国大多采用国外制定的加密算法,存在着大量的不可控因素,一旦被不法分子利用攻击,将产生不可估量的损失。因此密码产品自主可控及相关软硬件国产化的替代,是防止后门漏洞的最有效方法,是保障网络安全的终极举措。
在这里插入图片描述
从国家战略层面讲使用国产密码算法是符合国家信息安全全局战略的。因此在2019年10月26日第十三届全国人民代表大会常务委员会第十四次会议上,通过了《中华人民共和国密码法》,该法自2020年1月1日起施行。
在《密码法》中,将密码分为核心密码、普通密码和商用密码,其中核心密码、普通密码用于保护国家秘密信息(绝密级和机密级),商用密码用于保护不属于国家秘密的信息,如网络和信息安全等。在CFW32C7UL系列硬件集成的国密算法模块即为《密码法》中所提到的商用密码,有SM2,SM3,SM4(本系列芯片内同时集成了真随机数发生器TRNG、国际标准的标准 AES 算法、 AES-CM、AES-F8 算法和SHA签名模块)。
二、CFW32C7UL如何实现国密算法?
目前在嵌入式产品中如何实现国密算法呢?据有关资料统计,目前嵌入式产品在使用国密算法时,近三分之二采用的是外挂国密算法专用芯片来实现,这种实现方式在对嵌入式产品的成本、体积、功耗等方面来及诸多挑战,且数据在主控芯片与国密芯片的传输通道环节也有数据外泄的风险。而码灵半导体的CFW32C7UL系列产品采用了在内部集成国密算法模块的方法,解决了在使用国外MPU芯片因不支持国密算法而必须通过外加分立元器件来实现的问题,降低了使用国家密码算法的难度,利于推进国密算法在信息安全领域内的应用和实现嵌入式MPU的国产替代的进程。
在这里插入图片描述
三、CFW32C7UL集成的国密算法简述
下面就CFW32C7UL集成的SM2、SM3、SM4算法进行简单的介绍。
在这里插入图片描述
1、SM2公钥算法
公钥密码算法是现代密码学发展过程中的一个里程碑。这类密码算法需要两个密钥:公开密钥和私有密钥。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法也称为非对称密码算法。
SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,用于实现数字签名密钥协商和数据加密等功能。SM2算法是基于ECC椭圆曲线算法,不同于国际标准,采取了更为安全的机制。在实际应用中,采用了一条256bit的椭圆曲线作为标准曲线。相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。在速度方面,256位SM2在验签速度上远远高于2048位的RSA。
2、SM3杂凑算法
SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。SM3算法的输出长度为256比特,SM3算法的安全性要高于MD5算法和SHA-1算法。
3、SM4分组算法
SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。SM4算法与AES算法具有相同的密钥长度分组长度128比特,在安全性上高于3DES算法。
通过以上简介,相信大家对CFW32C7UL系列内置SM2,SM3,SM4的国密标准算法有了初步了解,那么这些算法如何通过CFW32C7UL系列芯片来具体使用呢?让我们带着这些问题,在下期从技术的角度进行探寻!
今天的专题就到这儿,更多关于码灵半导体CFW32C7UL系列产品的介绍,我们下期见!
本期作者:刘悦臻、梁梦雷、陈绍景、谢耀华、谢剑杰

这篇关于一文看懂码灵半导体CFW32C7UL系列产品应用(二):国密算法●上篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/277500

相关文章

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库