CN110971443B - 网络接口设备和方法 - Google Patents

网络接口设备和方法 Download PDF

Info

Publication number
CN110971443B
CN110971443B CN201910940557.6A CN201910940557A CN110971443B CN 110971443 B CN110971443 B CN 110971443B CN 201910940557 A CN201910940557 A CN 201910940557A CN 110971443 B CN110971443 B CN 110971443B
Authority
CN
China
Prior art keywords
memory
function
network interface
nic
firmware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910940557.6A
Other languages
English (en)
Other versions
CN110971443A (zh
Inventor
史蒂夫·波普
大卫·里多克
P·福克斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/147,164 external-priority patent/US10713392B2/en
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of CN110971443A publication Critical patent/CN110971443A/zh
Application granted granted Critical
Publication of CN110971443B publication Critical patent/CN110971443B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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 involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3242Cryptographic 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

Abstract

网络接口设备和方法。一种网络接口设备包括集成电路器件,该集成电路器件包括至少一个处理器。网络接口设备包括存储器。集成器件被配置为执行关于所述存储器中存储的数据的至少一部分的函数。

Description

网络接口设备和方法
技术领域
一些实施方式涉及网络接口设备和方法。
背景技术
在设备中提供网络接口设备(有时称为NIC)以允许设备通常以数据包的形式输出和/或接收数据。
一些NIC上的处理的复杂性已经显著增加到整个应用可以在NIC上执行的程度。诸如捕获、流量控制、遥测、防火墙等复杂操作正被部署在NIC上。
不管由NIC执行的操作的复杂性或其它方面如何,期望NIC被配置成仅执行预期的固件或计算机代码。
发明内容
根据一个方面,提供了一种网络接口设备,其包括:包括至少一个处理器的集成电路器件以及被配置为存储第一加密密钥的数据存储部;以及所述集成电路器件外部的存储器,其中所述至少一个处理器被配置为使用所述第一加密密钥对待存储于所述存储器中的数据进行加密。
数据存储部可由所述集成电路器件中的存储器提供。
数据存储部可以是熔丝数据存储部。
集成电路器件使得调试访问不可用。
集成电路器件可以使得在所述至少一个处理器上执行的至少一些计算机代码不能访问所述第一加密密钥。
集成电路器件可以包括ASIC、FPGA、集成电路和集成电路管芯中的至少一者。
可以在所述网络接口设备中提供第二密钥,所述第二密钥是与所述网络接口设备相关联的私钥。
第二密钥可以存储在所述数据存储部、所述集成器件内部的存储器以及所述集成器件外部的存储器之一中。
网络接口设备可以被配置为接收随机数,集成器件被配置为使用所述第二密钥加密随机数并输出所述加密随机数。
所述集成器件可被配置为执行关于存储数据的至少一部分的函数,其中所述存储数据存储于所述集成电路器件外部的所述存储器以及所述集成器件上的存储器中的一者或更多者中。
该函数可以包括散列函数。
所述函数的输出可以使得所述函数的所述输出的大小与所述存储数据的大小之和大于用于存储数据的可用存储器的大小。
所述函数的输出的大小可以大于用于存储数据的可用存储器的大小。
所述函数的输出可以取决于所述存储数据的所述至少一部分的内容。
集成电路器件可被配置为接收标识存储数据的位置的信息并且使用所述信息来执行所述函数。
标识位置的信息可以包括索引信息。
集成电路器件可以被配置为输出所述函数的结果。
根据另一方面,提供了一种网络接口设备,其包括:集成电路器件,其包括至少一个处理器和第一存储器;以及所述集成电路器件外部的第二存储器,其中所述集成器件被配置为执行关于存储数据的至少一部分的函数,其中所述存储数据存储于所述第一存储器以及所述集成器件上的第二存储器中的一者或更多者中。
根据另一方面,提供了一种网络接口设备,其包括:包括至少一个处理器的集成电路器件,以及存储器,其中所述集成器件被配置为执行关于所述存储器中存储的数据的至少一部分的函数。
应了解,在其它方面中,可在不同于网络接口设备的设备中提供实施方式。
存储器可以包括所述集成电路中的第一存储器和所述集成电路器件外部的第二存储器,其中所述存储数据存储在所述第一存储器和第二存储器中的一者或更多者中。
该函数可以包括散列函数。
所述函数的输出可以使得所述函数的所述输出的大小与所述存储数据的大小之和大于用于存储数据的可用存储器的大小。
所述函数的输出使得所述函数可以由所述处理器使用所存储的数据来计算。例如,在存储部中包含的表中不能通过引用查找函数的输出。
所述函数的输出的大小可以大于用于存储数据的可用存储器的大小。
所述函数的输出可以取决于所述存储数据的所述至少一部分的内容。
集成电路器件可被配置为接收标识存储数据的位置的信息,并且使用所述信息来执行关于所述位置处的所述存储数据的所述函数。
标识位置的信息可以包括索引信息。
集成电路器件可以被配置为输出所述函数的结果。
网络接口设备可在所述集成电路器件中包含被配置为存储第一加密密钥的数据存储部,所述至少一个处理器被配置为使用所述第一加密密钥对待存储于所述第二存储器中的数据进行加密。
数据存储部可以由所述第一存储器提供。
数据存储部可以是熔丝数据存储部。
集成电路器件可以使得调试访问不可用。
集成电路器件可以使得在所述至少一个处理器上执行的至少一些计算机代码不能访问所述第一加密密钥。
集成电路器件可以包括ASIC、FPGA、集成电路以及集成电路管芯中的至少一者。
可以在所述网络接口设备中提供第二密钥,所述第二密钥是与所述网络接口设备相关联的私钥。
第二密钥可以存储在所述数据存储部、第一存储器和第二存储器之一中。
网络接口设备可以被配置为接收随机数,集成器件被配置为利用所述第二密钥加密随机数并输出所述加密随机数。
根据另一方面,提供了一种方法,其包括:使用存储在网络接口中的集成电路器件中的数据存储部中的密钥来对要存储在所述网络接口设备中的所述集成电路器件外部的存储器中的数据进行加密;以及将所述加密数据存储在所述网络接口设备中的所述集成电路器件外部的所述存储器中。
该方法可以包括:接收随机数;利用存储在所述网络接口设备中的第二密钥来加密所述随机数,所述第二密钥是与所述网络接口设备相关联的私钥;以及输出所述加密的随机数。
该方法可以包括执行关于存储数据的至少一部分的函数,其中所述存储数据存储在所述集成电路器件外部的所述存储器以及所述集成器件上的存储器中的一者或更多者中。
该函数可以包括散列函数。
所述函数的输出可以使得所述函数的所述输出的大小与所述存储数据的大小之和大于用于存储数据的可用存储器的大小。
所述函数的输出的大小可以大于用于存储数据的可用存储器的大小。
该函数的输出可以取决于所述存储数据的所述至少一部分的内容。
该方法可以包括:接收标识存储数据的位置的信息,并且当执行关于所述位置处的所述存储数据的所述函数时使用所述信息。
标识位置的信息可以包括索引信息。
根据另一方面,提供了一种设备,其包括:集成电路器件,其包括至少一个处理器和第一存储器;以及所述集成电路器件外部的第二存储器,其中所述集成器件被配置为执行关于存储数据的至少一部分的函数,其中所述存储数据存储于所述第一存储器以及所述集成器件上的第二存储器中的一者或更多者中。
根据另一方面,提供了一种方法,其包括:执行关于存储数据的至少一部分的函数,其中所述存储数据存储在集成电路器件外部的存储器以及所述集成器件上的存储器中的一者或更多者中。
该函数可以包括散列函数。
所述函数的输出可以使得所述函数的所述输出的大小与所述存储数据的大小之和大于用于存储数据的可用存储器的大小。
所述函数的输出的大小可以大于用于存储数据的可用存储器的大小。
所述函数的输出可以取决于所述存储数据的所述至少一部分的内容。
该方法可以包括:接收标识存储数据的位置的信息,并且当执行关于所述位置处的所述存储数据的所述函数时使用所述信息。
标识位置的信息可以包括索引信息。
该方法可以包括输出所述函数的结果。
根据另一方面,提供了一种设备,其包括:
网络接口设备,所述网络接口设备包括:集成电路器件,该集成电路器件包括至少一个处理器和第一存储器;在所述集成电路器件外部的第二存储器,其中所述集成器件被配置为执行关于存储数据的至少一部分的函数,其中所述存储数据被存储在所述第一存储器以及所述集成器件上的第二存储器中的一者或更多者中。
该函数可以包括散列函数。
所述函数的输出可以使得所述函数的所述输出的大小与所述存储数据的大小之和大于用于存储数据的可用存储器的大小。
所述函数的输出的大小可以大于用于存储数据的可用存储器的大小。
所述函数的输出可以取决于所述存储数据的所述至少一部分的内容。
集成电路器件可被配置为接收标识存储数据的位置的信息,并且使用所述信息来执行关于所述位置处的所述存储数据的所述函数,其中所述设备被配置为提供所述信息。
标识位置的信息可以包括索引信息。
集成电路器件可被配置为输出所述函数的结果,并且所述器件被配置为将所述接收到的结果与预期结果进行比较。
根据另一方面,提供了一种方法,其包括:向一个或更多个网络接口设备提供固件或固件更新中的一者或更多者;以及使固件更新的所述固件的一个或更多个完整性检查值被公布,所述完整性检查值取决于所述固件或固件更新在所述网络接口设备中的相应网络接口设备中的数据存储中的存储。
还可以提供包括适于执行本文描述的方法的程序代码手段的计算机程序。根据另外的实施方式,提供了可以在计算机可读介质上实现的、用于提供上述方法中的至少一个的装置和/或计算机程序产品。
在上面,已经描述了许多不同的实施方式。应了解,可通过上述实施方式中的任何两个或更多个的组合来提供其它实施方式。
在实施本发明的实施方式的以下详细描述中以及在所附权利要求中还描述了各种其它方面和另外的实施方式。
附图说明
现在将仅参照附图以示例的方式描述一些实施方式,在附图中:
图1示出了第一实施方式的方法;
图2示出了第二实施方式的方法;
图3示出了可以提供实施方式的示例体系结构;
图4示出了具有NIC的设备的示意性示例;
图5示出了一些实施方式的方法;以及
图6示出了一些实施方式的另一方法。
具体实施方式
呈现以下描述以使本领域的任何技术人员能够制造和使用本发明,并且在特定应用的背景下提供以下描述。对所公开的实施方式的各种修改对于本领域技术人员将是显而易见的。
在不脱离本发明的精神和范围的情况下,这里定义的一般原理可以应用于其它实施方式和应用。因此,本发明并不旨在限于所示的实施方式,而是要符合与本文公开的原理和特征一致的最宽范围。
参照图3,其示意性地示出了诸如服务器的设备2被配置为经由网络接口设备4(有时称为NIC)与网络6进行通信的布置。图3的布置示出了可以向NIC提供固件或固件更新的固件提供商8。在一些实施方式中,可以提供多于一个固件提供商。应当理解,在其他实施方式中,可以不经由网络6提供固件和固件更新。提供数据存储部7,其可用于检查固件的完整性。这将在后面更详细地描述。
网络接口设备可以以任何合适的形式提供,包括作为外围设备或与主机数据处理设备的硬件集成。设备可以是任何类型的计算机系统,包括服务器、个人计算机或定制处理单元。
本文描述的网络接口设备提供到网络的接口以供其主机数据处理设备使用。在本文档中,对NIC进行了参照。应当理解,该NIC可以是任何合适的网络接口设备。
NIC虽然在逻辑上是设备的组件,但是可以被认为是物理上分离且不同的硬件和逻辑上不同的网络实体。
在一些实施方式中,NIC可以由硬件设备实现。
NIC可以被认为是设备与网络之间的网守(gatekeeper),保护网络不受恶意或故障设备的影响和/或保护设备不受网络的影响。
NIC可以是通过设备的网络流的一方。NIC能够监视哪个应用正在进行通信以及与何处进行通信。NIC能够防止建立不期望的网络流。
在一些实施方式中,NIC可以提供以下中的一个或更多个:
监视和/或保护网络数据包;
提供受保护和/或防篡改的执行域;
隔离和/或标识受损设备;
保护设备和/或数据免受网络攻击;以及
保护组织免受恶意操作者的侵害。
因此,期望NIC被配置为仅执行预期的固件或计算机代码。该计算机代码可以是控制NIC和/或NIC要运行的任何特定应用的底层操作的代码,和/或控制例如哪些流被监视的代码和/或控制输入/输出数据包流的处理的代码。例如,计算机代码可以控制提供数据包过滤或数据包检查功能的规则引擎。计算机代码可以支持NIC所在的设备的用户的特定应用。
因此,固件可以是在ASIC上执行的、定义NIC功能和/或应用代码的行为的任何代码。
在下文中,术语“固件”被使用并且旨在覆盖所描述的这些选项中的任何一个或更多个。
在一些实施方式中,固件可以部分地或完全地由NIC的供应商控制。当然,在其它实施方式中,固件可替代地或附加地由与NIC的供应商不同的一方或更多方控制。
在一些情况下,供应商的发布过程可具有固件签名步骤,在该步骤中首先利用安全的单向散列函数(例如SHA256)对固件代码和数据或图像进行散列以形成散列数据块。块的内容可以是数据和/或指令。可以利用秘密签名密钥对该块进行加密。该秘密签名密钥可以由供应商保持物理安全。
在制造时,可以利用对应的公钥对NIC进行编程。在固件更新过程期间,NIC接收新固件作为映像,并将该映像存储在诸如闪存之类的永久存储部中。映像被下载。这可以经由在提供有NIC的服务器或其它设备上运行的实用程序,或者经由网络或以任何其它合适的方式“空中”运行。NIC将仍然运行其先前已知的良好固件,并且将首先为其自身计算固件更新的散列。然后NIC将利用公共签名密钥来对固件更新的签名进行解密,并且将结果与计算的散列进行比较。如果比较是相等的,则NIC固件可以推断固件更新的完整性是良好的,因为比特在传输期间没有被破坏并且它确实是由供应商发布的。因此,可以假设更新满足供应商的QA(质量保证)过程。
固件签名可以提高产品交付流程的鲁棒性。固件签名可以提供针对恶意固件(例如,在现场应用的恶意软件)的某种保护。恶意软件的一些示例包括病毒、蠕虫、特洛伊木马和间谍软件。
一些实施方式可以提供甚至更鲁棒的机制。固件恶意软件的破坏范围越来越大。例如,恶意软件可以修改传输中的数据,这对于银行应用是不利的。恶意软件可以监视应用传输或访问并窃取资金和服务器上的持久状态。
可能需要发布某些类型的更新和/或每个客户的定制。可能希望快速地进行这些发布。例如,可能希望尽快向固件提供某些类型的“修复”。
为了支持快速发布,一个或更多个NIC可能存在于供应商的制造流程之外。此类NIC可被配置为接受非生产签名的固件。这些NIC是供应商自身工程活动中敏捷应用开发所必需的并且有时被称为“工程”NIC。这些NIC可用于测试目的。在故障调查期间,可能需要与客户迭代固件。这种降级的NIC通常被配置为在固件更新时不检查生产签名的证书。然而,这些NIC可能需要被跟踪和/或标识。可能需要有一种手段来使它们鲁棒地恢复到现场的生产水平。
因此,为了诊断现场问题,可能需要生产NIC以加载非QA发布固件。这可以在最终用户同意的情况下进行。在一些实施方式中,后续固件更新或发布将恢复仅加载经签名的固件的要求。一些实施方式可以确保:如果在运行非发布固件的同时恶意软件被安装,则这将被确定。稍后更详细地描述可解决此问题的一些实施方式。
客户可能希望仅部署已经通过他们自己的QA开发流程测试的固件映像。一些用户/客户可能具有将他们自己的程序下载到NIC自身上的能力。例如,这可以是eBPF(扩展Berkeley包过滤器)或一个或更多个完整的应用。可以确保这些下载的程序的真实性和/或完整性。
对于许多客户,NIC的物理位置可能使检查具有挑战性。
一些NIC部署在数据中心中,该数据中心中可能存在篡改或甚至完全替换物理硬件的机会。物理替换NIC可以表现为照常向主机操作系统OS报告其自身,但是实际上正在执行固件中的任意程序,或者实际上是完全不同的硬件设计。
一些实施方式可提供以下特征中的一个或更多个,其可解决或减轻上述问题中的一个或更多个。
在制造期间,在为NIC创建序列号时,还为NIC生成唯一的公钥/私钥对。NIC的序列号最好是唯一的。
私钥组件nic-priv安装在NIC上。公钥组件nic-pub被存储在适当的数据库中以供将来使用。
参照图4,其示意性地示出了设备2和NIC 4。NIC具有ASIC 102(专用集成电路)。应了解,在其它实施方式中,固件可以替代地或另外地至少部分地运行和/或存储于任何其它合适的处理功能(例如FPGA(现场可编程门阵列)、集成电路管芯、集成电路等)上。
在一些实施方式中,可以提供多个处理实体。
ASIC 102或其他合适的功能包括被配置为执行至少一些固件的至少一个处理器108以及被配置为存储至少一些固件代码的至少一个存储器106。
在安全存储器外部提供另一安全存储器104。在一些实施方式中,可以提供多个另外的安全存储器。在一些实施方式中,如果ASIC等中存在足够的存储器空间,则可以省略该另外的安全存储器。
NIC具有接口110,该接口110允许从网络接收数据和/或向网络输出数据。
设备2具有用于NIC 4的设备驱动程序100。该设备可以具有在相对于用户级部分114享有特权的更高级别下操作的操作系统OS部分112。设备驱动程序在OS部分112中提供。OS部分112可以包括一个或更多个处理器。OS部分可以包括和/或可以访问一个或更多个存储器116。
用户级部分114可以支持一个或更多个用户级应用。在图4所示的示例中,用户级部分支持第一应用120和第二应用122。
现在将参照图1描述方法的示例。图1的示例方法使得能够标识特定NIC的身份。例如,在任何时间,可以向NIC固件102发出来自例如设备驱动程序100的质询。取决于设备,这可以通过以下方式中的一种或更多种来完成:
周期性地;当固件中存在变化时;响应于请求;响应于NIC和/或设备中特定事件的发生;当设备复位时;当设备断电时;当设备上电时;当链接被删除时;以及当链接被恢复时。在进行周期性检查的情况下,这可以例如是每日的。当然,在一些实施方式中可以进行更频繁或更不频繁的检查。
在步骤S1中,设备驱动程序随机选取一个数字(随机数(nonce))。
在步骤S2中,设备驱动程序向ASIC中的NIC固件发送该随机数。
在步骤S3中,NIC固件使用NIC私钥{nonce}priv-nic加密该随机数。
在步骤S4中,NIC固件将加密的随机数发送到驱动程序。
在步骤S5中,设备驱动程序使用NIC公钥对应答进行解密。
在步骤S6中,设备驱动程序检查解密值是否是所发送的随机数,即{{nonce}priv-nic}pub-nic=nonce。
该质询/响应可以由驱动程序进行,或者直接经由网络(诸如已经加密的控制信道)进行。
通过上述步骤,NIC现在可以验证其身份。
为了防止私钥从NIC中复制出来,该私钥被安全地存储。在一些实施方式中,该私钥存储在ASIC中的安全存储器中。在其它实施方式中,私钥可以存储在ASIC外部的安全存储器中。
由于NIC固件和持久状态中的至少一些通常存储在与执行固件的ASIC分离的安全存储器104中,因此存在挑战。该安全存储器可以是闪存或任何其它合适的非易失性安全存储器。持久状态可以是固件指令、默认引导时间配置、IP地址、链路速度默认值、PCI(外围组件互连)功能设置、配置信息和不是专用于NIC的状态信息中的一个或更多个。专用于NIC的状态信息(诸如一个或更多个密钥和NIC序列号)优选地但不是必须地存储在ASIC中的安全存储器中。
为了在制造时解决这个问题,生成附加的对称密钥sec-nic。此密钥对于每个NIC是唯一的。在一些实施方式中,该密钥是对称密钥。在优选实施方式中,该密钥仅与ASIC一起使用。该密钥存储在ASIC内的安全存储器中,并且用于在NIC操作期间对对ASIC外部的安全存储器的所有访问进行加密、解密。
因此,使用sec-nic密钥对存储在ASIC外部的安全存储器中的任何内容进行加密。sec-nic密钥优选地存储在ASIC安全存储器中,但是在其它实施方式中可以存储在另一外部安全存储器中。固件被配置为使得它不能访问sec-nic密钥本身,但是只能使sec-nic用于对写入ASIC外部的安全存储器的数据进行加密和/或对从NIC外部的安全存储器读出的数据进行解密。因此,安全存储器的移除和检查将不会揭示NIC的私钥。安全存储器内容的替换不能注入固件或修改诸如存储在安全存储器中的私钥priv-nic之类的状态。
在一些实施方式中,sec-nic本身的值从不在ASIC外部使用。生产固件和ASIC本身可以被设计为不揭示sec-nic的值。这可以通过以下技术中的一种或更多种来实现。
a)将sec-nic密钥存储在防篡改熔丝数据存储部(或非易失性存储器,其被设计为即使用热成像设备或其他微观工具探测时也使其内容混乱)中。因此,在一些实施方式中,可以向安全存储器提供单独的安全存储部以存储sec-nic密钥。
b)通过安全熔丝减少攻击面,一旦安全熔丝在制造过程中熔断(例如,在完成硅测试之后),将导致隔离所有对ASIC的调试访问,例如JTAG(联合测试行动组),这可能允许诊断访问读取安全内容。例如,将没有JTAG访问和/或没有控制台和/或没有NIC存储器转储。
c)通过硬件将密钥值与固件隔离,使得在ASIC上执行的固件不能访问秘密密钥(私钥和sec-nic密钥中的一者或另一者或两者),从而防止固件揭示ASIC外部的密钥。换句话说,固件可以使得使用相应的密钥来执行加密功能,但是可能不能访问密钥本身(除了加密和/或解密功能之外)。加密和/或解密功能当然可以访问密钥。在制造NIC或ASIC之后,不能修改该密钥的该值。
参照图5,其示意性地示出了一种方法。
在第一步骤A1中,将sec-nic密钥存储在ASIC中。这可以由NIC在制造期间生成。在一些实施方式中,密钥可以是随机密钥。
在步骤A2中,ASIC被配置为利用密钥对要存储在ASIC外部的任何数据进行加密。
在步骤A3中,将加密数据存储在闪存外部的存储器中。
在步骤A4中,ASIC根据需要从ASIC外部的存储器中检索加密数据。
在步骤A5中,使用ASIC中的密钥对加密数据进行解密。
这种级别的安全性在许多不同的场景中可能是有用的。
现在将描述在该领域中提供固件的一些真实性的一些实施方式。前述实施方式可以具有一个或更多个防篡改特征。由于ASIC的内容(即固件映像和/或状态)通常未被设计为被揭示,因此这些特征可能使得在现场难以(如果不是不可能的话)确定NIC是否正在运行其声称的固件。
考虑以下场景。
已经通过系统QA测试的固件源将在构建中使用。这样的NIC将已经应用了一个或更多个防篡改措施。在对系统进行构建和/或签名时,恶意代码或破坏代码被注入。恶意代码或破坏代码可能通过自动构建系统中的故障或黑客活动(例如可能由受伤害的员工进行的黑客活动)注入。在这样的固件领域中的故障将对供应商产生严重的商业后果,由于固件已经被签署为真实的并且具有生产质量的事实而变得更糟。在这种场景下,供应商对受损状况的诊断和补救可能是非常困难的或者甚至是不可能的。
在一些实施方式中,利用这样的事实:NIC包含有限存储空间“S”。该有限存储空间是内部ASIC存储器和芯片外非易失性或安全存储器的总和。该有限存储空间可以是固件可用的所有存储空间或存储空间的一部分,不包括可用于一个或更多个密钥的一些区域和/或引导代码等。有限存储空间在逻辑上可以是用于任何目的的所有存储目的。NIC上的存储可以逻辑上寻址为字节的数组S[N],或者块的数组B[N/Block-size]。
参照图2,其示出了另一实施方式的方法。
在步骤T1中,驱动程序随机选取一个数(随机数),并且N.N的值可以是存储器的索引。例如,N可以是字节索引或块索引。在一些实施方式中,可以选择索引范围。在一些实施方式中,这可以随机选择。在其他实施方式中,可以选择特定索引或索引范围。在一些实施方式中,N可以针对每个质询递增。
在步骤T2中,设备驱动程序将随机数与N的值一起发送到NIC固件。
在步骤T3中,NIC固件使用NIC私钥{nonce}priv-nic对随机数进行加密,并将函数f应用于值N。该函数可以是单向散列函数。
函数f可以具有以下属性中的一个或更多个:
(i)函数的输出不能减少到小于S的大小;
(ii)函数的输出取决于由索引或索引范围定义的S的内容;
(iii)针对每次固件发布,可以预先捕获和公布f的值。可以在实用程序、驱动程序源代码和托管(escrow)中的一个或更多个中提供这些值。
(iv)f的值不应揭示存储S的内容。因此f是单向函数。
合适的函数f将是诸如SHA 256之类的HMAC(基于散列的消息验证码),其中f(N)是SHA256(S(N),S(N+Block size)),其中块大小是诸如256字节之类的合适的存储块
数组f(N)=[f(1),f(2)111]是可以存储在ASIC外部的散列值序列。
因为数组f(N)大于S的大小,所以它不能被存储在由ASIC加安全存储器限定的存储部中。相反,在质询时必须由ASIC固件使用S的实际内容来计算f(N)。
因此,如果预期的f(N)的值(例如给定供应商的构建过程)不同于由NIC返回的值,则将知道特定固件完整性被破坏。
一些实施方式可以确保当固件被下载时,可用存储器总是至少在一定程度上被填满。为了确保这种情况发生,固件代码可以包括填充位以确保存储器的分配部分被填充。这是为了确保正确固件的副本不会与恶意的恶意软件代码一起存储。
该完整性检查例如可以在驱动程序加载时进行。该检查可以在ASIC的整个寿命期间重复执行。
应了解,在一些实施方式中,可针对特定完整性检查执行所述方法一次。在其他实施方式中,所述方法可以被执行多次,利用不同的N值完成特定的完整性检查。
参照图6。在步骤B1中,提供固件或固件更新。这将在该固件的供应商处进行。该供应商可以与NIC的供应商或提供商相同或不同。
在步骤B2中,固件或固件更新用于计算函数f(N)的参考值。这可以由固件提供商自身或第三方等来执行。
在步骤B3中,用于固件和/或固件更新的f(N)的值被存储在安全位置。在一些实施方式中,这可以是托管的。在替代实施方式中,代替存储f(N)的值,可以在每次需要f(N)的值时通过安全位置计算f(N)的值。
在步骤B4中,固件或固件更新被存储在NIC中。这可以如先前所讨论的。
在步骤B5中,启动固件完整性检查。该完整性检查可以如先前所讨论的。
在步骤B6中,作为固件完整性检查的一部分,选择N的值(如先前所论述)并且将其发送到NIC。还从安全存储部请求f(N)的值。在其他实施方式中,设备驱动程序可能在执行任何完整性检查之前已经预先下载了f(N)的值。在一些实施方式中,f(N)的值可以被分发到设备驱动程序。
在步骤B7中,从安全存储部向设备驱动程序发送所请求的f(N)的值。
在一些实施方式中,可以在每次需要完整性检查值或一组值时向用户收费。在该场景中,在步骤B8中更新用户的账户。应当理解,在其他实施方式中,用户可以具有订阅,并且作为该订阅的一部分,有权根据需要请求和获得f(N)的值。在其他实施方式中,可以不存在与该服务相关联的费用。
在步骤B9中,设备驱动程序将从NIC返回的f(N)的值与从安全存储部接收的值核对。该过程可以允许以模块化的方式构造固件。固件的每个模块[i]可以单独构建,并确定其完整性函数fi(N)。当模块通过最终构建分层时,则最终函数f(N)是∑fi(N)。
在一些实施方式中,不同固件构建的输出f(N)之间的变化可以表示为每个模块的fi()函数之间的差。这可以减少攻击面或攻击可能性。这可以允许将稳定的模块f()输出置于托管等中。通过将最终的f()输出表示为函数的和,当在固件已经改变之后重新计算和时,仅需要更新改变的fi()。
在一些实施方式中,可以公布f(N)值。这些值可以针对整个存储部N,或者可以在固件被更新时作为部分函数fi()更新来公布。
在一些实施方式中,主机(驱动程序)软件可通过请求特定f(N)函数的结果来质询NIC。
另选地或另外地,可以通过网络来质询NIC。在一个实施方式中,质询可以包括在NIC与控制器软件(这可以是用于在NIC上建立防火墙规则等的软件)之间的API中。
在一些实施方式中,在线服务或门户网站可以被配置为发出质询。这可以消除每个驱动程序/主机针对每个可能的固件版本具有f()结果的需要。质询服务可以由服务器上运行的实用程序自动调用(如果服务器能够访问门户)。另选地或另外地,质询服务可以返回由实用程序下载和摄取的质询字符串。
在一些实施方式中,不同的模块可以被分配不同的存储器位置。可针对与相应模块相关联的每一存储器位置执行所述函数以提供对相应模块的完整性检查。在一些实施方式中,一个或更多个模块可以由嵌入式操作系统的一个或更多个组件和/或一个或更多个应用组件提供。例如,嵌入式操作系统模块可以包括设备驱动程序、文件系统、网络栈等中的一者或更多者。例如,应用组件模块可以是防火墙和web服务器中的一者或更多者。例如,该组件可以是由操作系统动态加载的程序。
在一些实施方式中,所有可用存储器具有应用于其的函数f。这可以在单个操作中完成。在其它实施方式中,存储器的不同部分可以分别应用函数f,并且可以将结果求和以提供单个结果。在一些实施方式中,可以在设备驱动程序中执行该求和。
在一些实施方式中,在运行任何新固件或更新的固件之前执行该完整性检查。
这种分解允许对源的安全性以及在逐个模块的基础上应用二进制,并且将完成的模块置于安全托管中。随着新的固件特征的开发,仅需要重建受影响的模块,因此攻击面被进一步减少,并且由于可被篡改的状态量被进一步和进一步减少,因此受伤害的雇员能够破坏固件的行为的可能性变得更小。
返回参照图2,在步骤T4中,NIC固件将加密的随机数与应用于值N的函数f一起发送到驱动程序。
在步骤T5中,设备驱动程序使用NIC公钥对加密的随机数进行解密,并且查找或以其他方式获得f(N)的期望值。
在步骤T6中,设备驱动程序检查解密的值是否是发送的随机数,即{{nonce}priv-nic}pub-nic=nonce,以及是否已经接收到f(N)的期望值。
在一个变型中,上述技术中的一个或更多个可与客户或终端用户一起使用。
可以允许客户向NIC注册他们的签名密钥。这可以通过允许客户签署供应商的公共签名证书的NIC来实现。NIC固件因此将进一步允许客户签名的固件,即,应用由客户和供应商签名的固件。
在下载诸如应用或代码段(诸如EBPF)之类的复杂动态程序的一些实施方式中,它们可被视为构建产品并被添加到固件散列f函数。因此,NIC在安装之后可能受到质询以证明其硬件身份和固件内容和/或状态的完整性和真实性。
因此,在一些实施方式中,固件被加固以防止其执行固件不应该做的任何事情。应当理解,一些实施方式仍然允许提供错误或更新。然而,在一些实施方式中,可能不允许客户等访问可能给予对应当保持安全的私有数据的访问的功能。
在一些实施方式中,固件和软件可以被签名。
文件上附有签名。这可以使用适当的工业标准密码的(cryptographic)技术。
签名可以是基于多个因素数学计算的长字母数字字符串的形式。
签名可以取决于固件的内容,从而可以确定是否有任何改变。例如,可以确定固件映像是否已经被篡改。
签名可以依赖于如前所述的私钥,并且可以对照可以公布的公钥进行检查。
一些实施方式可确保在生产时在NIC上仅安装正确的固件。
一些实施方式可确保不存在固件的未经授权上载。
一些实施方式可以使得可以向NIC的购买者等证明NIC的来源。
一些实施方式可以在NIC上提供与其MAC地址相关联的签名证书,该签名证书证明特定NIC的来源。
在制造过程测试期间,一旦NIC通过,它将变得安全。
ASIC熔丝块中的位将被熔断,这可以:
·防止ASIC启动签名固件以外的任何设备;和/或
·防止某些JTAG操作,例如。闪存访问。
接下来,证书和密钥对将被编程到NIC上,这将允许客户验证NIC。
在一些实施方式中,证书/密钥对匹配NIC的MAC地址。
应当理解,NIC的存储器可以用静态和动态配置分区来编程。在一些实施方式中,动态分区可以包含由执行固件改变的变量。例如,动态分区可以包括一个或更多个日志文件等。静态分区可以包含很少或从不改变的项,诸如序列号等。
应当理解,各种信息可以安全地存储在ASIC中的存储器或ASIC外部的安全存储器中的一者或另一者中。例如,该信息可以存储在存储器的私有分区中。该信息可以用sec-nic密钥签名或者用sec-nic加密。该信息可以包括以下中的一个或更多个:
唯一许可ID(MAC地址);
一个或更多个不同的许可验证公钥;
一个或更多个相应的许可质询-响应私钥;
一个或更多个许可验证证书;以及
一个或更多个许可证书颁发机构。
在一些实施方式中,NIC可以实现可信平台模块TPM的功能。可信平台模块可提供可执行加密操作(包括密钥产生)并且保护敏感信息(例如密码、密码密钥等)的防篡改集成电路。
在一些实施方式中,可以提供完全在ASIC的本地状态内实现的安全引导加载器,该安全引导加载器被设计为提供NIC的可信平台模块的一部分。安全引导加载器可以建立测量信任的根(root),使得NIC可以向自身确保其知道的固件和应用都是正确的。这可以是对NIC固件验证其接收到的任何新代码的签名(例如升级)的补充。
在该领域中,用户需要能够信任NIC(以及NIC供应商)以正确地实现该受信任的平台/信任根。
在一些实施方式中,组合的所有散列函数的输出比包含在设备上的所有状态大得多,如先前所描述的。
可以覆盖所有的静态状态。例如,诸如闪存或安全存储器中的任何自由空间被设置为包括随机数。这些可以是真随机数而不是可以计算的伪随机数。
所有动态状态(例如,可以随着固件被执行而改变的运行时间变量)可以由硬件设计保持与静态分离。
应当理解,给定动态状态的存在,攻击可能是提供修补到位置{X}的恶意代码。原始代码存储在为动态状态保留的存储器中。如果对{X}内的任何位置作出测量请求,则未修补代码可被包括在散列计算中。
然而,在一些实施方式中,可以防止这种攻击。正在实现的用于f(认证散列)的执行的入口点在安全可信平台模块内,使得(在不重新设计硬件本身的情况下)不可能在f的调用期间进行解除补丁操作。换句话说,在TPM中提供用于运行函数f(N)的引导代码。
不提供TPM的一些实施方式可以具有应用,因为它们可以限制可以在没有检测的情况下修改的状态的总量,并且因此可以减少任何破坏的范围/功能。
申请人在此单独公开了本文描述的每个单独特征和两个或更多个这样的特征的任何组合,只要这样的特征或组合能够根据本领域技术人员的公知常识基于本说明书作为整体来执行,而不管这样的特征或特征的组合是否解决了本文公开的任何问题,并且不限制权利要求的范围。申请人指出,本发明的各方面可由任何这样的单独特征或特征的组合组成。鉴于前述描述,对于本领域技术人员显而易见的是,可以在本发明的范围内进行各种修改。

Claims (15)

1.一种网络接口设备,所述网络接口设备包括:
集成电路器件,其包括至少一个处理器;以及
第一存储器,
其中,所述集成电路器件被配置为执行关于存储数据的至少一部分的函数,所述集成电路器件包括存储用于所述函数的引导代码的防篡改模块,
其中,所述函数的输出使得所述函数的所述输出的大小与所述存储数据的大小之和大于用于存储数据的可用存储器的大小。
2.根据权利要求1所述的网络接口设备,其中,所述防篡改模块包括可信平台模块。
3.根据权利要求1所述的网络接口设备,其中,所述防篡改模块被配置为执行以下中的至少一个操作:
执行一个或更多个加密操作;以及
存储一个或更多个密码和/或一个或更多个加密密钥。
4.根据权利要求1所述的网络接口设备,所述网络接口设备包括在所述集成电路器件外部的第二存储器,其中,所述存储数据存储在所述第一存储器和所述第二存储器中的一者或更多者中。
5.根据权利要求1所述的网络接口设备,其中,所述函数包括散列函数。
6.根据权利要求5所述的网络接口设备,其中,所述防篡改模块被配置为使得用于执行所述散列函数的入口点在所述防篡改模块内。
7.根据权利要求1所述的网络接口设备,其中,所述函数的输出使得所述函数是由所述处理器使用所述存储数据来计算的。
8.根据权利要求1所述的网络接口设备,其中,所述函数的输出的大小大于用于存储数据的可用存储器的大小。
9.根据权利要求1所述的网络接口设备,其中,所述第一存储器的至少一部分是安全的并且被配置为使得所述存储器中的任何可用空间填充有随机数。
10.根据权利要求1所述的网络接口设备,其中,所述函数的输出取决于所述存储数据的所述至少一部分的内容。
11.根据权利要求1所述的网络接口设备,其中,所述集成电路器件被配置为接收标识存储数据的位置的信息并且使用所述信息来执行关于所述位置处的所述存储数据的所述函数。
12.根据权利要求11所述的网络接口设备,其中,标识位置的所述信息包括索引信息。
13.根据权利要求1所述的网络接口设备,其中,所述集成电路器件被配置为输出所述函数的结果。
14.根据权利要求4所述的网络接口设备,所述网络接口设备在所述集成电路器件中包括被配置成存储第一加密密钥的数据存储部,所述至少一个处理器被配置成利用所述第一加密密钥对要存储在所述第二存储器中的数据进行加密。
15.一种由网络接口设备执行的方法,所述网络接口设备包括集成电路器件和至少一个存储器,所述方法包括:
执行关于存储数据的至少一部分的函数,其中,所述存储数据存储在所述至少一个存储器中的在所述集成电路器件外部的第一存储器和所述至少一个存储器中的在所述集成电路器件上的第二存储器中的一者或更多者中,
其中,执行的所述函数的输出使得执行的所述函数的所述输出的大小与所述存储数据的大小之和大于用于存储数据的可用存储器的大小。
CN201910940557.6A 2018-09-28 2019-09-30 网络接口设备和方法 Active CN110971443B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/147,164 2018-09-28
US16/147,164 US10713392B2 (en) 2017-09-29 2018-09-28 Network interface device and method

Publications (2)

Publication Number Publication Date
CN110971443A CN110971443A (zh) 2020-04-07
CN110971443B true CN110971443B (zh) 2023-11-07

Family

ID=70029655

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910940557.6A Active CN110971443B (zh) 2018-09-28 2019-09-30 网络接口设备和方法

Country Status (1)

Country Link
CN (1) CN110971443B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107798256A (zh) * 2017-11-21 2018-03-13 成都三零嘉微电子有限公司 一种基于密码算法分离存储的智能卡及设计方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4209789B2 (ja) * 2003-03-19 2009-01-14 株式会社リコー ファイル作成方法、サーバ、記録媒体及びプログラム追加システム
US7774619B2 (en) * 2004-11-17 2010-08-10 Broadcom Corporation Secure code execution using external memory
US9210140B2 (en) * 2009-08-19 2015-12-08 Solarflare Communications, Inc. Remote functionality selection

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107798256A (zh) * 2017-11-21 2018-03-13 成都三零嘉微电子有限公司 一种基于密码算法分离存储的智能卡及设计方法

Also Published As

Publication number Publication date
CN110971443A (zh) 2020-04-07

Similar Documents

Publication Publication Date Title
US11502845B2 (en) Network interface device and method
CN110325995B (zh) 安全的工业控制平台
EP3479282B1 (en) Targeted secure software deployment
US20180309747A1 (en) Systems and methods for providing container security
EP2791817B1 (en) Cryptographic certification of secure hosted execution environments
US9602282B2 (en) Secure software and hardware association technique
CN101894224B (zh) 保护客户端平台上的内容
US9195806B1 (en) Security server for configuring and programming secure microprocessors
US9100189B2 (en) Secure provisioning in an untrusted environment
US10963543B2 (en) Secure communication between operating system and processes
Eisenbarth et al. Reconfigurable trusted computing in hardware
US20070192864A1 (en) Software root of trust
JP2013502639A (ja) デバイスの監査
US10713392B2 (en) Network interface device and method
US20160055331A1 (en) Detecting exploits against software applications
JP6387908B2 (ja) 認証システム
Crowther et al. Securing Over-the-Air Firmware Updates (FOTA) for Industrial Internet of Things (IIOT) Devices
CN110971443B (zh) 网络接口设备和方法
Gupta et al. Security and Cryptography
Galanou et al. Matee: Multimodal attestation for trusted execution environments
CN106415565A (zh) 保护软件项目
Raval et al. Hardware Root of Trust on IoT Gateway
US20220116206A1 (en) Systems and methods for device authentication in supply chain
Glas et al. A prototype of trusted platform functionality on reconfigurable hardware for bitstream updates
Booth et al. Securing the IMSS Assets

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