火控系统是控制射击武器自动实施瞄准与发射的装备的总称,同时火控系统软件也是我国科研技术人员智慧的结晶,如何保障这一科研成果不被他人无偿享用,所以我们需要在火控系统软件设计的时候对其进行加密,这样才能更好的保护我们的权益。

一、火控系统软件

火控系统软件作为一种专用的实时控制软件,其载体一般为只读存储器ROM,其运行环境为自行设计的专用计算机,它不同于其它商用软件,并不要求能够在通用PC机使用。

基于以上特点,我们在设计火控软件时,应充分考虑火控软件所处的硬件环境,对其加密必须贯穿于整个程序。

根据火控软件的特点,对其加密时所采用的主要技术有:

①密文技术-—一防静态分析;

②反跟踪技术一防动态分析。

二、火控系统软件加密的实现

一般地,分析一个软件采用以下两种方法——静态分析法和动态分析法。静态分析法主要利用一些反汇编工具将机器码反汇编成汇编语言代码来进行分析,而动态分析法则利用一些常用的调试工具软件对其进行动态跟踪。

1、密文生成算法

对抗静态分析,只要将程序代码变为密码即可,目前有许多方法,如DES法、RSA法,这些算法抗攻击强度很高,但开销太大,一般常用于通信领域;对于计算机软件加密,由于采用密文技术主要是为反跟踪和抗分析而设的,加密算法本身并不要求太复杂,只要其不能轻易被破解即可,目前计算机加密系统用的最多的加密算法是仿射变换法,我们使用的逻辑异或算法和循环移位算法就属于这种算法,下面的程序能对256个字节进行加密处理:

火控系统软件如何加密

这里,密钥为与机器运行环境有关的数据,如开关量代码、可编程逻辑器件之状态字(节)或写入到EPROM中的数据等,相应地,我们可以编写出以下解密代码:

火控系统软件如何加密

2、反跟踪技术

反跟踪的目的是阻止解密者利用一些常用的调试工具如DEBU G、CV、TV等来弄清程序的执行过程和加密的思路,从而有效地保护加密的思想,提高加密强度。

要实现反跟踪,有两种途径:第一种为破坏跟踪环境,使跟踪者跟踪不了几步就死机;另一种为反穷举法,使解密者在“耗尽精力”之前不能进行实质性的跟踪,只要我们将密文技术和反跟踪技术有机地结合起来,就可以有效地对付解密者的跟踪。

目前已经使用的反跟踪方法很多,常用的有破坏中断向量表、大循环多出口、隐蔽转移、阶梯式脱密、破坏堆栈、逆指令流法和封锁键盘等。本文根据火控软件的特点,有机地将封锁键盘、破坏中断向量表、隐蔽转移、阶梯式脱密等方法结合起来,使整个反跟踪模块成为不可逾越的技术。

设计一个加密的火控软件,关键在于充分考虑其所处的硬件环境,火控软件只有在其特定的硬件环境下,才可以正常运行,这就必须使用各种开关量代码、状态字等作为密钥,亦可将它们通过一定的算法处理作为密钥。

下面是部分反跟踪程序模块:

火控系统软件如何加密

 

火控系统软件如何加密

从上面程序可以看出,反跟踪程序是不可逾越的,只有一步一步跟踪才能找到火控软件的真正入口点,如果我们加大反跟踪程序的长度(一般6...8K即可),则势必拖跨解密者,使其半途而废。

3、总框图

由于火控软件的载体一般为EPROM,而被加密软件要运行必须将程序还原,为此,必须将ROM中的程序移入RAM中才能执行。

火控系统软件如何加密

小知识之EPROM

EPROM由以色列工程师Dov Frohman发明,是一种断电后仍能保留数据的计算机储存芯片——即非易失性的(非挥发性)。它是一组浮栅晶体管,被一个提供比电子电路中常用电压更高电压的电子器件分别编程。一旦编程完成后,EPROM只能用强紫外线照射来擦除。通过封装顶部能看见硅片的透明窗口,很容易识别EPROM,这个窗口同时用来进行紫外线擦除。