针对嵌入式系统中信息安全的特点,选择椭圆曲线公钥加密体制ECC( Eniptic Curves Cryptosystem)作为加解密系统体制,应用开源安全软件开发包OpenSSL作为密码库开发了加密和解密系统。
一、椭圆曲线加密体制
椭圆曲线加密体制ECC是基于椭圆曲线离散对数问题( ECDLP)的一种公钥加密体制,我们采用大素数有限域GF(p)上的方程y2=x3+ax+6(modp),这里p是大素数,a和b为两个小于p的非负整数,它们满足:4a3+27b2 (mod p)≠0。椭圆曲线离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,可以证明由k和P计算Q比较容易,而由Q和P计算尾则比较困难。由于椭圆曲线密码体制ECC所具有的特点,ECC可以用较小的开销(软硬件规模、存储要求、带宽)实现较高的安全性,是一种能够提供高比特强度的公钥加密体制。
二、OpenSSL简介
OpenSSL是一个用来开发网络安全软件的开源软件包,不仅实现了SSL协议,而且拥有功能强大的密码库。OpenSSL采用C语言作为开发语言,有优秀的跨平台性能。OpenSSL包括三个部分:SSL协议库,加密算法库,应用程序。其中加密算法库实现了大部分主流的加密算法和标准,包括对称加密算法,公开加密算法,散列函数算法,数字证书标准等。任何人都可以免费使用OpenSSL来实现消息摘要、文件加密和解密、数字证书、数字签名和随机数字产生等功能,以及解决信息的安全传输问题。使用OpenSSL可以缩短软件开发周期,提高软件的运行效率和稳定性。本系统中使用的OpenSSL-1.0.O版本有椭圆曲线加密体制的支持,可以基于OpenSSL软件包提供的椭圆曲线相关函数构建完整的椭圆曲线密码体系方案。由于其良好的跨平台及程序可移植性,可以方便地移植椭圆曲线密码系统到arm-linux平台或其他种类嵌入式平台系统。
三、椭圆曲线加密体制及其实现
椭圆曲线加密体制的两种常用算法是EC -ELGamal与Men-ezes-Vanstone。其中,EC-ELGamal算法是基于椭圆曲线的ELGamal型加密体制,其基本思想是将椭圆曲线的点加和点乘运算类比为有限素域上的运算,加密实施中要求将明文编码为椭圆曲线上的点。Menezes-Vanstone算法利用屏蔽明文的方法避开了明文嵌入的问题。本系统利用OpenSSL-1.0.0提供的椭圆曲线进行密码系统的设计与实现。下面对两种椭圆曲线加密体制的算法进行介绍并附上用C语言设计的程序主要实现代码。
1、EC—ELGamal加密算法及其实现
(1)EC-ELGamal算法加解密及通信的过程
EC-ELGamal算法:
①选定椭圆曲线Ep(a,b),并取椭圆曲线上点G作为基点。
②用户B选择一个私有密钥k,并生成公开密钥K=kG。
③用户B将Ep(a,b)和点K,G传给用户A。
④用户A接到信息后,将待传输的明文编码到Ep(a,b)上一点M1,并产生一个随机整数r。本程序设计中随意选择G作为待加密的信息M1为例,也可以选择椭圆曲线上的其他点。
⑤用户A计算密文C1=G+rK;C2=rG。
⑥用户A将密文CI、C2传给用户B。
⑦用户B接到信息后计算M2=C1-kC2,M2即为解密的数据。
(2)OpenSSL实现EC-ELGamal算法主要代码
//加密操作,对点M1(此处以G为例)加密,C2=rG,C1=G+rK,
//其中K为B的公钥。
//OpenSSL里的函数功能:EC_POINT_mul是点乘,EC—POINT_
//add是点加。
EC_POINT_mul( group, C2, NULL,G,r,ctx);
EC_POINT_mul(group,B,NULL,K,r,ctx);
EC_POINT_add( group, C1,G,B,ctx);
//解密操作,对得到的(C1,C2)解密得到M2=Cl-kC2
EC_POINT_mul(group,R,NULL, C2,k,ctx);
EC_POINT_invert( group,R,ctx);
EC_POINT_add( group, M2, Cl,R,ctx);
M2即为经过解密得到的椭圆曲线上的点,与被加密的明文点M1进行比较,证明解密所得的点的坐标与被加密的数据点的坐标完全相同。此处实际应用中要涉及到用各种编码算法将明文编码到椭圆曲线上的明文点M1,最后再对解密所得的数据M2解码得到原明文。
2、Menezes-Vanstone密码算法及其实现
(1)Menezes-Vanstone算法加密解密及通信的过程
Menezes-Vanstone算法:
①选定椭圆曲线Ep(a,b),并取椭圆曲线上点G作为基点。
②用户B选择一个私有密钥k,并生成公开密钥K=kG。
③用户A将明文M变换成为有限域Zp中的二元组M=(m1,m2)。
④用户A产生随机数r并计算:
RO=rG
(c1,c2)=rK
R1=clml( mod p)
R2=c2m2( mod p)
⑤用户A将(RO,R1,R2)作为密文发送给用户B。
⑥用户B接收到密文后计算:
(dl,d2) =kR。
(mll,m22)=(Rldl_1(mod p), R2d2_1(mod p))即为解密所得数据,与原加密数据(ml,m2)相同。
(2)OpenSSL实现Menezes-Vanstone算法主要代码
//加密操作,对( ml,m2)在有限域zp内赋随意值如下
BN.hex2bn(&ml,”3A2794482D6410697 C85 FA4643BAI DAEA76 FFAE6EC26A2C8");
BN_hex2bn( &m2,"AF7DF34CDA2DF2ACC65 C31BE95 A3888FC5DCC7 04461308EC");
//取参数p,a,b,其中p后面要用到
EC_GROUP_get_curve_GFp( group,p,a,b,ctx);
//r为取的随机数,计算RO=rQ
EC_POINT_mul( group, RO, NULL, Q,r, cLx);
//计算C=( cl,c2)=rK
EC_POIN'r_mul( group, C, NULL, K,r, ctx);
EC_POINT_get_affine_coordinates_GFp( group,C,cl,c2, ctx);
//计算Rl=clml( mod p),R2=c2m2( mod p)
BN_mod_mul( R1, cl ,ml,p,ctx);
BN_mod_mul( R2, c2 ,m2 ,p, ctx);
//解密操作,首先计算D=(dl,d2)=kRO,BN_mod_mul函数是
//进行模乘运算
EC_POINT_mul(group, D, NULL, RO,k,ctx);
EC—POINT—get一affine-coordinates_GFp( group,D,dl, d2,ctx);
//分别取dl与d2对p的模逆此处分别记为dll与d22
BN_mod_inverse( dll ,dl ,p, ctx);
BN_mod_inverse( d22, d2,p,ctx);
//解密(rull ,m22)=(Rldl -1( mod p),R2d2 -1( mod p))
BN_mod_mul( mll, R1 ,dll ,p,ctx);
BN_mod_mul( m22, R2, d22 ,p, ctx);
此处( mll,m22)经数据转换输出十六进制数据为:
mll: 3A2794482D6410697C85 FA4643BAIDAEA76FFAE6EC26A2C8
m22: AF7 DF34CDA2DF2 ACC65 C31BE95 A3888 FC5 DCC704461308EC
结果证明(mll,m22)与(m1,m2)相同,加密解密成功。
四、安全密码系统结构及分析
本系统基于arm9开发板搭建arm-linux系统,用OpenSSL软件包开发了完整的加解密程序,验证OpenSSL在arm-linux平台上实现的可行性及易用性和安全性。实验结果在主机的Linux操作系统中的rmmcom串口终端中显示。现对该安全加密系统的系统结构、搭建步骤、实验分析进行介绍。
1、安全密码系统结构
本嵌入式平台安全密码系统的结构如图1所示。

图l中各部分的功能简介如下:
(1)嵌入式硬件平台是安全加密系统的硬件基础,本系统采用ann9核心开发板,并可根据功能需求进行扩展。
(2)嵌入式操作系统是安全加密系统的系统平台,本系统采用了标准的Linux操作系统。
(3) OpenSSL层实现了SSL安全套接字层协议及其相关加密解密的支持。
(4)安全系统应用层提供基于安全加密的应用服务。
2、软硬件平台介绍
本系统平台采用以arm9为核心并移植Linux操作系统的嵌入式开发平台,基本的软硬件参数如下:
(1) CPU处理器
Samsung S3C2440A,主频400MHz,最高频率达到533MHz。
(2) SDRAM内存
64M SDRAM,32位数据总线。
(3) FLASH存储器
64M Nand Flash存储器;2M Nor Flash存储器。
(4)接口和资源
1个10M以太网RJ-45接口(采用DM9000网卡芯片);3个串行通信接口;1个USB Host接口;1个USB Slave B接口。
(5)移植Linux版本2.6.31
3、实验步骤
(1)主机搭建arm-linux-gcc交叉编译环境,用于对软件库及应用程序进行交叉编译。
(2)向ann9开发板上移植经过裁剪的Linux操作系统,构成基本的arm-linux软硬件开发平台。
(3)下载OpenSSL-I.0.0并用交叉编译器arm-linux-gcc交叉编译并生成静态函数库,并向开发平台移植静态函数库。
(4)将两种加密系统的完整代码分别用arm-linux-gcc交叉编泽,将生成的可执行程序移植到arm-linux平台上运行。
4、实验分析
通过对椭圆曲线的两种算法的程序进行测试分析表明:
(1)两种椭圆曲线密码体制的程序都能准确进行加密解密,程序运行正常。同时,两种密码体制的安全性都是基于椭圆曲线离散对数问题(ECDLP)。
(2) EC-ELGamal密码体制要求将明文编码为椭圆曲线上的点,还要考虑明文嵌入算法增加程序代码量及运行总时间的因素,在实用性上存在缺点。同时,EC-ELGamal密码体制存在密文相关问题(当如果攻击者已知部分明文mx,攻击者可以通过椭圆曲线方程推得my)。
(3) Menezes-Vanstone利用屏蔽明文的方法避免了明文嵌入的问题,但同时此算法也存在两种缺点:信息扩展问题(明文ml、m2被扩展成密文RO、Rl、R2,增加了存储空间和传输带宽需求)、密文相关问题(如果攻击者已知部分明文ml及其对应的密文,则他可以通过计算得到m2)。
(4)加解密速度比较。在素数域内选择密钥长度依次为192位、224位、256位、384位、521位。不考虑明文嵌入问题,统计EC-ELC amal加解密程序对基点Q进行加解密的程序运行时间,同时统计Menezes-Vanstone加解密程序对同样的Q点进行加解密的程序运行时间,表1为统计所得时间对比表。

对表1分析得出:①即使不考虑明文嵌入问题,Menezes-Vanstone在各种密钥长度的加解密速度上已经高于EC -ELGamal;②随着密钥长度逐渐增大两种算法加解密时间的增加幅度上区别不大。
小知识之OpenSSL
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
辛辛苦苦提拔起来的销冠,反手把公司卖了:内部人员泄密如何防范?从行为审计到技术锁死!
2026年硬核干货拆解,企业等保2.0怎么做才能快速通关?企业速通!
离职骨干连夜拷走十几个G,去新公司一双击全成废码:这套图纸加密方法简直绝杀!
研发骨干用几块钱的U盘卷走图纸:员工用U盘拷走图纸怎么办?企业自救方案!
军工软件源代码加密怎么做?五个超顶用的加密方法分享,分分钟教会你!
离职工程师把图纸塞进压缩包带走:图纸防泄密这一记反杀,让他去新公司立功的美梦当场碎掉!
销冠离职带走千万业务大盘?如何防范销售跳槽引发的企业资产与客户流失危机!
源代码加密软件哪个好?安企神软件透明加密+外发管控+权限分级三重守护!
企业数据防泄露措施有哪些?
企业数据防泄露措施有哪些?企业数据防泄露措施有哪些?找谁做?随着信息技术的不断发展,企业数据泄露事件频繁发生,给企业带来了巨大的经济损失和声誉损失。为了保护企业的核心数据,企业需要采取一系列的数据防泄露措施。本文将介绍企业数据防泄露的措施,帮助企业更好地保护数据安全。一、数据加密数据加密是一种常用的数据防泄露措施。通过...
最强干货:企业数据防泄密的26种实战方法
防止内部泄密的方法1、教育员工:不要低估员工教育的力量。CoSoSys的研究显示,60%的员工不知道哪些公司的数据是机密的。因此,他们可能会意外泄漏或使用不当。2、签署法律文件:很多企业在员工入职的时候,都会签署保密协议,尤其是开发人员这样的涉密人员,通过这种方式,可以一定程度上的防止员工主动泄密。3、文件加密:文件加...
如何规范上班时员工行为?
很多公司员工上班期间会打游戏、刷剧、看电影、炒股、干一些与工作无关的事,这极大的影响了公司的业绩和员工的工作效率和氛围。那么应该如何规范员工的行为呢?1、利用安企神软件对员工的办公电脑打游戏、刷剧、看电影、炒股等行为进行禁止。设置方法:打开策略模板管理 > 应用程序管控 > 然后勾选【开启程序黑白名单】然后...
四种屏幕防拍照、截屏、打印等数据泄露水印解决方案
信息媒体的数字化为信息的存取提供了极大的便利性,同时也显著提高了信息表达的效率和准确性。特别是随着计算机网络通讯技术的发展,数据的交换和传输变成了一个相对简单的过程,人们借助于计算机、数字扫描仪、打印机等电子设备可以方便、迅速地将数字信息传输到所期望的任何地方。但随之而来的副作用是这些数字形式的数据文件在流转过程中安全...
商业机密用u盘存储安全吗?
不安全商业机密用u盘存储是不安全的,商场如战场,如今的商业战场竞争越来越激烈,很多公司都会不遗余力的窃取同行的商业机密,而很多的管理者会将企业的重要商业机密存储在u盘中,今天给大家讲一下如何将商业机密更安全的存储起来。1、U盘内数据加密利用安企神可以对公司的机密文件进行加密,然后将加密后的机密文件移到u盘里,这样U盘内...