掌桥专利:专业的专利平台
掌桥专利
首页

一种针对有状态算法替代攻击的状态检测方法及系统

文献发布时间:2024-04-18 19:52:40


一种针对有状态算法替代攻击的状态检测方法及系统

技术领域

本发明属于密码算法安全检测技术领域,尤其涉及一种针对有状态算法替代攻击的状态检测方法及系统。

背景技术

在实际应用过程中,密码产品提供商(譬如Crypto AG)可能恶意的修改密码算法的操作从而实现大规模的监听。作为密码产品的使用者,用户往往受限于输入/输出访问权限。换而言之,对于黑盒的密码实现,用户必须信任开发人员实现的加密算法是诚实的,不包含任何后门。为此,黑盒密码实现的替代攻击与防护成为学术界的研究热点。

算法替代攻击(ASA),目的是用一个恶意的实现来替换一个诚实实现,从而允许泄露个人秘密信息,同时确保恶意实现与诚实实现在黑盒(输入/输出)场景下不可区分。恶意实现一般通过攻击者在密码算法设计或实现过程中加入后门实现。绝大多数的密码算法的安全性依赖于算法中使用的随机数,通常利用伪随机数生成算法获得密码算法中所需的随机数。鉴于随机数在密码算法中的重要地位,算法替代攻击着重对密码算法中的随机数生成器组件进行攻击,从而进一步破解秘密信息。

目前文献给出的算法替代攻击可根据恶意实现算法中有无额外的中间状态存储分为两类:无状态算法替代攻击和有状态算法替代攻击,且均在理论层面给出了不可检测性和可恢复性的证明。但这些证明的底层安全模型限制检测者仅能黑盒地接入密码算法的输入输出。有状态ASA替代攻击会通过存储运行过程中产生的中间状态进行攻击,在实际密码应用中,检测者除了密码算法的输入输出,还可以采取其他手段检测算法运行过程中是否存在恶意读写操作。因此为了检测出算法是否遭受有状态算法替代攻击,自然存在这样的问题:“对于已标准化的密码算法以及正在标准化的抗量子密码算法,当前已知的被证明(黑盒)不可检测的有状态算法替代攻击在实际部署过程中能否实现检测”。

现有描述算法替代攻击的文献中,从理论层面证明了给出的有状态算法替代攻击的不可检测性;目前尚未有实际应用层面上的有状态算法替代攻击的检测方法实现;有状态算法替代攻击的具体形式多样,根据攻击的算法不同(对称加密算法、签名算法、抗量子算法等),其替换算法形式多样,需提取有状态算法替代攻击的特征,实现通用检测。

发明内容

本发明针对现有描述算法替代攻击的文献中,从理论层面证明了给出的有状态算法替代攻击的不可检测性;目前尚未有实际应用层面上的有状态算法替代攻击的检测方法实例;有状态算法替代攻击的具体形式多样,根据攻击的算法不同(对称加密算法、签名算法、抗量子算法等),其替换算法形式多样,需提取有状态算法替代攻击的特征,实现通用检测的问题,提出一种针对有状态算法替代攻击的状态检测方法及系统。

为了实现上述目的,本发明采用以下技术方案:

本发明一方面提出一种针对有状态算法替代攻击的状态检测方法,包括:

步骤1,当输入文件为对称加密和数字签名算法源代码文件时,采用正则表达式匹配方法进行中间状态检测,检测源程序中是否存在向硬盘存入数据的库函数、日志输出相关函数以及上传云端相关函数,若存在则提醒存在有状态算法替代攻击风险;

步骤2,当输入文件为对称加密和数字签名算法生成的可执行文件时,为程序的运行构建一个沙箱虚拟环境,在所述沙箱虚拟环境中将敏感API利用重定向技术全部隔离,通过日志文件记录调用的所有与系统写入有关的API,检测日志文件中是否存在敏感API的调用,若存在则提醒存在有状态算法替代攻击风险。

进一步地,所述对称加密和数字签名算法包括标准AES加密、RSA-PSS签名和ECDSA签名算法,以及后量子算法Dilithium,Falcon,SPHINCS+。

进一步地,所述步骤2中,所述敏感API包括主机的文件、注册表、全局Hook、驱动加载的接口。

本发明另一方面提出一种针对有状态算法替代攻击的状态检测系统,包括:

源代码状态检测模块,用于当输入文件为对称加密和数字签名算法源代码文件时,采用正则表达式匹配方法进行中间状态检测,检测源程序中是否存在向硬盘存入数据的库函数、日志输出相关函数以及上传云端相关函数,若存在则提醒存在有状态算法替代攻击风险;

可执行文件状态检测模块,用于当输入文件为对称加密和数字签名算法生成的可执行文件时,为程序的运行构建一个沙箱虚拟环境,在所述沙箱虚拟环境中将敏感API利用重定向技术全部隔离,通过日志文件记录调用的所有与系统写入有关的API,检测日志文件中是否存在敏感API的调用,若存在则提醒存在有状态算法替代攻击风险。

进一步地,所述对称加密和数字签名算法包括标准AES加密、RSA-PSS签名和ECDSA签名算法,以及后量子算法Dilithium,Falcon,SPHINCS+。

进一步地,所述可执行文件状态检测模块中,所述敏感API包括主机的文件、注册表、全局Hook、驱动加载的接口。

与现有技术相比,本发明具有的有益效果:

目前现有文献中,均未给出针对有状态算法替代攻击在实际部署环境下的检测方案。OpenSSL等密码库具有开源复杂性,审查其中代码的专家人数很少,使得算法替代攻击很有可能针对开源软件进行,此外,即使代码看起来是“干净的”,在编译或运行时,通过破坏编译器或解释器,代码总是有被破坏的可能性。本发明对有状态ASA进行特征提取,发现重点在于其中存在中间状态的存储行为,基于该统一特征,本发明给出了状态检测的检测途径,成功实现通用算法的检测;另外,根据输入的待检测文件类型分别给出了关键字匹配检测方案与沙箱检测方案。本发明在软件层面支持检测所有已知的通用有状态算法替代攻击。该检测平台的实现,对密码算法替代攻击的相关研究具有重要指导意义。

附图说明

图1为本发明实施例一种针对有状态算法替代攻击的状态检测方法的流程图;

图2为本发明实施例检测原理图;

图3为本发明实施例检测程序展示;

图4为本发明实施例正常程序日志文件展示;

图5为本发明实施例受有状态算法替代攻击程序结果展示;

图6为本发明实施例受有状态算法替代攻击程序日志文件展示;

图7为本发明实施例一种针对有状态算法替代攻击的状态检测系统的架构示意图。

具体实施方式

下面结合附图和具体的实施例对本发明做进一步的解释说明:

在本方案中,我们提出一种针对有状态算法替代攻击的状态检测方法。由于有状态ASA替代攻击会通过存储状态进行攻击,于是我们想通过检测是否存在存储中间状态的行为来检测这类算法替代攻击。而对于是否存在设备中存储算法的相关输出值,使得之后签名安全性降低这一危险行为。我们采用了一系列的手段来进行算法的中间状态检测。在检测的实施思路上,若待检测文件是源代码文件,本方案进行正则表达式匹配函数进行检测,如输入的待检测文件为可执行文件,借鉴网络安全领域中沙箱的原理,进行攻击检测。

方案的检测流程图在图1中给出,具体方案如下:

由于有状态ASA替代攻击会通过存储状态进行攻击,于是我们想通过检测是否存在存储中间状态的行为来检测这类算法替代攻击。而对于是否存在设备中存储算法的相关输出值,使得之后签名安全性降低这一危险行为。我们采用了一系列的手段来进行算法的中间状态检测。在检测的实施思路上,主要借鉴了网络安全领域中沙箱的基本思想。

Sandboxie即是一个虚拟系统程序,在计算机安全领域中是一种安全机制,为运行中的程序提供的隔离环境。在网络安全中,沙箱指在隔离环境中,用以测试不受信任的、具破坏力的或无法判定程序意图的程序行为的工具。

(1)主要检测方向

经过分析,我们认为在现行的计算机体系下,如果攻击者要对加密或签名算法(具体为对称加密和数字签名算法,如OpenSSL库中的标准AES加密、RSA-PSS签名和ECDSA签名算法,以及后量子算法Dilithium,Falcon,SPHINCS+等)所输出的相关值进行保存以提供给后续加密或签名攻击使用的话,大致有三个方向:向内存中存储、向硬盘(外部存储设备)中存储、上传到云端存储。但对于内存来说,由于组成内存的RAM物理结构的原因,其中保存的数据会断电丢失。

并且在计算机运行过程中,由于进程虚拟基地址重定位等原因,设置内存中的数据保存地址,并保护其在计算机运行过程中不被其他进程产生的数据覆盖无法由人为确定并实现,所以我们将检测方向主要放在硬盘写入检测和云端上传检测。

(2)检测方法

当输入文件为对称加密和数字签名算法对应的源代码文件时,采用正则表达式匹配方法。在实现过程中,因为注意到在每种语言中将数据写入硬盘或者上传到云端的库函数较为固定,所以我们目前通过检测源程序中是否存在向硬盘写入数据函数以及上传云端函数来实现。以C和Python语言为例,由于两种语言中,提供给用户的可以向硬盘存入数据的库函数接口较为固定,我们将其遍历并梳理出了以下几种函数:

表1

另外,因为还考虑到攻击者可能会存在使用日志存储程序有关输出,从而达到攻击目的的行为,我们将Python语言中的日志输出相关函数也添加进检测列表,涉及的函数如下:

表2

最后,在有关于上传到云端的有关函数检测中,我们采取了下面的检测思路:就目前而言,使用基础编程语言进行网络通信或者发送网络请求都是使用的新建Socket方式,所以我们将检测重点放在了Socket函数集中,另外为了防止攻击者使用浏览器相关的位置存储数据,URL的两种请求方式也被我们纳入敏感函数范围。相关函数如下:

表3

当输入文件为可执行文件时,可以模仿沙箱的实现思路,为程序的运行构建一个虚拟环境,在这个环境中将主机的文件、注册表、全局Hook、驱动加载等较为敏感的接口利用重定向技术全部隔离,即实现程序运行结束之后对主机的所有状态没有影响的目的。另外由于程序运行在一个我们构建的完全可控的虚拟环境内,其调用的所有与系统写入有关的API,如CreateFile,可以直接被记录下来,后续对沙箱生成的日志文件进行检测即可。检测原理如图2所示。

对上述算法的源代码和生成的可执行程序进行检测,并使用对源代码的检测程序和沙箱对可执行程序进行分析。在检测源码时,检测目标主要集中于Python和C语言的写入硬盘以及上传到云端、生成日志文件的库函数,检测方法为对上述库函数进行正则表达式的匹配。

在检测可执行文件时,将可执行文件放入沙箱中运行,并在运行结束后查看沙箱生成的记录日志,检测日志中是否存在敏感系统API的调用。上述两种如果存在其一则进行报警:存在有状态ASA攻击风险!如果既没有检测到源码中有相关库函数的调用也没有检测到沙箱中敏感API的调用则认为程序安全。

测试数据与结果

状态检测方面,根据之前已提取出的遭受有状态ASA攻击程序的特征,利用沙箱、代码审计等方法对输入算法在软件层面进行中间状态检测,并展示了受攻击和不受攻击两种程序的检测样例结果,以及沙箱对程序行为的记录日志。

对于中间状态检测而言,检测方案不随攻击者的不同目标算法而变化,即状态检测对所有算法的ASA具有通用性,因此在如下测试展示中,我们只以ECDSA512算法为例。

(1)正常程序结果展示

首先是对于正常程序分别进行源程序敏感函数和敏感API调用的检测结果展示。

对于源程序的检测过程如下:我们通过选择待检测的文件,而后软件调用检测是否有敏感库函数和敏感API的方法对其进行检测,结果如图3所示。

在日志文件(如图4所示)中我们可以看到该程序只在运行时创建了中间文件,但这个文件是不对用户可见的,并且在程序运行结束后会将中间文件删除。

(2)受攻击程序结果展示

通过与上述相同的检测原理,我们对一个受攻击样本进行了检测。结果展示如图5所示。

可见,在日志文件(如图6所示)中可以看到,该程序运行后对文件系统做了包括创建.txt文件在内的修改,即有向硬盘中保存数据的行为,有被攻击的风险。

所在上述实施例的基础上,如图7所示,本发明还提出一种针对有状态算法替代攻击的状态检测系统,包括:

源代码状态检测模块,用于当输入文件为对称加密和数字签名算法源代码文件时,采用正则表达式匹配方法进行中间状态检测,检测源程序中是否存在向硬盘存入数据的库函数、日志输出相关函数以及上传云端相关函数,若存在则提醒存在有状态算法替代攻击风险;

可执行文件状态检测模块,用于当输入文件为对称加密和数字签名算法生成的可执行文件时,为程序的运行构建一个沙箱虚拟环境,在所述沙箱虚拟环境中将敏感API利用重定向技术全部隔离,通过日志文件记录调用的所有与系统写入有关的API,检测日志文件中是否存在敏感API的调用,若存在则提醒存在有状态算法替代攻击风险。

进一步地,所述对称加密和数字签名算法包括标准AES加密、RSA-PSS签名和ECDSA签名算法,以及后量子算法Dilithium,Falcon,SPHINCS+。

进一步地,所述可执行文件状态检测模块中,所述敏感API包括主机的文件、注册表、全局Hook、驱动加载的接口。

综上,目前现有文献中,均未给出针对有状态算法替代攻击在实际部署环境下的检测方案。OpenSSL等密码库具有开源复杂性,审查其中代码的专家人数很少,使得算法替代攻击很有可能针对开源软件进行,此外,即使代码看起来是“干净的”,在编译或运行时,通过破坏编译器或解释器,代码总是有被破坏的可能性。本发明对有状态ASA进行特征提取,发现重点在于其中存在中间状态的存储行为,基于该统一特征,本发明给出了状态检测的检测途径,成功实现通用算法的检测;另外,根据输入的待检测文件类型分别给出了关键字匹配检测方案与沙箱检测方案。本发明在软件层面支持检测所有已知的通用有状态算法替代攻击。该检测平台的实现,对密码算法替代攻击的相关研究具有重要指导意义。

以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

技术分类

06120116332730