目录

  • 前言
  • 一、什么是加密、硬件加密以及加密芯片品牌?
  • 二、开发记录
    • 1.开发环境
    • 2.开发流程
    • 3.常见问题汇总
  • 总结

前言

项目需要加密并且需要采用硬件加密,加密方式为非对称–SM2,之前只接触过RES没有接触过SM2,加密也都是采用软件的方式,硬件的话还真是没有用到过,感觉挺有意思,故记录一下。

一、什么是加密、硬件加密以及加密芯片品牌?

以下关于硬件加密定义、分类,来自百度百科,我觉得吧,想看可以读一读,着急可以直接忽略,硬件加密简单点就是利用加密芯片进行加解密

  1. 硬件加密定义
    使用待加密的电子产品之外的硬件电路与待加密的电子产品进行通讯,让产品内部程序通过通讯数据来判断自己是否应该继续执行程序。
    硬件加密是通过专用加密芯片或独立的处理芯片等实现密码运算。将加密芯片、专有电子钥匙、硬盘一一对应到一起时,加密芯片将把加密芯片信息、专有钥匙信息、硬盘信息进行对应并做加密运算,同时写入硬盘的主分区表。这时加密芯片、专有电子钥匙、硬盘就绑定在一起,缺少任何一个都将无法使用。经过加密后硬盘如果脱离相应的加密芯片和电子钥匙,在计算机上就无法识别分区,更无法得到任何数据。
    硬件加密可以采用标准的网络管理协议,比如SNMP、CMIP等来进行管理,也可以采用统一的网络管理协议进行管理。。
  2. 加密方式
    硬加密——数据加密
    与软加密不同,此种方式将密钥放入1个芯片(几百字节)中,设备端发送数据给芯片,芯片用密钥生成密文返回到设备端,设备端判定密文合法性,决定是否继续运行程序。
    优点:加密过程不易遭受外界攻击。 缺点:容量有限,加密防护手段不多,硬件剖片容易获得密钥;如果设备端程序泄露,会造成芯片失效。
    硬加密——数据&程序加密
    芯片容量提升,为用户开放几十K至上百K字节容量的程序和数据空间,用户可在芯片内部自定义实现程序功能,也可存储相关参数信息。
    优点:芯片中数据加密和程序运行外界难以跟踪;数据和程序混杂,硬件破解分析困难。 缺点:与逻辑芯片比,成本略高。

加密芯片品牌

  1. 型号: RJMU401
    公司:武汉瑞纳捷电子技术有限公司(本博客介绍的就是这款),
    公司注册资金:1850万,
    其他:公司提供测试demo板(50元/块),技术人员沟通相当快捷顺利,点个赞(亲身感受,非广告)。

  2. 型号:LKT4305-GM
    公司:凌科芯安科技(北京)有限公司
    公司注册资金:2000万
    其他:公司提供测试demo板(1200元/块,当时听到这个数都蒙了,不懂到底是想干嘛),沟通过但是因为开发板太贵,没有完成测试。

  3. 型号:ICP209
    公司:深圳市一卓科技有限公司
    公司注册资金:200万
    其他:公司不提供测试demo板,需要自己画板子在进行测试,这样就太不方便了,还有注册资金有点低(说实话确实有点以资看企),就放弃了。

  4. 型号:HSC32I1
    公司:北京宏思电子技术有限责任公司
    公司注册资金:1452万
    其他:我记录里只有上面两个信息,忘记了是没找到还是咋的啦,有需要的小伙伴,可以再搜一下。

前三个我有销售的电话以及样片单价就不在这里贴出来了,有需要可以给我私信

二、开发记录

1.开发环境

我开发习惯是先找到对应产品的demo板进行测试,利用STM32最小系统板+厂家提供的demo板组合测试,完成需求功能的测试,在进行PCB绘制。

  1. 硬件展示

加密芯片demo板
正面:

反面:

STM32F103最小系统板

串口模块

软件开发用的是KEIL

烧录用的是Jlink

上述模块来自淘宝以及厂家Demo板,由于不涉及推销,所以不提供购买链接,有一个能用的就可以了
参照如下对应关系,连接完成

提供一个STM32F103驱动RJMU401的测试程序,链接为:https://download.csdn.net/download/zsj2016o/21494585
测试前要求:
1、各部分连接完成;
2、STM32F103最小系统程序烧录完成;
3、串口模块连接电脑,并成功打开串口助手(串口模块测试小方法:模块TX与RX短接,发送数据看是否有数据接收)。
完成上述三个步骤,串口助手显示如下:

2.开发流程

  1. 手册
    硬件开发最不可缺少的就是手册,我在此列出自己用到的手册:

RJMU401_datasheet__v2.21,链接为https://download.csdn.net/download/zsj2016o/21494503
RJMU401_ESD-HBM测试报告,链接为https://download.csdn.net/download/zsj2016o/21494512
RJMU401_user’s manual_V1.0,链接为https://download.csdn.net/download/zsj2016o/21494520
RJMU401安全芯片编程手册VersionA_v3.5.0,链接为https://download.csdn.net/download/zsj2016o/21494527
RJMU401产品简介,链接为https://download.csdn.net/download/zsj2016o/21494535
RJMU401国密型号证书2020,链接为https://download.csdn.net/download/zsj2016o/21494546
RJMU401芯片基于Linux的SPI驱动代码_使用说明20200902,链接为https://download.csdn.net/download/zsj2016o/21494556
安全芯片RJMU401 在国六T-BOX 上的应用,链接为https://download.csdn.net/download/zsj2016o/21494565

  1. PCB
    工程链接:https://download.csdn.net/download/zsj2016o/21494611,
    RJMU401评估板原理图,链接为https://download.csdn.net/download/zsj2016o/21494548

  2. 测试文档
    链接为:https://download.csdn.net/download/zsj2016o/21495296(测试说明以及常用指令)

我采用的SM2加密方式,所以我将对SM2加密进行说明。

测试流程说明
1)加密以及解密情况下,加密使用公钥,解密使用私钥
方法是利用模块生成一组密钥对,同时模块利用AAC500A20040 指令 加载该公钥
同时利用模块外部公钥进行加密,指令为AAC500A100
生成待解密数据,再利用内部私钥进行解密,指令为AAC501A300,测试完成。
2)签名以及验签情况下,签名使用私钥,验签使用公钥
方法是利用模块生成一组密钥对,同时模块利用AAC500A20040 指令 加载该公钥
同时利用模块内部私钥进行签名,指令为AAC503A300
生成待验签数据,再利用外部公钥进行验签,指令为AAC504A100,测试完成。
(结合具体的指令结果,相信你有一个好的测试效果)

测试文档是结合厂家给的文档以及手册《RJMU401安全芯片编程手册VersionA_v3.5.0》自己写的总结,只针对SM2,如果有别的需求,可以咨询厂家,厂家很尽职尽责,沟通很愉快。

3.常见问题汇总

  1. 关于电源
    RJMU401demo板,在SPI线连接完成通电后,demo板上的电源就会亮起,但是不要忽略demo板电源的供应,否则测试时,返回的值可能为0x00,0x00或者0xFF,0xFF,不能正常完成整个测试。

  2. 利用串口助手发送指令

1),保证是16进制发送,并且不勾选发送新行;
2),发送指令,会有反馈,反馈有不同数值,对应不同情况,具体如下:
指令不正确(主要是不合规范的指令以及数据长度不正确),返回上个图中3的情况——数据长度或格式错误 ;
3),指令正常,会有四种返回数据及状态格式,参考如下:


图1.发送指令不带数据,无返回数据格式

图2.发送指令不带数据,有返回数据格式

图3.发送指令带数据,无返回数据格式

图4.发送指令带数据,有返回数据格式

  1. 加解密与签字验签
    1)加密以及解密情况下,加密使用公钥,解密使用私钥;
    加解密时,需要主要待加解密数据的长度,长度错误会造成加解密失败。
    2)签名以及验签情况下,签名使用私钥,验签使用公钥。
    验签的时候需要额外注意,验签与解密是有区别的,解密只需要将待解密数据输入即可,待验签数据需要做额外处理,待验签数据的长度(待验签数据 = 签名数据是0x40 + 指定长度的明文数据)是一个叠加数据,这就说明验签的时候需要知道加密的原始数据。

总结

以上就是我对RJMU401加密芯片的全部介绍,总体来说,厂家还是很不错的,无论样品申请、技术沟通,还是反馈速度都无可挑剔,希望越做越好,可能我讲的还有不明白的地方,希望大家留言支持,共同进步!

STM32F103驱动RJMU401实现SM2加解密、签名与验签相关推荐

  1. ios rsa加密 java解密_iOS RSA加密与解密 签名与验签(附Java端处理)

    本篇文章将涉及以下几个操作: 1.iOS端使用RSA公钥加密,iOS端使用RSA私钥解密. 2.iOS端使用RSA私钥加签,iOS端使用RSA公钥验签. 3.iOS端使用RSA公钥加密,Java端使用 ...

  2. SM2加解密、签名验签

    导论 SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,在我们国家商用密码体系中被用来替换RSA算法. 国产SM2算法,是基于ECC的,但二者在签名验签.加密解密过程中或许有些 ...

  3. 国密算法SM2加解密,签名和验签java语言

    SM2加解密java语言 maven项目 引入bcprov-jdk15on <dependency><groupId>org.bouncycastle</groupId& ...

  4. 国密算法SM2加解密_签名验签图形化例子

    点击上方蓝字可直接关注!方便下次阅读.如果对你有帮助,麻烦点个在看或点个赞,感谢~ 国密SM2概述 对国密算法有了解的朋友看到SM2可能会先想到非对称加密,之前的SM4是对称加密.SM4加解密使用的是 ...

  5. 【Java加解密系列】- SM2加解密

    上一篇博客介绍了SM2算法生成密钥的过程,详见-SM2生成密钥.这篇博客接着介绍SM2算法如何用上篇博客生成的密钥进行加解密操作. 因为密钥都是byte数组,在进行加解密前,我们需要将密钥转换成BC库 ...

  6. 使用 Python 脚本执行国密 sm2 加解密

    一.场景 工作中的一个场景:Go 需要对信息加解密,但是研究了 GmSSL Go API 文档之后,发现是依赖于 CGO 的,同事配了半天环境没配成功.于是换了一个方法,选择 Go 调 Python ...

  7. SM2 加解密注意事项

    SM2 加解密联调时走过的坑 1.密文数据,有些加密硬件出来密文结构为 C1|C2|C3 ,有些为 C1|C3|C2 , 需要对应密文结构做解密操作 2.有些加密硬件,公钥前加04 ,私钥前加00,密 ...

  8. SM2加解密代码及算法解析

    一.前言 关于国密算法SM2加解密的标准可参考国标文件: http://c.gb688.cn/bzgk/gb/showGb?type=online&hcno=370AF152CB5CA4A37 ...

  9. SM2 加解密 一文理清

    1. 给一个私钥的der文件. 通过命令查看公私钥数据. F:\project\simkey\now\>gmssl ec -inform der -in anca_ec_keypri.der - ...

最新文章

  1. 5 分钟一次理解 Spring IOC !
  2. 赚到!4个Python初学者必学的Numpy小技巧
  3. linux系列(十六):which命令
  4. 2018年7月5日笔记
  5. zoj2271 Chance to Encounter a Girl(DP)
  6. 最优化理论与算法笔记
  7. 51nod3109 看电影
  8. Spring Bean生命周期
  9. global mapper加载高德在线地图
  10. 大学英语四新视野 课后习题+答案翻译 Unit1~Unit8
  11. 达梦disql中“pagesize”的设置
  12. 高格VE8产品技术白皮书
  13. 淘宝商品评论获取评论
  14. webstorm设置黑色背景
  15. python randn_numpy.random.randn()用法
  16. python量化投资系统构建_零基础搭建量化投资系统 以Python为工具
  17. 《2021中国企业数智化转型升级发展研究报告》正式发布丨数据猿上海大数据联盟...
  18. TM Forum的TAM中文架构图
  19. 阿里云Quick BI理论学习
  20. 更多改进 苹果iPhone 3G版深入评测

热门文章

  1. master节点重置后添加node报错_kubeadm高可用master节点(三主两从)2
  2. 【设计模式】观察者模式(Observer)
  3. 百炼2967:特殊日历计算
  4. 哈佛大学经典校训20条
  5. matlab画直交圆柱面,两个直交圆柱面的交线
  6. PNG8和PNG24的区别
  7. 无法读取服务器php文件mime类型,php 常见文件MIME类型
  8. c语言混沌序列,混沌时间序列的C-C法计算太阳黑子月度数据的tau和tw与书上的不同,咋么办?...
  9. 《越狱》第一季 第1集
  10. 【云驻共创】GaussDB(DWS)云数仓工作负载管理流程体验