CN111967014B - 一种防御StarBleed漏洞的方法及装置 - Google Patents

一种防御StarBleed漏洞的方法及装置 Download PDF

Info

Publication number
CN111967014B
CN111967014B CN202010687192.3A CN202010687192A CN111967014B CN 111967014 B CN111967014 B CN 111967014B CN 202010687192 A CN202010687192 A CN 202010687192A CN 111967014 B CN111967014 B CN 111967014B
Authority
CN
China
Prior art keywords
configuration instruction
configuration
random number
plaintext
mask
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010687192.3A
Other languages
English (en)
Other versions
CN111967014A (zh
Inventor
赵欢
于志杰
孙宇明
朱倩
田甜
李铀
童宗挺
尤静
姚春月
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sunwise Information Technology Ltd
Original Assignee
Beijing Sunwise Information Technology Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Sunwise Information Technology Ltd filed Critical Beijing Sunwise Information Technology Ltd
Priority to CN202010687192.3A priority Critical patent/CN111967014B/zh
Publication of CN111967014A publication Critical patent/CN111967014A/zh
Application granted granted Critical
Publication of CN111967014B publication Critical patent/CN111967014B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种防御StarBleed漏洞的方法及装置,该方法包括:对初始密文进行解密得到明文,并根据预设的随机数选择策略确定随机数;根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,并根据所述随机数对所述明文中的配置指令进行替换;根据所述随机数对所述明文中的HMAC签名区数据进行混淆,计算并更新混淆后的HMAC签名区数据得到混淆后的明文,将所述混淆后的明文进行加密,得到混淆后的密文。本发明解决了现有技术中对StarBleed漏洞进行攻击防御空白的技术问题。

Description

一种防御StarBleed漏洞的方法及装置
技术领域
本申请涉及漏洞防御技术领域,尤其涉及一种防御StarBleed漏洞的方法及装置。
背景技术
现场可编程门阵列(Field-Programmable Gate Array,FPGA)作为一种半定制电路,具有既能解决了定制电路的不足,又克服了原有可编程器件门电路数有限等优点被广泛应用于多个领域。随着FPGA技术的快速发展,FPGA硬件或软件的漏洞形式呈现多样化,而漏洞的存在直接会影响硬件或者软件的功能,进而影响FPGA的性能。为了避免漏洞对FPGA性能的影响,针对不同的漏洞都会设计对应的漏洞修复方案。
目前,研究发现赛灵思的7系列/Virtex-6 FPGA中存在一项硬件漏洞,该漏洞被称为“StarBleed”,攻击者利用该漏洞进行攻击的主要过程为:确定写WBSTAR指令在明文以及密文中的位置信息,然后根据该位置信息对密文流的修改,控制写入WBSTAR寄存器的数据长度,不仅可以实现FPGA产品的逆向和克隆,还可以通过篡改配置位流,发起产生硬件损坏的攻击。一旦某个芯片被攻破,不能通过软件补丁的方式进行修复,只能进行芯片更换。此外,不像必须要借助于复杂分析工具的侧信道攻击与探测等攻击方法,针对“StarBleed”漏洞,仅需利用普通的下载电缆,通过个人计算机就可以执行攻击过程,严重影响了FPGA产品的安全性。但是对于“StarBleed”漏洞目前还没有对应的漏洞攻击防御方案,因此,如何对“StarBleed”漏洞进行攻击防御成为亟待解决的问题。
发明内容
本申请解决的技术问题是:针对现有技术中对“StarBleed”漏洞进行攻击防御空白。本申请提供了一种防御StarBleed漏洞的方法及装置,本申请实施例所提供的方案中,通过随机数对明文的配置数据进行混淆,不仅隐藏了明文以及密文中写WBSTAR指令位置信息,也降低配置指令的识别能力,进而增加漏洞攻击的难度以及提升抵抗漏洞攻击的能力。
第一方面,本申请实施例提供一种防御StarBleed漏洞的方法,该方法包括:
对初始密文进行解密得到明文,并根据预设的随机数选择策略确定随机数;
根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,并根据所述随机数对所述明文中的配置指令进行替换;
根据所述随机数对所述明文中的HMAC签名区数据进行混淆,计算并更新混淆后的HMAC签名区数据得到混淆后的明文,将所述混淆后的明文进行加密,得到混淆后的密文。
本申请实施例所提供的方案中,根据预设的随机数选择策略确定随机数,然后根据随机数对明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,并根据所述随机数对所述明文中的配置指令进行替换,再根据所述随机数对所述明文中的HMAC签名区数据进行混淆,计算并更新混淆后的HMAC签名区数据得到混淆后的明文,将所述混淆后的明文进行加密,得到混淆后的密文。因此,本申请实施例所提供的方案中,通过随机数对明文的配置数据进行混淆,不仅隐藏了明文以及密文中写WBSTAR指令位置信息,也降低配置指令的识别能力,进而增加漏洞攻击的难度以及提升抵抗漏洞攻击的能力。
可选地,所述预设的随机数选择策略包括:
根据本地时间作为随机数的种子,随机生成32位的所述随机数;或
从配置数据区随机选择配置数据,将所述配置数据作为所述随机数。
可选地,根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,包括:
通过如下公式对所述配置指令字或所述配置指令字参数进行混淆:
其中,Pc表示混淆后的配置指令或配置参数;P表示混淆前的配置指令或配置参数;Rnd32表示随机数;M表示根据配置指令或配置参数特征和预设的混淆策略所确定的屏蔽字;
从所述明文中选择出功能相互独立的至少一个配置指令,将所述至少一个配置指令进行混淆。
可选地,若所述配置指令字参数为MASK参数或写入寄存器参数,根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,包括:
通过如下公式对所述配置指令字参数配置指令字参数:
Pmask_c=Pmask|(~RND32)
Ppara_c=Ppara|(RND32)
其中,Pmask_c表示混淆后的MASK参数;Pmask表示混淆前的MASK参数;Ppara_c表示混淆后的写入寄存器参数;Ppara表示混淆前的写入寄存器参数。
可选地,根据所述随机数对所述明文中的配置指令进行替换,包括:
确定出与所述明文中任一配置指令功能相同的至少一个第一配置指令,随机从所述至少一个第一配置指令中选择出一个第二配置指令;
根据所述随机数以及所述第二配置指令对所述任一配置指令进行替换。
第二方面,本申请实施例提供了一种防御StarBleed漏洞的装置,该装置包括:
解密单元,用于对初始密文进行解密得到明文,并根据预设的随机数选择策略确定随机数;
混淆单元,用于根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,并根据所述随机数对所述明文中的配置指令进行替换;
处理单元,用于根据所述随机数对所述明文中的HMAC签名区数据进行混淆,计算并更新混淆后的HMAC签名区数据得到混淆后的明文,将所述混淆后的明文进行加密,得到混淆后的密文。
可选地,所述预设的随机数选择策略包括:
根据本地时间作为随机数的种子,随机生成32位的所述随机数;或
从配置数据区随机选择配置数据,将所述配置数据作为所述随机数。
可选地,所述混淆单元,具体用于:
通过如下公式对所述配置指令字或所述配置指令字参数进行混淆:
其中,Pc表示混淆后的配置指令或配置参数;P表示混淆前的配置指令或配置参数;Rnd32表示随机数;M表示根据配置指令或配置参数特征和预设的混淆策略所确定的屏蔽字;
从所述明文中选择出功能相互独立的至少一个配置指令,将所述至少一个配置指令进行混淆。
可选地,若所述配置指令字参数为MASK参数或写入寄存器参数,所述混淆单元,具体用于:
通过如下公式对所述配置指令字参数配置指令字参数:
Pmask_c=Pmask|(~RND32)
Ppara_c=Ppara|(RND32)
其中,Pmask_c表示混淆后的MASK参数;Pmask表示混淆前的MASK参数;Ppara_c表示混淆后的写入寄存器参数;Ppara表示混淆前的写入寄存器参数。
可选地,所述混淆单元,具体用于:
确定出与所述明文中任一配置指令功能相同的至少一个第一配置指令,随机从所述至少一个第一配置指令中选择出一个第二配置指令;
根据所述随机数以及所述第二配置指令对所述任一配置指令进行替换。
第三方面,本申请提供一种计算机设备,该计算机设备,包括:
存储器,用于存储至少一个处理器所执行的指令;
处理器,用于执行存储器中存储的指令执行第一方面所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行第一方面所述的方法。
附图说明
图1为本申请实施例所提供的一种防御StarBleed漏洞的方法的流程示意图;
图2为本申请实施例所提供的一种防御StarBleed漏洞的装置的结构示意图;
图3为本申请实施例所提供的一种计算机设备的结构示意图。
具体实施方式
本申请实施例提供的方案中,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
以下结合说明书附图对本申请实施例所提供的一种防御StarBleed漏洞的方法做进一步详细的说明,该方法具体实现方式可以包括以下步骤(方法流程如图1所示):
步骤101,对初始密文进行解密得到明文,并根据预设的随机数选择策略确定随机数。
在本申请实施例所提供的方案中,计算机设备数据库中保存着NKY类型的文件以及随机数选择策略,而NKY类型的文件中又携带着秘钥信息,因此,计算机设备从NKY类型的文件中提取秘钥信息,然后根据提取的秘钥信息对初始密文进行解密得到明文,再根据预设的随机数选择策略确定随机数。具体的,预设的随机数选择策略有多种,下面以一种较佳的为例进行说明。
在一种可能实现的方式中,所述预设的随机数选择策略包括:根据本地时间作为随机数的种子,随机生成32位的所述随机数;或从配置数据区随机选择配置数据,将所述配置数据作为所述随机数。
具体的,在计算机设备数据库中预先保存着随机数生成策略,该随机数生成策略可以是计算机代码形式,也可以是其他形式在此不做限定。计算机设备利用本地时间作为随机数种子随机生成32位的随机数。
步骤102,根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,并根据所述随机数对所述明文中的配置指令进行替换。
在本申请实施例所提供的方案中,计算机设备根据预设的随机数选择策略确定随机数之后,根据该随机数分别对明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆。具体的,计算机设备根据随机数分别对明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆的方式有多种,下面以一种较佳的方式为例进行说明。
在一种可能实现的方式中,根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,包括:
通过如下公式对所述配置指令字或所述配置指令字参数进行混淆:
其中,Pc表示混淆后的配置指令或配置参数;P表示混淆前的配置指令或配置参数;Rnd32表示随机数;M表示根据配置指令或配置参数特征和预设的混淆策略所确定的屏蔽字。
从所述明文中选择出功能相互独立的至少一个配置指令,将所述至少一个配置指令进行混淆。
为了便于理解下面分别对配置指令字、配置指令字参数以及配置指令顺序混淆过程进行说明。
一、对于配置指令字
具体的,根据Xilinx FPGA/CPLD设计手册中所介绍的FPGA的配置位流具有两种数据包,其中,Type1数据包主要用于寄存器的读写,对于Type1数据包一般用1个指令字配置可选的指令参数。参见表1,表示Type1数据包的结构。
表1
头类型 操作码 寄存器地址 保留位 字数
[31:29] [28:27] [26:13] [12:11] [10:0]
001 XX RRRRRRRRRXXXX RR xxxxxxxxxxx
其中,X表示实际使用的数据位;R表示保留数据位。
进一步,根据上述表1所示的数据包结构中,指令字结构会保留一些未使用的保留位,而在FPGA测试过程中发现,指令中未使用的位对FPGA器件内部的配置电路功能影响不大,故可以对FPGA指令中未使用的位进行混淆。在本申请实施例所提供的方案中上述表1中操作码可以包括00、01、10、11,而不同的操作码又对应不同的指令类型,为了便于理解下面以表格的形式表示操作码与指令类型之间的映射关系。具体的,参见表2,表示操作码对应的指令类型。
表2
操作码 功能
00 空指令
01 读指令
10 写指令
11 保留
在本申请实施例所提供的方案中,未使用保留位中每一位可以用0或1表示,当为0时表示该位保留,不能被混淆,而为1时表示该位可以被混淆,然后,根据配置指令或配置指令参数的特征以及预设的混淆策略所确定出Type1数据包的数据即为屏蔽字。为了便于理解下面分别对不同类型的指令混淆过程进行说明。
1、针对空指令
具体的,对于空指令,其寄存器地址域[26:13]是未用保留位,根据空指令的特征以及预设的混淆策略所确定出屏蔽字为0x07FFF800,然后通过如下公式对空指令进行混淆:
其中,Pc1表示混淆后的空指令;P1表示表示混淆前的空指令;Rnd32表示32位随机数。
2、针对写指令
具体的,在本申请实施例所提供的方案中,写指令的种类有多种,例如,写指令包括写“命令寄存器(Command Register)”指令、写COR0寄存器指令、写COR1寄存器指令或者写IDCODE指令等,为了便于理解下面分别对不同的写指令混淆过程进行说明。
1)、写“命令寄存器(Command Register)”指令
对于写“命令寄存器(Command Register)”,该寄存器只使用了低5位表示写入的具体写命令码,高27位未用,根据写“命令寄存器(Command Register)”指令的特征以及预设的混淆策略所确定出屏蔽字为0xFFFFFFE0,然后可以采用如下方式对写指令进行混淆:
其中,Pc2表示混淆后的写指令;P2表示混淆前的写指令。
2)、写COR0寄存器指令以及写COR1寄存器指令
在本申请实施例所提供的方案中,写COR0寄存器指令以及写COR1寄存器指令的混淆方式与写“命令寄存器(Command Register)”指令相似,在此不做赘述。
3)、写IDCODE指令
具体的,配置位流中,写IDCODE指令用于写入FPGA器件所对应的IDCODE,FPGA内部配置电路会检测写入的IDCODE是否与FPGA器件相符.由于Xilinx FPGA/CPLD设计手册中的每一种FPGA器件都有其特有的IDCODE,针对写指令,其寄存器地址域([26:13]位)需要使用,根据写IDCODE指令的特征以及预设的混淆策略所确定出屏蔽字为0x07FC1800,然后可以采用如下方式对写指令进行混淆:
其中,Pc3表示混淆后的写指令;P3表示混淆前的写指令。
3、针对读指令
具体的,通常情况下配置位流文件中并未使用读指令,如果后续Vivado版本生成的位流中使用了读指令,可以采用与写指令相同的方式进行混淆,在此不做赘述。
二、对于配置指令字参数
在本申请实施例所提供的方案中,由于指令类型有多种,因此指令参数的混淆方式有多种,为了便于理解下面分别对不同的指令参数的混淆方式进行说明。
1)、看门狗定时寄存器
对于看门狗定时寄存器,配置位流中的指令和参数为0x30022001,0x000000,过于容易识别,参见表3表示看门狗定时寄存器位域及其含义。
表3
从上述表3可以知道,在看门狗最高位寄存器最高2位为0时表示看门狗未使用,根据看门狗定时寄存器中配置指令参数的特征以及预设的混淆策略所确定出屏蔽字为0x3FFFFFFF,然后可以采用如下方式对指令参数进行混淆:
其中,Pc5表示混淆后的指令参数;P5表示混淆前的指令参数。
2)、写“命令寄存器”
对于写“命令寄存器”该寄存器只使用了低5位表示写入的具体命令码,高27位未用,根据写“命令寄存器”中配置指令参数的特征以及预设的混淆策略所确定出屏蔽字为0xFFFFFFE0,然后可以采用如下方式对指令参数进行混淆:
其中,Pc6表示混淆后的指令参数;P6表示混淆前的指令参数。
3)、写COR0寄存器和写COR1寄存器
对于写COR0寄存器和写COR1寄存器,采用的混淆方法与上述写“命令寄存器”相同,在此不做赘述。
4)、写IDCODE指令
根据Xilinx FPGA/CPLD设计手册IDCODE的定义如下所示:
The 7series FPGA JTAG ID Code register has this format:
Vvvv:fffffff:aaaaaaaaa:ccccccccccc1
Where
V=version
f=7-bit family code
a=9-bit array code(includes 4-bit sub-family and 5-bit device
code)
c=company code
进一步,通过测试可以发现,在FPGA内部的配置逻辑只对f代表的family code和a代表的array code进行检测,其余为位域可以进行混淆,根据写IDCODE指令中配置指令参数的特征以及预设的混淆策略所确定出屏蔽字为0xF0000FFF,因此针对IDCODE指令可以采用如下的方式对指令参数进行混淆:
其中,Pc7表示混淆后的IDCODE指令参数;P7表示混淆前的IDCODE指令参数。
进一步,在一种可能实现的方式中,若所述配置指令字参数为MASK参数或写入寄存器参数,根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,包括:
通过如下公式对所述配置指令字参数配置指令字参数:
Pmask_c=Pmask|(~RND32)
Ppara_c=Ppara|(RND32)
其中,Pmask_c表示混淆后的MASK参数;Pmask表示混淆前的MASK参数;Ppara_c表示混淆后的写入寄存器参数;Ppara表示混淆前的写入寄存器参数。
三、对于配置指令顺序
具体的,在本申请实施例所提供的方案中,通过调整指令顺序,隐藏WBSTAR指令的位置,同时可以改变常规的配置指令顺序,增加攻击者猜测明文指令的难度。指令顺序混淆应保证不能对功能造成影响,可以混淆功能相互独立的指令,对于有先后顺序要求的指令,不能进行混淆。例如借助于通过MASK操作CTL0和CTL1指令,将写WBSTART指令插入写MASK和写CTL0指令之间。
进一步,计算机设备在对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆之后,还需要对指令进行替换。在本申请实施例所提供的方案中对指令进行替换的方式有多种,下面以一种较佳的方式为例进行说明。
在一种可能实现的方式中,根据所述随机数对所述明文中的配置指令进行替换,包括:
确定出与所述明文中任一配置指令功能相同的至少一个第一配置指令,随机从所述至少一个第一配置指令中选择出一个第二配置指令;
根据所述随机数以及所述第二配置指令对所述任一配置指令进行替换。
具体的,在FPGA配置位流数据中设置有多个执行相同功能的指令,可以利用功能相同的指令对原有指令进行替换,为了便于理解下面以举例的形式进行说明。
例如,原有配置位流中有很多空指令,对原有的空指令0x20000000进行延时等待和数据填充,可以利用写命令寄存器中的NULL指令,对空指令进行替换,首先将空指令0x20000000替换为指令0x30008001和0x00000000,然后利用随机数对指令0x30008001和0x00000000进行混淆,得到空指令0x20000000所对应的替换后的指令。具体的,利用如下公式进行替换(顺序执行如下两步):
步骤103,根据所述随机数对所述明文中的HMAC签名区数据进行混淆,计算并更新混淆后的HMAC签名区数据得到混淆后的明文,将所述混淆后的明文进行加密,得到混淆后的密文。
具体的,在本申请实施例所提供的方案中,计算机设备依次对明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,以及对明文中的配置指令进行替换之后,还需要对明文中的HMAC签名区数据进行混淆。
在本申请实施例所提供的方案中,Xilinx FPGA/CPLD设计手册还使用流HMAC签名算法,对配置位流进行保护。Xilinx使用HMAC Key分别与0x36和0x5c序列进行异或,生成i_key_pad区和o_key_pad区,由于i_key_pad区和o_key_pad区长度分别为16个字,而HMAC的key只有8个字,因此,2个区域存在连续的0x36和0x5c,特征非常明显。由于FPGA内部的配置电路,仅针对i_key_pad区和o_key_pad区进行SHA-256的哈希算法计算,并不对这两个区域的数据内容进行检查,因此直接使用随机数对这两个区域进行填充。
进一步,计算机设备在对HMAC签名区数据进行混淆之后,通过预设算法计算混淆后的HMAC签名区数据,例如,预设算法包括SHA-256;然后根据计算出的混淆后的HMAC签名区数据更新明文中HMAC签名区域,再对更新后的明文进行得到混淆后密文。
本申请实施例所提供的方案中,根据预设的随机数选择策略确定随机数,然后根据随机数对明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,并根据所述随机数对所述明文中的配置指令进行替换,再根据所述随机数对所述明文中的HMAC签名区数据进行混淆,计算并更新混淆后的HMAC签名区数据得到混淆后的明文,将所述混淆后的明文进行加密,得到混淆后的密文。因此,本申请实施例所提供的方案中,通过随机数对明文的配置数据进行混淆,不仅隐藏了明文以及密文中写WBSTAR指令位置信息,也降低配置指令的识别能力,进而增加漏洞攻击的难度以及提升抵抗漏洞攻击的能力。
基于与上述图1所示的方法相同的发明构思,本申请实施例提供了一种防御StarBleed漏洞的装置,参见图2,该装置包括:
解密单元201,用于对初始密文进行解密得到明文,并根据预设的随机数选择策略确定随机数;
混淆单元202,用于根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,并根据所述随机数对所述明文中的配置指令进行替换;
处理单元203,用于根据所述随机数对所述明文中的HMAC签名区数据进行混淆,计算并更新混淆后的HMAC签名区数据得到混淆后的明文,将所述混淆后的明文进行加密,得到混淆后的密文。
可选地,所述预设的随机数选择策略包括:
根据本地时间作为随机数的种子,随机生成32位的所述随机数;或
从配置数据区随机选择配置数据,将所述配置数据作为所述随机数。
可选地,所述混淆单元202,具体用于:
通过如下公式对所述配置指令字或所述配置指令字参数进行混淆:
其中,Pc表示混淆后的配置指令或配置参数;P表示混淆前的配置指令或配置参数;Rnd32表示随机数;M表示根据配置指令或配置参数特征和预设的混淆策略所确定的屏蔽字。
从所述明文中选择出功能相互独立的至少一个配置指令,将所述至少一个配置指令进行混淆。
可选地,若所述配置指令字参数为MASK参数或写入寄存器参数,所述混淆单元202,具体用于:
通过如下公式对所述配置指令字参数配置指令字参数:
Pmask_c=Pmask|(~RND32)
Ppara_c=Ppara|(RND32)
其中,Pmask_c表示混淆后的MASK参数;Pmask表示混淆前的MASK参数;Ppara_c表示混淆后的写入寄存器参数;Ppara表示混淆前的写入寄存器参数。
可选地,所述混淆单元202,具体用于:
确定出与所述明文中任一配置指令功能相同的至少一个第一配置指令,随机从所述至少一个第一配置指令中选择出一个第二配置指令;
根据所述随机数以及所述第二配置指令对所述任一配置指令进行替换。
参见图3,本申请提供一种计算机设备,该计算机设备,包括:
存储器301,用于存储至少一个处理器所执行的指令;
处理器302,用于执行存储器中存储的指令执行图1所述的方法。
本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行图1所述的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (8)

1.一种防御StarBleed漏洞的方法,其特征在于,包括:
对初始密文进行解密得到明文,并根据预设的随机数选择策略确定随机数;
根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,并根据所述随机数对所述明文中的配置指令进行替换;
根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,包括:
通过如下公式对所述配置指令字或所述配置指令字参数进行混淆:
其中,Pc表示混淆后的配置指令或配置参数;P表示混淆前的配置指令或配置参数;Rnd32表示随机数;M表示根据配置指令或配置参数特征和预设的混淆策略所确定的屏蔽字;
从所述明文中选择出功能相互独立的至少一个配置指令,将所述至少一个配置指令进行混淆;
根据所述随机数对所述明文中的HMAC签名区数据进行混淆,计算并更新混淆后的HMAC签名区数据得到混淆后的明文,将所述混淆后的明文进行加密,得到混淆后的密文。
2.如权利要求1所述的方法,其特征在于,所述预设的随机数选择策略包括:
根据本地时间作为随机数的种子,随机生成32位的所述随机数;或
从配置数据区随机选择配置数据,将所述配置数据作为所述随机数。
3.如权利要求1所述的方法,其特征在于,若所述配置指令字参数为MASK参数或写入寄存器参数,根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,包括:
通过如下公式对所述配置指令字参数配置指令字参数:
Pmask_c=Pmask|(~RND32)
Ppara_c=Ppara|(RND32)
其中,Pmask_c表示混淆后的MASK参数;Pmask表示混淆前的MASK参数;Ppara_c表示混淆后的写入寄存器参数;Ppara表示混淆前的写入寄存器参数。
4.如权利要求1~3任一项所述的方法,其特征在于,根据所述随机数对所述明文中的配置指令进行替换,包括:
确定出与所述明文中任一配置指令功能相同的至少一个第一配置指令,随机从所述至少一个第一配置指令中选择出一个第二配置指令;
根据所述随机数以及所述第二配置指令对所述任一配置指令进行替换。
5.一种防御StarBleed漏洞的装置,其特征在于,包括:
解密单元,用于对初始密文进行解密得到明文,并根据预设的随机数选择策略确定随机数;
混淆单元,用于根据所述随机数分别对所述明文中的配置指令字、配置指令字参数以及配置指令顺序进行混淆,并根据所述随机数对所述明文中的配置指令进行替换;
所述混淆单元,具体用于:
通过如下公式对所述配置指令字或所述配置指令字参数进行混淆:
其中,Pc表示混淆后的配置指令或配置参数;P表示混淆前的配置指令或配置参数;Rnd32表示随机数;M表示根据配置指令或配置参数特征和预设的混淆策略所确定的屏蔽字;
从所述明文中选择出功能相互独立的至少一个配置指令,将所述至少一个配置指令进行混淆;
处理单元,用于根据所述随机数对所述明文中的HMAC签名区数据进行混淆,计算并更新混淆后的HMAC签名区数据得到混淆后的明文,将所述混淆后的明文进行加密,得到混淆后的密文。
6.如权利要求5所述的装置,其特征在于,所述预设的随机数选择策略包括:
根据本地时间作为随机数的种子,随机生成32位的所述随机数;或
从配置数据区随机选择配置数据,将所述配置数据作为所述随机数。
7.如权利要求5所述的装置,其特征在于,若所述配置指令字参数为MASK参数或写入寄存器参数,所述混淆单元,具体用于:
通过如下公式对所述配置指令字参数配置指令字参数:
Pmask_c=Pmask|(~RND32)
Ppara_c=Ppara|(RND32)
其中,Pmask_c表示混淆后的MASK参数;Pmask表示混淆前的MASK参数;Ppara_c表示混淆后的写入寄存器参数;Ppara表示混淆前的写入寄存器参数。
8.如权利要求5~7任一项所述的装置,其特征在于,所述混淆单元,具体用于:
确定出与所述明文中任一配置指令功能相同的至少一个第一配置指令,随机从所述至少一个第一配置指令中选择出一个第二配置指令;
根据所述随机数以及所述第二配置指令对所述任一配置指令进行替换。
CN202010687192.3A 2020-07-16 2020-07-16 一种防御StarBleed漏洞的方法及装置 Active CN111967014B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010687192.3A CN111967014B (zh) 2020-07-16 2020-07-16 一种防御StarBleed漏洞的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010687192.3A CN111967014B (zh) 2020-07-16 2020-07-16 一种防御StarBleed漏洞的方法及装置

Publications (2)

Publication Number Publication Date
CN111967014A CN111967014A (zh) 2020-11-20
CN111967014B true CN111967014B (zh) 2023-08-11

Family

ID=73361935

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010687192.3A Active CN111967014B (zh) 2020-07-16 2020-07-16 一种防御StarBleed漏洞的方法及装置

Country Status (1)

Country Link
CN (1) CN111967014B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2189925A2 (en) * 2008-11-25 2010-05-26 SafeNet, Inc. Database obfuscation system and method
CN102916965A (zh) * 2012-10-29 2013-02-06 广州杰赛科技股份有限公司 一种云服务接口的安全认证机制及其认证系统
US9495145B1 (en) * 2015-09-29 2016-11-15 International Business Machines Corporation Customized electronic product configuration
CN107589960A (zh) * 2017-08-30 2018-01-16 北京轩宇信息技术有限公司 一种基于寄存器访问冲突检测的dsp指令模拟方法
EP3410337A1 (en) * 2017-05-30 2018-12-05 Servicenow, Inc. Edge encryption with metadata
CN109784009A (zh) * 2018-12-15 2019-05-21 深圳壹账通智能科技有限公司 代码混淆方法、系统、计算机装置及计算机可读存储介质
EP3671522A1 (en) * 2018-12-20 2020-06-24 INTEL Corporation Secure encryption key management in trust domains

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9411748B2 (en) * 2011-12-20 2016-08-09 Intel Corporation Secure replay protected storage
US8925076B2 (en) * 2012-12-11 2014-12-30 Kaspersky Lab Zao Application-specific re-adjustment of computer security settings
US9621525B2 (en) * 2014-06-02 2017-04-11 Qualcomm Incorporated Semi-deterministic digital signature generation
US11663297B2 (en) * 2016-03-10 2023-05-30 Dell Products, Lp System and method to assess anomalous behavior on an information handling system using indirect identifiers
US11392672B2 (en) * 2018-11-09 2022-07-19 Nanyang Technological University Computer program code obfuscation methods and systems

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2189925A2 (en) * 2008-11-25 2010-05-26 SafeNet, Inc. Database obfuscation system and method
CN102916965A (zh) * 2012-10-29 2013-02-06 广州杰赛科技股份有限公司 一种云服务接口的安全认证机制及其认证系统
US9495145B1 (en) * 2015-09-29 2016-11-15 International Business Machines Corporation Customized electronic product configuration
EP3410337A1 (en) * 2017-05-30 2018-12-05 Servicenow, Inc. Edge encryption with metadata
CN107589960A (zh) * 2017-08-30 2018-01-16 北京轩宇信息技术有限公司 一种基于寄存器访问冲突检测的dsp指令模拟方法
CN109784009A (zh) * 2018-12-15 2019-05-21 深圳壹账通智能科技有限公司 代码混淆方法、系统、计算机装置及计算机可读存储介质
EP3671522A1 (en) * 2018-12-20 2020-06-24 INTEL Corporation Secure encryption key management in trust domains

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
于志杰等.防御StarBleed漏洞的FPGA配置位流混淆方法.微电子学与计算机.2021,第38卷(第6期),7-12. *

Also Published As

Publication number Publication date
CN111967014A (zh) 2020-11-20

Similar Documents

Publication Publication Date Title
US9274976B2 (en) Code tampering protection for insecure environments
KR101216995B1 (ko) 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
US20120260106A1 (en) System and method for binary layout randomization
CN108964872B (zh) 一种基于aes的加密方法及装置
US9397830B2 (en) Method and apparatus for encrypting and decrypting data
US8699702B2 (en) Securing cryptographic process keys using internal structures
CN111814162B (zh) 一种基于定制硬件安全属性的内核敏感数据保护方法
US11863670B2 (en) Efficient side-channel-attack-resistant memory encryptor based on key update
CN105843776B (zh) 微处理器与其中安全执行指令的方法
CN115955307B (zh) 用户密码加盐保护方法、装置、可读存储介质及电子设备
CN110825672A (zh) 用于联机加密处理的高性能自主硬件引擎
US20170046280A1 (en) Data processing device and method for protecting a data processing device against attacks
CN104243137A (zh) 数据处理系统以及初始化数据处理系统的方法
US11121867B2 (en) Encryption methods based on plaintext length
Ziener et al. Configuration tampering of BRAM-based AES implementations on FPGAs
CN104639313B (zh) 一种密码算法的检测方法
CN111967014B (zh) 一种防御StarBleed漏洞的方法及装置
EP3935543A1 (en) Side-channel-attack-resistant memory access on embedded central processing units
KR20180059217A (ko) 메모리 데이터 보안 처리 장치 및 방법
JP2020064461A (ja) 変換装置、変換方法、変換プログラム及び難読プログラム
CN104718718A (zh) 用于执行密码方法的装置和方法
CN105743652A (zh) 基于地址异或的数据总线加密方法
US10554399B2 (en) Method and apparatus for encrypting and decrypting data
EP3484095A1 (en) Computer-implemented cryptographic method and device for implementing this method
CN113221076B (zh) 防止elf程序被逆向分析的方法、装置及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant