Research on Multi-Client Functional Encryption Scheme Based on TEE
With the rise of cloud computing, joint computing of encrypted data is becoming increasingly important. In recent years, the development of multi-client function encryption has enabled users to perform joint computations on private inputs without any interaction. In cloud computing, ensuring security and reliability is an extremely important requirement. Aiming at the privacy and security problems of multi-client function encryption schemes, this paper proposes a decentralized multi-client function encryption scheme based on Intel SGX technology. Using Python language, development environment PyCharm 2020.3.0 version, and Python PyCryptodome V3.10.1 cryptography library, the key algorithms or protocols of this scheme are simulated. In summary, the experimental results and analysis show that the scheme has good computational performance while protecting privacy and security. This provides an efficient and secure solution for processing sensitive data in the cloud computing environment, so it has certain practical application significance.
Multi-Client Functional Encryption
加密是用户在不安全的网络或存储站点上安全地共享数据的一种方法。在公钥密码学
函数加密(Functional Encryption, FE)
多客户端函数加密(Multi-Client Functional Encryption, MCFE)
一个理想的DMCFE方案,不仅要保障数据的机密性和完整性,还要满足抗攻击性和可用性的特点。而可信执行环境(Trusted Execution Environment, TEE)
椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm, ECDSA),广泛用于保护数字信息的完整性和身份验证
系统建立:输入安全参数,输出算法的公开参数 ,其中,E为定义在有限域 上的椭圆曲线,p为一个素数,G为椭圆曲线上所有整数点构成的加法群,P和q分别为群G的生成元和素数阶,h为输入映射到 域上的杂凑函数,即 。 域由整数集合 构成。
密钥生成:输入算法的公开参数param,输出签名私钥d和验证公钥Q,其中 为随机秘密值,公钥 公开可见。
签名生成:输入算法的公开参数param、用户私钥d和待签名消息m,输出签名 。步骤如下。
1) 选择一个随机数 ,计算 ,其中 和 分别为椭圆曲线上点R的横坐标和纵坐标。
2) 计算 ,若 ,则返回步骤(1);否则,执行步骤(3)。
3) 计算 ,其中, 为消息摘要。
4) 输出签名信息 ,其中 , 函数表示取集合中较小的数值。
签名验证:输入待验证的消息m和签名 ,输出验证结果“1”或“0”。具体步骤如下:
1) 解析签名 获得 ,计算摘要 。
2) 计算 。
3) 若 ,输出1;否则输出0。
MCFE是一种密码学技术,旨在允许多个客户端合作执行加密计算,而不必暴露原始输入或中间结果
1) :输入安全参数 ,输出公共参数mpk、主密钥msk和n个客户端的加密密钥 ;
2) :输入用户的加密密钥 ,要加密的值 ,和一个标签 ,输出密文 ;
3) :输入主密钥msk,函数 ,输出函数解密密钥 ;
4) :输入函数解密密钥 ,标签 和一个n维的密文 ,如果 是关于标签 , 的有效加密,则输出 ;否则输出⊥。
正确性:假设mpk包含在msk中,同时也包含在所有的加密密钥 以及函数解密密钥 中。正确性属性表明,给出 ,对于任何标签 ,任何函数 ,和任一向量 ,如果 , ,函数解密密钥 ,那么 。
本方案定义的系统模型如
1) 客户端平台(Client Application):由于本方案是去中心化的,没有可信第三方用于生成函数解密密钥以及系统所需的参数,因此在本文方案中,客户端负责系统的初始化过程,生成DMCFE算法所需要的私钥、加密密钥、密文以及解密密钥的验证密钥和公开参数。此外,还负责生成加权阈值ECDSA签名算法的签名密钥和验证密钥,用于在函数授权阶段使用签名密钥对函数F执行授权。
2) 解密节点云平台(Decryption Node Platform):
解密飞地(DE):DE与客户端平台通过远程认证的方式建立起一个安全信道,将在客户端生成的函数解密密钥通过安全信道传输到DE中,由于客户端生成的验证密钥是公开可见的,因此在DE中使用验证密钥对客户端生成的函数解密密钥执行验证。此外,对函数F的签名也在DE中使用签名算法生成的严密密钥进行验证。
函数飞地(FE):由于FE与DE位于同一平台,因为FE与DE之间通过本地认证的方式建立起一个安全信道,DE将验证通过的函数解密密钥通过安全信道传输到FE中,除此之外,客户端通过与FE远程认证建立起安全信道,将在本地加密的数据通过安全信道传输到FE中,由密文的验证密钥在FE中对密文进行验证,若验证通过,将在FE中对密文执行解密算法,最后生成关于明文信息x的函数值 发送给客户端。
1) 系统初始化阶段
:在系统初始化阶段,解密节点平台DN对HW安全硬件执行 并记录输出的参数params。
:在系统初始化阶段,由客户端平台运行初始化算法,生成全局公开参数pp以及客户端本地的公私钥对。各实体通过公共参数执行密钥生成算法生成各自的公私钥对。
2) 密钥生成阶段
:本文的加权阈值ECDSA签名方案从将秘密签名密钥sk在所有参与方之间进行加权随机秘密共享(WRSS)开始。
:VDMCFE的密钥生成输入安全参数 ,输出私钥 、加密密钥 、密文的验证密钥 ,函数解密密钥的验证密钥 ,以及公钥pk。用于后续对数据的加密、函数解密密钥的生成,密文及密钥的验证等。
3) 函数授权阶段
加权阈值ECDSA签名算法将签名协议分为两个阶段:一个预签名协议,仅依赖于签名密钥的份额,另一个是依赖于实际消息的非交互式签名协议。客户端发出函数请求F,对F执行签名。
4) 加密阶段
:客户端在本地执行加密算法,利用加密密钥 对本地数据进行加密,客户端与FE通过远程认证的方式建立安全信道,生成的密文通过安全信道传输到FE中。
5) 解密密钥的生成及验证阶段
:客户端在本地执行函数解密密钥生成算法,利用私钥 生成函数解密密钥 ,与DE通过远程认证建立起安全信道,客户端将函数解密密钥 发送到DE,在DE内执行密钥的验证算法。
6) 密文的验证及解密阶段
:客户端对本地数据加密生成的密文,通过与FE远程认证建立的安全信道,将 传输到FE。由 在FE内对 执行验证,验证通过后,DE与FE通过本地认证的方式建立起安全信道,DE将解密密钥 传输到FE,在FE内对密文解密,最后解密结果值 发送给客户端。
本方案运行在Intel Skylake i7-6700处理器,主频为3.40 GHz,内存为8 GiB的RAM,安装有Windows Server 2012 R2标准操作系统的平台上测试了原型实现。编程语言和版本Python 3.8、开发环境PyCharm 2020.3.0版本、以及Python的PyCryptodome V3.10.1密码学库下对本文的方案进行了仿真实现,并使用了Intel (R) SGX SDK 1.6和Intel (R) SGX PSW 1.6附加组件,给出了核心算法或协议的代码及运行结果。客户端仿真示意图如
在仿真实验中首先定义了RSA公钥加密类
1) 系统初始化阶段:客户端执行系统初始化Setup算法,生成全局公共参数,以及各个实体根据公共参数输出各自的公私钥对。如下是客户端执行初始化算法的核心代码,其执行结果如
2) 签名密钥的生成阶段:客户端执行加权阈值ECDSA签名算法,生成各自的签名密钥和验证密钥。如下是客户端执行ECDSA签名算法的密钥生成阶段核心代码,其执行结果如
3) 函数授权阶段:用户发送函数请求F,客户端使用各自的签名密钥对函数F执行签名授权过程。如下是客户端执行ECDSA签名算法签名阶段的核心代码,其执行结果如
4) 客户端加密阶段:客户端使用加密密钥对本地数据进行加密,生成密文ct发送到函数飞地。如下是客户端执行加密算法的核心代码,其执行结果如
5) 函数解密密钥生成及验证阶段:客户端使用自己的私钥生成部分函数解密密钥,并将函数解密密钥通过安全信道传输到解密飞地,在解密飞地内执行验证。如下是客户端执行函数解密密钥生成算法的核心代码,其执行结果如
6) 密文解密阶段:函数解密密钥通过本地认证传输到函数飞地,在函数飞地内对密文执行解密,最后生成的函数值f(x)发送给客户端。如下是函数飞地执行密文解密算法的核心代码,其执行结果如
本文设计的方案计算了VDMCFE-HW.Setup,VDMCFE-HW.Keygen,VDMCFE-HW.Encryption,VDMCFE-HW.VerifyCT,VDMCFE-HW.DKeyGenShare,VDMCFE-HW.VerifyDK,VDMCFE-HW.DKeyComb和VDMCFE-HW.Decrypt算法的平均时间和标准差。
创建飞地 |
52 ms |
VDMCFE.Setup |
2.1675 ms |
VDMCFE.KeyGen |
2.1781 ms |
VDMCFE.Encrypt |
2.1889 ms |
Total |
58.5345 ms |
本方案评估了三种函数加解密算法的性能,分别是基于身份的加密(IBE)、order revealing encryption (ORE)和三输入DNF (3DNF)。为了展示原语的SGX辅助版本在性能上与纯加密版本(如配对的IBE、DNF和多线性映射3DNF)的比较,本文选择这些函数进行研究。
Functionality |
IBE
|
ORE
|
3DNF
|
create enclave |
13 ms |
18.9 ms |
17.6 ms |
local attest |
1.4 ms |
1.6 ms |
1.5 ms |
decrypt & eval |
0.89 ms |
0.71 ms |
0.84 ms |
Total |
15.29 ms |
21.21 ms |
19.94 ms |
如
实验数据表明,通过在计划平台上对IBE的解密时间进行测量,可获得关键结果。本研究还包含提出了基于ORE和3DNF相关的5Gen解密时间性能指标。本文认为无需在本方案平台上对ORE和3DNF的5Gen实施进行评估,因为它们相较于本方案基于SGX的实施而言性能慢了四个数量级。本系统成功地实现了多输入函数,使得原语的构建成为了可能。在没有安全硬件的情况下,这些原语此前无法被用于实际应用,本文方案填补了这一空白。
本文通过对目前函数加密方案中存在的安全及信任问题深入分析,并在可信执行环境的基础上提出了基于SGX的去中心化多客户端函数加密方案。本文通过引入DMCFE、加权阈值签名算法与上述SGX机制相结合来设计并实现安全方案。该方案旨在使用户代码及数据在分布式计算过程中始终保持加密状态,只有在可信执行环境中才解密执行,从而达到不向任何参与方透露信息的目的。最后基于Python语言、开发环境PyCharm 2020.3.0、以及Python的PyCryptodome V3.10.1密码学库对本文的方案进行了仿真实验。最后从计算代价、通信代价上对本方案关键算法的性能进行了对比分析。实验结果表明,本文提出的安全方案可以保证用户数据在分布式计算中的安全性,基本实现了预期目标。