购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

0引言

随着指挥信息系统的不断发展及深入部队,现代战场的指挥决策已经越来越依赖于指挥信息系统功能的高效、安全运行。系统中软件的安全作为指挥信息系统安全的重要组成部分,越来越受到人们的重视。然而,目前软件安全面临着诸多威胁,针对软件的恶意攻击主要有逆向分析(Reserve Analysis)、代码篡改(Code Tamper)和软件盗版(Software Piracy)三种方式 [1]

针对软件的逆向分析是指通过分析目标系统,确定其内部交互关系,再通过高层抽象或其他形式再现目标系统的过程 [2] 。根据逆向分析的对象不同可以分为源代码分析和可执行代码分析。目前指挥信息系统面临的威胁主要来自针对可执行代码的逆向分析。

针对可执行代码的逆向分析一般是通过对可执行程序进行反汇编,进而分析汇编代码来理解代码功能,然后用高级语言重新描述这段代码,逆向分析原软件的设计思路。逆向分析技术主要分成静态分析技术和动态分析技术两种。静态分析技术是指对程序的汇编代码或者更高级代码后在不运行的情况下在语法和语义上理解程序的行为,分析程序的特征。动态分析技术是指通过调试的方式在程序运行过程中动态跟踪程序控制流、数据流和内存数据等变化来对程序进行分析,主要有依托操作系统及硬件提供的调试接口和依托二进制插桩技术两种方式。以后者为技术基础的调试器已经比较成熟。随着逆向分析技术的不断发展和各种逆向分析工具的愈发强大,逆向分析的难度正不断减小,分析成本也大大降低。通过对指挥信息系统中软件进行逆向分析,不仅可以获取其中的关键算法,窃取软件核心技术,还会使得敏感数据直接暴露在攻击者面前,影响指挥信息系统的运行效能和安全性。

软件篡改是指攻击者在利用工具对代码进行分析和理解后根据自己的利益需求对其进行非法修改的过程,包括对软件内部数据、控制流结构和软件功能进行改变的行为。攻击者可以通过软件篡改技术非法修改指挥信息系统重要数据并发布虚假消息;利用程序漏洞改变程序控制流,进而获取软件所在计算机用户权限进行更大程度的破坏;通过打补丁的方式修改程序并反向植入软件,为以后进行攻击做准备等。这些行为会对指挥信息系统平时和战时的作战效能产生极大不利影响,严重的甚至会改变战争走向。

软件盗版是指通过逆向分析软件的核心算法信息或者使用篡改的方式使得软件注册验证等措施失效,再对其进行非法的复制分发 [3]

软件防护技术是通过技术手段防止对软件产品的非法使用、复制和恶意用户对软件的攻击与篡改 [4] ,目前,主要有软件加壳、代码混淆、防篡改、软件水印、虚拟机和基于硬件等保护技术。代码加密技术是代码混淆技术的一种,由于其具有防护强度高,不易破解的特点,非常适用于对于安全性需求较高的指挥信息系统软件。

使用加密技术对代码进行保护是文献[5]在2004年提出的,将程序源代码或者可执行文件中的部分代码利用密码学算法进行处理,使其从明文域变换到密文域,使原本较为清晰的程序语义变得晦涩难懂。再利用代码自修改技术在加密代码执行前插入一段解密程序,当软件运行至加密点时,首先运行解密代码将密文解密成明文,然后在内存中运行代码,从而保证软件运行的正确性。代码在静态时以密文的形式保存,使得攻击者理解代码必须在破解密码算法的基础上进行,有效地对抗攻击者的静态分析,保护软件代码不被轻易逆向分析和篡改。此后,文献[6~9]对代码加密方案进行了改进,增强了密钥的隐蔽性,并采用链式解密进一步增加逆向分析的难度。

然而这种方式始终存在着两大弊端。首先是密钥的保存问题,对加密代码进行解密一定需要获取密钥,无论以何种形式将密钥存放在软件中都是不安全的;其次是无法有效地对抗动态分析。当攻击者对程序进行调试时,密文代码一定会恢复到明文状态。

针对以上问题,计划采用软件和硬件相结合的代码保护方式。对程序代码进行分块加密,代码运行时按照逻辑顺序依次解密运行,在加密代码的前后插入解密和再加密哨兵代码,保证同一时刻只有一块加密代码处于解密状态,防止攻击者对代码进行内存dump攻击。同时,将代码块的解密密钥置于加密锁中,利用加密锁硬件设备保证其安全性,程序运行到解密和加密代码时访问加密锁查询密钥。通过这种方式,保证加密代码和密钥的安全,为指挥信息系统软件提供高强度保护。 c6lpEu2O81D8t+kiCaG4waznxT/2TuYqPuwG3dt9f537sD6gb0F39SG+oFftCXOZ

点击中间区域
呼出菜单
上一章
目录
下一章
×