专利详情

标题一种面向FPGA的可信执行环境边界拓展方法
[标]当前申请(专利权)人南开大学
申请日2024年5月14日
申请号CN202410595489.5
公开(公告)日2024年8月9日
公开(公告)号CN118468285A
授权日-
法律状态/事件实质审查
专利类型发明申请
发明人杨金妮 | 李时 | 简兆龙 | 卢冶
受理局中国
当前申请人(专利权)地址300110 天津市南开区卫津路94号 (天津,天津,南开区)
IPC分类号G06F21/57 | G06F21/53 | G06F21/76
国民经济行业分类号C3914 | O8121 | C3915 | C3919
代理机构天津睿勤专利代理事务所(普通合伙)
代理人张伟凤
被引用专利数量-
专利价值-

摘要

本发明公开了一种面向FPGA的可信执行环境边界拓展方法,包括以下三部分:1、针对主机端到FPGA设备的控制流与数据流传输,构建系统控制通路与数据通路,包括系统安全启动及身份认证和可信I/O通道构建;2、针对异构可信计算任务的计算模式与安全需求,实行计算及存储资源分级隔离与共享,包括安全边界物理强隔离、应用间内存隔离和进程间内存隔离共享;3、针对常用应用的运行特征进行统计与调查,采用包含应用特征的弹性拓展方案,包括应用计算及访存行为研究与调查、硬件资源及计算模式封装和高频算子库构建。本发明实现控制与计算分离的设计,建立了灵活、高效的异构可信执行环境,解决了处理器可信执行环境与异构计算设备割裂的问题。

1.一种面向FPGA的可信执行环境边界拓展方法,其特征在于,包括:
针对主机端到FPGA设备的控制流与数据流传输,构建系统控制通路与数据通路,包括设备系统安全启动及身份认证和可信I/O通道构建,具体为:系统首先通过安全启动保证安全边界控制器及系统组件的安全启动与执行,同时完成设备系统的身份认证,进行I/O通道密钥共享,最后使用加密密钥对来自主机端的控制流和数据流进行加密,通过安全边界控制器的任务队列进行直接通信,构建主机端到FPGA设备的加密I/O通道,从而实现I/O通道的数据保护;
针对异构可信计算任务的计算模式与安全需求,实行计算及存储资源分级隔离与共享策略,包括安全边界物理强隔离、应用间内存隔离和进程间内存隔离共享,具体为:面向安全与非安全世界的边界,利用FPGA运行时外界不可访问性,保证可信执行环境的安全边界物理强隔离;面向FPGA芯片上运行的不同应用,通过应用内存边界检查,建立以应用为单位的内存隔离,保障应用间内存数据的不可自主访问性,并实现可信执行环境中不同应用的数据隔离,保障应用数据安全;面向需要数据频繁交互的复杂应用,提供进程级内存空间隔离,设计进程间内存隔离机制实现数据隔离并最大程度上降低数据在进程之间的交互开销;通过多级内存隔离机制嵌套组合,建立高效的内存共享模式同时保障应用间数据隔离性,保证数据安全;
针对常用应用的运行特征进行统计与调查,采用包含应用特征的弹性拓展方案,包括应用计算及访存行为研究与调查、硬件资源及计算模式封装和高频算子库构建,具体为:首先针对不同类型应用的计算与访存行为特征进行研究与调查;其次对不同特征的应用提供不同粒度的硬件资源、计算模式的描述与抽象,设计不同细粒度的资源描述接口,针对高计算时间开销和高资源占用的计算行为进行硬件资源抽象整理封装并构建对应的算子;再次同时根据使用场景所需要的不同基础应用,建立应用基础算子库,面向不同基础应用适配,提供灵活、高效的模块化应用接口。
2.根据权利要求1所述的一种面向FPGA的可信执行环境边界拓展方法,其特征在于,通过“信任根”的方式实现安全启动环节,设备的安全启动流程为:硬件完整性检测、硬件启动、软件部分解密、软件代码完整性检测和系统加载。
3.根据权利要求1所述的一种面向FPGA的可信执行环境边界拓展方法,其特征在于,采用AES-256算法对软件和I/O通道进行加密,采用RSA-4096算法对软件进行认证处理。
4.根据权利要求2所述的一种面向FPGA的可信执行环境边界拓展方法,其特征在于,硬件完整性检测及硬件启动具体为:在设备上电开启后,由PMU负责系统需求硬件的检测与唤醒,PMU通过在POR reset后执行PMU ROM预启动,预启动的操作为:首先初始化启动所需的PS SYSMON单元和PLL,然后重置PMU RAM和CSU RAM,完成暂存单元重置后验证PLL锁,若无PLL锁则下一步使用PS SYSMON单元验证LPD、AUX和I/O供应范围同时清除低功耗域和全功率域,如果之前所有启动步骤没有错误产生,则PMU释放CSU重置,硬件完整性检测及唤醒完成,之后PMU进入服务模式,如果硬件启动过程中有错误产生,设备则生成并标记一个booterror,硬件启动失败。
5.根据权利要求2所述的一种面向FPGA的可信执行环境边界拓展方法,其特征在于,在硬件完整性检测及唤醒后对软件进行解密及完成性检测与系统加载,具体为:通过在FPGA设备上配置的预先写入用于解密软件代码的密钥和用于软件认证的密钥的eFuse来对软件进行解密,如果设备可以对软件解密并通过认证,系统部件及应用设计在设备中正常启动及应用;若解密不通过或认证失败,设备则无法正常启动;系统中需要加密认证的部分有FSBL、PMU Firmware、ARM TrustedFirmware、FPGABit File、U-boot、Linux Kernel、UserData,在设备的软件启动过程中按以上顺序进行加载。
6.根据权利要求5所述的一种面向FPGA的可信执行环境边界拓展方法,其特征在于,所述软件加密、认证处理具体为:在使用安全启动时首先生成软件加密与软件认证所需要的密钥并验证密钥可用性;将FSBL、PMU Firmware、ARM TrustedFirmware、FPGABit File、U-boot这些组件认证和加密后利用打包工具生成Boot.bin,Linux Kernel、User Data这些Linux组件利用工具打包生成image.ub,之后利用工具对Boot.bin及Image.ub进行整体认证及加密并生成image.ub.bin;生成的image.ub.bin文件用于安全启动验证。
7.根据权利要求1所述的一种面向FPGA的可信执行环境边界拓展方法,其特征在于,在FPGA设备经过安全启动后,生成应用于I/O通信的加密密钥,预先给主机及安全边界控制分发对应的私钥及公钥,主机端和安全边界控制器在互传数据流及控制流时,首先通过公钥对所传输的数据进行加密,在加密完成后,将密文数据进行传输,实现控制及数据保护的目的,密文数据到达目的端后,目的端通过分发的私钥对密文数据解密后,进行相应的操作;系统通过安全边界控制器映射实现跨不同内存空间的地址路由和翻译,从而形成可信I/O通道。
8.根据权利要求1所述的一种面向FPGA的可信执行环境边界拓展方法,其特征在于,所述安全边界物理强隔离具体为:建立以PCIe为中心的物理隔离机制,安全边界控制器通过PCIe的通信物理隔离机制及FPGA设备运行时的强物理隔离特性,同时设定FPGA设备运行时的物理入侵检测,设置在设备运行启动后检测PS JTAG接口引脚上的活动,开启检测报警,若设备在运行时检测到报警信息则设备进入锁定状态,应用停止运行保证数据安全性。
9.根据权利要求1所述的一种面向FPGA的可信执行环境边界拓展方法,其特征在于,所述应用间内存隔离具体为:根据应用的统一任务化描述,以单应用为执行的基本隔离单元,在系统应用运行前,首先预先为每个应用分配可用的内存大小及地址空间,每个应用只能使用预先访问的内存地址空间,应用在访问内存时首先向内存边界检查器发出请求,请求包含应用取存内存的目的地址,内存边界检查器根据预先分配的应用所能应用的内存地址空间进行访问合规性检查,若应用访问地址符合预先分配地址,内存边界检查器对目标地址进行对应的操作,并返回给应用对应地址空间中的数值,若应用请求访问地址超出预定范围,则内存边界检查器返回错误消息,以此控制应用的内存访问权限,实现不同应用间的隔离执行。
10.根据权利要求1所述的一种面向FPGA的可信执行环境边界拓展方法,其特征在于,所述进程间内存共享具体为:针对应用的不同组件间的内存共享行为,以应用组件为单位对其可用的内存地址空间,在应用所分配的内存地址空间内进行二次划分;划分应用组件可用内存地址空间时空置出一定内存区域作为应用内部共享内存,实现在隔离运行的应用内部进程之间内存数据的交互,降低隔离进程之间的内存共享开销,提升进程之间数据交互效率。

技术领域
[0001]本发明属于计算机信息安全技术领域,具体涉及一种面向FPGA的可信执行环境边界拓展方法。
背景技术
[0002]随着异构计算技术的发展及应用,FPGA加速芯片具有较高的计算性能及低功耗特性。因为FPGA加速芯片的高性能及低功耗特性,目前FPGA加速芯片已经被广泛应用于众多领域,FPGA加速芯片的应用为应用领域带来了显著计算性能提升。
[0003]然而,面对安全敏感的医疗数据处理、金融行业应用等新兴应用,异构计算缺乏有效可信计算技术支持,限制可信环境技术为异构计算技术提供更强的、更底层的系统及数据安全能力。
[0004]在传统计算任务中主要依靠CPU完成,因此传统基于软硬件隔离机制构建在CPU中的可信执行环境(CPU-TEE)可以为用户应用程序提供可信的计算环境。但是基于CPU构建的可信执行环境方案无法直接在异构芯片构建及应用,阻碍了异构计算从可信执行环境提供的硬件级强安全保证中受益。因此亟需对面向基于通用加速芯片(FPGA)的异构计算场景进行异构可信执行环境构建研究。FPGA的TEE边界拓展方法,根据异构计算的计算模式及其特殊的安全模型,设计并构建适用于FPGA为主要设备的异构计算场景中的可信执行环境,此可信执行环境灵活高效,具有较高的安全性同时可信执行环境构建时无对硬件设施修改因此具有较高的适配性。
[0005]可信执行环境的构建是通过软硬件方法在中央处理器中构建一个安全区域,保证其内部运行的程序和加载的数据在机密性和完整性上得到保护。支持可信执行环境的中央处理器一般是指可信执行控制单元已被预置集成的CPU计算芯片无法后置。因此,只有部分中央处理器芯片支持可信执行环境,目前主流CPU的TEE技术以X86指令集架构的InterSGX、TDX和ARM的TrustZone为代表。可信执行环境技术目前被广泛用于机密数据和核心程序的保护如智能手机中的支付验证数据和代码保护,可信执行环境技术可以从硬件级别提供安全保障。
发明内容
[0006]本发明针对现有技术的不足,提供一种面向FPGA的可信执行环境边界拓展方法。
[0007]本发明通过以下技术方案实现:
[0008]一种面向FPGA的可信执行环境边界拓展方法,包括:
[0009]针对主机端到FPGA设备的控制流与数据流传输,构建系统控制通路与数据通路,包括设备系统安全启动及身份认证和可信I/O通道构建,具体为:系统首先通过安全启动保证安全边界控制器及系统组件的安全启动与执行,同时完成设备系统的身份认证,进行I/O通道密钥共享,最后使用加密密钥对来自主机端的控制流和数据流进行加密,通过安全边界控制器的任务队列进行直接通信,构建主机端到FPGA设备的加密I/O通道,从而实现I/O通道的数据保护;
[0010]针对异构可信计算任务的计算模式与安全需求,实行计算及存储资源分级隔离与共享策略,包括安全边界物理强隔离、应用间内存隔离和进程间内存隔离共享,具体为:面向安全与非安全世界的边界,利用FPGA运行时外界不可访问性,保证可信执行环境的安全边界物理强隔离;面向FPGA芯片上运行的不同应用,通过应用内存边界检查,建立以应用为单位的内存隔离,保障应用间内存数据的不可自主访问性,并实现可信执行环境中不同应用的数据隔离,保障应用数据安全;面向需要数据频繁交互的复杂应用,提供进程级内存空间隔离,设计进程间内存隔离机制实现数据隔离并最大程度上降低数据在进程之间的交互开销;通过多级内存隔离机制嵌套组合,建立高效的内存共享模式同时保障应用间数据隔离性,保证数据安全;
[0011]针对常用应用的运行特征进行统计与调查,采用包含应用特征的弹性拓展方案,包括应用计算及访存行为研究与调查、硬件资源及计算模式封装和高频算子库构建,具体为:首先针对不同类型应用的计算与访存行为特征进行研究与调查;其次对不同特征的应用提供不同粒度的硬件资源、计算模式的描述与抽象,设计不同细粒度的资源描述接口,针对高计算时间开销和高资源占用的计算行为进行硬件资源抽象整理封装并构建对应的算子;再次同时根据使用场景所需要的不同基础应用,建立应用基础算子库,面向不同基础应用适配,提供灵活、高效的模块化应用接口。
[0012]进一步,通过“信任根”的方式实现安全启动环节,设备的安全启动流程为:硬件完整性检测、硬件启动、软件部分解密、软件代码完整性检测和系统加载。
[0013]进一步,采用AES-256算法对软件和I/O通道进行加密,采用RSA-4096算法对软件进行认证处理。
[0014]进一步,硬件完整性检测及硬件启动具体为:在设备上电开启后,由PMU负责系统需求硬件的检测与唤醒,PMU通过在POR reset后执行PMU ROM预启动,预启动的操作为:首先初始化启动所需的PS SYSMON单元和PLL,然后重置PMU RAM和CSU RAM,完成暂存单元重置后验证PLL锁,若无PLL锁则下一步使用PS SYSMON单元验证LPD、AUX和I/O供应范围同时清除低功耗域和全功率域,如果之前所有启动步骤没有错误产生,则PMU释放CSU重置,硬件完整性检测及唤醒完成,之后PMU进入服务模式,如果硬件启动过程中有错误产生,设备则生成并标记一个boot error,硬件启动失败。
[0015]进一步,在硬件完整性检测及唤醒后对软件进行解密及完成性检测与系统加载,具体为:通过在FPGA设备上配置的预先写入用于解密软件代码的密钥和用于软件认证的密钥的eFuse来对软件进行解密,如果设备可以对软件解密并通过认证,系统部件及应用设计在设备中正常启动及应用;若解密不通过或认证失败,设备则无法正常启动;系统中需要加密认证的部分有FSBL、PMU Firmware、ARM TrustedFirmware、FPGABit File、U-boot、LinuxKernel、User Data,在设备的软件启动过程中按以上顺序进行加载。
[0016]进一步,所述软件加密、认证处理具体为:在使用安全启动时首先生成软件加密与软件认证所需要的密钥并验证密钥可用性;将FSBL、PMU Firmware、ARM TrustedFirmware、FPGABit File、U-boot这些组件认证和加密后利用打包工具生成Boot.bin,Linux Kernel、User Data这些Linux组件利用工具打包生成image.ub,之后利用工具对Boot.bin及Image.ub进行整体认证及加密并生成image.ub.bin;生成的image.ub.bin文件用于安全启动验证。
[0017]进一步,在FPGA设备经过安全启动后,生成应用于I/O通信的加密密钥,预先给主机及安全边界控制分发对应的私钥及公钥,主机端和安全边界控制器在互传数据流及控制流时,首先通过公钥对所传输的数据进行加密,在加密完成后,将密文数据进行传输,实现控制及数据保护的目的,密文数据到达目的端后,目的端通过分发的私钥对密文数据解密后,进行相应的操作;系统通过安全边界控制器映射实现跨不同内存空间的地址路由和翻译,从而形成可信I/O通道。
[0018]进一步,所述安全边界物理强隔离具体为:建立以PCIe为中心的物理隔离机制,安全边界控制器通过PCIe的通信物理隔离机制及FPGA设备运行时的强物理隔离特性,同时设定FPGA设备运行时的物理入侵检测,设置在设备运行启动后检测PS JTAG接口引脚上的活动,开启检测报警,若设备在运行时检测到报警信息则设备进入锁定状态,应用停止运行保证数据安全性。
[0019]进一步,所述应用间内存隔离具体为:根据应用的统一任务化描述,以单应用为执行的基本隔离单元,在系统应用运行前,首先预先为每个应用分配可用的内存大小及地址空间,每个应用只能使用预先访问的内存地址空间,应用在访问内存时首先向内存边界检查器发出请求,请求包含应用取存内存的目的地址,内存边界检查器根据预先分配的应用所能应用的内存地址空间进行访问合规性检查,若应用访问地址符合预先分配地址,内存边界检查器对目标地址进行对应的操作,并返回给应用对应地址空间中的数值,若应用请求访问地址超出预定范围,则内存边界检查器返回错误消息,以此控制应用的内存访问权限,实现不同应用间的隔离执行。
[0020]进一步,所述进程间内存共享具体为:针对应用的不同组件间的内存共享行为,以应用组件为单位对其可用的内存地址空间,在应用所分配的内存地址空间内进行二次划分;划分应用组件可用内存地址空间时空置出一定内存区域作为应用内部共享内存,实现在隔离运行的应用内部进程之间内存数据的交互,降低隔离进程之间的内存共享开销,提升进程之间数据交互效率。
[0021]相对于现有技术,本发明具有的有益效果为:
[0022]1、本发明提供的一种面向FPGA的可信执行环境边界拓展方法,实现控制与计算分离的设计,从而建立一个灵活、高效的异构可信执行环境,解决处理器可信执行环境(CPU-TEE)与异构计算设备(FPGA设备)割裂的问题。此方法可以在FPGA设备上构建隔离应用执行环境,为在运行在FPGA设备上的应用提供硬件级安全保障,提升异构计算运行时数据安全保障能力。
[0023]2、本发明提供的一种面向FPGA的可信执行环境边界拓展方法,实现安全控制与计算分离,建立一个灵活、高效的异构可信执行环境,解决处理器可信执行环境与FPGA设备割裂的问题。构建面向于FPGA异构计算设备的可信执行环境对于提高异构计算安全性和发挥异构计算面对安全敏感应用的计算潜力具有重要意义。面向FPGA的可信执行环境边界拓展方案能够将异构设备纳入异构可信执行环境,无需修改芯片硬件架构,具有良好的可扩展性。面对现有广泛应用异构计算设备时,这种特性使得其可以便捷地进行大规模部署及应用。
附图说明
[0024]为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引申获得其它的实施附图。
[0025]图1为本发明分级隔离原理图;
[0026]图2为本发明应用间内存隔离示意图。
具体实施方式
[0027]下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0028]本发明公开了一种面向FPGA的可信执行环境边界拓展方法,包括系统控制通路与数据通路构建方案、计算及存储资源分级隔离与共享方案和包含应用特征的弹性拓展方案三部分。具体为:
[0029]1.系统控制通路与数据通路构建方案
[0030]针对主机端到FPGA设备的制流与数据流传输,提出一套系统控制通路与数据通路构建方案,由系统安全启动、设备身份认证和可信I/O通道构建组成。
[0031]系统首先通过安全启动及密码学验证保证安全边界控制器的安全启动与执行,然后完成主机端与安全边界控制器的身份认证,进行密钥共享,最后使用加密密钥对来自主机端的控制流和数据流进行加密,通过安全边界控制器的任务队列进行直接通信,构建主机端到FPGA设备的加密I/O通道,从而实现I/O通道的数据保护。
[0032]1.1设备安全启动及身份认证
[0033]方案设计通过“信任根”的方式实现安全启动环节,“信任根”(Root ofTrust)即信任从要从根部开始,要保证某一个启动的步骤是安全可靠的,必须前面所有的步骤都是安全可靠的。设备的安全启动流程为:硬件完整性检测、硬件启动、软件部分解密、软件代码完整性检测和系统加载。
[0034]硬件完整性检测及硬件启动:在设备上电开启后,首先由平台管理模块负责(Platform management unit,缩写为PMU)系统需求硬件的检测与唤醒。PMU通过在PORreset后执行PMU ROM预启动,预启动的操作有:首先初始化启动所需的PS SYSMON单元和PLL,然后重置PMU RAM和CSU RAM,完成暂存单元重置后验证PLL锁,若无PLL锁则下一步使用PS SYSMON单元验证LPD、AUX和I/O供应范围同时清除低功耗域和全功率域,如果之前所有启动步骤没有错误产生,则PMU释放CSU重置,硬件完整性检测及唤醒完成,之后PMU进入服务模式。如果硬件启动过程中有错误产生,设备则生成并标记一个boot error,硬件启动失败。
[0035]在硬件完整性检测及唤醒后开始软件部分解密及完成性检测与加载。为保证软件系统的机密性及完整性,考虑使用AES-256对软件部分进行加密处理,为防止软件代码数据遭恶意修改考虑使用RSA-4096对软件部分进行认证。软件部分的解密及认证部分调用硬件加速模块,因此解密及认证过程对整个启动所产生的时间开销较小。设备的密钥存储与设备上所配置的eFuse(Electronic Fuse,电子保险丝)为熔丝性的一种器件,属于一次性可编程存储器。在设备使用前对设备的eFuse中写入用于解密软件代码的AES密钥和用于软件认证的RSA密钥。在一个系统中需要保护的部分有FSBL、PMU Firmware、ARMTrustedFirmware、FPGABit File、U-boot、Linux Kernel、User Data这几个部分,在设备的软件启动过程中也按以上顺序进行加载的。
[0036]每一个系统软件部分组件都可以选择:同时做认证和加密、只做认证、只做加密、加密及认证都不做。加密和认证是两个独立的操作。加密是为了保障软件部分不被破解,而认证是为了保障软件部分的完整性及未篡改,防止恶意代码的插入造成安全风险。为保证系统的较高的安全性,选择对每个组件都进行加密及认证操作,由于MPSoC中有硬件加速的RSA认证模块,认证对启动时间的影响比较低,可以忽略解密及认证过程对系统启动时间开销。
[0037]在使用安全启动时首先生成所需要的密钥:RSAPrivate Key和Public KeyAESKey,验证密钥可用性,利用AES密钥加密软件代码,用RSA密钥对软件部分进行认证。将FSBL、PMU Firmware、ARM TrustedFirmware、FPGABit File、U-boot将这些组件认证和加密后利用打包工具生成Boot.bin,Linux Kernel、User Data这些Linux组件利用工具打包生成image.ub,之后利用工具对Boot.bin及Image.ub进行整体认证及加密并生成image.ub.bin。考虑系统的便捷性使用SD卡方式启动将生成的image.ub.bin文件存入SD卡中供启动使用。之后对设备进行密钥写入工作。从JTAG模式启动FPGA设备,运行一个Standalone程序将RSAPPK Hash和AES Key(red orblack)写入FPGA芯片中的eFuse中,并启动设备启动验证功能。在密钥写入设备所包含的eFuse后启动设备开启验证功能,将包含有对应的启动镜像的SD卡插入设备中,将设备调整至SD卡启动,如果设备可以解密镜像及通过认证验证,镜像中所包含的系统部件及应用设计可以在设备中正常启动及应用。若镜像解密不通过或认证失败即软件部分发生篡改,设备则无法正常启动。
[0038]在设备安全启动过程中,设备通过对软件镜像中内嵌的预先分发的RSAPrivateKey读取解析,从而实现软件系统的身份认证。
[0039]1.2可信I/O通道构建
[0040]在FPGA设备经过安全启动后,生成应用于I/O通信的AES密钥,预先给主机及安全边界控制分发对应的私钥及公钥,主机端和安全边界控制器在互传数据流及控制流时,首先通过AES公钥对所传输的数据进行加密,在加密完成后,将密文数据进行传输,实现控制及数据保护的目的,密文数据到达目的端后,目的端通过分发的私钥对密文数据解密后,进行相应的操作如寻址、数据传输等。系统通过安全边界控制器映射实现跨不同内存空间的地址路由和翻译,从而形成可信I/O通道。
[0041]2.计算及存储资源分级隔离与共享方案
[0042]针对异构可信计算任务的计算模式与安全需求,提出一套计算及存储资源分级隔离与共享策略,由安全边界物理强隔离、应用间内存隔离和进程间内存隔离共享组成。
[0043]如图1、图2所示,面向安全与非安全世界的边界,利用FPGA运行时外界不可访问性,保证可信执行环境的安全边界物理强隔离;面向FPGA芯片上运行的不同应用,通过应用内存边界检查,建立以应用为单位的内存隔离,保障应用间内存数据的不可自主访问性,并实现可信执行环境中不同应用的数据隔离,保障应用数据安全;面向需要数据频繁交互的复杂应用,提供进程级内存空间隔离,设计进程间内存隔离机制实现数据隔离并最大程度上降低数据在进程之间的交互开销。通过多级内存隔离机制嵌套组合,建立高效的内存共享模式同时保障应用间数据隔离性,保证数据安全。
[0044]2.1安全边界物理强隔离
[0045]建立以PCIe为中心的物理隔离机制,安全边界控制器通过PCIe的通信物理隔离机制及FPGA设备运行时的强物理隔离特性,同时设定FPGA设备运行时的物理入侵检测,设置在设备运行启动后检测PS JTAG接口引脚上的活动,开启检测报警,若设备在运行时检测到报警信息则设备进入锁定状态,应用停止运行保证数据安全性。系统利用PCIE的物理隔离机制结合FPGA设备在运行时的强物理隔离特性及物理入侵监测功能,实现安全世界与非安全世界的强隔离。
[0046]2.2应用间内存隔离
[0047]根据应用的统一任务化描述,以单应用为执行的基本隔离单元,在系统应用运行前,首先预先为每个应用分配可用的内存大小及地址空间,每个应用只能使用预先访问的内存地址空间,应用在访问内存时首先向内存边界检查器发出请求,请求包含应用取存内存的目的地址,内存边界检查器根据预先分配的应用所能应用的内存地址空间进行访问合规性检查,若应用访问地址符合预先分配地址,内存边界检查器对目标地址进行对应的操作,并返回给应用对应地址空间中的数值,若应用请求访问地址超出预定范围,则内存边界检查器返回错误消息,以此控制应用的内存访问权限,实现不同应用间的隔离执行。
[0048]2.3进程间内存共享
[0049]针对应用的不同组件间的内存共享行为,以应用组件(进程)为单位对其可用的内存地址空间,在应用所分配的内存地址空间内进行二次划分。划分应用组件可用内存地址空间时空置出一定内存区域作为应用内部共享内存,实现在隔离运行的应用内部进程之间内存数据的交互,降低隔离进程之间的内存共享开销,提升进程之间数据交互效率。通过实现应用间内存数据强隔离及进程间内存数据软隔离的嵌套来提供灵活的内存隔离、交互模式。
[0050]3.包含应用特征的弹性拓展方案
[0051]针对常用应用的运行特征进行统计与调查,提出一套包含应用特征的弹性拓展方案,由应用计算及访存行为研究与调查、硬件资源及计算模式封装和高频算子库构建组成。
[0052]设计构建的异构计算可信执行环境是以控制与计算分离的安全模型进行设计,异构计算设备能够保持原有的计算模式。首先针对不同类型应用的计算与访存行为特征进行研究与调查;其次对不同特征的应用提供不同粒度的硬件资源、计算模式的描述与抽象,设计不同细粒度的资源描述接口,针对高计算时间开销和高资源占用的计算行为进行硬件资源抽象整理封装并构建对应的算子;再次同时根据使用场景所需要的不同基础应用,建立应用基础算子库,面向不同基础应用适配,提供灵活、高效的模块化应用接口。
[0053]3.1应用计算及访存行为研究与调查
[0054]应用计算行为研究与调查:首先需要收集应用在系统运行时的数据,如CPU使用率、内存占用情况、I/O操作频率。通过以上类型的数据分析出该应用在执行过程中的运行特征,根据收集到不同应用的运行特征数据,可以将应用分类为不同的类型。例如:内存密集型、计算密集型。然后通过详细的性能分析,识别造成应用运行中的性能瓶颈的原因,如内存大小分配不足或CPU时间分片不合理等。
[0055]应用访存行为研究与调查:应用程序在运行过程中对内存的访问行为进行详细的观察和研究。收集的数据包括内存访问的频率、访问的类型,以及数据的局部性特性。针对以上数据的分析识别应用内存访问的热点区域,了解应用数据访问的模式,并评估数据局部性。进一步优化内存管理策略和缓存利用效率,如调整预取策略、优化页面调度算法和改善缓存替换策略,针对性的调整提高内存使用效率和应用性能。
[0056]3.2硬件资源及计算模式封装
[0057]针对不同计算设备硬件资源,结合所设计的计算资源及存储资源隔离机制,设计结构化资源描述方法:对设备的算力资源与存储资源进行细粒度划分,并根据应用的运行需求及安全需求提供不同粒度的硬件资源,如不同大小的内存块,明文、密文存储区域,所能利用到的计算资源等,为应用部署运行提供灵活的资源需求接口。
[0058]3.3适配特征的算子及基础算子库构建
[0059]面向设备高频使用的异构计算应用进行计算、访存行为分析,对设备硬件资源和计算模式进行抽象总结及封装,构建成相关算子,并建立模块化的高性能基础应用算子库,如面向可信应用的加解密算子。