CN112528269B - 一种实现内核密码机的方法、装置和电子设备 - Google Patents
一种实现内核密码机的方法、装置和电子设备 Download PDFInfo
- Publication number
- CN112528269B CN112528269B CN202110171902.1A CN202110171902A CN112528269B CN 112528269 B CN112528269 B CN 112528269B CN 202110171902 A CN202110171902 A CN 202110171902A CN 112528269 B CN112528269 B CN 112528269B
- Authority
- CN
- China
- Prior art keywords
- program
- kek
- ssk
- hash value
- kernel
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 239000012634 fragment Substances 0.000 claims description 22
- 238000004422 calculation algorithm Methods 0.000 claims description 18
- 238000013475 authorization Methods 0.000 claims description 11
- 150000003839 salts Chemical class 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 13
- 238000005538 encapsulation Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000008676 import Effects 0.000 description 5
- KJLPSBMDOIVXSN-UHFFFAOYSA-N 4-[4-[2-[4-(3,4-dicarboxyphenoxy)phenyl]propan-2-yl]phenoxy]phthalic acid Chemical compound C=1C=C(OC=2C=C(C(C(O)=O)=CC=2)C(O)=O)C=CC=1C(C)(C)C(C=C1)=CC=C1OC1=CC=C(C(O)=O)C(C(O)=O)=C1 KJLPSBMDOIVXSN-UHFFFAOYSA-N 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种实现内核密码机的方法、装置和电子设备,基于Linux内核的内核锁定安全模块对内核内存的私密性和完整性保护,以及内核对应用程序执行代码的可靠标识,在操作系统内核内实现将密钥与授权应用安全绑定的、无需应用程序配置、在密码学运算全流程防范超级账户窃取密钥的内核密码机。
Description
技术领域
本发明涉及内核密码机技术,尤其是基于内核加固的、防范系统管理员、一般用户和非授权应用非法使用和获取密码、密钥、私钥的技术领域。
背景技术
现有的密码机方案,主要有服务器密码机、单机硬件密码机(插卡/USB等)、单机软件密码机等。无论是哪种方式,应用程序都需要在本机配置认证信息,比如用户名/密码或者私钥/证书等,方可使用该密码机。无论是哪种认证信息配置(本机存储、U盾等),只要不是在运行时在主机前人工输入(即便如此也可能被通过非法运行的keylogger获取),应用程序本机的系统管理员等特权账户及特权应用都能够非法获取这些认证信息,从而非法使用或破坏本该特定应用程序(或应用程序组)独占的的密码密钥,进而威胁整体的系统和数据安全。
构建一种防范超级账户作恶、无需应用敏感配置的密码机方案,是实现信息系统和数据安全的重大挑战。
发明内容
为了解决上述技术问题中的至少一个,本发明提供了一种实现内核密码机的方法、装置、电子设备和可读存储介质。
本发明的第一方面,提供了一种实现内核密码机的方法,包括:
第一程序导入KEK;所述第一程序为运行于操作系统内核的程序,所述操作系统被设置为第一用户无法访问内核内存;
所述第一程序根据所述KEK为第二程序生成第一SSK;
所述第一程序根据所述第一SSK为所述第二程序提供密码运算服务。
本发明实施例中,第一用户可以是超级管理员,也可以是普通用户,可选地,第一用户定义为除有KEK管理权限以外的任意用户。
可选地,所述第一程序导入KEK,包括:
所述第一程序接收第二用户输入的KEK或KEK片段,以及,接收所述第二用户对所述KEK或KEK片段的签名信息;
所述第一程序验签所述第二用户对所述KEK或KEK片段的签名信息;其中,所述第一程序中预先嵌入所述第二用户的公钥。
本发明实施例中,第二用户是指具有KEK管理权限的用户。
本发明实施例,提供了两种KEK导入形式,分别为完整导入KEK和分次导入KEK;此外,KEK也可以预先嵌入第一程序,由第一程序直接提取并导入。
可选地,所述第一程序验签所述第二用户对所述KEK或KEK片段的签名信息之后,方法还包括:
将所述KEK或KEK片段存入CPU寄存器;和/或,清除内核内存中的所述KEK或KEK片段。
可选地,所述第一程序中还预先嵌入所述第一程序的子程序的哈希值;其中,所述第一程序的子程序用于接收第二用户输入的KEK或KEK片段,以及,接收所述第二用户对所述KEK或KEK片段的签名信息;
方法还包括:
所述第一程序获取所述第一程序的子程序的哈希值;
所述第一程序验证预先嵌入的所述第一程序的子程序的哈希值与获取的所述第一程序的子程序的哈希值一致。
本发明实施例中,为避免第一程序的子程序遭到篡改,在第一程序的代码中预先嵌入了第一程序的子程序的哈希值,基于哈希值对实际运行的第一程序的子程序进行验证,从而增强了KEK导入过程的安全性。
可选地,所述第一程序根据所述KEK为第二程序生成第一SSK,包括:
所述第一程序接收所述第二程序的第一请求;
所述第一程序根据所述第一请求,为所述第二程序生成CSK;
所述第一程序获取所述第二程序的执行代码的哈希值;
所述第一程序根据所述KEK对所述CSK加密和签名后的数据,以及所述第二程序的执行代码的哈希值,生成第一SSK。
本发明实施例中,生成的SSK包含应用程序的执行代码的哈希值,可以避免SSK被非法应用使用。
可选地,方法还包括:
所述第一程序接收所述第二程序的第二请求;
所述第一程序根据所述第二请求,获取所述第一SSK和第三程序的执行代码的哈希值;
所述第一程序根据所述KEK,解密和验签所述第一SSK,得到所述CSK;
所述第一程序根据所述KEK对所述CSK加密和签名后的数据,以及所述第三程序的执行代码的哈希值,生成第二SSK。
本发明实施例提供了一种密钥传递方法,根据应用程序的请求,将同一CSK生成的SSK传递给其它应用,能够满足特定业务场景下的需求。
可选地,所述第一程序根据所述第一SSK为所述第二程序提供密码运算服务,包括:
所述第一程序获取所述第一SSK和待加密的明文;
所述第一程序获取所述第二程序的执行代码的哈希值;
所述第一程序解密和验签所述第一SSK,得到算法标识和所述CSK;其中,包括验证所述第二程序的执行代码的哈希值与所述第一SSK记录的所述第二程序的执行代码的哈希值一致;
所述第一程序根据所述算法标识和所述CSK加密所述明文,得到密文;
所述第一程序返回所述密文至所述第二程序。
可选地,所述第一程序返回所述密文至所述第二程序之后,还包括:
在内核内存中清除所述密文。
可选地,所述SSK至少包括如下信息:
算法标识、固定长度的随机盐、由KEK加密的所述盐和所述CSK、应用程序的执行代码的哈希值。
优选地,所述SSK还包括:授权检查策略、第二签名信息。其中,授权检查策略表示内核密码机对SSK的检查周期,第二签名信息表示SSK包含的其它内容的签名信息。
本发明的第二方面,提供了一种内核密码机装置,其特征在于,包括:
KEK设定模块,用于导入KEK;
密钥生成模块,用于根据所述KEK为第二程序生成第一SSK;所述第一SSK包括所述第二程序的执行代码的哈希值;
密码学运算模块,用于在验证第二程序当前的执行代码的哈希值与所述第一SSK包括的第二程序的执行代码的哈希值一致后,根据所述第一SSK为所述第二程序提供密码运算服务;
其中,所述KEK设定模块、所述密钥生成模块、所述密码学运算模块在操作系统内核运行,所述操作系统被设置为第一用户无法访问内核内存。
可选地,所述KEK设定模块,具体用于:
接收第二用户输入的KEK或KEK片段,以及,接收所述第二用户对所述KEK或KEK片段的签名信息;
验签所述第二用户对所述KEK或KEK片段的签名信息;其中,所述第二用户的公钥预先嵌入所述KEK设定模块。
可选地,所述KEK设定模块还用于:
将所述KEK或KEK片段存入CPU寄存器;和/或,清除内核内存中的所述KEK或KEK片段。
可选地,所述KEK设定模块中还预先嵌入子程序的哈希值;其中,所述子程序用于接收第二用户输入的KEK或KEK片段,以及,接收所述第二用户对所述KEK或KEK片段的签名信息;
所述KEK设定模块还用于:
获取所述子程序的哈希值;
验证预存的所述子程序的哈希值与获取的所述子程序的哈希值一致。
可选地,所述密钥生成模块具体用于:
接收所述第二程序的第一请求;
根据所述第一请求,为所述第二程序生成CSK;
获取所述第二程序的执行代码的哈希值;
根据所述KEK对所述CSK加密和签名后的数据,以及所述第二程序的执行代码的哈希值,生成第一SSK。
可选地,装置还包括:
密钥传递模块,用于接收所述第二程序的第二请求;
根据所述第二请求,获取所述第一SSK和第三程序的执行代码的哈希值;
根据所述KEK,解密和验签所述第一SSK,得到所述CSK;
根据所述KEK对所述CSK加密和签名后的数据,以及所述第三程序的执行代码的哈希值,生成第二SSK。
可选地,所述密码学运算模块具体用于:
获取所述第一SSK和待加密的明文;
获取所述第二程序的执行代码的哈希值;
解密和验签所述第一SSK,得到算法标识和所述CSK;其中,包括验证所述第二程序的执行代码的哈希值与所述第一SSK记录的所述第二程序的执行代码的哈希值一致;
根据所述算法标识和所述CSK加密所述明文,得到密文;
返回所述密文至所述第二程序。
可选地,所述密码学运算模块还用于:
在内核内存中清除所述密文。
本发明的第三方面,提供了一种电子设备,包括存储器和处理器,所述存储器用于存储计算机指令,所述计算机指令被所述处理器执行以实现如本发明第一方面所述的方法。
本发明的第四方面,提供了一种可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现本发明第一方面所述的方法。
本发明实施例基于Linux内核的内核锁定安全模块对内核内存的私密性和完整性保护,以及内核对应用程序执行代码的可靠标识,在操作系统内核内实现将密钥与授权应用安全绑定的、无需应用程序配置、在密码学运算全流程防范超级账户窃取密钥的内核密码机。本发明实施例综合使用内核私密锁定和应用程序认证措施,能够防范包括系统管理员在内的任何用户读写内核内存,确保密钥/私钥在使用中的安全。同时,应用程序无需配置认证信息,即可安全的进行该应用独享的或与授权应用共享的、安全的密钥/私钥生成、加解密、签名和验签。
附图说明
附图示出了本发明的示例性实施方式,并与其说明一起用于解释本发明的原理,其中包括了这些附图以提供对本发明的进一步理解,并且附图包括在本说明书中并构成本说明书的一部分。
图 1示例整个内核密码机的总体架构。
具体实施方式
下面结合附图和实施方式对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施方式仅用于解释相关内容,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分。
需要说明的是,在不冲突的情况下,本发明中的实施方式及实施方式中的特征可以相互组合。下面将参考附图并结合实施方式来详细说明。
Linux内核5.4及以上版本的内核锁定模块(kernel lockdown)在配置为私密性锁定(LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY)时,能够防止操作系统超级账户(比如root)在操作系统运行时读写内核内存,这个保护屏障使得在内核中实现防范超级账户窃取密码、密钥、私钥(以下简称密钥)的密码机成为可能。
同时,因为操作系统内核能够准确标识用户空间的每一个应用程序及其执行代码,在操作系统内核中实现的密码机,能够实现密钥和应用程序(执行代码)的安全绑定,应用程序无需私密配置(如访问传统密码机需要的用户名/PIN、密钥或私钥等)即可访问内核密码机。而且,未被授权的应用程序、被篡改的被授权应用程序均不得使用授权给特定应用程序执行代码的密钥。
本发明实施例提供的内核密码机,在系统初始化时自动生成或由安全管理员(一个或多个)安全的输入密钥加密密钥(Key Encrypting Key, KEK)。当用户空间(user-space)的应用程序向其提交密钥生成请求用于该应用程序本身时,可靠的读取应用程序的执行代码,并将生成的密钥(CSK)用KEK加密,然后将其与应用程序执行代码的哈希值(EHSH)一起使用哈希运算消息认证码(Hash-based Message Authentication Code,HMAC)签名,生成安全密钥(SSK),然后将SSK返回给应用程序。
一个应用程序也可以通过密钥封装请求,导入明文密钥(CSK)到内核密码机并获得相应的SSK。这样应用程序就不用直接存储CSK了。
一个应用程序,亦可以提交密钥传递请求,传递其被授权的CSK给另外一个应用。密钥传递请求包含SSK和目标应用程序的哈希值,内核密码机认证之后,为目标应用程序返回新的SSK。
授权应用程序需要基于该SSK实现加密、解密、签名、验签等密码服务时,连同SSK一起将密码计算请求提交给内核密码机。内核密码机在防范超级账户的内核内存空间内,用KEK解密密钥CSK,用CSK完成相关密码学计算,然后返回结果给授权应用程序。
整个密码学计算过程中,应用程序无需敏感的配置信息,而且KEK、CSK对超级账户不可见、不可改,有效的保护了密钥的安全。
一、技术原理。
Linux内核在版本5.4引入了一个可选的安全模块,称为内核锁定(kernellockdown)。当选择内核锁定模块而且其配置取值为私密性锁定(LOCK_DOWN_KERNEL_FORCE_ CONFIDENTIALITY)时,操作系统超级账户不能在系统运行时替换(无授权签名的)系统内核、读写系统物理内存和内核内存(当然,操作系统一般用户更不能)。本发明利用这个防范超级账户的内核内存机制,实现内核密码机能够做到在内核密码机在内核进行密码学计算时,操作系统超级账户和一般用户不能窃取或篡改密钥。
应用程序在与内核密码机通过Netlink或系统调用交互时,内核密码机能够准确的标识该应用程序及其执行代码。如果是虚拟机执行的程序(如Java)或解释型程序(如Python),内核模块则通过在执行虚拟机或解释器时传递的命令行获取真正的执行代码。
应用程序在提交密钥生成请求时,基于密钥的敏感性和保护强度,可以要求内核密码机在应用程序进程第一次使用、每次使用或每隔特定次数使用(或者基于其他频次、时间或频次时间组合方式)SSK进行密码学计算之前进行授权审核(即核对当前应用程序的执行代码的哈希值和SSK中授权的执行代码的哈希值),以防操作系统超级账户或一般用户在应用程序使用时篡改执行代码。
二、SSK规范。
本发明中内核密码机返回给应用程序的安全密钥(SSK)至少包含以下内容:
(1)ALGO:算法标识,比如SM2、SM3、SM4等;
(2)SALT:固定长度的随机盐;
(3)KTXT:盐和CSK,由KEK加密;
(4)EHSH:被授权的执行代码的哈希值,即被授权使用该SSK的应用程序;
(5)AUTH:0:使用该SSK时,内核密码机不做授权检查;1:使用该SSK时,内核密码机每次都做授权检查;x:使用该SSK时,内核密码机每隔x次进行一次授权检查;
(6)HMAC:HMAC(KEK,ALGO、SALT,EHSH)签名,亦可以是其他签名方式,比如非对称的私钥签名。
二、总体架构。
整个内核密码机的架构如图1所示。应用程序基于密码机的内核密码机的API(动态或静态的连接库,基于netlink或其他内核通讯接口),访问内核密码机,以实现无需应用程序配置、防范超级账户作恶的密钥生成、导出、传递和密码学运算,确保密钥安全和授权安全。
在操作系统内核(图块108)中实现的内核密码机,包含5个主要模块。密码机接口模块(图块101),用于接收应用程序的密钥生成、导出、传递和密码学运算等请求,调用其他模块完成并回复。
程序哈希模块(图块106)负责基于密码学散列算法(比如SHA256)生成应用程序执行代码的哈希值。
密钥封装模块(图块102),用于密钥封装和解封:将CSK封装出SSK,或者从SSK解封出CSK。
密钥传递模块(图块107),调用密钥封装模块,应授权应用程序A的要求,将绑定到应用程序A(用其执行代码的哈希值)的密钥SSK,解封出CSK,再封装成绑定应用程序B(用其执行代码的哈希值标识)的SSK。
密码学运算模块(图块103)应应用程序的要求,实现给定密码学算法(比如SM2椭圆曲线算法)的密钥生成和加解密、签名、验签等。
三、关键流程。
(一)KEK设定
安全管理员,在内核密码机启动后,通过KEK导入程序(图1图块105)调用密码机接口(图块101)的KEK设定模块,设定密钥加密密钥(KEK)。流程如下:
(1)内核密码机编译生成时嵌入安全管理员的公钥和KEK导入程序(图块105)的哈希值。因为Linux的内核锁定安全模块的私密性保护,超级账户亦不能篡改它们;
(2)安全管理员通过KEK导入程序输入KEK(或其中一段,如果时多人安全管理员的话),KEK导入程序用安全管理员本人的私钥(不在本机留存)对输入的KEK(或片段)签名;
(3)KEK导入程序,调用密码机接口(图块101)的KEK导入接口,接口输入包括SO-ID(安全管理员标识)、KEK,KEKS(用安全管理员私钥签名的KEK的哈希值);
(4)密码机接口模块,调用程序哈希模块(图块106)获得KEK导入程序的哈希,并与内核密码机内置的正确哈希值比对。如果不相同,则报警;
(5)密码机接口模块,用内核密码机内置的安全管理员的公钥,验签KEKS;如果验签不通过,报警;
(6)密码机接口,将KEK(或片段)存入CPU寄存器,并清除其在内核内存的残留。
(二)密钥生成。
应用程序调用密码机接口(图1图块101)的密钥生成接口。该接口的输入为算法标识ALGO,输出为SSK。流程如下:
(1)应用程序(图块100)调用密码机接口(图块101)的密钥生成接口;
(2)密码机接口模块调用内核方法可靠的获得应用程序的执行代码路径,并调用程序哈希模块(图块106)得到该程序执行代码的哈希值;
(3)密码机接口模块调用密码学算法ALGO对应的密码学运算模块(图块103)生成明文密钥CSK。该CSK因为只在内核内存存在,而内核内存受Linux内核锁定(kernellockdown)私密性保护,能够防范包括超级账户和一般账户窃取;
(4)密码机接口调用密钥封装模块(图块102),后者基于上述的SSK规范,绑定应用程序的执行代码EHSH,将生成的明文CSK用KEK加密和签名,生成可以安全导出的安全密钥SSK;
(5)密码机接口模块返回SSK给应用程序(图块100);
(6)应用程序将内核密码机返回的安全密钥SSK存储到密钥库(图块104,可以实现为文件系统或数据库,本地节点或远程节点)。因为SSK由KEK加密和签名,能够防范窃取和篡改。
(三)密钥传递。
应用程序A可以将其被授权的安全密钥SSK-A,以SSK-B的形式安全传递授权给应用程序B。这里,SSK-A绑定明文密钥CSK给应用程序A,SSK-B绑定同一个明文密钥CSK给应用程序B。流程如下:
(1)应用程序A(图块100)调用密码机接口(图块101)的密钥传递接口。该接口输入为SSK-A和EHSH-B,即应用程序B的哈希值,输出为SSK-B;
(2)密码机接口模块调用内核方法可靠的获得应用程序A的执行代码路径,并调用程序哈希模块(图块106)得到该程序执行代码的哈希值;
(3)密码机接口调用密钥封装模块(图块102),后者解密验签SSK-A(确保SSK-A完整无误而且绑定应用程序A的哈希值),得到CSK,并封装成SSK-B(将CSK绑定到应用程序B);
(4)密码机接口模块返回SSK-B给应用程序A(图块100);
(5)应用程序A将SSK-B传递给应用程序B,后者即可开始用SSK-B调用内核密码机进行密码学运算。
(四)密码学运算。
应用程序用内核密码机生成的SSK,通过内核密码机在操作系统内核进行密码学运算。运算过程中,明文的CSK只在内核内存存在,而内核内存对操作系统超级账户和一般用户不可读写,因此能够有效的防范攻击。以加密为例,具体流程如下:
(1)应用程序(图块100)调用密码机接口(图块101)的密码运算接口;接口输入为SSK和明文PTXT;
(2)密码机接口模块调用内核方法可靠的获得应用程序的执行代码路径,并调用程序哈希模块(图块106)得到该程序执行代码的哈希值;
(3)密码机接口调用密钥封装模块(图块102),后者解密验签SSK(确保SSK完整无误而且绑定到该应用程序的哈希值),得到密码学算法ALGO和密钥CSK;
(4)密码机接口模块调用密码学算法ALGO的密码学运算模块,对PTXT进行加密,生成密文CTXT,在内核内存中清除CSK,然后返回CTXT给应用程序。
本发明实施例综合使用内核私密锁定和应用程序认证措施,能够防范包括系统管理员在内的任何用户读写内核内存,确保密钥/私钥在使用中的安全。同时,应用程序无需配置认证信息,即可安全的进行该应用独享的或与授权应用共享的、安全的密钥/私钥生成、加解密、签名和验签。
应当理解,这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被该机器执行时,该机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的该程序代码中的指令,执行本发明的各种方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
本领域那些技术人员应当理解在本文所发明的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中发明的所有特征以及如此发明的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中发明的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的发明是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (19)
1.一种实现内核密码机的方法,其特征在于,包括:
第一程序导入KEK;所述第一程序为运行于操作系统内核的程序,所述操作系统被设置为第一用户无法访问内核内存;
所述第一程序根据所述KEK为第二程序生成第一SSK;所述第一SSK包括所述第二程序的执行代码的哈希值;
所述第一程序在验证第二程序当前的执行代码的哈希值与所述第一SSK包括的第二程序的执行代码的哈希值一致后,根据所述第一SSK为所述第二程序提供密码运算服务。
2.如权利要求1所述的方法,其特征在于,所述第一程序导入KEK,包括:
所述第一程序接收第二用户输入的KEK或KEK片段,以及,接收所述第二用户对所述KEK或KEK片段的签名信息;
所述第一程序验签所述第二用户对所述KEK或KEK片段的签名信息;其中,所述第一程序中预先嵌入所述第二用户的公钥。
3.如权利要求2所述的方法,其特征在于,所述第一程序验签所述第二用户对所述KEK或KEK片段的签名信息之后,方法还包括:
将所述KEK或KEK片段存入CPU寄存器;和/或,清除内核内存中的所述KEK或KEK片段。
4.如权利要求2所述的方法,其特征在于,
所述第一程序中还预先嵌入所述第一程序的子程序的哈希值;其中,所述第一程序的子程序用于接收第二用户输入的KEK或KEK片段,以及,接收所述第二用户对所述KEK或KEK片段的签名信息;
方法还包括:
所述第一程序获取所述第一程序的子程序的哈希值;
所述第一程序验证预先嵌入的所述第一程序的子程序的哈希值与获取的所述第一程序的子程序的哈希值一致。
5.如权利要求1所述的方法,其特征在于,所述第一程序根据所述KEK为第二程序生成第一SSK,包括:
所述第一程序接收所述第二程序的第一请求;
所述第一程序根据所述第一请求,为所述第二程序生成CSK;
所述第一程序获取所述第二程序的执行代码的哈希值;
所述第一程序根据所述KEK对所述CSK加密和签名后的数据,以及所述第二程序的执行代码的哈希值,生成第一SSK。
6.如权利要求5所述的方法,其特征在于,还包括:
所述第一程序接收所述第二程序的第二请求;
所述第一程序根据所述第二请求,获取所述第一SSK和第三程序的执行代码的哈希值;
所述第一程序根据所述KEK,解密和验签所述第一SSK,得到所述CSK;
所述第一程序根据所述KEK对所述CSK加密和签名后的数据,以及所述第三程序的执行代码的哈希值,生成第二SSK。
7.如权利要求1所述的方法,其特征在于,所述第一程序在验证第二程序当前的执行代码的哈希值与所述第一SSK包括的第二程序的执行代码的哈希值一致后,根据所述第一SSK为所述第二程序提供密码运算服务,包括:
所述第一程序获取所述第一SSK和待加密的明文;
所述第一程序获取所述第二程序的执行代码的哈希值;
所述第一程序解密和验签所述第一SSK,得到算法标识和CSK;其中,包括验证所述第二程序的执行代码的哈希值与所述第一SSK记录的所述第二程序的执行代码的哈希值一致;
所述第一程序根据所述算法标识和所述CSK加密所述明文,得到密文;
所述第一程序返回所述密文至所述第二程序。
8.如权利要求7所述的方法,其特征在于,所述第一程序返回所述密文至所述第二程序之后,还包括:
在内核内存中清除所述密文。
9.如权利要求1-8的任一项所述的方法,其特征在于,所述SSK至少包括如下信息:
算法标识、固定长度的随机盐、由KEK加密的所述随机盐和CSK、应用程序的执行代码的哈希值、授权检查策略、第二签名信息。
10.一种内核密码机装置,其特征在于,包括:
KEK设定模块,用于导入KEK;
密钥生成模块,用于根据所述KEK为第二程序生成第一SSK;所述第一SSK包括所述第二程序的执行代码的哈希值;
密码学运算模块,用于在验证第二程序当前的执行代码的哈希值与所述第一SSK包括的第二程序的执行代码的哈希值一致后,根据所述第一SSK为所述第二程序提供密码运算服务;
其中,所述KEK设定模块、所述密钥生成模块、所述密码学运算模块在操作系统内核运行,所述操作系统被设置为第一用户无法访问内核内存。
11.如权利要求10所述的装置,其特征在于,所述KEK设定模块,具体用于:
接收第二用户输入的KEK或KEK片段,以及,接收所述第二用户对所述KEK或KEK片段的签名信息;
验签所述第二用户对所述KEK或KEK片段的签名信息;其中,所述第二用户的公钥预先嵌入所述KEK设定模块。
12.如权利要求11所述的装置,其特征在于,所述KEK设定模块还用于:
将所述KEK或KEK片段存入CPU寄存器;和/或,清除内核内存中的所述KEK或KEK片段。
13.如权利要求11所述的装置,其特征在于,
所述KEK设定模块中还预先嵌入子程序的哈希值;其中,所述子程序用于接收第二用户输入的KEK或KEK片段,以及,接收所述第二用户对所述KEK或KEK片段的签名信息;
所述KEK设定模块还用于:
获取所述子程序的哈希值;
验证预存的所述子程序的哈希值与获取的所述子程序的哈希值一致。
14.如权利要求11所述的装置,其特征在于,所述密钥生成模块具体用于:
接收所述第二程序的第一请求;
根据所述第一请求,为所述第二程序生成CSK;
获取所述第二程序的执行代码的哈希值;
根据所述KEK对所述CSK加密和签名后的数据,以及所述第二程序的执行代码的哈希值,生成第一SSK。
15.如权利要求14所述的装置,其特征在于,还包括:
密钥传递模块,用于接收所述第二程序的第二请求;
根据所述第二请求,获取所述第一SSK和第三程序的执行代码的哈希值;
根据所述KEK,解密和验签所述第一SSK,得到所述CSK;
根据所述KEK对所述CSK加密和签名后的数据,以及所述第三程序的执行代码的哈希值,生成第二SSK。
16.如权利要求10所述的装置,其特征在于,所述密码学运算模块具体用于:
获取所述第一SSK和待加密的明文;
获取所述第二程序的执行代码的哈希值;
解密和验签所述第一SSK,得到算法标识和CSK;其中,包括验证所述第二程序的执行代码的哈希值与所述第一SSK记录的所述第二程序的执行代码的哈希值一致;
根据所述算法标识和所述CSK加密所述明文,得到密文;
返回所述密文至所述第二程序。
17.如权利要求16所述的装置,其特征在于,所述密码学运算模块还用于:
在内核内存中清除所述密文。
18.一种电子设备,包括存储器和处理器,所述存储器用于存储计算机指令,其特征在于,所述计算机指令被所述处理器执行以实现如权利要求1-9的任一项所述的方法。
19.一种可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被处理器执行时实现如权利要求1-9的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110171902.1A CN112528269B (zh) | 2021-02-08 | 2021-02-08 | 一种实现内核密码机的方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110171902.1A CN112528269B (zh) | 2021-02-08 | 2021-02-08 | 一种实现内核密码机的方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112528269A CN112528269A (zh) | 2021-03-19 |
CN112528269B true CN112528269B (zh) | 2021-06-01 |
Family
ID=74975478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110171902.1A Active CN112528269B (zh) | 2021-02-08 | 2021-02-08 | 一种实现内核密码机的方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112528269B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373744A (zh) * | 2015-10-29 | 2016-03-02 | 成都卫士通信息产业股份有限公司 | 基于Linux的扩展文件系统加密方法 |
CN109522736A (zh) * | 2018-12-13 | 2019-03-26 | 中国科学院信息工程研究所 | 一种在操作系统中进行密码运算的方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100437420C (zh) * | 2005-09-30 | 2008-11-26 | 联想(北京)有限公司 | 计算机系统及其安全加固方法 |
-
2021
- 2021-02-08 CN CN202110171902.1A patent/CN112528269B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373744A (zh) * | 2015-10-29 | 2016-03-02 | 成都卫士通信息产业股份有限公司 | 基于Linux的扩展文件系统加密方法 |
CN109522736A (zh) * | 2018-12-13 | 2019-03-26 | 中国科学院信息工程研究所 | 一种在操作系统中进行密码运算的方法和系统 |
Non-Patent Citations (1)
Title |
---|
《Linux内核将引入安全锁定功能》;xplanet;《https://www.oschina.net/news/110281/linux-to-get-kernel-lockdown-feature》;20191001;正文部分第2-5段 * |
Also Published As
Publication number | Publication date |
---|---|
CN112528269A (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109361668B (zh) | 一种数据可信传输方法 | |
JP3614057B2 (ja) | アクセス資格認証方法および装置ならびに証明用補助情報作成方法および装置 | |
US9043610B2 (en) | Systems and methods for data security | |
US9635013B2 (en) | Secure data handling by a virtual machine | |
ES2692900T3 (es) | Certificación criptográfica de entornos de ejecución alojados seguros | |
KR100996784B1 (ko) | 공개 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체 | |
KR102445518B1 (ko) | 장치 키 보호 | |
US20100250921A1 (en) | Authorizing a Login Request of a Remote Device | |
JP2004530346A (ja) | セキュアな暗号鍵の生成、証明、および使用のための方法および装置 | |
US20130097427A1 (en) | Soft-Token Authentication System | |
US20130124860A1 (en) | Method for the Cryptographic Protection of an Application | |
CN109446831B (zh) | 基于硬件装置的密钥生成和验证方法及系统 | |
CN110837634B (zh) | 基于硬件加密机的电子签章方法 | |
EP4302221A1 (en) | Authorized encryption | |
CN105873043B (zh) | 一种用于移动终端的网络私匙的生成及应用方法及其系统 | |
CN112528269B (zh) | 一种实现内核密码机的方法、装置和电子设备 | |
US11783027B2 (en) | Systems and methods for managing state | |
Jang-Jaccard et al. | Portable key management service for cloud storage | |
US10979226B1 (en) | Soft-token authentication system with token blocking after entering the wrong PIN | |
CN108985079B (zh) | 数据验证方法和验证系统 | |
KR20220089289A (ko) | 암호 라이브러리 관리 시스템 및 방법 | |
Murti et al. | Security in embedded systems | |
Stumpf et al. | Towards secure e-commerce based on virtualization and attestation techniques | |
CN109981612B (zh) | 防止密码机设备非法复制的方法和系统及密码机设备 | |
Omote et al. | Protection and recovery of disk encryption key using smart cards |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 6th Floor, 6th Floor, No. 3 Shangdi Fourth Street, Haidian District, Beijing 100080 Patentee after: Beijing holographic Zhixin Technology Co.,Ltd. Country or region after: China Address before: 100081 Room 501, South, 5th floor, Yinhai building, No.10, Zhongguancun South Street, Haidian District, Beijing Patentee before: Beijing holographic Zhixin Technology Co.,Ltd. Country or region before: China |