CN109800584B - 一种基于Intel SGX机制的身份或属性加密计算方法和系统 - Google Patents
一种基于Intel SGX机制的身份或属性加密计算方法和系统 Download PDFInfo
- Publication number
- CN109800584B CN109800584B CN201811431816.4A CN201811431816A CN109800584B CN 109800584 B CN109800584 B CN 109800584B CN 201811431816 A CN201811431816 A CN 201811431816A CN 109800584 B CN109800584 B CN 109800584B
- Authority
- CN
- China
- Prior art keywords
- key
- public
- private
- enclave
- message
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于Intel SGX机制的身份或属性加密计算方法和系统。本方法为:1)将Public enclave部署在消息发送者终端、Private enclave部署在消息接收者终端,分别基于Intel SGX机制提供隔离执行的应用程序运行环境;2)Private enclave首次启动时向PKG请求私钥;Public enclave首次启动时向PKG请求系统参数和主密钥,生成用户的公钥;3)Public enclave根据输入的ID或属性推导出对应公钥后用公钥对消息加密;消息接收者终端的Private enclave的解密接口用私钥对消息解密。本发明安全、高效地实现了公钥密码计算。
Description
技术领域
本发明属于计算机技术、信息安全技术领域,具体涉及一种基于Intel SGX机制的身份或属性加密计算方法和系统。
背景技术
基于身份加密的公钥密码系统允许用户使用任意的身份标识,例如用户名或者邮箱地址,来扩展得到用户的公钥。基于属性加密被认为是模糊的基于身份加密。基于属性加密的公钥密码系统中,用户被赋予一系列属性集合,仅当属性集合符合访问控制的要求时,密文数据能够被解密,其公钥与其属性相关。这样,基于身份或属性加密的公钥密码系统极大地减轻了传统公钥密码系统分发公钥的工作。但是,它们仅改进了公钥的生成方式和分发流程,密码计算仍然采用基于数学难解问题的公钥密码算法,例如大整数因式分解,离散对数问题和椭圆曲线上离散对数问题等。因此,由于难解数学问题的计算复杂性,现有的基于身份或属性加密的公钥密码系统仍是计算密集的,存在计算耗时,性能开销大的不足。
英特尔软件防护扩展(SGX)是一项基于处理器的可信计算技术,提供隔离执行应用程序运行环境,称为enclave。Enclave完成初始化之后,处理器计算enclave代码的哈希值,称为enclave的度量,来标识和区分enclave。SGX对enclave提供如下安全机制:
(1)隔离,SGX提供的隔离可防止其他enclave,其他进程和特权代码(如OS和虚拟机管理程序)在运行时读取或修改enclave的内存。
(2)密封,SGX提供了一种称为密封的安全机制,允许每个enclave使用与处理器固件信息和enclave度量相关联的密钥对持久存储的数据进行加密和认证。
(3)认证,支持SGX的处理器配备了经过认证的加密密钥,可以发出可远程验证的断言声明。断言声明通常包括enclave度量,enclave签发者的指纹,以及用户自定义数据。经过验证的断言声明表明enclave按预期安全地在支持SGX的平台上运行。
发明内容
针对现有基于身份或属性加密的公钥密码系统性能上的不足,本发明提出一种基于Intel SGX机制的身份或属性加密计算方法和系统,安全、高效地实现了基于身份或属性加密的公钥密码计算。
本发明基于Intel SGX机制的身份或属性加密的公钥密码系统,包含可信组件私钥生成器(Private Key Generator,PKG)和两类enclave:Public enclave和Privateenclave,分别部署在消息发送者和接收者终端。其中,Public enclave提供加密计算接口;Private enclave提供解密计算接口,如图1所示。
本发明的技术方案为:
一种基于Intel SGX机制的身份或属性加密计算方法,其步骤包括:
1)生成相互独立的Public enclave和Private enclave;将Public enclave部署在消息发送者终端、Private enclave部署在消息接收者终端;其中,Public enclave和Private enclave分别为基于Intel SGX机制提供隔离执行的应用程序运行环境;可信组件PKG生成并维护系统参数、主密钥和用户私钥;
2)Private enclave首次启动时,执行SGX远程认证向可信组件PKG请求私钥;Public enclave首次启动时,执行SGX远程认证向可信组件PKG请求系统参数和主密钥;
3)Public enclave根据主密钥和系统参数生成用户的公钥;
4)消息发送者向Public enclave的加密接口输入消息接收者ID或属性,Publicenclave根据接收者ID或属性推导出对应公钥,然后使用该公钥对消息使用选定的对称密码算法加密,输出密文;所述消息接收者终端在Private enclave的解密接口用私钥对消息使用选定的对称密码算法解密,恢复消息明文。
进一步的,所述系统参数包括安全参数、系统所选择的对称密码算法及其加密模式,以及私钥推导函数(Key Derivation Function,KDF);其中,系统参数向用户公开。
进一步的,所述私钥推导函数,其输出密钥是由用户ID或其拥有的属性和主密钥推导的单向函数。
进一步的,所述单向函数是输出密钥的长度固定为安全参数的散列函数。
进一步的,PKG为用户生成私钥的方法为:PKG接受用户的私钥请求,在成功认证用户后(采用已有的认证方案),根据用户ID或属性和自身持有的主密钥,通过KDF,计算生成长度为安全参数的用户私钥。当用户需进行解密计算时,该用户作为消息接收者,则消息接收者终端的Private enclave向PKG请求对应的用户私钥。
进一步的,Private enclave向可信组件PKG请求私钥的方法为:Private enclave首先生成一个临时密钥对(sktmp,pktmp),将临时公钥pktmp作为断言声明的用户自定义数据,签发一个SGX远程断言证明Q,然后向PKG发送私钥请求,该私钥请求包括该SGX断言证明Q;当PKG收到该私钥请求后,调用enclave认证API进行验证,若验证通过,则使用pktmp将私钥加密发送给Private enclave,Private enclave使用临时私钥sktmp解密得到私钥。
进一步的,消息发送者采用类似PKG生成私钥的方法生成消息接收者的公钥,方法为:消息发送者向Public enclave输入用户ID或属性,Public enclave根据用户ID或属性和主密钥,通过KDF,计算生成长度为安全参数的用户公钥。消息发送者终端的Publicenclave需向PKG请求计算公钥需要的主密钥和系统参数。
进一步的,Public enclave向可信组件PKG请求主密钥和系统参数的方法为:Public enclave首先生成一个临时密钥对(sktmp,pktmp),将临时公钥pktmp作为断言声明的用户自定义数据,签发一个SGX远程断言证明Q,然后向PKG发送公钥参数请求,该公钥参数请求包括该SGX断言证明Q;当PKG收到该公钥参数请求后,调用enclave认证API进行验证,若验证通过,则使用pktmp将主密钥和系统参数加密发送给Public enclave,Publicenclave使用临时私钥sktmp解密得到主密钥和系统参数。
进一步的,该SGX远程断言证明Q还包含Public enclave的度量、签发者指纹。
进一步的,Private enclave接收到私钥之后,调用SGX密封API加密保存私钥到本地外部存储介质;Public enclave接收到主密钥之后,调用SGX密封API加密保存主密钥到本地外部存储介质。Private enclave下次启动时,查询本地存储是否有自身enclave标志的密封的数据,如果有,调用SGX解封API解密恢复私钥,否则,重新向PKG执行远程认证获取私钥;Public enclave下次启动时,查询本地存储是否有自身enclave标志密封的数据,如果有,调用SGX解封API解密恢复主密钥,否则,重新向PKG执行远程认证获取主密钥。进一步的,若消息需发送给拥有多个指定属性的消息接收者,消息发送者向Public enclave的加密接口输入所有指定属性,Public enclave根据每个属性推导出对应的公钥,并且用每个公钥对消息加密,一个属性对应公钥加密的结果作为下一个属性对应公钥加密的消息,直到所有属性对应的公钥都加密过一次,输出最终密文;拥有所有指定属性的消息接收者终端在Private enclave的解密接口找到这些属性对应的私钥解密,直到所有属性对应的私钥都解密了其能解密的密文,恢复原始消息。
进一步的,若消息发送给拥有多个指定属性中的任意一个属性的消息接收者,消息发送者向Public enclave的加密接口输入所有指定属性,Public enclave根据每个属性推导出对应的公钥,并且用每个公钥对消息加密,得到每个公钥加密的密文,直到所有属性对应的公钥都加密过一次,将所有密文合并成一个,输出最终密文;拥有任意一个指定属性的消息接收者终端在Private enclave的解密接口,找到其拥有的指定属性中一个属性对应的私钥,提取该私钥能解密的密文,解密恢复消息。
进一步的,所述Public enclave不包含输出密钥或将密钥暴露到不可信外设的接口。
一种基于Intel SGX机制的身份或属性加密计算系统,其特征在于,包括可信组件PKG、消息发送者终端和消息接收者终端;其中,消息发送者终端部署Public enclave、消息接收者终端部署Private enclave;Public enclave和Private enclave分别为基于IntelSGX机制提供隔离执行的应用程序运行环境;
可信组件PKG,用于生成并维护系统参数、主密钥和用户私钥;
Private enclave首次启动时,执行SGX远程认证向可信组件PKG请求私钥;Publicenclave首次启动时,执行SGX远程认证向可信组件PKG请求系统参数和主密钥;
Public enclave根据系统参数和主密钥生成用户的公钥;
消息发送者向Public enclave的加密接口输入消息接收者ID或属性,Publicenclave根据接收者ID或属性推导出对应公钥,然后使用该公钥对消息使用选定的对称密码算法加密,输出密文;所述消息接收者终端在Private enclave的解密接口用私钥对消息使用选定的对称密码算法解密,恢复消息明文。
本发明基于Intel SGX机制的身份或属性加密计算方法包括:
构建相互独立的Public enclave和Private enclave,对于加密计算接口和解密;
计算接口,分别在Public enclave和Private enclave使用对称密码算法实现;即Public enclave进行加密的公钥与Private enclave进行解密的私钥相同;
构建可信组件PKG,PKG负责生成和维护系统参数,主密钥和用户私钥。
PKG初始化过程生成系统参数和主密钥,系统参数包括安全参数,系统所选择的对称密码算法及其加密模式,以及私钥推导函数,安全参数是用户的私钥长度,其中,系统参数向用户公开,而主密钥为PKG持有。初始化的具体过程为:向PKG输入一个安全参数,PKG生成主密钥,输出系统参数。
在基于身份或属性加密的公钥密码系统中,公钥可由用户ID或其拥有的属性扩展的得到,而私钥由PKG生成。本发明中,为了达到公钥与私钥一致的目的,KDF构造为输出密钥是由用户ID或其属性和主密钥推导的单向函数。
进一步的,为了达到KDF的输出的密钥的长度是固定的,而且具有输入敏感(即使原始输入数据只有细微不同,输出数据也有很大差别)的特性,该单向函数是散列函数。
PKG为用户生成私钥。PKG接受用户的私钥请求,在成功认证用户后(采用已有的认证方案),根据用户ID或属性和自身持有的主密钥,通过KDF,计算生成长度为安全参数的用户私钥。
消息发送者采用类似PKG生成私钥的方法生成消息接收者的公钥。消息发送者向Public enclave输入用户ID或属性,Public enclave根据用户ID或属性和主密钥,通过KDF,计算生成长度为安全参数的用户公钥。而为了使Public enclave具备计算公钥的能力,Public enclave向PKG请求计算公钥所需的参数,即主密钥和系统参数。要求Publicenclave不包含输出密钥(包括计算得到的公钥和主密钥)或将密钥暴露到不可信外设的接口,以确保公钥和主密钥限定在Public enclave中不被导出。
若消息需发送给拥有多个指定属性的消息接收者,消息发送者需向Publicenclave输入所有指定属性,Public enclave的加密方式是:根据每个属性计算出对应的公钥,然后用每个公钥对消息加密,一个属性对应公钥加密的结果作为下一个属性对应公钥加密的消息,直到所有属性对应的公钥都加密过一次,输出最终密文;拥有所有指定属性的消息接收者终端Private enclave的解密方式是:找到这些属性对应的私钥进行解密,直到所有属性对应的私钥都解密了其能解密的密文,恢复原始消息。
若消息发送给拥有多个指定属性中的任意一个属性的消息接收者,消息发送者需向Public enclave输入所有指定属性,Public enclave的加密方式是:根据每个属性推导出对应的公钥,然后用每个公钥对消息加密,得到每个公钥加密的密文,直到所有属性对应的公钥都加密过一次,将所有密文合并成一个,输出最终密文;拥有任意一个指定属性的消息接收者终端的Private enclave的解密方式是:找到其拥有的指定属性中一个属性对应的私钥,提取该私钥能解密的密文,解密恢复消息。
系统的秘密数据需通过SGX认证机制建立的可信连接在线传输。具体包括:私钥由PKG通过SGX认证机制建立的可信连接在线发送给Private enclave,主密钥由PKG通过SGX认证机制建立的可信连接在线发送给Public enclave。
优选地,本发明中,系统参数虽然不是秘密数据但也随主密钥由PKG通过SGX认证机制建立的可信连接发送给Public enclave。这样,不仅免去实现另一种传输协议的工作,而且提高传输的安全性。
优选地,用于SGX远程认证的断言声明包含用户数据为秘密数据请求方生成的临时公钥,来实现秘密数据加密传输。即enclave(包括Public enclave和Private enclave)发送的远程声明包含用户数据为临时公钥。这样,一旦远程认证通过,PKG使用这个临时公钥对秘密数据(Public enclave对应为主密钥,Private enclave对应为私钥)加密传输,enclave使用自身持有的对应临时私钥可以解密恢复秘密数据。
优选地,本发明采用SGX的密封机制实现秘密数据的安全存储。enclave程序退出之前,秘密数据被加密保存在本地非易失性存储器,SGX确保仅有具有相同标识的enclave能解密恢复。Private enclave接收到私钥之后,将私钥密封到本地外部存储介质,下次Private enclave启动时,直接从本地解密恢复私钥。这样,Private enclave通过SGX密封机制,实现私钥的安全存储,进而避免Private enclave每次启动需要重复向PKG进行远程认证来获取。Public enclave接收到主密钥之后,将主密钥密封到本地外地外部存储设备,下次Public enclave启动时,直接从本地解密恢复主密钥。这样,Public enclave通过SGX密封机制,实现了主密钥的安全存储,进而避免Public enclave每次启动需要重复向PKG进行远程认证来获取。特别地,Public enclave中的系统参数虽然不是秘密数据,但也随主密钥密封到外部存储介质。这样,不仅免去实现其他存储方式的工作,而且提高存储的安全性。
按照上述方法描述,下面介绍系统的具体实现方案:
本发明的系统结构示意图如图1所示,包括消息发送者终端、消息接收者终端、加密接口和解密接口。
首先,初始化PKG,以生成主密钥和系统公开参数。PKG初始化过程:向PKG输入安全参数,PKG生成主密钥,输出系统参数。
之后,PKG为系统用户生成私钥sk。私钥生成过程:向PKG输入用户ID或用户属性A,PKG根据主密钥,KDF计算生成长度为安全参数l的私钥sk。
Private enclave首次启动时,执行SGX远程认证向PKG请求私钥。
Private enclave与PKG的私钥传输过程如图2所示,Private enclave向PKG发送私钥请求,生成一个临时密钥对(sktmp,pktmp),将临时公钥pktmp作为断言声明的用户自定义数据,签发一个SGX远程断言证明Q=Quote(pktmp)。该断言证明Q还包含Private enclave的度量、签发者指纹。当PKG收到Q后,调用Intel提供的enclave认证API进行验证,若验证通过,消息接收方可以确信Private enclave正确实例化在SGX平台上并且pktmp来自Privateenclave,于是,使用pktmp将私钥加密发送给Private enclave,Private enclave使用自身生成的sktmp解密得到私钥。
Private enclave接收到私钥之后,调用SGX密封API加密保存私钥到本地外部存储介质。
Public enclave首次启动时,执行SGX远程认证向PKG请求系统参数和主密钥。
Public enclave与PKG的系统参数和主密钥传输过程如图3所示,Public enclave向PKG发送公钥生成参数请求,生成一个临时密钥对(sktmp,pktmp),将临时公钥pktmp作为断言声明的用户自定义数据,签发一个SGX远程断言证明Q=Quote(pktmp)。该断言证明Q还包含Public enclave的度量、签发者指纹。当PKG收到Q后,调用Intel提供的enclave认证API进行验证,若验证通过,消息接收方可以确信Public enclave正确实例化在SGX平台上并且pktmp来自Public enclave,于是,使用pktmp将系统参数和主密钥加密发送给Publicenclave,Public enclave使用自身生成的sktmp解密得到系统参数和主密钥。
收到系统参数和主密钥后,Public enclave使用与PKG生成私钥相同的方法生成用户的公钥。
Public enclave接收到主密钥和系统参数之后,调用SGX密封API加密保存主密钥和系统参数到本地外部存储介质。
Public enclave和Private enclave持有密钥之后可进行相应的密码计算。
加密、解密过程为:消息发送者向Public enclave的加密接口输入消息接收者ID或属性,Public enclave根据接收者ID或属性推导出对应公钥,然后使用该公钥对消息使用选定的对称密码算法加密,输出密文;消息接收者终端的Private enclave的解密接口用私钥对消息使用选定的对称密码算法解密,恢复消息明文。
若消息需发送给拥有多个指定属性的消息接收者,Public enclave根据所有指定属性计算出对应的公钥,然后用每个公钥对消息加密,一个属性对应公钥加密的结果作为下一个属性对应公钥加密的消息,直到所有属性对应的公钥都加密过一次,输出最终密文;拥有所有指定属性的消息接收者终端的Private enclave的解密接口找到这些属性对应的私钥进行解密,直到所有属性对应的私钥都解密了其能解密的密文,恢复原始消息。
若消息发送给拥有多个指定属性中的任意一个属性的消息接收者,Publicenclave根据所有指定属性推导出对应的公钥,然后用每个公钥对消息加密,得到每个公钥加密的密文,直到所有属性对应的公钥都加密过一次,将所有密文合并成一个,输出最终密文;拥有任意一个指定属性的消息接收者终端的Private enclave的解密接口找到其拥有的指定属性中一个属性对应的私钥,提取该私钥能解密的密文,解密恢复消息。
Private enclave下次启动时,查询本地存储是否有自身enclave标识密封的数据,如果有,调用SGX解封API解密恢复私钥,然后继续进行私钥类密码计算功能,否则,重新向PKG执行远程认证获取。
Public enclave下次启动时,查询本地存储是否有自身enclave标识密封的数据,如果有,调用SGX解封API解密恢复主密钥和系统参数,然后继续进行公钥类密码计算功能,否则,重新向PKG执行远程认证获取主密钥和系统参数。
与现有基于身份或属性加密的公钥密码系统相比,本发明的积极效果为:
本发明使用对称密码算法实现基于身份或属性加密的公钥密码系统计算,能有效地提高密码计算速率,明显地减小系统性能开销。本发明人选用对称密码算法为AES-256-GCM,KDF为HKDF来实现本发明的一个实验系统,同时在相同的实验机上,以相同的安全参数,实现常用的传统的基于身份加密的公钥密码系统,包括Boneh-Franklin IBE(BF)和NTRI IBE(GPV)。对比它们的计算的性能,结果如表1所示,可以看到本发明系统的性能远远优于BF和GPV。
表1本发明实验系统、BF和GPV性能比较结果
方案 | GPV | BF | 本法明实验系统 |
加密计算 | 3.67ms | 204.85ms | 4.929us |
解密计算 | 1.82ms | 42.41ms | 4.663us |
本发明中,密码计算在enclave中完成,因此,任何对enclave代码和数据的修改都能被发现,从而防止攻击者篡改公、私钥计算接口导致计算功能滥用。本发明提供了基于身份或属性加密的密码系统计算功能可信执行的安全保证。
本发明中,PKG通过SGX远程认证验证Private enclave,进而建立可信连接传输私钥。类似地,PKG通过SGX远程认证验证Public enclave,进而建立可信连接传输公钥生成参数。并且通过限定Public enclave接口来限制公钥的生成参数的使用和导出,从而实现密钥的安全分发,密钥免受其他进程,特权代码(如OS和虚拟机管理程序)和消息发送者的窃取。本发明提供了可信的密钥分发机制和密钥隔离使用的安全保证。
本发明中,enclave优选采用SGX的密封机制实现秘密数据的安全存储。Privateenclave通过SGX密封机制,实现私钥的安全存储,进而避免Private enclave每次启动需要重复向PKG进行远程认证来获取。Public enclave通过SGX密封机制,实现了主密钥的安全存储,进而避免Public enclave每次启动需要重复向PKG进行远程认证来获取。特别地,Public enclave中的系统参数虽然不是秘密数据,但也随主密钥密封到外部存储介质。这样,不仅免去实现其他存储方式的工作,而且提高存储的安全性。因此,本发明提供安全的密钥存储,简洁的密钥获取流程和简化的密钥计算方法。
本发明基于SGX的可信执行环境enclave,使用对称密码算法实现的基于身份或属性加密的公钥密码系统,其密码计算的安全性不再依赖于不可证明的数学难解问题,而是依赖可信计算技术SGX的安全性以及可证安全的对称密码算法。本发明提供可证明安全的基于身份或属性加密的密码计算方法和系统。
附图说明
图1为系统结构示意图。
图2为系统私钥分发过程示意图。
图3为系统公钥生成参数分发过程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下通过实例对本发明作进一步详细说明。
本实例选用AES-256-GCM算法来加密、解密。
初始化PKG,向PKG输入安全参数l,PKG生成主密钥mk,输出系统公开参数params。
之后,PKG可以为系统用户生成私钥sk。私钥生成过程:向PKG输入用户ID,PKG根据params,mk和KDF计算私钥,例如sk=KDF(mk||ID,l)。
Private enclave首次启动,执行SGX远程认证向PKG请求用户私钥sk。Privateenclave生成一个临时密钥对(sktmp,pktmp),签发SGX断言证明Q=Quote(pktmp)。
PKG收到Q后,调用Intel提供的enclave认证API进行验证,若验证通过,使用sk加密发送给Private enclave。Private enclave使用自身持有的sktmp解密得到用户私钥sk。
Private enclave调用SGX密封API加密存储sk。
Public enclave首次启动时,执行SGX远程认证向PKG请求主密钥mk和系统公开参数params。Public enclave生成一个临时密钥对(sktmp,pktmp),将临时公钥pktmp作为断言声明的用户自定义数据,签发SGX断言证明Q=Quote(pktmp)。
PKG收到Q后,调用Intel提供的enclave认证API进行验证,若验证通过,使用pktmp将mk和params加密发送给Public enclave。Public enclave使用自身的sktmp解密得到mk和params。
Public enclave调用SGX密封API加密存储mk和params。
加密过程:消息发送者向Public enclave的加密接口输入消息接收者ID和明文P,输出密文C。
解密过程:消息接收者接收到C输入Private enclave的解密接口,解密输出明文C。
系统使用结束,消息发送者和接收者分别关闭Public enclave和Privateenclave程序。
Public enclave再次启动,查询到本地自身enclave标识密封的数据,调用SGX解封API解密恢复mk和params,继续进行和上述相同的解密过程。
Private enclave再次启动,查询到本地自身enclave标识密封的数据,调用SGX解封API解封sk,继续进行和上述相同的解密过程。
以上实例仅用以说明本发明的技术方法而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者同等替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。
Claims (16)
1.一种基于Intel SGX机制的身份或属性加密计算方法,其步骤包括:
1)生成相互独立的Public enclave和Private enclave;将Public enclave部署在消息发送者终端、Private enclave部署在消息接收者终端;其中,Public enclave和Privateenclave分别为基于Intel SGX机制提供隔离执行的应用程序运行环境;可信组件PKG生成并维护系统参数、主密钥和用户私钥;
2)Private enclave首次启动时,执行SGX远程认证向可信组件PKG请求私钥;Publicenclave首次启动时,执行SGX远程认证向可信组件PKG请求系统参数和主密钥;
3)Public enclave根据系统参数和主密钥生成用户的公钥;
4)消息发送者向Public enclave的加密接口输入消息接收者ID或属性,Publicenclave根据接收者ID或属性推导出对应公钥,然后使用该公钥对消息使用选定的对称密码算法加密,输出密文;所述消息接收者终端在Private enclave的解密接口用私钥对消息使用选定的对称密码算法解密,恢复消息明文。
2.如权利要求1所述的方法,其特征在于,所述系统参数包括安全参数、系统所选择的对称密码算法及其加密模式,以及私钥推导函数;其中,系统参数向用户公开。
3.如权利要求2所述的方法,其特征在于,所述私钥推导函数,其输出密钥是由用户ID或其拥有的属性和主密钥推导的单向函数。
4.如权利要求3所述的方法,其特征在于,所述单向函数是输出密钥的长度固定为安全参数的散列函数。
5.如权利要求1所述的方法,其特征在于,PKG为用户生成私钥的方法为:PKG接受用户的私钥请求,在成功认证用户后,根据用户ID或属性和自身持有的主密钥,通过KDF,计算生成长度为安全参数的用户私钥;当用户需进行解密计算时,该用户作为消息接收者,则消息接收者终端的Private enclave向PKG请求对应的用户私钥。
6.如权利要求5所述的方法,其特征在于,Private enclave向可信组件PKG请求私钥的方法为:Private enclave首先生成一个临时密钥对(sktmp,pktmp),将临时公钥pktmp作为断言声明的用户自定义数据,签发一个SGX远程断言证明Q,然后向PKG发送私钥请求,该私钥请求包括该SGX远程断言证明Q;当PKG收到该私钥请求后,调用enclave认证API进行验证,若验证通过,则使用pktmp将私钥加密发送给Private enclave,Private enclave使用临时私钥sktmp解密得到私钥。
7.如权利要求1所述的方法,其特征在于,消息发送者终端生成消息接收者的公钥的方法为:消息发送者终端的Public enclave向PKG请求计算公钥需要的主密钥和系统参数;消息发送者向Public enclave输入用户ID或属性,Public enclave根据用户ID或属性和主密钥,通过KDF,计算生成长度为安全参数的用户公钥。
8.如权利要求7所述的方法,其特征在于,Public enclave向可信组件PKG请求系统参数和主密钥的方法为:Public enclave首先生成一个临时密钥对(sktmp,pktmp),将临时公钥pktmp作为断言声明的用户自定义数据,签发一个SGX远程断言证明Q,然后向PKG发送公钥参数请求,该公钥参数请求包括该SGX远程断言证明Q;当PKG收到该公钥参数请求后,调用enclave认证API进行验证,若验证通过,则使用pktmp将系统参数和主密钥加密发送给Public enclave,Public enclave使用临时私钥sktmp解密得到系统参数和主密钥。
9.如权利要求4或8所述的方法,其特征在于,该SGX远程断言证明Q还包含Publicenclave的度量、签发者指纹。
10.如权利要求1所述的方法,其特征在于,Private enclave接收到私钥之后,调用SGX密封API加密保存私钥到本地外部存储介质;Public enclave接收到主密钥之后,调用SGX密封API加密保存主密钥到本地外部存储介质;Private enclave下次启动时,查询本地存储是否有自身enclave标志的密封的数据,如果有,调用SGX解封API解密恢复私钥,否则,重新向PKG执行远程认证获取私钥;Public enclave下次启动时,查询本地存储是否有自身enclave标志密封的数据,如果有,调用SGX解封API解密恢复主密钥,否则,重新向PKG执行远程认证获取主密钥。
11.如权利要求1所述的方法,其特征在于,若消息需发送给拥有多个指定属性的消息接收者,则消息发送者向Public enclave的加密接口输入所有指定属性,Public enclave根据每个属性推导出对应的公钥,并且用每个公钥对消息加密,一个属性对应公钥加密的结果作为下一个属性对应公钥加密的消息,直到所有属性对应的公钥都加密过一次,输出最终密文;拥有所有指定属性的消息接收者终端在Private enclave的解密接口找到这些属性对应的私钥解密,直到所有属性对应的私钥都解密了其能解密的密文,恢复原始消息。
12.如权利要求1所述的方法,其特征在于,若消息发送给拥有多个指定属性中的任意一个属性的消息接收者,则消息发送者向Public enclave的加密接口输入所有指定属性,Public enclave根据每个属性推导出对应的公钥,并且用每个公钥对消息加密,得到每个公钥加密的密文,直到所有属性对应的公钥都加密过一次,将所有密文合并成一个,输出最终密文;拥有任意一个指定属性的消息接收者终端在Private enclave的解密接口,找到其拥有的指定属性中一个属性对应的私钥,提取该私钥能解密的密文,解密恢复消息。
13.如权利要求1所述的方法,其特征在于,所述Public enclave为不包含输出密钥或将密钥暴露到不可信外设的接口。
14.一种基于Intel SGX机制的身份或属性加密计算系统,其特征在于,包括可信组件PKG、消息发送者终端和消息接收者终端;其中,消息发送者终端部署Public enclave、消息接收者终端部署Private enclave;Public enclave和Private enclave分别为基于IntelSGX机制提供隔离执行的应用程序运行环境;
可信组件PKG,用于生成并维护系统参数、主密钥和用户私钥;
Private enclave首次启动时,执行SGX远程认证向可信组件PKG请求私钥;Publicenclave首次启动时,执行SGX远程认证向可信组件PKG请求系统参数和主密钥;
Public enclave根据系统参数和主密钥生成用户的公钥;
消息发送者向Public enclave的加密接口输入消息接收者ID或属性,Public enclave根据接收者ID或属性推导出对应公钥,然后使用该公钥对消息使用选定的对称密码算法加密,输出密文;所述消息接收者终端在Private enclave的解密接口用私钥对消息使用选定的对称密码算法解密,恢复消息明文。
15.如权利要求14所述的系统,其特征在于,Private enclave首先生成一个临时密钥对(sktmp,pktmp),将临时公钥pktmp作为断言声明的用户自定义数据,签发一个SGX远程断言证明Q,然后向PKG发送私钥请求,该私钥请求包括该SGX远程断言证明Q;当PKG收到该私钥请求后,调用enclave认证API进行验证,若验证通过,则使用pktmp将私钥加密发送给Private enclave,Private enclave使用临时私钥sktmp解密得到私钥。
16.如权利要求14所述的系统,其特征在于,Public enclave首先生成一个临时密钥对(sktmp,pktmp),将临时公钥pktmp作为断言声明的用户自定义数据,签发一个SGX远程断言证明Q,然后向PKG发送公钥参数请求,该公钥参数请求包括该SGX远程断言证明Q;当PKG收到该公钥参数请求后,调用enclave认证API进行验证,若验证通过,则使用pktmp将主密钥和系统参数加密发送给Public enclave,Public enclave使用临时私钥sktmp解密得到主密钥和系统参数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811244605X | 2018-10-24 | ||
CN201811244605 | 2018-10-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109800584A CN109800584A (zh) | 2019-05-24 |
CN109800584B true CN109800584B (zh) | 2020-10-16 |
Family
ID=65750959
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811432010.7A Active CN109510708B (zh) | 2018-10-24 | 2018-11-28 | 一种基于Intel SGX机制的公钥密码计算方法和系统 |
CN201811431816.4A Active CN109800584B (zh) | 2018-10-24 | 2018-11-28 | 一种基于Intel SGX机制的身份或属性加密计算方法和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811432010.7A Active CN109510708B (zh) | 2018-10-24 | 2018-11-28 | 一种基于Intel SGX机制的公钥密码计算方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109510708B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110213231B (zh) * | 2019-04-26 | 2021-11-30 | 西安电子科技大学 | 一种面向sgx的轻量级的外包数据访问控制方法及控制系统 |
CN110278078B (zh) * | 2019-06-17 | 2022-03-22 | 矩阵元技术(深圳)有限公司 | 一种数据处理方法、装置及系统 |
CN110557368B (zh) * | 2019-07-22 | 2021-09-21 | 南京财经大学 | 一种属性基信息流控制方法及系统 |
CN111291389B (zh) * | 2020-01-20 | 2022-06-24 | 苏州浪潮智能科技有限公司 | 一种计算机核心程序全生命周期的保护方法及系统 |
CN111695145B (zh) * | 2020-04-18 | 2023-04-07 | 西安电子科技大学 | 基于sgx的面向mldp的多方访问控制方法及系统 |
CN112231652B (zh) * | 2020-10-28 | 2022-02-22 | 百度在线网络技术(北京)有限公司 | 可信环境远程验证方法、装置、设备、系统及介质 |
CN112711774B (zh) * | 2021-03-25 | 2023-01-10 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
WO2023044664A1 (en) * | 2021-09-23 | 2023-03-30 | Intel Corporation | Protecting secret processing, secret input data, and secret output data using enclaves |
CN113946801B (zh) * | 2021-11-01 | 2024-06-04 | 苏州浪潮智能科技有限公司 | 基于SGX的Python源码的保护方法和装置 |
CN114268507B (zh) * | 2021-12-30 | 2023-12-05 | 天翼物联科技有限公司 | 一种基于sgx的网络云安全优化方法、系统及相关介质 |
US20230291549A1 (en) * | 2022-03-14 | 2023-09-14 | Vmware, Inc. | Securely sharing secret information through an unsecure channel |
CN114553603B (zh) * | 2022-04-25 | 2022-07-29 | 南湖实验室 | 一种基于隐私计算的新型数据可信解密的方法 |
CN115021927B (zh) * | 2022-05-12 | 2024-04-16 | 中国科学院信息工程研究所 | 一种面向密码机集群的管理员身份管控方法及系统 |
CN116614275B (zh) * | 2023-05-23 | 2024-02-20 | 京信数据科技有限公司 | 一种隐私计算一体机委托加速的方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10079684B2 (en) * | 2015-10-09 | 2018-09-18 | Intel Corporation | Technologies for end-to-end biometric-based authentication and platform locality assertion |
CN105389513B (zh) * | 2015-11-26 | 2018-10-12 | 华为技术有限公司 | 一种虚拟可信平台模块vTPM的可信执行方法和装置 |
US10511598B2 (en) * | 2016-03-29 | 2019-12-17 | Intel Corporation | Technologies for dynamic loading of integrity protected modules into secure enclaves |
US11405177B2 (en) * | 2017-01-24 | 2022-08-02 | Microsoft Technology Licensing, Llc | Nested enclave identity |
US10911451B2 (en) * | 2017-01-24 | 2021-02-02 | Microsoft Technology Licensing, Llc | Cross-platform enclave data sealing |
CN108462689B (zh) * | 2017-02-22 | 2022-04-01 | 英特尔公司 | 用于远程sgx飞地认证的技术 |
CN107506659B (zh) * | 2017-07-27 | 2020-04-07 | 西安电子科技大学 | 一种基于sgx的通用数据库的数据保护系统及方法 |
CN107463838B (zh) * | 2017-08-14 | 2019-10-18 | 广州大学 | 基于sgx的安全监控方法、装置、系统及存储介质 |
CN108418691B (zh) * | 2018-03-08 | 2020-10-27 | 湖南大学 | 基于sgx的动态网络身份认证方法 |
-
2018
- 2018-11-28 CN CN201811432010.7A patent/CN109510708B/zh active Active
- 2018-11-28 CN CN201811431816.4A patent/CN109800584B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109510708B (zh) | 2021-07-13 |
CN109800584A (zh) | 2019-05-24 |
CN109510708A (zh) | 2019-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800584B (zh) | 一种基于Intel SGX机制的身份或属性加密计算方法和系统 | |
US10785019B2 (en) | Data transmission method and apparatus | |
KR20200127264A (ko) | 데이터 송신 방법, 장치 및 시스템 | |
US11870891B2 (en) | Certificateless public key encryption using pairings | |
US20190132122A1 (en) | Method and assembly for establishing a secure communication between a first network device (initiator) and a second network device (responder) | |
CN110535626B (zh) | 基于身份的量子通信服务站保密通信方法和系统 | |
CN110519226B (zh) | 基于非对称密钥池和隐式证书的量子通信服务端保密通信方法和系统 | |
CN104270242A (zh) | 一种用于网络数据加密传输的加解密装置 | |
CN204180095U (zh) | 一种用于网络数据加密传输的加解密装置 | |
JP2020532177A (ja) | データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法 | |
US9641333B2 (en) | Authentication methods, systems, devices, servers and computer program products, using a pairing-based cryptographic approach | |
US20170222800A1 (en) | Key splitting | |
WO2020042023A1 (zh) | 一种即时通信的数据加密方法及装置 | |
CN113645235A (zh) | 分布式数据加解密系统及加解密方法 | |
EP3010173B1 (en) | Key storage device, key storage method, and program therefor | |
EP2395698B1 (en) | Implicit certificate generation in the case of weak pseudo-random number generators | |
CN115694922A (zh) | 在国产cpu和os下的文件传输加密方法及设备 | |
Pharkkavi et al. | TIME COMPLEXITY ANALYSIS OF RSA AND ECC BASED SECURITY ALGORITHMS IN CLOUD DATA. | |
Yin et al. | PKI-based cryptography for secure cloud data storage using ECC | |
CN110365482B (zh) | 一种数据通信方法和装置 | |
CN110572788B (zh) | 基于非对称密钥池和隐式证书的无线传感器通信方法和系统 | |
Islam et al. | Improved remote login scheme based on ECC | |
Abdalla et al. | Anonymous Pairing-Free and Certificateless Key Exchange Protocol for DRM System. | |
KR20190135145A (ko) | 웹 표준 환경에서 화이트박스 암호화 방법을 이용한 정보 보호 방법 | |
Mulkey et al. | Towards an efficient protocol for privacy and authentication in wireless networks |
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 |