CN117349870B - 基于异构计算的透明加解密计算系统、方法、设备和介质 - Google Patents

基于异构计算的透明加解密计算系统、方法、设备和介质 Download PDF

Info

Publication number
CN117349870B
CN117349870B CN202311656901.1A CN202311656901A CN117349870B CN 117349870 B CN117349870 B CN 117349870B CN 202311656901 A CN202311656901 A CN 202311656901A CN 117349870 B CN117349870 B CN 117349870B
Authority
CN
China
Prior art keywords
data
file system
transparent
memory
decryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311656901.1A
Other languages
English (en)
Other versions
CN117349870A (zh
Inventor
孙忠祥
张闯
刘科
任智新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311656901.1A priority Critical patent/CN117349870B/zh
Publication of CN117349870A publication Critical patent/CN117349870A/zh
Application granted granted Critical
Publication of CN117349870B publication Critical patent/CN117349870B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供了基于异构计算的透明加解密计算系统、方法、设备和介质,应用于透明解加密的技术领域,该透明加解密计算系统包括:操作系统和异构计算单元,操作系统包括部署在内核层的透明文件系统和中间件以及部署在用户层的异构计算程序;透明文件系统用于将数据操作请求对应的第一数据发送给中间件;中间件设置有内存单元;中间件用于将第一数据存储在内存单元中并将第一数据在内存单元中的内存地址发送至异构计算程序;异构计算程序用于根据内存地址将内存单元中的第一数据写入异构计算单元,并由异构计算单元进行加解密处理得到第二数据。实时本发明,避免了数据在用户层和内核层之间频繁交互导致的系统性能下降的问题,以及数据不安全的问题。

Description

基于异构计算的透明加解密计算系统、方法、设备和介质
技术领域
本发明涉及透明加解密的技术领域,特别是涉及一种基于异构计算的透明加解密计算系统、方法、设备和介质。
背景技术
随着数据安全性的日益重视和计算需求的增加,透明加解密成为保护企业电子文档的关键技术。
为了提高透明加解密的效率,提出了一种基于硬件加速的透明加解密方案;具体的,如图1所示:Fuse (Filesystem in Userspace,用户空间的文件系统)透明文件系统在用户空间中运行,因此它可以在不同的操作系统和平台上使用,具有很好的可移植性和灵活性。
Fuse 透明文件系统,包含内核模块和挂载Fuse透明文件系统的./fuse/mnt(目录)。此外,还注册了一个/dev/fuse的接口设备,该接口设备块设备作为./fuse/mnt与内核通信的桥梁。./fuse/mnt通过/dev/fuse读取文件请求,处理后将reply写入/dev/fuse,进而通过/dev/fuse回到内核层,再从内核层返回给用户或者存入存储设备。
在这一加解密的过程中,Fuse透明文件系统需要在内核层和用户层之间频繁进行切换和数据传输,这会引入额外的性能开销;且由于Fuse透明文件系统运行在用户态,其代码执行在操作系统的特权级别较低的环境中,这可能出现因为受到恶意用户的攻击或利用,而导致数据存在安全隐患。
发明内容
鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种基于异构计算的透明加解密计算系统、方法、设备和介质,包括:
一种基于异构计算的透明加解密计算系统,所述透明加解密计算系统包括:操作系统和异构计算单元,所述操作系统包括:部署在内核层的透明文件系统和中间件,以及部署在用户层的异构计算程序;
所述透明文件系统,用于响应于所述操作系统的用户层的数据操作请求,将所述数据操作请求对应的第一数据发送给所述中间件;以及接收所述中间件返回的所述第一数据对应的加解密后的第二数据,并根据所述数据操作请求对所述第二数据进行转发;
所述中间件,设置有内存单元;所述中间件,用于将所述第一数据存储在内存单元中,并将所述第一数据在所述内存单元中的内存地址发送至所述异构计算程序;
所述异构计算程序,用于根据所述内存地址,将所述内存单元中的所述第一数据写入所述异构计算单元,并由所述异构计算单元进行加解密处理,得到所述第二数据。
可选地,所述数据操作请求为数据写入所述透明加解密计算系统的存储设备的请求,所述数据操作请求包括所述第一数据,所述第一数据为待加密的数据,所述第二数据为加密后的数据;
所述透明加解密计算系统还包括:
虚拟文件系统,设置在所述操作系统的内核层;所述虚拟文件系统用于接收所述操作系统的用户层的数据操作请求,并将所述数据操作请求发送给所述透明文件系统;
底层文件系统,设置在所述操作系统的内核层;所述底层文件系统用于接收所述透明文件系统转发来的第二数据,并将所述第二数据写入所述存储设备。
可选地,所述数据操作请求为读取所述透明加解密计算系统的存储设备的数据的请求,所述第一数据为待解密的数据,所述第二数据为解密后的数据;
所述透明加解密计算系统还包括:
虚拟文件系统,设置在所述操作系统的内核层;所述虚拟文件系统用于接收所述操作系统的用户层的数据操作请求,并将所述数据操作请求发送给所述透明文件系统;以及,用于将所述第二数据返回给发起所述数据操作请求的系统;
底层文件系统,设置在所述操作系统的内核层;所述底层文件系统用于响应于所述透明文件系统发送的数据操作请求,从所述存储设备中读取所述第一数据,并将所述第一数据发送至所述透明文件系统。
可选地,所述内存单元,包括多个内存块;
所述中间件,用于响应于所述透明文件系统所调用的中间件的内存分配函数,从所述多个内存块中,确定用于存储所述第一数据和所述第二数据的目标内存块;
所述透明文件系统,用于将所述第一数据写入所述目标内存块。
可选地,所述透明文件系统,还用于在根据所述数据操作请求对所述第二数据进行转发后,调用所述中间件的内存释放函数,对所述目标内存块进行释放。
可选地,所述第一数据包括多个子数据;
所述中间件,用于响应于所述透明文件系统所调用的中间件的内存分配函数,从所述多个内存块中,确定各子数据对应的目标内存块;
所述透明文件系统,用于将各子数据存储至各自对应的目标内存块中。
可选地,所述多个内存块中包括已使用的内存块集合和未使用的内存块集合;
所述中间件,用于从未使用的内存块集合中,确定用于存储所述第一数据的目标内存块,并将所述目标内存块归入已使用的内存块集合中;
所述中间件,还用于在释放所述目标内存块后,将所述目标内存块归入未使用的内存块集合中。
可选地,所述透明文件系统,用于响应于所述数据操作请求,将与所述第一数据相关联的数据信息和加解密启动标志,写入所述中间件中设置的数据请求队列;
所述中间件,用于按照所述数据请求队列中的顺序,将所述数据请求队列中的所述第一数据相关联的数据信息,和加解密启动标志发送给所述异构计算程序;
所述异构计算程序,用于根据所述数据信息和所述加解密启动标志,调用所述异构计算单元对所述第一数据进行解加密处理。
可选地,所述中间件,用于根据所述第二数据对应的第一数据的数据信息,对存储有所述第二数据的内存块进行标记;所述中间件设置有输出结果队列,所述输出结果队列存储有所述第二数据对应的第一数据的数据信息;所述中间件用于根据所述输出结果队列中的顺序,将所述第二数据发送给所述透明文件系统。
可选地,所述异构计算单元包括可编程逻辑器件和板卡内存;
其中,所述可编程逻辑器件,用于对所述第一数据进行加解密处理;
所述板卡内存,用于对所述第一数据和所述第二数据进行缓存。
可选地,所述操作系统和所述异构计算单元之间通过直接内存访问技术DMA进行数据交互;
所述透明加解密计算系统还包括:
DMA控制器,用于响应于所述异构计算程序的数据写入指令,将所述内存单元中的所述第一数据写入所述异构计算单元;以及,响应于所述异构计算程序的数据读取指令,将所述第二数据写入所述内存单元。
本发明实施例还提供了一种数据读写的方法,应用于基于异构计算的透明加解密计算系统,所述透明加解密计算系统包括:操作系统和异构计算单元,所述操作系统包括:部署在内核层的透明文件系统和中间件,以及部署在用户层的异构计算程序,所述方法包括:
响应于数据操作请求,将所述数据操作请求对应的第一数据写入所述中间件的内存单元;
将所述第一数据在所述内存单元中的内存地址发送至所述异构计算程序;所述异构计算程序用于根据所述内存地址,将所述内存单元中的所述第一数据写入所述异构计算单元,并由所述异构计算单元进行加解密处理,得到第二数据;
接收所述异构计算单元返回的所述第二数据,并将所述第二数据发送至所述透明文件系统;所述透明文件系统用于根据所述数据操作请求对所述第二数据进行转发。
可选地,所述内存单元包括多个内存块,所述响应于数据操作请求,将所述数据操作请求对应的第一数据写入所述中间件的内存单元,包括:
响应于所述透明文件系统在接收到所述数据操作请求时,所调用的内存分配函数,从多个内存块中确定用于存储所述第一数据的目标内存块;
将所述第一数据写入所述目标内存块中。
可选地,所述方法还包括:
响应于所述透明文件系统在将所述第二数据转发后,所调用内存释放函数,释放所述目标内存块。
可选地,所述多个内存块中包括已使用的内存块集合和未使用的内存块集合,所述从多个内存块中确定用于存储所述第一数据的目标内存块,包括:
从未使用的内存块集合中,确定用于存储所述第一数据的目标内存块,并将所述目标内存块从未使用的内存块集合中,移动至已使用的内存块集合中;
所述释放所述目标内存块包括:
将所述目标内存块从已使用的内存块集合中,移动至未使用的内存块集合中。
可选地,所述接收所述异构计算单元返回的所述第二数据,并将所述第二数据发送至所述透明文件系统,包括:
接收所述异构计算单元返回的第二数据,并将所述第二数据写入所述目标内存块中;
将所述目标内存块中的所述第二数据发送给所述透明文件系统。
可选地,所述中间件设置有输出结果队列,所述输出结果队列存储有所述第二数据对应的第一数据的数据信息,所述将所述目标内存块中的所述第二数据发送给所述透明文件系统,包括:
根据所述第二数据对应的第一数据的数据信息,对存储有所述第二数据的目标内存块进行标记;
根据所述输出结果队列中的顺序,将所述第二数据发送给所述透明文件系统。
可选地,所述中间件中设置有数据请求队列,所述方法还包括:
根据所述数据操作请求,将与所述第一数据相关联的数据信息和加解密启动标识标志写入所述数据请求队列;
根据所述数据请求队列中的顺序,将所述第一数据相关联的数据信息和加解密启动标识标志发送给所述异构计算程序;所述异构计算程序用于根据所述第一数据相关联的数据信息和加解密启动标识标志,调用所述异构计算单元对所述第一数据进行加密处理。
本发明实施例还提供了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上的数据读写的方法。
本发明实施例还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上的数据读写的方法。
本发明实施例具有以下优点:
本发明实施例中,透明加解密计算系统包括:操作系统和异构计算单元,操作系统包括:部署在内核层的透明文件系统和中间件,以及部署在用户层的异构计算程序;透明文件系统,用于响应于操作系统的用户层的数据操作请求,将数据操作请求对应的第一数据发送给中间件;以及接收中间件返回的第一数据对应的加解密后的第二数据,并根据数据操作请求对第二数据进行转发;中间件,设置有内存单元;中间件,用于将第一数据存储在内存单元中,并将第一数据在内存单元中的内存地址发送至异构计算程序;异构计算程序,用于根据内存地址,将内存单元中的第一数据写入异构计算单元,并由异构计算单元进行加解密处理,得到第二数据。
附图说明
为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术的一种透明加解密系统的结构结构示意图;
图2是本发明实施例的一种基于异构计算的透明加解密计算系统的结构示意图;
图3a是本发明实施例的一种透明加解密计算系统中的数据传输的示意图;
图3b是本发明实施例的一种透明加解密计算系统的结构示意图;
图4是本发明实施例的一种透明加解密计算系统中的部分数据传输的示意图;
图5是本发明实施例的一种数据读写的方法的步骤流程图;
图6a是本发明实施例的另一种数据读写的方法的步骤流程图;
图6b是本发明实施例的一种透明加密数据的步骤流程图;
图7是本发明实施例的一种电子设备的结构示意图;
图8是本发明实施例的一种非易失性计算机可读存储介质的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细地说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决数据频繁拷贝带来的系统性能下降,以及数据不安全的问题,本发明提出一种基于异构计算的透明加解密计算系统,该系统通过从内核层直接将数据拷贝至异构计算单元,来避免数据在用户层和内核层之间频繁交互导致的系统性能下降的问题,以及将数据拷贝至用户层,导致数据不安全的问题;具体地,可以参考图2,图2示出了本发明实施例的一种基于异构计算的透明加解密计算系统的结构示意图,如图2所示,该透明加解密计算系统可以包括:
操作系统和异构计算单元,所述操作系统包括:部署在内核层的透明文件系统和中间件,以及部署在用户层的异构计算程序;
在一些实施例中,该透明加解密计算系统可以由操作系统和异构计算单元组成;其中,操作系统可以指部署在CPU(Central Processing Unit中央处理器)上的操作系统,该操作系统可以为Linux操作系统,也可以为其他操作系统,本发明实施例对此不作限制。
异构计算单元可以指用于操作系统一起实现异构计算的硬件设备,例如:FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列 )。异构计算可以指使用不同类型指令集和体系架构的计算单元组成系统的计算方式,常见的实现异构计算的计算单元可以包括CPU、GPU(Graphics Processing Unit图形处理器)、DSP(Digital SignalProcess,数字信号处理)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA等处理器。
在一些实施例中,操作系统可以包括部署在内核层的透明文件系统和中间件;其中,透明文件系统和中间件可以在内核层对数据进行传输,从而避免数据频繁拷贝带来的系统性能下降的问题,以及拷贝至用户层导致的数据不安全的问题。
具体地,所述透明文件系统,用于响应于所述操作系统的用户层的数据操作请求,将所述数据操作请求对应的第一数据发送给所述中间件;以及接收所述中间件返回的所述第一数据对应的加解密后的第二数据,并根据所述数据操作请求对所述第二数据进行转发;
所述中间件,设置有内存单元;所述中间件,用于将所述第一数据存储在内存单元中,并将所述第一数据在所述内存单元中的内存地址发送至所述异构计算程序;
所述异构计算程序,用于根据所述内存地址,将所述内存单元中的所述第一数据写入所述异构计算单元,并由所述异构计算单元进行加解密处理,得到所述第二数据。
在一些实施方式中,用户在需要获取存储设备中的数据,或者想要将数据写入存储设备中时,可以在用户层的应用中执行相应的操作;响应于该操作,该应用可以生成对应的数据操作请求;示例性的,该数据操作请求可以是读取数据的请求,也可以是写入数据的请求,本发明实施例对此不作限制。
在生成数据操作请求后,用户层的应用可以将该数据操作请求发送给操作系统的内核层;内核层的透明文件系统在接收到该数据操作请求后,可以响应于该数据操作请求,将该数据操作请求对应要操作的第一数据发送给同属于操作系统的内核层的中间件。
中间件在接收到第一数据后,可以将第一数据先存储中间件的内存单元中;此时,第一数据具备了在内存单元中的内存地址,即内存单元存储有第一数据的内存地址;中间件在将第一数据存储至内存单元后,可以将第一数据在内存单元中的内存地址发送给位于操作系统的用户层的异构计算程序。
示例性的,该异构计算程序可以指用户层的程序,该程序可以用于发出数据传输、计算、结果回收等命令。
具体地,异构计算程序在接收到第一数据在内存单元中的内存地址后,可以根据该内存地址将内存单元中的第一数据写入到异构计算单元中;这一写入过程是异构计算程序依靠内存地址来完成的,不需要将第一数据传输到异构计算程序;因此,可以避免数据频繁拷贝带来的系统性能下降,以及数据不安全的问题。
异构计算单元在接收到该第一数据后,可以响应于异构计算程序的指令,对该第一数据进行相应的操作;例如:当数据操作请求为数据写入的请求时,异构计算程序可以向异构计算单元下发加密的指令;异构计算单元响应于该加密的指令,可以对该第一数据进行加密,从而得到第二数据。
又例如:如果当数据操作请求为数据读取的请求时,异构计算程序可以向异构计算单元下发解密的指令;异构计算单元响应于该解密的指令,可以对该第一数据进行解密,从而得到第二数据。
异构计算单元在生成第二数据后,可以将第二数据返回给中间件;然后,中间件可以将第二数据返回给透明文件系统。
透明文件系统在接收到第二数据后,可以根据在先接收到的数据操作请求,对第二数据进行转发;例如:如果数据操作请求为数据写入的请求,则可以将第二数据写入到存储设备;如果数据操作请求为数据读取的请求,则可以向用户返回第二数据。
以下,分别从不同的数据操作请求进行示例性的说明:
在本发明一实施例中,数据操作请求为数据写入所述透明加解密计算系统的存储设备的请求,所述数据操作请求包括所述第一数据,所述第一数据为待加密的数据,所述第二数据为加密后的数据;
所述透明加解密计算系统还包括:
虚拟文件系统,设置在所述操作系统的内核层;所述虚拟文件系统用于接收所述操作系统的用户层的数据操作请求,并将所述数据操作请求发送给所述透明文件系统;
底层文件系统,设置在所述操作系统的内核层;所述底层文件系统用于接收所述透明文件系统转发来的第二数据,并将所述第二数据写入所述存储设备。
在一些实施例中,透明加解密计算系统还可以包括有虚拟文件系统和底层文件系统;其中,虚拟文件系统可以是操作系统为所有内核层的文件系统提供的统一接口,用户层任何形式的数据操作都必须经过虚拟文件系统进入内核层,之后才能调用内核层相应的文件系统进行后续操作。
底层文件系统可以指操作系统的自带的固有文件系统,例如:操作系统为Linux操作系统,底层文件系统则可以为EXT3(Third Extended Filesystem,第三扩展文件系统)/EXT4(Fourth Extended Filesystem,第四扩展文件系统)等,底层文件系统可以用于管理存储设备的文件,以便与用户层进行文件读写等增、删、查、改操作。
用户层的数据操作请求在进入到内核层时,可以先发送到虚拟文件系统中;虚拟文件系统在确定该数据操作请求为透明加解密需求的数据操作请求后,可以将该数据操作请求发送给透明文件系统;示例性的,当数据操作请求为数据写入所述透明加解密计算系统的存储设备的请求时,数据操作请求可以包括有待加密的第一数据。对于数据操作请求为数据写入所述透明加解密计算系统的存储设备的请求的实施例中,第二数据为加密后的数据。
透明文件系统在接收到数据操作请求后,可以将第一数据写入到同处于内核层的中间件的内存单元中。中间件的内存单元写入待加密的第一数据后,中间件可以将第一数据在内存单元上的内存地址发送给异构计算单元。异构计算单元在接收到该内存地址后,可以根据该内存地址,将内存单元中待加密的第一数据写入到异构计算单元中,并指示异构计算单元对该第一数据进行加密操作。
透明文件系统在接收到异构计算单元对第一数据进行加密操作后得到的第二数据后,可以将该第二数据发送给底层文件系统,然后由该底层文件系统将第二数据写入到存储设备中。
在本发明另一实施例中,数据操作请求为读取所述透明加解密计算系统的存储设备的数据的请求,所述第一数据为待解密的数据,所述第二数据为解密后的数据;
所述透明加解密计算系统还包括:
虚拟文件系统,设置在所述操作系统的内核层;所述虚拟文件系统用于接收所述操作系统的用户层的数据操作请求,并将所述数据操作请求发送给所述透明文件系统;以及,用于将所述第二数据返回给发起所述数据操作请求的系统;
底层文件系统,设置在所述操作系统的内核层;所述底层文件系统用于响应于所述透明文件系统发送的数据操作请求,从所述存储设备中读取所述第一数据,并将所述第一数据发送至所述透明文件系统。
在另一些实施例中,当数据操作请求为读取所述透明加解密计算系统的存储设备的数据的请求时,数据操作请求可以包括有待解密的第一数据的标识,或者在存储设备中的地址。对于数据操作请求为读取所述透明加解密计算系统的存储设备的数据的请求的实施例中,第二数据为解密后的数据。
透明文件系统在接收到数据操作请求后,可以将数据操作请求发送给底层文件系统;底层文件系统响应于数据操作请求,可以从存储设备中读取第一数据,并将第一数据发送给透明文件系统。
透明文件系统在接收到第一数据后,可以将第一数据写入到同处于内核层的中间件的内存单元中。
中间件的内存单元写入待加密的第一数据后,中间件可以将第一数据在内存单元上的内存地址发送给异构计算单元。异构计算单元在接收到该内存地址后,可以根据该内存地址,将内存单元中待解密的第一数据写入到异构计算单元中,并指示异构计算单元对该第一数据进行解密操作。
透明文件系统在接收到异构计算单元对第一数据进行解密操作后得到的第二数据后,可以将该第二数据发送给虚拟文件系统,并由虚拟文件系统将该第二数据返回给发起数据操作请求的系统;示例性的,可以将该第二数据返回给用户层中,发起该数据操作请求的应用,本发明实施例对此不作限制。
以下实施例中,将从更具体的角度对上述透明加解密计算系统进行示例性的说明:
在本发明一实施例中,所述内存单元,包括多个内存块;所述中间件,用于响应于所述透明文件系统所调用的中间件的内存分配函数,从所述多个内存块中,确定用于存储所述第一数据和所述第二数据的目标内存块;所述透明文件系统,用于将所述第一数据写入所述目标内存块。
在一些实施例中,内核态的文件系统有内存需求时,都是动态申请内存,动态申请内存会增加系统调用延迟,降低系统性能。为了解决这一问题,本发明实施例可以预先在中间件的内存单元中划分出多个内存块,这多个内存块的大小可以是一致的,也可以是不同的,本发明实施例对此不作限制。
在实际应用中,透明文件系统在将第一数据写入内存单元的时候,可以先调用中间件的内存分配函数,该内存分配函数可以是自定义的、用于从内存单元的多个内存块中申请存储第一数据的目标内存块的函数。
响应于该内存分配函数,中间件可以从所述多个内存块中,确定用于存储所述第一数据和所述第二数据的目标内存块;然后,中间件可以将透明文件系统所写入的第一数据存储至目标内存块中。
另外,异构计算单元在生成第二数据后,可以将第二数据写入到目标内存块中;然后,中间件可以将目标内存块中的第二数据转发给透明文件系统。
作为一示例,所述透明文件系统,还用于在根据所述数据操作请求对所述第二数据进行转发后,调用所述中间件的内存释放函数,对所述目标内存块进行释放。
在一些实施例中,为了避免对目标内存块进行占用,透明文件系统在对第二数据进行转发后,可以调用中间件的内存释放函数,将目标内存块释放,从而使得其他的请求可以申请使用该目标内存块。
在本发明一实施例中,所述第一数据包括多个子数据;
所述中间件,用于响应于所述透明文件系统所调用的中间件的内存分配函数,从所述多个内存块中,确定各子数据对应的目标内存块;
所述透明文件系统,用于将各子数据存储至各自对应的目标内存块中。
在一些实施例中,第一数据可以包括有多个子数据,示例性的,如果第一数据为待加密的数据,则第一数据可以是对待写入的数据进行拆分后,由拆分得到的多个子数据组成的;如果第一数据为待解密的数据,则第一数据可以是对从存储设备读取的数据进行拆分后,由拆分得到的多个子数据组成。
透明文件系统在接收到第一数据后,可以调用中间件的内存分配函数,在中间件的内存单元中,为各个子数据申请对应的目标内存块。
在申请到目标内存块后,透明文件系统可以将第一数据中的各个子数据分别写到各自对应的目标内存块中。
然后,中间件可以将存储有第一数据的子数据的目标内存块对应的内存地址发送给异构计算程序,以便异构计算单元可以基于该内存地址,来进行数据的转移和处理。
在本发明一实施例中,所述多个内存块中包括已使用的内存块集合和未使用的内存块集合;其中,已使用的内存块集合可以包括当前正在存储数据或者将要存储数据的内存块,未使用的内存块集合可以包括当前未存储有数据,且当前没有需要存入的数据的内存块。
所述中间件,用于从未使用的内存块集合中,确定用于存储所述第一数据的目标内存块,并将所述目标内存块归入已使用的内存块集合中;
所述中间件,还用于在释放所述目标内存块后,将所述目标内存块归入未使用的内存块集合中。
在一些实施例中,透明文件系统在申请到内存块的时候,中间件可以从未使用的内存块集合中,确定用于存储第一数据目标内存块;在申请成功后,透明文件系统可以将第一数据写入到目标内存块中,与此同时,中间件可以将目标内存块归入到已使用的内存块集合中,避免后续其他请求也请求到该内存块。
在另一些实施例中,透明文件在将第二数据转发出去后,可以调用内存释放函数,以使得中间件释放第二数据所占用的目标内存块。此时,中间件可以在释放目标内存块后,将目标内存块从已使用的内存块集合中转移到未使用的内存块集合,以便后续其他请求使用该内存块。
在本发明一实施例中,为了对加解密操作过程进行统一调度,可以在中间件中设置数据请求队列;然后,基于该数据请求队列来对数据操作请求进行处理。具体地:
所述透明文件系统,用于响应于所述数据操作请求,将与所述第一数据相关联的数据信息和加解密启动标志,写入所述中间件中设置的数据请求队列;
所述中间件,用于按照所述数据请求队列中的顺序,将所述数据请求队列中的所述第一数据相关联的数据信息,和加解密启动标志发送给所述异构计算程序;
所述异构计算程序,用于根据所述数据信息和所述加解密启动标志,调用所述异构计算单元对所述第一数据进行解加密处理。
在一些实施例中,透明文件系统在接收到数据操作请求后,可以根据该数据操作请求,确定与第一数据相关的数据信息,数据信息可以包括加解密所需的计算项,例如:第一数据的大小、第一数据的ID(Identity document,身份证标识号)等。
同时,还可以根据该数据操作请求,确定与该第一数据对应的加解密启动标志,该加解密启动标志是传输给异构计算单元的一个字符信息,异构计算单元在获得这个加解密启动标志后,可以对该第一数据进行相应的加密操作或者解密操作;示例性的,数据信息和加解密启动标志可以包括在数据操作请求中,本发明实施例对此不作限制。
透明文件系统在得到第一数据的数据信息和加解密启动标志后,可以将该数据信息和加解密启动标志写入到中间件中设置的数据请求队列中;示例性的,该数据请求队列中还可以包括其他数据的数据信息和加解密启动标志,各个数据的数据信息和加解密启动标志是按照预设规则排列在数据请求队列中的,例如:可以按照透明文件系统接收到请求的时间先后顺序进行的排列,也可以按照数据的优先级进行地排列,本发明实施例对此不作限制。
对于中间件来说,可以按照该数据请求队列中的顺序,将数据请求队列中,第一数据相关联的数据信息和加解密启动标志发送给异构计算程序;异构计算程序可以按照接收到的顺序,来根据数据信息和所述加解密启动标志,调用所述异构计算单元对所述第一数据进行解加密处理。
示例性的,异构计算程序可以在接收到第一数据的数据信息和所述加解密启动标志后,生成对应的执行指令,并将该执行指令添加到执行命令队列中;当轮到第一数据对应的执行指令后,异构计算程序可以通过该执行指令来调用所述异构计算单元对所述第一数据进行解加密处理。
在本发明一实施例中,对于输出结果来说,也可以设置输出结果队列,然后基于输出结果队列来对输出结果进行统一调度,具体的:
所述中间件,用于根据所述第二数据对应的第一数据的数据信息,对存储有所述第二数据的内存块进行标记;所述中间件设置有输出结果队列,所述输出结果队列存储有所述第二数据对应的第一数据的数据信息;所述中间件用于根据所述输出结果队列中的顺序,将所述第二数据发送给所述透明文件系统。
在一些实施例中,可以还在中间件中设置输出结果队列,该输出结果队列中可以存储有与第二数据对应的第一数据的数据信息,例如:可以存储有第一数据的ID,以便中间件可以基于ID确定哪个第二数据是基于哪个第一数据得到的。
示例性的,该输出结果队列可以基于第二数据生成的时间进行排列。
中间件在将第二数据存储至内存块的时候,可以根据第二数据对应的第一数据的数据信息对存储有所述第二数据的内存块进行标记;该存储有第二数据的内存块可以是前述的目标内存块,也可以是重新确定的内存块,本发明实施例对此不作限制。
对于中间件来说,可以按照输出结果队列中的顺序,来将第一数据对应的第二数据发送给透明文件系统。
在本发明一实施例中,所述异构计算单元包括可编程逻辑器件和板卡内存;
其中,所述可编程逻辑器件,用于对所述第一数据进行加解密处理;
所述板卡内存,用于对所述第一数据和所述第二数据进行缓存。
在一些实施例中,异构计算单元可以由可编程逻辑器件和板卡内存组成,示例性的,可编程逻辑器件可以由DDR(Double Data Rate,双倍数据率)控制器和计算单元组成。
其中,可编程逻辑器件可以用于实现具体的加解密算法计算任务;具体地,可编程逻辑器件可以用于对所述第一数据进行加密处理或者解密处理。
板卡内存可以用于对传输给可编程逻辑器件的第一数据进行缓存,或者将可编程逻辑器件要传输给中间件的第二数据进行缓存;示例性的,操作系统和异构计算单元可以通过PCIE(Peripheral Component Interconnect Express,外围组件互连快信)总线连接,本发明实施例对此不作限制。
作为一示例,所述操作系统和所述异构计算单元之间通过DMA(Direct MemoryAccess,直接内存访问技术)进行数据交互;
所述透明加解密计算系统还包括:
DMA控制器,用于响应于所述异构计算程序的数据写入指令,将所述内存单元中的所述第一数据写入所述异构计算单元;以及,响应于所述异构计算程序的数据读取指令,将所述第二数据写入所述内存单元。
在一些实施例中,操作系统和异构计算单元之间可以通过DMA直接进行数据交互;具体地,该数据交互可以基于DMA控制器来实现。
示例性的,异构计算程序可以针对第一数据生成数据写入指令,并将该数据写入指令发送给DMA控制器;DMA控制器响应于该数据写入指令,可以将中间件的内存单元中的第一数据写入到异构计算单元中,并由异构计算单元进行相应的加解密处理。
另外,异构计算程序也可以针对第二数据生成数据读取指令,并将该数据读取指令发送给DMA控制器;DMA控制器响应于该数据读取指令,可以将异构计算单元中的第二数据写入到内存单元中。
示例性的,如图3a所示,基于异构计算的透明加解密计算系统可以分为三个层次:用户层、内核层和设备层;其中,用户读/写操作可以在用户层进行;内核层设置有虚拟文件系统、透明文件系统、底层文件系统和中间件;设备层设置有存储设备和异构计算单元(即图3a中的现场可编程逻辑门阵列加速卡)。
另外,用户层还设置有异构计算程序,图3a中异构计算程序可以为hls_host。hls_host的内部包含OpenCL(Open Computing Language,开放计算语言)的执行模型、经过中间件的内存地址和数据大小、加解密启动标志等,其中OpenCL的执行模型为开发人员提供了灵活和高效地利用并行计算设备的方法,OpenCL包含执行命令队列和FPGA硬件加速计算的API(ApplicationProgrammingInterface,应用程序编程接口 )等,从而实现高性能加解密计算的目标,在整个加解密过程中,无论是加密数据还是解密数据都不会经过hls_host。
当用户执行写操作时即为加密操作,首先用户态写操作调用虚拟文件系统的API与透明文件系统建立关联,然后通过透明文件系统进入中间件,进而到达现场可编程逻辑门阵列加速卡进行加密操作;之后返回中间件,再通过透明文件系统进入底层文件系统,最终数据加密后被写入存储设备中,数据流传输的路径是①→②→③→④→⑤→⑥→⑦→⑧。
用户层的读操作即为解密操作,解密是加密的逆过程,首先在用户层发起读操作,读操作需求依次经过虚拟文件系统、透明文件系统、底层文件系统,最后到达存储设备,数据需要从存储设备中被读出,然后经过底层文件系统、透明文件系统、中间件后,进入现场可编程逻辑门阵列加速卡进行解密;解密完成之后再通过中间件、透明文件系统、虚拟文件系统,最后将解密数据返回给用户层的读操作用户,解密的具体操作流程是:①→②→⑦→⑧→⑨→⑩→③→④→⑤→⑥→ → />,其中①、②、⑦、⑧是用户发起的读请求流程,⑨、⑩、③、④、⑤、⑥、/> 、/> 是解密数据流路径;中间件起到透明文件系统与现场可编程逻辑门阵列加速卡之间的数据传输的桥梁作用。
作为一示例,如图3b所示的基于异构计算的透明加解密计算系统中的操作系统可以为Linux操作系统,其可以部署在服务器主机的CPU上;存储设备可以为磁盘,现场可编程逻辑门阵列加速卡可以包括现场可编程逻辑门阵列和板卡内存;其中,现场可编程逻辑门阵列可以包括有双倍数据率控制器和计算单元,板卡内存可以为双倍数据率板卡内存。
在Linux操作系统的用户层,可以设置有异构计算程序,该异构计算程序可以是hls_host,以及用户执行文件读写的操作;在内核层,可以设置有透明文件系统、中间件以及内存单元;内核层可以通过驱动程序和应用程序编程接口与其他部件进行数据交互。服务器主机和异构计算单元之间可以通过外围组件互连快信总线连接,且通过直接内存访问技术进行数据交互。
如图4所示,以写入操作为例:当透明文件系统接收到写入操作请求时,可以在中间件的数据请求队列中,添加该写入操作请对应的数据的数据标志、数据大小和加解密启动标志;中间件可以基于数据请求队列的顺序,将数据请求队列中的数据标志、数据大小和加解密启动标志依次发送给用户层的异构计算程序,例如:hls_host。
另一方面,透明文件系统可以调用中间件的内存分配函数申请相应的内存块,并将要写入的数据写入到所申请的内存块中;对于写入了数据的内存块,可以归入到已使用内存的内存池中;此时,该内存块中的数据为明文数据。
当明文数据写入内存块中时,该明文数据对应有内存地址;通过内存映射(mmap,memory map)将该内存地址发送到用户层的hls_host。
hls_host基于内存地址和数据标志(例如:数据ID)、数据大小和加解密启动标志,可以生成对应的命令;如图4所示,hls_host可以针对不同请求生成不同组的命令。
接下来,hls_host可以通过开放计算语言应用程序编程接口发送命令,以使得中间件中的明文通过DMA写入到现场可编程逻辑门阵列加速卡;现场可编程逻辑门阵列加速卡响应于hls_host,对明文数据进行加密,得到密文数据。
中间件中还设置有输出结果队列,该输出结果队列中有明文数据的数据标志,使用该数据标志对密文数据进行加密,从而在将该密文数据写入内存块时,写入该密文数据对应的明文数据在先写入的内存块中进行传输,
密文数据传输到透明文件系统后,透明文件系统可以将该密文数据拷贝至底层文件系统,以便由底层文件协同写入存储设备;另一方面,透明文件系统可以调用内存释放函数,来释放所占用的内存块;该被释放的内存块可以进入到未使用内存的内存池中。
基于上述实施例所提供的透明加解密计算系统,本发明实施例还提供了一种应用于该透明加解密计算系统的数据读写的方法;示例性的,该透明加解密计算系统包括有操作系统和异构计算单元,所述操作系统包括:部署在内核层的透明文件系统和中间件,以及部署在用户层的异构计算程序,该方法具体可以参考图5,图5示出了本发明实施例的一种数据读写的方法的步骤流程图,可以包括如下步骤:
步骤501、响应于数据操作请求,将所述数据操作请求对应的第一数据写入所述中间件的内存单元。
在一些实施方式中,用户在需要获取存储设备中的数据,或者想要将数据写入存储设备中时,可以在用户层的应用中执行相应的操作;响应于该操作,该应用可以生成对应的数据操作请求。
在生成数据操作请求后,用户层的应用可以将该数据操作请求发送给操作系统的内核层;内核层的透明文件系统在接收到该数据操作请求后,可以响应于该数据操作请求,将该数据操作请求对应要操作的第一数据发送给同属于操作系统的内核层的中间件。
中间件在接收到第一数据后,可以将第一数据先存储中间件的内存单元中;同时,中间件可以确定第一数据在内存单元中的内存地址,即第一数据在内存单元中存储的位置。
步骤502、将所述第一数据在所述内存单元中的内存地址发送至所述异构计算程序;所述异构计算程序用于根据所述内存地址,将所述内存单元中的所述第一数据写入所述异构计算单元,并由所述异构计算单元进行加解密处理,得到第二数据。
中间件在将第一数据存储至内存单元后,可以将第一数据在内存单元中的内存地址发送给位于操作系统的用户层的异构计算程序。
异构计算程序在接收到第一数据在内存单元中的内存地址后,可以根据该内存地址将内存单元中的第一数据写入到异构计算单元中;这一写入过程是异构计算程序依靠内存地址来完成的,不需要将第一数据传输到异构计算程序;因此,可以避免数据频繁拷贝带来的系统性能下降,以及数据不安全的问题。
异构计算单元在接收到该第一数据后,可以响应于异构计算程序的指令,对该第一数据进行相应的加密处理或者解密处理,从而得到对应的第二数据。
步骤503、接收所述异构计算单元返回的所述第二数据,并将所述第二数据发送至所述透明文件系统;所述透明文件系统用于根据所述数据操作请求对所述第二数据进行转发。
异构计算单元在生成第二数据后,可以将第二数据返回给中间件;然后,中间件可以将所接收到的第二数据发送给透明文件系统。
透明文件系统在接收到第二数据后,可以根据在先接收到的数据操作请求,对第二数据进行转发;例如:如果数据操作请求为数据写入的请求,则可以将第二数据写入到存储设备中;如果数据操作请求为数据读取的请求,则可以向用户返回第二数据,本发明实施例对此不作限制。
本发明实施例中,透明加解密计算系统响应于数据操作请求,可以先将所述数据操作请求对应的第一数据写入所述中间件的内存单元;然后将所述第一数据在所述内存单元中的内存地址发送至所述异构计算程序;所述异构计算程序用于根据所述内存地址,将所述内存单元中的所述第一数据写入所述异构计算单元,并由所述异构计算单元进行加解密处理,得到第二数据;之后,再接收所述异构计算单元返回的所述第二数据,并将所述第二数据发送至所述透明文件系统;所述透明文件系统用于根据所述数据操作请求对所述第二数据进行转发。通过本发明实施例,可以从内核层直接将数据拷贝至异构计算单元,从而避免了数据在用户层和内核层之间频繁交互导致的系统性能下降的问题,以及将数据拷贝至用户层,导致数据不安全的问题。
参照图6a,示出了本发明实施例的另一种数据读写的方法的步骤流程图,可以包括如下步骤:
步骤601、内存单元包括多个内存块,响应于所述透明文件系统在接收到所述数据操作请求时,所调用的内存分配函数,从多个内存块中确定用于存储所述第一数据的目标内存块。
在一些实施例中,可以预先在中间件的内存单元中划分出多个内存块,这多个内存块的大小可以是一致的,也可以是不同的。
透明文件系统在将第一数据写入内存单元的时候,可以先调用中间件的内存分配函数,该内存分配函数可以是自定义的、用于从内存单元的多个内存块中申请存储第一数据的目标内存块的函数。
响应于该内存分配函数,中间件可以从所述多个内存块中,确定用于存储所述第一数据和所述第二数据的目标内存块。
在本发明一实施例中,多个内存块中包括已使用的内存块集合和未使用的内存块集合;在确定目标内存块的时候,可以通过如下方式确定目标内存块:
从未使用的内存块集合中,确定用于存储所述第一数据的目标内存块,并将所述目标内存块从未使用的内存块集合中,移动至已使用的内存块集合中。
在一些实施例中,透明文件系统在申请到内存块的时候,中间件可以从未使用的内存块集合中,确定用于存储第一数据目标内存块;在申请成功后,透明文件系统可以将第一数据写入到目标内存块中,与此同时,中间件可以将目标内存块归入到已使用的内存块集合中,避免后续其他请求也请求到该内存块。
步骤602、将所述待加密的数据写入所述目标内存块中。
在申请到目标内存块后,中间件可以响应于透明文件系统的写操作,将第一数据写入到目标内存块中。
步骤603、将所述第一数据在所述内存单元中的内存地址发送至所述异构计算程序;所述异构计算程序用于根据所述内存地址,将所述内存单元中的所述第一数据写入所述异构计算单元,并由所述异构计算单元进行加解密处理,得到第二数据。
中间件在将第一数据存储至内存单元后,可以将第一数据在内存单元中的内存地址发送给位于操作系统的用户层的异构计算程序。
异构计算程序在接收到第一数据在内存单元中的内存地址后,可以根据该内存地址将内存单元中的第一数据写入到异构计算单元中;这一写入过程是异构计算程序依靠内存地址来完成的,不需要将第一数据传输到异构计算程序;因此,可以避免数据频繁拷贝带来的系统性能下降,以及数据不安全的问题。
异构计算单元在接收到该第一数据后,可以响应于异构计算程序的指令,对该第一数据进行相应的加密处理或者解密处理,从而得到对应的第二数据。
步骤604、接收所述异构计算单元返回的第二数据,并将所述第二数据写入所述目标内存块中。
异构计算单元在生成第二数据后,可以将第二数据返回给中间件;具体地,异构计算单元可以将第二数据写入中间件的内存单元中;中间件响应于异构计算单元的写操作,可以将第二数据写入到内存单元的目标内存块中。
步骤605、将所述目标内存块中的所述第二数据发送给所述透明文件系统;所述透明文件系统用于根据所述数据操作请求对所述第二数据进行转发。
中间件在将第二数据存储到目标内存块中后,可以在预设的时机,将目标内存块中的第二数据发送给透明文件系统;然后,透明文件系统可以将第二数据发送给底层文件系统来写入到存储设备,或者将第二数据发送给虚拟文件系统,并由虚拟文件系统返回给用户,本发明实施例对此不作限制。
在本发明一实施例中,中间件设置有输出结果队列,所述输出结果队列存储有所述第二数据对应的第一数据的数据信息,步骤605可以通过如下子步骤来实现,包括:
子步骤11、根据所述第二数据对应的第一数据的数据信息,对存储有所述第二数据的目标内存块进行标记。
在一些实施例中,可以在中间件中设置输出结果队列,该输出结果队列中可以存储有与第二数据对应的第一数据的数据信息。
示例性的,该输出结果队列可以基于第二数据生成的时间进行排列。
中间件在将第二数据存储至内存块的时候,可以根据第二数据对应的第一数据的数据信息对存储有所述第二数据的内存块进行标记;该存储有第二数据的内存块可以是前述的目标内存块,也可以是重新确定的内存块,本发明实施例对此不作限制。
子步骤12、根据所述输出结果队列中的顺序,将所述第二数据发送给所述透明文件系统。
对于中间件来说,可以按照输出结果队列中的顺序,来将第一数据对应的第二数据发送给透明文件系统进行转发。
在本发明另一实施例中,所述中间件中设置有数据请求队列,上述方法还可以包括如下步骤:
根据所述数据操作请求,将与所述第一数据相关联的数据信息和加解密启动标识标志写入所述数据请求队列;根据所述数据请求队列中的顺序,将所述第一数据相关联的数据信息和加解密启动标识标志发送给所述异构计算程序;所述异构计算程序用于根据所述第一数据相关联的数据信息和加解密启动标识标志,调用所述异构计算单元对所述第一数据进行加密处理。
在一些实施例中,透明文件系统在接收到数据操作请求后,可以根据该数据操作请求,确定与第一数据相关的数据信息,数据信息可以包括加解密所需的计算项。
同时,还可以根据该数据操作请求,确定与该第一数据对应的加解密启动标志,该加解密启动标志是传输给异构计算单元的一个字符信息,异构计算单元在获得这个加解密启动标志后,可以对该第一数据进行相应的加密操作或者解密操作。
透明文件系统在得到第一数据的数据信息和加解密启动标志后,可以将该数据信息和加解密启动标志写入到中间件中设置的数据请求队列中;示例性的,该数据请求队列中还可以包括其他数据的数据信息和加解密启动标志,各个数据的数据信息和加解密启动标志是按照预设规则排列在数据请求队列中的。
对于中间件来说,可以按照该数据请求队列中的顺序,将数据请求队列中,第一数据相关联的数据信息和加解密启动标志发送给异构计算程序;异构计算程序可以按照接收到的顺序,来根据数据信息和所述加解密启动标志,调用所述异构计算单元对所述第一数据进行解加密处理。
异构计算程序可以在接收到第一数据的数据信息和所述加解密启动标志后,生成对应的执行指令,并将该执行指令添加到执行命令队列中;当轮到第一数据对应的执行指令后,异构计算程序可以通过该执行指令来调用所述异构计算单元对所述第一数据进行解加密处理。
步骤606、响应于所述透明文件系统在将所述加密后的数据写入所述存储设备后,所调用内存释放函数,释放所述目标内存块。
在一些实施例中,为了避免对目标内存块进行占用,透明文件系统在对第二数据进行转发后,可以调用中间件的内存释放函数,将目标内存块释放,从而使得其他的请求可以申请使用该目标内存块。中间件响应于透明文件系统在将所述加密后的数据写入所述存储设备后,所调用内存释放函数,可以对目标内存块进行释放。
在本发明一实施例中,在释放目标内存块时,可以通过如下方式来实现:
将所述目标内存块从已使用的内存块集合中,移动至未使用的内存块集合中。
在一些实施例中,透明文件在将第二数据转发出去后,可以调用内存释放函数,以使得中间件释放第二数据所占用的目标内存块。此时,中间件可以在释放目标内存块后,将目标内存块从已使用的内存块集合中转移到未使用的内存块集合,以便后续其他请求使用该内存块。
示例性的,如图6b所示,可以预先在中间件中申请1GB大小的内存池,并将这1GB大小的内存池划分为32个内存块,每个内存块大小为32kb。另外,可以将内存块申请函数发送给透明文件系统,以便后续透明文件系统可以调用该内存块申请函数进行内存块的申请。
当用户发起写操作或者加密操作后,可以先将待加密明文数据拆分成多个数据块,得到数据块1、数据块2...数据块n。
之后,透明文件系统可以调用中间件的内存分配函数,从多个内存块中申请内存块来存储明文数据;如果申请失败,则重新进行申请;如果申请成功,则可以将明文数据写到申请的内存块中。
在将明文数据写到内存块中后,中间件中的一个或多个内存块中将带有明文数据;此时,可以发送异步通知信息给后台运行的异构计算程序,例如:hls_host;hls_host可以判断是否接收到异步通知信息,如果未接收到,则重新进行接收;如果收到,则可以获取该明文数据的内存地址;具体的,可以通过mmap将明文数据在内存中的内存地址映射到用户层。
透明文件系统在将明文数据写到内存块上后,可以发送计算请求给中间件;中间件可以将该计算请求转发给hls_host。
hls_host获取到计算请求后,可以发出执行命令(①、直接内存访问技术写命令;②、启动现场可编程逻辑门阵列计算;③、直接内存访问技术读命令)给直接内存访问技术控制器和现场可编程逻辑门阵列加速卡。响应于直接内存访问技术写命令,直接内存访问技术控制器可以基于内存地址,将明文数据块写到现场可编程逻辑门阵列加速卡中;现场可编程逻辑门阵列加速卡响应于启动现场可编程逻辑门阵列计算的命令,对明文数据进行加密,得到密文数据。
直接内存访问技术控制器再响应于直接内存访问技术读命令,将密文数据写到中间件中,并由中间件传输到透明文件系统。
透明文件系统在接收到密文数据后,可以将密文数据发送至底层文件系统,以便底层文件系统将密文数据写入存储设备。另一方面,透明文件系统可以调用中间件的内存释放函数,来释放中间件中被占用的内存块。至此,完成数据的透明加解密的写入。
本发明实施例中,响应于所述透明文件系统在接收到所述数据操作请求时,所调用的内存分配函数,从多个内存块中确定用于存储所述第一数据的目标内存块;将所述待加密的数据写入所述目标内存块中;将所述第一数据在所述内存单元中的内存地址发送至所述异构计算程序;所述异构计算程序用于根据所述内存地址,将所述内存单元中的所述第一数据写入所述异构计算单元,并由所述异构计算单元进行加解密处理,得到第二数据;接收所述异构计算单元返回的第二数据,并将所述第二数据写入所述目标内存块中;将所述目标内存块中的所述第二数据发送给所述透明文件系统;所述透明文件系统用于根据所述数据操作请求对所述第二数据进行转发;响应于所述透明文件系统在将所述加密后的数据写入所述存储设备后,所调用内存释放函数,释放所述目标内存块。通过本发明实施例,可以高效地对内存单元进行管理,避免了动态内存分配与释放操作对系统性能的影响,从而提升了整体系统性能。
且在加解密操作过程中,基于队列进行统一调度,提高系统性能、避免资源冲突,并简化系统设计。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
本发明实施例还提供了一种电子设备,如图7所示,该电子设备7包括处理器701、存储器702及存储在存储器702上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上的数据读写的方法。
本发明实施例还提供了一种非易失性计算机可读存储介质,如图8所示,该非易失性计算机可读存储介质8上存储计算机程序801,计算机程序801被处理器执行时实现如上的数据读写的方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、电子设备或非易失性计算机可读存储介质。因此,本发明实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、系统、电子设备和湿气的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框,以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对所提供的一种基于异构计算的透明加解密计算系统、方法、设备和介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (20)

1.一种基于异构计算的透明加解密计算系统,其特征在于,所述透明加解密计算系统包括:操作系统和异构计算单元,所述操作系统包括:部署在内核层的透明文件系统和中间件,以及部署在用户层的异构计算程序;
所述透明文件系统,用于响应于所述操作系统的用户层的数据操作请求,将所述数据操作请求对应的第一数据发送给所述中间件;以及接收所述中间件返回的所述第一数据对应的加解密后的第二数据,并根据所述数据操作请求对所述第二数据进行转发;
所述中间件,设置有内存单元;所述中间件,用于将所述第一数据存储在内存单元中,并将所述第一数据在所述内存单元中的内存地址发送至所述异构计算程序;
所述异构计算程序,用于根据所述内存地址,将所述内存单元中的所述第一数据写入所述异构计算单元,并由所述异构计算单元进行加解密处理,得到所述第二数据。
2.根据权利要求1所述的透明加解密计算系统,其特征在于,所述数据操作请求为数据写入所述透明加解密计算系统的存储设备的请求,所述数据操作请求包括所述第一数据,所述第一数据为待加密的数据,所述第二数据为加密后的数据;
所述透明加解密计算系统还包括:
虚拟文件系统,设置在所述操作系统的内核层;所述虚拟文件系统用于接收所述操作系统的用户层的数据操作请求,并将所述数据操作请求发送给所述透明文件系统;
底层文件系统,设置在所述操作系统的内核层;所述底层文件系统用于接收所述透明文件系统转发来的第二数据,并将所述第二数据写入所述存储设备。
3.根据权利要求1所述的透明加解密计算系统,其特征在于,所述数据操作请求为读取所述透明加解密计算系统的存储设备的数据的请求,所述第一数据为待解密的数据,所述第二数据为解密后的数据;
所述透明加解密计算系统还包括:
虚拟文件系统,设置在所述操作系统的内核层;所述虚拟文件系统用于接收所述操作系统的用户层的数据操作请求,并将所述数据操作请求发送给所述透明文件系统;以及,用于将所述第二数据返回给发起所述数据操作请求的系统;
底层文件系统,设置在所述操作系统的内核层;所述底层文件系统用于响应于所述透明文件系统发送的数据操作请求,从所述存储设备中读取所述第一数据,并将所述第一数据发送至所述透明文件系统。
4.根据权利要求1-3任一项所述的透明加解密计算系统,其特征在于,所述内存单元,包括多个内存块;
所述中间件,用于响应于所述透明文件系统所调用的中间件的内存分配函数,从所述多个内存块中,确定用于存储所述第一数据和所述第二数据的目标内存块;
所述透明文件系统,用于将所述第一数据写入所述目标内存块。
5.根据权利要求4所述的透明加解密计算系统,其特征在于,
所述透明文件系统,还用于在根据所述数据操作请求对所述第二数据进行转发后,调用所述中间件的内存释放函数,对所述目标内存块进行释放。
6.根据权利要求5所述的透明加解密计算系统,其特征在于,所述第一数据包括多个子数据;
所述中间件,用于响应于所述透明文件系统所调用的中间件的内存分配函数,从所述多个内存块中,确定各子数据对应的目标内存块;
所述透明文件系统,用于将各子数据存储至各自对应的目标内存块中。
7.根据权利要求5所述的透明加解密计算系统,其特征在于,所述多个内存块中包括已使用的内存块集合和未使用的内存块集合;
所述中间件,用于从未使用的内存块集合中,确定用于存储所述第一数据的目标内存块,并将所述目标内存块归入已使用的内存块集合中;
所述中间件,还用于在释放所述目标内存块后,将所述目标内存块归入未使用的内存块集合中。
8.根据权利要求1所述的透明加解密计算系统,其特征在于,
所述透明文件系统,用于响应于所述数据操作请求,将与所述第一数据相关联的数据信息和加解密启动标志,写入所述中间件中设置的数据请求队列;
所述中间件,用于按照所述数据请求队列中的顺序,将所述数据请求队列中的所述第一数据相关联的数据信息,和加解密启动标志发送给所述异构计算程序;
所述异构计算程序,用于根据所述数据信息和所述加解密启动标志,调用所述异构计算单元对所述第一数据进行解加密处理。
9.根据权利要求8所述的透明加解密计算系统,其特征在于,
所述中间件,用于根据所述第二数据对应的第一数据的数据信息,对存储有所述第二数据的内存块进行标记;所述中间件设置有输出结果队列,所述输出结果队列存储有所述第二数据对应的第一数据的数据信息;所述中间件用于根据所述输出结果队列中的顺序,将所述第二数据发送给所述透明文件系统。
10.根据权利要求1所述的透明加解密计算系统,其特征在于,所述异构计算单元包括可编程逻辑器件和板卡内存;
其中,所述可编程逻辑器件,用于对所述第一数据进行加解密处理;
所述板卡内存,用于对所述第一数据和所述第二数据进行缓存。
11.根据权利要求1所述的透明加解密计算系统,其特征在于,所述操作系统和所述异构计算单元之间通过直接内存访问技术进行数据交互;
所述透明加解密计算系统还包括:
直接内存访问技术控制器,用于响应于所述异构计算程序的数据写入指令,将所述内存单元中的所述第一数据写入所述异构计算单元;以及,响应于所述异构计算程序的数据读取指令,将所述第二数据写入所述内存单元。
12.一种数据读写的方法,其特征在于,应用于基于异构计算的透明加解密计算系统,所述透明加解密计算系统包括:操作系统和异构计算单元,所述操作系统包括:部署在内核层的透明文件系统和中间件,以及部署在用户层的异构计算程序,所述方法包括:
响应于数据操作请求,将所述数据操作请求对应的第一数据写入所述中间件的内存单元;
将所述第一数据在所述内存单元中的内存地址发送至所述异构计算程序;所述异构计算程序用于根据所述内存地址,将所述内存单元中的所述第一数据写入所述异构计算单元,并由所述异构计算单元进行加解密处理,得到第二数据;
接收所述异构计算单元返回的所述第二数据,并将所述第二数据发送至所述透明文件系统;所述透明文件系统用于根据所述数据操作请求对所述第二数据进行转发。
13.根据权利要求12所述的方法,其特征在于,所述内存单元包括多个内存块,所述响应于数据操作请求,将所述数据操作请求对应的第一数据写入所述中间件的内存单元,包括:
响应于所述透明文件系统在接收到所述数据操作请求时,所调用的内存分配函数,从多个内存块中确定用于存储所述第一数据的目标内存块;
将所述第一数据写入所述目标内存块中。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
响应于所述透明文件系统在将所述第二数据转发后,所调用内存释放函数,释放所述目标内存块。
15.根据权利要求14所述的方法,其特征在于,所述多个内存块中包括已使用的内存块集合和未使用的内存块集合,所述从多个内存块中确定用于存储所述第一数据的目标内存块,包括:
从未使用的内存块集合中,确定用于存储所述第一数据的目标内存块,并将所述目标内存块从未使用的内存块集合中,移动至已使用的内存块集合中;
所述释放所述目标内存块包括:
将所述目标内存块从已使用的内存块集合中,移动至未使用的内存块集合中。
16.根据权利要求13所述的方法,其特征在于,所述接收所述异构计算单元返回的所述第二数据,并将所述第二数据发送至所述透明文件系统,包括:
接收所述异构计算单元返回的第二数据,并将所述第二数据写入所述目标内存块中;
将所述目标内存块中的所述第二数据发送给所述透明文件系统。
17.根据权利要求16所述的方法,其特征在于,所述中间件设置有输出结果队列,所述输出结果队列存储有所述第二数据对应的第一数据的数据信息,所述将所述目标内存块中的所述第二数据发送给所述透明文件系统,包括:
根据所述第二数据对应的第一数据的数据信息,对存储有所述第二数据的目标内存块进行标记;
根据所述输出结果队列中的顺序,将所述第二数据发送给所述透明文件系统。
18.根据权利要求12所述的方法,其特征在于,所述中间件中设置有数据请求队列,所述方法还包括:
根据所述数据操作请求,将与所述第一数据相关联的数据信息和加解密启动标识标志写入所述数据请求队列;
根据所述数据请求队列中的顺序,将所述第一数据相关联的数据信息和加解密启动标识标志发送给所述异构计算程序;所述异构计算程序用于根据所述第一数据相关联的数据信息和加解密启动标识标志,调用所述异构计算单元对所述第一数据进行加密处理。
19.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求12至18中任一项所述数据读写的方法。
20.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求12至18中任一项所述数据读写的方法。
CN202311656901.1A 2023-12-05 2023-12-05 基于异构计算的透明加解密计算系统、方法、设备和介质 Active CN117349870B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311656901.1A CN117349870B (zh) 2023-12-05 2023-12-05 基于异构计算的透明加解密计算系统、方法、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311656901.1A CN117349870B (zh) 2023-12-05 2023-12-05 基于异构计算的透明加解密计算系统、方法、设备和介质

Publications (2)

Publication Number Publication Date
CN117349870A CN117349870A (zh) 2024-01-05
CN117349870B true CN117349870B (zh) 2024-02-20

Family

ID=89371438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311656901.1A Active CN117349870B (zh) 2023-12-05 2023-12-05 基于异构计算的透明加解密计算系统、方法、设备和介质

Country Status (1)

Country Link
CN (1) CN117349870B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105590067A (zh) * 2015-12-17 2016-05-18 武汉理工大学 一种基于用户空间文件系统的文件加密系统
CN105760779A (zh) * 2016-02-18 2016-07-13 武汉理工大学 一种基于fuse的双向文件加密系统
CN113672960A (zh) * 2021-08-26 2021-11-19 北京中安星云软件技术有限公司 基于用户态文件系统的数据库透明加解密实现方法及系统
CN114398318A (zh) * 2022-03-25 2022-04-26 广东统信软件有限公司 用户空间文件系统的文件操作方法及用户空间文件系统
CN116861470A (zh) * 2023-09-05 2023-10-10 苏州浪潮智能科技有限公司 加解密方法、装置、计算机可读存储介质和服务器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230146076A1 (en) * 2021-11-08 2023-05-11 Rubrik, Inc. Backing file system with cloud object store

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105590067A (zh) * 2015-12-17 2016-05-18 武汉理工大学 一种基于用户空间文件系统的文件加密系统
CN105760779A (zh) * 2016-02-18 2016-07-13 武汉理工大学 一种基于fuse的双向文件加密系统
CN113672960A (zh) * 2021-08-26 2021-11-19 北京中安星云软件技术有限公司 基于用户态文件系统的数据库透明加解密实现方法及系统
CN114398318A (zh) * 2022-03-25 2022-04-26 广东统信软件有限公司 用户空间文件系统的文件操作方法及用户空间文件系统
CN116861470A (zh) * 2023-09-05 2023-10-10 苏州浪潮智能科技有限公司 加解密方法、装置、计算机可读存储介质和服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于分层文件系统的文档透明加解密方案;苏凡竣;曹斌;闾凡兵;王鹏飞;国洪新;;贵州大学学报(自然科学版)(第02期);全文 *

Also Published As

Publication number Publication date
CN117349870A (zh) 2024-01-05

Similar Documents

Publication Publication Date Title
CN110245001B (zh) 数据隔离方法及装置、电子设备
Chen et al. Enabling FPGAs in the cloud
WO2017008675A1 (zh) 一种用于虚拟化环境下传输数据的方法与设备
JP5981845B2 (ja) 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
KR101177971B1 (ko) 보호 영역 경계들에서의 오브젝트 호출 방법, 시스템 및 장치
US11290392B2 (en) Technologies for pooling accelerator over fabric
US11847225B2 (en) Blocking access to firmware by units of system on chip
CN111090869B (zh) 一种数据加密方法、处理器及计算机设备
US10467052B2 (en) Cluster topology aware container scheduling for efficient data transfer
US11863469B2 (en) Utilizing coherently attached interfaces in a network stack framework
JP2016207195A (ja) メモリ装置及び制御プログラム
WO2022021896A1 (zh) 一种进程间通信的方法及装置
CN112541166A (zh) 一种方法、系统和计算机可读存储介质
CN114281484B (zh) 数据传输方法、装置、设备及存储介质
US9424114B2 (en) Input/output (I/O) processing via a page fault doorbell mechanism
US20130073779A1 (en) Dynamic memory reconfiguration to delay performance overhead
CN117349870B (zh) 基于异构计算的透明加解密计算系统、方法、设备和介质
EP2827246A1 (en) Apparatus for configuring operating system and method therefor
US9135043B1 (en) Interface for enabling an application in a virtual machine to access high performance devices
US20200319944A1 (en) User-space parallel access channel for traditional filesystem using capi technology
US20220261489A1 (en) Capability management method and computer device
US11907120B2 (en) Computing device for transceiving information via plurality of buses, and operating method of the computing device
US20190138755A1 (en) Technologies for filtering memory access transactions received from one or more i/o devices
CN115617448A (zh) 包括存储装置及计算装置的虚拟化装置及其操作方法
WO2022083158A1 (zh) 数据处理的方法、实例以及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant