一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

利用DeepCover安全微控制器(MAXQ1103)产生RSA密钥的办法

来源:analog 发布时间:2023-08-07

摘要: Maxim的RSA密钥生成库提供了一个简单易用的接口,利用DeepCover 安全微控制器( MAXQ1103 )生成RSA密钥。MAXQ1103设计用于金融系统终端,具有包括RSA在内的一系列安全功能。RSA库利用模算术加速器(MAA),可提供长达2048位的加密操作。MAA允许用户进行一系列运算,这些运算对于密码操作非常重要。本文阐述了MAXQ1103评估(EV)板和CrossWorks开发环境,提供了一个理想的安全应用开发平台。

概述

本应用笔记介绍了利用DeepCover 安全微控制器(MAXQ1103)生成RSA密钥对的方法,并讨论了如何使用RSA密钥对设置加密和解密普通文本信息。为了对比RSA计算时间,本文提供了  DS5250  高速安全微控制器的相关数据,可以清楚地看出MAXQ1103对性能的提升。

MAXQ1103设计用于金融终端,提供包括RSA在内的许多安全功能。硬件模算术加速器(MAA)提供长达2048位的加密操作。MAA允许用户进行一系列运算,而这些运算对于加密操作非常重要。操作例程包括:模取幂(a(e)模m)、模乘(a × b模m)、模平方(b²模m)、模平方及模乘法((b²模m) × a模m)、模加、模减。

MAXQ1103评估(EV)板  和CrossWorks开发环境提供了一个理想的平台,用于开发加密系统。评估套件包括所有开发工具:4MB外部程序存储器、4MB外部数据存储器、2个串口、2个智能卡芯片(一个用于大卡、一个用于SIM卡)、1个USB连接器、1个LCD显示屏、1个16位键盘和原型开发区域。

产生RSA密钥对

可以向  技术支持  索取产生RSA密钥对的二进制例程代码(rsa_1103.hex)和应用程序。

以下信息将帮助您建立并运行RSA密钥对的应用程序,该程序基于C语言,可以使用MAXQ30的CrossWorks编译器。

设置MAXQ1103评估板

参考应用笔记4273:“  采用MAXQ1103评估套件和面向MAXQ30的CrossWorks编译器进行设计  ”,获得建立MAXQ1103开发环境的详细信息。

MAXQ1103评估板如图1所示,生成RSA密钥对所需要的硬件包括:

  1. MAXQ1103评估板

  2. JTAG板

  3. JTAG电缆(用于连接MAXQ1103评估板和JTAG板)

  4. 9针串口电缆(连接PC的COM口和评估板的串口0)

  5. 两路稳压电源(5V,±5%,300mA,中心位置为正);一路电源支持MAXQ1103评估板,另一路用于JTAG板供电。


评估板跳线设置如下表所示:

跳线状态
JU1短路
JU3短路
JU4短路


图1. MAXQ1103评估板和JTAG板

按照以下步骤配置评估板并启用相关软件:

  1. 安装MAXQ30 CrossWorks编译器,可以从  Rowley Associates  获得配套工具,本文使用的版本号为2.0.0.2008063000.2293。

  2. 用串口电缆连接评估板的端口0和PC的COM口,可以通过PC观察系统输出。

  3. 用串口电缆连接JTAG板和PC的COM口,通过该连接将应用程序下载到评估板。

  4. 打开项目rsa_1103.hzp

  5. 点击项目,重新生成rsa_1103.hzx输出文件。该文件下载到MAXQ1103评估板,除此之外,也可以修改项目属性生成rsa_1103.hex文件。选择项目属性,然后选择链接,选择其它输出格式,从下拉菜单选择“hex”。

  6. 在Targets窗口中利用“Connect to the target”键连接目标。

  7. 将结果打印到评估板的串口0。

  8. 打开超级终端,配置适当的COM口连接,波特率为115200、8位数据位、无奇偶校验、1位停止位、没有流控制。

    或者

    可以使用Maxim的微控制器开发工具(MTK2)观察应用结果,安装MTK2并打开终端模式。设置串口波特率为115200,打开串口连接。

  9. 点击Debug,加载并运行程序。本应用笔记使用MTK2观测结果。 例程此时将提醒您输入所需要的数据“Enter key length bits to be generated:”。


输入数值(例如:1024),然后等待显示结果。图2显示了程序运行状态,生成1024位字长的RSA密钥对大概需要5秒钟,然后加密和解密随机信息。每次程序运行所需要的时间不尽相同,<表1显示了生成RSA密钥对在不同位长下的平均时间。


图2. 例程运行状态及结果

利用RSA密钥生成库开发一个简单应用

库文件提供基于C语言、简单易用的接口函数,生成密钥对,并使用私钥/公钥加密、解密用户信息。请参考rsalib_1103.h文件了解这些接口的使用,以下例程说明了这些接口函数的使用:


rsa_generateKeySet(...)rsa_bignumModExp(...)


这些接口函数的典型用法如下所示:


{ unsigned long exp = 0x10001; // public exponent DIGIT *c,*x; BIGNUM *d; BIGNUM *e; BIGNUM *pq; DIGIT *plain_text; d = rsa_newNum ; e = rsa_newNum ; pq = rsa_newNum ; // generate the public and private key pair // 'maxq1103_rnd' is a call-back function to generate random numbers using 'random number generator' (RNG) module built into the MAXQ1103 microcontroller.err = rsa_generateKeySet(d,e,exp,maxq1103_rnd,pq,keylen);if(err != RSA_SUCCESS) { printf("\nFailed to generate RSA Keysets. Error code=%d",err); rsa_freeNum(d); rsa_freeNum(e); rsa_freeNum(pq); return; } // allocate memory for 'plain_text' and 'assign values' // allocate memory for 'x' which will contain the encrypted textrsa_bignumModExp(x,plain_text,e,pq);// use public key for encryption // allocate memory for 'c' which will contain the decrypted/original textrsa_bignumModExp(c,x,d,pq);// use private key for decryption}


不同位长度对应的典型测试结果如下所示,每次程序运行所需要的时间不尽相同。

表1. 生成RSA密钥的平均时间
RSA Bit Length GeneratedNumber of Tests RunAverage Time Taken per Test to Generate an RSA Key Pair (seconds)
MAXQ1103 EV Kit at 12MHzDS5250 EV Kit at 22.1MHz
256600.844.8
512601.7110.76
1024604.5526.6
1536609.9863.81
20486015.63122.4

结论

Maxim提供RSA密钥生成库,这些库文件允许基于C语言访问MAXQ1103硬件的相关功能,生成最大2048位的密钥。使用MAXQ1103的内置MAA和RNG模块计算RSA密钥对。MAA硬件模块支持IEEE 公钥加密标准(P1363),支持基于DSA、RSA和ECDSA的非对称算法。



声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: