Io设备与硬件安全元件的自动配对的制作方法
【专利说明】
[0001 ] 背景
技术领域
[0002]各实施例总体上涉及计算平台和/或系统中的安全性。更具体地,各实施例涉及输入输出(10)设备与硬件安全元件的自动配对。
[0003]讨论
[0004]计算系统(诸如个人计算机)可运行会易于受到恶意软件(恶意软件)攻击的主机操作系统(0S)。为了提高安全性,专用硬件元件(例如,“安全元件”)可被结合到计算系统中,其中,该元件可安全地引导,仅运行与0S和其他基于主机的软件隔离的硬件环境中的受信固件。安全元件因此可以用于以受信的方式实现安全性和可管理性特征。
[0005]对于某些使用场景,安全元件可与系统上的其他硬件设备交互。在这些情况下,因此,可存在危害其他硬件设备和/或篡改安全元件与其他硬件设备之间的通信通道的恶意软件的潜在风险。在某些情形下,安全元件和另一个硬件设备之间的通信通道可流经主机
OSo
[0006]实际上,许多输入输出(10)设备(诸如键盘、鼠标、触摸屏、打印机等等)可通过USB(通用串行总线,例如,USB规范3.0版本,2008年11月12日,USB实现者论坛)连接到系统。由于硬件限制,这些USB设备可仅由主机软件(诸如0S或B10S(基本输入输出系统、UEFI/统一可扩展固件接口等等))通过USB控制器直接访问。相应地,当使用专用硬件安全元件可能在某些情况下合适时,为改进10设备留出了足够的空间。
【附图说明】
[0007]通过阅读以下说明书和所附权利要求书并且通过参考以下附图,本发明实施例的各种优点将对本领域普通技术人员变得明显,在附图中:
[0008]图1是根据实施例的计算架构的示例的框图;
[0009]图2是根据实施例的在受信配对代理和安全元件之间建立受信通道的方法的示例的流程图;以及
[0010]图3是根据实施例的在安全元件和输入输出(10)设备之间建立受信通道的方法的示例的流程图。
[0011]详细描述
[0012]图1示出其中输入输出(10)设备12耦合到计算系统10的计算架构。计算系统10可包括例如服务器、工作站、台式计算机、笔记本计算机、平板计算机、可转换平板计算机、个人数字助理(PDA)、移动互联网设备(MID)、智能电话、媒体播放器等等。此外,10设备12可包括例如可用于通信敏感、隐私和/或个人信息(诸如与各种各样的应用(例如银行、电子商务、社交网络等等)相关联的登录、账户和/或财务信息)的键盘、鼠标、触摸屏、打印机等等。
[0013]在一个示例中,10设备12是USB设备,尽管还可使用其他总线配置和/或技术。因此,10设备12可以是可仅由在计算系统10的主机处理器16(中央处理单元/CHJ)或者B1S18 (基本输入输出系统和/或UEFI)上运行的软件直接访问的呙散设备。相应地,计算系统10和10设备12之间的通信可能受到基于主机的恶意软件的攻击。如将更详细讨论的,计算系统10可被配置成用于当10设备12连接到计算系统10时自动地将10设备12与基于硬件的安全元件14配对,从而使得可关于10设备12和安全元件14之间的通信避免恶意软件担忧(例如,监听、密钥登录)。
[0014]总体上,安全元件14可在计算系统10的早期引导阶段期间与B1S18中的受信配对代理20建立受信通道/关系,并且利用该受信通道以便在10设备12耦合到计算系统10时与10设备建立附加受信通道。更具体地,所示出的受信配对代理20可生成随机配对认证值(PAV)并且将PAV存储到隐藏存储器空间26。在一个示例中,受信配对代理20是系统管理中断(SMI)处理程序并且隐藏存储器空间26位于与在系统管理模式(SMM)之外运行的代码隔离的系统管理随机存取存储器(SMRAM)中。因此,所示出的受信配对代理20的执行环境不能由其他系统软件预占。在另一个示例中,受信配对代理20是也具有其自身的存储器空间(例如,AC-RAM)和与不受信代码隔离并隐藏的执行环境的认证代码模块(ACM)。
[0015]受信配对代理20还可在引导过程(例如,上电自检测/POST、转变到SO ACPI/高级配置和功率接口,例如ACPI规范,版本5.0a,2011年12月6日等等)期间向安全元件14发送配对认证值。传输配对认证值可被配置成用于在引导过程中相对早地发生(例如,在预定的B1S阶段之前,诸如执行第三方代码,或B1S的选项只读存储器/ROM中的固件)以便确保恶意软件不被给予监听或以其他方式篡改配对认证值的机会。此外,安全元件14可包括固件22,该固件接收配对认证值并且仅当在预定的B1S阶段之前接收到配对认证值时才接受配对认证值。接受配对认证值可涉及将配对认证值存储在安全元件14的本地存储器24 (例如,受信的并且安全的)。拒绝配对认证值可涉及例如节流请求、拒绝未来请求、重置计算系统和/或其他实现方式特定的行为。配对认证值可通常用在受信配对代理20和安全元件14之间的后续通信中以便维持这些组件之间的关系的受信性质。
[0016]当10设备12耦合到(例如,连接到、插入到、注册有)计算系统10时,在主机处理器16上运行的10驱动器堆栈30可与在10设备12上运行的固件32通信以便检测10设备12的存在。此外,在主机处理器16上运行的0S模块28(例如,主机配对请求器)可从10驱动器堆栈30获得10设备12的设备地址并且向受信配对代理20发布配对请求,其中,配对请求可包括10设备12的设备地址。响应于接收到配对请求,受信配对代理20可生成随机配对密钥(例如,随机或伪随机128位数)。
[0017]受信配对代理20还可向安全元件14发送包括配对密钥、之前所生成的配对认证值和10设备12的地址的消息。安全元件14可进而根据在引导过程期间早期接收的配对认证值验证包含在消息中的配对认证值。如果发现匹配,所示出的安全元件14使用配对密钥和地址与10设备12建立安全通道。
[0018]图2示出在配对代理和安全元件之间建立受信通道的方法34。方法34可被实现为存储在使用电路技术(诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术或其任何组合)的固定功能逻辑硬件中的可配置逻辑(诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD))中的机器或计算机可读存储介质(诸如随机存取存储器(RAM)、只读存储器(R0M)、可编程ROM(PR0M)、闪存等等)中的防篡改逻辑和/或固件指令集。例如,可用一种或多种编程语言的任何组合编写用于执行方法34中所示的操作的计算机程序代码,包括面向对象的编程语言(诸如Java、Smalltalk、C++等等)以及常规程序编程语言(诸如“C”编程语言或类似的编程语言)。在一个示例中,在已经讨论的受信配对代理(诸如例如受信配对代理20(图1)和/或安全元件固件(诸如例如安全元件固件22(图1)))中实现该方法。
[0019]所示出的代理框36提供生成随机配对认证值(PAV),其中,PAV可在框38处保存在隐藏存储器空间中。如上所述,隐藏存储器空间可以与在SMM之外运行的代码隔离。框40可在系统的早期引导过程期间向计算系统的安全元件发送PAV。例如,PAV可结合POST、从S5/S4/S3状态到SO ACPI状态的转变等等发送到安全元件。此外,安全元件框42可接收PAV,其中,可在安全元件框44处确定是否在引导过程的预定阶段之前(例如,在执行第三方代码之前)接收到PAV。框44可考虑安全元件可以访问的B10S/UEFI中的各个标记和/或检查点。如果在预定阶段之前接收到PAV,可在安全元件框46处接受PAV。否则,可绕过接受PAV(例如,安全元件忽略PAV) ο如果不接受PAV,可实现其他响应,诸如例如节流请求、拒绝未来请求、重置计算系统和/或其他实现方式特定的行为。
[0020]图3示出在安全元件和10设备之间建立受信通道的方法48。方法48可被实现为存储在使用电路技术(诸如ASIC、CMOS或TTL技术、或其任意组合)的固定功能性逻辑硬件中的可配置逻辑(诸如例如PLA、FPGA、CPLD)中的机器或计算机可读存储介质(诸如例如RAM、ROM、固件、闪存等等)中的逻辑和/或固件指令集。例如,可用一种或多种编程语言的任何组合编写用于执行方法48中所示的操作的计算机程序代码,包括面向对象的编程语言(诸如Java、Smalltalk、C++等等)以及常规程序编程语言(诸如“(Γ编程语言或类似的编程语言)。
[0021]在一个示例中,在已经讨论的10设备(诸如例如10设备12(图1))、0S模块(诸如例如0S模块28(图1))、受信配对代理(诸如例如受信配对代理20(图1))和/或安全元件固件(诸如例如安全元件固件22(图1)))中实现方法48。10设备可经由USB、PC1-e(外围组件互连Express,例如PCI Express xl6图形150W-ATX规范1.0,PCI特殊兴