CN118138275A - 远程直接内存访问方法、装置、设备及存储介质 - Google Patents
远程直接内存访问方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN118138275A CN118138275A CN202410073929.0A CN202410073929A CN118138275A CN 118138275 A CN118138275 A CN 118138275A CN 202410073929 A CN202410073929 A CN 202410073929A CN 118138275 A CN118138275 A CN 118138275A
- Authority
- CN
- China
- Prior art keywords
- data packet
- memory access
- direct memory
- server
- remote direct
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000006854 communication Effects 0.000 claims abstract description 55
- 238000004891 communication Methods 0.000 claims abstract description 53
- 238000013524 data verification Methods 0.000 claims abstract description 42
- 238000012790 confirmation Methods 0.000 claims abstract description 24
- 230000005540 biological transmission Effects 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims description 25
- 238000012795 verification Methods 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 17
- 230000007246 mechanism Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013478 data encryption standard Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- CLVFWRBVFBUDQU-UHFFFAOYSA-N 1,4-bis(2-aminoethylamino)-5,8-dihydroxyanthracene-9,10-dione Chemical compound O=C1C2=C(O)C=CC(O)=C2C(=O)C2=C1C(NCCN)=CC=C2NCCN CLVFWRBVFBUDQU-UHFFFAOYSA-N 0.000 description 1
- 101100203322 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SKS1 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及数据传输安全技术领域,并公开了一种远程直接内存访问方法、装置、设备及存储介质,该方法包括:将待传输通信数据切分为若干数据包,并对若干数据包进行认证加密,得到加密数据包;基于与服务方交换的会话密钥将加密数据包传输至服务方,以使服务方对加密数据包进行数据验证;若加密数据包通过服务方的数据验证,则基于加密数据包对服务方进行远程直接内存访问;当接收到服务方反馈的确认字符时,结束远程直接内存访问。本发明通过请求方与服务方之间的会话密钥来对带传输通信数据对应的加密数据包进行验证和传输,使得远程直接内存访问通信时敏感信息对未认证方不可见,而认证双方可以验证和获得明文数据,提升了内存访问的安全性。
Description
技术领域
本发明涉及数据传输安全技术领域,尤其涉及一种远程直接内存访问方法、装置、设备及存储介质。
背景技术
RDMA(Remote Direct Memory Access,远程直接内存访问)是一种用于高性能计算和数据中心网络中的数据传输技术,它允许主机之间直接访问彼此的内存,而无需CPU(Central Processing Unit,中央处理器)的参与。这种直接访问可以提高数据传输的速度和效率,因为它绕过了传统的数据传输路径,如TCP(Transmission Control Protocol,传输控制协议)/IP(Internet Protocol,网际互连协议)协议栈,减少了数据包在网络中的传输时间和CPU的负担。
目前,远程直接内存访问技术虽然在高性能计算和数据中心网络中有着显著的优势,但它也存在着一些安全问题。其中包括:明文访问令牌:当前的RDMA技术使用明文访问令牌来强制隔离和防止未经授权的对系统内存的访问。这些明文访问令牌容易被获取或猜测,从而导致对内存位置的读取和写入,损害了保密性和完整性。网络安全假设:RDMA体系结构依赖于隔离,并假设底层网络是受到良好保护的资源。然而,如果网络受到攻击者的攻击,如窃听或恶意交换机,便可以窃听绕过数据包的访问令牌。缺乏加密和认证:当前的RDMA规范不包括对RDMA数据包的加密和认证,这使得数据在传输过程中容易受到未经授权的访问和篡改。潜在的漏洞和攻击:针对InfiniBand设计中的多个漏洞和缺陷,以及支持RDMA的网络接口卡(RNIC)的实现,可能会导致对RDMA网络进行强大的攻击,如未经授权的内存访问或基于数据包注入破坏现有连接。因此,对远程直接内存访问的安全性进行进一步的研究和改进是行业内的重要研究方向之一。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供了一种远程直接内存访问方法、装置、设备及存储介质,旨在解决如何提升在远程直接内存访问执行过程中安全性的技术问题。
为实现上述目的,本发明提供了一种远程直接内存访问方法,所述方法应用于请求方,所述方法包括以下步骤:
将待传输通信数据切分为若干数据包,并对所述若干数据包进行认证加密,得到加密数据包;
基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证;
若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问;
当接收到所述服务方反馈的确认字符时,结束远程直接内存访问,所述确认字符用于表示所述待传输通信数据已安全传输完毕。
可选地,所述对所述若干数据包进行认证加密,得到加密数据包的步骤,包括:
对所述若干数据包中的每个数据包添加固定长度的安全认证头,并将所述安全认证头加入至数据包的有效载荷中,得到认证数据包;
通过预设加密算法对所述认证数据包的数据负载进行加密运算,得到加密数据包。
可选地,所述对所述若干数据包中的每个数据包添加固定长度的安全认证头的步骤,包括:
获取请求方智能网卡对应的请求方端口地址和请求方队列号,获取服务方智能网卡对应的服务方端口地址和服务方队列号,获取数据包序号、保护域根密钥、内存起始地址、远程许可地址和伪随机函数;
基于所述伪随机函数、所述保护域根密钥、所述请求方端口地址、所述请求方队列号、所述服务方端口地址和所述服务方队列号确定会话密钥;
基于所述会话密钥、所述数据包序号、所述内存起始地址和所述远程许可地址对所述若干数据包中的每个数据包添加固定长度的安全认证头。
可选地,所述基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证的步骤之前,还包括:
通过SSL握手机制或TLS握手机制与服务方进行数据交换,并在数据交换过程中获取所述服务方发送过来的会话密钥。
可选地,所述若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问的步骤,包括:
若所述加密数据包通过所述服务方的数据验证,则通过所述服务方对所述加密数据包进行解密,得到明文数据;
将所述明文数据通过PCLe传输至所述服务方的主内存器,并在所述主内存器中对所述服务方进行远程直接内存访问。
此外,为实现上述目的,本发明还提出一种远程直接内存访问方法,所述方法应用于服务方,所述方法包括以下步骤:
当接收到请求方发送的加密数据包时,对所述加密数据包进行数据验证;
若所述加密数据包通过数据验证,则对所述加密数据包进行解密后得到明文数据;
基于所述明文数据执行远程直接内存访问进程,并在检测到所述远程直接内存访问进程结束时,向所述请求方反馈确认字符。
可选地,所述当接收到请求方发送的加密数据包时,对所述加密数据包进行数据验证的步骤,包括:
当接收到请求方发送的加密数据包时,基于会话密钥对所述加密数据包进行数据包头验证;
若所述加密数据包未通过数据包头验证,则丢弃所述加密数据包;
若所述加密数据包通过数据包头验证,则对所述加密数据包进行解密。
此外,为实现上述目的,本发明还提出一种远程直接内存访问装置,所述远程直接内存访问装置包括:
数据加密模块,用于将待传输通信数据切分为若干数据包,并对所述若干数据包进行认证加密,得到加密数据包;
数据验证模块,用于基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证;
数据访问模块,用于若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问;
传输反馈模块,用于当接收到所述服务方反馈的确认字符时,结束远程直接内存访问,所述确认字符用于表示所述待传输通信数据已安全传输完毕。
此外,为实现上述目的,本发明还提出一种远程直接内存访问设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的远程直接内存访问程序,所述远程直接内存访问程序配置为实现如上文所述的远程直接内存访问方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有远程直接内存访问程序,所述远程直接内存访问程序被处理器执行时实现如上文所述的远程直接内存访问方法的步骤。
本发明通过将待传输通信数据切分为若干数据包,并对所述若干数据包进行认证加密,得到加密数据包;基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证;若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问;当接收到所述服务方反馈的确认字符时,结束远程直接内存访问,所述确认字符用于表示所述待传输通信数据已安全传输完毕。相比于传统的远程直接内存访问方法,由于本发明上述方法通过请求方与服务方之间的会话密钥来对带传输通信数据对应的加密数据包进行验证和传输,从而以现有远程直接内存访问服务结构为基础,实现了对远程直接内存访问协议数据包的最小程度修改,使得远程直接内存访问通信时敏感信息对未认证方不可见,而认证双方可以验证和获得明文数据,进而提升了远程直接内存访问执行过程中的安全性。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的远程直接内存访问设备的结构示意图;
图2为本发明远程直接内存访问方法第一实施例的流程示意图;
图3为本发明远程直接内存访问方法中请求方与服务方的通信流程示意图;
图4为本发明远程直接内存访问方法第二实施例的流程示意图;
图5为本发明远程直接内存访问方法第三实施例的流程示意图;
图6为本发明远程直接内存访问装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的远程直接内存访问设备结构示意图。
如图1所示,该远程直接内存访问设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,Wi-Fi)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM),也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对远程直接内存访问设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及远程直接内存访问程序。
在图1所示的远程直接内存访问设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明远程直接内存访问设备中的处理器1001、存储器1005可以设置在远程直接内存访问设备中,所述远程直接内存访问设备通过处理器1001调用存储器1005中存储的远程直接内存访问程序,并执行本发明实施例提供的远程直接内存访问方法。
本发明实施例提供了一种远程直接内存访问方法,所述方法应用于请求方,参照图2,图2为本发明远程直接内存访问方法第一实施例的流程示意图。
本实施例中,所述远程直接内存访问方法包括以下步骤:
步骤S10:将待传输通信数据切分为若干数据包,并对所述若干数据包进行认证加密,得到加密数据包。
需要说明的是,本实施例方法的执行主体可以是具有数据传输、数据处理以及程序运行功能的终端设备,例如智能手机、计算机等,也可以是具有相同或相似功能的电子设备,例如上述远程直接内存访问设备。以下以远程直接内存访问设备(以下简称访问设备)中的请求方为例对本实施例及下述各实施例进行说明。
可理解的是,上述待传输通信数据可以是指在通信过程中需要传输的数据,这些数据可以是文本、图片、音频、视频等各种类型,本实施例对此不加以限制。
在具体实现中,可以基于以下步骤来将上述待传输通信数据切分为若干数据包。第一步,确定数据包大小:数据包的大小可以根据实际需求和网络条件进行选择,如果数据包太大,可能会导致网络拥堵;而如果数据包太小,则可能会导致过多的网络开销。第二步,数据切割:根据确定的数据包大小将原始的通信数据切割成若干个小的数据块,每个数据块即为一个个的数据包。第三步,添加控制信息:为了控制和管理数据包的传输,需要在每个数据包前面添加一些控制信息,如数据包的序号、目标地址、源地址等,这些控制信息可以帮助接收端正确地重新组合数据包并恢复原始数据。
步骤S20:基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证。
需要说明的是,本实施例中的执行主体请求方可以由请求方智能网卡(可以用SmartNIC A来表示)和请求方主机(可以用Host A来表示)组成,上述服务方可以由服务方智能网卡(可以用SmartNIC B来表示)和服务方主机(可以用Host A来表示)组成。更具体地,上述请求方智能网卡和服务方智能网卡也可以称为智能网络适配器,是一种特殊的网络接口卡。与传统网卡相比,智能网络适配器的主要特点是通过FPGA(Field ProgrammableGate Array,现场可编程门阵列)协助CPU处理网络负载,实现网络接口的编程功能。这使得智能网络适配器能够大幅度降低CPU在通信中的消耗,提升应用的性能,并释放昂贵的HostCPU资源,将计算能力还给应用程序。此外,智能网络适配器还具有内置的可编程、可配置的硬件加速引擎,这使得它能够实现基于服务器的复杂网络数据平面功能,如多匹配操作处理、计量整形、流统计等。同时,它也支持网络的可编程性,可以通过更新的固件或客户编程进行升级。
在具体实现中,可以通过TLS(Transport Layer Security,安全传输层协议)、QUIC(Quick UDP Internet Connections,快速UDP网络连接)握手机制来交换请求方与服务方的会话密钥。
应理解的是,上述会话密钥可以是服务方与请求方在安全通信中使用的密钥,用于加密和解密通信数据。会话密钥是在两个通信方之间建立安全连接时生成的,仅用于该特定连接,并通常在数据传输完成后丢弃。会话密钥的目的是确保通信数据的机密性和完整性,防止未经授权的访问和篡改。
步骤S30:若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问。
在具体实现中,若上述加密数据包通过上述服务方的数据验证,则可以认为该服务方是可信任的,因此可以通过对加密数据包执行解密运算后将加密数据包变换映射为原数据(即上述待传输通信数据),然后将原数据批量DMA(Direct Memory Access,直接内存访问)到服务方主存内。
步骤S40:当接收到所述服务方反馈的确认字符时,结束远程直接内存访问,所述确认字符用于表示所述待传输通信数据已安全传输完毕。
需要说明的是,上述确认字符(Acknowledge character,ACK)可以为一种传输类控制字符,用于表示所述待传输通信数据已安全传输完毕。
在具体实现中,可以参考图3,图3为本发明远程直接内存访问方法中请求方与服务方的通信流程示意图,根据图3可以将请求方与服务方的通信过程总结为以下步骤。第一步:请求方与服务方建立连接,服务方派生出会话密钥,并将会话密钥交换至请求方。第二步:为RDMA通信做好准备,交换通信必要的数据。第三步:请求方对待传输通信数据切分为数据包后,为每个数据包添加安全认证头并加密负载。第四步:服务方对数据包逐个验证,利用分发的会话密钥对每个数据包进行验证。第五步:未通过验证的数据包将被直接丢弃,重复包、缺失包由可靠性连接的RDMA机制解决。第六步:对通过验证的数据包执行解密操作,将密文变换为明文数据。第七步:将明文数据DMA到服务方主存中,同时将DMA信号量反馈回请求方,反馈本次通信结果。
本实施例通过将待传输通信数据切分为若干数据包,并对所述若干数据包进行认证加密,得到加密数据包;基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证;若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问;当接收到所述服务方反馈的确认字符时,结束远程直接内存访问,所述确认字符用于表示所述待传输通信数据已安全传输完毕。相比于传统的远程直接内存访问方法,由于本实施例上述方法通过请求方与服务方之间的会话密钥来对带传输通信数据对应的加密数据包进行验证和传输,从而以现有远程直接内存访问服务结构为基础,实现了对远程直接内存访问协议数据包的最小程度修改,使得远程直接内存访问通信时敏感信息对未认证方不可见,而认证双方可以验证和获得明文数据,进而提升了远程直接内存访问执行过程中的安全性。
参考图4,图4为本发明远程直接内存访问方法第二实施例的流程示意图。
基于上述第一实施例,在本实施例中,所述步骤S10,可以包括:
步骤S101:对所述若干数据包中的每个数据包添加固定长度的安全认证头,并将所述安全认证头加入至数据包的有效载荷中,得到认证数据包。
步骤S102:通过预设加密算法对所述认证数据包的数据负载进行加密运算,得到加密数据包。
在具体实现中,可以将待传输通信数据切分为若干scatter gather数据包后,对每个数据包的包头执行验证,对数据负载执行加密运算。验证头加入到payload前n-bit字节中,根据实际场景需要,可以调整n为128,192,256,512等不同长度,同时也支持多种哈希验证算法,包括但不限于SHA(Secure Hash Algorithm,安全散列算法),SHA2-256,SHA3系列等。加密算法支持DES(Data Encryption Standard,数据加密标准),AES(AdvancedEncryption Standard,高级加密标准)等主流加密算法。针对同时需要将数据包头和数据负载纳入验证,但只对数据负载加密的场景,支持认证加密,包括AES-CCM,AES-GCM。
进一步地,在本实施例中,所述步骤S102可以包括:
步骤S1021:获取请求方智能网卡对应的请求方端口地址和请求方队列号,获取服务方智能网卡对应的服务方端口地址和服务方队列号,获取数据包序号、保护域根密钥、内存起始地址、远程许可地址和伪随机函数。
步骤S1022:基于所述伪随机函数、所述保护域根密钥、所述请求方端口地址、所述请求方队列号、所述服务方端口地址和所述服务方队列号确定会话密钥。
步骤S1023:基于所述会话密钥、所述数据包序号、所述内存起始地址和所述远程许可地址对所述若干数据包中的每个数据包添加固定长度的安全认证头。
在具体实现中,假设请求方SmartNIC A的端口地址为APA,队列号为QPNA,服务方SmartNIC B的端口地址为APB,队列号为QPNB,数据包序号为nonceA->B,保护域根密钥为KPD,用于服务A的内存起始地址为SMR、EMR,远程许可地址r_keyMR,伪随机函数为PRF。首先可以推导会话密钥该密钥可以用于RDMA支持的两端安全通信。若执行远程内存操作,则进一步地,推导远程内存资源密钥内存资源密钥用于生成保护远程内存的安全验证头。具体的,SMR是注册内存的起始虚拟地址,EMR是注册内存的结束虚拟地址,r_keyMR是RDMA协议栈中原生用于远程验证权限的钥匙,本质是一个二进制串。以端口地址APA,队列号QPNA,服务方SmartNIC B的端口地址APB,队列号QPNB,数据包序号nonceA->B,会话密钥KA,B,生成安全验证头/>若开启内存保护,则在以上验证头基础上添加内存密钥用于进一步生成包含内存权限的安全验证头更进一步地,将所述的安全验证头hdr添加入原RDMA数据负载中,数据发送至SmartNIC B,便于服务端SmartNIC B做完整性验证。若需同时对数据负载做加密运算,可以选用AES-GCM AEAD。具体的,AES-GCM包括如下步骤:选择一个随机的128位初始化向量IV;使用密钥KA,B对数据负载进行加密,得到密文C;计算GCM模式的认证标签T,GCM模式的认证标签计算公式为:T=AES-GCM-Tag(K,IV,C,A)。A为附加认证数据,T=AES-GCM-Tag(KA,B,IV,C,IP||UDP||QPNB||nonceA->B||KMR)。安全认证标签T用于SmartNIC B验证,密文C用于保护数据负载,直到被SmartNIC B接收并解密。
基于上述第一实施例,在本实施例中,在所述步骤S30之前,还可以包括:
步骤S21:通过SSL握手机制或TLS握手机制与服务方进行数据交换,并在数据交换过程中获取所述服务方发送过来的会话密钥。
基于上述第一实施例,在本实施例中,所述步骤S30,可以包括:
步骤S301:若所述加密数据包通过所述服务方的数据验证,则通过所述服务方对所述加密数据包进行解密,得到明文数据。
步骤S302:将所述明文数据通过PCLe传输至所述服务方的主内存器,并在所述主内存器中对所述服务方进行远程直接内存访问。
应理解的是,上述PCLe(Peripheral Component Interconnect Express,高速周边互联)是一种高速串行计算机扩展总线标准,属于高速串行点对点双通道高带宽传输,具有高速、高带宽、低延迟的特性。相比传统的并口总线(如PCI和AGP),PCIe的数据传输速率更高,可以更好地满足高性能设备的需求。同时,PCIe采用了点对点的串行通信方式,每个设备都可以直接与主机进行通信,无需通过总线仲裁,从而降低了数据传输的延迟。
本实施例通过获取请求方智能网卡对应的请求方端口地址和请求方队列号,获取服务方智能网卡对应的服务方端口地址和服务方队列号,获取数据包序号、保护域根密钥、内存起始地址、远程许可地址和伪随机函数;基于所述伪随机函数、所述保护域根密钥、所述请求方端口地址、所述请求方队列号、所述服务方端口地址和所述服务方队列号确定会话密钥;基于所述会话密钥、所述数据包序号、所述内存起始地址和所述远程许可地址对所述若干数据包中的每个数据包添加固定长度的安全认证头,并将所述安全认证头加入至数据包的有效载荷中,得到认证数据包;通过预设加密算法对所述认证数据包的数据负载进行加密运算,得到加密数据包;通过SSL握手机制或TLS握手机制与服务方进行数据交换,并在数据交换过程中获取所述服务方发送过来的会话密钥;若所述加密数据包通过所述服务方的数据验证,则通过所述服务方对所述加密数据包进行解密,得到明文数据;将所述明文数据通过PCLe传输至所述服务方的主内存器,并在所述主内存器中对所述服务方进行远程直接内存访问。相较于传统的远程直接内存访问方法,本实施例上述方法利用PD内的根密钥派生出用于通信的会话密钥,从而进一步提升了远程直接内存访问过程中的安全性。
此外,本发明实施例还提供了一种远程直接内存访问方法,所述方法应用于服务方,参照图5,图5为本发明远程直接内存访问方法第三实施例的流程示意图。
本实施例中,所述远程直接内存访问方法包括以下步骤:
步骤S1:当接收到请求方发送的加密数据包时,对所述加密数据包进行数据验证。
步骤S2:若所述加密数据包通过数据验证,则对所述加密数据包进行解密后得到明文数据。
步骤S3:基于所述明文数据执行远程直接内存访问进程,并在检测到所述远程直接内存访问进程结束时,向所述请求方反馈确认字符。
基于上述各实施例,在本实施例中,所述步骤S1,可以包括:
步骤S11:当接收到请求方发送的加密数据包时,基于会话密钥对所述加密数据包进行数据包头验证。
步骤S12:若所述加密数据包未通过数据包头验证,则丢弃所述加密数据包。
步骤S13:若所述加密数据包通过数据包头验证,则对所述加密数据包进行解密。
本实施例通过当接收到请求方发送的加密数据包时,基于会话密钥对所述加密数据包进行数据包头验证;若所述加密数据包未通过数据包头验证,则丢弃所述加密数据包;若所述加密数据包通过数据包头验证,则对所述加密数据包进行解密;若所述加密数据包通过数据验证,则对所述加密数据包进行解密后得到明文数据;基于所述明文数据执行远程直接内存访问进程,并在检测到所述远程直接内存访问进程结束时,向所述请求方反馈确认字符。相比于传统的远程直接内存访问方法,由于本实施例上述方法通过请求方与服务方之间的会话密钥来对带传输通信数据对应的加密数据包进行验证和传输,从而以现有远程直接内存访问服务结构为基础,实现了对远程直接内存访问协议数据包的最小程度修改,使得远程直接内存访问通信时敏感信息对未认证方不可见,而认证双方可以验证和获得明文数据,进而提升了远程直接内存访问执行过程中的安全性。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有远程直接内存访问程序,所述远程直接内存访问程序被处理器执行时实现如上文所述的远程直接内存访问方法的步骤。
参照图6,图6为本发明远程直接内存访问装置第一实施例的结构框图。
如图6所示,本发明实施例提出的远程直接内存访问装置包括:
数据加密模块601,用于将待传输通信数据切分为若干数据包,并对所述若干数据包进行认证加密,得到加密数据包;
数据验证模块602,用于基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证;
数据访问模块603,用于若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问;
传输反馈模块604,用于当接收到所述服务方反馈的确认字符时,结束远程直接内存访问,所述确认字符用于表示所述待传输通信数据已安全传输完毕。
本实施例通过将待传输通信数据切分为若干数据包,并对所述若干数据包进行认证加密,得到加密数据包;基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证;若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问;当接收到所述服务方反馈的确认字符时,结束远程直接内存访问,所述确认字符用于表示所述待传输通信数据已安全传输完毕。相比于传统的远程直接内存访问方法,由于本实施例上述方法通过请求方与服务方之间的会话密钥来对带传输通信数据对应的加密数据包进行验证和传输,从而以现有远程直接内存访问服务结构为基础,实现了对远程直接内存访问协议数据包的最小程度修改,使得远程直接内存访问通信时敏感信息对未认证方不可见,而认证双方可以验证和获得明文数据,进而提升了远程直接内存访问执行过程中的安全性。
基于本发明上述远程直接内存访问装置的第一实施例,提出本发明远程直接内存访问装置的第二实施例。
在本实施例中,所述数据加密模块601,还用于对所述若干数据包中的每个数据包添加固定长度的安全认证头,并将所述安全认证头加入至数据包的有效载荷中,得到认证数据包;通过预设加密算法对所述认证数据包的数据负载进行加密运算,得到加密数据包。
进一步地,所述数据加密模块601,还用于获取请求方智能网卡对应的请求方端口地址和请求方队列号,获取服务方智能网卡对应的服务方端口地址和服务方队列号,获取数据包序号、保护域根密钥、内存起始地址、远程许可地址和伪随机函数;基于所述伪随机函数、所述保护域根密钥、所述请求方端口地址、所述请求方队列号、所述服务方端口地址和所述服务方队列号确定会话密钥;基于所述会话密钥、所述数据包序号、所述内存起始地址和所述远程许可地址对所述若干数据包中的每个数据包添加固定长度的安全认证头。
进一步地,所述数据验证模块602,还用于通过SSL握手机制或TLS握手机制与服务方进行数据交换,并在数据交换过程中获取所述服务方发送过来的会话密钥。
进一步地,所述数据访问模块603,还用于若所述加密数据包通过所述服务方的数据验证,则通过所述服务方对所述加密数据包进行解密,得到明文数据;将所述明文数据通过PCLe传输至所述服务方的主内存器,并在所述主内存器中对所述服务方进行远程直接内存访问。
进一步地,所述传输反馈模块604,还用于当接收到请求方发送的加密数据包时,对所述加密数据包进行数据验证;若所述加密数据包通过数据验证,则对所述加密数据包进行解密后得到明文数据;基于所述明文数据执行远程直接内存访问进程,并在检测到所述远程直接内存访问进程结束时,向所述请求方反馈确认字符。
进一步地,所述传输反馈模块604,还用于当接收到请求方发送的加密数据包时,基于会话密钥对所述加密数据包进行数据包头验证;若所述加密数据包未通过数据包头验证,则丢弃所述加密数据包;若所述加密数据包通过数据包头验证,则对所述加密数据包进行解密。
本发明远程直接内存访问装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种远程直接内存访问方法,其特征在于,所述方法应用于请求方,所述方法包括以下步骤:
将待传输通信数据切分为若干数据包,并对所述若干数据包进行认证加密,得到加密数据包;
基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证;
若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问;
当接收到所述服务方反馈的确认字符时,结束远程直接内存访问,所述确认字符用于表示所述待传输通信数据已安全传输完毕。
2.如权利要求1所述的远程直接内存访问方法,其特征在于,所述对所述若干数据包进行认证加密,得到加密数据包的步骤,包括:
对所述若干数据包中的每个数据包添加固定长度的安全认证头,并将所述安全认证头加入至数据包的有效载荷中,得到认证数据包;
通过预设加密算法对所述认证数据包的数据负载进行加密运算,得到加密数据包。
3.如权利要求2所述的远程直接内存访问方法,其特征在于,所述对所述若干数据包中的每个数据包添加固定长度的安全认证头的步骤,包括:
获取请求方智能网卡对应的请求方端口地址和请求方队列号,获取服务方智能网卡对应的服务方端口地址和服务方队列号,获取数据包序号、保护域根密钥、内存起始地址、远程许可地址和伪随机函数;
基于所述伪随机函数、所述保护域根密钥、所述请求方端口地址、所述请求方队列号、所述服务方端口地址和所述服务方队列号确定会话密钥;
基于所述会话密钥、所述数据包序号、所述内存起始地址和所述远程许可地址对所述若干数据包中的每个数据包添加固定长度的安全认证头。
4.如权利要求1所述的远程直接内存访问方法,其特征在于,所述基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证的步骤之前,还包括:
通过SSL握手机制或TLS握手机制与服务方进行数据交换,以使所述服务方获得端口地址、队列号、伪随机函数和保护域根密钥;
获取所述服务方发送过来的会话密钥,所述会话密钥由所述服务方基于所述端口地址、所述队列号、所述伪随机函数和所述保护域根密钥进行推导派生后生成。
5.如权利要求1所述的远程直接内存访问方法,其特征在于,所述若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问的步骤,包括:
若所述加密数据包通过所述服务方的数据验证,则通过所述服务方对所述加密数据包进行解密,得到明文数据;
将所述明文数据通过PCLe传输至所述服务方的主内存器,并在所述主内存器中对所述服务方进行远程直接内存访问。
6.一种远程直接内存访问方法,其特征在于,所述方法应用于服务方,所述方法包括以下步骤:
当接收到请求方发送的加密数据包时,对所述加密数据包进行数据验证;
若所述加密数据包通过数据验证,则对所述加密数据包进行解密后得到明文数据;
基于所述明文数据执行远程直接内存访问进程,并在检测到所述远程直接内存访问进程结束时,向所述请求方反馈确认字符。
7.如权利要求6所述的远程直接内存访问方法,其特征在于,所述当接收到请求方发送的加密数据包时,对所述加密数据包进行数据验证的步骤,包括:
当接收到请求方发送的加密数据包时,基于会话密钥对所述加密数据包进行数据包头验证;
若所述加密数据包未通过数据包头验证,则丢弃所述加密数据包;
若所述加密数据包通过数据包头验证,则对所述加密数据包进行解密。
8.一种远程直接内存访问装置,其特征在于,所述远程直接内存访问装置包括:
数据加密模块,用于将待传输通信数据切分为若干数据包,并对所述若干数据包进行认证加密,得到加密数据包;
数据验证模块,用于基于与服务方交换的会话密钥将所述加密数据包传输至所述服务方,以使所述服务方对所述加密数据包进行数据验证;
数据访问模块,用于若所述加密数据包通过所述服务方的数据验证,则基于所述加密数据包对所述服务方进行远程直接内存访问;
传输反馈模块,用于当接收到所述服务方反馈的确认字符时,结束远程直接内存访问,所述确认字符用于表示所述待传输通信数据已安全传输完毕。
9.一种远程直接内存访问设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的远程直接内存访问程序,所述远程直接内存访问程序配置为实现如权利要求1至7中任一项所述的远程直接内存访问方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有远程直接内存访问程序,所述远程直接内存访问程序被处理器执行时实现如权利要求1至7中任一项所述的远程直接内存访问方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410073929.0A CN118138275A (zh) | 2024-01-18 | 2024-01-18 | 远程直接内存访问方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410073929.0A CN118138275A (zh) | 2024-01-18 | 2024-01-18 | 远程直接内存访问方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118138275A true CN118138275A (zh) | 2024-06-04 |
Family
ID=91229375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410073929.0A Pending CN118138275A (zh) | 2024-01-18 | 2024-01-18 | 远程直接内存访问方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118138275A (zh) |
-
2024
- 2024-01-18 CN CN202410073929.0A patent/CN118138275A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110999248B (zh) | 使用片上系统(SoC)体系结构的安全通信加速 | |
US11792169B2 (en) | Cloud storage using encryption gateway with certificate authority identification | |
US11768964B2 (en) | Security plugin for a system-on-a-chip platform | |
US7685436B2 (en) | System and method for a secure I/O interface | |
US9456002B2 (en) | Selective modification of encrypted application layer data in a transparent security gateway | |
JP2023116573A (ja) | クライアント-クラウドまたはリモートサーバーの安全なデータまたはファイル・オブジェクト暗号化ゲートウェイ | |
Taranov et al. | {sRDMA}--Efficient {NIC-based} Authentication and Encryption for Remote Direct Memory Access | |
US10680816B2 (en) | Method and system for improving the data security during a communication process | |
US10699031B2 (en) | Secure transactions in a memory fabric | |
CN109428867A (zh) | 一种报文加解密方法、网路设备及系统 | |
US10715332B2 (en) | Encryption for transactions in a memory fabric | |
US9979550B1 (en) | Methods of facilitating packet-based connections | |
WO2018231519A1 (en) | Cloud storage using encryption gateway with certificate authority identification | |
EP2558946B1 (en) | Method and system for cryptographic processing core | |
US11677727B2 (en) | Low-latency MACsec authentication | |
CN118138275A (zh) | 远程直接内存访问方法、装置、设备及存储介质 | |
EP2683112B1 (en) | Secure message transmission | |
Song et al. | Research on High Performance IPSec VPN Technology Based on National Cryptographic Algorithms | |
CN116865993A (zh) | 数据传输方法、装置、电子设备及存储介质 | |
Matharu | Exploiting SSL/TLS Vulnerabilities in Modern Technologies | |
Hooda et al. | A new approach to design programmable secure network interface card |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |