APP下载

单片机攻防技术研究*

2018-07-26王诗琹陈祥东

通信技术 2018年7期
关键词:仿真器加密单片机

王诗琹,陈祥东

(中国电子科技集团公司第三十研究所,四川 成都 610041)

0 引 言

电子设备上的单片机执行程序通常是运用仿真器下载到芯片内的。以常见的由单片机和DSP芯片组合设计的模块级设备为例,单片机可与仿真器相连接,通过JTAG接口直接读取并保存执行代码。这种设计方法存在一定风险,虽然通过仿真器读取的只是执行代码,但随着单片机破解技术的飞速发展,应当对单片机本身采取防御措施。

对于设计人员而言,设备的安全性设计是极其重要的一环。网络信息安全设备是信息系统基础设施的护盾,保障信息传输过程中数据的安全性。本文主要介绍几种常见的单片机攻防技术,希望对提高网络信息安全产品的安全性设计有所启示。

1 单片机攻击技术

信息安全电子产品的攻击手段与防御措施永远是一个相互影响、制约的矛盾共同体。为了更好地保护设备的设计原理和设备自身的安全性,在采取相应的防范措施前,必须了解一些常见的攻击技术,做到知己知彼,百战不殆。

1.1 软件攻击

攻击者一般会利用CPU的I/O接口、通用接口协议、公开的保护算法或软件自身的安全漏洞来实施软件破译操作。关于对ATMEL公司的AT89C系列单片机的攻击,便是一个经典的案例。软件攻击操作员使用串行芯片,擦除操作序列的设计缺陷,并在加密锁复位后使用自编程序。芯片中的源代码是在运行擦除操作函数对程序的内存数据进行清除的过程中,被反向输出并窃取。

1.2 电子探测攻击

该攻击方式是经由对设备的各种接口信号的电磁辐射特征进行监控来获取具有高时间分辨率和攻击能力的所有功率端口的模拟特性[1]。由于单片机是一种有源电子器件,当执行不同的指令时,相应的功耗也会相应改变。通过使用一些特制的测量分析仪和数理统计,对测试结果进行监测、分析和处理,即可获得所需的关键数据或信息。

1.3 过错产生技术

该技术利用某种异常的工作条件,触发处理器出现软件故障,并提供额外的可访问性攻击。电压攻击和时钟信号攻击是两种常见的攻击方式。低电压或高电压攻击可使电路或诱导功率处理器的自启动保护程序被禁止运行,以达到执行错误操作的目的。时钟瞬态跳频可以在不损坏需要保护的信息情况下,重置保护电路。功率和时钟的瞬时跳动会影响某些处理器中单个指令的解码和运行。

1.4 探针技术

探针技术是通过破坏元器件塑封层使内部的布线显现出来,再通过观察、操作和干扰单片机内部信号而达到攻击的目的。

为了方便,上述四种攻击技术一般分为两种类型:一种是入侵攻击(物理攻击),需要在一个特殊的工作环境中通过使用半导体测试设备、显微镜和定位器来破坏芯片的塑封外壳;其他三种方法属于非侵入式攻击,单片机不会遭受物理损毁。在特定环境下,非侵入性攻击是相当危险的,因为非侵入性攻击所使用的设备一般都是自制的,并可方便进行升级,且价格便宜。

非侵入式攻击的操作过程对攻击者的处理器基础知识和软件编程能力有较高要求。相反,入侵探测攻击则不需要操作者拥有太多的专业知识,通常使用一套模式化的软件或工具就能进行操作。因此,对MCU的攻击往往从入侵的逆向模式开始,而操作者积累的经验又能促进更廉价和快速的非侵入式攻击技术的发展。

2 单片机防御技术

2.1 概述

任何一款单片机芯片,从理论上讲,反向研究只要有足够的费用和时间即可将其破解。因此,在单片机安全设计中,要增加攻击者的成本和时间,这是开发设计人员必须牢记的基本原则。

此外,还应注意以下几点:

(1)在芯片选型的策划阶段,应该进行充分的调研分析和对比,了解MCU破译技术的新进展,包括MCU的正向设计思路和破译,尽量不要使用普及率高或同一系列的芯片。

(2)尽量不要选择在中国很受欢迎的芯片,因为芯片破解技术也能轻易获取。可适当选用较生僻、偏冷门的单片机来加大破译者的攻击难度和破解时间。

(3)选择采用新工艺、新结构、上市时间较短的单片机,如ATMEL、TI、ARM等新产品。

(4)项目研发成本预算中,在针对硬件成本预算资金许可的范围内,应当选择具有硬件自毁功能的智能卡芯片,以有效应对物理攻击。

(5)打磨掉芯片型号等信息,或重新印上其他型号。

2.2 常用的单片机防御技术

SCM防御手段可分为硬件防护和软件防护两种范例。软件防护不能防止他人复制,只会增加破解分析的难度,但对于行家来说是不够的。因此,将着重介绍和分析以下三种硬件防护方法。

2.2.1 总线置乱法

关于总线加扰的操作方式,一般是破坏MCU和EPROM之间的数据总线和地址总线顺序,包括以下几种方法[2]:

(1)将数据或地址总线的某些线位交换或求反。

(2)将数据或地址总线的某些线位进行异或。

(3)把(1)(2)结合起来构成较复杂的电路。

(4)在调用EPROM时,地址总线(或数据总线)与系统程序的存储地址(或数据)之间的对应关系根据密钥进行交换,如密钥被存储在一片AT64 73芯片中,且将高8位地址的密钥重新编码,也就是说,破坏原始程序的页码。

(5)通过增加GAL器件,利用其中的加密模块对硬件电路进行保护处理。

2.2.2 RAM替代法

电池用来保护RAM,使其避免发生掉电故障。也就是说,首先将一系列数据写入RAM,并将其连接到电池,然后接入剩余的芯片。此时,当SdCM系统运行时,CPU首先从RAM读取数据。这既可以作为判断CPU执行程序正常运行的基本条件,也可以是CPU将运行的程序。将数据进行十六进制的数据比对检测。若比对的结果相同,则系统将继续正常运行;反之,系统不能运行。

2.2.3 利用MCU本身的加密位进行加密

MCU大都设置有加密位,最成功的防御方法就是对总线进行烧毁操作。在AT89系列芯片设计开发过程中的运用最为典型。原理是将MCU数据总线中特定I/O数据进行破坏或重置,就算加密位被擦除,译码器也不能读取出芯片程序的正确源代码。

上述方式也存在缺陷:一是可利用仿真器把RAM接上电池,取下来放在仿真器上读取源程序;二是这些操作方式在加密小程序方面是有效的,但是因为总线已经被破坏,接口芯片和存储器不能再通过总线进行扩展;同时,芯片内部的存储模块也不会再拥有可反复进行编译、读写的功能特征。

3 动态防御技术

在讨论传统防御技术的基础上,为了更好地适应新技术的快速发展,提出了一种实用、有效的动态防御技术实现方案。

动态防御技术的核心理念:在程序中看到的地址其实是虚拟地址,当FPGA运行时,CPU程序给出与虚拟地址对应的内存实际地址[3]。原理图如图1所示。

图1 动态防御技术原理

子程序中的调用函数,则在同一子程序中第一次调用的实际函数的绝对地址可以是135H。当调用第二个函数时,实际地址可能就是375H,它的子程序功能可能与相对地址的函数功能根本不同,调用前需通过软件插入真实地址。因此,可以通过连续调用相对地址相同的子程序函数,从而调用多个不同的子程序来实现防御。虚拟地址映射到真实地址的地方,可以由程序员自己安排,只需在调用前输出真实地址的对应关系列表即可。硬件和软件的结合,虚拟地址和真实地址的组合,使得对方即使获得了源程序,也难以解析对应关系,实例见图2。

图2 实例

但是,这种动态防御技术方案也存在一定漏洞,如很难应对使用仿真器进行的单步跟踪分析操作方式。因此,需做进一步改进。

改进方法一:在FPGA中插入计数器函数,清除CPU,一旦时间超过限制,FPGA就将启动具有停止操作功能的函数。这时CPU将不能继续正常运转,模拟仿真的过程也就无法操作。

改进方法二:在FPGA内运行数据加密处理函数,并由CPU运行特定时间范围后再去访问FPGA,读取密码数据流进行数据比较,若比较结果不一致,则由CPU破坏主内存RAM中的数据,使所有运行结果出错。用这种方法可有效应对逻辑分析仪的跟踪分析。

在执行数据加密运算函数时,可使用与密码参数进行逻辑XOR的方式。但是,当使用这种方法时,实现动态防御的密码参数和逻辑运算函数必须放置在难以解码的同一芯片上。

针对目前的芯片攻击技术,建议采用ActEL公司生产的42MX系列FPGA进行一次编程开发。这种芯片不能读取包含代码点的文件,不能进行代码分析和破译。同时,此类型的芯片资源十分丰富,并拥有完整的、成套的设计工具,运用简洁、方便的VHDL语言就可实现各种功能。

4 结 语

随着单片机系统产品越来越广泛地应用于电子产品设计,对其设备中的软件安全防护问题需引起高度重视。性能优良的硬件是实现外部攻击的物质基础,再加上安全可靠的软件保护措施,二者缺一不可。本文概括性描述了相关技术,在实际设计中还应考虑结合不同设备的具体情况合理进行防御设计,从而提高网络信息安全设备自身的安全性。

猜你喜欢

仿真器加密单片机
一种新型离散忆阻混沌系统及其图像加密应用
AI仿真器将大大提高科学领域的仿真模拟速度
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
一种基于熵的混沌加密小波变换水印算法
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
基于多用户无线仿真器系统的研究
加密与解密
车辆自组织网络的仿真趋势