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—),男,湖北十堰人,硕士研究生,工程师,现供职于武汉三江
航天网络通信有限公司。
发布评论