一种基于FPGA可信执行环境的计算方法及系统技术方案

技术编号:35454500 阅读:29 留言:0更新日期:2022-11-03 12:10
本发明专利技术公开了一种基于FPGA可信执行环境的计算方法,包括:IntelSGX程序在不可信区域中划分预设大小的可信区域栈内存和堆内存,不可信区域向intel认证中心远程证明可信程序是否真实运行在sgx环境下,不可信区域向FPGA芯片内的认证中心远程证明数据加解密程序是否运行在该FPGA芯片内;不可信区域调用可信区域计算函数,传入要参与计算的参数和要执行计算的密文数据路径,可信区域计算函数获取参数并开始执行计算,可信区域计算函数调用不可信区域的数据解密函数,传入要解密的密文数据路径、密钥索引和密文数据哈希值,再由不可信区域传入FPGA芯片等步骤。本发明专利技术将可信执行环境与FPGA芯片技术高度融合,解决了在可信执行环境中无法进行大数据量快速加解密等诸多问题。境中无法进行大数据量快速加解密等诸多问题。境中无法进行大数据量快速加解密等诸多问题。

【技术实现步骤摘要】
一种基于FPGA可信执行环境的计算方法及系统


[0001]本专利技术涉及在可信执行环境(intel sgx、arm trustzone)下的数据快速加解密方法,具体涉及一种基于FPGA可信执行环境的计算方法及系统。

技术介绍

[0002]目前,在可信执行环境下无法实现基于FPGA高速运转芯片的快速数据加解密功能,具体地,在FPGA上划分多个区域块:加密解密数据块、不可篡改区域块、认证模块等等,通过FPGA内部丰富的布线资源将这些区域块进行互相结合,形成一种在FPGA上实现的可信执行环境。数据是在不可篡改区域上进行计算,通过与加解密数据块及进行结合实现对数据的加密解密,同时在认证模块上进行认证数据是否有违规、不合法和篡改等行为,整个流程均在FPGA上实现,由此带来明显缺陷,即整个隐私计算流程均在FPGA上实现,无法有利保证隐私计算安全、无法实现复杂逻辑运算。例如:
[0003]1、无法满足在对隐私数据高要求安全的场景下进行隐私计算,比如政务、公安、用户个人信息等对数据非常敏感的领域;
[0004]2、无法满足在对复杂逻辑运算场景下进行隐私计算,比如金融、运营商、交通等对数据有着很庞大复杂逻辑运算(机器学习、实时计算、离线计算、数据治理)等领域。

技术实现思路

[0005]本专利技术要解决的技术问题在于,针对现有技术的不足,提供一种能满足复杂逻辑运算场景下的隐私计算要求,能实现可信执行环境Intel SGX与FPGA芯片的高度融合,进而提升数据传输安全性和数据传输效率的基于FPGA可信执行环境的计算方法及系统。
[0006]为解决上述技术问题,本专利技术采用如下技术方案。
[0007]一种基于FPGA可信执行环境的计算方法,该方法基于CPU和FPGA芯片实现,所述CPU预设有Intel SGX程序,所述Intel SGX程序包含不可信区域和可信区域,所述方法包括如下步骤:步骤S1,所述Intel SGX程序在不可信区域中划分预设大小的可信区域栈内存和堆内存,并启动可信区域程序;步骤S2,所述不可信区域调用可信区域证明函数,向intel认证中心远程证明可信程序是否真实运行在sgx环境下;步骤S3,所述不可信区域调用可信区域证明函数,向所述FPGA芯片内的认证中心远程证明数据加解密程序是否运行在该FPGA芯片内;步骤S4,所述不可信区域调用可信区域计算函数,传入要参与计算的参数和要执行计算的密文数据路径,可信区域计算函数获取参数并开始执行计算;步骤S5,可信区域计算函数调用不可信区域的数据解密函数,传入要解密的密文数据路径、密钥索引和密文数据哈希值,再由不可信区域传入所述FPGA芯片;步骤S6,所述FPGA芯片通过可编程输入输出接口获取该参数后,根据密文数据路径获取真实密文数据的哈希值,并与传入的哈希值进行比对,对比通过后,通过布线资源传入至所述FPGA芯片的可编程逻辑单元;步骤S7,所述FPGA芯片的可编程逻辑单元接收参数,并在判断出函数参数行为是数据解密时,指定寄存器执行该行为;步骤S8,所述FPGA芯片的可编程逻辑单元寄存器开始异步读取密文,利用密钥索
引与另一组合逻辑的查找表进行协作解密数据,以时间间隔单位反复输出解密状态;步骤S9,所述FPGA芯片的可编程逻辑单元返回最终明文数据和状态至可编程输入输出接口,将明文数据合并输出到所述Intel SGX程序指定的安全位置,之后再返回给不可信区域

可信区域。步骤S10,可信区域中的函数根据得到的明文数据计算,计算完明文数据后得出结果;步骤S11,可信区域计算逻辑结束,不可信区域销毁可信区域程序,流程结束。
[0008]优选地,所述步骤S3包括如下过程:步骤S31,不可信区域程序通过FFI接口调用已烧录到所述FPGA芯片内的加解密程序动态库认证中心函数,传入加密认证报文;步骤S32,所述FPGA芯片的可编程输入输出接口获取该加密认证报文后,通过布线资源传入至可编程逻辑单元;步骤S33,所述FPGA芯片的可编程逻辑单元接收加密认证报文,在判断得出该加密认证报文行为是认证中心时,则指定寄存器的认证中心进行执行;步骤S34,可编程逻辑单元的寄存器获取已烧录至所述FPGA芯片内部的唯一标识和认证报文解密密钥,解密报文并与唯一标识进行认证比对,返回比对结果。
[0009]优选地,包括访问外部资源程序AT和隐私可信计算程序AE,以及对应访问外部资源程序AT和隐私可信计算程序AE的编译打包逻辑:步骤a0,分别编译访问外部资源程序AT和隐私可信计算程序AE代码,生成.o目标文件;步骤b0,根据访问外部资源程序AT和隐私可信计算程序AE使用不同的参数生成两个不同的EDL目标文件,Intel SGXsdk对EDL进行编译生成.o目标文件;步骤c0,访问外部资源程序AT目标文件及其EDL目标文件合并成一个可执行的AT目标文件;步骤d0,隐私可信计算程序AE目标文件及其EDL目标文件合并成一个新的AE目标文件;步骤e0,Intel SGXsdk根据第d步生成最新的AE目标文件、Enclave中运行程序所需要的一些内存配置文件Enclave.config、Intel SGX生成的私钥进行签名,生成最终的AE签名共享库文件。
[0010]优选地,访问外部资源程序AT启动后有如下逻辑:步骤a1,通过EDL调用隐私可信计算程序AE的远程证明SGX函数暴露出来的ecall接口,远程证明SGX函数访问Intel的官方认证中心进行认证,认证当前隐私可信计算程序AE是否真实运行在具有Intel SGX环境上的可信执行环境中;步骤b1,通过EDL调用隐私可信计算程序AE的远程证明FPGA函数暴露出来的ecall接口,访问FPGA芯片内的认证中心进行远程证明数据加解密程序是否真实运行在FPGA芯片内;步骤c1,若步骤b1、c1中任何一个远程证明不通过或两者都不通过,则访问外部资源程序AT销毁当前隐私可信计算程序AE,进而访问外部资源程序AT终止输出警告日志,同时释放Enclave的Stack和Heap。
[0011]优选地,所述步骤S6包括有如下过程:步骤S60,访问外部资源程序AT通过FFI+动态库的形式调用经EDA烧录到FPGA芯片内部的可编程输入输出IOB的IOBP程序,并传入密文数据路径EncryptDataLocation或字节数组EncryptDataBytes、密钥索引KeyIndex和哈希值EncryptDataHash;步骤S61,IOBP程序根据获取到的密文数据路径EncryptDataLocation或字节数组EncryptDataBytes获取真实的密文EncryptData,进而获取真实的密文数据哈希值RealEncryptDataHash;步骤S62,将密文数据哈希值RealEncryptDataHash与传入进来的哈希值EncryptDataHash进行比对,如果比对结果不一致,则表示密文EncryptData存在被篡改风险,从而终止解密数据过程,并返回错误提示至访问外部资源程序AT;若比对通过,则将密文EncryptDat本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA可信执行环境的计算方法,其特征在于,该方法基于CPU和FPGA芯片实现,所述CPU预设有Intel SGX程序,所述Intel SGX程序包含不可信区域和可信区域,所述方法包括如下步骤:步骤S1,所述Intel SGX程序在不可信区域中划分预设大小的可信区域栈内存和堆内存,并启动可信区域程序;步骤S2,所述不可信区域调用可信区域证明函数,向intel认证中心远程证明可信程序是否真实运行在sgx环境下;步骤S3,所述不可信区域调用可信区域证明函数,向所述FPGA芯片内的认证中心远程证明数据加解密程序是否运行在该FPGA芯片内;步骤S4,所述不可信区域调用可信区域计算函数,传入要参与计算的参数和要执行计算的密文数据路径,可信区域计算函数获取参数并开始执行计算;步骤S5,可信区域计算函数调用不可信区域的数据解密函数,传入要解密的密文数据路径、密钥索引和密文数据哈希值,再由不可信区域传入所述FPGA芯片;步骤S6,所述FPGA芯片通过可编程输入输出接口获取该参数后,根据密文数据路径获取真实密文数据的哈希值,并与传入的哈希值进行比对,对比通过后,通过布线资源传入至所述FPGA芯片的可编程逻辑单元;步骤S7,所述FPGA芯片的可编程逻辑单元接收参数,并在判断出函数参数行为是数据解密时,指定寄存器执行该行为;步骤S8,所述FPGA芯片的可编程逻辑单元寄存器开始异步读取密文,利用密钥索引与另一组合逻辑的查找表进行协作解密数据,以时间间隔单位反复输出解密状态;步骤S9,所述FPGA芯片的可编程逻辑单元返回最终明文数据和状态至可编程输入输出接口,将明文数据合并输出到所述Intel SGX程序指定的安全位置,之后再返回给不可信区域

可信区域;步骤S10,可信区域中的函数根据得到的明文数据计算,计算完明文数据后得出结果;步骤S11,可信区域计算逻辑结束,不可信区域销毁可信区域程序,流程结束。2.如权利要求1所述的基于FPGA可信执行环境的计算方法,其特征在于,所述步骤S3包括如下过程:步骤S31,不可信区域程序通过FFI接口调用已烧录到所述FPGA芯片内的加解密程序动态库认证中心函数,传入加密认证报文;步骤S32,所述FPGA芯片的可编程输入输出接口获取该加密认证报文后,通过布线资源传入至可编程逻辑单元;步骤S33,所述FPGA芯片的可编程逻辑单元接收加密认证报文,在判断得出该加密认证报文行为是认证中心时,则指定寄存器的认证中心进行执行;步骤S34,可编程逻辑单元的寄存器获取已烧录至所述FPGA芯片内部的唯一标识和认证报文解密密钥,解密报文并与唯一标识进行认证比对,返回比对结果。3.如权利要求1所述的基于FPGA可信执行环境的计算方法,其特征在于,包括访问外部资源程序AT和隐私可信计算程序AE,以及对应访问外部资源程序AT和隐私可信计算程序AE的编译打包逻辑:步骤a0,分别编译访问外部资源程序AT和隐私可信计算程序AE代码,生成.o目标文件;
步骤b0,根据访问外部资源程序AT和隐私可信计算程序AE使用不同的参数生成两个不同的EDL目标文件,Intel SGXsdk对EDL进行编译生成.o目标文件;步骤c0,访问外部资源程序AT目标文件及其EDL目标文件合并成一个可执行的AT目标文件;步骤d0,隐私可信计算程序AE目标文件及其EDL目标文件合并成一个新的AE目标文件;步骤e0,Intel SGXsdk根据第d步生成最新的AE目标文件、Enclave中运行程序所需要的一些内存配置文件Enclave.config、Intel SGX生成的私钥进行签名,生成最终的AE签名共享库文件。4.如权利要求3所述的基于FPGA可信执行环境的计算方法,其特征在于,访问外部资源程序AT启动后有如下逻辑:步骤a1,通过EDL调用隐私可信计算程序AE的远程证明SGX函数暴露出来的ecall接口,远程证明SGX函数访问Intel的官方认证中心进行认证,认证当前隐私可信计算程序AE是否真实运行在具有Intel SGX环境上的可信执行环境中;步骤b1,通过EDL调用隐私可信计算程序AE的远程证明FPGA函数暴露出来的ecall接口,访问FPGA芯片内的认证中心进行远程证明数据加解密程序是否真实运行在FPGA芯片内;步骤c1,若步骤b1、c1中任何一个远程证明不通过或两者都不通过,则访问外部资源程序AT销毁当前隐私可信计算程序AE,进而访问外部资源程序AT终止输出警告日志,同时释放Enclave的Stack和Heap。5.如权利要求4所述的基于FPGA可信执行环境的计算方法,其特征在于,所述步骤S6包括有如下过程:步骤S60,访问外部资源程序AT通过FFI+动态库的形式调用经EDA烧录到FPGA芯片内部的可编程输入输出IOB的IOBP程序,并传入密文数据路径EncryptDataLocation或字节数组EncryptDataBytes、密钥索引KeyIndex和哈希值EncryptDataHash;步骤S61,IOBP程序根据获取到的密文数据路径EncryptDataLocation或字节数组EncryptDataBytes获取真实的密文EncryptData,进而获取真实的密文数据...

【专利技术属性】
技术研发人员:王济平黎刚汤克云刘继华周健雄高俊杰梁孟
申请(专利权)人:京信数据科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1