# **基于白盒密码技术的CFN安全存算解决方案** ## **概述** CFN通过算力资源与网络资源状态的协同调度,将不同应用的业务通过最优路径调度到最优的计算节点,为用户提供低时延、高可靠的算力连接,让用户享受更优质的算网服务。 由于CFN会接入第三方算力、个人终端算力等多种形式的算力节点,这些节点来自不同所有方、放置在不同物理环境、采用不同架构,安全级别有较大差异。算力运营者对这些算力资源不具备掌控能力,在这些算力节点中,攻击者有可能使用各种手段窃取用户敏感数据,例如可以使用内存分析工具来识别并提取出内存中的敏感数据,如用户名、密码、密钥等;或者通过Hooking技术在应用程序运行时插入自己的代码,捕获和查看内存中的敏感数据。运行于这些算力节点的用户数据难以保证其机密性和完整性,如何在CFN第三方计算节点中为用户提供安全的加密手段是CFN面临的一个难题。 在此背景下,本论文对CFN第三方计算节点中如何为用户提供安全的加密手段进行研究,分析传统密码技术、机密计算以及白盒密码等技术的优劣势,并基于对比分析,提出基于白盒密码技术的CFN安全存算解决方案。 ## **当前加密技术在CFN计算节点应用的分析比较** 为解决上文提出的问题,应在CFN计算节点中对数据加以保护,对运行和存储在CFN计算节点的数据进行加密仍是保护数据、防止数据泄露的最重要的手段。而加密技术除了传统密码技术,近年来出现了机密计算、白盒密码等新兴密码技术,并且成为备受关注的技术领域。下面对传统密码技术、机密计算以及白盒密码等技术在CFN计算节点的应用进行比较分析。 ### **传统密码技术** 在本文中,传统密码技术是指通过硬件或软件实现序列密码算法、椭圆曲线密码算法、分组密码算法等各类密码算法的技术。在网络空间安全防护中,传统密码技术发挥着重要的基础支撑作用,通过保障网络空间实体身份的真实性,信息的保密性、完整性及行为的可信赖,切实保障信息系统和数据资产安全。 传统密码技术有一个著名的“科克霍夫原则”:系统攻击者即使知道密码系统中应用的密码算法,也对推导出受保护的明文或者密钥没有帮助。也就是说,系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥。这就意味着,算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使系统攻击者知道算法也没有关系,只要攻击者获取不到正在使用的密钥,他就不可能查看到所发送信息的明文。 传统密码算法的实现主要有硬件和软件两种实现方式。 (1)硬件方式 硬件方式是指使用专门设计的加密芯片或硬件模块实现密码算法,密钥等敏感信息通常经保护后存储在硬件中。硬件加密具备严格的安全措施和物理防护机制,难以被破解和攻击,能提供较高的安全性保护。硬件实现密码算法需要专门的硬件设备和芯片支持,因此成本通常较高、通用性较差。而对于CFN计算节点来说,硬件加密的成本、升级和维护方面更是存在较大挑战。 (2)软件方式 软件方式是指在计算机的软件开发环境中编写和运行特定的程序实现密码算法的方式。软件方式实现密码算法具有较高的灵活性和可扩展性,但在软件加解密过程中,密钥将会出现在设备的内存中,由于不能确保密码算法软件运行环境的安全可信,尤其在运营者无法掌控的CFN计算节点,攻击者可能使用静态分析工具调试器直接读取内存中的数据等方式来识别并提取出内存中的密钥。而传统密码技术中数据的保密性完全依赖密钥的安全性,密钥如果泄露则无法再保障数据的安全性。 由以上分析,我们可以看到,在CFN计算节点使用传统密码技术为用户提供安全的加密手段,无论是通过硬件方式还是软件方式解决密钥的内存泄露问题,均存在较大的挑战。 ### **机密计算** 机密计算是近年来新兴出现的一种对数据在使用中进行保护的安全技术。与传统密码技术或通过软件或硬件实现加密算法不同,机密计算是通过结合固件和软件构建加密、隔离、可证明的安全计算环境,通过隔离机制,未经授权的任何用户均无法访问和篡改该隔离区内执行的程序和数据,并通过加密机制保证在内存中计算时处于加密形态,防止特权软件甚至硬件的窥探。为确保计算结果正确可信,可通过远程证明机制对机密计算环境中的应用程序进行验证。 机密计算通过隔离机制将通用计算环境与机密计算环境隔离开来,再结合密码技术对数据进行保护,具有较高的安全性。但机密计算技术依赖于支持隔离机制的CPU等硬件,如节点拥有机密计算环境,运营者则可通过远程证明对机密计算环境进行验证,切实保障存储和运行在CFN计算节点的数据安全;但更普遍的情况是,CFN计算节点只是普通的硬件设备,无法应用机密计算技术,如要支持使用机密计算技术则需要对硬件进行替换,这将带来较高的成本代价,而当前机密计算技术仍不是很成熟,也将增加改造周期时长。 因此,在CFN计算节点使用机密计算技术为用户提供安全的加密手段,也存在较大挑战。 ### **白盒密码** 白盒密码技术是一种能够有效抵抗白盒攻击的密码技术,即假设攻击者拥有对计算环境的权限,可观察内存中数据的情况下,在内存中对数据进行加解密操作时仍能确保密码密钥的安全。白盒加密技术需要抵抗白盒攻击,核心思想是把密钥隐藏起来, 加解密执行过程中内存中不会出现密钥。 具体而言,白盒密码是对已有标准密码算法的白盒实现,将已知的密码算法通过白盒密码技术进行设计,使得在白盒攻击环境下,不改变原算法的功能,但原算法所希望保证的安全性不受破坏。白盒密码与标准密码算法计算的结果是相同的,二者的不同是在于实现过程。传统的加密算法中算法和密钥是完全独立的,但白盒加密将算法和密钥紧密捆绑在了一起,由算法和密钥生成一个加密表和一个解密表,然后可以独立用查找加密表来加密,用解密表解密,不再依赖于原来的加解密算法和密钥。正是由于算法和密钥的合并,所有可以有效隐藏密钥,与此同时也混淆了加密逻辑。密码算法白盒化如图1所示。 ![图1 密码算法白盒化](1.png) 可以说,白盒密码算法不是新的算法,而是力求对现有密码算法在安全性上进行叠加,克服密码算法在普通软件实现方式中的弱点,确保其在白盒攻击环境下的安全性。 目前常见的密码算法的白盒密码算法主要通过混淆技术、密钥隐藏技术,以及密钥攻击容忍技术实现。 (1)混淆技术 混淆是近年来的一个研究热点,是软件安全的重要保护技术,可对程序进行转换,确保程序在未知环境下正常运行,防止静态分析和篡改等恶意攻击。通过密钥与算法的混淆,使得交给用户的密码功能是有限的,用户无法获取其他密码功能。把一个混淆的密码功能移交给用户的时候,所有的原理、系统结构和密钥都可以对用户公开。 (2)密钥隐藏技术 密钥隐藏技术是白盒密码的另一个重要思路,其方法是将需要保护的密钥隐藏到复杂的代码中,隐藏在系统中。直接的密钥隐藏技术一般采用密钥拆分技术,通过改变算法流程,将用户的密钥拆分成多个无关的子密钥,隐藏到系统的不同地方。需要密码执行的时候通过调用看似无关的密码函数计算出需要的密码计算结果。 (3)密钥攻击容忍 密钥攻击容忍是指当密钥隐藏技术被敌人破解的时候,也能保证即使敌手获得了部分密钥,密码系统仍旧是安全的。密钥攻击容忍是在密钥保护,密钥检测和自毁的基础上对密钥安全的进一步延伸,通过将密钥拆分成多个无关的子密钥,并保证即使敌手获得部分子密钥也不影响原密钥的安全。 白盒密码以保护密钥为主要目标,具有传统密码技术所没有的优势:它能够使得密码算法的程序在不可信任的设备中安全地运行,抵抗白盒攻击者的攻击,最大限度地保护机密信息。白盒密码技术的这个特性使得在CFN计算节点为数据进行安全加解密成为可能。 ## **基于白盒密码技术的CFN安全存算解决方案** ### **系统架构设计** 面向算力网络的白盒密码应用系统架构的设计思想是,通过管理平台为算力用户编排提供算力服务的算力节点,当编排CFN计算节点提供服务时,在CFN计算节点安装白盒加解密模块,使得CFN计算节点能够为算力业务应用提供安全的数据加解密服务。系统架构如图2所示,包含管理平台、CFN计算节点、以及算力用户。本方案重点在于白盒密码技术的应用,设计管理平台是对算力用户和算力节点白盒应用做对应的管理,实际部署应用时可以和现有的密钥管理平台进行融合。 ![图2 系统架构](2.png) #### **管理平台** 管理平台主要有两个功能模块:业务管理功能和密钥管理功能。 (1)业务管理功能 业务管理负责算力注册相关工作,获取算力节点标识,向算力节点下发白盒加解密模块;处理算力用户的业务需求,根据算力用户计算任务的安全需求选择相应级别的算力节点为算力用户服务。对于有数据安全保护需求的计算任务,业务管理功能可为算力用户编排已安装了白盒加解密模块的算力节点为其提供服务。 (2)密钥管理功能 密钥管理功能实现密钥的生成,该密钥将作为生成白盒密钥的输入;当算力用户发送至算力节点的数据有加密保护需求时,密钥管理功能可通过安全通道将数据加密密钥发送至算力用户,供算力用户对数据进行加密保护;负责白盒密钥生成及下发:运用白盒密码技术对密钥进行混淆和分散处理,生成白盒密钥,并将白盒密钥下发至对应的CFN计算节点白盒加解密模块。 #### **CFN计算节点** CFN计算节点可为用户提供算力服务,并可根据业务需要,从管理平台获取并安装白盒加解密模块。CFN计算节点的主要功能模块有白盒加解密模块和算力业务应用。 (1)白盒加解密模块 白盒加解密模块的主要功能是支持向管理平台申请白盒密钥,并接收管理平台下发的白盒密钥,使用白盒密码算法对存储于算力节点的算力用户的加密数据进行解密,解密后的数据由算力节点完成计算后,再由白盒加解密模块使用白盒密钥和白盒加密算法完成加密后,安全存储于算力节点。 运用白盒密码技术可确保密钥明文不在内存中出现,确保密钥在算力节点中的安全使用。 (2)算力业务应用 算力业务应用由算力用户提供,用于在算力节点执行算力用户的计算任务。算力业务应用可调用白盒加解密模块提供的数据加解密接口,对于存储在算力节点上的加密数据,在执行计算任务需要使用数据时,使用解密接口解密数据,完成计算任务后,再调用加密接口加密数据,安全存储。 #### **算力用户** 算力用户向管理平台提交业务需求,其中包含安全需求;接收管理平台下发的算力节点信息,将算力业务应用及数据部署至算力节点,执行计算任务;算力用户可按需安装加解密组件,向管理平台申请数据加密密钥,对敏感数据进行加密保护后再发送至算力节点。 ### **系统工作流程** 系统工作流程如图3所示。 ![图3 系统工作流程](3.png) (1)算力节点向管理平台注册 算力节点在管理平台上需要按照要求提供相关注册信息,其中包含设备标识信息;管理平台对算力节点完成算力资源、存储资源、安全配置的扫描,对算力节点进行评估,确认算力节点符合提供算力服务的基本条件。管理平台对算力节点的设备标识信息计算摘要值,写入白盒加解密模块程序;向算力节点下发白盒加解密模块。算力节点安装白盒加解密模块,模块获取本地标识计算摘要值,并与程序中摘要值比对,一致则可成功安装。 (2)算力业务请求处理及白盒密钥下发 算网用户将业务需求时提交至管理平台,管理平台根据业务需求进行算力编排,其中,对安全需求进行分析后,编排支持安全计算的算力节点(即已安装 白盒加解密模块的算力节点)执行该计算任务。并且,管理平台为算力用户生成数据保护密钥,使用算力节点设备标识信息、初始化向量、以及数据保护密钥进行混淆和分散处理,构建白盒密钥,通过安全通道将白盒密钥下发至白盒加解密模块,白盒加解密模块存储白盒密钥。 如果算力用户有敏感数据加密需求,则管理平台与算力用户建立安全通道,管理平台通过安全通道将数据加密密钥下发至算力用户,算力用户使用数据加密密钥加密敏感数据。算力用户将算力业务应用及加密数据发送至算力节点,算力节点部署算力业务应用,并存储已加密的数据。 (3)应用白盒密码进行数据加解密 当部署在算力节点的算力业务应用执行计算任务需要使用数据时,向白盒加解密模块发送数据解密请求,也即调用白盒加解密模块解密接口。白盒加解密模块传入待加密数据,使用白盒密钥表进行查表操作,得到解密的明文数据,并将明文数据返回至算力业务应用。 算力业务应用使用明文完成计算以及业务处理。当数据处理完毕需要落盘存储时,算力业务应用向白盒加解密模块发送数据加密请求,也即调用白盒加解密模块加密接口,白盒加解密模块传入待解密数据,使用白盒密钥表进行查表操作,得到加密的密文数据,将密文数据返回至算力业务应用,算力业务应用完成密文数据落盘存储。 ## **总结** 随着新一轮科技革命和产业变革的深入发展,算力已经成为全社会数智化转型的基石,CFN可为用户提供低时延、高可靠的算力连接,让用户享受更优质的算网服务。而CFN中第三方计算节点由于不受运营者掌控,容易被攻击者使用各种手段窃取用户敏感数据,如使用内存分析工具来识别并提取出内存中的密钥等敏感数据。针对这一问题,对CFN第三方计算节点中如何为用户提供安全的加密手段进行研究,分析传统密码技术、机密计算以及白盒密码等技术在CFN计算节点应用的优劣势,并提出了面向算力网络CFN计算节点的白盒加密技术应用方案。当然,对白盒加密技术的应用仍需要继续研究和完善,在后续工作中,可针对白盒密码应用的运行效率优化做进一步的研究,以提升性能。