一种基于FPGA可信执行环境的计算方法及系统与流程

专利2024-07-30  61


一种基于fpga可信执行环境的计算方法及系统
技术领域
1.本发明涉及在可信执行环境(intel sgx、arm trustzone)下的数据快速加解密方法,具体涉及一种基于fpga可信执行环境的计算方法及系统。


背景技术:

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


技术实现要素:

5.本发明要解决的技术问题在于,针对现有技术的不足,提供一种能满足复杂逻辑运算场景下的隐私计算要求,能实现可信执行环境intel sgx与fpga芯片的高度融合,进而提升数据传输安全性和数据传输效率的基于fpga可信执行环境的计算方法及系统。
6.为解决上述技术问题,本发明采用如下技术方案。
7.一种基于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,可信区域计算逻辑结束,不可信区域销毁可信区域程序,流程结束。
8.优选地,所述步骤s3包括如下过程:步骤s31,不可信区域程序通过ffi接口调用已烧录到所述fpga芯片内的加解密程序动态库认证中心函数,传入加密认证报文;步骤s32,所述fpga芯片的可编程输入输出接口获取该加密认证报文后,通过布线资源传入至可编程逻辑单元;步骤s33,所述fpga芯片的可编程逻辑单元接收加密认证报文,在判断得出该加密认证报文行为是认证中心时,则指定寄存器的认证中心进行执行;步骤s34,可编程逻辑单元的寄存器获取已烧录至所述fpga芯片内部的唯一标识和认证报文解密密钥,解密报文并与唯一标识进行认证比对,返回比对结果。
9.优选地,包括访问外部资源程序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签名共享库文件。
10.优选地,访问外部资源程序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。
11.优选地,所述步骤s6包括有如下过程:步骤s60,访问外部资源程序at通过ffi+动态库的形式调用经eda烧录到fpga芯片内部的可编程输入输出iob的iobp程序,并传入密文数据路径encryptdatalocation或字节数组encryptdatabytes、密钥索引keyindex和哈希值encryptdatahash;步骤s61,iobp程序根据获取到的密文数据路径encryptdatalocation或字节数组encryptdatabytes获取真实的密文encryptdata,进而获取真实的密文数据哈希值realencryptdatahash;步骤s62,将密文数据哈希值realencryptdatahash与传入进来的哈希值encryptdatahash进行比对,如果比对结果不一致,则表示密文encryptdata存在被篡改风险,从而终止解密数据过程,并返回错误提示至访问外部资源程序at;若比对通过,则将密文encryptdata按等分切分成多份密文数据块encryptdatachunk,由布线资源分发至各密文数据块encryptdatachunk和密钥索引keyindex至各可编程逻辑单元clb中的
clbp程序。
12.优选地,所述步骤s31中,隐私可信计算程序ae中远程证明fpga函数时,利用认证报文密钥authkey对fpga内的唯一标识uniqueid进行国密sm4对称加密,得到加密认证报文authbodyencrypt,随后通过edl将加密认证报文authbodyencrypt传输给外部资源程序at,外部资源程序at通过ffi+动态库的形式调用fpga的iobp程序,并传入加密认证报文authbodyencrypt。
13.优选地,所述步骤s8包括如下过程:步骤s81,利用第三方外部程序对所述fpga芯片进行加解密算法烧录,利用所述fpga芯片的可重复编程特性,重复进行烧录以增减加密算法,同时烧录唯一标识和认证报文密钥;步骤s82,第三方外部程序通过可编程输入输出接口、布线资源和可编程逻辑单元的组合逻辑进行密钥的生成与检索;步骤s83,将生成的密钥以类索引表的形式存在于所述fpga芯片内,并返回索引值。
14.优选地,所述步骤s8中,可编程输入输出iob与可编程逻辑单元clb利用布线资源进行对接,利用eda对包含加解密算法、加解密逻辑、密钥生成、认证中心的clbp程序烧录至可编程逻辑单元clb中;可编程逻辑单元clb由两部分组成:寄存器和查找表,时序逻辑返回当前执行结果不与时间状态挂钩,而组合逻辑则返回当前执行结果的同时还会与时间状态挂钩合并返回,基于该特性,只将加解密算法、密钥检索和密钥生成程序烧录至查找表,将数据加密、数据解密和认证中心程序烧录至寄存器。
15.优选地,所述步骤s10中,计算完明文数据并得出结果后,若需要加密输出,则执行如下过程:步骤s10.0,获取该计算结果computeresult的哈希值computeresulthash,并将计算结果computeresult写入到intel sgx的安全区域computeresultlocation;步骤s10.1,隐私可信计算程序ae将哈希值computeresulthash、安全区域computeresultlocation、密钥索引keyindex根据edl传入至访问外部资源程序at中,访问外部资源程序at再利用ffi+动态库形式传入至fpga芯片的可编程输入输出iob的iobp程序,iobp程序得到哈希值computeresulthash、安全区域computeresultlocation、密钥索引keyindex;步骤s10.2,iobp程序根据安全区域computeresultlocation读取计算结果computeresult,获取真实明文数据的哈希值realcomputeresulthash并与传入的computeresulthash进行对比,若对比不一致,则终止该加密数据行为;步骤s10.3,iobp程序将计算结果computeresult等分切分为多份密文数据块computeresultchunk,利用布线资源将各密文数据块computeresultchunk和密钥索引keyindex传入至各clb的clbp程序中;步骤s10.4,clbp程序判断函数行为,指定由寄存器的数据解密执行,并与查找表进行协作,根据密钥索引keyindex获取私钥prikey,进而对密文数据块computeresultchunk进行数据国密sm9非对称加密算法,加密得到密文数据块encryptcomputeresultchunk,并以时间间隔单位反复输出加密状态;步骤s10.5,各clbp程序统一由布线资源返回密文数据块encryptcomputeresultchunk至可编程输入输出iob的iobp程序中,再将密文数据块encryptcomputeresultchunk进行统一合并,iobp程序接收到所有的密文数据块encryptcomputeresultchunk后进行合并,得到加密数据encryptcomputeresult,最终将加密数据encryptcomputeresult输出到本地磁盘位置encryptcomputeresultlocation,iobp程序将本地磁盘位置encryptcomputeresultlocation返回至访问外部资源程序at中。
16.一种基于fpga可信执行环境的计算系统,该系统用于实现上述计算方法。
17.本发明公开的基于fpga可信执行环境的计算方法及系统,将可信执行环境与fpga芯片技术高度融合,有效解决了在可信执行环境中无法进行大数据量的快速加解密,以及在fgpa上无法有利保证隐私计算安全、无法实现复杂逻辑运算等诸多问题。相比现有技术而言,本发明利用权威性高的可信执行环境intel sgx满足对隐私数据高要求安全场景下的隐私计算,并且可通过远程证明证明隐私计算函数真实运行在intel sgx下。此外,本发明可信执行环境intel sgx与fpga芯片进行高度融合,利用ffi+动态库形式,提供了无网络通信高安全的通道,使得数据在两者之间可以安全传输,而且传输效率大大提高,较好地满足了应用需求。
附图说明
18.图1为intel sgx程序的可信执行环境内部流程图;
19.图2为fpga快速加密算法的加解密流程图;
20.图3为intel sgx程序与fpga芯片的交互关系示意图;
21.图4为本发明基于fpga可信执行环境的计算方法的流程图;
22.图5为步骤s3的详细流程图;
23.图6为步骤s8的详细流程图。
具体实施方式
24.下面结合附图和实施例对本发明作更加详细的描述。
25.本发明公开了一种基于fpga可信执行环境的计算方法,请参见图4,该方法基于cpu和fpga芯片实现,所述cpu预设有intel sgx程序,所述intel sgx程序包含不可信区域和可信区域,所述方法包括如下步骤:
26.步骤s1,所述intel sgx程序在不可信区域中划分预设大小的可信区域栈内存和堆内存,并启动可信区域程序;
27.步骤s2,所述不可信区域调用可信区域证明函数,向intel认证中心远程证明可信程序是否真实运行在sgx环境下;
28.步骤s3,所述不可信区域调用可信区域证明函数,向所述fpga芯片内的认证中心远程证明数据加解密程序是否运行在该fpga芯片内;
29.步骤s4,所述不可信区域调用可信区域计算函数,传入要参与计算的参数和要执行计算的密文数据路径,可信区域计算函数获取参数并开始执行计算;
30.步骤s5,可信区域计算函数调用不可信区域的数据解密函数,传入要解密的密文数据路径、密钥索引和密文数据哈希值,再由不可信区域传入所述fpga芯片;
31.步骤s6,所述fpga芯片通过可编程输入输出接口获取该参数后,根据密文数据路径获取真实密文数据的哈希值,并与传入的哈希值进行比对,对比通过后,通过布线资源传入至所述fpga芯片的可编程逻辑单元;
32.步骤s7,所述fpga芯片的可编程逻辑单元接收参数,并在判断出函数参数行为是数据解密时,指定寄存器执行该行为;
33.步骤s8,所述fpga芯片的可编程逻辑单元寄存器开始异步读取密文,利用密钥索引与另一组合逻辑的查找表进行协作解密数据,以时间间隔单位反复输出解密状态;
34.步骤s9,所述fpga芯片的可编程逻辑单元返回最终明文数据和状态至可编程输入输出接口,将明文数据合并输出到所述intel sgx程序指定的安全位置,之后再返回给不可信区域-可信区域。
35.步骤s10,可信区域中的函数根据得到的明文数据计算,计算完明文数据后得出结果;
36.步骤s11,可信区域计算逻辑结束,不可信区域销毁可信区域程序,流程结束。
37.上述方法中,可信执行环境(trusted execution environment,tee)通过软硬件相结合的方法在中央处理器中构建一个安全区域,保证其内部加载的程序和数据在机密性和完整性上得到保护。tee内部是有一块专门的安全加密芯片tpm(trusted platform module)tpm将密钥封装在芯片内部外界无法访问,只有tpm认可的合法应用请求时,tpm才会在芯片内部对数据进行解密,并将解密后的数据送往内存,同时可信执行环境可以自由实现任意逻辑功能,即可以针对任意场景开发任意的程序进行安全计算。目前较为成熟的引入了可信执行环境的技术主要有arm trustzone和intel sgx,而本身这些芯片在运行时需要对其进行限定栈内存大小和堆内存大小,即在执行计算时,并不能保证能对大量的数据进行高速计算,尤其是加解密功能。可信执行环境是提供安全的区域我们进行安全的计算。
38.同时,fpga(field programmable gate array)现场可编程门阵列,通过编程,用户可以随时改变它的应用场景,它可以模拟cpu、gpu等硬件的各种并行运算。通过与目标硬件的高速接口互联,fpga可以完成目标硬件运行效率比较低的部分,从而在系统层面实现加速。虽然本身基于在fpga芯片上开发的程序在一定程度上也能保证隐私计算安全,但其所保护隐私计算安全的能力是远不及基于安全加密芯片tpm的可信执行环境,同时fgpa只能实现定点运算,即无法实现比较复杂的逻辑运算。fpga是提供高速运转计算的能力。
39.本发明将可信执行环境与fpga芯片技术高度融合,有效解决了在可信执行环境中无法进行大数据量的快速加解密,以及在fgpa上无法有利保证隐私计算安全、无法实现复杂逻辑运算等诸多问题。相比现有技术而言,本发明利用权威性高的可信执行环境intel sgx满足对隐私数据高要求安全场景下的隐私计算,并且可通过远程证明证明隐私计算函数真实运行在intel sgx下。同时,本发明满足了在对复杂逻辑运算场景下进行隐私计算,比如可以进行庞大复杂的逻辑运算(机器学习、实时计算、离线计算、数据治理)等领域。intel sgx下的可信区域中的可信函数完全由研发人员进行自主研发,根据任意场景可以编写任意场景程序。再者,远程证明sgx和远程证明fpga都具有权威通透性,远程证明有intel官方支持,远程证明fpga则利用芯片内部不可篡改性质,最终验证效果都具有真实性和可靠性。此外,本发明可信执行环境intel sgx与fpga芯片进行高度融合,利用ffi+动态库形式,打造无网络通信高安全的通道,使得数据在两者之间可以安全传输,而且采用了无网络通信通道,使得传输效率大大提高,可近似于内存间的数据共享传输效能。
40.关于本发明的具体技术方案,在本发明的所述步骤s1中,若运行中使用的栈内存大小和堆内存大小大于预先配置的栈内存最大值和堆内存最大值,则终止和销毁可信区域程序,释放可信区域栈内存和堆内存。
41.作为一种优选方式,请参见图5,所述步骤s3包括如下过程:
42.步骤s31,不可信区域程序通过ffi接口调用已烧录到所述fpga芯片内的加解密程
序动态库认证中心函数,传入加密认证报文;
43.步骤s32,所述fpga芯片的可编程输入输出接口获取该加密认证报文后,通过布线资源传入至可编程逻辑单元;
44.步骤s33,所述fpga芯片的可编程逻辑单元接收加密认证报文,在判断得出该加密认证报文行为是认证中心时,则指定寄存器的认证中心进行执行;
45.步骤s34,可编程逻辑单元的寄存器获取已烧录至所述fpga芯片内部的唯一标识和认证报文解密密钥,解密报文并与唯一标识进行认证比对,返回比对结果。
46.基于上述步骤s31至步骤s34,使得本发明实现了在fpga内认证中心的远程证明逻辑。
47.实际应用中,通过上述两层远程证明之后,真正执行业务逻辑功能,在本发明所述步骤s4中,要执行计算的密文数据路径是文件http地址或者数据库表连接地址。
48.本发明的所述步骤s6中还具有防范密文数据是否被篡改的功能,具体是指,所述步骤s6中,所述fpga芯片的可编程输入输出接口对真实密文数据的哈希值与传入的哈希值进行比对后,若对比不一致,则表示密文数据存在被篡改风险,终止解密数据步骤,生成并返回错误提示。
49.关于本发明所涉及的加密解密具体算法,在本发明的所述步骤s8中,查找表提供国密sm9非对称加密算法,根据密钥索引keyindex检索得到私钥prikey,随后寄存器使用国密sm9非对称加密算法对加密数据块encryptdatachunk进行prikey解密,进而得到明文数据块decryptdatachunk。
50.具体地,请参见图6,所述步骤s8包括如下过程:
51.步骤s81,利用第三方外部程序对所述fpga芯片进行加解密算法烧录,利用所述fpga芯片的可重复编程特性,重复进行烧录以增减加密算法,同时烧录唯一标识和认证报文密钥;
52.步骤s82,第三方外部程序通过可编程输入输出接口、布线资源和可编程逻辑单元的组合逻辑进行密钥的生成与检索;
53.步骤s83,将生成的密钥以类索引表的形式存在于所述fpga芯片内,并返回索引值。
54.关于数据加密过程,在本发明的所述步骤s10中,计算完明文数据并得出结果后,若需要加密输出,则采用步骤s7至步骤s8所述的解密密文数据流程进行处理后得到加密数据encryptcomputeresult,将加密数据encryptcomputeresult输出到本地磁盘位置encryptcomputeresultlocation。
55.进一步地,所述步骤s11中,可信区域计算逻辑结束时,不可信区域得到结束信号以及加密数据本地磁盘位置encryptcomputeresultlocation,该本地磁盘位置encryptcomputeresultlocation由第三方外部程序进行保存管理。
56.实际应用中,本发明依赖于一种基于fpga可信执行环境的计算系统来实现,该系统包含cpu和fpga芯片,而且该系统用于实现上述计算方法中的各个步骤。
57.为了对本发明基于fpga可信执行环境的计算方法及系统作出更加清楚完整的解释,下面提供具体实施例对本发明的技术方案进行详细描述。
58.实施例一
59.本实施例首先介绍如下专有名词:
60.1、enclave。intel sgx在内存中创建了一个隔离的环境,这个环境名为enclave(飞地),在这里数据和程序可以安全地使用。
61.2、edl。enclave定义语言文件,声明式的定义ocall接口和ecall接口。
62.3、ocall接口。用于enclave中程序调用不可信区域程序的接口,函数实现由不可信区域程序实现。
63.4、ecall接口。用于不可信区域程序调用enclave中程序的接口,函数实现由enclave中程序实现。
64.5、enclave.config。在enclave中运行的程序所需要的一些内存配置文件,主要配置有两个:stackmaxsize(栈内存最大值)和heapmaxsize(堆内存最大值),使用十六进制数进行配置。其中stackmaxsize是针对基本数据类型的内存大小,heapmaxsize是针对对象类型的内存大小。
65.6、eda。集成电路的重要基础工具,被广泛用于集成电路设计、制造、封装、测试验证和仿真烧录等各个环节。
66.基于intel sgx的可信执行环境内部流程请参见图1,其中:
67.a1:intel sgx程序由两个部分组成:不可信区域(untrust)和enclave。不可信区域可以提供给我们用于访问一切外部的资源,这些资源是对enclave而言是不可信的,如果enclave想要访问外部资源,则可通过edl进行访问不可信区域,不可信区域再访问外部资源,从而实现enclave访问外部资源。
68.at:访问外部资源的程序,在本发明中,对于可信执行环境sgx而言,fpga即为外部资源。该程序是部署在可信执行环境以外的区域。
69.ae:隐私可信计算程序,该程序主要负责对隐私数据的可信计算、远程证明sgx和fpga。该程序是在enclave中启动,是安全可信的,其他外部的资源如:os、bios、vmm等都无法访问该区域。
70.具体地,at和ae的编译打包逻辑:1、分别编译at和ae代码,生成.o目标文件。2、intel sgxsdk对edl进行编译生成.o目标文件(这里会根据at和ae两者使用不同的参数生成两个不同的edl目标文件)。3、at目标文件和at的edl目标文件进行合并成一个可执行的文件at。4、ae目标文件和ae的edl目标文件进行合并成一个新的目标文件ae。5、intel sgxsdk根据第4步生成最新的ae目标文件、enclave.config、intel sgx生成的私钥进行签名,生成最终的ae签名共享库文件。这个ae签名共享库文件就是at程序启动ae程序的关键文件。
71.at1:执行可执行文件at从而启动在不可信区域的at程序,同时at在enclave中使用ae签名共享库创建启动ae程序,同时根据ae签名共享库中的enclave.config的配置,为ae程序划分stacksize和heapsize。
72.at2:at程序启动后,首先需要进行两个证明操作,即远程证明sgx和远程证明fpga。(1)通过edl调用ae程序的远程证明sgx函数暴露出来的ecall接口,远程证明sgx函数访问intel的官方认证中心进行认证,认证当前ae程序真实的运行在具有intel sgx环境上的可信执行环境中。(2)通过edl调用ae程序的远程证明fpga函数暴露出来的ecall接口,访问fpga芯片内的认证中心进行远程证明数据加解密程序是否真实运行在fpga芯片内。若其
中一个远程证明不通过或都不通过,则at程序会销毁当前ae程序,进而at程序终止输出警告日志,同时释放enclave的stack和heap。
73.ae1:远程证明sgx函数。intel公司为每一个具有sgx指令集的cpu烧录私钥到不可篡改的cpu上,公钥则由intel公司官方持有并发放给开发者用户。当远程证明sgx函数执行时,会根据程序初始化日志和其他manifest(清单信息如:随机数、当前时间戳、函数参数等)生成一个摘要信息,然后使用烧录到intel sgx cpu上的私钥进行签名,生成一个数据引用quote,随后远程证明函数会发送该quote去intel认证中心进行认证。
74.ae2:远程证明fpga函数。该说明会在下文图4中进行详细描述。
75.at2:除了提供远程证明的入口,还会提供本发明具体的业务逻辑计算入口,通过edl调用ae程序中的可信函数暴露出来的ecall接口并传入具体的密文隐私数据访问地址,可信函数会根据传入的密文隐私数据访问地址进行数据读取并执行可信业务逻辑计算。
76.ae3:可信函数执行,此处是真正的业务逻辑运算,所有的隐私数据与业务代码都会在该步执行,最终的计算结果也会在该处中输出。
77.ae4:因为隐私数据是从外部进行传入到enclave内部,所以隐私数据一般都是密文的状态,而最终ae3函数执行是面向明文数据进行执行,并最终会以密文数据进行输出,因此此处会进行密文数据的解密和明文数据的加密,通过edl调用at程序的fpga入口暴露出来ocall接口进行数据加密和解密操作。
78.at3:fpga相关逻辑。
79.实施例二
80.本实施例中,基于fpga快速加密算法加解密内部流程说明请参见图2,其中:
81.iob:可编程输入\输出。上文中的at程序at3会与此模块进行对接,利用eda烧录输入输出程序iobp至iob中,iobp会接收来自intel sgx不可信区域的at程序调用,at3将需要处理数据和参数等传入至iobp,iobp利用fpga内丰富的布线资源与可编程逻辑单元clb互相连接。iobp在得到运行结果时,会输出结果和fpga内部运行状态返回给调用方即at程序中at3函数。
82.clb:可编程逻辑单元。iob会与此模块利用布线资源进行对接,同样也是利用eda对加解密算法、加解密逻辑、密钥生成、认证中心等clbp程序进行烧录至clb中,而因为clb一般由两部分组成:寄存器(实现时序逻辑)和查找表(实现组合逻辑),时序逻辑返回当前执行结果不会与时间状态挂钩,而组合逻辑则返回当前执行结果的同时还会与时间状态挂钩合并返回,因此本发明利用fpga的clb这个组成部分,将只需要关心执行结果的方法即加解密算法、密钥检索和密钥生成程序烧录至查找表(组合逻辑),而将同时需要结果和时间状态的方法即数据加密、数据解密和认证中心程序烧录至寄存器(时序逻辑)。布线资源将iobp的输出接入到clbp中,clbp根据来源行为判断要进行的逻辑功能使用不同的逻辑组件(时序逻辑和组合逻辑),从而调用不同的函数实现功能,具体的功能描述请参见图4,最终clbp执行结果利用布线资源返回给iobp。
83.fpga内部存在多个iob、clb和布线资源,丰富的组件使得烧录的程序可以并行处理,从而加快本发明的大规模数据量的数据加解密能力。
84.请参见图3,整合intel sgx和fpga的架构说明如下:
85.intel sgx:如图1所示,intel sgx内部分为不可信区域和enclave组成,这两者之
间的通信通过edl进行函数式暴露ecall和ocall对接,通过在edl定义不可信区域的ocall接口和enclave的ecall,使得双方可以根据该规范进行参数调用、输入和输出等对接。其中enclave包含有ae程序;不可信区域主要与外部进行对接,在本发明主要是与fpga进行对接。
86.fpga:如图2所示,fpga由可编程输入\输出iob、可编程逻辑单元clb、布线资源等组成,通过利用eda将程序按照类型和功能的划分进行烧录至iob和clb中。其中iob主要与外部进行对接,在本发明中主要是与intel sgx的不可信区域进行对接。
87.ffi+动态库方式:本实施例中,intel sgx不可信区域的at程序如何与fpga内iob的iobp程序进行高效对接的对接方式实现。在对fpga内可编程输入\输出iob烧录程序iobp的同时,对外编译打包一个动态库文件,该动态库文件是对接iobp的一种软件包,软件包内是使用硬件编程语言+c语言进行编写,并最终利用c语言对外提供函数入口。而在本发明中at程序和ae程序均是使用rust内存安全语言进行编写,即at程序与动态库中的函数入口不是同一种编程语言,本发明利用ffi(foreign function interface)接口,这种接口方式针对本发明中的at程序而言,在对at编译打包时即上文提及到的at和ae打包编译逻辑中的第3步at打包同时还会与这个动态库文件进行合并。at程序的rust代码建立c库函数直接与动态库的c语言接口直接调用。由此可见,这种对接调用方式最终只会在一个进程中进行,不会启动多个进程进行进程间的通信,也不会产生任何的网络传输通信,提升在at程序和iobp程序对接效能,并且由于不产生任何网络通信,数据在安全性上得到保障。
88.实施例三
89.在上述实施例一和实施例二的基础上,结合图4、图5和图6所示,本实施例提出了一种整体隐私计算在intel sgx和fpga上进行安全可信计算和数据快速加解密的方法流程,具体包括:
90.步骤s1:intel sgx根据上面提及到的enclave.config,根据此enclave.config的配置内容在不可信区域中对enclave中划分stacksize和heapsize,从而规定enclave中的ae程序运行时可用的stack和heap,如果在运行中操作的基本数据使用stack大小和对象数据使用heap大小大于配置的stackmaxsize和heapmaxsize,则会终止ae程序的运行,at程序则会实时收到终止信号从而销毁ae程序并释放enclave的stack和heap。at程序根据enclave.config创建好enclave后,使用ae签名共享库在enclave中启动ae程序。
91.步骤s2:at程序通过edl进行访问ae远程证明sgx函数暴露出来的ecall接口,sgx证明函数内向intel远程证明ae程序是否真实运行在intel sgx下。若认证成功,则进行下一步;反之则终止ae程序,at程序得到ae程序的终止信号,销毁ae程序并释放enclave的stack和heap。
92.步骤s3:at程序通过edl进行访问ae远程证明fpga函数暴露出来的ecall接口,向fpga芯片内的认证中心进行远程证明数据加解密程序是否真实运行在fpga芯片内。若认证成功,则进行下一步;反之则终止ae程序,at程序得到ae程序的终止信号,销毁ae程序并释放enclave的stack和heap。
93.关于步骤s3的具体描述详见步骤s31-步骤s34,步骤s31-步骤s34给出了fpga内认证中心的远程证明逻辑,其中:
94.步骤s31:当前步骤需要fpga内的唯一标识uniqueid和认证报文密钥authkey,这
两者在s81-s83中有所体现:第三方的外部程序会对fpga烧录uniqueid和authkey,此时fpga芯片内就具有这两者来进行远程认证,并且根据fpga的特性是不可篡改的;同时ae程序也会持有该fpga的uniqueid和authkey,由于ae程序是运行在intel sgx的enclave中,所以有关fpga的如uniqueid和authkey将会得到安全存储。此时ae程序中远程证明fpga函数,利用authkey对uniqueid进行国密sm4对称加密,得到加密认证报文authbodyencrypt,随后通过edl将authbodyencrypt传输给at程序,at程序通过ffi+动态库的形式调用fpga的iobp程序,并传入authbodyencrypt。
95.步骤s32:fpga内iobp程序获取authbodyencrypt,通过布线资源传入至可编程逻辑单元clb的clbp程序,由于该远程认证行为只需要一次运行,并不需要并行运行,即iobp会对函数行为进行判断,从而进行负载均衡,利用布线资源将authbodyencrypt发送给fpga其中一个clb的clbp程序。
96.步骤s33:fpga内可编程逻辑单元clb的clbp程序,接收到来自iobp传输的函数参数authbodyencrypt,判断该参数行为为认证中心,则指定寄存器(时序逻辑)中的认证中心进行执行。
97.步骤s34:clbp中时序逻辑的认证中心此时会先获取先前已烧录好在fpga不可删改区域内的uniqueid和authkey,利用authkey进行国密sm4对称加密算法解密authbodyencrypt,得到authbodydecrypt,利用authbodydecrypt与烧录的uniqueid进行认证比对,得到比对结果返回compareresult,其中compareresult为布尔值,当值为true时,代表通过fpga远程认证成功,为flase时,表示认证失败。clbp利用布线资源将结果compareresult返回iob中的iobp程序,iobp程序随即将compareresult返回给调用方即intel sgx的at程序,at程序随即将compareresult返回给最后真正的调用方即ae程序,ae程序判断compareresult,从而进行终止与否。
98.之后继续执行步骤s4:
99.步骤s4:通过上方两层的远程证明之后,at程序真正执行需要的业务逻辑功能,通过edl调用ae程序计算函数暴露出来的ecall接口,传入要参与计算的参数params以及要执行计算的密文数据路径encryptdatalocation,encryptdatalocation可以是文件http地址和数据库表连接地址。对与ae程序所在enclave来定,ae访问外部资源一般都将其视作不可信资源,即encryptdatalocation对应的数据必须成密文状态形式,这样外部数据资源成密文的形式可以保护隐私数据不被破解,而ae程序内是需要对密文进行fpga解密后得到的明文数据进行计算,此时明文数据在可信区域内会得到intel sgx的保护。ae程序中的计算函数开始执行计算。
100.此处的encryptdatalocation生成流程是(以下提及到的密钥生成、加密算法、密钥索引在s81-s83处体现):
101.1、第三方外部程序(非at和ae程序,属于用户本地程序,此处也是通过ffi+动态库方式进行调用fpga),调用fpga中iob的iobp程序,发起密钥生成行为,并传入要生成哪种算法的算法名encryptalgorithmname。iobp程序通过布线资源调用clb中的clbp程序,clbp程序判断行为指定查找表(组合逻辑)中的加密算法和密钥生成这两种行为根据encryptalgorithmname进行协作生成如国密非对称加密算法sm9的私钥prikey,并将prikey存储在fpga不可篡改区内的索引表,返回密钥索引keyindex至iobp,iobp再将
keyindex返回给第三方外部程序。
102.2、第三方外部程序通过调用fpga中iob的iobp程序,发起数据加密行为,传入明文数据路径plaintextlocation(可以是文件http地址和数据库表连接地址)和keyindex。
103.3、iobp程序读取plaintextlocation得到plaintextdata,并将plaintextdata进行等分切分成多个明文数据块plaintextdatachunk,再由布线资源进行分发各plaintextdatachunk和keyindex至各可编程逻辑单元clb中的clbp程序。
104.4、各clbp程序接收到plaintextdatachunk和keyindex,判断函数行为为指定查找表(组合逻辑)中的加密算法、密钥检索和寄存器(时序逻辑)的数据加密利用plaintextdatachunk和keyindex进行协作得到最终的加密数据块encryptdatachunk,将encryptdatachunk利用布线资源传输返回给一个iob的iobp程序,iobp程序接收到所有的encryptdatachunk进行合并得到encryptdata,随后将encryptdata写入至第三方外部程序指定的路径得到最终的encryptdatalocation。
105.步骤s5:ae程序通过edl调用at程序密文数据解密暴露出来的ocall接口。传入encryptdata和密钥索引keyindex,keyindex在s82-s83中有体现描述。其中,ae在调用at时会根据encryptdata大小跟设定的阈值threshold进行比对,从而产生两种行为:1、若小于threshold,则直接将encryptdata读取至内存转化为字节数组encryptdatabytes,并获取该encryptdatabytes的哈希值encryptdatahash,随后将该encryptdatabytes、encryptdatahash和keyindex通过edl传输至at程序密文数据解密暴露出来的ocall接口;2、若大于threshold,则ae程序直接将encryptdatalocation、encryptdatahash(文件哈希值或数据表哈希值)和keyindex通过edl传输至at程序密文数据解密暴露出来的ocall接口。
106.步骤s6:at程序通过ffi+动态库的形式调用经eda烧录到fpga芯片内部的可编程输入输出iob的iobp程序,并传入encryptdatalocation(或encryptdatabytes)、keyindex和encryptdatahash,iobp程序根据获取到的encryptdatalocation(或encryptdatabytes)获取真实的encryptdata进而获取真实的密文数据哈希值realencryptdatahash,随后将realencryptdatahash与传入进来的encryptdatahash进行比对,如果比对结果不一致,则encryptdata存在被篡改风险,从而终止解密数据,并返回错误提示至at程序;比对通过,则将encryptdata按等分切分成多份密文数据块encryptdatachunk,由布线资源进行分发各encryptdatachunk和keyindex至各可编程逻辑单元clb中的clbp程序。
107.步骤s7-步骤s8:各可编程逻辑单元clb的clbp程序接收传入进来的encryptdatachunk与keyindex,判断函数参数行为是解密函数,则指定寄存器(时序逻辑)执行该行为。寄存器(时序逻辑)开始异步读取encryptdatachunk,利用keyindex与另一组合逻辑的查找表中的已通过eda烧录的加密算法和密钥检索(在s81-s83中有体现)进行协作解密数据。查找表(组合逻辑)提供加密算法国密sm9非对称加密算法,密钥检索检索keyindex得到私钥prikey,随后寄存器(时序逻辑)数据解密使用国密sm9非堆成加密算法对encryptdatachunk进行prikey解密得到明文数据块decryptdatachunk,并同时以时间间隔为单位反复输出解密状态。
108.关于步骤s8的详细过程如下,步骤s81-步骤s83是第三方程序对fpga芯片内烧录加密算法和索引生成过程:
109.步骤s81:第三方外部程序对fpga的clb的查找表(组合逻辑)进行加密算法烧录(如国密sm2、sm4、sm9、aes、des、rsa等),并利用fpga的可重复编程特性对其重复进行烧录以达到增减加密算法,同时烧录上文所需要的远程证明fpga的uniqueid和authkey至不可篡改区。
110.步骤s82-步骤s83:第三方外部程序会调用上一步烧录的加密算法,进行密钥的生成与检索,生成的密钥将会存储在fpga内部不可篡改区,同时为该密钥生成一个索引,返回该索引。这里的索引与密钥一一对应,以类索引表形式存储在fpga内不可篡改区。本发明可以提供500个索引位置,用于存放各密钥,以便在加解密数据时可精确查找到对应的密钥,同时暴露密钥索引比暴露密钥而言更为安全。
111.之后继续执行步骤s9:
112.步骤s9:各可编程逻辑单元clb的clbp程序最终解密完各自的encryptdatachunk成decryptdatachunk,统一由布线资源返回给一个可编程输入\输出iob的iobp程序,因为需要将所有明文数据块进行统一合并,所以此时会控制布线资源只传输至一个iob中。iobpp程序接收到所有的decryptdatachunk后进行合并得到decryptdata,decryptdata输出至intel sgx指定的安全区域位置decryptdatalocation(可以是文件路径和数据库表形式),最终iobp程序将会返回所有时间间隔的解密状态和decryptdatalocation至at中,at程序再通过edl将decryptdatalocation返回给ae程序。
113.步骤s10:ae程序读取decryptdatalocation至decryptdata,根据decryptdata计算完得到结果computeresult,若需要对computeresult进行加密输出,则此时的加密数据流程跟上述步骤中提到的解密输出流程基本一致:
114.1、获取该computeresult的哈希值computeresulthash,并把computeresult写入到intel sgx的安全区域中(可以是文件路径和数据库表形式)computeresultlocation。
115.2、ae将computeresulthash、computeresultlocation、keyindex根据edl传入至at中,at再利用ffi+动态库形式传入至fpga的可编程输入输出iob的iobp,iobp得到computeresulthash、computeresultlocation、keyindex。
116.3、iobp程序根据computeresultlocation读取computeresult,获取真实明文数据的哈希值realcomputeresulthash与传入的computeresulthash进行对比,若对比不一则反驳该加密数据行为。
117.4、iobp程序将computeresult等分切分多份computeresultchunk,利用布线资源将各computeresultchunk和keyindex传入至各clb的clbp程序中。
118.5、clbp程序判断函数行为,指定由寄存器(时序逻辑)的数据解密执行,并与查找表(组合逻辑)进行协作,根据keyindex获取prikey,进而对computeresultchunk进行数据国密sm9非对称加密算法加密得到encryptcomputeresultchunk,并以时间间隔单位反复输出加密状态。
119.6、各clbp程序统一由布线资源返回encryptcomputeresultchunk给一个可编程输入\输出iob的iobp程序中,这里同样也是需要将encryptcomputeresultchunk进行统一合并,所以只需要一个iob进行处理。iobp程序接收到所有的encryptcomputeresultchunk后进行合并得到encryptcomputeresult,最终将encryptcomputeresult输出到本地磁盘位置(可以是文件路径和数据库表形式)encryptcomputeresultlocation,此时这里因为是密文
数据状态,所以数据可以暴露存放在外部介质中。iobp程序将encryptcomputeresultlocation返回至at程序中。
120.步骤s11:ae程序获得最终的计算结果加密状态,ae程序计算逻辑结束,此时at会得到该结束信号和encryptcomputeresultlocation,进而销毁ae程序,释放enclave的stack和heap,流程结束。encryptcomputeresultlocation将由第三方外部程序进行保存管理和解密得到最终的明文结果。
121.本发明公开的基于fpga可信执行环境的计算方法及系统,其在可信执行环境(intel sgx、arm trustzone)下实现了基于fpga高速运转芯片的快速数据加解密功能,能够无缝衔接以及资源最大化的在软件层面上合并可信执行环境与fgpa两种芯片,较好地满足了在安全隐蔽的沙箱环境下快速高效的进行数据加解密的应用要求。
122.以上所述只是本发明较佳的实施例,并不用于限制本发明,凡在本发明的技术范围内所做的修改、等同替换或者改进等,均应包含在本发明所保护的范围内。

技术特征:
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,进而获取真实的密文数据哈希值realencryptdatahash;步骤s62,将密文数据哈希值realencryptdatahash与传入进来的哈希值encryptdatahash进行比对,如果比对结果不一致,则表示密文encryptdata存在被篡改风险,从而终止解密数据过程,并返回错误提示至访问外部资源程序at;若比对通过,则将密文encryptdata按等分切分成多份密文数据块encryptdatachunk,由布线资源分发至各密文数据块encryptdatachunk和密钥索引keyindex至各可编程逻辑单元clb中的clbp程序。6.如权利要求3所述的基于fpga可信执行环境的计算方法,其特征在于,所述步骤s31中,隐私可信计算程序ae中远程证明fpga函数时,利用认证报文密钥authkey对fpga内的唯一标识uniqueid进行国密sm4对称加密,得到加密认证报文authbodyencrypt,随后通过edl将加密认证报文authbodyencrypt传输给外部资源程序at,外部资源程序at通过ffi+动态库的形式调用fpga的iobp程序,并传入加密认证报文authbodyencrypt。7.如权利要求1所述的基于fpga可信执行环境的计算方法,其特征在于,所述步骤s8包括如下过程:
步骤s81,利用第三方外部程序对所述fpga芯片进行加解密算法烧录,利用所述fpga芯片的可重复编程特性,重复进行烧录以增减加密算法,同时烧录唯一标识和认证报文密钥;步骤s82,第三方外部程序通过可编程输入输出接口、布线资源和可编程逻辑单元的组合逻辑进行密钥的生成与检索;步骤s83,将生成的密钥以类索引表的形式存在于所述fpga芯片内,并返回索引值。8.如权利要求7所述的基于fpga可信执行环境的计算方法,其特征在于,所述步骤s8中,可编程输入输出iob与可编程逻辑单元clb利用布线资源进行对接,利用eda对包含加解密算法、加解密逻辑、密钥生成、认证中心的clbp程序烧录至可编程逻辑单元clb中;可编程逻辑单元clb由两部分组成:寄存器和查找表,时序逻辑返回当前执行结果不与时间状态挂钩,而组合逻辑则返回当前执行结果的同时还会与时间状态挂钩合并返回,基于该特性,只将加解密算法、密钥检索和密钥生成程序烧录至查找表,将数据加密、数据解密和认证中心程序烧录至寄存器。9.如权利要求3所述的基于fpga可信执行环境的计算方法,其特征在于,所述步骤s10中,计算完明文数据并得出结果后,若需要加密输出,则执行如下过程:步骤s10.0,获取该计算结果computeresult的哈希值computeresulthash,并将计算结果computeresult写入到intel sgx的安全区域computeresultlocation;步骤s10.1,隐私可信计算程序ae将哈希值computeresulthash、安全区域computeresultlocation、密钥索引keyindex根据edl传入至访问外部资源程序at中,访问外部资源程序at再利用ffi+动态库形式传入至fpga芯片的可编程输入输出iob的iobp程序,iobp程序得到哈希值computeresulthash、安全区域computeresultlocation、密钥索引keyindex;步骤s10.2,iobp程序根据安全区域computeresultlocation读取计算结果computeresult,获取真实明文数据的哈希值realcomputeresulthash并与传入的computeresulthash进行对比,若对比不一致,则终止该加密数据行为;步骤s10.3,iobp程序将计算结果computeresult等分切分为多份密文数据块computeresultchunk,利用布线资源将各密文数据块computeresultchunk和密钥索引keyindex传入至各clb的clbp程序中;步骤s10.4,clbp程序判断函数行为,指定由寄存器的数据解密执行,并与查找表进行协作,根据密钥索引keyindex获取私钥prikey,进而对密文数据块computeresultchunk进行数据国密sm9非对称加密算法,加密得到密文数据块encryptcomputeresultchunk,并以时间间隔单位反复输出加密状态;步骤s10.5,各clbp程序统一由布线资源返回密文数据块encryptcomputeresultchunk至可编程输入输出iob的iobp程序中,再将密文数据块encryptcomputeresultchunk进行统一合并,iobp程序接收到所有的密文数据块encryptcomputeresultchunk后进行合并,得到加密数据encryptcomputeresult,最终将加密数据encryptcomputeresult输出到本地磁盘位置encryptcomputeresultlocation,iobp程序将本地磁盘位置encryptcomputeresultlocation返回至访问外部资源程序at中。10.一种基于fpga可信执行环境的计算系统,其特征在于,该系统用于实现权利要求1至9任一项所述的计算方法。

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


技术研发人员:王济平 黎刚 汤克云 刘继华 周健雄 高俊杰 梁孟
受保护的技术使用者:京信数据科技有限公司
技术研发日:2022.07.18
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-9058.html

最新回复(0)