一种在操作系统中进行密码运算的方法和系统技术方案

技术编号:20681647 阅读:37 留言:0更新日期:2019-03-27 19:07
本发明专利技术公开一种在操作系统中进行密码运算的方法和系统。本方法在操作系统初始化可信环境下生成保护密钥,将保护密钥存储在操作系统保留的特权寄存器中。用户密钥可由用户输入的数据或密码运算内核模块的内部随机数生成,生成后由保护密钥加密后导出。系统向用户提供密码运算内核模块,当用户需要使用用户密钥进行密码运算时,用户态调用程序向密码运算内核模块发起请求,提供计算源数据以及密文的用户密钥,保护密钥在密码运算内核模块中对用户密钥进行解密,然后使用用户密钥完成用户请求的密码运算。本发明专利技术可防御用户态的各种攻击程序实施的内存信息泄漏攻击,保护密钥以及用户密钥可抵抗Meltdown和Spectre攻击。

【技术实现步骤摘要】
一种在操作系统中进行密码运算的方法和系统
本专利技术属于计算机技术、信息安全
,具体涉及一种在操作系统中进行密码运算的方法和系统。
技术介绍
密码技术常用来保护应用系统中的敏感数据,网上交易、电子邮件以及远程登录等服务的安全性都依赖密码技术的保护,一旦密码运算过程中敏感信息的安全性得不到保障,攻击者就可以解密网络上传输的信息,甚至冒充原用户的身份进行诈骗等犯罪行为,用户将遭受极大的损失。因此,保护密码运算中敏感数据非常重要。近年来与密码技术相关的攻击越来越多,攻击的手法也越来越新奇,从软件层到硬件层,攻击手段层出不穷,攻击方法防不胜防。攻击者可以利用密码软件自身的安全漏洞来实施内存信息泄漏攻击,以OpenSSLHeartbleed为例,它是软件层面上近年来著名的密码软件引擎的安全漏洞。其原理是OpenSSL软件代码在处理Heartbeat消息时,没有检查所接收Heartbeat消息的非法输入,然后在回复Heartbeat响应时就会从内存空间中复制随机地址的、最长可达64K字节的数据,其中就会有密钥数据。引起OpenSSLHeartbleed漏洞的软件代码并不是实现密码运算的代码,而是TLS协议处理的代码,但是OpenSSL将所有功能都实现在同一进程空间中,所以,有漏洞的TLS协议处理代码也可以顺利地访问到密钥数据。此外,密码软件系统的安全漏洞是普遍存在的,难以通过消除某一种特定的安全漏洞来彻底消除隐患。如果提出一种在安全漏洞存在的情况下仍然能够保证密码运算中敏感数据不受内存信息泄漏攻击威胁的方法和系统,就能极大地提高密码软件系统的安全性。除了应用系统本身的安全漏洞,Meltdown和Spectre是近期曝出的CPU微架构的漏洞,它们同样对密码运算中的敏感数据安全造成威胁。Meltdown漏洞是CPU硬件的安全问题,在各种CPU中广泛存在,其基本原理如下。攻击者进程在自己的代码中包含访问非法内存地址的攻击代码,由于CPU的乱序执行,该攻击代码会先被CPU执行、影响Cache状态,且Cache状态与被非法访问的、被攻击内存地址中的敏感信息直接相关;然后CPU进行权限检查、发现内存越界访问后放弃执行结果。但是,CPU放弃执行结果的时候,Cache状态没有变化,攻击者就可以进一步利用Cache-based侧信道读取该敏感信息。Spectre漏洞源自于CPU硬件的分支预测,同样也影响到大量的CPU。在CPU中的不同任务共用分支预测器,攻击者进程执行大量代码来使得分支预测器进入自己预期的状态。然后,CPU时间片切换到被攻击进程,被攻击进程会按照分支预测器的状态继续执行,访问被攻击进程中的敏感数据、影响Cache状态;然后CPU进行预测检查、发现预测错误后放弃执行结果。同样,CPU放弃执行结果的时候,Cache状态没有变化,攻击者就可以进一步利用Cache-based侧信道读取该敏感信息。现有方案对Meltdown攻击的防御方式主要是在操作系统维护两个页表,一个页表给用户程序使用,一个给操作系统内核使用,并且确保用户程序所使用的页表不会映射高优先级的页面,即不会映射操作系统内核的页面。两个页表的切换,会引起TLB刷新,进而降低内存的访问速度。如果某些应用场景需要大量的内核和用户空间切换(两个页表之间的切换),会造成较高的性能开销,目前该方案的平均性能开销大约是20%。要完全消除Spectre漏洞需要改变处理器的架构,因此该漏洞并不容易修补。现有方案对Spectre攻击的缓解手段主要是禁用分支预测器,这同样将带来极大的性能开销。事务内存(TransactionalMemory)提供了一种可用于保护密钥等敏感信息的机制,其关键思想是使临界区投机的执行,仅仅在确定发生数据访问冲突发生后才串行执行。数据冲突是指有多个线程投机的并发执行某个临界区,且多个线程同时访问了同一内存地址且至少有一个是写操作。如果整个事务执行过程都没有发生访问冲突,那么所有事务内对内存的修改将被原子的提交,并对其它线程可见。否则,所有的更新操作将被撤销,然后线程回滚到保存的状态点。Intel的TSX技术提供了完全用硬件实现的事务内存,程序员只要指定需要事务执行的区域,处理器将自动进行冲突检测、提交和回滚操作。TSX提供了三个新的指令(xbegin,xend,xabort)来开始、提交、终止(abort)一次事务执行。使用该接口时,程序员需要为xbegin指令指定一个回退处理程序作为参数,事务异常终止后程序会跳转到该回退处理程序处,程序员在此处可以根据上下文,编写进一步处理该情况的代码,例如重新试着以事务的方式运行。
技术实现思路
本专利技术提供了一种在操作系统中进行密码运算的方法和系统,实现在操作系统内核中为用户态程序提供密码运算服务的功能,同时对保护密钥和用户密钥进行保护,确保密钥使用时达到以下两个安全目标:a)可防御用户态的各种攻击程序实施的内存信息泄漏攻击;b)保护密钥以及特定算法(SM4加解密运算)的用户密钥可抵抗Meltdown和Spectre攻击。本专利技术采用的技术方案为:一种在操作系统中进行密码运算的方法,包括以下步骤:在操作系统初始化可信环境下生成保护密钥,将保护密钥存储在操作系统保留的特权寄存器中;所述特权寄存器不能被用户态程序访问,不能被操作系统用作其他用途;用户态程序提供密码运算所需的源数据以及经保护密钥加密的用户密钥;在操作系统内核设置密码运算内核模块,用户态程序调用所述密码运算内核模块完成密码运算;在密码运算中使用保护密钥解密获取用户密钥,然后使用用户密钥完成密码运算,在密码运算结束后清除用户密钥以及中间计算数据,并返回计算结果;用户密钥的加密过程、用户密钥的解密过程以及密码运算过程使用事务内存保护。进一步地,系统初始化可信环境下,系统提示要求输入口令,利用该口令生成指定长度的保护密钥,生成的保护密钥被置入系统保留的特权寄存器中。在用户态应用程序调用之前加载密码运算内核模块。进一步地,用户密钥可以由用户输入的数据生成,也可以由密码运算内核模块内部随机生成,然后使用保护密钥加密后导出,用户密钥生成和加密过程以事务内存的模式运行并且关闭中断,用户密钥加密算法实现不含任何内存写操作,运算更新的数据均存放在寄存器中且为顺序实现。进一步地,密码运算均在操作系统内核中完成,密码运算内核模块提供系统调用供其他程序使用。在密码运算中,使用保护密钥解密获取用户密钥,然后使用用户密钥完成密码运算,用户密钥解密过程和其他运算过程同样分别以事务内存的模式运行并且关闭中断,用户密钥解密算法以及SM4加解密算法实现不含任何内存写操作,运算更新的数据均存放在寄存器中且为顺序实现。进一步地,密码运算完成后擦除用户密钥以及中间敏感数据,最后将运算结果返回给用户态调用程序,返回的运算结果可以选择是否经保护密钥加密后输出。进一步地,密码运算可以是以下一种或多种:HMAC、对称加解密、非对称解密、非对称签名。一种在操作系统中进行密码运算的系统,其包括:保护密钥生成模块,负责在系统初始化可信环境下生成保护密钥,并将保护密钥存储在系统保留的特权寄存器中;所述特权寄存器不能被用户态程序访问,不能被操作系统用作其他用途;用户密钥生成模块,负责通过用户态程序提供的源数本文档来自技高网
...

【技术保护点】
1.一种在操作系统中进行密码运算的方法,其特征在于,包括以下步骤:在操作系统初始化可信环境下生成保护密钥,将保护密钥存储在操作系统保留的特权寄存器中;所述特权寄存器不能被用户态程序访问,不能被操作系统用作其他用途;用户态程序提供密码运算所需的源数据以及经保护密钥加密的用户密钥;在操作系统内核设置密码运算内核模块,用户态程序调用所述密码运算内核模块完成密码运算;在密码运算中使用保护密钥解密获取用户密钥,然后使用用户密钥完成密码运算,在密码运算结束后清除用户密钥以及中间计算数据,并返回计算结果;用户密钥的加密过程、用户密钥的解密过程以及密码运算过程使用事务内存保护。

【技术特征摘要】
1.一种在操作系统中进行密码运算的方法,其特征在于,包括以下步骤:在操作系统初始化可信环境下生成保护密钥,将保护密钥存储在操作系统保留的特权寄存器中;所述特权寄存器不能被用户态程序访问,不能被操作系统用作其他用途;用户态程序提供密码运算所需的源数据以及经保护密钥加密的用户密钥;在操作系统内核设置密码运算内核模块,用户态程序调用所述密码运算内核模块完成密码运算;在密码运算中使用保护密钥解密获取用户密钥,然后使用用户密钥完成密码运算,在密码运算结束后清除用户密钥以及中间计算数据,并返回计算结果;用户密钥的加密过程、用户密钥的解密过程以及密码运算过程使用事务内存保护。2.根据权利要求1所述的方法,其特征在于,所述密码运算包括以下两个部分:1)用户密钥解密部分:在使用用户密钥进行密码运算前,使用保护密钥对用户密钥进行解密操作;解密操作开始前关闭中断,解密过程受事务内存保护,即先启动事务内存模式,然后从系统保留的特权寄存器读取保护密钥,使用保护密钥对用户密钥进行解密并擦除该过程中间敏感数据,然后结束事务内存模式并开启中断;用户密钥解密过程不含任何内存写操作,计算更新的数据均存放在寄存器中,并且该过程是顺序逻辑实现,不含任何包括判断、循环在内的可能产生跳转的指令;2)用户密钥运算部分:利用解密后的用户密钥进行密码运算;首先在使用用户密钥进行密码运算开始前关闭中断,使用用户密钥进行密码运算同样受事务内存保护,即先启动事务内存模式,然后使用用户密钥进行密码运算,用户密钥密码运算结束后擦除密码运算中间敏感数据以及用户密钥,然后开启中断并结束事务内存模式。3.根据权利要求1所述的方法,其特征在于:所述密码运算是下列中的一种或多种:HMAC、对称加解密、非对称解密、非对称签名。4.根据权利要求1所述的方法,其特征在于:在操作系统初始化可信环境下,在没有启动任何用户态程序时,系统提示要求输入口令,利用该口令生成指定长度的保护密钥,生成的保护密钥被置入系统保留的特权寄存器中;使用口令作为输入生成保护密钥后,口令及生成算法所使用的中间变量都被擦除,仅保留其结果即保护密钥。5.根据权利要求1所述的方法,其特征在于:所述用户密钥以如下的两种方式之一生成:a)用户态程序输入一段数据,密码运算内核模块利用该数据生成用户密钥,使用保护密钥加密后输出;b)密码运算内核模块利用内部随机数作为种子,生成用户密钥,使用保护密钥加密后输出;在上述用户密钥生成过程前关闭中断,密钥生成和加密过程同样受事务内存保护,即先启动事务内存模式,然后生成用户密钥,从系统保留的特权寄存器读取保护密钥,再使用保护密钥对用户密钥进行加密并擦除该过程中间敏感数据,然后结束事务内存模式并...

【专利技术属性】
技术研发人员:林璟锵蔡权伟荆继武李文强李从午王建民王琼霄
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1