首页 / 专利库 / 医疗设备 / 持针器 / 一种抵御冷启动攻击的公钥密码实现方法

一种抵御冷启动攻击的公钥密码实现方法

阅读:340发布:2023-01-23

专利汇可以提供一种抵御冷启动攻击的公钥密码实现方法专利检索,专利查询,专利分析的服务。并且一种抵御 冷启动 攻击的公钥密码实现方法,包括:禁用系统对SSE、AVX指令集扩展的支持,并防止系统 内核 在 进程 切换的时候将YMM寄存器组中的内容交换到内存中;只利用CPU的寄存器而不利用内存实现公钥加密 算法 ;增加系统调用用于设置密钥、私钥加密、资源分配、资源回收;在进程退出时 操作系统 会回收资源的地方增加回收已分配给该进程的公钥密码计算资源的功能;用户空间进程调用系统调用实现可抵御针对内存的旁路攻击的公钥密码算法。本 发明 可以在不增加额外 硬件 的条件下,为使用X86-64 CPU硬件平台的计算机上的公钥密码算法增加抵抗针对内存的旁路攻击的能 力 ,使得在密码系统运行过程中,系统的私钥不会因为遭到针对内存的旁路攻击而泄露。,下面是一种抵御冷启动攻击的公钥密码实现方法专利的具体信息内容。

1.一种抵御冷启动攻击的公钥密码实现方法,包括如下步骤:
A.禁用系统对SSE、AVX指令集扩展的支持,并防止系统内核进程切换的时候将YMM寄存器组中的内容交换到内存中;
B.只利用CPU的寄存器而不利用内存实现公钥加密算法,即加密过程中密钥、中间状态都只存在于寄存器组中;
C.增加如下系统调用:
a)设置密钥:用于将私钥保存在YMM寄存器中;
b)私钥加密:用于执行私钥加密操作;
c)资源分配:用于请求为当前进程分配可用的公钥密码计算资源;
d)资源回收:用于回收当前进程已分配的公钥密码计算资源;
D.在进程退出时操作系统回收资源的地方,增加回收已分配给该进程的公钥密码计算资源的功能;
E.用户空间进程调用步骤C所述的系统调用实现可抵御针对内存的旁路攻击的公钥密码算法。
2.如权利要求1所述的公钥密码实现方法,其特征是,步骤E所述公钥密码算法如下:
1)使用系统调用c)分配公钥密码计算资源;
2)用户通过安全途径加载加密用的私钥,使用系统调用a)设置私钥,之后清除私钥在加载过程中占用过的内存;
3)使用系统调用b)执行使用私钥的公钥密码加密算法;
4)进程退出前释放已分配的公钥密码计算资源。
3.如权利要求1所述的公钥密码实现方法,其特征是,步骤C中,在每个系统调用开始时,需要禁用中断,实现原子操作,并启用CPU对SSE、AVX指令集扩展的支持;在系统调用结束时,需用禁用CPU对SSE、AVX指令集扩展的支持,启用中断。
4.如权利要求3所述的公钥密码实现方法,其特征是,在系统调用a)和b)的开始处,需要根据使用系统调用c)分配资源的情况选择被分配到当前进程的CPU执行核心进行执行。
5.如权利要求1所述的公钥密码实现方法,其特征是,步骤B中,明文输入、密文输出都通过寄存器和内存之间的数据复制完成。
6.如权利要求2所述的公钥密码实现方法,其特征是,步骤1)中,如果公钥密码资源分配失败,用户可以选择等待一段时间或关闭其他占用密码资源的进程再尝试重新分配;当资源分配成功后,被分配资源的进程将独占该密码资源,其它进程对该密码资源的访问的尝试将被禁止。

说明书全文

一种抵御冷启动攻击的公钥密码实现方法

技术领域

[0001] 本发明属于信息安全技术领域,具体涉及一种抵御冷启动攻击的公钥密码实现方法。

背景技术

[0002] 在理论上,对密码系统的攻击一般通过对密码算法弱点的分析和对密钥的暴破解两种方法来进行。由于主流的密码算法的安全性往往经过学术研究和工业实践的充分检验,使用的密钥长度也往往足够长,所以一次成功的攻击往往需要消耗大量的时间和计算资源,其成本远大于可能得到的收益,从而保证了密码系统的安全性。
[0003] 然而,对于实际部署中的密码系统,其安全性不仅与算法本身的安全性有关,还取决于算法具体实现以及软硬件计算环境等多方面因素。旁路攻击(side channel attack)就是这样的一种攻击方式:通过利用密码系统具体实现和计算环境中的安全缺陷,攻击者可以在无需破解密码系统的基础数学难题或者对密钥进行暴力破解的条件下,获得系统执行加解密过程中可以用来还原密钥的中间状态,甚至直接获得密钥本身。旁路攻击大大降低了攻击者有效破解现实密码系统的难度,严重威胁现实系统的安全性。尤其是对于一些被普遍认为是安全甚至被当作系统安全的基本前提假设的系统设计方案,一旦被发现了可行的旁路攻击方法,往往会产生广泛而重大的安全隐患。
[0004] 冷启动攻击(cold boot attack)是近年来出现并备受关注的一种旁路攻击方法。过去,人们通常认为,在计算机系统的电源被切断后以后,保存在内存(动态存储器,Dynamic RAM,DRAM)中的数据会因为掉电而立即消失,除非获得了足够高的权限,攻击者无法访问系统中其他进程的内存数据。所以,很多开发者都选择直接将密钥以及密钥的调度表等敏感数据直接保存在内存中。然而,学术界和技术界的研究表明,对于正在运行的计算机的内存,即使是在常温下被从主板拔出,其中的数据也会在掉电后保留数秒钟之久而不会发生明显的丢失(即存储单元的值反转);如果使用了简单的冷却技术进行降温,数据保留的时间会大大增加。尽管用户的计算机的BIOS或操作系统可能在系统正常的关机或重启过程中执行清除内存的操作,但如果攻击者直接切断电源,这些机制将无法发挥作用。这样,攻击者就可以将目标内存转移到另一台准备好的没有相关安全机制的电脑上,用一个自制的引导程序将目标内存的数据转储到磁盘或其它永久存储设备上。综上,攻击者可以按照下列操作流程执行冷启动攻击:
[0005] 准备:
[0006] ●正在运行的待攻击的计算机,简称目标机。
[0007] ●冷却剂,比如罐装空气(canned air),用于冷却内存。
[0008] ●一台没有内存清除机制的计算机,用于执行攻击,转储目标机的内存,下称执行机。
[0009] ●一个简单的引导程序,用于将内存转储到硬盘、U盘等存储设备。由于其在引导的时候需要占用一部分内存,所以这个引导程序的编写要尽可能简单,并占用尽量少的内存,能完成转储功能即可。可以根据执行机的硬件情况灵活选择加载方式,比如U盘、PXE等。
[0010] 执行步骤:
[0011] 1)使用冷却剂对正在运行的目标机的内存进行冷却。
[0012] 2)切断目标机的电源,拔下内存,迅速插入到执行机中,启动执行机。根据相关研究的实验结果,这个过程中目标机的内存中的数据损失非常小,且当执行机启动后,内存加电,数据将不再丢失。
[0013] 3)执行机启动后将自动加载引导程序,引导程序将目标机的内存转储到磁盘上。
[0014] 4)攻击者采用特定算法从目标机的内存映像中恢复出密钥或密码运算中关键的中间状态,攻破密码系统。
[0015] 一次成功执行冷启动攻击的过程如图1所示。
[0016] 不难看出,执行冷启动攻击并没有太高的技术槛,一旦攻击者做好准备(执行机、引导程序、冷却剂等),并有机会物理上接触到待攻击的计算机,便可在数分钟之内将其内存转储;而相关研究结果表明,恢复密钥的工作也可以在数分钟之内完成。同时,受到目前通用计算机体系结构的限制,大量密码系统都将密钥或中间状态放在内存中,所以,冷启动攻击的出现为目前的计算机安全体系结构带来了巨大的安全威胁,在学术界和工业界都得到了广泛的关注。
[0017] 现代密码体制主要包括对称密码体制和公钥密码体制两类。在对称密码体制中,加解密采用相同密钥,因此通信双方必须事先完成密钥协商,且信任对方不会泄露密钥。对称密钥加解密速度较快,资源消耗较少,可用来保证数据的完整性和保密性,但具有需要事先协商密钥、无法验证加密者身份、多方通信密钥管理困难等缺点。常用的对称密码算法包括DES、AES、IDEA等。
[0018] 针对对称密码体制的缺点,学术界提出了公钥密码体制。在公钥密码体制中,加密和解密是相互独立的,分别使用两把不同的密钥,由一把密钥加密过的信息只能用另一把密钥进行解密。两把密钥中,一把由其密钥持有者自己秘密保管,称为私钥,另一把可以公开发布给任何想与密钥所有者通信的人,称为公钥。用一把密钥加密过的信息只能用另一把密钥进行解密。使用公钥密码体制,其他用户可以用公钥加密数据发送给私钥持有者,保证信息的机密性;私钥持有者可以用私钥对信息进行数字签名,接受信息的用户便可用公钥验证信息的来源,并保证信息的完整性,且第三方可以通过公钥对信息进行验证,实现对信息的抗否认性。公钥密码体制的密钥长度往往相对较长,计算速度相对较慢,因此常与对称密码体制结合使用。常用的公钥密码算法包括Diffie Hellman、RSA、EIGamal、椭圆曲线(Elliptic Curve Cryptography)等。
[0019] 目前,学术界已经出现有效的在内存镜像中搜索密钥的方法,因此,无论是公钥密码体制还是对称密码体制,一旦将密钥或重要的中间状态放在内存中,都容易受到冷启动攻击而导致密钥泄露;换句话说,要抵御冷启动攻击,就需要将密钥及密码算法计算过程的重要中间状态移出内存,放到更安全的难以进行攻击的设备中。在学术界,目前已经出现几种类似的抵御针对对称密码体制的冷启动攻击的方法。但相对于简单高效的对称密码算法,公钥密码算法往往计算复杂、密钥较长,实现起来需要更大的存储空间和更高的技术要求,目前无论在学术界还是工业界都还没有有效抵御针对公钥密码的冷启动攻击的方法。而公钥密码算法是如今各种密钥交换协议、签名认证协议等安全框架的重要基础,具有广泛的应用,如果不能有效解决针对公钥密码体制的冷启动攻击,将会为依赖这些协议进行信息交换的各行各业带来严重的安全隐患。

发明内容

[0020] 本发明旨在提出一种针对公钥密码体制的可以抵御冷启动攻击的办法。
[0021] 本发明的技术方案如下:
[0022] 一种抵御冷启动攻击的公钥密码实现方法,包括如下步骤:
[0023] A.禁用系统对SSE、AVX指令集扩展的支持,并防止系统内核在进程切换的时候将YMM寄存器组中的内容交换到内存中;
[0024] B.只利用CPU的寄存器而不利用内存实现公钥加密算法,即加密过程中密钥、中间状态都只存在于寄存器组中;
[0025] C.增加如下系统调用:
[0026] a)设置密钥:用于将私钥保存在YMM寄存器中;
[0027] b)私钥加密:用于执行私钥加密操作;
[0028] c)资源分配:X86-64体系结构的CPU的一个核心在同一时刻可以也仅可以用来为一个进程执行本发明提出的公钥密码计算,因此本发明将CPU的一个核心成为一组公钥密码计算资源,可分配的资源的数目对应于CPU的核心数目。本系统调用用于请求为当前进程分配可用的公钥密码计算资源有空闲计算资源时分配成功,资源分配的结果(即哪个CPU核心被分配给了哪个进程)被写入系统空间中的一个全局数组中用于后续的资源分配查询和资源回收;
[0029] d)资源回收:用于回收当前进程已分配的公钥密码计算资源;
[0030] D.在进程退出时操作系统会回收资源的地方增加回收已分配给该进程的公钥密码计算资源的功能;
[0031] E.用户空间进程调用步骤C所述的系统调用实现可抵御针对内存的旁路攻击的公钥密码算法。
[0032] 所述的公钥密码实现方法,其特征是,步骤E所述公钥密码算法如下:
[0033] 1)使用系统调用c)分配公钥密码计算资源;
[0034] 2)用户通过安全途径加载加密用的私钥,使用系统调用a)设置私钥,之后清除私钥在加载过程中占用过的内存;
[0035] 3)使用系统调用b)执行使用私钥的公钥密码加密算法;
[0036] 4)进程退出前释放已分配的公钥密码计算资源。
[0037] 所述的公钥密码实现方法,其特征是,步骤C中,在每个系统调用开始时,需要禁用中断,实现原子操作,并启用CPU对SSE、AVX指令集扩展的支持;在系统调用结束时,需用禁用CPU对SSE、AVX指令集扩展的支持,启用中断。
[0038] 所述的公钥密码实现方法,其特征是,在系统调用a)和b)的开始处,需要根据使用系统调用c)分配资源的情况选择被分配到当前进程的CPU执行核心进行执行。
[0039] 所述的公钥密码实现方法,其特征是,步骤B中,明文输入、密文输出都通过寄存器和内存之间的数据复制完成。
[0040] 所述的公钥密码实现方法,其特征是,步骤1)中,如果公钥密码资源分配失败,用户可以选择等待一段时间或关闭其他占用密码资源的进程再尝试重新分配;当资源分配成功后,被分配资源的进程将独占该密码资源,其它进程对该密码资源的访问的尝试将被禁止。
[0041] 本发明的有益效果为,可以在不增加额外硬件的条件下,为使用X86-64 CPU硬件平台的计算机上的公钥密码算法增加抵抗针对内存的旁路攻击的能力,使得在密码系统运行过程中,系统的私钥不会因为遭到针对内存的旁路攻击而泄露。附图说明
[0042] 图1对于一般的密码系统,攻击者通过冷启动攻击成功得到保存于内存中的密钥的流程;
[0043] 图2本发明所述方法的流程图

具体实施方式

[0044] 本发明的实施条件如下:
[0045] ●硬件:使用X86-64体系结构支持AVX指令集的CPU(Sandy Bridge架构以后的Intel CPU或Bulldozer架构以后的AMD CPU)的计算机系统
[0046] ●软件:可对内核源码进行修改并重新编译的操作系统
[0047] 具体实施步骤如下(流程参图1):
[0048] A.为了防止系统中其它部分的代码使用SSE或AVX指令集访问YMM寄存器组,导致私钥泄露或被破坏,本发明需要禁用系统对SSE、AVX指令集扩展的支持,使得除本发明相关的特定代码外,其它任何代码都不能使用SSE、AVX指令集扩展中的指令访问YMM寄存器组;在进程切换时,系统一般会将YMM寄存器组中的内容保存到内存中,这将给本发明带来私钥泄露的安全威胁,也需要通过修改内核来禁止。例如,在Linux操作系统中,可以修改内核中的native cpuid函数,将其返回值中代表SSE、AVX等指令集扩展的相关标志位清零即可禁止系统中的其它代码使用SSE或AVX指令集并且在进程切换的时候不会保存YMM寄存器组的内容。
[0049] B.为了防止私钥或使用私钥进行密码计算的中间状态泄露到内存中导致的私钥泄露,本发明需要使用汇编语言,只利用CPU的寄存器作为存储空间实现公钥加密算法。从AVX指令集开始,X86-64体系结构的CPU具有16个256位的YMM寄存器,加上14个64位通用寄存器(不使用RSP和RIP),将可提供至少(16*256+14*64)=4992位的存储空间,加之指令集对加、减、乘、除、异或、无进位乘法等基本运算良好的支持,可以实现163位、233位的二进制域上的椭圆曲线运算,192位、224位素数域上的椭圆曲线的运算等基本的公钥密码算法。
[0050] C.由于本发明在整个系统内禁用了其它代码使用SSE、AVX指令集,但本发明实现的公钥密码算法又需要SSE、AVX指令集的支持,所以需要在内核中实现密码算法,并在算法的代码开始前启用系统对SSE、AVX指令集的支持,且在算法执行完成后再禁用对SSE、AVX指令集的支持。这可以通过修改保存在CR4寄存器中的标志位来实现。同时,由于密码算法在内核中实现,而本发明希望用户层的应用也可以使用本发明提供的密码算法实现,所以本发明以系统调用的形式向用户层提供了一个调用密码算法的接口,所述系统调用指在操作系统内核中实现的供用户层程序访问系统内核中功能的编程接口。根据密码算法的运算流程,本发明需要实现两个系统调用分别用于用户设置密钥和执行密码运算。由于密码运算在密钥载入CPU后将一直独占该CPU的YMM寄存组,所以在CPU的一个核心上同一时间只能运行一个密码算法的实例且只能被一个进程独占,而不同核心则可被分配给不同进程用于不同的密码运算。所以,本发明需要实现另外两个系统调用分别用于密码运算资源的分配和回收。由于密码运算过程中会使用通用寄存器组保存运算的中间状态,所以在密码运算开始前需要关闭中断以保证一次密码运算的过程是原子操作,在运算完成前不会发生进程切换导致通用寄存器组中的内容被切换到内存中去,并在运算结束后打开中断以保证系统中其它代码的正常运行。
[0051] D.为了防止进程在申请了公钥密码计算资源后异常退出导致已分配的资源无法被回收,本发明需要修改操作系统的进程退出时回收资源的代码,增加回收已分配给该进程的公钥密码计算资源的功能。
[0052] E.利用以上各部分的工作,用户空间中的代码可以按照以下步骤调用本发明提供的防止针对内存的旁路攻击的公钥密码算法:
[0053] 1)使用本发明提供的系统调用尝试获取可用的公钥密码计算资源(下简称“资源”)。
[0054] 由于可用资源的数目与CPU的核心数目相同,主流的CPU往往只有4个核心,所以这一步可能因为没有可分配资源而失败。如果分配失败,用户可以选择等待一段时间或关闭其他占用资源的进程再尝试。当资源分配成功后,被分配资源的进程将独占该资源,其它进程对该资源的访问的尝试将被禁止。
[0055] 2)在成功获得公钥密码计算资源后,用户可以使用代码从U盘或其它安全的存储设备处读取私钥到内存中,再使用本发明提供的系统调用将内存中的私钥存入CPU中用于密码运算,再将内存中曾用于保存私钥的内存单元清零。根据冷启动攻击的原理,攻击者需要在目标计算机的使用者不在场的情况下具有物理接触目标计算机的权限才能执行攻击,所以虽然私钥载入的过程中私钥会短暂地在内存中停留,但由于使用者在场负责密钥载入,可认为这个过程是安全的。而在此之后私钥将不再出现在内存中,所以整个密钥的载入和使用的过程都可以认为是安全的。
[0056] 3)在成功载入密钥之后,用户进程可以使用本发明提供的系统调用进行私钥加密操作(设置私钥后可反复执行)。由于明文和密文的泄露都不会威胁系统安全,所以明文和密文都可以保存在内存缓冲区中,通过系统调用进行传入和传出。
[0057] 4)在进程退出前,用户代码需要通过系统调用显式释放已分配的资源,或由系统内核中修改过的进程退出资源回收机制自动释放。
相关专利内容
标题 发布/更新时间 阅读量
防回弹持针器 2020-05-12 258
腔镜持针器 2020-05-11 953
持针器 2020-05-11 234
安全式采血针持针器 2020-05-13 251
一种持针器 2020-05-11 695
一种直角持针器 2020-05-12 629
可调式持针器 2020-05-12 345
回缩式持针器 2020-05-11 417
毫针持针器 2020-05-13 166
针灸持针器 2020-05-13 590
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈