2024年6月6日发(作者:)

龙源期刊网

基于嵌入式实现SM1算法的系统设计

作者:王振

来源:《电子世界》2012年第03期

【摘要】随着网络信息的高速发展,信息安全越来越重要。保护信息安全的措施有很多,

VPN技术、建立CA中心等等。在这些技术中,公开密钥基础设施(PKI)是基础,采用了很

多算法,包括对称算法和非对称算法。其中SM1对称密码算法(简称SM1),优势越来越明

显,在将来信息安全使用的越来越多。本系统在嵌入式系统上访问SM1算法的芯片,实现

SM1算法,为系统安全应用提供保障。

【关键词】嵌入式系统;PKI;SM1

引言

随着网络技术,特别是互联网技术在我国的迅速推过和普及,各种网络应用,如电子商

务,电子政务,网上银行,网上证券交易等也在我国迅猛发展。但是网络非法入侵、诈骗等严

重影响了网络信息安全。只有不断发展和提高网络信息安全技术,才能保证网络健康发展。在

信息安全技术领域,公开密钥基础设施(PKI),很好的为互联网提供了安全服务。如今网络

应用中的认证,数据的加解密,完整性验证,不可否认性等,已经离不开PKI技术的支持。目

前通用的软件算法例如DES,3DES,RC4等在安全上无法得到保证,有些算法已经被破解。

而SM1算法基于PKI技术,是一种基于硬件芯片的对称算法,并且是国家密码管理局明文指

定的一种算法。要求在网络大数据量传输的过程中,主要是通过对称算法SM1来实现数据的

加解密工作,保证网络信息安全交互,而非对称算法来实现身份认证和唯一性。

1.系统总体设计

系统采用嵌入式系统,CPU采用三星公司S3C2440,操作系统采用嵌入式linux,64M

SDRAM,128M NAND FLASH,SSX-E提供SM1算法。系统的总体设计如图1。

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

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

FLASH:提供boot启动程序,内核映像,文件系统;

ETHERNET:提供网络通信接口;

SM1:提供SM1算法接口;

UART:提供串口调试功能。

龙源期刊网

2.系统硬件接口,本文重点介绍SM1算法接口

系统CPU通过32为数据总线接口访问SSX-E芯片,为系统应用提供SM1算法。

SSX-E芯片:分组密码算法芯片,实现SM1密码算法。该分组密码算法的分组长度为128

比特,密钥长度为128比特。具有ECB、CBC和OFB等多种运算模式,在32位数据总线宽

度、ECB模式下运算速率可达到300Mbps以上,可满足各种条件下的应用需求。

主要的接口为:

HD[0:31]:32位数据总线;

HA[0:2]:地址总线;

/HCS:芯片片选信号;

/HRD:芯片读信号;

/HWR:芯片写信号。

根据SSX-E器件的要求,外部时钟使用50MHZ有源晶振作为芯片的主工作时钟,如图3

所示。

3.系统软件设计

系统软件设计主要包括SM1算法的应用层API和内核层的驱动。应用层API实现系统应

用调用SM1算法例如:ecb模式加密,ecb模式解密、cbc模式加密,cbc模式解密等。内核层

的驱动:三星cpu通过32位数据总线,与SSX-E芯片交互数据。软件系统设计如图4所示。

3.1 bootloader设计

嵌入式系统中,bootloader是必须的。它是在操作系统内核运行之前的一小段程序,就像

BIOS一样。这段程序可以初始化硬件设备,建立内存空间映射图,从而将软件的软硬件环境

设置到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

3.2 内核编译选项

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

(1)启动传递参数

(2)devfs文件系统支持

龙源期刊网

(3)芯片及系统类型配置

(4)DMA Engine support

(5)MMC/SD/SDIO card support

3.3 SM1设备系统驱动设计

Linux的内核是有设备管理、进程管理、内存管理和文件系统组成,linux设备驱动可以分

为字符类设备、块类设备、网络接口类设备和其他非标准驱动。SM1设备被看做是字符型设

备。

每个SPI外设都由1个总线号、1个设备号和1个功能号来标示,共有3个访问空间,即

内存空间、I/O端口、和配置寄存器。每个设备功能都有一个配置空间,用于决定SPI的工作

方式和映射到系统中的地址。相关函数:

static struct file_operations sm1_fops={

.read = sm1_ker_read,//读

.write = sm1_ker_write,//写

.ioct = sm1_ker_ioctl,//控制

.open = sm1_ker_open,//打开设备

.release = sm1_ker_release,

//释放设备

}; SM1驱动数据结构;

int sm1_init_module(void)

{

int ret=0;

ret=register_chrdev(sm1_major,sm1_DEV_NAME,& sm1_fops);

if(ret

{

龙源期刊网

printk("device register failed.n");

return -1;

}

if((kbuf=(unsigned char *)kmalloc(DATALEN,GFP_ATOMIC | GFP_DMA))==NULL)

{

printk("Allocate the kernel buffer failed.n");

goto fail_mask;

}

m_GPIOAddr = ioremap(0x56000000,1024);//映射通用IO地址

smart_SetBus32Bites();//设置32为数据宽度

Smart_SSX30Init();//对SM1芯片进行初始化加载

printk("embed encard Smart_init_module!n");

return ret;//加载驱动成功

fail_mask:

unregister_chrdev(Smart_major,SMART_DEV_NAME);

return -1; //加载驱动失败

} SM1设备注册,以及初始化。

3.4 SM1 API设计

由于SM1算法主要有:ecb模式加密,ecb模式解密、cbc模式加密,cbc模式解密等,

API函数有:SM1_OpenDev,SM1_CloseDev,SM1_Initdev,SM1_LoadKeyIV,

SM1_EcbEncrypt,SM1_EcbDecrypt,SM1_CbcEncrypt,SM1_CbcDecrypt。通过这些API函数

可以对数据信息进行加解密,当黑客截获数据也无法破解,保证信息安全传递。

结论

龙源期刊网

本系统通过嵌入式系统实现了SM1算法接口,为后续应用系统做好了保障。已经成功应

用在VPN系统以及CA中心。SM1算法效率高,速度快,破解难度大。随着信息安全的发

展,国家密码管理局已经指定SM1算法作为对称加解密算法,而禁止使用软件算法,在今后

的应用中会有更大的发展空间。

参考文献

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

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

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

[4]S3C2440A 32-BIT CMOS MICROCONTROLLER USER'S MANUAL,2004.

作者简介:王振(1978—),男,湖北十堰人,硕士研究生,工程师,现供职于武汉三江

航天网络通信有限公司。