一种抗截获攻击的RC算法

2022-06-24 10:02刘乃琦范明钰王一芙
计算机应用与软件 2022年4期
关键词:加密算法攻击者密钥

刘乃琦 范明钰 王一芙

1(电子科技大学计算机科学与工程(网络空间安全)学院 四川 成都 611731) 2(成都市八中高中 四川 成都 610000)

0 引 言

随着互联网应用的快速发展,经网络交易和传播的软件越来越多。与实体商品不同的是软件容易被复制、修改和传播。

现有与软件保护相关的技术[1-4]包括软件水印、加密、防篡改、软件多样化、反逆向技术、虚拟机、基于网络/基于硬件的保护等,在一定程度上解决软件保护需求的同时也带来众多新问题,诸如保护的技术手段越来越复杂,其复杂和庞大程度甚至超过软件本身。

对软件的保护大致可分为三个层次:反调试(Anti-Debug)、抗分析(Anti-Analysis)、防爆破(Anti-Brute Force Cracking)。

(1) Anti-Debug。该层次采取自我保护策略,针对的是使用调试工具直接获取软件使用权的攻击。其保护思路是为软件的运行过程引入非常规机制,如利用加壳技术,限制使用调试工具对软件分析。Anti-Debug技术能够大大减少潜在的攻击者,因为调试工具最初的设计目标是诊断和改正程序中潜在的错误,大多不具备专门防备Anti-Debug的功能,需要攻击者有更强的技术能力。Anti-Debug是软件保护的第一道防线,而其技术也已基本实现标准化,加壳工具越来越普遍了。

(2) Anti-Analysis。该层次软件保护的目的是向合法用户提供完整功能,所以必须区分合法与非法用户,通常采用注册码(registration code,RC)验证的方式实现。RC算法需要具备一定的Anti-Analysis能力,才能有效限制攻击者的分析,阻止注册机或者破解补丁的出现。

(3) Anti-Brute Force Cracking。若Anti-Analysis能力足够强,往往会导致攻击者放弃对RC的攻击,转而修改可执行文件,强行改变软件的执行流程,如让软件不注册也能正常运行。所以还需部署第三道防线防止软件执行流程改变。

事实上Anti-Brute Force Cracking能力与Anti-Analysis的架构直接相关,所以总的来说,Anti-Analysis能力还是最重要的。本文针对RC的Anti-Analysis能力进行研究。

RC是一种常用的软件保护方式,一般包含两个部分[1-12]:用户端和软件作者端。其基本技术手段是软件作者端使用注册用户信息,计算生成RC。用户端是面向所有潜在用户的,因此其本身必须可以校验该RC是否有效,并且能够防止别人逆向算出校验算法;能够防止别人用暴力破解方法直接修改软件执行代码,绕过注册。

在各种软件保护的方式中,RC方式实用性强,应用面宽。由于其广泛应用,其针对性的改进研究也越来越丰富。文献[1]回顾了软件保护技术的发展历程,分析了软件保护过程的误区,指出验证的过程,就是验证特定信息和授权码之间的数学映射关系,如果数学映射关系不正确,可由此判断软件未被合法授权使用。这个映射关系是由软件开发者设定,所以不同软件生成授权码的算法可能完全不同。这个映射关系越复杂,授权码越不容易被破解。文献[2]提出一种基于静态水印和软件指令集的软件特征值提取方法,将软件版权所有者信息和软件反编译得出的有效软件指令集合进行Hash计算,作为软件特征值,并设计了应用方案。文献[3]认为软件RC的用途为限制安装、限制使用功能、限制使用时间、限制升级更新、限制使用体验,同时认为,现行的《计算机软件保护条例》无法对计算机软件RC提供充分的法律保护依据,应当对相应的法律条款进行完善。文献[4]研究了嵌入式软件保护技术,分为软件加密、软件水印、软件防篡改等技术,其中软件加密技术分软加密和硬加密两种方式,软加密主要采用RC和许可证等方法,由RC和许可证生成唯一的产品序列号,用户只有正确输入产品序列号,软件才能正常操作运行。文献[5]针对传统的软件保护措施在面对代码分析和调试工具时的不足,在RC保护的基础上,使用RSA算法对RC进行加/解密,结合安全的RC验证、硬件信息验证等方法,解决传统RC保护的安全性问题。文献[6]针对保护软件版权中存在的问题,提出基于机器特征生成RC的保护方法。文献[7]对不同方式的软件保护方法进行比较,提出基于互联网的软件保护方案,指出其保护的安全性取决于特征向量的选择,特征向量包括四个分量,分别是硬盘ID、系统时间、共有注册信息、RSA公钥。文献[8]针对中小型工程计算软件的保护要求,从控制软件的下载权限开始,在用户下载软件的同时利用DES对称加密算法加密网卡MAC地址形成唯一的RC,最后在软件用户端加上注册模块并通过对注册表的读写操作实现将软件绑定在下载软件的计算机上使用的目标。文献[9]采用“一机一码”,运用RSA算法对RC进行加密,并以数据库的形式进行密钥管理。文献[10]采用提取计算机指纹信息并添加附加码作为特征信息,运用MD5算法进行摘要处理。文献[11]提出一种利用DSA算法生成和验证软件RC的方法,RC的计算和验证分别使用秘密密钥和公开密钥。文献错误:引用源未找到提出软件有限使用和注册算法的改进方法。

上述研究认为:RC授权验证算法需要加强[1];关注软件特征码的生成和防篡改[2,6,10];从法律保护的角度对RC保护的法律依据提出建议[3];研究嵌入式软件的保护方式[4];采用非对称算法保护RC、防止代码分析[5];提出互联网条件下的软件保护方案[7];提出针对中小型工程的软件保护方案[8];采用集中式方式管理加密RC[9];对RC的生成和验证进行保护[11];研究优先使用软件的RC改进[12]。

而在RC保护方法中,对用户端与软件作者端存在交互信息被截获的风险,以及其相应的防截获欺骗能力缺乏相应的研究。本文针对两种常见的截获欺骗攻击模型,提出一种抗截获欺骗攻击的软件保护方式Anti-ISA RCSP,通过使用加密技术,提高现有RC软件保护的有效性。

1 RC软件保护技术流程

RC也称序列号,其保护过程是,首先为用户提供软件试用期,在试用期内对软件的使用时间或功能进行限制;试用期结束后,用户必须进行注册和验证方能继续使用软件。注册过程(图1)需要提供用户的独有信息(如用户名、电子邮件地址、机器特征码等,以下称用户码),并支付一定的费用。

图1 软件注册验证过程原理

图1中:

(1) 用户准备使用软件,向软件作者缴纳费用,提交用户码U,申请注册。

(2) 软件作者使用注册算法f,计算RC:R=f(U),回复给用户。

(3) 用户获得(U,R),注册成功。

(4) 用户运行软件时,向软件作者提交(U,R)。

(5) 软件作者使用验证算法F(U,R),判定用户的合法性,把判断结果返回用户。

(6) 用户收到通过验证信息,则软件继续运行;否则不能继续运行。

因此,软件验证序列号的合法性过程是验证用户码和序列号之间的换算关系是否正确的过程。

注册验证模型可抽象为三元组描述:Ω={U,f,F},其中:U是用户独有信息,或称用户码;f是注册算法集;F是验证算法集。

目前实用的RC保护方法,注册算法和验证算法都是不公开的,也就是说,这种保护模型的安全性依赖于对RC和验证码(Verification code,VC)的保护。

该模型有多种实现方式。按照是否通过网络、是否使用硬件(如USB Key)、是否在运行过程中进行随机验证等,可以有不同的注册验证类型。

本文沿用已有假定,注册算法和验证算法均不公开,在不改变原有注册算法和验证算法的条件下,引入加密技术抵抗截获欺骗攻击。

2 截获欺骗攻击模型

考虑在注册算法和验证算法都是不公开的条件下,该注册模型在截获攻击下的安全性。

攻击模型I:攻击者了解注册验证过程,能够截获步骤1、步骤2的信息,获得(U,R)对应。因此,攻击者向软件作者提交合法的(U,R)对应,可获得合法性验证,使得软件保护的技术手段失效,参见图2。

图2 攻击模型I

图2中:

(1) 用户准备使用软件,向软件作者缴纳费用,提交用户码U,申请注册;同时攻击者截获U。

(2) 软件作者使用注册算法f,计算RC:R=f(U),回复给用户;同时攻击者截获R。

(3) 用户获得(U,R),注册成功;同时攻击者获得(U,R)。

(4) 攻击者运行软件时,向软件、作者提交(U,R)。

(5) 软件作者使用验证算法F(U,R),判定其合法性,返回判断结果。

(6) 攻击者收到通过验证信息,则软件继续运行;否则不能继续运行。

在该攻击模型下,攻击者通过截获注册过程的U、R信息,破解软件的RC保护方法,获得软件的使用控制权。

攻击模型II:攻击者了解注册验证过程,能够拦截步骤(4)软件作者验证用户合法性之后的结果数据,因此,攻击者通过对结果数据以及相应的软件是否可以正常运行的关联,可以获得结果数据是否通过了合法性验证的含义,并使用通过合法性验证的数据欺骗软件,使得软件保护的技术手段失效,参见图3。

图3 攻击模型II

在该攻击模型下,攻击者截获并使用合法性验证后的结果数据,破解软件的RC保护方法,获得软件的使用控制权。

图3中:

(1) 用户准备使用软件,向软件作者缴纳费用,提交用户码U,申请注册。

(2) 软件作者使用注册算法f,计算RC:R=f(U),回复给用户。

(3) 用户获得(U,R),注册成功。

(4) 用户运行软件时,向软件作者提交(U,R)。

(5) 软件作者使用验证算法F(U,R),判定用户的合法性,把判断结果返回用户;同时攻击者截获判断结果。

(6) 用户收到通过验证信息,则软件继续运行;否则不能继续运行。

(7) 攻击者向软件作者提交任意的(U,R)。

(8) 软件作者使用验证算法F(U,R),判定其合法性,返回判断结果。

(9) 攻击者收到并修改验证信息,软件继续运行。

通过上述分析,本文认为,这种RC软件保护方式,容易受到拦截欺骗攻击,并且与注册算法和验证算法本身的安全性没有直接关系。为此提出改进方案来应对上述拦截欺骗攻击模型。

3 Anti-ISA RCSP机制

经上述分析可知,为了防止通过直接截获U、R对应,绕过RC保护(攻击模型I),和直接截获验证结果进行修改(攻击模型II),在用户与软件作者之间传递的U、R和验证结果信息需要进行保护,为攻击者设置障碍阻止其分析成功。

Anti-ISA RCSP算法(图4):沿用注册算法和验证算法保持不公开的条件。假设软件作者与用户之间的初始密钥是K,相应的加解密算法分别是EK和DK,算法过程如下:

(1) 用户向软件作者缴纳费用后,软件作者获得用户码U,为用户建立相应的加解密算法(E,D)和初始密钥K。

(2) 软件作者与用户通过协商得到本次通信的对称密钥K1。

(3) 软件作者使用U,计算RC:R=f(U),使用本次通信密钥K1,加密R,得到EK1(R);记录(U,R);将EK1(R)发给用户。

(4) 用户收到EK1(R),使用本次通信密钥K1解密得到R,即R=DK1(EK1(R)),用户存储(U,R)。

(5) 用户运行软件,与软件作者通过协商得到本次通信的对称密钥K2。

(6) 用户利用K2加密(U,R),发给软件作者,即EK2(U,R)。

(7) 软件作者收到EK2(U,R),利用K2解密得到(U,R),即:(U,R)=DK2(EK2(U,R));软件作者使用验证算法计算F(U,R),将验证结果,用K2加密返回用户,即:EK2(F(U,R))。

(8) 软件作者收到EK2(U,R),使用本次通信密钥K2解密得到(U,R),即:(U,R)=DK2(EK2(U,R)),使用验证算法F(U,R),判定用户的合法性,用K2加密判断结果EK2(F(U,R))返回用户。

(9) 用户收到EK2(F(U,R)),使用本次密钥K2解密得到F(U,R),即F(U,R)=DK2(EK2(F(U,R))):若验证结果为通过,则软件继续运行;否则软件不能继续运行。

因此,在改进的RC保护机制下,软件作者验证序列号的合法性过程是通过使用加解密技术、保护公开传递的信息被攻击者截获后无法使用来达到抗截获攻击的目的。

改进的注册验证模型可抽象为Ω={U,f,F,K,E,D},其中:U、f、F分别是原有的用户码、注册算法、验证算法集;K是密钥集,E是加密算法集,D是解密算法集。算法流程参见图4。

图4 改进的RC保护机制流程

3.1 抗攻击性分析

在攻击模型I条件下,攻击者能够截获U、密钥协商过程的数据、EK1(R),如图5所示。

图5 攻击模型I下改进的RC保护算法安全性分析

图5中,步骤1-步骤5是正常的流程。攻击模型I下攻击者在步骤2获得密钥协商过程信息,在步骤3获得EK1(R),这样在步骤6时攻击者就拥有(U,EK1(R))攻击者将(U,EK1(R))发给软件作者,但软件作者缺乏与攻击者协商的解密密钥,不能利用收到的信息解密出(U,R),因此不能通过验证,攻击者不能运行软件;另一方面,如果密钥协商过程不安全,攻击者就能够破解出K1;而如果加密算法E不够安全,攻击者就能够破解加密算法E。显然,只要攻击者无法破解出K1或者是加密算法E,就不能解密出R。类似的,攻击者也没有能力破解出K2得到(U,R),因此也不能进入后续使用K2加密(U,R)的步骤。

因此,在攻击模型I下该保护机制的安全性可归约为密钥协商过程和加密算法E的安全性。

在攻击模型II条件下,攻击者能够截获加密后的验证结果F(U,R),即EK2(F(U,R)),参见图6。

图6 攻击模型II下改进的RC保护算法安全性分析

图6中,步骤1-步骤8是正常的流程。攻击模型II下,攻击者在步骤5可获得密钥协商过程信息,在步骤7可获得EK2(F(U,R)),在步骤10获得不通过的加密信息,修改为EK2(F(U,R))后由用户端执行,而攻击者的用户端因为没有参与步骤1-步骤8,不能解密出F(U,R),因此软件不能执行。另一方面,如果密钥协商过程不安全,攻击者就能够破解出K2;如果加密算法E不够安全,攻击者就可以破解加密算法E。显然,只要攻击者无法破解出K2或者是加密算法E,就不能解密出F(U,R),因此也不能进入后续修改合法性判断结果的步骤。

因此在攻击模型II下该保护机制的安全性可归约为密钥协商过程和加密算法E的安全性。

综上,两种截获欺骗攻击模型下,本文所提出的改进的RC软件保护机制的抗截获欺骗攻击的能力,均可归约为密钥协商过程和加密算法E的安全性。

3.2 密钥协商和加密算法的安全性需求分析

一般有多种目的的密钥协商:防破解解密密钥(机密性要求)、防篡改、防伪造、防假冒、防抵赖、群密钥协商等[13-16]。本文的密钥协商,是为建立安全的会话密钥而进行的两用户会话密钥协商。根据本文上述分析,在攻击模型I下,需要密钥协商过程满足保护解密密钥K1的机密性要求;在攻击模型II下,需要密钥协商过程满足保护解密密钥K2的机密性要求。因此总的来看,密钥协商过程需要保护解密密钥的机密性。而这也是对密钥协商过程的基本要求。

根据上述分析,本文的加密算法E,在攻击模型I下,需要满足不能破解出R(U,R)的机密性要求;在攻击模型II下,需要满足不能破解出F(U,R)的机密性要求。因此总的来看,加密算法E需要保护明文的安全。而这也是对加密算法的基本要求。

3.3 与类似机制的对比

现有多种方式采用了加密技术来保证RC安全,采用非对称算法保护RC[5]、采用集中式方式管理加密RC[9]、对RC的生成和验证进行保护[11]、对优先使用软件的RC改进[12]。与上述保护方式相比,本文针对两种常见的截获欺骗攻击模型,在不改变RC算法和验证算法的前提下,通过使用密钥协商和加密技术,提高现有RC软件保护的有效性。因此,研究的针对性不同,本文针对两种特定攻击模型;前提条件不同,本文的研究不改变RC算法和验证算法;算法流程不同,本文引入两次密钥协商和加密以确保RC的安全;加密保护的信息不同,本文分别使用密钥K1加密R,使用K2加密(U,R)。

3.4 相对复杂性分析

复杂性有多种定义方式,本文考虑对改进前后的RC算法进行对比,由于运算有多种实现难以具体化,这里只考虑抽象层面的对比,将相对复杂性分解为信息交互次数、运算时空需求两个部分,参见表1。

表1 相对复杂性分析

信息交互次数分析:现有的RC机制中,信息交互次数为4;改进后的RC机制中,信息交互次数增加到8次,其中密钥协商过程因为需要用户和软件作者相互传递协商信息,按两次计算。

运算时空需求分析:现有的RC机制中,计算仅出现在软件作者端,主要计算量是计算RC和计算VC两部分;改进后的RC机制中,运算扩展到用户端。在用户端主要运算是运行密钥协商算法两次、加密算法一次、解密算法两次;在软件作者端的主要运算是运行密钥协商算法两次、计算RC和计算VC各一次、加密算法两次、解密算法一次。

4 结 语

本文通过抽象两种常见的截获欺骗攻击模型,使用加密技术,建立一种抗截获欺骗攻击的软件保护机制,分析表明在增加信息交互和时空需求代价下,本文提出的机制可以解决现有RC软件保护手段的难题,其安全强度与密钥协商过程和加密算法的安全性相当。

本文研究没有涉及到针对两种攻击模型的高级持续攻击(ATP),以及实现过程中的非理想化情况,因此,针对具体情况,还需要考虑更多的问题,将在后续研究中进一步完善。

猜你喜欢
加密算法攻击者密钥
基于贝叶斯博弈的防御资源调配模型研究
幻中邂逅之金色密钥
幻中邂逅之金色密钥
正面迎接批判
Android密钥库简析
正面迎接批判
教育云平台的敏感信息保护技术研究
一种改进的加密算法在空调群控系统中的研究与实现
基于Jave的AES加密算法的实现
AES加密算法的实现及应用