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系列产品的介绍,我们下期见!

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

    关注

    462

    文章

    53543

    浏览量

    459214
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18615

    浏览量

    387233
  • MPU
    MPU
    +关注

    关注

    0

    文章

    442

    浏览量

    51045
  • 扫码
    +关注

    关注

    0

    文章

    25

    浏览量

    5365
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    半导体两款LED芯片荣获2025年广东省名优高新技术产品

    近日,广东省高新技术企业协会正式发布《2025年第批广东省名优高新技术产品名单》,半导体自主研发的车规级LED芯片与垂直LED芯片两大系列产品
    的头像 发表于 12-02 15:10 1381次阅读

    系列算法简介及SM4算法原理介绍

    系列算法简介 国家商用密码算法(简称
    发表于 10-24 08:25

    安世半导体推出全新线性LED驱动器系列产品

    安世半导体近期推出了12/16/24通道、每通道100mA驱动能力的线性LED驱动系列产品。该系列产品集成芯片级ASIL-B功能安全,满足车灯系统针对功能安全日渐增加的高要求,非常适用于车外照明中的转向灯、刹车灯、贯穿式尾灯,以
    的头像 发表于 09-26 17:35 1555次阅读
    安世<b class='flag-5'>半导体</b>推出全新线性LED驱动器<b class='flag-5'>系列产品</b>

    半导体闪耀工博会,全系EtherCAT芯片与解决方案引领工控创新

    ,与各行业伙伴深度探讨工控领域的最新发展趋势和技术创新。展会上,半导体核心展区亮相了CF110x系列EtherCAT从站控制器芯片及多元创新产品
    的头像 发表于 09-23 18:40 529次阅读
    <b class='flag-5'>码</b><b class='flag-5'>灵</b><b class='flag-5'>半导体</b>闪耀工博会,全系EtherCAT芯片与解决方案引领工控创新

    从原理到应用,读懂半导体温控技术的奥秘

    和精度能够满足光模块在不同工况下的性能检测要求,在光通讯行业的温控应用中发挥作用。 依托帕尔贴效应这科学原理研发的高精度半导体温控产品,通过多样化的产品配置,在各领域的温控环节中发挥
    发表于 06-25 14:44

    半导体携国产EtherCAT芯片及系列方案聚力2025厦门工博会,引领行业芯生态

    伙伴共同探讨工控领域的最新发展趋势和技术创新。本次展会上,半导体展示了CF110x系列EtherCAT从站控制器芯片及全系产品开发板。该
    的头像 发表于 05-13 17:13 952次阅读
    <b class='flag-5'>码</b><b class='flag-5'>灵</b><b class='flag-5'>半导体</b>携国产EtherCAT芯片及<b class='flag-5'>系列</b>方案聚力2025厦门工博会,引领行业芯生态

    瓷(GUOCI)F系列贴片电容

    瓷F系列防啸叫、低ESR贴片电容 瓷F系列产品采用特殊陶瓷材料设计,其由精确的介电材料和适当的导电浆料配制,自动化制程的稳定生产和严谨的质量精确管控了介电设计厚度、电极完整性以及端
    发表于 05-09 15:14

    部署WoSign SSLRSA双证书,实现HTTPS加密

    我国网络安全法规体系不断完善,形成了以《网络安全法》为核心的立体化法律框架。阿里云数字证书管理服务提供国产品牌SSL证书,支持签发基于算法的SSL/TLS证书,助力金融、政务等行业
    的头像 发表于 03-26 10:58 696次阅读
    部署WoSign SSL<b class='flag-5'>国</b><b class='flag-5'>密</b>RSA双证书,实现<b class='flag-5'>国</b><b class='flag-5'>密</b>HTTPS加密

    云平台如何部署WoSign SSL“RSA双证书”

    阿里云WoSign品牌SSL证书是阿里云平台热销的国产品牌证书之,支持签发密合规的SM2算法SSL证书以及全球信任的RSA算法SSL证书
    的头像 发表于 03-18 17:03 678次阅读
    云平台如何部署WoSign SSL“<b class='flag-5'>国</b><b class='flag-5'>密</b>RSA双证书”

    先辑半导体HPM6E00系列产品能用来做EtherCAT的主站吗

    虽然明确说明了先辑半导体HPM6E00系列产品能用来做EtherCAT的从站,但它可以用来做主站吗,还是说必须用其他芯片做主站呢
    发表于 03-16 10:16

    ”当先!看二维码模组如何重塑智能门锁扫体验

    模组如何重塑智能门锁的扫体验,以及它所带来的深远影响。二维码模组技术概述二维码模组,是种集成了光学识别、图像处理与解码
    的头像 发表于 03-12 16:17 778次阅读
    <b class='flag-5'>一</b>“<b class='flag-5'>码</b>”当先!看<b class='flag-5'>二维码</b>模组如何重塑智能门锁扫<b class='flag-5'>码</b>体验

    北京市最值得去的十家半导体芯片公司

    座舱与车控芯片,出货量超700万片,覆盖国内90%车企及国际品牌,2024年估值超140亿元,计划2026年科创板上市。其产品已打入欧洲OEM市场,是国产车规芯片的标杆企业。 2. 屹唐半导体
    发表于 03-05 19:37

    海康威视发布多模态大模型搜存储系列产品

    多模态大模型为安防行业带来重大技术革新,基于观澜大模型技术体系,海康威视将大参数量、大样本量的图文多模态大模型与嵌入式智能硬件深度融合,发布多模态大模型搜存储系列产品——搜NVR、
    的头像 发表于 02-18 10:33 1019次阅读

    N32A455xxL7系列产品简介

    电子发烧友网站提供《N32A455xxL7系列产品简介.pdf》资料免费下载
    发表于 01-22 15:37 0次下载
    N32A455xxL<b class='flag-5'>7</b><b class='flag-5'>系列产品</b>简介

    看懂电感、磁珠和零欧电阻的区别

    电子发烧友网站提供《看懂电感、磁珠和零欧电阻的区别.docx》资料免费下载
    发表于 01-02 14:48 3次下载