基于STM32的硬件狗设计与实现

2013-03-18 22:39滕广超郎建军杜奇才林嘉宇
微处理机 2013年6期
关键词:程序段序列号密钥

滕广超,郎建军,杜奇才,林嘉宇

(1.国防科学技术大学电子科学与工程学院,长沙 410073;2.武警黄金一总队通信科,哈尔滨 150086;3.特种作战学院侦查系,广州 510500)

1 引言

随着人们对软件的依赖性越来越高,党、政、军的各机要部门借助软件管理信息、调度、自动化、仿真等应用也越来越广泛。同时,软件系统的安全操作等方面存在着巨大隐患。为了防止失泄密事故的发生,保证需要被保护的软件操作和访问的合法性,要在技术防范方面提高水平,加强拒绝非法访问的手段和防范措施,以技术为手段的保护成为保护软件的最重要方法[1]。

对软件的常用保护技术通常有软保护和硬保护两种。软保护是通过在程序中使用一些独特手段来实现加密变换,验证使用者的合法性,重点在如何反拷贝、防静态分析、防动态跟踪等方面[2]。硬保护是一种需要外插额外硬件的加密手段,软件必须通过访问指定的硬件,并与其进行数据交换才能执行。由于硬保护依赖硬件,相比于软保护来说具有不易复制性,所以硬保护更加可靠。现有最常见的硬保护设备主要是硬件狗(加密锁),它可以有效地保护软件不被非法复制和非授权访问或使用,从而达到保护软件的目的。

目前市场上在售的硬件狗,都是采用商业密级加密技术研发的产品,加密的手段及深度有限,因此选用第四代硬件狗的设计方案,采用STM32系列芯片,如STM32F103ZET6,这款芯片最重要的特点是内含唯一序列号,在作为硬件狗的应用方面具有极大优势。

2 硬件狗系统设计

2.1 基本原理

通过硬件狗来保护涉密软件的基本原理就是在程序执行过程中使程序对硬件狗进行访问或读写等操作,使被保护程序对硬件狗有非常强的依赖性。通过硬件狗芯片具有的不可复制性和不可替代性,来实现保护涉密软件不被非授权访问的目的。

2.2 硬件结构

硬件狗的硬件采用成熟的高性能国际化标准智能芯片,主要部件有:USB接口、微处理器以及存储器。其中,USB端口通讯实现了硬件狗和PC软件的通信,同时可以有效防止通过分析通讯数据来对硬件狗进行破解;微处理器不仅可以实现对硬件狗的芯片进行基本操作、读写存储器的数据等功能,还可以实现AES算法、椭圆曲线算法的运算和被移植程序段的运行以及使硬件狗和被保护软件不定时的通信和认证;存储器可划分成数据存储区和密钥存储区。

2.3 相关变量

设计时主要体现了硬件狗芯片中的唯一序列号、芯片主频和看门狗单元。对硬件狗内含芯片的唯一序列号的操作及使用可以有效防止硬件狗被复制。看门狗的使用可以保证PC软件和硬件狗及时的通信交互,提高了程序对硬件的依赖性。

2.4 防护措施

(1)被保护软件开始运行时,先访问硬件狗,通过访问来确认硬件狗是否存在。被保护软件要识别出硬件狗的存在,才能开始运行,如果硬件狗没有与计算机相连,或是相应驱动程序没有加载,打开设备的操作将失败。

(2)如若硬件狗存在,则将其与软件匹配。软件首先向硬件狗发送一个被公钥加密后的随机数,硬件狗收到后,用自身的私钥对密文进行解密,并将解密后的明文,也就是软件产生的随机数返还给软件,软件即可将收到的随机数与软件产生的随机数比较,以确认软件与硬件狗的配对。由于产生的是随机数,使破解者很难找到规律,并且破解者不知道公私密钥对,也不能解出返还的随机数。通过这个步骤,可保证软件与加密锁硬件的一一对应。这样就使破解者不能轻易通过软件引导区进入核心程序段。需要强调的是有些软件和硬件狗的配套产品中,直接将硬件狗的唯一序列号写在软件中来进行匹配操作,这样就降低了唯一序列号的保密性,会使破解者能通过分析软件来获得唯一序列号,利用获得的序列号来仿制硬件狗。

(3)在找到合法的硬件狗后,验证用户口令,也就是授权密码,只有授权密码正确,软件才能正确向下执行,如密码不正确则请求再次输入,如果输入的口令连续若干次错误,则硬件狗会自锁,在一定时间内使硬件狗失效或不可操作。通过这种手段可以防止破解者通过暴力破解手段侵入被保护的软件系统。

(4)当通过授权密码验证后,此时被保护软件已经完成了引导区的工作。下一步则是软件核心区的程序。在软件编制完成后,将软件的核心程序模块加密,在软件执行到核心区时,先向硬件狗请求解密,由硬件狗向软件发送解密密码,解密后方可正确运行。采用这种手段来保护软件,可以很好的实现防范代码的反跟踪。

(5)加密算法选用椭圆曲线密码算法,这是一种公钥密码体系,用两对密钥:一个公共密钥和一个私有密钥,能够很容易地实现数字签名。加密算法的目的就是要确保窃听者在没有密钥的情况,即使得到密文,也无法得到明文。硬件狗的私钥产生于其唯一序列号,可以是部分字段或经由一定变化得来,强化了硬件狗的不可复制性。

(6)在被保护软件中设置多个加密点,并且使加密点尽量分散,每个加密点都是一次对硬件狗的访问和校验过程,这样可以增加破解者分析加密点的难度。在加密点的验证过程中要利用随机数来保证加密锁输入输出数据的随机性,可以防止解密者通过统计硬件狗的输入输出数据,利用软件仿真的方式来破解硬件狗。

加密点的作用有几点,首先可以验证、检测硬件狗的存在性和合法性,该类加密点可以在应用程序源代码的任何地方进行设置。其次利用硬件狗私密钥对软件的某一段代码进行动态加解密。首先将软件的某一段代码按特定算法加密[3],使其在目标计算机中以密文的方式存放,无法以别的方式打开。该段代码使用完,则自动产生新的随机密钥,再次加密这段代码,并把密钥写入到硬件狗中,以备下一次使用。这样就保证了该段代码始终以密文的形式存放,而且每次都不相同,它可以有效阻止对程序进行静态的反汇编分析。

(7)核心程序段移植是保护软件最有力的方法。可以把最重要的核心程序代码移植到硬件狗内部,通常被保护的软件都比较庞大,具有许多模块和线程,若移植几个程序段将占据硬件狗很大的储存空间,降低硬件狗的资源利用率,所以只能选择最核心的程序段。无论是否正被执行,被移植的程序段都不会在计算机中留有痕迹,破解者无法获得这些代码的副本,因为硬件狗的硬件部分很难被复制,所以破解被硬件狗保护的软件是难以实行的。

(8)充分利用硬件狗的看门狗功能。看门狗可以防止程序跑飞,此外,也可以强化软件对硬件狗的依赖性,被保护软件在设计时,内部包含一个定时器,定时器的溢出值需要与硬件狗的看门狗窗口匹配。软件运行过程中,硬件狗会不定时的产生一个随机数,两个随机数之间的时间间隔必须小于看门狗的窗口值,并且随机数的数值也必须小于窗口值。每次产生随机数后,用随机数作为硬件狗内部定时器的溢出值开始计数。在硬件狗定时器溢出时,需要计算机与硬件狗对随机数进行加密交互以确定软件运行的合法性。成功验证后,软件和硬件狗的定时器都要归零,方便下一次计时。如果在软件定时器溢出时仍没有发生过一次合法认证,则软件退出。这种对硬件狗的认证是不定时的,加强了被保护软件对硬件狗的依赖性。

课题包括三个部分:硬件狗系统方案设计、数据加密及密钥管理、ARM平台的开发及系统实现。具体实现内容为:用AES算法或流密码算法对数据加密;利用ARM芯片内置的芯片间各不相同的唯一序列号,用椭圆曲线公钥算法进行密钥管理;仔细设计硬件狗的系统方案,使得软件系统和硬件加密设备在线、动态进行数据交换;最终实现利用硬件狗对PC软件系统的加密和保护。

3 硬件狗系统实现的核心算法

AES算法是高级加密标准算法的简称,属于对称密码算法中的分组密码算法,是一个迭代的、对称密钥分组的密码[4]。AES算法每一轮都需要一个和输入分组具有同样长度(128比特)的扩展密钥Ke的参与[5]。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据,通过分组密码返回的加密数据的位数与输入数据相同。

公钥密钥密码体系有基于整数因式分解、基于离散对数和基于椭圆曲线这三大类别。椭圆曲线密码的安全性是建立在椭圆曲线的离散对数问题之上的,是目前已知的公钥体制中,对每一比特所提供加密强度最高的一种体制[6]。它具有安全性高、密钥量小、灵活性好的特点,没有亚指数攻击,是利用有限域上椭圆曲线的有限点群代替基于离散对数问题密码体制中的有限循环群所得到的一类密码体制。椭圆曲线密码算法在技术上具有安全性高、生成公私钥方便、处理速度快和存储空间小等方面的优势,这些优点使它成为保证智能密钥安全机制的主要算法[7]。

在提取芯片唯一序列号方面,STM32F10x的唯一序列号长度为96位。通过有3个元素无符号长整形的数组来记录唯一序列号。通过对唯一序列号的存储位置取地址指针,将序列号分3段输入到数组中,后两个数组元素注意加地址偏移量,32位是4个字节,所以每次偏移量加0x04。这样,唯一序列号就被保存到长整形数组中了。

硬件加密狗采用USB接口与PC相连,是因为USB接口具有即插即用和热插拔特性,而且USB系统使用简单,性能可靠,可以解决总线的资源冲突问题,同时,USB接口可以提供很高的数据传输速率。STM32F10x自带USB模块,其USB模块为PC主机和微控制器所实现的功能之间提供了符合USB规范的通信连接,能够实现标准USB接口的所有特性。STM32F10x中,USB模块的使用是非常简单的,有大量的代码可供参考,在硬件狗的设计中主要完成两个部分:一是要初始化USB模块;二是实现STM32F10x芯片与PC软件的数据传输。

4 结 束 语

通过硬件狗提供的加密办法对软件进行保护,能够达到极高的加密强度。尤其是利用密钥加密算法可以在没有程序源代码或不对程序源代码作任何改动的情况下快捷地完成加密工作。同时,通过采用部分程序代码移植的方式,可以进一步提高被保护软件对硬件狗的依赖性。

作者创新点:选用目前市场上非常新的一种芯片STM32F103ZET6来作为加密硬件,经过阐述目前各种硬件狗的加密方法,提出一种全新的加密算法和综合加密办法,显著提高其加密强度,保证了软件的安全。

[1]谢海光,刘功申,李翔.一种保护商业化软件的解决方案[J].上海管理科学,2005(6)35-37.

[2]张竹青,白新江.软件的机密保护技术探讨[J].内蒙古石油化工,2005(12):67-68.

[3]刘长军,林嘉宇.为DSP程序的构造的加密体制[J].单片机与嵌入式系统应用,2002(11)5-7.

[4]何明星,范平志.新一代私钥加密标准AES进展与评述[J].计算机应用研究,2001(10)4-6.

[5]NIST.Advanced Encryption Standard(AES)[M].Federal Infor- mation Processing Standards Publication,2001.

[6]孙跃刚.椭圆曲线密码体制中若干问题的研究[D].吉林:吉林大学,2009.

[7]于彬.椭圆曲线密码算法的研究与实现[D].沈阳:沈阳工业大学,2004.

猜你喜欢
程序段序列号密钥
基于WinCC的物料小车控制系统设计与仿真
幻中邂逅之金色密钥
一种离线电子钱包交易的双向容错控制方法
密码系统中密钥的状态与保护*
数控系统手轮回退功能的研究与实现*
关于《国家税务总局 工业和信息化部关于加强车辆配置序列号管理有关事项的公告》的解读
recALL
TPM 2.0密钥迁移协议研究
基于NC程序段的提高数控加工监控阈值与信号同步的方法*
数控铣床FANUC 0i 系统刀具半径补偿系统参数设置解析