CN109522736B - 一种在操作系统中进行密码运算的方法和系统 - Google Patents

一种在操作系统中进行密码运算的方法和系统 Download PDF

Info

Publication number
CN109522736B
CN109522736B CN201811525467.2A CN201811525467A CN109522736B CN 109522736 B CN109522736 B CN 109522736B CN 201811525467 A CN201811525467 A CN 201811525467A CN 109522736 B CN109522736 B CN 109522736B
Authority
CN
China
Prior art keywords
key
user
user key
protection
password
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
CN201811525467.2A
Other languages
English (en)
Other versions
CN109522736A (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.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
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 Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201811525467.2A priority Critical patent/CN109522736B/zh
Publication of CN109522736A publication Critical patent/CN109522736A/zh
Application granted granted Critical
Publication of CN109522736B publication Critical patent/CN109522736B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation

Landscapes

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

Abstract

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

Description

一种在操作系统中进行密码运算的方法和系统
技术领域
本发明属于计算机技术、信息安全技术领域,具体涉及一种在操作系统中进行密码运算的方法和系统。
背景技术
密码技术常用来保护应用系统中的敏感数据,网上交易、电子邮件以及远程登录等服务的安全性都依赖密码技术的保护,一旦密码运算过程中敏感信息的安全性得不到保障,攻击者就可以解密网络上传输的信息,甚至冒充原用户的身份进行诈骗等犯罪行为,用户将遭受极大的损失。因此,保护密码运算中敏感数据非常重要。
近年来与密码技术相关的攻击越来越多,攻击的手法也越来越新奇,从软件层到硬件层,攻击手段层出不穷,攻击方法防不胜防。
攻击者可以利用密码软件自身的安全漏洞来实施内存信息泄漏攻击,以OpenSSLHeartbleed为例,它是软件层面上近年来著名的密码软件引擎的安全漏洞。其原理是OpenSSL软件代码在处理Heartbeat消息时,没有检查所接收Heartbeat消息的非法输入,然后在回复Heartbeat响应时就会从内存空间中复制随机地址的、最长可达64K字节的数据,其中就会有密钥数据。引起OpenSSL Heartbleed漏洞的软件代码并不是实现密码运算的代码,而是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攻击的缓解手段主要是禁用分支预测器,这同样将带来极大的性能开销。
事务内存(Transactional Memory)提供了一种可用于保护密钥等敏感信息的机制,其关键思想是使临界区投机的执行,仅仅在确定发生数据访问冲突发生后才串行执行。数据冲突是指有多个线程投机的并发执行某个临界区,且多个线程同时访问了同一内存地址且至少有一个是写操作。如果整个事务执行过程都没有发生访问冲突,那么所有事务内对内存的修改将被原子的提交,并对其它线程可见。否则,所有的更新操作将被撤销,然后线程回滚到保存的状态点。Intel的TSX技术提供了完全用硬件实现的事务内存,程序员只要指定需要事务执行的区域,处理器将自动进行冲突检测、提交和回滚操作。TSX提供了三个新的指令(xbegin,xend,xabort)来开始、提交、终止(abort)一次事务执行。使用该接口时,程序员需要为xbegin指令指定一个回退处理程序作为参数,事务异常终止后程序会跳转到该回退处理程序处,程序员在此处可以根据上下文,编写进一步处理该情况的代码,例如重新试着以事务的方式运行。
发明内容
本发明提供了一种在操作系统中进行密码运算的方法和系统,实现在操作系统内核中为用户态程序提供密码运算服务的功能,同时对保护密钥和用户密钥进行保护,确保密钥使用时达到以下两个安全目标:a)可防御用户态的各种攻击程序实施的内存信息泄漏攻击;b)保护密钥以及特定算法(SM4加解密运算)的用户密钥可抵抗Meltdown和Spectre攻击。
本发明采用的技术方案为:
一种在操作系统中进行密码运算的方法,包括以下步骤:
在操作系统初始化可信环境下生成保护密钥,将保护密钥存储在操作系统保留的特权寄存器中;所述特权寄存器不能被用户态程序访问,不能被操作系统用作其他用途;
用户态程序提供密码运算所需的源数据以及经保护密钥加密的用户密钥;
在操作系统内核设置密码运算内核模块,用户态程序调用所述密码运算内核模块完成密码运算;在密码运算中使用保护密钥解密获取用户密钥,然后使用用户密钥完成密码运算,在密码运算结束后清除用户密钥以及中间计算数据,并返回计算结果;
用户密钥的加密过程、用户密钥的解密过程以及密码运算过程使用事务内存保护。
进一步地,系统初始化可信环境下,系统提示要求输入口令,利用该口令生成指定长度的保护密钥,生成的保护密钥被置入系统保留的特权寄存器中。在用户态应用程序调用之前加载密码运算内核模块。
进一步地,用户密钥可以由用户输入的数据生成,也可以由密码运算内核模块内部随机生成,然后使用保护密钥加密后导出,用户密钥生成和加密过程以事务内存的模式运行并且关闭中断,用户密钥加密算法实现不含任何内存写操作,运算更新的数据均存放在寄存器中且为顺序实现。
进一步地,密码运算均在操作系统内核中完成,密码运算内核模块提供系统调用供其他程序使用。在密码运算中,使用保护密钥解密获取用户密钥,然后使用用户密钥完成密码运算,用户密钥解密过程和其他运算过程同样分别以事务内存的模式运行并且关闭中断,用户密钥解密算法以及SM4加解密算法实现不含任何内存写操作,运算更新的数据均存放在寄存器中且为顺序实现。
进一步地,密码运算完成后擦除用户密钥以及中间敏感数据,最后将运算结果返回给用户态调用程序,返回的运算结果可以选择是否经保护密钥加密后输出。
进一步地,密码运算可以是以下一种或多种:HMAC、对称加解密、非对称解密、非对称签名。
一种在操作系统中进行密码运算的系统,其包括:
保护密钥生成模块,负责在系统初始化可信环境下生成保护密钥,并将保护密钥存储在系统保留的特权寄存器中;所述特权寄存器不能被用户态程序访问,不能被操作系统用作其他用途;
用户密钥生成模块,负责通过用户态程序提供的源数据或密码运算内核模块内部随机数生成用户密钥,然后使用保护密钥加密后输出;
密码运算模块,负责在用户态程序提供密码运算所需的源数据以及经保护密钥加密的用户密钥后,完成密码运算;所述密码运算使用保护密钥解密获取用户密钥,然后使用用户密钥完成密码运算,在密码运算结束后清除用户密钥以及中间计算数据,并返回计算结果;
密码运算保护模块,负责对用户密钥的加密过程、用户密钥的解密过程以及密码运算过程进行保护,包括事务内存保护和关闭中断。
本发明提出了一种在操作系统中进行密码运算的方法和系统,这种方法利用了Intel TSX技术对密钥等敏感信息进行保护,可以在用户态应用程序存在安全漏洞的情况下防御内存信息泄漏攻击,阻止用户态的各种攻击程序获取密钥等敏感信息,同时,该方法中的保护密钥以及特定算法(SM4加解密运算)的用户密钥可以抵抗Meltdown和Spectre攻击,极大地提高了用户态应用程序密码运算中的密钥等敏感信息的安全性。
与现有技术相比,本发明具有以下优点:
1)将用户密钥加密过程、用户密钥解密过程以及密码运算过程用事务内存保护,可以防止用户态攻击程序通过内存信息泄漏攻击获取密钥等敏感数据。
2)将用户密钥加密过程、用户密钥解密过程以及SM4加解密运算过程关闭中断,密码运算过程不含任何内存写操作,运算更新的数据均存放在寄存器中,可以防止用户态攻击程序通过Meltdown攻击获取密钥等敏感数据。
3)将用户密钥加密过程、用户密钥解密过程以及SM4加解密运算过程关闭中断,使用顺序逻辑实现,可以防止用户态攻击程序通过Spectre攻击获取密钥等敏感数据。
附图说明
图1是本发明方法的步骤流程图。
图2是系统初始化生成保护密钥的过程。
图3是保护密钥生成后置入到保留特权寄存器中的过程。
图4是用户密钥生成及加密导出的过程。
图5是密码运算内核模块结构图。
图6是用户态程序调用密码运算内核模块的接口完成密码运算的过程。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例,对本发明做进一步说明
实施例1:
图1是本发明方法的总体步骤流程图。本实施例在操作系统中进行RSA解密运算,运算结果直接输出,主要包含如下几个步骤:
1、保护密钥生成,如图2所示,包括以下步骤:
1)修改操作系统内核启动过程,添加保护密钥生成过程,保证保护密钥生成过程没有任何用户态程序启动、运行。
2)操作系统启动,保护密钥生成程序被执行,用户操作界面显示提示信息,提示操作员输入口令。
3)操作员输入口令。
4)用户输入的口令作为SHA-256杂凑算法的输入,进行SHA-256运算,运算获得256位杂凑值,作为保护密钥。
5)擦除口令以及保护密钥生成过程中产生的中间数据。
2、保护密钥置入特权寄存器,如图3所示,包括以下步骤::
1)修改操作系统,设置debug寄存器为保留的特权寄存器,确保无法被用户态程序访问以及不被操作系统用作其他用途,仅密码运算内核模块可访问。
2)将步骤1中生成的保护密钥导入到debug寄存器中。
3、加载密码运算内核模块:
1)在用户态程序调用前加载密码运算内核模块。图5是密码运算内核模块结构图,可以是以下一种或多种进行密码运算:HMAC、对称加解密、非对称解密、非对称签名。
2)密码运算内核模块加载时设置用户态接口,包括SM4加解密接口、RSA解密接口等。
4、用户密钥生成:
如图4所示,用户密钥生成有两种方式,本实施例1选择使用用户输入的数据生成用户密钥并加密后导出,具体过程如下:
1)用户态调用程序请求生成用户密钥并输入一段数据。
2)关闭中断。
3)调用xbegin指令,将事务abort的跳转地址设置为事务abort处理程序。
4)密码运算内核模块利用该数据作为RSA密钥生成算法的输入,进行RSA密钥生成运算,运算结果作为用户密钥。
5)从debug寄存器中读取保护密钥,使用保护密钥对用户密钥进行SM4加密,该SM4加密算法经过特别编码,不含任何内存写操作,运算更新的数据均存放在寄存器中,仅使用异或和循环左移指令实现整个运算,并且不含判断、循环等破坏顺序执行的指令。用户密钥加密完成后擦除密钥生成过程的中间数据。
6)调用xend指令。
7)开启中断。
8)将密文用户密钥返回给用户态调用程序。
5、基于用户密钥的密码运算,如图6所示,包括以下步骤:
1)用户态程序调用密码运算内核模块RSA解密运算接口,传入RSA解密运算所需的源数据以及用户密钥,设置密码运算结果是否加密输出的参数为0。
2)关闭中断。
3)调用xbegin指令,将事务abort的跳转地址设置为事务abort处理程序。
4)从debug寄存器中读取保护密钥,使用保护密钥对用户密钥进行SM4解密,该SM4解密算法同样经过特别编码,不含任何内存写操作,运算更新的数据均存放在寄存器中,仅使用异或和循环左移指令实现整个运算,并且不含判断、循环等破坏顺序执行的指令。用户密钥解密完成后擦除该过程的中间数据。
5)调用xend指令。
6)开启中断。
7)关闭中断。
8)调用xbegin指令,将事务abort的跳转地址设置为事务abort处理程序。
9)使用明文用户密钥进行RSA解密运算,运算完成后擦除密码运算过程中的中间数据以及用户密钥。
10)调用xend指令。
11)开启中断。
12)返回密码运算结果。
实施例2:
本实施例在操作系统中进行SM4加密运算,运算结果经保护密钥加密后输出,主要包含如下几个步骤:
1、保护密钥生成、保护密钥置入特权寄存器以及加载密码运算内核模块步骤与实施例1相同。
2、用户密钥生成,:
本实施例2选择在密码运算内核模块使用内部随机数生成用户密钥并加密后导出,如图4所示,具体过程如下:
1)用户态调用程序请求密码运算内核模块直接生成用户密钥。
2)关闭中断。
3)调用xbegin指令,将事务abort的跳转地址设置为事务abort处理程序。
4)密码运算内核模块使用其内部随机数作为SM4密钥生成算法的输入,进行SM4密钥生成运算,运算结果作为用户密钥。
5)从debug寄存器中读取保护密钥,使用保护密钥对用户密钥进行上述SM4加密。用户密钥加密完成后擦除密钥生成过程的中间数据。
6)调用xend指令。
7)开启中断。
8)将密文用户密钥返回给用户态调用程序。
3、基于用户密钥的密码运算,如图6所示,包括以下步骤:
1)用户态程序调用密码运算内核模块SM4加密运算接口,传入SM4加密运算所需的源数据以及用户密钥,设置密码运算结果是否加密输出的参数为1。
2)关闭中断。
3)调用xbegin指令,将事务abort的跳转地址设置为事务abort处理程序。
4)从debug寄存器中读取保护密钥,使用保护密钥对用户密钥进行上述SM4解密。用户密钥解密完成后擦除该过程的中间数据。
5)调用xend指令。
6)开启中断。
7)关闭中断。
8)调用xbegin指令,将事务abort的跳转地址设置为事务abort处理程序。
9)使用明文用户密钥进行SM4加密运算,该SM4加密算法实现与上述SM4加密算法实现相同。运算完成后擦除该运算过程中的中间数据,然后从debug寄存器中读取保护密钥,使用保护密钥对密码运算结果进行上述SM4加密。最后擦除该运算过程中的中间数据以及用户密钥。
10)调用xend指令。
11)开启中断。
12)返回经保护密钥加密后的密码运算结果。
实施例3:
本实施例提供一种在操作系统中进行密码运算的系统,其包括:
保护密钥生成模块,负责在系统初始化可信环境下生成保护密钥,并将保护密钥存储在系统保留的特权寄存器中;所述特权寄存器不能被用户态程序访问,不能被操作系统用作其他用途;
用户密钥生成模块,负责通过用户态程序提供的源数据或密码运算内核模块内部随机数生成用户密钥,然后使用保护密钥加密后输出;
密码运算模块,负责在用户态程序提供密码运算所需的源数据以及经保护密钥加密的用户密钥后,完成密码运算;所述密码运算使用保护密钥解密获取用户密钥,然后使用用户密钥完成密码运算,在密码运算结束后清除用户密钥以及中间计算数据,并返回计算结果;
密码运算保护模块,负责对用户密钥的加密过程、用户密钥的解密过程以及密码运算过程进行保护,包括事务内存保护和关闭中断。
上述实施例1、2中仅以RSA解密运算、SM4加密运算为例说明了本发明方法的具体实施方式,本方面方法还可应用于各类HMAC、对称加解密、非对称解密、非对称签名运算,密码算法包括但不限于:AES、DES、3DES、SM4、MD5、SHA1、SM3、RSA、ECC、ECDSA、SM2。
以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

Claims (7)

1.一种在操作系统中进行密码运算的方法,其特征在于,包括以下步骤:
在操作系统初始化可信环境下生成保护密钥,将保护密钥存储在操作系统保留的特权寄存器中;所述特权寄存器不能被用户态程序访问,不能被操作系统用作其他用途;
用户态程序提供密码运算所需的源数据以及经保护密钥加密的用户密钥;
在操作系统内核设置密码运算内核模块,用户态程序调用所述密码运算内核模块完成密码运算;在密码运算中使用保护密钥解密获取用户密钥,然后使用用户密钥完成密码运算,在密码运算结束后清除用户密钥以及中间计算数据,并返回计算结果;
用户密钥的加密过程、用户密钥的解密过程以及密码运算过程使用事务内存保护;
所述密码运算包括以下两个部分:
1)用户密钥解密部分:在使用用户密钥进行密码运算前,使用保护密钥对用户密钥进行解密操作;解密操作开始前关闭中断,解密过程受事务内存保护,即先启动事务内存模式,然后从系统保留的特权寄存器读取保护密钥,使用保护密钥对用户密钥进行解密并擦除该过程中间敏感数据,然后结束事务内存模式并开启中断;用户密钥解密过程不含任何内存写操作,计算更新的数据均存放在寄存器中,并且该过程是顺序逻辑实现,不含任何包括判断、循环在内的可能产生跳转的指令;
2)用户密钥运算部分:利用解密后的用户密钥进行密码运算;首先在使用用户密钥进行密码运算开始前关闭中断,使用用户密钥进行密码运算同样受事务内存保护,即先启动事务内存模式,然后使用用户密钥进行密码运算,用户密钥密码运算结束后擦除密码运算中间敏感数据以及用户密钥,然后开启中断并结束事务内存模式;
所述用户密钥以如下的两种方式之一生成:
a)用户态程序输入一段数据,密码运算内核模块利用该数据生成用户密钥,使用保护密钥加密后输出;
b)密码运算内核模块利用内部随机数作为种子,生成用户密钥,使用保护密钥加密后输出;
在上述用户密钥生成过程前关闭中断,密钥生成和加密过程同样受事务内存保护,即先启动事务内存模式,然后生成用户密钥,从系统保留的特权寄存器读取保护密钥,再使用保护密钥对用户密钥进行加密并擦除该过程中间敏感数据,然后结束事务内存模式并开启中断;使用保护密钥对用户密钥进行加密不含任何内存写操作,计算更新的数据均存放在寄存器中,并且该过程是顺序逻辑实现,不含任何包括判断、循环在内的可能产生跳转的指令;
其中,使用保护密钥对用户密钥加密或解密过程和对计算结果加密过程是使用对称密码算法的SM4算法实现的,包括:
每一轮的迭代运算使用查找表实现,查找表在内存或寄存器存储,所有更新的计算结果均使用寄存器存储,所有计算均使用异或和循环左移指令实现;
每一轮的迭代运算的代码分别编写,而不是使用包括for/while/do在内的循环语句、不使用包括if在内的判断语句,避免产生跳转,确保整个指令序列顺序执行。
2.根据权利要求1所述的方法,其特征在于:所述密码运算是下列中的一种或多种:HMAC、对称加解密、非对称解密、非对称签名。
3.根据权利要求1所述的方法,其特征在于:在操作系统初始化可信环境下,在没有启动任何用户态程序时,系统提示要求输入口令,利用该口令生成指定长度的保护密钥,生成的保护密钥被置入系统保留的特权寄存器中;使用口令作为输入生成保护密钥后,口令及生成算法所使用的中间变量都被擦除,仅保留其结果即保护密钥。
4.根据权利要求1所述的方法,其特征在于:密码运算后返回的计算结果选择是否经保护密钥加密后输出;在使用保护密钥加密计算结果的过程前关闭中断,该计算过程同样受事务内存保护,即先启动事务内存模式,然后从系统保留的特权寄存器读取保护密钥,再使用保护密钥对计算结果进行加密并擦除该过程中间敏感数据,然后结束事务内存模式并开启中断。
5.根据权利要求1至4中任一权利要求所述的方法,其特征在于:所述事务内存是使用IntelTSX特性,启动事务内存模式即调用XBEGIN指令,并且将事务abort的跳转地址设置为事务abort处理程序;结束事务内存模式即调用XEND指令。
6.根据权利要求1所述的方法,其特征在于:所述用户密钥运算部分按如下方式实现SM4加解密密码运算:
每一轮的迭代运算使用查找表实现,查找表在内存或寄存器存储,所有更新的计算结果均使用寄存器存储,所有计算均使用异或和循环左移指令实现;
每一轮的迭代运算的代码分别编写,而不是使用包括for/while/do在内的循环语句,不使用包括if在内的判断语句,避免产生跳转,确保整个指令序列顺序执行。
7.一种采用权利要求1~6中任一权利要求所述方法的在操作系统中进行密码运算的系统,其特征在于,包括:
保护密钥生成模块,负责在操作系统初始化可信环境下生成保护密钥,并将保护密钥存储在操作系统保留的特权寄存器中;所述特权寄存器不能被用户态程序访问,不能被操作系统用作其他用途;
用户密钥生成模块,负责通过用户态程序提供的源数据或密码运算内核模块内部随机数生成用户密钥,然后使用保护密钥加密后输出;
密码运算模块,负责在用户态程序提供密码运算所需的源数据以及经保护密钥加密的用户密钥后,完成密码运算;所述密码运算使用保护密钥解密获取用户密钥,然后使用用户密钥完成密码运算,在密码运算结束后清除用户密钥以及中间计算数据,并返回计算结果;
密码运算保护模块,负责对用户密钥的加密过程、用户密钥的解密过程以及密码运算过程进行保护,包括事务内存保护和关闭中断。
CN201811525467.2A 2018-12-13 2018-12-13 一种在操作系统中进行密码运算的方法和系统 Active CN109522736B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811525467.2A CN109522736B (zh) 2018-12-13 2018-12-13 一种在操作系统中进行密码运算的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811525467.2A CN109522736B (zh) 2018-12-13 2018-12-13 一种在操作系统中进行密码运算的方法和系统

Publications (2)

Publication Number Publication Date
CN109522736A CN109522736A (zh) 2019-03-26
CN109522736B true CN109522736B (zh) 2021-12-10

Family

ID=65796729

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811525467.2A Active CN109522736B (zh) 2018-12-13 2018-12-13 一种在操作系统中进行密码运算的方法和系统

Country Status (1)

Country Link
CN (1) CN109522736B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111638913B (zh) * 2019-09-19 2023-05-12 中国科学院信息工程研究所 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置
CN111294200A (zh) * 2020-01-15 2020-06-16 苏州浪潮智能科技有限公司 一种bmc片选寄存器保护方法及装置
CN111431718B (zh) * 2020-04-01 2022-12-27 中国人民解放军国防科技大学 基于tee扩展的计算机通用安全加密转换层方法及系统
CN111708762B (zh) * 2020-06-18 2023-09-01 北京金山云网络技术有限公司 一种权限认证方法、装置及服务端设备
WO2022000223A1 (zh) * 2020-06-30 2022-01-06 浙江大学 一种基于定制硬件安全属性的内核敏感数据保护方法
CN111814162B (zh) * 2020-06-30 2022-02-11 浙江大学 一种基于定制硬件安全属性的内核敏感数据保护方法
CN111934860B (zh) * 2020-08-06 2024-01-05 山东省计算中心(国家超级计算济南中心) 一种用于移动端密钥存储的实现方法和系统
CN112019327B (zh) * 2020-08-26 2023-05-23 成都卫士通信息产业股份有限公司 一种白盒实现方法、装置、电子设备及计算机存储介质
CN112906015B (zh) * 2021-01-26 2023-11-28 浙江大学 一种基于硬件标签的内存敏感数据加密保护系统
CN112528269B (zh) * 2021-02-08 2021-06-01 北京全息智信科技有限公司 一种实现内核密码机的方法、装置和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102694649A (zh) * 2012-05-29 2012-09-26 北京大学 一种抵御冷启动攻击的公钥密码实现方法
CN104883256A (zh) * 2014-02-27 2015-09-02 中国科学院数据与通信保护研究教育中心 一种抵抗物理攻击和系统攻击的密钥保护方法
CN106130719A (zh) * 2016-07-21 2016-11-16 中国科学院信息工程研究所 一种抵抗内存泄漏攻击的密码算法多核实现方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870545B2 (en) * 2005-12-16 2011-01-11 Intel Corporation Protecting shared variables in a software transactional memory system
CN102193867B (zh) * 2011-05-19 2013-07-24 武汉科技大学 一种面向MPSoC的事务内存的实现方法
US9575890B2 (en) * 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
CN105678173B (zh) * 2015-12-31 2018-06-29 武汉大学 基于硬件事务内存的vTPM安全保护方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102694649A (zh) * 2012-05-29 2012-09-26 北京大学 一种抵御冷启动攻击的公钥密码实现方法
CN104883256A (zh) * 2014-02-27 2015-09-02 中国科学院数据与通信保护研究教育中心 一种抵抗物理攻击和系统攻击的密钥保护方法
CN106130719A (zh) * 2016-07-21 2016-11-16 中国科学院信息工程研究所 一种抵抗内存泄漏攻击的密码算法多核实现方法及装置

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Jingqiang Lin,Bo Luo,Le Guan,Jiwu Jing.Secure Computing Using Registers and Caches: The Problem, Challenges, and Solutions.《IEEE Security & Privacy》.2016,第14卷(第6期), *
Le Guan et al..Protecting Private Keys against Memory Disclosure Attacks Using Hardware Transactional Memory.《2015 IEEE Symposium on Security and Privacy》.2015, *
Le Guan,Jingqiang Lin,Ziqiang Ma,Bo Luo,Luning Xia,Jiwu Jin.Copker: A Cryptographic Engine Against Cold-Boot Attacks.《IEEE Transactions on Dependable and Secure Computing》.2016,第15卷(第5期), *
林璟锵,荆继武.密码实现与应用的安全挑战.《中国信息安全》.2018,(第8期), *
祝凯捷,蔡权伟,林璟锵,荆继武.密钥安全及其在虚拟化技术下的新发展.《密码学报》.2016,第3卷(第1期), *

Also Published As

Publication number Publication date
CN109522736A (zh) 2019-03-26

Similar Documents

Publication Publication Date Title
CN109522736B (zh) 一种在操作系统中进行密码运算的方法和系统
Fei et al. Security vulnerabilities of SGX and countermeasures: A survey
US11550962B2 (en) Secure processor and a program for a secure processor
US9514300B2 (en) Systems and methods for enhanced security in wireless communication
US10237059B2 (en) Diversified instruction set processing to enhance security
Strackx et al. Efficient isolation of trusted subsystems in embedded systems
US8397082B2 (en) System and method for thwarting buffer overflow attacks using encrypted process pointers
US8782435B1 (en) System and method for validating program execution at run-time using control flow signatures
US8751818B2 (en) Method and apparatus for a trust processor
CN110659458A (zh) 支持软件代码数据保密可信执行的中央处理器设计方法
Götzfried et al. Analysing Android's Full Disk Encryption Feature.
CN110750791B (zh) 基于内存加密保障可信执行环境抗物理攻击的方法及系统
Zhou et al. Smile: Secure memory introspection for live enclave
Vasisht et al. Shark: Architectural support for autonomic protection against stealth by rootkit exploits
Wang et al. Trustict: an efficient trusted interaction interface between isolated execution domains on ARM multi-core processors
EP3009952A1 (en) System and method for protecting a device against attacks on procedure calls by encrypting arguments
Alam et al. CAUSEC: Cache-Based Secure Key Computation with (Mostly) Deprivileged Execution
You et al. KVSEV: A Secure In-Memory Key-Value Store with Secure Encrypted Virtualization
Duc et al. Improving virus protection with an efficient secure architecture with memory encryption, integrity and information leakage protection
Kemerlis et al. Enhancing Security by Diversifying Instruction Sets
Parker Protecting Cryptographic Secrets and Processes

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