用SM2算法芯片实现嵌入式系统的安全设计[图]

相关专题: 芯片

引言

随着网络技术,特别是互联网技术在我国的迅速推广和普及,各种网络应用,如电子商务、电子政务、网上银行、网上证券交易等项目,也在我国迅猛发展。但是网络非法入侵、诈骗等事件严重影响了网络信息安全。只有不断发展和提高网络信息安全技术,才能保证网络健康发展。在信息安全技术领域,公开密钥基础设施(PKI)很好地为互联网提供了安全服务。如今网络应用中的认证、数据的加解密、完整性验证、不可否认性等功能已经离不开PKI技术的支持。随着PKI密码技术的发展,SM2算法(国际上称之为ECC算法)应用越来越广,效率较之前的算法更高,破解难度更大、更安全。本系统在嵌入式主板上实现SM2算法PKI技术,提供基于SM2算法的签名验证、数字信封和解封、数据加解密来实现身份认证,保证网络信息安全交互。

1 系统总体设计

本设计中嵌入式系统的CPU采用三星公司的S3C2440芯片,操作系统采用嵌入式Linux作为平台,内存采用64 MB SDRAM,文件存储采用128 MB NAND Flash,HS32U2U芯片提供SM2算法。

图1 系统的总体设计结构框图

系统的总体设计结构框图如图1所示。

系统各部分结构功能如下:

◆ CPU:系统为提供运行、计算以及和各个模块进行通信;

◆ RAM:为操作系统提供运行空间;

◆ Flash:提供boot启动程序、内核映像、文件系统;

◆ Ethernet:提供网络通信接口;

◆ SM2:提供SM2算法接口;

◆ UART:提供串口调试功能。

2 系统硬件接口

系统CPU通过SPI接口访问HS32U2U芯片,为系统应用提供SM2算法。SM2芯片接口设计如图2所示。

HS32U2U芯片支持主模式和从模式,支持4种通信模式,数据通行速率可达16 Mbps@80 MHz,支持低功耗模式。

主要的SPI接口介绍如下:

◆ SS:SPI从模式选择;

◆ SCLK:SPI串行时钟;

◆ MOSI:SPI主模式输出,从模式输入;

◆ MISO:SPI主模式输出,从模式输入。

三星CPU提供串行时钟频率,按照规定的格式进行数据交互,根据传入的不同格式所代表的不同的命令码,获取不同的数据。

图2 SM2芯片接口设计

3 系统软件设计

图3 软件系统设计结构框图

软件系统设计的结构框图如图3所示。系统软件设计主要包括SM2算法的应用层API和SM2内核层的驱动。应用层API实现系统应用调用SM2算法,例如SM2公私密钥对的产生、SM2签名功能、SM2验证功能、SM2加密功能、SM2解密功能、SM2密钥交换功能以及SM2杂凑功能等。SM2内核层的驱动是SM2驱动通过SPI总线实现三星CPU与HS32U2U芯片低层数据交互。

3.1 Bootloader设计

嵌入式系统中,Bootloader是必需的。它是在操作系统内核运行之前的一小段程序,就像BIOS一样。这段程序可以初始化硬件设备,建立内存空间映射图,从而将软件的软硬件环境设置到一个合适的状态,为最终调用操作系统内核准备好环境。

3.2 内核编译选项

根据需要配置内核选项,主要包含:

◆ 启动传递参数

◆ devfs文件系统支持

◆ 芯片及系统类型配置

◆ 芯片及系统类型配置

◆ (DMA Engine support)DMA传输引擎支持

除此之外,在编译内核时还要将SPI总线和模块加载的功能选项选中。因为系统最终通过加载模块方式调用SM2算法芯片,同时通过SPI总线来交互数据。

3.3 SM2设备系统驱动设计

Linux的内核由设备管理、进程管理、内存管理和文件系统组成。Linux设备驱动可以分为字符类设备、块类设备、网络接口类设备和其他非标准驱动。SPI设备被看做是字符型设备。

每个SPI外设都由1个总线号、1个设备号和1个功能号来标识,共有3个访问空间,即内存空间、I/O端口和配置寄存器。每个设备功能都有一个配置空间,用于决定SPI的工作方式和映射到系统中的地址。设备驱动通过模块方式加载到内核中。相关函数代码如下:

static const struct file_operations spi_fops{

.owner=THIS_MODULE,

.open=spi_open,//设备打开

.read=spi_read,//读数据

.ioctl=spi_ioctl,//控制

.release=spi_release, //释放SPI

.write=spi_write,//写数据

}//SPI驱动数据结构

static int __init spimodule_init(void){

int result;

result=register_chrdev(spi_major,spi_name,&spi_fops);

if(result<0) {

return -1;

}

s3c2440_clkcon=(int *)ioremap(0x4C00000c,3);

spi_gpgcon=(int *)ioremap(0x56000060,4);

spi_gpgdat=(int *)ioremap(0x56000064,4);

spi_gpgup=(int *)ioremap(0x56000068,2);

spi_gpecon=(int *)ioremap(0x56000040,4);

spi_gpedat=(int *)ioremap(0x56000044,1);

spi_gpeup=(int *)ioremap(0x56000048,2);

SPCON0=(int *)ioremap(0x59000000,1);

SPSTA0=(int *)ioremap(0x59000004,1);

SPPIN0=(int *)ioremap(0x59000008,1);

SPPRE0=(int *)ioremap(0x5900000c,1);//波特率设置寄存器

SPTDAT0=(int *)ioremap(0x59000010,1);//SPI TX DATA REGISTER

SPRDAT0=(int *)ioremap(0x59000014,1);//SPI RX DATA REGISTER

return result;

} //SPI设备注册,以及初始化SPI寄存器函数

3.4 SM2 API设计

由于SM2算法主要有签名验签、加解密、获取hash值等,API函数有SM_HsEccSign、SM_HsEccSignVerify、SM_HsEccEncrypt、SM_HsEccDecrypt、SM_SM3Init、SM_SM3Update、SM_SM3Finalize。通过这些API函数可以实现PKI中的身份认证、数据加解密,保证信息安全传递。

数据通信协议的结构如下所示:

通过上述SPI通信协议,保证在内核层和应用层数据传递的稳定、可靠。

结语

本系统通过嵌入式系统实现了SM2算法接口,为后续应用系统做好了保障,且已经成功应用在VPN系统以及CA中心。SM2算法效率高、破解难度大。随着信息安全的发展,国家密码管理局已经指定SM2算法取代RSA算法,在今后的应用中会有更大的发展空间。

参考文献

[1] 关振胜.公钥基础设施PKI与认证机构CA[M].北京:电子工业出版社,2002.

[2] 符意德,陆阳. 嵌入式系统原理及接口技术[M].北京:清华大学出版社,2007.

[3] 李俊. 嵌入式设备驱动开发详解[M].北京:人民邮电出版社,2008.

[4] Samsung Electronics. S3C2440A 32BIT CMOS MICROCONTROLLER USERS MANUAL[EB/OL].[20111123]. http://www.samsungsemi.com/.

作者:王振 来源:《单片机与嵌入式系统应用》

我推荐大家读

轻松参与

VS

表达立场

这是垃圾文章


微信扫描分享本文到朋友圈
扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“LTBPS”免费领取《《中国联通5G终端白皮书》
  • 2、回复“ZGDX”免费领取《中国电信5GNTN技术白皮书
  • 3、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 4、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 5、回复“5GX3”免费领取《R1623501-g605G的系统架构1
  • 7、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书
  • 8、回复“IM6G”免费领取《6G典型场景和关键能力白皮书
  • 本周热点本月热点

     

      最热通信招聘

      最新招聘信息

    最新技术文章

    最新论坛贴子