Intel_sgx_rsa 跨平台加密的使用以及相关问题

本文介绍了SGX_rsa在跨平台加密中的挑战,包括公钥传输问题和如何在enclave外部使用openssl库。作者提供了在untrust区域生成并保存公钥的解决方案,以及加密格式注意事项。欢迎读者提出改进意见。
摘要由CSDN通过智能技术生成

1.sgx_rsa 加密函数介绍

sgx_rsa的底层库使用的是openssl的库,但由于sgx的安全性又与openssl官方rsa的加密流程有些许不同,从而产生了跨平台的相关问题 。这里是sgx_rsa的加密源码:源码

2.sgx_rsa 跨平台加密流程介绍

我们想使用sgx在encalve内部产生的rsa密钥对,将公钥传输到untrust区域,然后让前端通过该公钥进行加密敏感数据,然后将密文返回到enclave内部,通过其私钥进行解密。此时只有在前端与后端的encalve内部才是明文,对外全部都是密文。

3.sgx_rsa 跨平台加解密的问题

3.1 在enclave内部生成的公钥仅仅是一个void类型的指针,所以很难将其从enclave内部复制出来,通过查阅相关资料,发现一般做法会将产生密钥对函数 sgx_create_rsa_key_pair函数 产生的ne复制出来,进行传输。到另一个enclave内部后然后让其调用sgx_create_rsa_pub1_key函数生成对应的公钥进行加密。

3.2 但是复制出来的n和e通过前端的相关库产生的公私钥对无法使用。我们进一步实验,通过发现原始openssl的rsa密钥产生函数产生的公钥pem文件依旧无法使用。我们推断由于跨平台的特性可能仅仅只能通过sgx提供的库才可以通过n,e产生正常使用的公私钥对。

4.sgx_rsa 跨平台加密解决方案

我们分析enclave内部的密钥产生算法,将其修改并且复制到untrust区域,通过输入由enclave内部生成的n,e让其在产生公钥时,调用openssl库函数将其保存到pem文件夹中,将此时产生的公私钥对进行在前端加解密,发现可以进行跨平台使用。

此时只需要注意一下rsa的加密格式(下图为sgx-rsa的加密格式,对应平台的加密格式应该与此相同)·
在这里插入图片描述也可以通过该网站验证你的公私钥是否生成正确:网址

为什么不在enclave内部时就调用库函数将其保存到pem文件中呢,因为在enclave内部我们调用的是库函数,无法修改其在内部函数进行上述操作。

5.其它

如果有其它更好的办法或者本文有什么错误的地方,欢迎大家进行指正。需要源码请私聊。

  • 26
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值