0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

码灵半导体 2022-06-06 18:06 次阅读

欢迎再次来到“码灵半导体CFW32C7UL系列产品应用介绍”连载专题。通过上期对CFW32C7UL系列支持的国密算法种类的介绍,相信您对CFW327UL系列的国密硬件模块有了初步了解,那么这些国密模块如何使用?应用是否便捷?加解密的速度如何?带着这些疑问,我们今天从真随机数发生器TRNG和SM3算法模块的调用开始谈起。

一、真随机数发生器TRNG模块
说到随机,有两个必须要搞清楚的概念即“真随机数生成器”(TRNG)和伪随机数生成器(PRNG)。大部分计算机程序和语言中的随机函数,都是伪随机数生成器,它们都是由确定的算法,通过一个“种子”(如“时间”)来产生“看起来随机”的结果值。毫无疑问,只要知道算法和种子,或者是之前已经产生了的随机数,那么就有可能获得接下来随机数序列的信息,因此它们带有可预测性。这种可预测性在密码学上并不安全,所以我们称其为“伪随机”。
与“伪随机”相对应的是“真随机”,真正的随机数仅存在于量子力学中,而我们需要的是一种不可预测的、统计意义上的、高安全性的随机数。在码灵半导体CFW32C7UL系列产品中我们提供了四组这种真随机数源,用以产生真随机数,同时该功能模块是采用硬件方式实现的,并且通过了NIST统计检测程序的随机性测试。
下面我们具体介绍下CFW32C7UL系列产品的真随机数发生器TRNG模块是如何通过码灵半导体官方提供的SDK函数来进行调用的。目前码灵半导体官方提供了两种SDK,即裸机SDK和Linux SDK。
开发模式一:裸机SDK
裸机SDK与提供的freeRTOSuCOS SDK中相同。
① 产生一个真随机数
调用HAL_TRNG_GetValue()
uint32_t HAL_TRNG_GetValue() 函数返回值为一个真随机数
② 使用范例
uint32_t random = HAL_TRNG_GetValue();
单个函数看不出硬件实现和软件实现有什么不同,那下面展现一下函数源码:
uint32_t HAL_HRNG_GetValue()
{
uint32_t ret;
HRNG->CMPRES = 0x02;
HRNG->CTRL |= (HRNG_CTRL_RNG_EN0 | HRNG_CTRL_RNG_EN1 | HRNG_CTRL_RNG_EN2 | HRNG_CTRL_RNG_EN3 | HRNG_CTRL_SCLK_SEL);
while((HRNG->STATUS& HRNG_STATUS_FIFO_NOT_EMPTY) ==0);
ret= HRNG->LFSR;
return ret;
}
上面所述的就是对寄存器HRNG->CMPRE、HRNG->CTRL进行一个配置后,等待HRNG->STATUS,之后HRNG->LFSR寄存器中取出随机数。
开发模式二:Linux SDK
通过操作linux系统中/dev/wokoo_trng,就可以进行产生真随机数。
① TRNG算法底层接口
• open:打开设备节点
• read:读取随机数的数据
② 接口描述
• open
函数原型:static int uac_open(struct inode *inode, struct file * file)
参数:file:文件名
返回值:成功0,其它失败
• read
函数原型:static ssize_t uac_read(struct file * file, char __user *buffer, size_t size , loff_t *p)
参数:file:文件名,buffer:读出数据缓存,size:读出数据长度
返回值:成功0,其它失败
③ 使用示例
trng_fd = open("/dev/wokoo_trng", O_RDWR); //打开trng的节点
read(trng_fd, (unsigned char *)&trng_data, 1); //读取真随机数
CFW32C7UL系列的TRNG效率
目前码灵半导体CFW32C7UL系列产品产生随机数的速率是75kb/s,每秒可以产生75kb的真随机数。
二、SM3杂凑硬件算法模块
SM3算法为国密杂凑算法,数据分组长度为512bit,杂凑值长度为256bit。基本运算流程为:对输入数据流做填充,构成整数个512bit长度的数据流;再对数据做分组;然后对每个分组做扩展和替换压缩操作,得到中间的临时杂凑值,反复进行直到所有分组处理完毕,最后一个计算得到的杂凑值作为整个数据流的最终杂凑值输出。
开发模式一:裸机SDK
调用SM3_Hash产生SM3 最终hash 值。
void SM3_Hash(uint32_t *pDataIn,uint32_t DataLen,uint32_t *pDigest)
① 函数参数说明
pDataIn: 输入的数据指针( big endian)
DataLen :数据的bit 长度
pDigest: 输出的最终hash值
② 使用范例
SM3_Hash (message,32,tempbuf);
//message 是原始数据,数据长度为32,tempbuf是产生的256位hash值
开发模式二:Linux SDK
通过操作linux系统中/dev/wokoo_sm3 ,就可以进行SM3杂凑算法的运算。
① SM3算法底层接口
• open:打开设备节点
• read:读取加密后的数据
• write:写入加密的数据
② 接口描述
• Open
函数原型: static int uac_open(struct inode *inode, struct file * file)
参数:file:文件名
返回值:成功0,其它失败
• Read
函数原型:static ssize_t uac_read(struct file * file, char __user *buffer, size_t size , loff_t *p)
参数:file:文件名,buffer:读出数据缓存,size:读出数据长度
返回值:成功0,其它失败
• Write
函数原型: static ssize_t uac_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
参数:file:文件名,buf:写入数据缓存,count:写入数据长度
返回值:成功0,其它失败
③ 使用示例
sm3_fd = open("/dev/wokoo_sm3", O_RDWR); //打开sm3节点
write(sm3_fd, &sm3_data.datain, sm3_data.datalen); //写入需杂凑的数据
read(sm3_fd, &sm3_data.dataout, NULL); //读出杂凑完的结果
CFW32C7UL系列SM3算法的效率
通过输入128KB数据,完成杂凑运算后输出运算结果,统计时间如下图

在这里插入图片描述

目前码灵半导体CFW32C7UL系列产品可以实现45Mbps的杂凑速率。
通过以上对CFW32C7UL系列产品的真随机数发生器TRNG和SM3算法模块的介绍,相信大家对国密模块的如何使用有了初步了解,那么SM2和SM4算法在CFW32C7UL系列产品中如何具体使用呢?让我们带着这些问题,在下期中继续探寻吧。
今天的专题就到这儿,更多关于码灵半导体CFW32C7UL系列产品的介绍,我们下期见!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    453

    文章

    50406

    浏览量

    421813
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16992

    浏览量

    350310
  • MPU
    MPU
    +关注

    关注

    0

    文章

    347

    浏览量

    48735
  • 扫码
    +关注

    关注

    0

    文章

    22

    浏览量

    5101
收藏 人收藏

    评论

    相关推荐

    半导体精彩亮相EtherCAT中国路演2024,以全新EtherCAT产品赋能工控应用!

    2024年10月21日、23日、25日,2024年EtherCAT中国路演活动分别在北京、武汉和深圳举办。半导体携全新EtherCAT芯片产品和多项解决方案亮相盛会,与业界各领域的
    的头像 发表于 10-30 08:05 187次阅读
    <b class='flag-5'>码</b><b class='flag-5'>灵</b><b class='flag-5'>半导体</b>精彩亮相EtherCAT中国路演2024,以全新EtherCAT<b class='flag-5'>产品</b>赋能工控应用!

    半导体携EtherCAT芯片亮相2024上海工博会(IAS)

    工业博览会。工业级芯片提供商半导体携最新EtherCAT系列芯片及解决方案亮相本次展会,并在ETG联合展台(展位:6.1H-D129)带来产品
    的头像 发表于 09-26 08:07 509次阅读
    <b class='flag-5'>码</b><b class='flag-5'>灵</b><b class='flag-5'>半导体</b>携EtherCAT芯片亮相2024上海工博会(IAS)

    【展会预告】半导体@上海工博会(IAS)

    亮相本次展会,并在ETG联合展台(展位:6.1H-D129)带来产品展示。展品方面,此次半导体将携CF110x系列EtherCAT从站控
    的头像 发表于 09-12 08:07 222次阅读
    【展会预告】<b class='flag-5'>码</b><b class='flag-5'>灵</b><b class='flag-5'>半导体</b>@上海工博会(IAS)

    半导体携众多产品及EtherCAT方案精彩亮相2024深圳国际电子展

    作为亚太地区颇具影响力的前沿科技成果展会,elexcon2024深圳国际电子展已于8月27日盛大开幕,半导体携带最新产品以及丰富的行业应用解决方案精彩亮相。2024深圳国际电子展于
    的头像 发表于 08-30 12:44 420次阅读
    <b class='flag-5'>码</b><b class='flag-5'>灵</b><b class='flag-5'>半导体</b>携众多<b class='flag-5'>产品</b>及EtherCAT方案精彩亮相2024深圳国际电子展

    紫光芯携存储系列产品出席2024慕尼黑上海电子展

    2024年7月8日至10日,西安紫光半导体股份有限公司(简称:紫光芯,证券代码:874451)精彩亮相慕尼黑上海电子展。紫光芯聚焦人
    的头像 发表于 07-11 11:28 718次阅读

    半导体邀您相约2024年华南国际工业博览会

    2024年华南国际工业博览会将于2024年6月19-21日在深圳国际会展中心(宝安新馆)盛大举行。工业级芯片供应商,半导体将出席此次盛会,并在ETG联合展台(展位:12H-A055)带来最新
    的头像 发表于 06-14 08:23 321次阅读
    <b class='flag-5'>码</b><b class='flag-5'>灵</b><b class='flag-5'>半导体</b>邀您相约2024年华南国际工业博览会

    美新半导体发布eOIS影像稳定系列产品MSD4100WA

    近日,全球MEMS传感技术领军者美新半导体重磅发布了款新的eOIS影像稳定驱动系列产品——MSD4100WA。这款产品集成了高精度、低噪声的硅基线性霍尔传感器,为影像稳定系统提供了前
    的头像 发表于 05-17 10:34 513次阅读

    晶科能源Tiger Neo系列产品荣获全球首家UL 2000V认证

    近期,晶科能源Tiger Neo系列产品,通过了第三方权威机构UL在今年2月发布的UL61730关于2000V光伏组件的认证要求决议中一系列严格的安全和性能评估,被认可能够承受2000
    的头像 发表于 03-25 11:18 460次阅读
    晶科能源Tiger Neo<b class='flag-5'>系列产品</b>荣获全球首家<b class='flag-5'>UL</b> 2000V认证

    Nexperia发布全新模拟开关系列产品

    全球基础半导体器件领域的领军企业Nexperia(安世半导体)最近发布了全新的专用于监测和保护1.8V电子系统的4通道和8通道模拟开关系列产品。这创新
    的头像 发表于 03-11 10:08 660次阅读

    什么是算法?工业网关为什么要支持算法

    工业网关是应用于工业物联网关的常见通信交换传输设备,由于在使用过程中通常涉及工业敏感数据,因此也需要支持算法实现数据加密传输,保障工业物联网安全稳定。
    的头像 发表于 01-31 16:55 1099次阅读
    什么是<b class='flag-5'>国</b><b class='flag-5'>密</b><b class='flag-5'>算法</b>?工业网关为什么要支持<b class='flag-5'>国</b><b class='flag-5'>密</b><b class='flag-5'>算法</b>?

    安世半导体发布全新两路输出LCD偏压电源系列产品

    安世半导体(Nexperia)近日发布了款全新的两路输出LCD偏压电源系列产品,这款产品具有节省空间和高效率的特性。该系列产品的设计目标是
    的头像 发表于 01-15 14:23 868次阅读

    应用芯片推荐

    LKT4305GM是以32位安全处理器为基础的具有高性能高安全性的算法加密产品。芯片满足商安全检测标准 GM/T 0008-2012《
    的头像 发表于 12-08 16:28 841次阅读

    看懂BLE Mesh

    看懂BLE Mesh
    的头像 发表于 12-06 16:24 1425次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>看懂</b>BLE Mesh

    普冉半导体推出P24C系列高可靠EEPROM产品

    近日,普冉半导体推出创新的 P24C系列高可靠 EEPROM 产品,应下游客户及市场需求,公司该新款系列产品可达到 1000万次擦写寿命,是
    的头像 发表于 12-01 11:12 1183次阅读

    加密工业路由器 数据安全升级

    提高数据传输的安全性,确保信息的机密性。加密路由器的优势主要体现在以下几个方面:、高级别加密保护,支持加密芯片和
    的头像 发表于 11-29 14:07 509次阅读
    <b class='flag-5'>国</b><b class='flag-5'>密</b>加密工业路由器 数据安全升级