CN110463156B - 安全通信中的硬件加速的有效载荷过滤 - Google Patents
安全通信中的硬件加速的有效载荷过滤 Download PDFInfo
- Publication number
- CN110463156B CN110463156B CN201880019583.9A CN201880019583A CN110463156B CN 110463156 B CN110463156 B CN 110463156B CN 201880019583 A CN201880019583 A CN 201880019583A CN 110463156 B CN110463156 B CN 110463156B
- Authority
- CN
- China
- Prior art keywords
- message
- data
- processor
- request
- size
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- 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/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- 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/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0245—Filtering by information in 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/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0263—Rule management
-
- 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/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0272—Virtual private networks
-
- 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
- H04L63/0435—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 wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
-
- 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
- H04L63/0485—Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
-
- 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/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/061—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
-
- 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/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
-
- 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- 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/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0209—Architectural arrangements, e.g. perimeter networks or demilitarized zones
-
- 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/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- General Business, Economics & Management (AREA)
- Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文公开了使用硬件加速器来管理安全通信的计算***、设备和相关联的方法。在一个实施例中,一种方法包括从用户内核接收请求读取在缓冲器中存储的消息的数据请求。响应于接收到该数据请求,向处理器发送表示用于验证消息中的内容的请求的数据。该方法还包括从处理器接收表示验证结果的数据,该验证结果包含消息中的内容是否有效的指示以及消息的报头大小。当该指示指示消息的内容有效时,根据验证结果中的报头大小从消息中移除消息的报头,以提取有效载荷并将提取的有效载荷提供给用户内核。
Description
背景技术
在计算中,硬件加速通常涉及使用硬件电路来比在通用处理器上执行软件更快速和有效地执行功能。硬件加速的示例包括图形处理单元中的比特块转移和针对服务器中的垃圾邮件控制的正则表达的加速。当与计算机中的中央处理单元(“CPU”)分离时,执行这种加速的硬件设备被称为硬件加速器。示例硬件加速器包括加密加速器、视频处理器、3D图形加速器、人工智能加速器、正则表达式加速器等。
硬件加速器可以实现为:专用集成电路(“ASIC”),其在制造期间被定制用于期望的用途;或现场可编程门阵列(“FPGA”),其可在制造之后由用户配置。可以使用类似于用于ASIC的硬件描述语言来指定FPGA配置。FPGA通常包括逻辑块阵列和可重新配置互连的架构,该可重新配置互连的架构允许逻辑块像逻辑门一样“连接在一起”。因此,用户可以在FPGA中配置逻辑块以执行复杂的组合功能,或者仅仅是简单的逻辑操作,以比在软件中快得多的速度合成在硬件中可执行的等效功能。
发明内容
提供本发明内容是为了以简化的形式介绍概念的选择,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
某些硬件加速实现涉及使用安全套接字层(“SSL”)或传输层安全(“TLS”)协议来保护通过硬件加速器的数据流。例如在受保护的超文本传输协议(“HTTPS”)通信会话期间,可以利用硬件加速器来处理发送器(例如服务器)和接收器(例如客户端设备)之间的加密数据流,反之亦然。可以通过首先在发送器和接收器之间协商加密和其他参数/算法来建立安全通信会话。在双方同意的情况下,在会话内实例化连接,然后发送器和接收器可以使用相互商定的安全参数/算法对数据进行加密和解密,并在发送器和接收器之间交换受保护的数据。
用于建立安全通信信道(例如利用相关连接的会话)的协商操作可能是复杂的。示例协商操作以握手阶段开始,该握手阶段可以包括证书交换和压缩方法、密码套件协商、认证、密钥交换等。这种复杂性可能使FPGA(或其他合适类型的可编程硬件电路)不适合支持硬件中的完整安全协议。用于实现会话协商的FPGA中的合成电路可能太大而不实用。因此,通常依赖于FPGA外部的加速器处理器来在安全通信信道的建立期间处理协商操作。另一方面,FPGA可能仅处理已建立的安全通信连接的数据传输的孤立方面,诸如TCP/IP和对称加密操作。
FPGA的前述限制可迫使传入/传出数据在应用数据处理期间通过加速器处理器以用于加密/解密或其他合适的受保护数据操作。这样,通过FPGA和加速器处理器之间的通信桥(例如***组件互连快速桥或“PCIe”桥)的数据传递的开销可能很高。通信桥可能成为瓶颈,因为每次需要加密/解密时,传入/传出数据的每个字节都通过通信桥发送。在许多应用中(例如视频或音频过滤、编码或处理)、数据通常被流式传输、处理、然后流出。对于此类应用,使用SSL/TLS保护数据可能会在通信桥上的带宽方面产生施加的开销,从而限制了硬件加速器的数据吞吐量。
所公开的技术的若干实施例可以通过基于由受保护的数据业务携带的数据的类型来在硬件加速器的FPGA外部的加速器处理器和硬件加速器的FPGA中实现的会话处理器之间切换数据业务来解决前述困难中的至少一些。在某些实施例中,在硬件加速器的FPGA中实现的数据路由器被配置为通过监视从与受保护的通信会话或连接相关联的分组组装的接收TLS记录的报头中的值来切换数据业务。当报头包含指示所接收的TLS记录包含加密的应用数据的值(例如APPLICATION_DATA)时,FPGA中的数据路由器可以将所接收的TLS记录转移到FPGA中的会话处理器而不是加速器处理器。
另一方面,当TLS记录报头包含指示所接收的TLS记录包含用于安全通信会话或连接的控制数据的其他值(例如CHANGE_CIPHER_SPEC、ALERT或HANDSHAKE)时,数据路由器将TLS记录重定向到加速器处理器进行处理。在其他实施例中,数据路由器可以被配置为通过例如监视服务器/客户端完成的消息或经由其他合适的技术来检测安全通信信道的建立。在进一步的实施例中,数据路由器可以与会话处理器组合,可以包括单独的路由设备,或者可以具有其他合适的配置。
在与对等计算设备SSL/TLS通信信道的初始建立期间,数据路由器可以被配置为将分组组装成一个或多个TLS记录,并将包含控制数据的TLS记录路由到加速器处理器。控制数据可以与例如密码套件的协商、对等计算设备的认证、随机数的交换和预备主密码、共享密钥的创建或其他合适的会话建立操作有关。然后,加速器处理器可以处理所接收的TLS记录以促进握手、改变密码规范、警报或利用SSL/TLS库来建立所请求的安全通信信道的其他合适类型的操作。例如加速器处理器可以被配置为选择公共密码套件,包括密钥交换方法、批量加密方法或消息认证码。加速器处理器还可以被配置为认证对等计算设备、执行密钥交换、并指示会话建立的完成。
一旦安全通信信道被建立,加速器处理器就可以被配置为向会话处理器和/或FPGA中的加密内核提供会话和连接信息。这样的会话信息可以包括例如会话标识、会话密钥、加密算法标识、散列算法标识、压缩算法标识或其他合适的参数或算法标识。在某些实施例中,加速器处理器还可以被配置为向数据路由器指示是否要对建立的安全通信信道执行数据路由。在其他实施例中,数据路由器可以被配置为执行针对所有SSL/TLS会话和/或连接的数据路由。
当数据路由器检测到具有加密的应用数据的传入TLS记录时,数据路由器然后可以将所接收的TLS记录路由到会话处理器以进行进一步处理。会话处理器可以被配置为透明地处理SSL/TLS协议的子集,诸如记录层子协议(或其一部分)。使用从加速器处理器接收的会话和连接信息,会话处理器可以被配置为将接收的数据分段/组合成期望的数据结构、对数据流中的数据块序列进行编号、使用在握手期间协商的压缩算法对在TLS记录有效载荷中的数据进行压缩/解压缩、或执行其他合适的数据操作。在特定示例中,会话处理器可以被配置为解密与视频流相关的数据流,并将解密的数据流转发到在FPGA中实现的视频代码转换器以进行快速处理。
在某些实现中,会话处理器可以被配置为将所接收的TLS记录有效载荷的部分(其形成被安全地发送的“消息”)转发到加速器处理器,以用于在消息的报头(即,由SSL/TLS协议封装的消息的报头)中包含的信息的检查。示例信息可以包括状态代码、连接错误、文件结束标记等。例如在某些实施例中,响应于接收用于访问缓冲器中的解密的应用数据的数据请求,会话处理器可以被配置为向加速器处理器发送有效性请求以及在缓冲器中存储的解密的应用数据的开始部分,其可以完全或部分地包含消息的报头。在一个示例中,可以向加速器处理器发送4千字节的数据(或其指针)。在另一示例中,如果数据的大小不超过阈值(例如4千字节),则可以向加速器处理器发送缓冲器中的所有数据。在其他示例中,会话处理器可以将缓冲器中的8千字节、16千字节或其他合适大小的数据发送到加速器处理器。
响应于接收到有效性请求和解密的应用数据,加速器处理器可以被配置为解析所接收的解密的应用数据并识别在解密的应用数据中包括的消息的记录报头(例如识别HTTPS会话中的HTTP报头)。通过检查消息报头,加速器处理器可以确定与消息报头相关联的消息有效载荷是否有效、消息有效载荷(或主体)大小(例如200千字节)、消息报头长度或解密的应用数据的其他合适参数。然后,加速器处理器可以将包含前述参数(例如报头大小和有效载荷大小)中的一个或多个的有效性结果发送到会话处理器。
响应于接收到有效性结果,会话处理器可以从解密的应用数据中移除消息报头,并且当有效性结果指示有效载荷有效时,仅将消息有效载荷提供给用户内核。当有效性结果指示不能基于所接收的数据做出确定时,会话处理器可以暂停预定时段以允许更多数据到达并重试前述有效性请求操作。当有效性结果指示消息无效时(例如包含403状态代码的HTTP报头),会话处理器可以丢弃该消息、终止安全通信会话、向用户内核或加速器处理器指示错误、或执行其他合适的操作。
在应用数据传输和/或处理期间,数据路由器可以检测不包含应用数据的分组。例如对等计算设备可以通过发送包含合适的会话管理命令的分组来发起重新协商过程以用于建立的SSL/TLS通信会话。在一些实现中,会话处理器和/或数据路由器可以被配置为重新编号、重新排序、和/或以其他方式修改加速器处理器和远程端点可接受的传入和/或传出TLS记录的序列标识/号码。在其他实现中,加速器处理器可以被配置为接受具有非连续序列标识/号码的TLS记录。
在某些实施例中,响应于接收到这样的TLS记录,数据路由器可以被配置为将传入的TLS记录路由到加速器处理器而不是路由到FPGA中实现的会话处理器。反过来,加速器处理器可以执行适当的动作,诸如通过访问SSL/TLS库来促进所请求的重新协商过程、执行与对等计算设备的重新协商、以及指示重新协商的成功/失败、或执行的其他操作。在重新协商过程的成功完成之后,加速器处理器可以被配置为将更新的会话信息发送到会话处理器、数据路由器和/或加密内核。这样,会话处理器可以继续处理包含用于建立的SSL/TLS通信会话的应用数据TLS记录的分组。在SSL/TLS通信会话的完成后,可以在加速器处理器和FPGA上关闭SSL/TLS通信会话。
因此,所公开技术的若干实施例可以极大地减少FPGA和加速器处理器之间的通信桥上的数据流。如上所述,通过在FPGA中实现会话处理程序来处理应用数据处理,数据流中的任意应用数据的加密/解密将不会离开FPGA并且通过通信桥到加速器处理器。因此,从加速器处理器的角度来看,通信会话看起来好像通信会话从未接收任意数据,但通信会话是有效的。从FPGA的角度来看,通信会话看起来好像是在没有任意握手开销的情况下启动了受保护的连接。这样,当与其他硬件加速器相比时,可以减少在FPGA和加速器处理器之间的通信桥上的数据传递方面的开销,以在硬件加速器处实现更高的吞吐量(例如大于10千兆位/秒)。
附图说明
图1是根据所公开技术的实施例的实现安全通信管理的分布式计算***的示意图。
图2是示出了根据所公开技术的实施例的图1中的分布式计算***的示例硬件/软件组件的示意图。
图3A-3C是示出了根据所公开技术的实施例的会话建立期间图2中的硬件加速器的某些硬件/软件组件的示意图。
图4A-4E是示出了根据所公开技术的实施例的在应用数据处理期间图2中的硬件加速器的某些硬件/软件组件的示意图。
图5A-5C是示出了根据所公开技术的实施例的适合于分组的数据模式的示意图。
图5D是示出了根据所公开技术的实施例的根据HTTP的示例报头字段的示意图。
图6和7分别是示出了根据所公开技术的附加实施例的数据路由器和会话处理器的某些硬件/软件组件的示意图。
图8A-9B是示出了根据所公开技术的实施例的硬件加速器中的安全通信管理的各个方面的流程图。
图10是适用于图1中的分布式计算***的某些组件的计算设备。
具体实施方式
下面描述用于促进硬件加速器中的安全通信管理的计算***、设备、组件、模块、例程和过程的某些实施例。在以下描述中,包括组件的具体细节以提供对所公开技术的某些实施例的透彻理解。相关领域的技术人员还可以理解,所公开的技术可以具有附加的实施例,或者可以在没有下面参考图1-10描述的实施例的若干细节的情况下实施。
如本文所使用的,术语“分布式计算***”通常是指具有多个网络设备的计算机网络,所述多个网络设备将多个服务器或主机彼此互连或者与外部网络(例如互联网)互连。术语“网络设备”通常是指物理网络设备,其示例包括路由器、交换机、集线器、网桥、载荷平衡器、安全网关或防火墙。“主机”通常是指被配置为实现例如一个或多个虚拟机或其他合适的虚拟化组件的计算设备。例如主机可以包括具有管理程序的服务器,该管理程序被配置为支持一个或多个虚拟机或其他合适类型的虚拟组件。
计算机网络可以在概念上划分为在底层网络上实现的覆盖网络。“覆盖网络”通常是指在底层网络之上实现并在底层网络上操作的抽象网络。底层网络可以包括彼此互连的多个物理网络设备。覆盖网络可以包括一个或多个虚拟网络。“虚拟网络”通常是指覆盖网络中底层网络的一部分的抽象。虚拟网络可以包括被称为“租户站点”的一个或多个虚拟端点,其被用户或“租户”单独使用以访问虚拟网络和相关联的计算、存储或其他合适的资源。租户站点可以具有一个或多个租户端点(“TEP”),例如虚拟机。虚拟网络可以在不同主机上互连多个TEP。覆盖网络中的虚拟网络设备可以通过单独对应于沿着底层网络中的一个或多个物理网络设备的一个或多个网络路由的虚拟链路彼此连接。
本文还使用的术语“安全通信”通常是指包含加密或受保护数据的消息交换以防止未经授权的拦截和/或访问。在某些实施例中,可以应用SSL/TLS协议来保护消息的交换。在其他实施例中,可以通过实现其他合适的技术来实现安全通信。术语“可编程硬件电路”通常是指具有可配置逻辑块、开关或其他合适组件的硬件设备。一个示例可编程硬件电路可以是具有逻辑块的FPGA,逻辑块可配置为以比在软件中更快的速度合成在硬件中可执行的等效功能。
安全通信会话或“会话”涉及对应的加密参数、密码套件以及在发送器和接收器之间商定的其他合适参数的集合。安全通信会话可以具有与TCP/IP或其他合适类型的底层数据传输链路分别相关的一个或多个连接。需要会话来打开数据连接,并且连接可以跨越多个会话(例如在不切断TCP/IP连接的情况下更改密码协议时)。例如当使用相同的加密参数通过由IP地址和TCP端口的组合所单独标识的多个TCP/IP连接来连接两个端点时,会话还可以具有许多连接。
此外,如本文所使用的,术语“应用数据”通常是指由用户应用读取、生成、修改或以其他方式处理的数据。例如包含视频数据的文件或数字流可以是视频编辑应用的应用数据。视频编辑应用可以读取文件、修改文件中的视频数据、并输出包含修改后的视频数据的新文件。相反,术语“会话管理数据”通常是指在安全通信会话的建立期间和为安全通信会话的建立而交换的数据。例如会话管理数据可以包括在握手、认证、密钥交换、会话状态指示或其他合适类型的消息中包含的数据。
如本文所使用的,“分组”通常是指由分组交换网络携带的格式化数据单元。分组通常可以包括用户数据以及控制数据。控制数据可以提供用于传递用户数据的信息。例如控制数据可以包括源和目的地网络地址/端口、错误检查码、排序信息、跳数、优先级信息、安全信息或关于用户数据的其他合适信息。通常,控制数据可以被包含在分组的报头和/或尾部中。报头和尾部可以包括一个或多个包含适当信息的数据字段。下面参考图5A更详细地描述用于控制数据的示例数据模式。
硬件加速计算可以消耗并产生大量数据。因此,使用SSL/TLS或其他合适的安全协议快速且安全地将数据移入和移出硬件加速器中的FPGA可能是有兴趣的。然而,由于协议的复杂性,在硬件中实现SSL/TLS是具有挑战性的。因此,当前使用的解决方案在功耗和硬件开销方面是低效的。所公开的技术允许SSL/TLS或其他合适的安全协议的使用来安全地向/从硬件加速器的FPGA转移数据,同时保持高吞吐量和相对低的功耗。此外,所公开技术的若干实施例还可以允许使用片上***(“SoC”)的***来实现高吞吐量硬件加速器,如下面更详细描述的。
图1是示出根据所公开技术的实施例的适用于实现安全通信管理的分布式计算***100的示意图。如图1所示,分布式计算***100可以包括互连多个主机106和多个客户端设备102的底层网络108。单独的客户端设备102可以与对应的用户101a-101c相关联。尽管图1中示出了分布式计算***100的特定组件,但是在其他实施例中,分布式计算***100还可以包括网络存储设备、维护管理器和/或除了图1中所示的组件之外或代替图1中所示的组件的其他合适的组件(未示出)。
客户端设备102可以各自包括计算设备,该计算设备促进对应的用户101访问由主机106经由底层网络108提供的云服务。例如在所示实施例中,客户端设备102单独地包括台式计算机。在其他实施例中,客户端设备102还可以包括膝上型计算机、平板计算机、智能电话或其他合适的计算设备。尽管出于说明目的在图1中示出了三个用户101,但是在其他实施例中,分布式计算***100可以促进任意合适数量的用户101访问由主机106提供的云或其他合适类型的计算服务。
主机106可以单独地配置为向个体用户101提供计算、存储和/或其他合适的云服务。例如如下面参考图2更详细描述的,主机106中的每一个可以根据来自用户101的请求来启动和维护一个或多个虚拟机144(如图2所示)。然后,用户101可以利用实例化的虚拟机144来执行计算、通信、数据存储和/或其他合适的任务。在某些实施例中,主机106之一可以为多个用户101提供虚拟机144。例如主机106a可以托管分别与用户101a-101c中的每一个用户相对应的三个虚拟机144。在其他实施例中,多个主机106可以为个体用户101a-101c托管虚拟机144。
如图1所示,底层网络108可以包括互连多个主机106和客户端设备102的多个网络设备112。在某些实施例中,主机106可以被组织成机架、动作区域、组、集合、或其他合适的部分。例如在所示实施例中,主机106被分组为分别标识为第一、第二和第三主机集合107a-107c的三个主机集合。在所示实施例中,主机集合107a-107c中的每一个分别耦合到对应的网络设备112a-112c,网络设备112a-112c通常被称为“架顶”或“TOR”网络设备。然后,TOR网络设备112a-112c可以耦合到附加网络设备112,以形成分层、平面、网格或其他合适类型的拓扑中的计算机网络。底层网络108可以允许主机106和客户端设备102之间的通信。在其他实施例中,多个主机集合107a-107c可以共享单个网络设备112或者可以具有其他合适的布置。
图2是示出了根据所公开技术的实施例的分布式计算***100的某些硬件/软件组件的示意图。特别地,图2示出了可以在图1中的底层网络108上实现的覆盖网络108'。尽管图2中示出了覆盖网络108'的特定配置,但是在其他实施例中,覆盖网络108'也可以以其他合适的方式被配置。在图2中,为清楚起见,仅示出了图1的底层网络108的某些组件。
如图2所示,第一主机106a(在图2中显示为“主机1”)和第二主机106b(在图2中显示为“主机2”)可以各自包括可操作地彼此耦合的处理器132、存储器134、网络接口136和硬件加速器138。处理器132可包括一个或多个微处理器和/或其他合适的逻辑设备。存储器134可包括易失性和/或非易失性介质(例如ROM;RAM,磁盘存储介质;光学存储介质;闪存设备和/或其他合适的存储介质)和/或其他类型的计算机可读存储介质,其被配置为存储从处理器132接收的数据以及用于处理器132的指令(例如用于执行本文所讨论的方法的指令)。网络接口136可以包括网络接口卡(“NIC”)、连接转换器和/或其他合适类型的输入/输出设备,其被配置为接受来自虚拟网络146上的其他组件的输入并向虚拟网络146上的其他组件提供数字数据的输出。在其他实施例中,网络接口136中的一个或多个网络接口136也可以与硬件加速器138集成在一起并且是硬件加速器138的一部分。
第一主机106a和第二主机106b可以单独地包含可由处理器132执行的在存储器134中的指令,以使得个体处理器132提供管理程序140(分别标识为第一管理程序140a和第二管理程序140b)。管理程序140可以被单独配置为生成、监视、终止和/或以其他方式管理被组织到租户站点142中的一个或多个虚拟机144。例如如图2所示,第一主机106a可以提供第一管理程序140a,其分别管理第一和第二租户站点142a和142b。第二主机106b可以提供第二管理程序140b,其分别管理第一和第二租户站点142a'和142b'。管理程序140在图2中单独示出为软件组件。然而,在其他实施例中,管理程序140还可以包括固件和/或硬件组件。
租户站点142可以各自包括多个虚拟机144,用于执行特定租户101(图1)的合适租户应用147。例如第一主机106a和第二主机106b两者均可以托管针对第一租户101a(图1)的租户站点142a和142a'。第一主机106a和第二主机106b都可以托管针对第二租户101b(图1)的租户站点142b和142b'。每个虚拟机144可以执行对应的操作***、中间件和/或合适的应用。所执行的应用可以各自对应于一个或多个云计算服务或其他合适类型的计算服务。
还如图2所示,分布式计算***100可以包括覆盖网络108',其具有一个或多个虚拟网络146,其跨第一和第二主机106a和106b互连租户站点142a和142b。例如第一虚拟网络142a在第一主机106a和第二主机106b处互连第一租户站点142a和142a'。第二虚拟网络146b在第一主机106a和第二主机106b处互连第二租户站点142b和142b'。尽管单个虚拟网络146被示出为对应于一个租户站点142,但是在其他实施例中,多个虚拟网络(未示出)可以被配置为对应于单个租户站点146。
即使虚拟机144位于或托管在不同主机106上,虚拟网络146上的虚拟机144也可以经由底层网络108(图1)彼此通信。虚拟网络146中的每一个的通信可以与其他虚拟网络146隔离。在某些实施例中,可以允许通信通过安全网关或以其他方式以受控方式从一个虚拟网络146跨越到另一个虚拟网络。虚拟网络地址可以对应于特定虚拟网络146中的虚拟机144或载荷平衡器113(图1)中的一个。因此,不同的虚拟网络146可以使用相同的一个或多个虚拟网络地址。示例虚拟网络地址可以包括IP地址、MAC地址和/或其他合适的地址。
硬件加速器138可以被配置为比由处理器132执行对应的软件应用更有效地合成和执行某些功能。在某些实现中,硬件加速器138可以包括可编程硬件电路,可编程硬件电路经由通信桥158(如图3A-4F所示)可操作地耦合到加速器处理器(如图3A-4F所示)。可编程硬件电路可由在加速器处理器上执行的主机(例如操作***、管理程序、虚拟机或应用)配置以处理某些传入/传出分组。合适的硬件电路可以包括现场可编程门阵列(“FPGA”)、专用集成电路(“ASIC”)或其他合适的硬件组件。在所示实施例中,硬件加速器138被示为与网络接口136分离。在其他实施例中,硬件加速器138和网络接口136可以至少部分地集成到单个组件中,或者硬件加速器138可以还包括一个或多个集成网络接口(未示出)或除了附接到处理器132的那些之外的其他通信接口。如下面参考图3A-4F更详细描述的,硬件加速器138可以被配置为经由底层网络108和覆盖网络108'来高效地促进安全通信管理。
在操作中,主机106可以促进虚拟机144和/或在虚拟机144中执行的租户应用147之间的通信。例如处理器132可以执行合适的网络通信操作以促进第一虚拟机144',以通过遍历第一主机106a上的网络接口136、底层网络108(图1)、和第二主机106b上的网络接口136,经由虚拟网络146a向第二虚拟机144”或第二主机106b发送分组。根据所公开技术的实施例,硬件加速器138可以被配置为促进主机106处的安全数据转移的操作,如下面更详细描述的。尽管本文在分布式计算***100的上下文中描述了硬件加速器138的组件和操作,但是硬件加速器138的实施例也可以用于其他合适的计算***,诸如客户端设备102。
图3A-3C是示出根据所公开技术的实施例的在安全通信信道的会话建立期间图2中的硬件加速器138的某些硬件/软件组件的示意图。如图3A所示,硬件加速器138可包括印刷电路板139(为清楚起见以虚线示出)或其他合适类型的基板,其承载加速器处理器150、存储器152、以及经由通信桥接器158耦合到加速器处理器150的可编程硬件电路156。这样,加速器处理器150在可编程硬件电路156的外部。虽然硬件加速器138的特定组件在图3A中示出,但在其他实施例中,硬件加速器138也可以包括存储组件、电源组件或其他合适的组件(未示出)。
加速器处理器150可包括一个或多个微处理器或其他合适的逻辑设备。存储器152可包括易失性和/或非易失性介质(例如ROM;RAM,磁盘存储介质;光学存储介质;闪存设备和/或其他合适的存储介质)和/或其他类型的计算机可读存储介质,其被配置为存储安全协议库(例如图3A中所示的SSL/TLS库154)的记录。存储器152还可以存储用于加速器处理器150的指令以用于执行安全通信管理,如下面更详细描述的。在其他实施例中,硬件加速器138的前述组件可以由单个硅衬底(未示出)承载以形成SoC器件。
加速器处理器150可以执行存储在存储器152(或其他合适的位置)中的指令以提供各种软件组件。例如如图3A所示,加速器处理器150可以执行指令以提供可操作地彼此耦合的用户应用162、安全层164和接口组件166。用户应用162可以包括被配置为执行用户期望功能的任意软件应用。在一个示例中,用户应用162可以包括视频编辑应用,其被配置为通过执行例如视频流的代码转换或其他合适的操作来编辑视频流。在其他示例中,用户应用162可以是病毒扫描器、照片编辑器、文档编辑器、web服务器或其他合适类型的应用。接口组件166可以包括合适的软件驱动器,其允许用户应用162和/或安全层164与可编程硬件电路156的各种组件交互。示例软件驱动器可以包括处理器-FPGA桥接驱动器、TCP/IP通信驱动器、加速加密驱动器或其他合适类型的驱动器。
安全层164可以被配置为执行与安全协议的某些方面有关的操作。例如安全层164可以被配置为与对等计算设备(例如图1中的另一主机106)建立安全通信信道。安全层164可以被配置为处理握手、改变密码规范或通过访问存储器152中的SSL/TLS库154来警报SSL/TLS协议的层。示例操作可以包括密码套件的协商、对等计算的认证、随机数和预备主密码的交换、共享密钥的创建或其他合适的操作。例如安全层164可以被配置为选择公共密码套件,该公共密码套件包括密钥交换方法、批量加密方法或消息认证码。安全层164还可以被配置为认证对等计算设备、执行密钥交换、并指示会话建立完成。
一旦安全通信会话被建立,安全层164可以被配置为经由接口组件166向可编程硬件电路156中的会话处理器167提供会话和连接信息(本文称为“会话信息172”,如图3C所示)。这样的会话信息172可以包括例如会话标识、会话密钥、加密算法标识、散列算法标识、压缩算法标识、连接标识符或其他合适的参数或算法标识。在某些实施例中,安全层164还可以被配置为向数据路由器163指示是否要针对建立的安全通信会话执行数据路由。
可编程硬件电路156可包括可由加速器处理器150执行的用户应用162和/或安全层164所配置的各种硬件电路,以用于在硬件中执行各种功能。例如如图3A所示,可编程硬件电路156可以包括I/O接口161、数据路由器163、加密内核165、会话处理器167和可操作地彼此耦合的用户内核169。在某些实施例中,I/O接口161可以包括被配置为执行与媒体访问控制层(“MAC”)、IP、TCP和/或UDP层相关的操作的电路。这种操作的示例可以包括帧定界和识别、目标站的寻址、源站寻址信息的传送、逻辑链路控制的透明数据转移、通过检查帧校验序列来防止错误、以及对物理传输介质的访问的控制。在其他实施例中,I/O接口161可以仅包括被配置为执行与MAC层有关但不与TCP/IP层有关的操作的电路。在进一步的实施例中,除了与MAC、IP、TCP和/或UDP层相关的那些之外或者代替与MAC、IP、TCP和/或UDP层相关的那些,I/O接口161可以包括其他合适的电路。
加密内核165可以包括被配置为使用加密密钥并根据所选加密算法来执行某些数据的加密和/或解密的电路,以及随机数生成器、散列引擎和适合于对称或非对称密码学的其他组件。例如加密内核165可以包括实现三重数据加密标准(“DES”)、RSA加密算法、Blowfish算法、高级加密标准(“AES”)或其他合适的加密算法的电路。尽管加密内核165被示为在可编程硬件电路156中实现,但是在其他实施例中,加密内核165可以被实现为加速器处理器150中的软件组件。安全层164和/或硬件加速器138的其他组件可以利用加密内核165经由接口组件166加密/解密数据,如箭头159所示。在其他实施例中,前述加密操作也可以在硬件电路156和加速器处理器150两者中实现。例如由加速器处理器150提供的软件加密堆栈(未示出)可用于执行与会话协商相关联的非对称加密操作,而可编程硬件电路156中的加密内核165可用于与应用数据加密和解密相关联的对称加密操作。在另外的实施例中,安全层164和/或硬件加速器138的其他组件可以利用加密内核165来经由接口组件166加密/解密数据,如箭头159所示。在进一步的实施例中,安全层164可以利用处理器150提供的软件加密堆栈。
用户内核169可以包括在硬件中实现一个或多个应用功能的电路。在一个示例中,用户内核169可以包括被配置为执行经由底层网络108和覆盖网络108'接收的视频流的代码转换的电路。在另一示例中,用户内核169可以包括被配置为执行视频流的有损或无损压缩的电路。在其他示例中,用户内核169还可以包括被配置为在图形处理单元中执行比特块转移、用于垃圾邮件控制的正则表达、或其他合适功能的电路。用户内核169通常只能以解密的形式处理应用数据。这样,根据某些实现,在诸如HTTPS会话的安全通信会话期间,用户内核169可能需要依赖于加速器处理器150用于解密/加密操作。
然而,依赖于加速器处理器150用于加密/解密,可以对硬件加速器138的数据吞吐量施加约束。例如,当利用加速器处理器150用于加密/解密时,通过通信桥158的数据量可以高达输入数据的四倍,可以高达输出数据的四倍。这种数据转移对硬件加速器138的数据吞吐量施加了约束。因此,由于高处理能力需求,某些硬件加速***可能无法处理高速转移(例如>10Gb/s)。此外,使用加速器处理器150可能是昂贵的,集成起来很复杂,并且可能需要大的设备占用空间,并且消耗大量的功率。
所公开的技术的若干实施例可以通过实现数据路由器163来解决前述困难中的至少一些困难,该数据路由器163用于基于数据业务携带的数据类型在加速器处理器150和会话处理器167之间切换数据业务。在某些实施例中,数据路由器163可以通过聚合传入分组170来组装TLS记录176,以便能够在TLS记录级别路由在分组170中包含的数据。例如数据路由器163可以被配置为通过监视TLS记录176的报头中的值来切换数据业务。当TLS记录176的报头包含指示TLS记录176包含会话管理数据的值(例如CHANGE_CIPHER_SPEC、ALERT或HANDSHAKE)时,数据路由器163可以被配置为将TLS记录176转发到加速器处理器150的接口组件166以进行进一步处理。另一方面,当TLS记录176的报头包含指示TLS记录176包含加密的应用数据的值(例如APPLICATION_DATA)时,数据路由器163可以将TLS记录176路由到会话处理器167而不是加速器处理器150用于进一步处理,如下面参考图4A-4E更详细描述的。下面参考图5A-5C更详细地描述适合于分组170的报头和TLS记录176的一个示例数据模式。
在其他实施例中,数据路由器163可以被配置为通过例如监视服务器/客户端完成的消息或经由其他合适的技术来检测安全通信会话的建立。尽管数据路由器163在图3A中被示出为可编程硬件电路156的一部分,但在其他实施例中,数据路由器163可以是独立硬件设备、由加速器处理器150提供的软件组件、或者可以具有其他合适的配置。下面参考图6更详细地描述数据路由器163的一个示例配置。
会话处理器167可以被配置为透明地处理安全协议的子集。例如会话处理器167可以被配置为透明地处理SSL/TLS协议的子集(诸如记录层子协议(或其一部分))以用于处理应用数据。使用从加速器处理器150接收的会话信息,会话处理器167可以被配置为将所接收的分组分段/组合成期望的数据结构,对数据流中的数据块序列进行编号,使用在握手期间协商的压缩算法来对分组中的数据进行压缩/解压缩,或执行其他合适的数据操作。在特定示例中,会话处理器167可以被配置为使用加密内核165来解密与视频流相关的数据流的TLS记录有效载荷,并将解密的数据存储在缓冲器中。当一个或多个TLS记录176到达并被解密时,会话处理器167可以被配置为在将解密的分组提供给用户内核169用于进一步处理之前,将封装在TLS记录有效载荷中的消息的报报头分地或完全地转发到处理器150以用于有效性检查。下面参考图7更详细地描述会话处理器167的一个示例配置,并且下面参考图4A-4E更详细地描述有效性检查的操作。
图3A-3C示出了根据所公开技术的实施例的安全通信信道的初始建立期间的某些操作阶段。如图3A所示,当I/O接口161接收分组170时,在某些实施例中,I/O接口161可以将分组170转发到数据路由器163,用于在TLS记录级别进行组装和路由。在其他实施例中,I/O接口161可以被配置为将分组170组装成一个或多个TLS记录176。然后,数据路由器163可以确定从分组170组装的TLS记录176包含应用数据还是非应用数据,诸如会话管理数据。响应于确定分组170不包含应用数据,数据路由器163可以被配置为经由通信桥158将TLS记录176转发或以其他方式路由到加速器处理器150的接口组件166,如图3A所示。
然后,接口组件166可以经由接口组件166将TLS记录176转发到安全层164和/或用户应用162以用于进一步处理。在某些实施例中,安全层164可以利用可编程硬件电路156中的加密内核165,以对例如包含会话控制数据的TLS记录176的有效载荷执行某些加密/解密操作,如箭头159所指示。然后,安全层164可以访问SSL/TLS库154并生成附加的TLS记录176'作为对在TLS记录176中包括的会话管理数据的响应,如图3B所示。接口组件166然后可以在可编程硬件电路156处将TLS记录176'发送到数据路由器163和/或I/O接口161,其进而可以将TLS记录176'格式化或以其他方式操纵到分组171中,经由图1的覆盖网络108'和底层网络108将分组171发送到对等计算设备。
可以重复图3B中所示的前述操作一次或多次,直到安全通信信道被建立。如图3C所示,在建立安全通信信道时,用户应用162和/或安全层164可以将会话信息172发送到会话处理器167,以配置会话处理器167以用于处理建立的安全通信会话。会话信息172可以包括例如会话标识、连接标识、会话密钥、加密算法标识、散列算法标识、压缩算法标识或其他合适的参数或算法标识。在某些实施例中,用户应用162和/或安全层164还可以将会话信息172发送到数据路由器163,会话信息172指示数据路由器163是否路由包含与安全通信信道有关的应用数据的其他分组。在进一步的实施例中,会话信息172可以被发送到加密内核165,以建立商定的加密算法和加密密钥以用于编码或解码数据业务。在其他实施例中,会话处理器167和/或路由器163可以将前述信息中继到加密内核165。
在接收到会话信息172时,数据路由器163、加密内核165和会话处理器167可以协作以处理包含用于安全通信会话的应用数据的TLS记录有效载荷176”,如图4A-4E所示。如图4A所示,可编程硬件电路156可以包括一个或多个缓冲器177,每个缓冲器可以可操作地耦合到会话处理器167的一个连接。缓冲器177可以包括易失性和/或非易失性介质(例如ROM;RAM,磁盘存储介质;光存储介质;闪存设备和/或其他合适的存储介质)和/或被配置为存储和允许检索数据的其他类型的计算机可读存储介质。尽管图4A-4E示出缓冲器177是可编程硬件电路156的一部分,但在其他实施例中,缓冲器177可以在可编程硬件电路156的外部,例如通过作为存储器152的一部分。
如图4A所示,在操作中,I/O接口161可以接收分组170'并将它们转发到数据路由器163,数据路由器163进而将分组170'组装成TLS记录,并决定是否将这些TLS记录转发到加速器处理器150(例如图3A中所示的TLS记录176),或剥离其报头的TLS记录并将其有效载荷转发到会话处理器167(TLS记录有效载荷176”,如图4A-4D所示)。为了做出转发决定,数据路由器163可以通过聚合来自所接收的分组170'的数据来组装TLS记录,或者直接确定传入的TLS记录是否包含用于安全通信会话或连接的应用数据。在某些实现中,每个TCP/IP连接可以由对应端点的IP地址和端口的组合唯一地标识,并且被分配连接ID。处理器150可以更新数据路由器163中的路由表(未示出),指示哪些连接ID属于硬件加速的SSL/TLS连接。当具有关联连接ID的传入分组与路由表中存在的条目之一相匹配时,数据路由器163可以对分组170'进行排队,提取TLS记录报头,然后基于TLS记录报头来标记对应的TLS记录是否与应用数据相关联。
响应于确定传入TLS记录包含应用数据,数据路由器163可以将TLS记录有效载荷176”路由到会话处理器167而不是加速器处理器150的接口组件166。如图4B所示。然后,会话处理器167可以与加密内核165协作(如箭头159'所指示),以解密包含应用数据的TLS记录有效载荷176”,以生成解密数据174作为传入消息。在将数据174存储在对应于连接的缓冲器177之一中之前,会话处理器167还可以对解密数据174进行分段/组合、压缩/解压缩或执行其他合适的操作。在一些实施例中,会话处理器167可以在可用时将数据174直接推送到用户内核169,而不将数据174存储在与连接相关联的缓冲器177中。
然后,会话处理器167可以将解密数据174提供给用户内核169,以根据用户内核169的配置进行进一步处理。在一个示例中,用户内核169可以对接收到的数据174执行代码转换。在另一示例中,用户内核169可以将数字滤波器应用于在数据174中接收的音频流或视频流。在其他示例中,用户内核169可以对接收的数据174执行其他合适的操作。
如下面参考图4C-4E更详细描述的,会话处理器167还可以被配置为在向用户内核169提供数据174(或其一部分)以进行进一步处理之前对存储的数据174执行有效性检查以表示传入消息。例如如图4C所示,响应于从用户内核169接收到传入TLS记录有效载荷176”和读取请求175,会话处理器167可以被配置为经由通信桥158向由加速器处理器150执行的用户应用162和/或安全层164发送有效性请求178以及在缓冲器177中存储的数据174'的开始部分。在一个示例中,4千字节的数据174'(或到其的存储器指针)可以被发送到加速器处理器150。在另一个示例中,如果数据的大小不超过阈值(例如4千字节),则可以将缓冲器中的所有数据174发送到加速器处理器150。在其他示例中,会话处理器167可以将8千字节、16千字节或缓冲器177中的其他合适大小的数据发送到加速器处理器150。与有效性请求178一起发送的数据174'可以全部或部分地包含封装在TLS记录有效载荷中的协议的记录的报头。例如如果TLS记录有效载荷中存在的数据174'是HTTP消息,则有效性请求178可以包含对应的HTTP报头。
响应于接收到有效性请求178和表示传入消息的数据174'的至少一部分,加速器处理器150可以被配置为解析所接收的数据174'并识别在解密数据174'中包括的报头(例如HTTP报头,未示出)。通过检查报头,加速器处理器150可以确定与报头相关联的有效载荷对于用户内核169的目的、封装记录的有效载荷大小(例如200千字节的HTTP有效载荷)或解密的应用数据的其他合适的参数是否有效。例如如果HTTP报头中的状态字段包含值“200”,则加速器处理器150可以指示HTTP有效载荷是有效的。另一方面,当HTTP报头中的状态字段包含值“403”时,加速器处理器150可以指示HTTP有效载荷无效。下面参考图5B更详细地描述根据HTTP的报头字段的示例。然后,加速器处理器150可以发送包含信息的有效性结果179,以确定所接收的HTTP消息的HTTP有效载荷和HTTP报头的大小。有效性响应179还可以包含到会话处理器167的前述参数中的一个或多个,如图4D所示。
图4E示出了当有效性结果179指示包括在数据174中的内容有效时的场景。响应于接收到有效性结果179,会话处理器167可以被配置为基于有效性结果178中包括的报头大小或有效载荷大小来移除包含在数据174中的封装消息的报头,以提取表示在封装消息内容中包括的有效载荷的数据174”。在接收到由用户内核169发出的读取请求175(图4C)时,会话处理器167仅将数据174的有效载荷174”提供给用户内核169以进行进一步处理。在另一种场景中,当有效性结果179指示没有足够的、与接收的数据174相关联的数据时(图4D),会话处理器167可以暂停一段预定的时段(例如5秒)以允许更多的数据到达并重复图4C和4D所示的操作。在另一种场景下,当有效性结果179指示数据174的有效载荷无效时,会话控制器167可以丢弃当前在缓冲器177中的数据174的全部或至少一部分,终止安全通信会话,向用户内核169或处理器150指示读取错误,或执行其他合适的操作。
因此,所公开的技术的若干实施例可以减少甚至防止可编程硬件电路156和加速器处理器150之间的通信桥158过载。如上面参考图3A-4E所述,通过在可编程硬件电路156中实现会话处理器167来处理应用数据处理,数据流中的任意应用数据的加密/解密将不会离开可编程硬件电路156并且通过通信桥158到加速器处理器150,除了在一些实施例中用于有效性检查的少量数据的不经常共享之外。因此,根据加速器处理器150的感知,安全通信会话看起来好像从未接收任意数据,但通信会话是有效的。从可编程硬件电路156的角度来看,安全通信会话看起来好像在没有任意握手开销的情况下受保护连接被启动。这样,在与其他硬件加速器相比时,通过通信桥158的数据传递方面的开销可以被减少,以在硬件加速器138处实现更高的吞吐量(例如大于10千兆位/秒)。
图5A是示出根据所公开技术的实施例的适合于分组170的数据模式180的示意图。如图5A所示,数据模式180可以包括分层协议记录,每个分层协议记录具有报头和有效载荷。例如分组170可以包括具有MAC报头字段181、有效载荷181a和以太网循环冗余校验字段181b的以太网记录。以太网有效载荷181a可以进而包含IP报头字段182和IP有效载荷182a。如图5A所示,IP有效载荷182a还可以包含TCP报头字段183和TCP有效载荷183a。如图5B所示,各自包含TLS记录报头184和TLS有效载荷184a的TLS记录176可以被编码在一个或多个连续的TCP有效载荷183a中。反过来,如图5C所示,一个或多个连续的TLS记录有效载荷184a可以包含一个或多个编码的HTTP记录185,每个编码的HTTP记录185具有HTTP报头字段186和HTTP有效载荷186a,因为HTTP记录185的大小可以大于单个TLS记录有效载荷184a的大小。
MAC报头字段181、IP报头字段182和TCP报头字段183可以被配置为分别包含用于到硬件加速器138(图2)和/或主机106(图2)的TCP/IP连接的MAC地址、IP地址和TCP端口号。TLS报头字段184可以被配置为包含指示TLS记录176中包含的数据类型的值。TLS报头字段184的示例值可以包括APPLICATION_DATA、CHANGE_CIPHER_SPEC、ALERT或HANDSHAKE。HTTP报头字段186可以被配置为包含根据HTTP协议的各种参数。例如参数可以包括HTTP有效载荷字段186a中的数据的内容长度、高速缓存控制等。参考图5D更详细地描述HTTP报头186的示例报头字段。即使示例数据模式180包括HTTP报头字段186和HTTP有效载荷186a,在其他实施例中,数据模式180还可以包括安全外壳(“SSH”)、安全复制(“SCP”)、安全文件传输协议(“SFTP”)、或在SSL/TLS下封装的其他合适协议。
图5D是示出了根据所公开技术的实施例的适合于图5C中的HTTP报头186的示例报头字段的示意图。如图5D所示,报头字段可以包括:内容编码字段187,被配置为包含编码标识;内容长度字段188,被配置为以例如字节存储内容或有效载荷长度;以及状态字段189,被配置为包含指示与HTTP报头相关联的内容或有效载荷是否有效的数值。在所示的示例中,内容编码字段187包含“gzip”作为编码标识符;内容长度字段188包含“348”,其指示内容或有效载荷长348个字节;并且状态字段189包含数值“200”,其指示内容或有效载荷有效。尽管在图5B中示出了特定字段作为示例,但是在其他实施例中,HTTP报头186还可以包括被配置为包含内容语言、内容位置、内容范围和/或其他合适参数的字段。
图6和7分别是示出了根据所公开技术的附加实施例的数据路由器163和会话处理器167的某些硬件/软件组件的示意图。如图6所示,数据路由器163可包括可操作地彼此耦合的打字电路191和路由电路192。打字电路191可以被配置为从传入分组中的数据组装TLS记录,并分析组装的TLS记录的报头内容以确定组装的TLS记录的类型。如上面参考图3A-4C所讨论的,在某些实施例中,打字电路191可以被配置为通过监视TLS记录的TLS记录报头184(图5)来确定TLS记录的类型(例如应用日期或非应用数据)。在其他实施例中,打字电路191可以使用其他合适的技术来检测分组170的类型。路由电路192被配置为基于由打字电路191确定的类型将分组170转发到会话处理器167(图3A)或处理器150(图3A)。
如图7所示,会话处理器167可以包括可操作地彼此耦合以生成数据174'的有效性检查器193、数据控制器194和定序电路195。定序电路195可以被配置为监视与分组170相关联的序列号和/或修改序列号以使得分组170可以被加速器处理器150接受(图4C)。在一个示例中,定序电路195可以被配置为跟踪包含由加速器处理器150处理的会话管理消息的先前分组的序列号。然后,定序电路195可以修改分组170的序列号,使得分组170看起来像与包含会话管理消息的先前分组是连续的。在另一实施例中,在加速器处理器150中存在的TLS/SSL软件栈(例如图3A中的安全层164)中改变序列号。
有效性检查器193可以被配置为通过向加速器处理器150发送有效性请求178连同消息的至少有一部分来检查包括在TLS记录176”(“封装消息”或“消息”)的有效载荷中的内容/有效载荷的有效性。响应于有效性请求178,加速器处理器150可以通过分析在消息的报头中包含的值来验证内容/有效载荷。然后,加速器处理器150可以将有效性结果179发送到会话处理器167。有效性检查器193还可以被配置为从加速器处理器150接收有效性结果179并将有效性结果179转发到数据控制器194以进行进一步处理。。
在接收到有效性结果179之后,数据控制器194可以基于有效性结果179中包括的信息来确定如何处理消息。例如当有效性结果179指示内容/有效载荷有效时,数据控制器194可以被配置为从消息中移除与消息的报头相对应的多个字节,并且当执行读取请求175时仅将消息的内容/有效载荷提供给用户内核169(图4D)。在另一示例中,当有效性结果179指示内容/有效载荷无效时,数据控制器194可以被配置为丢弃当前在缓冲器177中的消息的全部或至少一部分(图4D),终止安全通信会话,向用户内核169和/或用户应用152指示读取错误,或执行其他合适的操作。在其他实施例中,会话处理器167还可以包括:分段电路,被配置为对在TLS记录有效载荷176”中包含的数据进行分段或组合;压缩电路,被配置为压缩或解压缩在TLS记录有效载荷176”中包含的数据;或者其他合适的电路类型。
图8A-9B是示出了根据所公开技术的实施例的硬件加速器中的安全通信管理的各个方面的流程图。尽管下面参考图1的分布式计算***100描述了这些过程,但是在其他实施例中,这些过程可以在具有附加和/或不同组件的其他合适的计算***中实现。
如图8A所示,过程200可以包括在阶段202接收一个或多个分组。所接收的分组可以包括一个或多个报头,如图5A中所示的那些报头,或者包含其他合适的信息。然后,过程200可以包括将所接收的分组组装成TLS记录并在阶段204检查组装的TLS记录以确定TLS记录是否包含的加密的应用数据。在某些实施例中,检查TLS记录可以包括确定TLS记录的报头中包含的值是否等于APPLICATION_DATA,下面参考图8B更详细地描述其示例操作。
然后,过程200可以包括决策阶段206,以确定TLS记录是否包含应用数据。响应于确定TLS记录包含应用数据,过程200可以包括在阶段208,将TLS记录有效载荷转发到在可编程硬件电路156(例如FPGA)中实现的会话处理器,以用于进一步处理。响应于确定如果TLS记录不包含应用数据,则过程200可以包括在阶段210,将TLS记录转发到加速器处理器以用于进一步处理。
图8B是示出了检查接收的TLS记录的示例操作的流程图。如图8B所示,操作可以包括在阶段212通过例如解析TLS记录的报头来获得TLS记录的TLS报头值。然后,操作可以包括决策阶段214以确定获得TLS报头值是否等于APPLICATION_DATA。响应于确定所获得的TLS报头值等于APPLICATION_DATA,操作可以包括在阶段216指示TLS记录包含应用数据。响应于确定所获得的TLS报头值不等于APPLICATION_DATA,操作可以包括在阶段218指示TLS记录不包含应用数据。
图9A是示出了在例如图3A的可编程硬件电路156中实现的会话处理器处处理分组的过程220的流程图。如图9A所示,过程220可以包括在阶段222接收会话和连接信息。会话和连接信息可以包括会话标识,连接标识,会话密钥,加密算法,散列算法、或者与分组相关的安全通信会话的压缩算法中的一个或多个。然后,过程220可以包括在阶段224接收包含TLS记录的分组,TLS记录包含应用数据。过程220还可以包括在阶段226处通过将分组与应用数据组合成TLS记录并使用接收的会话信息处理TLS记录来处理接收的分组。在某些实施例中,处理所接收的分组可以包括解密TLS记录的有效载荷,将应用数据分段或组合成目标数据结构,对应用数据中的数据块序列进行编号,或者使用在接收的会话信息中标识的压缩算法来压缩或解压缩在接收的TLS记录中包含的应用数据。在其他实施例中,处理分组还可以包括对传入的TLS记录执行有效性检查。下面参考图9B更详细地描述执行有效性检查的示例操作。
如图9B所示,用于执行有效性检查的示例操作可以包括在阶段232接收传入TLS记录数据。然后,操作可以包括在阶段234处从会话处理器167(图4C)向加速器处理器(图4C)发送有效性请求。在某些实施例中,有效性请求可以包括调用加速器处理器150上的应用编程接口(“API”)。以下是用于请求有效性检查的示例API回调(“valid_response”)。
int valid_response(char const*buffer,size_tgbs,size_t*ths,size_t*ps)
其中buffer包含指向要检查的数据的存储器指针,gbs包含要检查的数据量(例如缓冲器大小,以字节为单位);在加速器处理器150执行“valid_response”请求时,ths返回报头的字节大小以跳过(即,如果TLS记录有效载荷包含HTTP消息,则ths返回HTTP消息的报头的大小)。此外,ps返回以字节为单位的有效载荷的大小(即,如果TLS记录有效载荷包含HTTP消息,则ps返回HTTP正文的大小)。此外,如果传递给buffer中的请求的数据被确定为有效(例如HTTP状态代码200并且buffer中的数据具有足够的长度来确定报头长度),则“valid_response”回调返回值“0”。如果数据不足以大到决定有效性,则“valid_response”请求也可以返回“1”。如果错误被检测到,则“valid_response”请求也可以返回“2”。尽管在以上示例中示出了特定的实现技术,但是在其他实施例中,可以使用其他合适的技术/值来实现有效性检查操作。
然后,操作可以包括决策阶段236,以确定是否存在足够的数据来做出决定。响应于确定检测到不足的数据,操作包括暂停预定时段以等待更多传入数据,并通过返回到阶段234来重新发送另一个有效性检查请求。在等待附加数据的情况下,如果在预定的超时时段之前没有数据到达,该请求被认为是无效的并且该流被指向使数据无效242。如果已经接收到足够的数据来尝试验证,则操作可以包括决策阶段240以基于所接收的有效性结果来确定有效内容/有效载荷。响应于确定内容/有效载荷有效,操作238包括在基于有效性结果中包括的报头大小移除消息的报头之后将消息的内容/有效载荷提供给用户内核。否则,操作继续到在阶段242处的使数据无效。使数据无效的示例操作可包括丢弃来自缓冲器的所有数据,关闭安全通信会话,向用户内核指示读取错误,或执行其他合适的操作。操作还可以包括用于确定缓冲器中是否存在任意附加数据的另一决策阶段244。响应于确定缓冲器中存在附加数据,操作恢复到在阶段234处发送另一个有效性检查请求;否则,操作包括在阶段246处指示读取操作完成。
图10是适用于图1中的混合云计算***100的某些组件的计算设备300。例如计算设备300可适用于图1的主机106或客户端设备102。在非常基本的配置302中,计算设备300可以包括一个或多个处理器304和***存储器306。存储器总线308可以用于处理器304和***存储器306之间的通信。
取决于所需的配置,处理器304可以是任意类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任意组合。处理器304可以包括:一个或多个级别的高速缓存,诸如一级高速缓存310和二级高速缓存312;处理器核314;以及寄存器316。示例处理器核314可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)或其任意组合。示例存储器控制器318也可以与处理器304一起使用,或者在一些实现中,存储器控制器318可以是处理器304的内部部分。
取决于所需的配置,***存储器306可以是任意类型,包括但不限于易失性存储器(例如RAM)、非易失性存储器(例如ROM、闪存等)或其任意组合。***存储器306可以包括操作***320、一个或多个应用322和程序数据324。该描述的基本配置302在图8中由内部虚线内的那些组件示出。
计算设备300可以具有附加特征或功能,以及用于促进基本配置302与任意其他设备和接口之间的通信的附加接口。例如总线/接口控制器330可用于促进经由存储接口总线334的、基本配置302与一个或多个数据存储设备332之间的通信。数据存储设备332可以是可移除存储设备336、不可移除存储设备338或其组合。可移除存储设备和不可移除存储设备的示例包括诸如软盘驱动器和硬盘驱动器(HDD)的磁盘设备、诸如压缩盘(CD)驱动器或数字通用盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)和磁带驱动器等等。示例计算机存储介质可以包括以用于信息的存储的任意方法或技术实现的易失性和非易失性、可移除和不可移除介质,诸如计算机可读指令、数据结构、程序模块或其他数据。术语“计算机可读存储介质”或“计算机可读存储设备”不包括传播的或其他类型的信号和通信介质。
***存储器306、可移除存储设备336和不可移除存储设备338是计算机可读存储介质的示例。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备或任意其他介质,其可以用于存储所需信息并且可以由计算设备300访问。任意这样的计算机可读存储介质可以是计算设备300的一部分。
计算设备300还可以包括接口总线340,用于促进经由总线/接口控制器330从各种接口设备(例如输出设备342、***接口344和通信设备346)到基本配置302的通信。示例输出设备342包括图形处理单元348和音频处理单元350,其可以被配置为经由一个或多个A/V端口352与诸如显示器或扬声器的各种外部设备通信。示例***接口344包括串行接口控制器354或并行接口控制器356,其可被配置为经由一个或多个I/O端口358与诸如输入设备(例如键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其他***设备(例如打印机、扫描仪等)的外部设备通信。示例通信设备346包括网络控制器360和硬件加速器365,其可以被布置为促进经由一个或多个通信端口364通过网络通信链路与一个或多个其他计算设备362通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以由计算机可读指令、数据结构、程序模块或诸如载波或其他传输机制的调制数据信号中的其他数据来体现,并且可以包括任意信息传递介质。“已调制数据信号”可以是以对信号中的信息进行编码的方式设置或改变其特征的一个或多个特征的信号。作为示例而非限制,通信介质可以包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频(RF)、微波、红外(IR)和其他无线介质的无线介质。本文使用的术语计算机可读介质可以包括存储介质和通信介质。
计算设备300可以被实现为小形状因子便携式(或移动)电子设备的一部分,诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络-手表设备、个人耳机设备、专用设备或包括任意上述功能的混合设备。计算设备300还可以实现为包括膝上型计算机和非膝上型计算机配置两者的个人计算机。
从前述内容可以理解,本文已经出于说明的目的描述了本公开的特定实施例,但是在不脱离本公开的情况下可以进行各种修改。另外,除了其他实施例的元件之外或代替其他实施例的元件,一个实施例的元件中的许多元件可以与其他实施例组合。因此,该技术不受除了所附权利要求之外的限制。
Claims (20)
1.一种支持硬件加速器中的安全通信管理的方法,所述硬件加速器包含可编程硬件电路,所述可编程硬件电路经由通信桥被耦合到所述可编程硬件电路外部的处理器,所述可编程硬件电路具有缓冲器和被配置为执行用户功能的用户内核,其中所述方法包括:
从所述可编程硬件电路并且经由所述通信桥向所述处理器发送数据,所述数据表示用于验证在所述缓冲器中存储的消息的内容的请求,所述消息使用安全套接字层或传输层安全协议来被保护;
在所述处理器处基于来自所述可编程硬件电路的所述请求来执行对所保护的所述消息的所述内容的有效性检查;
经由所述通信桥从所述处理器向所述可编程硬件电路传输表示关于所述消息的验证结果的数据,所述验证结果包含所述消息中的所述内容是否有效的指示以及所述消息的报头大小或有效载荷大小;以及
当所述指示指示所述消息的所述内容有效时,
利用所述可编程硬件电路,根据所述验证结果中指示的所述报头大小或所述有效载荷大小,从所述缓冲器中的所述消息中移除在所述消息中包含的报头,以提取所述消息的有效载荷;以及
将所提取的所述有效载荷提供给所述用户内核。
2.根据权利要求1所述的方法,还包括:当所述指示指示所述消息的所述内容无效时,在所述可编程硬件电路处执行以下项中的至少一项:
丢弃与当前在所述缓冲器中的所述消息相关联的所有数据;
终止所述安全通信会话和/或连接;或者
向所述用户内核或所述可编程硬件电路外部的所述处理器指示读取错误。
3.根据权利要求1所述的方法,还包括:当所述指示指示所述消息没有足够的数据来确定有效性时,在所述可编程硬件电路处等待预定时间段以用于属于所述消息的附加数据到达,并且在接收到属于所述消息的所述附加数据时重复所述发送和接收操作。
4.根据权利要求1所述的方法,还包括:
当所述指示指示所述消息没有足够的数据来确定有效性时,在所述可编程硬件电路处等待预定时间段以用于属于所述消息的附加数据到达;以及
在检测到在所述预定时间段之前没有附加数据到达时,在所述可编程硬件电路处执行以下项中的至少一项:
丢弃与当前在所述缓冲器中的所述消息相关联的所有数据;
终止所述安全通信会话和/或连接;或者
向所述用户内核或所述可编程硬件电路外部的所述处理器指示读取错误。
5.根据权利要求1所述的方法,其中发送表示用于验证的所述请求的所述数据包括发送所述请求,所述请求包含(i)所述消息的存储器位置的指示和要检查的数据大小,或者(ii)所述消息的所述内容的全部或部分副本和从所述消息中复制的数据的大小。
6.根据权利要求1所述的方法,其中发送表示用于验证的所述请求的所述数据包括发送包含所述消息的存储器位置的指示和要检查的数据大小的请求,所述数据大小是小于所述消息的总大小的预定固定大小。
7.根据权利要求1所述的方法,其中执行所述有效性检查包括:
在所述处理器处执行指令以标识在所述消息中包含的超文本传输协议(“HTTP”)报头的一个或多个字段;以及
当状态码字段包含与有效指示符相对应的值时,指示所述消息的所述内容有效;或者
当所述状态码字段包含与无效指示符相对应的另一个值时或者当所述状态码字段不存在所述HTTP报头中时,指示所述消息的所述内容无效。
8.根据权利要求1所述的方法,其中执行所述有效性检查包括:
在所述处理器处执行指令以标识在缓冲器中存在的所述消息中包含的超文本传输协议(“HTTP”)报头的一个或多个字段;
确定所述缓冲器是否包含足够的数据来确定HTTP报头的大小和HTTP有效载荷的大小;以及
响应于确定所述缓冲器不包含足够的数据,在所述有效性结果中指示验证检查不能被执行。
9.根据权利要求1所述的方法,还包括:
在所述可编程硬件电路处确定在将所述消息的所提取的所述内容提供给所述用户内核之后附加数据是否存在;以及
响应于确定所述附加数据存在,重复针对所述附加数据的发送和执行操作。
10.一种硬件加速器,包括:
现场可编程门阵列(“FPGA”);
所述FPGA外部的处理器,所述处理器经由通信桥被耦合到所述FPGA;
缓冲器,可操作地被耦合到所述FPGA和所述处理器;以及
存储器,包含指令,所述指令由所述处理器可执行以使所述处理器:
经由所述通信桥从所述FPGA接收表示来自所述FPGA的验证请求的数据,以用于验证在所述缓冲器中存储的消息中包含的内容,所述消息使用安全套接字层或传输层安全协议来被保护;
响应于从所述FPGA接收到所述验证请求,
根据超文本传输协议(“HTTP”)来标识所述消息中包含的状态报头字段;
确定所标识的所述状态报头字段是否包含指示所述消息中的所述内容有效的值;以及
响应于确定所述状态报头字段存在并且包含指示所述消息中的所述内容有效的值,生成并经由所述通信桥向所述FPGA发送表示包含指示符的验证结果的数据,所述指示符指示所述消息包含有效内容。
11.根据权利要求10所述的硬件加速器,其中所述存储器包含附加的指令,所述附加的指令由所述处理器可执行以使所述处理器:
响应于确定所述状态报头字段包含指示所述消息中的所述内容无效的值,生成并经由所述通信桥向所述FPGA发送表示包含指示符的验证结果的数据,所述指示符指示所述消息的所述内容无效。
12.根据权利要求10所述的硬件加速器,其中表示所述验证请求的所述数据包含存储器指针和要被检查的所述消息的数据大小;并且其中所述存储器包含附加的指令,所述附加的指令由所述处理器可执行以使所述处理器:
根据所述验证请求中所指示的所述存储器指针和所述数据大小访问所述缓冲器中的数据;
确定是否存在足够的数据用于执行所请求的有效性检查;以及
响应于确定存在足够的数据用于执行所请求的所述有效性检查,执行所述标识、确定、生成和发送操作。
13.根据权利要求10所述的硬件加速器,其中表示所述验证请求的所述数据包含存储器指针和要被检查的所述消息的数据大小,并且其中所述存储器包含附加的指令,所述附加的指令由所述处理器可执行以使所述处理器:
根据所述验证请求中所指示的所述存储器指针和所述数据大小访问所述缓冲器中的数据;
确定是否存在足够的数据来执行所请求的有效性检查;以及
响应于确定不存在足够的数据用于执行所述有效性检查,生成并经由所述通信桥向所述FPGA发送表示包含指示符的验证结果的数据,所述指示符指示所述消息没有足够的数据用于执行有效性检查。
14.一种支持硬件加速器中的安全通信管理的方法,所述硬件加速器包含可编程硬件电路,所述可编程硬件电路经由通信桥被耦合到所述可编程硬件电路外部的处理器,所述可编程硬件电路具有缓冲器和被配置为执行用户功能的用户内核,其中所述方法包括:
在所述可编程硬件电路处,
从所述用户内核接收数据请求,所述数据请求请求读取被存储在所述缓冲器中的消息,所述消息使用安全套接字层或传输层安全协议来被保护;
响应于从所述用户内核接收到所述数据请求,经由所述通信桥向所述处理器发送表示用于验证所述消息中的内容的请求的数据;
经由所述通信桥从所述处理器接收表示所述消息的验证结果的数据,所述验证结果包含所述消息中的所述内容是否有效的指示以及所述消息的报头大小或所述消息的有效载荷大小中的至少一个;以及
当所述指示指示所述消息的所述内容有效时,根据所述验证结果中的所述报头大小和所述有效载荷大小从所述消息中移除报头,以从所述消息中提取有效载荷并将所提取的所述有效载荷提供给所述用户内核用于处理。
15.根据权利要求14所述的方法,其中所述验证请求包括存储器指针和与被存储在所述缓冲器中的所述消息或所述消息中所述内容的全部或部分副本有关的数据大小和所复制的所述内容的大小。
16.根据权利要求14所述的方法,还包括在所述指示指示所述消息的所述内容无效时,执行以下项中的至少一项:
丢弃与当前在所述缓冲器中的所述消息相关联的所有数据;
终止所述安全通信会话和/或连接;或者
向所述用户内核或所述可编程硬件电路外部的所述处理器指示读取错误。
17.根据权利要求14所述的方法,还包括在所述指示指示所述消息不具有足够数据用于确定有效性时,在重复所述发 送操作和接收操作之前暂停预定时段。
18.根据权利要求14所述的方法,其中发送表示用于验证的所述请求的所述数据包括发送包含所述消息的存储器位置的指示和要被检查的所述消息的数据大小的请求。
19.根据权利要求14所述的方法,其中发送表示用于验证的所述请求的所述数据包括发送包含所述消息的存储器位置的指示和要被检查的所述消息的数据大小的请求,所述数据大小是小于所述消息的总大小的预定固定大小。
20.根据权利要求14所述的方法,其中发送表示用于验证的所述请求的所述数据包括发送包含所述消息的存储器位置的指示和用于检查所述消息的所有数据的指示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111068943.4A CN113783691B (zh) | 2017-03-22 | 2018-03-14 | 安全通信中的硬件加速的有效载荷过滤 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762475159P | 2017-03-22 | 2017-03-22 | |
US62/475,159 | 2017-03-22 | ||
US15/632,865 US10541984B2 (en) | 2017-03-22 | 2017-06-26 | Hardware-accelerated payload filtering in secure communication |
US15/632,865 | 2017-06-26 | ||
PCT/US2018/022283 WO2018175162A1 (en) | 2017-03-22 | 2018-03-14 | Hardware-accelerated payload filtering in secure communication |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111068943.4A Division CN113783691B (zh) | 2017-03-22 | 2018-03-14 | 安全通信中的硬件加速的有效载荷过滤 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110463156A CN110463156A (zh) | 2019-11-15 |
CN110463156B true CN110463156B (zh) | 2021-09-24 |
Family
ID=63581225
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880019557.6A Active CN110431823B (zh) | 2017-03-22 | 2018-03-13 | 促进硬件加速器中的安全通信管理的方法及硬件加速器 |
CN202111068943.4A Active CN113783691B (zh) | 2017-03-22 | 2018-03-14 | 安全通信中的硬件加速的有效载荷过滤 |
CN201880019583.9A Active CN110463156B (zh) | 2017-03-22 | 2018-03-14 | 安全通信中的硬件加速的有效载荷过滤 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880019557.6A Active CN110431823B (zh) | 2017-03-22 | 2018-03-13 | 促进硬件加速器中的安全通信管理的方法及硬件加速器 |
CN202111068943.4A Active CN113783691B (zh) | 2017-03-22 | 2018-03-14 | 安全通信中的硬件加速的有效载荷过滤 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10630654B2 (zh) |
EP (2) | EP3603003B1 (zh) |
CN (3) | CN110431823B (zh) |
WO (2) | WO2018175140A1 (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US10630654B2 (en) | 2017-03-22 | 2020-04-21 | Microsoft Technology Licensing, Llc | Hardware-accelerated secure communication management |
US10719760B2 (en) | 2017-04-09 | 2020-07-21 | Intel Corporation | Neural network scheduling mechanism |
US11599777B2 (en) * | 2017-04-28 | 2023-03-07 | Intel Corporation | Scheduling configuration for deep learning networks |
US10805434B2 (en) * | 2017-06-08 | 2020-10-13 | Hyannis Port Research, Inc. | Dynamic TCP stream processing with modification notification |
CN109086144B (zh) * | 2017-06-14 | 2022-04-05 | 阿里巴巴集团控股有限公司 | 一种进程之间的通信方法和装置 |
US10764328B2 (en) * | 2017-11-03 | 2020-09-01 | International Business Machines Corporation | Altering cipher and key within an established session |
US11025691B1 (en) | 2017-11-22 | 2021-06-01 | Amazon Technologies, Inc. | Consuming fragments of time-associated data streams |
US10944804B1 (en) | 2017-11-22 | 2021-03-09 | Amazon Technologies, Inc. | Fragmentation of time-associated data streams |
US10764347B1 (en) | 2017-11-22 | 2020-09-01 | Amazon Technologies, Inc. | Framework for time-associated data stream storage, processing, and replication |
US10878028B1 (en) * | 2017-11-22 | 2020-12-29 | Amazon Technologies, Inc. | Replicating and indexing fragments of time-associated data streams |
ES2921983T3 (es) * | 2018-03-16 | 2022-09-05 | Acklio | Método y aparato para procesar datos de mensaje |
US20190319933A1 (en) * | 2018-04-12 | 2019-10-17 | Alibaba Group Holding Limited | Cooperative tls acceleration |
CN112005230B (zh) | 2018-04-30 | 2024-05-03 | 谷歌有限责任公司 | 通过统一的安全区接口管理安全区创建 |
EP4155996A1 (en) | 2018-04-30 | 2023-03-29 | Google LLC | Enclave interactions |
CN112005237B (zh) * | 2018-04-30 | 2024-04-30 | 谷歌有限责任公司 | 安全区中的处理器与处理加速器之间的安全协作 |
US10762244B2 (en) * | 2018-06-29 | 2020-09-01 | Intel Corporation | Securely exposing an accelerator to privileged system components |
CN112262547B (zh) | 2019-01-04 | 2023-11-21 | 百度时代网络技术(北京)有限公司 | 具有安全单元以提供根信任服务的数据处理加速器 |
EP3794477B1 (en) | 2019-01-04 | 2023-05-10 | Baidu.com Times Technology (Beijing) Co., Ltd. | Method and system for validating kernel objects to be executed by a data processing accelerator of a host system |
WO2020140260A1 (en) | 2019-01-04 | 2020-07-09 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Method and system to derive a session key to secure an information exchange channel between a host system and a data processing accelerator |
CN112334902A (zh) | 2019-01-04 | 2021-02-05 | 百度时代网络技术(北京)有限公司 | 建立主机***与数据处理加速器之间的安全信息交换信道的方法 |
EP3794771A4 (en) * | 2019-01-04 | 2022-01-05 | Baidu.com Times Technology (Beijing) Co., Ltd. | PROCESS AND SYSTEM FOR DISTRIBUTION AND EXCHANGE OF KEYS FOR DATA PROCESSING ACCELERATORS |
WO2020140261A1 (en) | 2019-01-04 | 2020-07-09 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Method and system for protecting data processed by data processing accelerators |
WO2020140269A1 (en) | 2019-01-04 | 2020-07-09 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Method and system for managing memory of data processing accelerators |
CN112262545B (zh) | 2019-01-04 | 2023-09-15 | 百度时代网络技术(北京)有限公司 | 主机***与数据处理加速器之间的证明协议 |
US11328075B2 (en) | 2019-01-04 | 2022-05-10 | Baidu Usa Llc | Method and system for providing secure communications between a host system and a data processing accelerator |
WO2020140267A1 (en) * | 2019-01-04 | 2020-07-09 | Baidu.Com Times Technology (Beijing) Co., Ltd. | A data processing accelerator having a local time unit to generate timestamps |
CN109922074B (zh) * | 2019-03-19 | 2021-06-04 | 北京百度网讯科技有限公司 | 接入带外管理网络的方法和装置、管理方法、设备、介质 |
US11474700B2 (en) * | 2019-04-30 | 2022-10-18 | Intel Corporation | Technologies for compressing communication for accelerator devices |
US11436053B2 (en) * | 2019-05-24 | 2022-09-06 | Microsoft Technology Licensing, Llc | Third-party hardware integration in virtual networks |
US11190514B2 (en) * | 2019-06-17 | 2021-11-30 | Microsoft Technology Licensing, Llc | Client-server security enhancement using information accessed from access tokens |
WO2021056069A1 (en) * | 2019-09-25 | 2021-04-01 | Commonwealth Scientific And Industrial Research Organisation | Cryptographic services for browser applications |
US11082449B2 (en) * | 2019-10-24 | 2021-08-03 | Cypress Semiconductor Corporation | Remote memory diagnostics |
US11405336B2 (en) * | 2019-11-22 | 2022-08-02 | Baidu Usa Llc | Method for key sharing between accelerators in virtual channel with switch |
US11552790B2 (en) * | 2019-11-22 | 2023-01-10 | Baidu Usa Llc | Method for key sharing between accelerators |
US20210211467A1 (en) * | 2020-04-02 | 2021-07-08 | Intel Corporation | Offload of decryption operations |
US11936691B2 (en) * | 2020-06-05 | 2024-03-19 | Queen's University At Kingston | Secure cloud communication architecture |
US11671437B2 (en) * | 2020-10-13 | 2023-06-06 | Cujo LLC | Network traffic analysis |
WO2022198551A1 (en) * | 2021-03-25 | 2022-09-29 | Intel Corporation | Multi-tenancy protection for accelerators |
DE102021114687A1 (de) * | 2021-06-08 | 2022-12-08 | 11active GmbH | Verfahren, Computerprogrammprodukt und System zum Schutz einer Computerstruktur |
US20240039902A1 (en) * | 2022-08-01 | 2024-02-01 | Netflix, Inc. | Techniques for mitigating nic ktls denial-of-service attacks |
CN115834498B (zh) * | 2023-01-06 | 2023-05-02 | 北京中科网威信息技术有限公司 | 业务加速方法、装置、设备及介质 |
CN116401198B (zh) * | 2023-06-08 | 2023-09-22 | 成都房联云码科技有限公司 | 一种基于sm2算法的接口总线*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101088245A (zh) * | 2004-12-07 | 2007-12-12 | 思科技术公司 | 在网络元件中对消息有效载荷执行安全性功能 |
CN101371237A (zh) * | 2004-12-06 | 2009-02-18 | 思科技术公司 | 在网络元件中代表应用执行消息有效载荷处理功能 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870474A (en) | 1995-12-04 | 1999-02-09 | Scientific-Atlanta, Inc. | Method and apparatus for providing conditional access in connection-oriented, interactive networks with a multiplicity of service providers |
DE69125756T2 (de) | 1990-06-29 | 1997-12-18 | Digital Equipment Corp | Verfahren und Einrichtung zur Entschlüsselung eines Informationspakets mit einem modifizierbaren Format |
US5566170A (en) * | 1994-12-29 | 1996-10-15 | Storage Technology Corporation | Method and apparatus for accelerated packet forwarding |
FR2745967B1 (fr) * | 1996-03-07 | 1998-04-17 | Bull Cp8 | Procede de securisation des acces d'une station a au moins un serveur et dispositif mettant en oeuvre le procede |
US6041058A (en) | 1997-09-11 | 2000-03-21 | 3Com Corporation | Hardware filtering method and apparatus |
EP1342158B1 (de) * | 2000-06-13 | 2010-08-04 | Richter, Thomas | Pipeline ct-protokolle und -kommunikation |
US6832260B2 (en) | 2001-07-26 | 2004-12-14 | International Business Machines Corporation | Methods, systems and computer program products for kernel based transaction processing |
US7373500B2 (en) | 2003-04-15 | 2008-05-13 | Sun Microsystems, Inc. | Secure network processing |
WO2005060202A1 (en) | 2003-12-10 | 2005-06-30 | International Business Machines Corporation | Method and system for analysing and filtering https traffic in corporate networks |
US7725934B2 (en) * | 2004-12-07 | 2010-05-25 | Cisco Technology, Inc. | Network and application attack protection based on application layer message inspection |
US8095787B2 (en) | 2006-08-21 | 2012-01-10 | Citrix Systems, Inc. | Systems and methods for optimizing SSL handshake processing |
CN101543107A (zh) * | 2006-09-22 | 2009-09-23 | 卡耐特无线有限公司 | 用于资源管理的方法和设备 |
US8457044B2 (en) * | 2007-09-24 | 2013-06-04 | Qualcomm Incorporated | Selective review of bundled messages from a wireless communication device |
US8504818B2 (en) | 2010-04-15 | 2013-08-06 | Microsoft Corporation | Method and system for reliable protocol tunneling over HTTP |
US10447767B2 (en) * | 2010-04-26 | 2019-10-15 | Pure Storage, Inc. | Resolving a performance issue within a dispersed storage network |
US20120284506A1 (en) | 2010-04-30 | 2012-11-08 | T-Central, Inc. | Methods and apparatus for preventing crimeware attacks |
US8990901B2 (en) | 2012-05-05 | 2015-03-24 | Citrix Systems, Inc. | Systems and methods for network filtering in VPN |
US9596286B2 (en) * | 2012-05-25 | 2017-03-14 | A10 Networks, Inc. | Method to process HTTP header with hardware assistance |
CN103209169B (zh) | 2013-02-23 | 2016-03-09 | 北京工业大学 | 一种基于fpga的网络流量过滤***与方法 |
US9124552B2 (en) | 2013-03-12 | 2015-09-01 | Centripetal Networks, Inc. | Filtering network data transfers |
US9077754B2 (en) | 2013-04-06 | 2015-07-07 | Citrix Systems, Inc. | Systems and methods for nextproto negotiation extension handling using mixed mode |
CN103581167B (zh) * | 2013-07-29 | 2016-12-28 | 华为技术有限公司 | 基于安全传输层协议的安全认证方法、设备及*** |
US9419803B2 (en) * | 2013-12-31 | 2016-08-16 | Nxp B.V. | Flexible data authentication |
US10129370B2 (en) * | 2014-08-01 | 2018-11-13 | Protegrity Corporation | Mapping between user interface fields and protocol information |
US9515658B1 (en) * | 2014-10-09 | 2016-12-06 | Altera Corporation | Method and apparatus for implementing configurable streaming networks |
US9628455B2 (en) | 2014-12-09 | 2017-04-18 | Akamai Technologies, Inc. | Filtering TLS connection requests using TLS extension and federated TLS tickets |
US9930067B1 (en) * | 2014-12-18 | 2018-03-27 | Amazon Technologies, Inc. | Techniques for secure session reestablishment |
US9575825B2 (en) * | 2014-12-23 | 2017-02-21 | International Business Machines Corporation | Push instruction for pushing a message payload from a sending thread to a receiving thread |
US9755731B2 (en) | 2015-01-10 | 2017-09-05 | Hughes Network Systems, Llc | Hardware TCP accelerator |
US10185599B2 (en) | 2015-07-07 | 2019-01-22 | Openvpn Technologies, Inc. | Kernel mode accelerator |
US10218682B1 (en) * | 2016-01-19 | 2019-02-26 | Amazon Technologies, Inc. | Secure network protocol cryptographic processing |
CN106060070B (zh) * | 2016-07-01 | 2019-05-10 | 中国人民解放军国防科学技术大学 | 基于身份密码***的tls握手协议 |
US10630654B2 (en) | 2017-03-22 | 2020-04-21 | Microsoft Technology Licensing, Llc | Hardware-accelerated secure communication management |
-
2017
- 2017-06-22 US US15/630,476 patent/US10630654B2/en active Active
- 2017-06-26 US US15/632,865 patent/US10541984B2/en active Active
-
2018
- 2018-03-13 WO PCT/US2018/022123 patent/WO2018175140A1/en unknown
- 2018-03-13 CN CN201880019557.6A patent/CN110431823B/zh active Active
- 2018-03-13 EP EP18715843.1A patent/EP3603003B1/en active Active
- 2018-03-14 WO PCT/US2018/022283 patent/WO2018175162A1/en unknown
- 2018-03-14 CN CN202111068943.4A patent/CN113783691B/zh active Active
- 2018-03-14 CN CN201880019583.9A patent/CN110463156B/zh active Active
- 2018-03-14 EP EP18714667.5A patent/EP3603001B1/en active Active
-
2019
- 2019-12-10 US US16/708,875 patent/US10862871B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101371237A (zh) * | 2004-12-06 | 2009-02-18 | 思科技术公司 | 在网络元件中代表应用执行消息有效载荷处理功能 |
CN101088245A (zh) * | 2004-12-07 | 2007-12-12 | 思科技术公司 | 在网络元件中对消息有效载荷执行安全性功能 |
Also Published As
Publication number | Publication date |
---|---|
EP3603003B1 (en) | 2023-11-29 |
CN110431823A (zh) | 2019-11-08 |
US10862871B2 (en) | 2020-12-08 |
US20200120075A1 (en) | 2020-04-16 |
US20180278583A1 (en) | 2018-09-27 |
US10541984B2 (en) | 2020-01-21 |
WO2018175162A1 (en) | 2018-09-27 |
EP3603001A1 (en) | 2020-02-05 |
WO2018175140A1 (en) | 2018-09-27 |
EP3603003A1 (en) | 2020-02-05 |
EP3603001B1 (en) | 2022-02-09 |
CN113783691B (zh) | 2024-06-11 |
US10630654B2 (en) | 2020-04-21 |
CN110431823B (zh) | 2022-01-21 |
CN110463156A (zh) | 2019-11-15 |
CN113783691A (zh) | 2021-12-10 |
US20180278588A1 (en) | 2018-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110463156B (zh) | 安全通信中的硬件加速的有效载荷过滤 | |
US10868893B2 (en) | Network interface device | |
EP3785412B1 (en) | Dynamic scaling of virtual private network connections | |
US11356418B2 (en) | Systems and methods for using unencrypted communication tunnels | |
US11263352B2 (en) | Security plugin for a system-on-a-chip platform | |
US11757973B2 (en) | Technologies for accelerated HTTP processing with hardware acceleration | |
US7483423B2 (en) | Authenticity of communications traffic | |
EP3725057A1 (en) | Hardware offload for quic connections | |
US11349820B2 (en) | Selective encryption of tunneled encrypted traffic | |
WO2014173365A1 (zh) | Ftp的应用层报文过滤方法及装置、计算机存储介质 | |
US10999303B2 (en) | Capturing data | |
CN110995730B (zh) | 数据传输方法、装置、代理服务器和代理服务器集群 | |
CN114448875A (zh) | 使用多路径协议管理网络服务 | |
CN115150179B (zh) | 软硬生命老化控制方法和相关装置、芯片、介质和程序 | |
Gopal et al. | Securing udt protocol: Experiences in integrating transport layer security solutions with udt | |
CN116996245A (zh) | 基于数据传输的验证方法、装置、设备、介质及产品 | |
Mahajan et al. | DEVELOPING A PARADIGM IN COVERT COMMUNICATION USING REFERENCE MODEL AND PROTOCOL CHANNELS FOR IPV4 |
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 |