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

一种固件加密方式的识别方法和装置

文献发布时间:2023-06-19 09:46:20


一种固件加密方式的识别方法和装置

技术领域

本发明涉及固件技术领域,特别是指一种固件加密方式的识别方法和装置。

背景技术

固件(Firmware)就是写入EPROM(可擦写可编程只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。

固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件。

固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。

为了能够对固件的安全性进行分析,需要识别固件是否加密,如果加密,需要评估其加密算法本身以及应用是否安全,是否存在漏洞。

然而,目前现有技术中需要人为的去判断固件是否加密以及加密是否可分析,不能做到机器自动化辅助识别。

发明内容

有鉴于此,本发明的目的在于提出一种固件加密方式的识别方法和装置,可以自动判断固件的加密方式,以便基于识别的加密方式对固件的安全性进行分析,评估出固件是否安全是否存在漏洞。

基于上述目的,本发明提供一种固件加密方式的识别方法,包括:

针对被加密的固件,获取所述固件的过渡版本,并从所述过渡版本中查找出名称具有更新关键字的文件;

根据查找出的文件的名称,利用文件对比技术在所述固件的新版本中查找出相应文件中的修改代码;

从查找出的修改代码中识别出用来加密的可执行程序,并将该可执行程序进行逆向分析后,查找该可执行程序中的加解密关键字;

根据查找出的加解密关键字,定位加解密代码处,得到此固件的加密方式。

进一步,在所述针对被加密的固件,获取所述固件的过渡版本之前,还包括:

计算二进制文件的所述固件的增量偏移量的熵值;

若所述固件存在第一阈值以上的部分的高熵值,则确认所述固件已经被加密;其中,所述高熵值指的是高于第二阈值的熵值。

其中,第一阈值具体为50%,以及第二阈值具体为0.8。

本发明还提供一种固件加密方式的识别装置,包括:

过渡版本查找模块,用于针对被加密的固件,获取所述固件的过渡版本,并从所述过渡版本中查找出名称具有更新关键字的文件;

新版本查找模块,用于根据查找出的文件的名称,利用文件对比技术在所述固件的新版本中查找出相应文件中的修改代码;从查找出的修改代码中识别出用来加密的可执行程序;

加解密代码查找模块,用于将该可执行程序进行逆向分析后,查找该可执行程序中的加解密关键字;根据查找出的加解密关键字,定位加解密代码处,得到此固件的加密方式。

本发明还提供一种电子设备,包括中央处理单元、信号处理和存储单元,以及存储在信号处理和存储单元上并可在中央处理单元上运行的计算机程序,其中,所述中央处理单元执行如上所述的固件加密方式的识别方法。

本发明的技术方案中,针对被加密的固件,获取所述固件的过渡版本,并从所述过渡版本中查找出名称具有更新关键字的文件;根据查找出的文件的名称,利用文件对比技术在所述固件的新版本中查找出相应文件中的修改代码;从查找出的修改代码中识别出用来加密的可执行程序,并将该可执行程序进行逆向分析后,查找该可执行程序中的加解密关键字;根据查找出的加解密关键字,定位加解密代码处,得到此固件的加密方式。从而,可以自动判断固件的加密方式,以便基于识别的加密方式对固件的安全性进行分析,评估出固件是否安全是否存在漏洞。

进一步,本发明的技术方案中,在识别固件的加密方式之前,还可通过固件的熵值,自动判断固件是否加密。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种固件加密方式的识别方法流程图;

图2为本发明实施例提供的一种二进制文件的固件的增量偏移量的熵值分布示意图;

图3为本发明实施例提供的另一种二进制文件的固件的增量偏移量的熵值分布示意图;

图4为本发明实施例提供的一种固件加密方式的识别装置的内部结构框图;

图5为本发明实施例提供的一种电子设备硬件结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

需要说明的是,除非另外定义,本发明实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

下面结合附图详细说明本发明实施例的技术方案。

本发明实施例提供的一种固件加密方式的具体识别方法,流程如图1所示,包括如下步骤:

步骤S101:根据计算的待识别的固件的熵值,判断所述固件是否被加密;若是,则继续执行步骤S102;否则,结束对固件的加密方式的识别。

本步骤中,计算二进制文件的待识别的固件的增量偏移量的熵值,若所述固件存在多于第一阈值的部分的高熵值,则确认所述固件已经被加密;其中,所述高熵值指的是高于第二阈值的熵值。其中,第一、二阈值可以由技术人员根据经验设置,例如,设置第一阈值为50%,第二阈值为0.8。

具体地,在某些情况下,发行商并不会提及固件是否加密,那么便可以使用熵计算方法来确定固件是否已经加密,熵是对随机性的一种度量,它的值在0-1之间,值越高表示随机性越好,接近1的值被认为是高熵,反之亦然。加密或压缩过的数据具有较高的熵值。

二进制文件增量偏移量的熵值分布信息可以被用来判断二进制文件的哪一部分被加密/压缩以及哪一部分是代码。

例如,如图2所示,熵值几乎恒定在0.9以上,这意味着很有可能在固件的不同部分对其进行了加密。

例如,如图3所示的熵值分布,初始部分的熵很低,然后一直很高,然后又下降,然后再次上升,这种波动表明它是代码和加密/压缩数据的混合体。

对于未加密的固件,经常会看到这种模式,该固件最初具有波动的熵,而在随后的部分中具有较高的熵数据。这可能意味着二进制文件的初始部分中有代码,该代码会在设备启动期间动态解压缩代码。

因此,可以将熵值大于第二阈值(比如0.8)的部分看作为已加密,如果此固件存在第一阈值(比如50%)以上的部分熵值高于第二阈值,即可认为此固件已经被加密。

步骤S102:针对被加密的固件,获取所述固件的过渡版本,并从所述过渡版本中查找出名称具有更新关键字的文件。

具体地,针对被加密的固件,获取所述固件的过渡版本,并从所述过渡版本中查找出名称具有更新关键字,比如“固件”、“更新”、“升级”、“下载”等关键字或组合关键字的文件。

步骤S103:根据查找出的文件的名称,利用文件对比技术在所述固件的新版本中查找出相应文件中的修改代码。

本步骤中,利用自动化文件对比技术,对所述固件的新版本与待解密的所述固件(即所述固件的旧版本)进行文件对比,根据查找出的文件的名称,查看新所述固件的新版本中相比于待解密的所述固件(即所述固件的旧版本)中引入了哪些修改。

步骤S104:从查找出的修改代码中识别出用来加密的可执行程序,并将该可执行程序进行逆向分析后,查找该可执行程序中的加解密关键字。

具体地,从查找出的修改代码中识别出用来加密的可执行程序,并将该可执行程序进行逆向分析后,查找该可执行程序中的“AES(高级加密标准)”、“DES(数据加密标准)”、“ECC(椭圆曲线加密算法)”、“RSA(非对称加密算法)”、“CRYPTO(加密函数)”等加解密关键字。

步骤S105:根据查找出的加解密关键字,定位加解密代码处,得到此固件的加密方式。

具体地,根据查找出的加解密关键字,定位到加解密代码处,得到此固件的加密算法,从而获得此固件的加密方式。

基于上述的固件加密方式的识别方法,本发明实施例提供了一种固件加密方式的识别装置,内部结构框图如图4所示,包括如下模块:过渡版本查找模块401、新版本查找模块402、加解密代码查找模块403。

过渡版本查找模块401用于针对被加密的固件,获取所述固件的过渡版本,并从所述过渡版本中查找出名称具有更新关键字的文件;

新版本查找模块402用于根据查找出的文件的名称,利用文件对比技术在所述固件的新版本中查找出相应文件中的修改代码;从查找出的修改代码中识别出用来加密的可执行程序;

加解密代码查找模块403于将该可执行程序进行逆向分析后,查找该可执行程序中的加解密关键字;根据查找出的加解密关键字,定位加解密代码处,得到此固件的加密方式。

进一步,本发明实施例提供的一种固件加密方式的识别装置中还可包括:熵值计算模块404。

熵值计算模块404用于计算二进制文件的所述固件的增量偏移量的熵值;若所述固件存在第一阈值以上的部分的高熵值,则确认所述固件已经被加密;其中,所述高熵值指的是高于第二阈值的熵值。

图5示出了本实施例所提供的一种固件加密方式的识别装置的更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。

处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本发明实施例所提供的固件加密方式的识别方法。

存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。

输入/输出接口1030用于连接输入/输出模块,可以与非线性接收机相连,从非线性接收机接收信息,实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。

总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

本发明的技术方案中,针对被加密的固件,获取所述固件的过渡版本,并从所述过渡版本中查找出名称具有更新关键字的文件;根据查找出的文件的名称,利用文件对比技术在所述固件的新版本中查找出相应文件中的修改代码;从查找出的修改代码中识别出用来加密的可执行程序,并将该可执行程序进行逆向分析后,查找该可执行程序中的加解密关键字;根据查找出的加解密关键字,定位加解密代码处,得到此固件的加密方式。从而,可以自动判断固件的加密方式,以便基于识别的加密方式对固件的安全性进行分析,评估出固件是否安全是否存在漏洞。

进一步,本发明的技术方案中,在识别固件的加密方式之前,还可通过固件的熵值,自动判断固件是否加密。

本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。

另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。

尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。

本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种固件加密方式的识别方法和装置
  • 一种电网嵌入式终端的固件编译优化选项识别方法及装置
技术分类

06120112291603