CN113841143A - 保护usb输入设备上的固件安装 - Google Patents

保护usb输入设备上的固件安装 Download PDF

Info

Publication number
CN113841143A
CN113841143A CN202080035085.0A CN202080035085A CN113841143A CN 113841143 A CN113841143 A CN 113841143A CN 202080035085 A CN202080035085 A CN 202080035085A CN 113841143 A CN113841143 A CN 113841143A
Authority
CN
China
Prior art keywords
firmware
input device
state
usb input
payload
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.)
Granted
Application number
CN202080035085.0A
Other languages
English (en)
Other versions
CN113841143B (zh
Inventor
V·德索扎
R·K·Y·周
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN113841143A publication Critical patent/CN113841143A/zh
Application granted granted Critical
Publication of CN113841143B publication Critical patent/CN113841143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/32User authentication using biometric data, e.g. fingerprints, iris scans or voiceprints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • G06F21/35User authentication involving the use of external additional devices, e.g. dongles or smart cards communicating wirelessly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/74Protecting 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 operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/83Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • 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/3234Cryptographic 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 additional secure or trusted devices, e.g. TPM, smartcard, USB or software token

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

一个示例在USB输入设备上提供一种方法,包括接收将该USB输入设备的控制器的固件锁状态从锁定状态改为解锁状态的解锁请求;确定该解锁请求是有效的还是无效的;当该解锁请求有效时,将该固件锁状态从锁定状态更新为解锁状态并发送过程完成消息;当该解锁请求无效时,在不更新该固件锁状态的情况下发送该过程完成消息;接收固件更新请求;确定该固件锁状态处于锁定状态还是解锁状态;接收固件有效载荷;认证该固件有效载荷的数据;以及当该固件锁状态被确定为处于解锁状态时,并且当该固件有效载荷的数据被认证时,则安装该固件有效载荷。

Description

保护USB输入设备上的固件安装
背景
计算设备可包括一个或多个通用串行总线(USB)输入设备。例如,膝上型计算机可以在盖子部件中具有相机并且在主体内具有主板。将移动行业处理器接口(MIPI)迹线从主板延伸到相机可能是不可行的,例如因为迹线的长度或铰链耦合。由此,USB相机可用于促成将该相机连接到主板。
概述
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的概念的选集。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部分中提及的任何或所有缺点的实现。
公开了涉及保护USB输入设备上的固件安装/更新过程的示例。所公开的一个示例提供了一种方法,包括从主机计算系统接收将该USB输入设备的控制器的固件锁状态从锁定状态改为解锁状态的解锁请求,以及确定该解锁请求是有效的还是无效的。当该解锁请求有效时,该方法包括将该固件锁状态从锁定状态更新为解锁状态并向主机计算系统发送过程完成消息。当该解锁请求无效时,该方法包括在不更新该固件锁状态的情况下向该主机计算系统发送该过程完成消息。该方法还包括从该主机计算系统接收固件更新请求;确定该固件锁状态处于锁定状态还是解锁状态;从该主机计算系统接收固件有效载荷;认证该固件有效载荷;以及当该固件锁状态被确定为处于解锁状态时并且当该固件有效载荷被认证时,则安装该固件有效载荷。
附图简述
图1描绘了包括通用串行总线(USB)输入设备的示例计算设备。
图2是示出在没有锁状态的情况下在USB输入设备上安装固件的方法的流程图。
图3是示出在受保护的USB输入设备上安装固件的示例方法的流程图。
图4是示出用于改变受保护USB输入设备的锁状态的示例锁定/解锁过程的流程图。
图5描绘了可用于执行图3的示例方法的各方面的示例命令序列。
图6是示出示例计算系统的框图。
详细描述
一些USB输入设备可以在不执行用于验证/认证固件更新的安全协议的情况下接受并安装该固件更新。这对于具有有限性能和特征能力的USB输入设备而言可以是可接受的。然而,诸如相机、麦克风阵列和触摸传感器之类的某些USB输入设备可用于经由诸如脸部识别、语音识别/命令和/或指纹检测等方法来进行生物辨识用户认证。在此类输入设备的固件不受保护的情况下,该输入设备可能容易遭受安装用于经由此类USB输入设备来访问数据输入的恶意固件。例如,恶意固件代码可被用于访问由IR相机获取的IR视频帧或者由麦克风获取的语音样本。此外,USB输入设备制造商可能提供可在公开网络上被下载的不安全的工具以执行固件更新,由此促进此类恶意固件安装。
可帮助防止USB输入设备上的非授权固件更新的一个潜在解决方案涉及修改USB输入设备和/或该USB输入设备与其集成的计算设备的硬件。例如,该计算设备的中央处理单元(CPU)的专用通用输入输出(GIPO)引脚可被分配用于连接到USB输入设备。该专用GPIO引脚可被切换以锁定串行外围接口(SPI)闪存,并因此可禁用对USB输入设备的控制器的现场固件更新。然而,该设计级硬件变更需要用于特定处理器的可用GPIO引脚。此外,实现该硬件级变更涉及固件到基本输入/输出系统(BIOS)代码的变更以及围绕引脚控制逻辑的附加安全性,例如以使得终端用户无法切换GPIO引脚。当不同的产品线利用相同的USB设备但不同的中央处理设备时,相同的GPIO引脚可能并非与每一个处理设备兼容。此外,每一个SoC可以按不同方式写入BIOS代码,从而导致为每一种类型的处理设备部署不同的固件变体。这样的变更可增加计算设备的设计和制造成本。
因此,公开了涉及使用不特定于USB输入设备与其集成的计算设备的处理硬件的技术来保护固件安装/更新过程的示例。简言之,USB输入设备控制器包括固件,该固件包括锁定/解锁状态。当固件将被更新时(例如,在制造期间),控制器从主机接收锁定/解锁请求,确定锁定/解锁请求的有效性,并且在该锁定/解锁请求被确定为有效时更新其固件锁状态—指示能够或不能修改固件代码的状态。当接收到固件更新请求时,USB输入设备控制器验证其当前锁状态以确定该USB输入设备控制器是否处于解锁状态并由此能够接受固件更新。此外,USB输入设备控制器验证/认证伴随固件有效载荷的数据以确定是否写入该固件有效载荷。这可帮助防止意外或恶意固件有效载荷被安装在USB输入设备的控制器上,这可帮助提高用于生物辨识数据感测的USB输入设备的安全性。此外,通过实现用于USB输入设备的控制器的固件/软件解决方案,所公开的示例不取决于任何特定硬件配置,并且不需要支持UEFI胶囊框架以及与控制特定平台上的GPIO相关联的BIOS定制开销。
在讨论这些示例之前,图1描绘了具有相机102的膝上型计算机形式的示例计算设备100。计算设备100包括盖子104,其经由铰链108或其他可旋转/柔性连接来耦合到计算设备100的主体106。在该配置中,计算设备100的主板可驻留在主体106内,而相机102驻留在显示器110上方的盖子104中。将移动行业处理器接口(MIPI)迹线从主体106中的主板延伸到相机102可能是不可行的,例如因为迹线的长度或铰链耦合。因此,相机102可采取USB相机的形式,该USB相机包括经由USB连接来连接到计算设备100的控制器112。
虽然在该示例中被描述为USB相机102,但本文描述的安全示例可以与任何合适的传感器/输入设备联用。示例包括图像传感器(RGB、IR、深度)、触摸传感器和音频传感器(麦克风、麦克风阵列)。此外,虽然在图1中被描绘为膝上型计算机,但在其他示例中可使用任何其他合适的计算设备。计算设备的示例包括移动计算设备(平板、头戴式设备、智能电话)、台式计算设备、具有集成USB传感器的显示器设备(例如,监视器、电视机)、医疗设备等。
控制器112可表示任何合适类型的控制器。在一些示例中,所使用的控制器的类型可取决于控制器112耦合到的传感器的类型。控制器112的示例包括微控制器(MCU)、数字信号处理器(DSP)和图像信号处理器(ISP)。
在制造计算设备100时,制造商可使用USB输入设备制造商提供的软件工具来在该USB设备上安装/更新固件。图2描绘了使用这一固件更新工具来安装/更新固件的方法200。方法200可被实现为可通过驻留在主机202和USB输入设备204上的逻辑来执行的所存储的指令。在一些情形中,主机202包括制造厂商场所本地的计算系统(例如,PC、服务器计算机和/或另一计算系统)。在其它示例中,主机202可包括USB输入设备与其集成的计算设备(例如,图1中的计算设备100)。
在206,主机202向USB输入设备204发送固件更新请求。作为响应,USB输入设备204进入更新模式,如在208所指示的。USB输入设备204可选地向主机202发送指示该USB输入设备204处于更新模式并且准备好接收固件更新的消息,如由箭头210指示的。在212,主机202通过向USB输入设备204发送新固件代码来开始固件安装过程。USB输入设备204写入所接收到的固件代码,如在214指示的。
在方法200中,USB输入设备204自动接受从主机202接收到的固件更新请求,并且写入所接收到的固件代码,而不确定该更新请求和/或固件代码是否有效。以此方式,USB输入设备204可能自动接受并写入恶意/破坏性固件二进制文件。
由此,图3是示出安装/更新固件的更安全的方法300的示例的流程图。如图3中围绕主机202和USB输入设备204的虚线所指示的,方法300的各方面可被实现为可通过驻留在主机202上的逻辑来执行的所存储的指令以及可通过驻留在USB输入设备204上的逻辑来执行的所存储的指令。在一些情形中,USB输入设备204可充分利用现有扩展单元(XU)框架的能力来实现本文描述的安全协议。在更具体的示例中,当USB输入设备204包括USB相机时,可使用对USB视频类规范的扩展(诸如可以从华盛顿州雷蒙德市的微软公司获得的MS_CAMERA_CONTROL_XU等)来实现方法300的各方面。在其它示例中,USB输入设备可包括构建到其控制器的固件中的任何其他合适的标识符,并且主机侧工具可使用该标识符来与该控制器的固件进行通信,而不是充分利用XU的能力。
类似于方法200,方法300开始于206,其中主机202向USB输入设备204发送固件更新请求。可使用厂商提供的软件工具来执行步骤206,但USB输入设备在接收到该固件更新请求之际不自动进入固件更新模式。USB输入设备204通过在302检查其当前固件锁状态来确定其控制器是否能够接收固件更新,而不是自动进入固件更新模式。在一些示例中,USB输入设备204利用状态机,并且在非易失性存储器内以预定偏移配置的锁变量指示USB输入设备204的当前固件锁状态。在其他示例中,锁变量可被存储在易失性存储器中并因此只可在设备关闭之前有效。
在304,USB输入设备204确定固件锁是否被启用。如果固件锁未被启用(处于解锁状态),则方法300继续至306,其中将USB输入设备204的控制器设为固件更新模式。方法300然后继续至308,其中USB输入设备204向主机202发送响应消息。如果固件锁被启用(处于锁定状态)则过程300继续至308,而不将USB输入设备204设为固件更新模式。在一些示例中,响应消息可采取“过程完成”消息的形式,该过程完成消息向主机202指示固件更新请求已被USB输入设备204接收并确收,但不一定指示该固件更新请求的结果。在其它示例中,USB输入设备204可将指示固件更新请求被接受还是被拒绝和/或固件处于锁定状态还是解锁状态的信息与过程完成消息一起发送。在一些示例中,响应消息可以是抽象的,因为它可由所期望的主机202解释,但不可由其他用户/设备解释。
在310,主机202可选地例如基于所接收到的响应消息是否包括这一信息来确定固件更新请求是否已被USB输入设备204接受。当主机202确定该请求未被接受时,主机202可以报告错误,如在312指示的。当主机202确定该请求已被接受时或者当主机不执行确定步骤310时,方法300可继续至314。在314,主机202向USB输入设备204发送包括新固件的有效载荷。
在316,USB输入设备204认证所接收到的有效载荷的固件数据。当控制器处于锁定状态时和/或当固件数据无法被认证时,设备204不写入新固件。当控制器处于解锁状态且固件数据被认证时,设备204写入新固件,如在214指示的。
方法300可以在受保护的制造环境中被用来在组装包括USB输入设备的计算设备期间安全地在USB输入设备的控制器上安装/更新固件。方法300还可用于在设备制造商启用现场固件更新的情况下安全地这样的现场更新。
图4描绘了可用于在发送固件更新请求(例如,图3中的步骤206)之前改变USB输入设备204的锁状态的示例锁定/解锁方法400。方法400可以例如在部署和测试阶段期间或者在制造期间被用来将控制器上的固件升级或降级到不同的固件版本。在一些情形中,当固件是生产就绪(例如,没有进一步的升级/降级)的时候,固件锁状态可被设为默认锁定状态以禁用现场固件更新。方法400的各方面可经由USB输入设备与其集成的计算设备的开发商或制造商私有的锁定/解锁软件工具来实现。
在402,主机202使用私有且除授权主机202以外的设备/用户不可访问的锁定/解锁工具来向USB输入设备204发送锁定/解锁请求。该锁定/解锁请求可包括有效载荷,该有效载荷包括例如制造商和/或设计商私有的自定义控制XU的标识符,以及固件可验证的校验和。
当ISP固件接收到XU请求时,它在404确证该请求。例如,该锁定/解锁请求可经由因控制器上的特定固件版本而异的密钥(以使得密钥1对应于固件版本1,密钥2对应于版本2,等等)来加密。USB输入设备204可经由基于所安装的特定固件版本来被烤制到其控制器的固件中的密钥来解密该请求。一旦锁定/解锁请求被解密,就可在406确证自定义控制XU标识符(或其他合适的标识符)。此外,可计算锁定/解锁请求的散列并将其与预期散列相比较,如在408指示的。
在410,USB输入设备204确定是否接受该锁定/解锁请求。当USB输入设备204确认所接收到的标识符匹配预期标识符,并且散列校验成功时,则在412将固件锁状态从锁定状态更新为解锁状态。在一些示例中,USB输入设备204将锁变量存储在该USB输入设备204的内部非易失性存储器中。在其它示例中,USB输入设备204可将锁变量存储在易失性存储器位置(诸如随机存取存储器(RAM))中,以使得锁变量只在设备重置之前有效。
在更新锁状态后,方法400继续至414,其中USB输入设备204将请求确收返回给主机202。同样,当所接收到的标识符不匹配预期标识符时和/或当散列验证失败时,方法400在不更新锁状态的情况下继续至414。
在一些示例中,在414发送的请求确收可以不包括关于锁定/解锁请求是否已被USB输入设备204接受的指示,这可帮助(例如,对黑客/恶意行为者)混淆该锁定/解锁请求确证是否失败。在其它示例中,USB输入设备204可将指示锁定/解锁请求的成功或失败的信息与请求确收一起发送。该信息可包括通过/失败指示和/或可指示当前锁状态。在416,主机例如通过向USB输入设备204发送固件更新请求来继续设备操作,如以上参照方法300描述的。
图5描绘了主机202和USB输入设备接口502之间的示例命令序列500,该USB输入设备接口502可用于向USB输入设备发送新固件(图3中的步骤314),认证固件数据(图3中的步骤316),以及可选地写入新固件(图3中的步骤214)。
如上所述,主机202通过向USB输入设备发送固件更新请求(例如,“开始固件更新”USB命令)来发起固件更新。USB输入设备接收该请求并检查其当前锁状态以,例如基于存储在存储器中的锁变量的状态,来确定固件锁被启用还是被禁用。在确定当前锁状态处于解锁状态还是锁定状态后,USB输入设备向主机202发送响应消息。
在接收到该响应消息后,主机202通过向设备接口502发送固件有效载荷来部署新固件,如在504指示的。在一些示例中,固件有效载荷可采取经签名的二进制大对象的形式。如在506指示的,USB输入设备通过以下操作来认证固件有效载荷的数据:解密固件有效载荷、生成固件有效载荷的散列、以及例如通过将所生成的散列的校验和与预期散列的校验和进行匹配来将该散列与预期散列相比较。除了验证固件有效载荷的散列以外,USB输入设备还验证固件有效载荷的签名是否匹配预期/授权签名,如在508指示的。在一些情形中,USB输入设备预期固件有效载荷是用可信根证书或者只可由授权/可信主机访问的其他私有签名来签署的。
一旦固件有效载荷被认证,设备就将固件有效载荷写入到存储器510。作为一个示例,USB输入设备接口502发送擦除闪存的命令(512),接收对空白数据的确认(514),将固件有效载荷写入到闪存(516),发送读取固件有效载荷的读取请求(518),从存储器510接收有效载荷数据(520),验证所写入的有效载荷(522),以及向存储器510发送完结包(524)。
被写入到存储器的固件有效载荷包括出于锁定状态的锁变量。由此,将经更新的固件写入到USB设备重新锁定该USB设备。这防止对USB输入设备的固件的任何进一步更新直到另一锁定/解锁请求被成功执行。此外,固件有效载荷向USB输入设备提供新密钥,该新密钥可用于解锁新/当前固件版本的固件锁状态,因为可用于解锁先前固件版本(写入新固件有效载荷之前)的密钥不可用于解锁新/当前固件版本。
本文描述的示例为USB输入设备上的固件安装/更新提供了多层安全性,并由此可帮助防止在这一设备上安装恶意固件。
在一些实施例中,本文中所描述的方法和过程可以与一个或多个计算设备的计算系统绑定。具体而言,这样的方法和过程可被实现为计算机应用程序或服务、应用编程接口(API)、库、和/或其他计算机程序产品。
图6示意性地示出了可执行上述方法和过程中的一个或多个的计算系统600的非限制性实施例。以简化形式示出了计算系统600。计算系统600可采取一个或多个下列各项的形式:个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)、和/或其他计算设备。
计算系统600包括逻辑机602和存储机604。计算系统600可任选地包括显示子系统606、输入子系统608、通信子系统610和/或在图6中未示出的其他组件。
逻辑机602包括被配置成执行指令的一个或多个物理设备。例如,逻辑机可被配置成执行作为一个或多个下列各项的一部分的指令:应用、服务、程序、例程、库、对象、组件、数据结构、或其他逻辑构造。此类指令可被实现以执行任务、实现数据类型、变换一个或多个组件的状态、实现技术效果、或以其他方式得到期望的结果。
逻辑机602可以包括被配置成执行软件指令的一个或多个处理器。附加地或替换地,逻辑机可包括被配置成执行硬件或固件指令的一个或多个硬件或固件逻辑机。逻辑机的处理器可以是单核或多核的,并且在其上执行的指令可被配置成用于串行、并行、和/或分布式处理。逻辑机的各个个体组件可任选地分布在两个或更多个分开的设备之中,这些设备可位于远程和/或被配置成用于协同处理。逻辑机的各方面可以由用云计算配置进行配置的能远程地访问的联网计算设备来虚拟化和执行。
存储机604包括被配置成保持能由逻辑机执行以实现本文中所描述的方法和过程的指令的一个或多个物理设备。当实现这些方法和过程时,可以变换存储机604的状态——例如,以保持不同的数据。
存储机604可包括可移除和/或内置设备。存储机604可包括光学存储器(例如,CD、DVD、HD-DVD、蓝光碟等)、半导体存储器(例如,RAM、EPROM、EEPROM等)、和/或磁存储器(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)等等。存储机604可包括易失性、非易失性、动态、静态、读/写、只读、随机存取、顺序存取、位置可寻址、文件可寻址、和/或内容可寻址设备。
将领会,存储机604包括一个或多个物理设备。然而,本文中所描述的指令的各方面可替换地通过不被物理设备保持达有限历时的通信介质(例如,电磁信号、光信号等)来传播。
逻辑机602和存储机604的各方面可被一起集成到一个或多个硬件逻辑组件中。此类硬件逻辑组件可包括例如现场可编程门阵列(FPGA)、程序和应用专用集成电路(PASIC/ASIC)、程序和应用专用标准产品(PSSP/ASSP)、片上系统(SOC),以及复杂可编程逻辑器件(CPLD)。
术语“程序”可用于描述被实现来执行特定功能的计算系统600的一方面。在一些情况下,可经由执行存储机602所保持的指令的逻辑机604来实例化程序。将理解,不同的程序可以从相同的应用、服务、代码块、对象、库、例程、API、函数等实例化。类似地,相同的程序可由不同的应用、服务、代码块、对象、例程、API、功能等来实例化。术语“程序”意在涵盖单个或成组的可执行文件、数据文件、库、驱动程序、脚本、数据库记录等。
将理解,如此处所使用的“服务”可以是跨越多个用户会话可执行的应用程序。服务可对一个或更多系统组件、程序、和/或其他服务可用。在一些实现中,服务可以在一个或多个服务器计算设备上运行。
当显示子系统606时被包括时,显示子系统604可被用来呈现由存储机504保持的数据的视觉表示。该视觉表示可采取图形用户界面(GUI)的形式。由于本文中所描述的方法和过程改变了由存储机保持的数据,并因而变换了存储机的状态,因此同样可以变换显示子系统606的状态以视觉地表示底层数据中的改变。显示子系统606可包括利用实质上任何类型的技术的一个或多个显示设备。可将此类显示设备与逻辑机602和/或存储机604组合在共享封装中,或者此类显示设备可以是外围显示设备。
当被包括时,输入子系统608可包括诸如键盘、鼠标、触摸屏或游戏控制器等一个或多个用户输入设备或者与这些用户输入设备对接。在一些实施例中,输入子系统可以包括或对接于所选择的自然用户输入(NUI)部件。此类部件可以是集成式的或者是外设,并且输入动作的转换和/或处理可以在板上或板下处理。示例NUI部件可包括用于语言和/或语音识别的话筒;用于机器视觉和/或姿势识别的红外、色彩、立体显示和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼睛跟踪器、加速度计和/或陀螺仪;以及用于评估脑部活动的电场感测部件。
当包括通信子系统610时,通信子系统600可被配置成将计算系统1700与一个或多个其他计算设备通信地耦合。通信子系统610可包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可被配置成用于经由无线电话网络、或者有线或无线局域网或广域网进行通信。在一些实施例中,通信子系统可允许计算系统600经由诸如因特网之类的网络将消息发送至其他设备以及/或者从其他设备接收消息。
另一个示例在通用串行总线(USB)输入设备上提供一种方法,包括从主机计算系统接收将该USB输入设备的控制器的固件锁状态从锁定状态改为解锁状态的解锁请求;确定该解锁请求是有效的还是无效的;当该解锁请求有效时,将该固件锁状态从锁定状态更新为解锁状态并向主机计算系统发送过程完成消息;当该解锁请求无效时,在不更新该固件锁状态的情况下向主机计算系统发送该过程完成消息;从主机计算系统接收固件更新请求;确定该固件锁状态处于锁定状态还是解锁状态;从主机计算系统接收固件有效载荷;认证该固件有效载荷的数据;以及当该固件锁状态被确定为处于解锁状态时,并且当该固件有效载荷的数据被认证时,则安装该固件有效载荷。在这一示例中,确定解锁请求是有效的还是无效的可另外地或另选地包括将该解锁请求的标识符与预期标识符相比较。在这一示例中,确定解锁请求是有效的还是无效的可另外地或另选地包括解密该解锁请求并将该解锁请求的散列与预期散列相比较。在这一示例中,向主机计算系统发送过程完成消息可另外地或另选地包括将指示固件锁状态的信息与该过程完成消息一起发送。在这一示例中,认证固件有效载荷的数据可另外地或另选地包括验证固件有效载荷的散列。在这一示例中,安装固件有效载荷可另外地或另选地包括将固件锁状态更新为锁定状态。在这一示例中,该方法可另外地或另选地包括,在确定固件锁状态处于锁定状态还是解锁状态后,向主机计算系统发送响应消息。在这一示例中,发送响应消息可另外地或另选地包括,在固件锁状态被确定为处于锁定状态时,发送拒绝固件更新请求的响应消息。
另一个示例提供了一种包括控制器的USB输入设备,该控制器被配置成从主机计算系统接收将该USB输入设备的控制器的固件锁状态从锁定状态改为解锁状态的解锁请求;确定该解锁请求是有效的还是无效的;当该解锁请求有效时,将该固件锁状态从锁定状态更新为解锁状态并向主机计算系统发送过程完成消息;当该解锁请求无效时,在不更新该固件锁状态的情况下向主机计算系统发送该过程完成消息;从主机计算系统接收固件更新请求;确定该固件锁状态处于锁定状态还是解锁状态;从主机计算系统接收固件有效载荷;认证该固件有效载荷的数据;以及当该固件锁状态被确定为处于解锁状态时,并且当该固件有效载荷的数据被认证时,则安装该固件有效载荷。在这一示例中,该USB输入设备可另外地或另选地包括生物辨识输入设备。在这一示例中,该USB输入设备可另外地或另选地被配置成在确定固件锁状态处于锁定状态还是解锁状态后向主机计算系统发送响应消息。在这一示例中,该USB输入设备可另外地或另选地被配置成在固件锁状态被确定为处于锁定状态时,向主机计算系统发送拒绝固件更新请求的响应消息。在这一示例中,该USB输入设备可另外地或另选地被配置成通过将该解锁请求的标识符与预期标识符相比较来确定解锁请求是有效的还是无效的。在这一示例中,该USB输入设备可另外地或另选地被配置成通过解密解锁请求并将该解锁请求的散列与预期散列相比较来确定解锁请求是有效的还是无效的。在这一示例中,该USB输入设备可另外地或另选地被配置成通过将指示固件锁状态的信息与该过程完成消息一起发送来向主机计算系统发送该过程完成消息。在这一示例中,该USB输入设备可另外地或另选地被配置成通过验证固件有效载荷的散列来认证固件有效载荷的数据。在这一示例中,该USB输入设备可另外地或另选地被配置成在安装固件有效载荷后,将固件锁状态更新为锁定状态。在这一示例中,该USB输入设备可另外地或另选地经由USB连接来连接到膝上型计算机的主板。
另一示例提供了一种用于在USB输入设备的控制器上安装固件的方法,该方法包括向该控制器发送用于将该控制器的固件锁状态从锁定状态改为解锁状态的解锁请求;从该控制器接收过程完成消息;向该控制器发送在该控制器上安装固件的请求;从该控制器接收响应于安装该固件的请求的消息;向该控制器发送固件有效载荷;当解锁请求以及对固件有效载荷的验证成功时,则接收对固件安装的确认;以及当解锁请求不成功时和/或当对固件有效载荷的验证不成功时,则接收关于完成固件安装失败的消息。在这一示例中,发送固件有效载荷可另外地或另选地包括发送经签名的二进制文件。
应当理解,本文中所描述的配置和/或办法本质上是示例性的,并且这些具体实施例或示例不应被视为具有限制意义,因为许多变体是可能的。本文中所描述的具体例程或方法可表示任何数目的处理策略中的一个或多个。由此,所解说和/或所描述的各种动作可按所解说和/或所描述的顺序执行、按其他顺序执行、并行地执行,或者被省略。同样,以上所描述的过程的次序可被改变。
本公开的主题包括此处公开的各种过程、系统和配置以及其他特征、功能、动作和/或属性、以及它们的任一和全部等价物的所有新颖且非显而易见的组合和子组合。

Claims (15)

1.一种通用串行总线(USB)输入设备上的方法,包括:
从主机计算系统接收将所述USB输入设备的控制器的固件锁状态从锁定状态改为解锁状态的解锁请求;
确定所述解锁请求是有效的还是无效的;
当所述解锁请求有效时,将所述固件锁状态从所述锁定状态更新为所述解锁状态并向所述主机计算系统发送过程完成消息;
当所述解锁请求无效时,在不更新所述固件锁状态的情况下向所述主机计算系统发送所述过程完成消息;
从所述主机计算系统接收固件更新请求;
确定所述固件锁状态处于所述锁定状态还是所述解锁状态;
从所述主机计算系统接收固件有效载荷;
认证所述固件有效载荷的数据;以及
当所述固件锁状态被确定为处于所述解锁状态时,并且当所述固件有效载荷的数据被认证时,则安装所述固件有效载荷。
2.如权利要求1所述的方法,其中确定所述解锁请求是有效的还是无效的包括将所述解锁请求的标识符与预期标识符相比较。
3.如权利要求1所述的方法,其中确定所述解锁请求是有效的还是无效的包括解密所述解锁请求并将所述解锁请求的散列与预期散列相比较。
4.如权利要求1所述的方法,其中向所述主机计算系统发送所述过程完成消息包括将指示所述固件锁状态的信息与所述过程完成消息一起发送。
5.如权利要求1所述的方法,其中认证所述固件有效载荷的数据包括验证所述固件有效载荷的散列。
6.如权利要求1所述的方法,其中安装所述固件有效载荷包括将所述固件锁状态更新为所述锁定状态。
7.如权利要求1所述的方法,进一步包括在确定所述固件锁状态处于所述锁定状态还是所述解锁状态后,向所述主机计算系统发送响应消息。
8.如权利要求7所述的方法,其中发送所述响应消息包括,在所述固件锁状态被确定为处于所述锁定状态时,发送拒绝所述固件更新请求的响应消息。
9.一种包括控制器的USB输入设备,所述控制器被配置成:
从主机计算系统接收将固件锁状态从锁定状态改为解锁状态的解锁请求;
确定所述解锁请求是有效的还是无效的;
当所述解锁请求有效时,将所述固件锁状态从所述锁定状态更新为所述解锁状态并向所述主机计算系统发送过程完成消息;
当所述解锁请求无效时,在不更新所述固件锁状态的情况下向所述主机计算系统发送所述过程完成消息;
从所述主机计算系统接收固件更新请求;
确定所述固件锁状态处于所述锁定状态还是所述解锁状态;
从所述主机计算系统接收固件有效载荷;
认证所述固件有效载荷的数据;以及
当所述固件锁状态被确定为处于所述解锁状态时,并且当所述固件有效载荷的数据被认证时,则安装所述固件有效载荷。
10.如权利要求9所述的USB输入设备,其中所述USB输入设备包括生物辨识输入设备。
11.如权利要求9所述的USB输入设备,其中所述USB输入设备被进一步配置成,在确定所述固件锁状态处于所述锁定状态还是所述解锁状态后,向所述主机计算系统发送响应消息。
12.如权利要求9所述的USB输入设备,其中所述USB输入设备被进一步配置成,在所述固件锁状态被确定为处于所述锁定状态时,向所述主机计算系统发送拒绝所述固件更新请求的响应消息。
13.如权利要求9所述的USB输入设备,其中所述USB输入设备被配置成通过将所述解锁请求的标识符与预期标识符相比较来确定所述解锁请求是有效的还是无效的。
14.如权利要求9所述的USB输入设备,其中所述USB输入设备被配置成通过解密所述解锁请求并将所述解锁请求的散列与预期散列相比较来确定所述解锁请求是有效的还是无效的。
15.如权利要求9所述的USB输入设备,其中所述USB输入设备被配置成通过验证所述固件有效载荷的散列来认证所述固件有效载荷的数据。
CN202080035085.0A 2019-05-10 2020-04-15 一种usb输入设备上的方法 Active CN113841143B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/409,597 US10776102B1 (en) 2019-05-10 2019-05-10 Securing firmware installation on USB input device
US16/409,597 2019-05-10
PCT/US2020/028165 WO2020231583A1 (en) 2019-05-10 2020-04-15 Securing firmware installation on usb input device

Publications (2)

Publication Number Publication Date
CN113841143A true CN113841143A (zh) 2021-12-24
CN113841143B CN113841143B (zh) 2024-05-28

Family

ID=

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117037344A (zh) * 2023-10-09 2023-11-10 盛视科技股份有限公司 负反馈回路电子锁、施封锁、自检方法以及固件更新方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143600A1 (en) * 2004-12-29 2006-06-29 Andrew Cottrell Secure firmware update
US20100023777A1 (en) * 2007-11-12 2010-01-28 Gemalto Inc System and method for secure firmware update of a secure token having a flash memory controller and a smart card
US20120072734A1 (en) * 2010-09-22 2012-03-22 Wishman Allen R Platform firmware armoring technology
US20170124358A1 (en) * 2015-10-30 2017-05-04 Ramamurthy Krithivas Asset protection of integrated circuits during transport
CN108605034A (zh) * 2015-10-14 2018-09-28 总锁有限责任公司 无线固件更新
CN108833478A (zh) * 2018-05-17 2018-11-16 惠州超声音响有限公司 一种通过dfu成功率预测模型进行固件升级的方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143600A1 (en) * 2004-12-29 2006-06-29 Andrew Cottrell Secure firmware update
US20100023777A1 (en) * 2007-11-12 2010-01-28 Gemalto Inc System and method for secure firmware update of a secure token having a flash memory controller and a smart card
US20120072734A1 (en) * 2010-09-22 2012-03-22 Wishman Allen R Platform firmware armoring technology
CN108605034A (zh) * 2015-10-14 2018-09-28 总锁有限责任公司 无线固件更新
US20170124358A1 (en) * 2015-10-30 2017-05-04 Ramamurthy Krithivas Asset protection of integrated circuits during transport
CN108833478A (zh) * 2018-05-17 2018-11-16 惠州超声音响有限公司 一种通过dfu成功率预测模型进行固件升级的方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117037344A (zh) * 2023-10-09 2023-11-10 盛视科技股份有限公司 负反馈回路电子锁、施封锁、自检方法以及固件更新方法
CN117037344B (zh) * 2023-10-09 2024-02-06 盛视科技股份有限公司 负反馈回路电子锁、施封锁、自检方法以及固件更新方法

Also Published As

Publication number Publication date
EP3966713A1 (en) 2022-03-16
US10776102B1 (en) 2020-09-15
WO2020231583A1 (en) 2020-11-19

Similar Documents

Publication Publication Date Title
US10776102B1 (en) Securing firmware installation on USB input device
US8544092B2 (en) Integrity verification using a peripheral device
US8996851B2 (en) Host device and method for securely booting the host device with operating system code loaded from a storage device
KR101066779B1 (ko) 컴퓨팅 장치의 보안 부팅
CN107408172B (zh) 从用户信任的设备安全地引导计算机
US10078523B2 (en) Method to boot a computer from a user trusted device with an operating system loader stored thereon
KR102358470B1 (ko) 부트 로더 업데이트 펌웨어, 및 부트 로더 업데이트 방법
KR101281678B1 (ko) 이동 저장 장치에서 호스트 인증 방법, 호스트 인증을 위한정보 제공 방법, 장치, 및 기록매체
CN111008379A (zh) 电子设备的固件安全检测方法及相关设备
US20130086695A1 (en) Method and system for remote access to data stored on a host system
US9798887B2 (en) Computing device to securely activate or revoke a key
WO2013067486A1 (en) Secure boot administration in a unified extensible firmware interface (uefi)- compliant computing device
US11165780B2 (en) Systems and methods to secure publicly-hosted cloud applications to run only within the context of a trusted client application
CN105814576A (zh) 用于集群节点的自动强身份生成
US8713653B2 (en) Data processing apparatus, activation control method, and computer-readable storage medium
KR102389727B1 (ko) 차량 내 전자식 제어기 보안성 평가 방법 및 그 장치
CN112613011A (zh) U盘系统认证方法、装置、电子设备及存储介质
CN113841143B (zh) 一种usb输入设备上的方法
KR102248132B1 (ko) 생체정보를 이용한 로그인방법, 장치 및 프로그램
US20090187898A1 (en) Method for securely updating an autorun program and portable electronic entity executing it
US20230409339A1 (en) Muscle/memory wire lock of device component(s)
WO2023224616A1 (en) Command authentications
KR20230116532A (ko) IoT 디바이스의 안전한 연결을 위한 디바이스 인증서 생성 방법 및 시스템
JP2015007827A (ja) 通信制御システム、通信端末装置、認証コンピュータ及び通信制御方法
TW201721501A (zh) 安全防護方法及安全防護系統

Legal Events

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