CN115333859B - 一种基于芯片方案的IPsec协议报文加密及解密方法 - Google Patents
一种基于芯片方案的IPsec协议报文加密及解密方法 Download PDFInfo
- Publication number
- CN115333859B CN115333859B CN202211237561.4A CN202211237561A CN115333859B CN 115333859 B CN115333859 B CN 115333859B CN 202211237561 A CN202211237561 A CN 202211237561A CN 115333859 B CN115333859 B CN 115333859B
- Authority
- CN
- China
- Prior art keywords
- message
- network
- data
- protocol
- type
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/166—Implementing security features at a particular protocol layer at the transport layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于芯片方案的IPsec协议报文加密及解密方法,加密方法包括:接收内网明文网口的以太网数据包;解析以太网数据包的网络报文;当网络报文的类型为IPsec协议待ESP封装加密的报文时,查询SA;如果查询到SA,获取第一报文长度;当第一报文长度大于配置下发的MTU值时,启动原始报文分片,并以网络报文的MAC和IP头为基础,产生一个ICMP类型3代码4的报文;将ICMP类型3代码4的报文通过内网明文网口发出,通知内网明文网口的外接设备,改小MTU值,停止发送超长数据包;将分片后的两包数据增加网络报文的IP头信息后,分别进行ESP头封装及产生报文序列号;进而形成完整的IPsec加密数据包。该加密方法简化了硬件实现复杂度,保证了网络数据的实时处理性能。
Description
技术领域
本发明涉及安全通信技术领域,特别涉及一种基于芯片方案的IPsec协议报文加密及解密方法。
背景技术
随着互联网技术的不断发展,网络数据流量呈现指数级别的增长,为确保网络通讯数据的安全,高速的网络数据加密显得尤为重要。在很多网络场景部署中,对高性能、低成本的网络安全网关及相关网络安全芯片的需求越来越迫切。
目前主流的安全网关产品,基本都是基于安全套接层协议(SSL)或者互联网安全协议(IPsec)等VPN(Virtual Private Network虚拟专用网络)方式实现。基于SSL协议安全网关基本都是基于软件实现,单口的网络性能和延时都很难保障。基于IPsec协议安全网关的实现方案基于IP协议,通常处理方式均是采用了发送端数据包分片,接收端数据包重组的方式,该方式逻辑设计复杂,资源占用较多,硬件实现难度很大。
因此,在现有网络安全网关技术实现的基础上,如何降低IPsec协议实现过程中对硬件实现资源的占用以及设计复杂度,成为本领域技术人员亟需解决的问题。
发明内容
鉴于上述问题,本发明提出了一种至少解决上述部分技术问题的基于芯片方案的IPsec协议报文加密及解密方法,该方法可简化硬件实现复杂度,并保证网络数据的实时处理性能。
本发明实施例提供一种基于芯片方案的IPsec协议报文加密方法,包括:
接收内网明文网口的以太网数据包;解析所述以太网数据包的网络报文,得到第一报文信息;所述第一报文信息包括:MAC地址、以太网数据类型、IP地址、IP报文协议类型和UDP的端口号;
判断所述网络报文的类型;当所述网络报文的类型为IPsec协议待ESP封装加密的报文时,通过IP地址或者端口号查询SA;如果查询到SA,获取第一报文长度;所述第一报文长度为所述网络报文的长度与所述网络报文后续进行ESP封装增加的数据长度之和;
当所述第一报文长度大于配置下发的MTU值时,启动原始报文分片,生成分片后的两包数据;
将所述分片后的两包数据增加所述网络报文的IP头信息后,分别进行ESP头封装,分别产生报文序列号;
对所述分片后的两包数据,分别进行数据填充及ESP尾增加;启动数据加密并计算完整性校验值;
依据所述SA,查询配置下发的SAD表和隧道表,得到组数据IP头和MAC头所需信息,对加密和增加校验值后的数据进行以太网组包,形成完整的IPsec加密数据包;
将所述IPsec加密数据包发送到密文网口。
进一步地,判断所述网络报文的类型之后,还包括:
当所述网络报文的类型为ARP报文时,对所述网络报文进行缓存;
将缓存后的所述网络报文转发到内部虚拟网口,通过所述内部虚拟网口转发到内部CPU中。
进一步地,判断所述网络报文的类型之后,还包括:
当CPU软件处理ARP协议,响应回复报文时,将所述回复报文通过所述内部虚拟网口转发到内网明文网口;通过所述内网明文网口发送到内网,完成MAC地址的寻址工作。
进一步地,当所述网络报文的类型为IPsec协议待ESP封装加密的报文时,通过IP地址或者端口号查询SA之后,还包括:
如果未查询到SA,则丢弃当前数据包,同时启动内部CPU的IKE功能,进行SA的协商或者更新。
进一步地,当所述第一报文长度大于配置下发的MTU值时之后,还包括:
以所述网络报文的MAC和IP头为基础,产生一个ICMP类型3代码4的报文;
将所述ICMP类型3代码4的报文通过内网明文网口发出,通知所述内网明文网口的外接设备,改小MTU值,停止发送超长数据包。
本发明实施例还提供一种基于芯片方案的IPsec协议报文解密方法,所述密文网口的以太网数据包由上述任一项所述的基于芯片方案的IPsec协议报文加密方法生成,该解密方法包括:
接收密文网口的以太网数据包;解析所述以太网数据包的网络报文,得到第二报文信息;所述第二报文信息包括:MAC地址、以太网数据类型、IP头和UDP头;
判断所述网络报文的类型;当所述网络报文的类型为IPsec协议待ESP封装解密的报文时,获取所述网络报文的长度;当所述网络报文的长度小于或等于配置下发的MTU值时,根据所述网络报文内部的SPI信息通过查询对应的SPD表查询SA;如果查询到SA,则对所述网络报文进行序列号验证;
对所述网络报文进行数据解密及数据完整性校验;
对解密及数据完整性校验成功的所述网络报文,依据明文报文的IP信息查询配置下发的MAC表,将所述网络报文增加MAC头后组包发送到明文网口。
进一步地,判断所述网络报文的类型之后,还包括:
当所述网络报文的类型不是IPsec协议待ESP封装解密的报文时,明确所述网络报文是否为ARP或者IKE报文;如果为ARP或者IKE报文,则缓存后,将所述网络报文转发到内部虚拟网口,并发送到内部CPU,由软件处理ARP协议和IKE协议。
进一步地,判断所述网络报文的类型之后,还包括:
当所述网络报文的类型既不是IPsec协议待ESP封装解密的报文,也不是ARP或者IKE报文时,判断所述网络报文是否为ICMP类型3代码4的报文;如果是ICMP类型3代码4的报文,则完全解析所述网络报文,得到MTU值并保存。
进一步地,获取所述网络报文的长度之后,还包括:
当所述网络报文的长度大于配置下发的MTU值时,丢弃所述网络报文;同时以所述网络报文的MAC和IP头为基础,产生一个ICMP类型3代码4的报文;
将所述ICMP类型3代码4的报文由密文网口发出,通知所述密文网口的外接设备,改小MTU值,停止发送超长数据包。
进一步地,当所述网络报文的长度小于或等于配置下发的MTU值时,根据所述网络报文内部的SPI信息通过查询对应的SPD表查询SA之后,还包括:
如果未查询到SA,则启动内部CPU的IKE功能,进行SA的协商或更新,同时丢弃所述网络报文。
进一步地,对解密及数据完整性校验成功的所述网络报文,查询配置下发的MAC表之后,还包括:
如果未查询到所述网络报文对应的MAC地址,则丢弃所述网络报文;同时将所述明文报文的IP信息上报内部CPU,CPU软件通过内部虚拟网口利用ARP协议,在内网中查询所述IP信息对应的MAC地址,以备后续数据使用。
进一步地,通过CPU的内部总线实现配置下发流程。
本发明实施例提供的上述技术方案的有益效果至少包括:
本发明实施例提供的一种基于芯片方案的IPsec协议报文加密方法,包括:接收内网明文网口的以太网数据包;解析以太网数据包的网络报文;判断网络报文的类型;当网络报文的类型为IPsec协议待ESP封装加密的报文时,查询SA;如果查询到SA,获取第一报文长度;当第一报文长度大于配置下发的MTU值时,启动原始报文分片,生成分片后的两包数据;将分片后的两包数据增加网络报文的IP头信息后,分别进行ESP头封装及产生报文序列号;以及分别进行数据填充及ESP尾增加;启动数据加密并计算完整性校验值;对加密和增加校验值后的数据进行以太网组包,形成完整的IPsec加密数据包;将IPsec加密数据包发送到密文网口。该加密方法简化了硬件实现复杂度,保证了网络数据的实时处理性能。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的IPsec协议改进后的出站处理步骤图;
图2为本发明实施例提供的IPsec协议改进后的出站具体处理流程图;
图3为本发明实施例提供的IPsec协议改进后的入站处理步骤图;
图4为本发明实施例提供的IPsec协议改进后的入站具体处理流程图;
图5为本发明实施例提供的整体逻辑框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供一种基于芯片方案的IPsec协议报文加密方法,包括:
接收内网明文网口的以太网数据包;解析以太网数据包的网络报文,得到第一报文信息;第一报文信息包括:MAC地址、以太网数据类型、IP地址、IP报文协议类型和UDP的端口号;
判断网络报文的类型;当网络报文的类型为IPsec协议待ESP封装加密的报文时,通过IP地址或者端口号查询SA;如果查询到SA,获取第一报文长度;第一报文长度为网络报文的长度与网络报文后续进行ESP封装增加的数据长度之和;
当第一报文长度大于配置下发的MTU值时,启动原始报文分片,生成分片后的两包数据;
将分片后的两包数据增加网络报文的IP头信息后,分别进行ESP头封装,分别产生报文序列号;
对分片后的两包数据,分别进行数据填充及ESP尾增加;启动数据加密并计算完整性校验值;
依据SA,查询配置下发的SAD表和隧道表,得到组数据IP头和MAC头所需信息,对加密和增加校验值后的数据进行以太网组包,形成完整的IPsec加密数据包;
将IPsec加密数据包发送到密文网口。
本发明实施例还提供一种基于芯片方案的IPsec协议报文解密方法,其中密文网口的以太网数据包由上述基于芯片方案的IPsec协议报文加密方法生成,该解密方法包括:
接收密文网口的以太网数据包;解析以太网数据包的网络报文,得到第二报文信息;第二报文信息包括:MAC地址、以太网数据类型、IP头和UDP头;
判断网络报文的类型;当网络报文的类型为IPsec协议待ESP封装解密的报文时(此时接收的密文网口的以太网数据包即为上述加密方法中的IPsec加密数据包),获取网络报文的长度;当网络报文的长度小于或等于配置下发的MTU值时,根据网络报文内部的SPI信息通过查询对应的SPD表查询SA;如果查询到SA,则对网络报文进行序列号验证;
对网络报文进行数据解密及数据完整性校验;
对解密及数据完整性校验成功的网络报文,依据明文报文的IP信息查询配置下发的MAC表,将网络报文增加MAC头后组包发送到明文网口。
本实施例提供的基于芯片方案的IPsec协议报文加密及解密方法,优化了IPsec的出站(加密)和入站(解密)的流程,简化了网络IP数据包的处理机制,便于硬件实现。通过修改MTU值,使通讯对端发送不超长的数据包,确保了对超大数据包的正常处理,节省了硬件资源开销,简化了硬件实现复杂度,保证了网络数据的实时处理性能。
具体地,IPsec协议的出站(加密)报文处理流程:
通常处理步骤包括:报文解析、查找SA、封装报文、加密报文(ESP模式时)、产生序列号、计算完整性校验值、数据分片(即数据超长时分包)、数据报组包发送。
如图1所示,本实施例IPsec协议改进后的出站基本处理步骤包括:报文解析、查找SA、检查数据包载荷长度(是否超出MTU值)、数据分片(数据超长时)、产生ICMP类型3代码4数据包(数据超长时)、封装报文、产生报文序列号、数据填充对齐、数据加密(ESP模式时)、计算完整性校验值、数据包组包发送。
具体地,如图2所示,为IPsec协议改进后的出站(加密)具体处理流程图。在数据加密之前,检查数据报文是否超长(大于MTU)需要分片,如果超长,则在数据加密之前,对明文进行分片,同时产生ICMP类型3代码4数据包,发送到明文网口,通知通讯对端,修改MTU值,发送不超长的数据包。
具体地,IPsec协议的入站(解密)报文处理流程:
通常的入站处理步骤包括:报文解析、分片包重组、查找SA、验证序列号、验证完整性校验值、解密报文、重构原始数据包、报文发送至明文网口。
如图3所示,本实施例IPsec协议改进后的入站处理基本步骤包括:报文解析、ICMP包处理(收到ICMP报文时,记录MTU值)、产生ICMP类型3代码4数据包(数据超长时)、查找SA、验证序列号、验证完整性校验值、报文解密(ESP模式时)、重构原始报文。
具体地,如图4所示,为IPsec协议改进后的入站(解密)具体处理流程图。入站(解密)流程省去了分片包重组功能,增加了收到ICMP包时的MTU值的记录功能;同时增加了收到超长数据包时,产生ICMP类型3代码4数据报文,通过修改MTU值,使通讯对端不发送超长数据包。省掉分片包重组功能,简化了IP数据包处理的复杂度,同时节省了硬件资源开销,简化了硬件实现复杂度,保证了处理性能。
具体地,本实施例中IPsec协议的入站的处理流程中分片包重组功能可以省掉,主要得益于,报文出站处理时,数据加密之前进行了明文数据的分片,加密后的报文不再进行分包,且新IP头中设置为不允许再分片,故解密前无需分片包重组功能,同时明文的分片包重组,完全可以交由内网设备的协议站来处理。
IKE密钥交互过程,通过内部虚拟网口转发数据,由CPU软件实现该功能,协商出每个隧道的SA。由SA结合配置信息,通过CPU和硬件之间接口实现配置信息、SPD和SAD下发,以方便FPGA进行协议处理时的信息查询。
本实施例基于硬件逻辑(ASIC/FPGA)的IPsec(IP security)实现改进方法,主要包括业务网口的实现、内部虚拟网口路由的实现、IPsec协议数据入站流程改进、出站流程的改进、加解密的实现,MTU(Maximum Transmission Unit最大传输单元)检查及修改机制实现、IKE(Internet Key Exchange密钥交换协议)密钥交互过程、SPD(Security PolicyDatabase安全策略数据库)下发实现、SAD(Security Association Database安全联盟数据库)下发实现以及IPsec协议各种内部配置信息管理下发的实现,整体逻辑框图如图5所示。
具体地,采用硬件逻辑实现业务网络接口、内部虚拟网口路由功能、IPsec协议处理改进、数据加解密、MTU的检查及修改机制,保证网络数据的实时处理性能。
进一步地,采用CPU软件实现IKE、SPD配置下发、SAD配置下发等功能。此部分流程处理较为繁琐,但实时性要求不高,数据量不大,因此适宜CPU处理。
本实施例通过FPGA硬件逻辑实现内部路由功能,就是将此类网络数据路由到内部CPU部分,很好的解决了网络数据的分流。业务网口(即业务网络接口)和内部虚拟网口路由功能,由硬件逻辑来实现。业务网络有两个接口,用于IPsec数据的入站和出站的网络接口。一个为内网口(内网明文网口),用于收发明文数据,实现内网的明文通讯;一个为外网口(密文网口),用于IPsec密文数据及IKE密钥交互数据的收发,实现和外网的加密通讯。
进一步地,内部虚拟网口路由功能,也是由硬件逻辑实现的。该虚拟网口主要实现将业务外网口的IKE数据报文,转发送至内部CPU中,由软件处理,同时将CPU产生的IKE数据报文,转发送至业务外网口,用于实现IKE功能。路由功能主要完成IPsec IKE数据包的接收和分流功能,以及合并汇集发送功能。
本实施例的核心部分为:IPsec协议处理改进、数据加解密及验证、MTU的检查及修改机制三部分。该三部分均由硬件逻辑实现,首先通过对IPsec协议的改进,优化了IPsec的出站(加密)和入站(解密)的流程,简化了网络IP数据包的处理机制,以便于硬件实现;同时结合MTU检查和修改机制的引入,由硬件逻辑组ICMP数据包,发送到业务网口,实现对业务数据的MTU的更改,确保了对超大数据包的正常处理。可选地,加解密及完整性校验功能,支持国密SM3、SM4以及SM4-GCM的加解密和完整性校验,同时支持其他加密算法的兼容和扩展。
下面通过三个具体的实际应用实施例对上述方法进行详细说明:
实施例1
本实施例采用芯片(ASIC)方案实现,其中芯片内部集成CPU处理器(ARM或RISC-V均可)。
本实施例适用于IPsec的传输模式和隧道模式的AH(Authentication Header)和ESP(Encapsulating Security Payload)两种封装形式。可选地,本实施例仅结合IPsec的ESP隧道模式(该模式使用较为广泛),进行具体实施说明。
IPsec协议的出站流程实施例,如图2所示,具体流程如下:
第一步,接收内网明文网口的以太网数据包;解析网络报文,得到MAC地址、以太网数据类型、IP地址、IP报文协议类型、UDP的端口号(UDP包时)等信息。
第二步,判断以太网类型。如果为0x0806,说明为ARP报文,将报文缓存后,转发到内部虚拟网口,通过虚拟网口转发到内部CPU中。如软件(指CPU中的软件)处理ARP协议,响应的回复报文,也通过虚拟网口转发到明文网口,发送到内网,完成MAC地址的寻址等工作。
第三步,针对需要ESP封装加密的报文,首先IP地址或者端口号(port)查询SA,即检索加密或者验证策略。其中采用AH封装时只有数据校验功能;采用ESP封装时,既有加密又有校验功能,校验功能为可选。如果未查询到SA,则丢弃当前数据包,同时启动内部CPU的IKE功能,进行SA的协商或者更新。
第四步,针对查到SA的报文,获取数据包的长度;结合配置下发的MTU值,以及后续进行ESP封装时要增加数据长度。其中,要增加的数据长度包括:IKE隧道模式时增加一个IP头的长度(New_IPhead_length,20字节),支持NAT功能时还需增加UDP头(New_UDPhead_length,8字节),结合SA查询的加密算法,报文可能还需进行对齐填充和ESP尾(Pad_length,N字节);最后如果报文长度加上述各部分的长度,大于MTU的值,则启动原始报文分片;同时以该报文的MAC和IP头为基础,产生一个ICMP类型3代码4的报文,由明文网口发出,通知明文网口的外接设备,改小本身MTU值,停止发送超长数据包。
第五步,对分片之后的两部分数据,均增加原网络报文的IP头等信息后,分别进行ESP头封装,分别产生报文序列号。具体地,第四步中,原报文经过增加ESP报文头后,长度会变长,当长度大于MTU值时,需要将封装后的报文进行分片(即拆包)处理,分成两片(或者叫两包),即可满足每包数据长度均小于MTU值的要求,分包后的两包数据,分别增加原IP头等信息后,进行后续操作。
第六步,对分片后的两包数据,分别进行数据填充及ESP尾增加,启动数据加密和计算完整性校验值。可选地,此处加密和校验值计算可均采用SM4-GCM算法。
第七步,依据SA信息,查询配置下发的SAD表和隧道表,得到组数据IP头和MAC头所需信息,对加密和增加校验值后的数据进行以太网组包,形成完整的IPsec数据包。由密文网口发出。
IPsec协议的入站流程实施例,如图4所示,具体流程如下:
第一步,密文网口接收以太网数据包;解析网络报文,得到MAC地址、以太网数据类型、IP头、UDP头信息,判断数据是否为IPsec协议ESP封装的报文(即是否需要对其进行解密)。
第二步,针对不是ESP报文的数据,进一步明确是否为ARP或者IKE报文,如果是,则缓存后,转发到内部虚拟网口,然后转发到内部CPU的虚拟网口,由软件处理ARP协议和IKE协议。
第三步,针对不是ESP报文的数据,也不需要转发的报文,判断是否为ICMP类型3代码4的报文,如果是,完全解析该报文,得到其中的MTU值并保存,供内部使用(出站报文是否分片,以此MTU为依据)。
第四步,获取数据包的长度,结合配置下发的MTU值,如果报文(即指IPsec协议ESP封装的报文)长度大于MTU值,则丢弃该报文;同时以该报文的MAC和IP头为基础,产生一个ICMP类型3代码4的报文,由密文网口发出,通知密文网口的外接设备,改小本身MTU值,停止发送超长数据包。
第五步,针对待解密处理的ESP报文,首先根据其内部的SPI等信息查询对应的SPD表,如果查询成功(查找到SA),进行后续操作;如果查询不成功,则启动内部CPU的IKE功能,进行SA的协商或更新,同时丢弃该报文。
第六步,针对查找到SA的ESP报文,进行序列号验证,该序列号是每包数据递增的,通过该报文可以防止重放的网络攻击。
第七步,数据解密及进行数据完整性校验,可选地,此处解密和校验值验证可均采用SM4-GCM算法,如解密失败或者完整性校验不通过,直接丢弃该报文。
第八步,针对解密后的明文数据,依据明文报文的IP等信息查询配置下发的由内部CPU获取的MAC表,将报文增加MAC头后组包发送。如果未查询到对应的MAC地址,则丢弃该报文,同时将该IP上报内部CPU,CPU软件通过虚拟网口利用ARP协议,在内网中查询该IP对应的MAC地址,以备后续数据使用。
具体地,密钥交互IKE的流程,由CPU软件通过虚拟网口来实现,完全依照IPsec标准进行,本实施例对此不再进一步赘述。
具体地,将明文数据包发送到明文网口配置下发的主要内容包括MTU值、密钥、SAD表、SPD表,MAC表等信息,采用CPU的内部总线实现下发流程。关键信息不出芯片,安全可靠。
本实施例,提供的是基于芯片方案的IPsec协议改进实现方法的ESP封装隧道模式的实现方案。进一步地,该改进方法对AH封装以及传输模式同样适用,本实施例对其不作限定。
实施例2
本实施例采用FPGA+CPU方案(ZYNQ系列FPGA硬件),通过改进IPsec协议实现方式,给出一种高性能、低成本的IPsec安全网关实现方案,充分适用于网络部署中的小型数据中心等应用场景。
其中ZYNQ是指基于ARM处理器的SOC(System on Chip)芯片,包括ARM处理器和FPGA逻辑两部分,分别对应PS(Processing System处理系统)和PL(Programmable Logic可编程逻辑FPGA)。在一颗芯片中,即可通过软硬件的协作,实现改进的IPsec协议,降低了成本,提高了性能,同时提高了系统的稳定性。具体地,PS部分和PL部分的数据交互,可采用片内的BRAM总线来实现,做到了所有核心数据不出芯片,具有极高的安全性和稳定性。本实施例通过以上方式实现了软硬件的优势互补。
具体地,实施例1中由芯片硬件实现的部分,IPsec协议改进的出站流程、入站流程、数据的加解密及完整性验证功能、虚拟网口功能等,均由FPGA的硬件电路(PL部分)实现,确保处理性能。
实施例1中由ASIC内部CPU实现的部分、密钥交互IKE功能、配置下发功能、明文网口及密文网口的ARP功能等均由FPGA PS部分实现,确保了密钥交互协议的完整和配置信息下发及更新的灵活性。
本实施例提供的基于芯片方案的IPsec协议报文加密及解密方法,采用ASIC/FPGA等硬件方案实现时,降低了硬件实现资源占用、设计复杂度,有利于降低功耗,提高了协议实现的稳定性和安全性。通过对IPsec协议的改进处理,结合硬件的特点,采用硬件实现IPsec协议改进,减低了处理复杂度,提高了网络处理性能,采用CPU软件实现IPsec IKE密钥交换协议及各种配置信息下发,最终可基于单芯片实现完整IPsec协议。降低了成本,提高了性能,千兆可以达到线速处理水平,可以满足很多小型物联网数据中心的性能需求。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种基于芯片方案的IPsec协议报文加密方法,其特征在于,包括:
接收内网明文网口的以太网数据包;解析所述以太网数据包的网络报文,得到第一报文信息;所述第一报文信息包括:MAC地址、以太网数据类型、IP地址、IP报文协议类型和UDP的端口号;
判断所述网络报文的类型;当所述网络报文的类型为IPsec协议待ESP封装加密的报文时,通过IP地址或者端口号查询SA;如果查询到SA,获取第一报文长度;所述第一报文长度为所述网络报文的长度与所述网络报文后续进行ESP封装增加的数据长度之和;
当所述第一报文长度大于配置下发的MTU值时,启动原始报文分片,生成分片后的两包数据;
将所述分片后的两包数据增加所述网络报文的IP头信息后,分别进行ESP头封装,分别产生报文序列号;
对所述分片后的两包数据,分别进行数据填充及ESP尾增加;启动数据加密并计算完整性校验值;
依据所述SA,查询配置下发的SAD表和隧道表,得到组数据IP头和MAC头所需信息,对加密和增加校验值后的数据进行以太网组包,形成完整的IPsec加密数据包;
将所述IPsec加密数据包发送到密文网口。
2.如权利要求1所述的一种基于芯片方案的IPsec协议报文加密方法,其特征在于,判断所述网络报文的类型之后,还包括:
当所述网络报文的类型为ARP报文时,对所述网络报文进行缓存;
将缓存后的所述网络报文转发到内部虚拟网口,通过所述内部虚拟网口转发到内部CPU中。
3.如权利要求2所述的一种基于芯片方案的IPsec协议报文加密方法,其特征在于,判断所述网络报文的类型之后,还包括:
当CPU软件处理ARP协议,响应回复报文时,将所述回复报文通过所述内部虚拟网口转发到内网明文网口;通过所述内网明文网口发送到内网,完成MAC地址的寻址工作。
4.如权利要求1所述的一种基于芯片方案的IPsec协议报文加密方法,其特征在于,当所述网络报文的类型为IPsec协议待ESP封装加密的报文时,通过IP地址或者端口号查询SA之后,还包括:
如果未查询到SA,则丢弃当前数据包,同时启动内部CPU的IKE功能,进行SA的协商或者更新。
5.如权利要求1所述的一种基于芯片方案的IPsec协议报文加密方法,其特征在于,当所述第一报文长度大于配置下发的MTU值时之后,还包括:
以所述网络报文的MAC和IP头为基础,产生一个ICMP类型3代码4的报文;
将所述ICMP类型3代码4的报文通过内网明文网口发出,通知所述内网明文网口的外接设备,改小MTU值,停止发送超长数据包。
6.一种基于芯片方案的IPsec协议报文解密方法,其特征在于,所述IPsec加密数据包由权利要求1-5任一项所述的基于芯片方案的IPsec协议报文加密方法生成,该解密方法包括:
接收IPsec加密数据包;解析所述IPsec加密数据包的网络报文,得到第二报文信息;所述第二报文信息包括:MAC地址、以太网数据类型、IP头和UDP头;
判断所述网络报文的类型;当所述网络报文的类型为IPsec协议待ESP封装解密的报文时,获取所述网络报文的长度;当所述网络报文的长度小于或等于配置下发的MTU值时,根据所述网络报文内部的SPI信息通过查询对应的SPD表查询SA;如果查询到SA,则对所述网络报文进行序列号验证;
对所述网络报文进行数据解密及数据完整性校验;
对解密及数据完整性校验成功的所述网络报文,依据明文报文的IP信息查询配置下发的MAC表,将所述网络报文增加MAC头后组包发送到明文网口。
7.如权利要求6所述的一种基于芯片方案的IPsec协议报文解密方法,其特征在于,判断所述网络报文的类型之后,还包括:
当所述网络报文的类型不是IPsec协议待ESP封装解密的报文时,明确所述网络报文是否为ARP或者IKE报文;如果为ARP或者IKE报文,则缓存后,将所述网络报文转发到内部虚拟网口,并发送到内部CPU,由软件处理ARP协议和IKE协议。
8.如权利要求7所述的一种基于芯片方案的IPsec协议报文解密方法,其特征在于,判断所述网络报文的类型之后,还包括:
当所述网络报文的类型既不是IPsec协议待ESP封装解密的报文,也不是ARP或者IKE报文时,判断所述网络报文是否为ICMP类型3代码4的报文;如果是ICMP类型3代码4的报文,则完全解析所述网络报文,得到MTU值并保存。
9.如权利要求6所述的一种基于芯片方案的IPsec协议报文解密方法,其特征在于,获取所述网络报文的长度之后,还包括:
当所述网络报文的长度大于配置下发的MTU值时,丢弃所述网络报文;同时以所述网络报文的MAC和IP头为基础,产生一个ICMP类型3代码4的报文;
将所述ICMP类型3代码4的报文由密文网口发出,通知所述密文网口的外接设备,改小MTU值,停止发送超长数据包。
10.如权利要求6所述的一种基于芯片方案的IPsec协议报文解密方法,其特征在于,当所述网络报文的长度小于或等于配置下发的MTU值时,根据所述网络报文内部的SPI信息通过查询对应的SPD表查询SA之后,还包括:
如果未查询到SA,则启动内部CPU的IKE功能,进行SA的协商或更新,同时丢弃所述网络报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211237561.4A CN115333859B (zh) | 2022-10-11 | 2022-10-11 | 一种基于芯片方案的IPsec协议报文加密及解密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211237561.4A CN115333859B (zh) | 2022-10-11 | 2022-10-11 | 一种基于芯片方案的IPsec协议报文加密及解密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115333859A CN115333859A (zh) | 2022-11-11 |
CN115333859B true CN115333859B (zh) | 2023-01-13 |
Family
ID=83914416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211237561.4A Active CN115333859B (zh) | 2022-10-11 | 2022-10-11 | 一种基于芯片方案的IPsec协议报文加密及解密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115333859B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115988103B (zh) * | 2022-11-25 | 2024-09-03 | 乾讯信息技术(无锡)有限公司 | 重新构造网络ip报文实现ip非分片化方法 |
CN115955396A (zh) * | 2022-12-07 | 2023-04-11 | 篆芯半导体(南京)有限公司 | 以太交换网络流量产生方法、系统、设备及存储介质 |
CN118540159A (zh) * | 2024-07-24 | 2024-08-23 | 之江实验室 | 一种基于ipsec的多会话设计系统及操作方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110430210A (zh) * | 2019-08-14 | 2019-11-08 | 大连理工大学 | 一种基于群智能网络的协议转换装置及其协议转换方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104394148B (zh) * | 2014-11-26 | 2018-03-30 | 东南大学 | IPv6下IPSec协议外出处理硬件实现系统 |
CN106341404A (zh) * | 2016-09-09 | 2017-01-18 | 西安工程大学 | 基于众核处理器的IPSec VPN系统及加解密处理方法 |
EP4145790A4 (en) * | 2020-05-19 | 2023-12-13 | Huawei Technologies Co., Ltd. | METHOD AND APPARATUS FOR CHECKING AN SRV6 PACKAGE |
CN111698245A (zh) * | 2020-06-10 | 2020-09-22 | 成都国泰网信科技有限公司 | 一种基于国密算法的VxLAN安全网关及二层安全网络组建方法 |
CN114915451B (zh) * | 2022-04-07 | 2023-07-21 | 南京邮电大学 | 一种基于企业级路由器的融合隧道加密传输方法 |
-
2022
- 2022-10-11 CN CN202211237561.4A patent/CN115333859B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110430210A (zh) * | 2019-08-14 | 2019-11-08 | 大连理工大学 | 一种基于群智能网络的协议转换装置及其协议转换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115333859A (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115333859B (zh) | 一种基于芯片方案的IPsec协议报文加密及解密方法 | |
EP3298719B1 (en) | Network device and method for processing a session using a packet signature | |
US7215667B1 (en) | System and method for communicating IPSec tunnel packets with compressed inner headers | |
CN112583647B (zh) | 用于针对有线和无线节点的公共控制协议的方法和设备 | |
US6101543A (en) | Pseudo network adapter for frame capture, encapsulation and encryption | |
US9369550B2 (en) | Protocol for layer two multiple network links tunnelling | |
US7434045B1 (en) | Method and apparatus for indexing an inbound security association database | |
CN108769292B (zh) | 报文数据处理方法及装置 | |
US20050198492A1 (en) | System and method for secure data transfer over a network | |
US10044841B2 (en) | Methods and systems for creating protocol header for embedded layer two packets | |
KR20130101674A (ko) | 다중 mtu를 설정하는 모바일 디바이스 및 이를 이용한 데이터 전송 방법 | |
US20070217424A1 (en) | Apparatus and method for processing packets in secure communication system | |
US20050198498A1 (en) | System and method for performing cryptographic operations on network data | |
WO2014026571A1 (zh) | 一种通用路由封装隧道报文发送方法和装置 | |
KR20020088728A (ko) | 정보 보호 인터넷 프로토콜 패킷의 송수신 방법 | |
CN114143061A (zh) | 基于用户态协议栈实现数据安全可靠传输的方法及系统 | |
CN114244577A (zh) | 一种基于esp的报文处理方法 | |
US7564976B2 (en) | System and method for performing security operations on network data | |
CN115225414B (zh) | 基于ipsec的加密策略匹配方法、装置及通信系统 | |
JP2003069642A (ja) | レイヤ2トンネリング装置における複数パケット連結伝送方式 | |
CN109194558B (zh) | 隧道报文认证转发方法及系统 | |
CN108111385B (zh) | 报文转发方法和装置 | |
Wagner et al. | A" bump in the stack" encryptor for MS-DOS systems | |
CN115766063B (zh) | 数据传输方法、装置、设备及介质 | |
CN116389169B (zh) | 一种避免国密IPSecVPN网关数据包乱序、分片的方法 |
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 |