首页> 中国专利> 用于基于特权模式的安全输入机构的方法

用于基于特权模式的安全输入机构的方法

摘要

公开一种系统和方法,用于从耦合到计算系统的输入设备安全地接收数据。该系统包括配置成从输入设备、协处理器和主机计算机接收数据的接口,其中所述主机计算机包括输入处理程序和主机处理器。主机处理器配置成以正常模式和以特权模式执行代码。在主机计算机处于安全输入模式时,有数据来自接口时,主机处理器从正常模式切换到安全模式。输入处理程序从接口接收数据,并响应于安全模式中操作时接收到数据,将接收的数据发送到协处理器。

著录项

  • 公开/公告号CN106687985A

    专利类型发明专利

  • 公开/公告日2017-05-17

    原文格式PDF

  • 申请/专利权人 超威半导体公司;

    申请/专利号CN201580051135.3

  • 申请日2015-09-22

  • 分类号G06F21/74;G06F21/83;

  • 代理机构上海胜康律师事务所;

  • 代理人樊英如

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 02:10:49

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-09-21

    授权

    授权

  • 2017-10-27

    实质审查的生效 IPC(主分类):G06F21/74 申请日:20150922

    实质审查的生效

  • 2017-05-17

    公开

    公开

说明书

背景

技术领域

本发明涉及计算系统的领域,以及更确切地来说涉及通过键盘进行安全输入的实现。

相关技术描述

如个人计算机(PC)、膝上型计算机和移动设备(例如,智能电话和平板电脑)的计算系统广泛地应用于各种日常任务。许多任务依赖于用户输入密码或其他形式安全码字来执行任务以确认用户的身份。“身份窃贼”(即,试图冒充用户的其他人,往往是恶意的)可能通过将可记录用户键盘击键并通过因特网或其他通信信道向身份窃贼发送信息的软件程序安装到用户的计算机上来试图获取用户的密码。这些用于记录用户输入的软件程序也可以称为“键盘记录器”以及是一种形式的恶意软件(本文也称为“恶意软件”)。身份窃贼可将键盘记录器置于用户计算机上的一种途径是将恶意软件隐藏在用户可能安装的看似并无害处的软件应用中。

一旦键盘记录器被安装在计算机上,则每个击键可能都被捕获并发送给身份窃贼。计算机上安装的防毒软件或许能够发现键盘记录器并移除它。但是,为了发现键盘记录器,防毒软件必须能够识别它。因此,防毒程序可以在发现已使用一定时间量的已知键盘记录器上较良好。身份窃贼尚未发布的键盘记录器可能在用户发现它且防毒程序员能够对其防毒程序添加检测信息之前免疫于防毒软件至少一定时间段。在键盘记录器可能无法检测到的此时间段期间,浑然不觉安装了键盘记录器的任何用户可能容易使得其信息,具体为其密码被窃,从而将他们的敏感信息置于危险中。

已有各种技术被开发来阻止此类键盘记录的企图。一种此类方法是采用安全键盘。安全键盘是用于替代可以常用的默认键盘的一种硬件。安全键盘可以将从键盘发送到计算机的数据加密,并且仅在数据已通过键盘记录器能够读取数据的点之后才将该数据解密。在此类系统中,键盘记录器可能接收到可能看似不一致的无用数据的东西,这对于接收所记录数据的身份窃贼无用。但是,安全键盘可以昂贵且可能没有给定用户期望的功能特征。

期望有一种方法,其可以阻止键盘记录软件访问从非安全键盘发送的数据。本文提出用于计算系统中将数据从键盘安全地传输到主机处理器的系统和方法。

发明概述

公开了计算系统的各种实施方案。广义地说,设想一种系统和方法,其中该系统可以包括配置成从输入设备接收数据并在接收到数据时断言信号的接口。该系统还可以包括协处理器和主机计算机,其中所述主机计算机包括主机处理器和输入处理程序。所述输入处理程序可以配置成在所述主机处理器以正常操作模式操作时,响应于来自所述接口的第一信号从所述接口接收第一数据,以及将接收的第一数据存储在一个或多个存储器位置中。所述主机计算机可以响应于用户请求激活安全输入模式。所述主机处理器可以响应于来自所述接口的第二信号的断言从正常操作模式进入特权操作模式。所述输入处理程序然后可以响应于所述主机处理器进入所述特权操作模式从所述接口接收第二数据。所述输入处理程序可以生成与所接收的第二数据对应的码字并将所述接收的第二数据和所述码字发送到所述协处理器。所述协处理器可以验证所述接收的第二数据对应于所述码字。

在一个实施方案中,所述协处理器可以配置成创建会话密钥字并将所述会话密钥字与所述输入处理程序共享。在另一个实施方案中,所述主机处理器还可以配置成响应于中断的断言进入所述特权操作模式,其中所述中断的所述断言可以响应于来自所述接口的所述第二信号。在又一个实施方案中,所述中断可以比所述主机处理器的其他中断具有更高优先级。

在给定实施方案中,为了将从所述输入设备接收的数据和所述码字发送到所述协处理器,所述输入处理程序还可以配置成使用所述会话密钥字来将所述接收的数据加密。在另一个实施方案中,所述输入处理程序可以配置成响应于所述协处理器已验证所述接收的第二数据对应于所述码字的确定,将已验证的数据存储在一个或多个存储器位置中。所述输入处理程序还可以利用预先选择的值来替换所述接收的第二数据。在又一个实施方案中,所述主机处理器还可以配置成响应于所述输入处理程序存储所述验证的数据返回到所述正常操作模式。

附图简述

图1是计算系统的各种实施方案的图示。

图2是图示计算系统的实施方案的框图。

图3是表示支持与通用串行总线(USB)输入设备进行安全通信的计算系统的实施方案的框图。

图4是表示支持与个人系统/2(PS/2)输入设备进行安全通信的计算系统的实施方案的框图。

图5是表示支持与输入设备进行安全通信的计算系统的实施方案的框图。

图6是图示用于对来自输入设备的数据进行安全处理的方法的实施方案的流程图。

图7是图示支持与输入设备进行安全通信的计算系统的实施方案的框图。

图8是图示用于对来自输入设备的数据进行安全处理的方法的另一个实施方案的流程图。

图9是图示支持安全授权的计算系统的实施方案的框图。

图10是图示用于使用输入设备生成授权的方法的实施方案的流程图。

虽然本发明公开容易设想到各种修改和替代形式,但是其特定实施方案在附图中是通过举例来示出的,并且将在本文予以详细描述。但是,应该理解,这些附图以及对此的详细描述无意将本发明公开限制于所图示说明的特定形式,而相反,其旨在涵盖落在所附权利要求界定的本发明公开的精神和范围内的所有修改、等效物和替代。本文所使用的标题仅出于组织目的,且无意用来限制本文描述的范围。正如本申请中使用的,词汇“可以”是在允许的意义(即,意味着有可能)上来使用的,而非强制意义(即,意味着必须)上来使用的。相似地,词汇“包括(include)”、“包括(including)”和“包括(includes)”表示包括但不限于。

各种单元、电路或其他组件可以描述为“配置成”执行一个或多个任务。在此类语境中,“配置成”是普遍性表示“具有在操作期间执行一个或多个任务的电路”的结构的广义引述。因此,单元/电路/组件可以配置成执行该任务,即使是在该单元/电路/组件当前未导通时。一般,形成与“配置成”对应的结构的电路可以包括硬件电路。相似地,在描述中为了方便,可以将各种单元/电路/组件描述为执行一个或多个任务。此类描述应解释为包括短语“配置成”。引述配置成执行一个或多个任务的单元/电路/组件明确地无意援引35U.S.C.§112第六段对该单元/电路/组件的解释。更普遍性地,任何元件的引述明确地无意援引35U.S.C.§112第六段对该元件的解释,除非具体引述了语言“用于…的手段”或“用于...的步骤”。

实施方案详述

计算机系统可能易受恶意键盘记录软件(通称为“键盘记录器”)攻击,恶意键盘记录软件可能试图检测在键盘上或其他形式的人接口设备(HID)上输入的敏感信息,并将此信息转发到意图滥用该信息的人,即,“黑客”或“身份窃贼”。键盘记录器可能被无意中安装在计算机系统内,并且可能无法被也安装在该计算机系统中的防毒软件检测到。本文提出可以保护HID上输入的数据免疫于系统中安装的键盘记录器的系统和方法。

图1中图示计算系统的若干实施方案。系统101可以表示桌上型计算机,系统102可以表示膝上型计算机,以及系统103可以表示具有无线键盘的平板电脑或智能电话。这些计算系统中任何一个都可能易受键盘记录器攻击。

系统101可以包括一个或多个HID,如键盘、鼠标、麦克风、摄像头等。任何此类设备均能够从用户接收输入以及使用该数据来执行或发起敏感事务。敏感事务可以包括输入密码、执行可用于访问用户不希望公开的个人或公司数据的手势等。

系统102和系统103可以包括与系统101类似的HID,并且因此易受通过这些HID中的一种或多种的键盘记录器攻击。未图示的其他设备,如智能电视或视频游戏控制器,也可能易受键盘记录器或相似类型的恶意软件攻击。其中可安装软件、处理通过HID输入的敏感数据以及具有可被第三方查看的通信信道的任何计算系统均可能是身份窃贼的目标。

注意图1所示的计算机系统仅是示例。具有HID的其他类型的计算机系统是可能和设想的。

转到图2,图示了计算机系统的框图。系统200包括主机计算机220,主机计算机220包括耦合到存储器202的主机处理器201。主机计算机220经由通用串行总线(USB)204耦合到输入设备203。主机处理器201可以执行来自输入处理程序205和操作系统(OS)206的代码。主机处理器201还可以执行来自系统200的用户不知道的键盘记录器207的代码。

主机计算机220可以是系统200内的计算块,由主机处理器201和存储器202组成。在一些实施方案中,主机计算机可以作为系统200内的主板来实现。其他实施方案是可设想的,例如,主机计算机220对应于其中将主机处理器201和存储器202的功能包含在单个管芯上的芯片上系统(SoC)或主机计算机220对应于其中将主机处理器201和存储器202作为包含在单个封装中的单独管芯来实现的封装上系统(SiP)。主机计算机能够存储和运行如输入处理程序205、操作系统206和键盘记录器207的软件应用的代码指令。

在一些实施方案中,主机处理器201可以作为通用处理器来实现,其响应于与应用软件相关联的指令的执行来执行计算操作。在其他实施方案中,主机处理器201可以是中央处理单元(CPU),如微处理器或微控制器并且可以包括多个CPU核。在各种实施方案中,主机处理器201可以实现任何合适的指令集架构(ISA),例如x86、ARMTM、MIPS或PowerPCTM>

主机处理器201可以包括多种操作模式,包括正常模式和安全模式(本文也称为“特权模式”)。OS 206的一些或全部代码指令可以仅以正常操作模式执行,而输入处理程序205的代码指令可以兼以正常模式和安全模式来执行。因为如OS 206的操作系统可以管理其他应用的操作,所以通过OS 206启动的其他应用也可以归入仅以正常模式操作。在各种实施方案中,可以通过加电引导序列或特定类型的安全中断来进入安全操作模式。安全中断可以是主机处理器201内的最高优先级中断。作为最高优先级中断,安全模式中执行的代码不会被主机计算机220中运行的另一个应用如OS 206或键盘记录器207的代码所中断。在一些实施方案中,安全模式可以对应于x86架构中使用的系统管理模式(SMM)或ARM架构中使用的TrustZone安全模式。通过将OS 206的操作限制于正常模式,可以防止键盘记录器207的代码指令在安全模式中执行,因为键盘记录器207无法启动直到OS 206处于活动。安全模式可以具有附加的硬件限制,例如仅安全模式中可访问的受限存储器访问范围或外设。

存储器202可以包括一个或多个类型的存储器。例如,在各种实施方案中,存储器202可以包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、只读存储器(ROM)、NAND闪存存储器、NOR闪存存储器、铁电随机存取存储器(FeRAM)或任何其他合适的数据存储介质。存储器202可以包括一个或多个缓存存储器且主机处理器201可执行的代码指令来自其中。

输入设备203可以是键盘或用户在其中输入数据的其他类型的HID。合适HID的其他示例可以包括鼠标、跟踪板(也称为“触控板”)、麦克风、游戏杆、网络摄像头或跟踪球。在一些实施方案中,该输入设备可以是多于一个HID的组合。输入设备203可以是附接到经缆线连接到USB端口的USB 204的单独物理设备或具有经USB端口附接到USB 204的接收器的单独无线设备。在其他实施方案中,输入设备203可以是经内部USB信道附接到USB 204的相同物理设备的一部分(例如,膝上型计算机的键盘)。输入设备203可以响应于来自用户的输入,例如在键盘上进行按键或移动鼠标而使用支持的USB协议输出数字值。在这些示例中,按键可以促使对应值例如美国标准信息交换代码(ASCII)值发送到USB 204。在鼠标的情况中,可以由设备计算与水平方向和垂直方向上的变化对应的值以及与各种按压按钮所对应的值,并将其发送到USB 204。

USB 204可以是从输入设备203至主机处理器201的接口。USB 204可以实现任何合适标准的USB协议,如USB 1.1、USB 2.0或USB 3.0。USB 204可以是专用USB主机控制器。在其他实施方案中,可以是可配置为USB设备或主机,如通过一些移动设备所使用的USB On-The-Go(OTG)协议允许的USB设备或主机。USB 204可以作为与主机处理器201相同的芯片(本文也称为“管芯”)上的功能块并入,或可以是与主机处理器201相同的电路板上的单独封装中的单独管芯。在其他实施方案中,USB 204可以位于与主机201分开的电路板上且电耦合到主机处理器201。

USB 204可以使用实现的USB协议对输入设备203监视输入活动。响应于该活动,USB 204可以接收输入设备203发送的任何值,并向主机处理器201以信号通知接收到输入且准备将输入转发到主机处理器201。在主机处理器201内,可轮询来自USB 204的信号以确定它是否已被断言或可以连接到中断,以使信号状态的改变导致主机处理器201中的内部中断。

输入处理程序205的代码或程序指令可以驻留在存储器202中。在一些实施方案中,如果存储器202包括非易失性存储器,例如,闪存存储器或ROM,则输入处理程序205的代码指令可以永久性地驻留在存储器202中。在备选实施方案中,输入处理程序205的代码指令可以驻留在单独存储器中以便长期存储以及在系统引导过程期间被复制到存储器202中。输入处理程序205可以对应于设备驱动程序(即,用于与系统200中的硬件直接对接的程序指令)并且可以对USB 204监视输入设备203上的活动。在一些实施方案中,监视可以通过轮询来自USB 204的一个或多个信号来执行,或在其他实施方案中,监视可以包括对来自USB 204的一个或多个信号启用中断。在检测到来自USB 204的输入时,输入处理程序205可以从USB 204接收数据值,并将这些值存储在输入缓冲器中,输入缓冲器可以对应于存储器202中为存储来自输入设备203的用户输入保留的位置。在其他实施方案中,USB 204可以使用直接存储器存取模块(未示出)将数据值存储在存储器202中的输入缓冲器中。输入处理程序205然后可以向OS 206或主机处理器201中活动的另一个应用以信号通知接收到来自输入设备203的数据并且可以从输入缓冲器访问该数据。

OS 206可以包括来自存储器202由主机处理器201执行的代码或程序指令。OS 206可以提供活动应用与系统200的硬件之间的接口。OS 206还可以提供系统200上用于用户激活(或“启动”)各种程序的接口。在一些实施方案中,活动应用可以有权访问硬件驱动程序(用于操作系统200中的一个特定硬件的代码指令),而在其他实施方案中,可以将应用限于通过OS 206访问硬件。

键盘记录器207可以由用户无意间置于存储器202中的代码指令组成。键盘记录器207可以是由宣称为执行合法功能的应用置于存储器202中且因此可能被用户有意地安装的一种形式的恶意软件。将恶意软件隐藏在其他有用应用中的程序也称为特洛伊木马。在防毒软件在主机处理器201上是活动的情况下,则如果该防毒软件提供商先前未发现该键盘记录器207或如果键盘记录器207在系统200内尚未处于活动状态足够长时间以使防毒软件注意到可能与键盘记录恶意软件相关联的可疑活动,则键盘记录器207可能不会被检测到。

键盘记录器207可以监视OS 206或输入处理程序205以检测何时接收到输入并且可能试图在输入处理程序205向OS 206以信号通知已接收到新输入时读取输入缓冲器。键盘记录器207可以读取输入缓冲器并将读取的数据保存到另一个位置以进行临时或长期存储。在一些实施方案中,键盘记录器207可以经由内部连接或其他通信信道将存储的数据定期地发送到预定位置。在其他实施方案中,一旦收集到设定量的数据,则键盘记录器207可以发送读取的数据。数据的接收者,潜在的身份窃贼,可以使用该数据来确定敏感信息,如用户在使用系统200期间可能输入的用户名和密码。

注意输入处理程序205、OS 206和键盘记录器207可以由主机处理器201执行的代码指令的集合(即,程序、应用或驱动程序)组成。因此,在本发明公开中,当输入处理程序205、OS 206或键盘记录器207描述为执行任务时,理解为主机处理器201正在执行对应代码指令的执行所导致的所述任务。

图2所示的系统仅是出于演示性目的的示例,并且因此,本文仅公开演示概念的特征。其他实施方案可以包括与计算系统相关联的其他功能块,例如,显示器、音频外设和通信外设。

现在转到图3,图示了计算系统的另一个实施方案。系统300包含与图2中的系统200相似的多个组件,如包括主机处理器301和存储器302且经USB 304耦合到输入设备303的主机计算机320。系统300还可以包括耦合到主机计算机320的安全性模块309。存储器302可以包括来自输入处理程序305、OS 306和键盘记录器307的代码。存储器302还可以包括获信任的应用308和安全性模块驱动程序310。主机计算机320、主机处理器301、存储器302、输入设备303和USB 304以及与OS 306和键盘记录器307对应的代码指令可以呈现如相对于上文图2中的系统200所描述的行为。

安全性模块309可以支持对经输入处理程序305发送到主机处理器301的用户输入进行认证。安全性模块309可以由包括处理器、存储器、中断以及用于与系统300的其他部分通信的输入/输出端口的微控制器组成。各种实施方案是设想的,其中安全性模块309可以在与主机处理器301相同的管芯上实现,在与主机处理器301相同的封装中不同的管芯中实现或在与主机处理器301不同的封装中实现。安全性模块309可以包括散列和/或加密/解密功能。

除了对输入处理程序205描述的功能外,输入处理程序305还可以包括用于类似于安全性模块309的散列和/或加密/解密的功能。在一些实施方案中,输入处理程序305可以包括两组代码指令:可对应于对输入处理程序205描述的功能的标准输入处理程序以及包括用于散列和/或加密/解密的附加特征的安全输入处理程序。此处,输入处理程序305是指用于组合功能的两组代码指令。输入处理程序305可以使用安全性模块309来对数据进行认证。例如,输入处理程序305可以与安全性模块309共享会话密钥字。会话密钥字可以在系统300中首次安装输入处理程序时共享或在其他实施方案中,可以在系统引导时使用如Diffie-Hellman密钥交换的密钥共享协议来予以确定。在共享会话密钥之后的某个点处,输入处理程序305可以从USB 304接收数据并将接收的数据存储在输入缓冲器中。参考图2,输入处理程序205可以在此点处向OS 206以信号通知接收到数据。与之相比,输入处理程序305现在可以使用会话密钥字来计算该数据的散列,且然后将该数据连同该数据的散列发送到安全性模块309。安全性模块309可以接收数据和该数据的散列,使用共享的会话密钥字计算该数据的散列,并将计算的散列值与从输入处理程序接收的散列值比较。

注意对于散列数据或数据散列,在本文中是指通过函数处理可变量的数据以产生固定长度的结果(称为散列值)的过程。散列函数应该是确定的,即,相同次序呈示的相同数据应该总是产生相同的散列值。数据的次序或数据的一个或多个值的改变应该产生不同的散列值。散列函数可以使用密钥字或“散列密钥”,以使利用不同密钥散列处理的相同数据产生不同的散列值。因为散列值可以具有比输入数据的可能组合少的唯一值,所以数据输入的不同组合可能得到相同的散列值。例如,16位散列值将具有65536个唯一值,而4字节数据可以具有超过40亿个唯一组合。因此,散列值长度可以选为使得可能的重复结果最小同时不致于长到使得散列函数太复杂或太耗时。

返回该示例,如果两个散列值匹配,则可以验证该数据为来自输入设备303,以及安全性模块309然后可以将该数据转发到存储器302中的获信任的应用308。获信任的应用可以是用户安装、包含在软件安装时向安全性模块309注册的值的软件应用。用于注册的值可以是与获信任的软件提供商对应的唯一值,或可以是用户创建来标识系统300中的获信任的软件应用的码字。为了与获信任的应用共享数据,安全性模块309可以将数据存储在安全输入缓冲器中,其位置仅可以与获信任的应用共享。一旦将来自输入设备的已验证的数据与获信任的应用308共享,则输入处理程序可以返回以对USB 304监视来自输入设备303的下一用户输入而无需向OS 306以信号通知接收到数据。以信号通知可以是非必需的,因为数据直接被传递到获信任的应用308。在没有从输入处理程序305至OS 306的信号以观察的情况下,键盘记录器307可能没有从输入设备303接收到数据的指示,并且因此将数据传输到获信任的应用308而数据不会被键盘记录器307记录。

存储器302还可以包括用于安全性模块驱动程序310的代码指令。安全性模块驱动程序310可以包括用于与获信任的应用共享数据以及用于安全性模块309的适合操作所需的其他指令的安全输入缓冲器。可由安全性模块驱动程序执行的其他任务包括主机处理器301与安全性模块309之间的对接。

在先前描述的示例中,如果键盘记录器307已包括监视输入缓冲器的指令甚至无需观察从输入处理程序305至OS 306的信号,或如果键盘记录器能够观察输入处理程序305产生的活动,则键盘记录器307仍可以读取来自输入缓冲器的数据并记录数据以供向身份窃贼传送。为了避免此类情形,在输入处理程序305从USB 304接收任何数据以准备安全数据事务之前,输入处理程序305可以以信号通知安全性模块309。安全性模块309可以通过安全性模块驱动程序310向主机处理器301指示数据将从USB 304传送到输入处理程序305。主机处理器301可以对用于监视USB 304活动的中断线启用安全模式选项。当USB 305向主机处理器301断言信号以指示准备发送数据时,主机处理器301可以从正常操作模式切换到OS 306和从OS 306启动的应用无法执行代码的安全操作模式。在此安全模式中,仅一些可包括输入处理程序305的硬件驱动程序能够执行指令。在一些实施方案中,安全性模块驱动程序310还能够在安全模式中运行。可在OS 306内启动的键盘记录器307无法执行指令,并且因此无法在启用安全模式时读取输入缓冲器。输入处理程序305现在可以从USB 304接收数据,生成散列值并且将散列值和数据发送到安全性模块309以便进行验证并存储到其中与获信任的应用308共享的安全输入缓冲器中。一旦数据被存储在安全输入缓冲器中,则主机处理器可以切换回正常操作模式,其中获信任的应用现在可以从安全输入缓冲器检索该数据。

同样要注意,如输入处理程序305、OS 306、键盘记录器307、获信任的应用308和安全性模块驱动程序310的软件程序、应用和驱动程序可以各由主机处理器301执行的代码指令集合组成。因此,在由代码指令组成的任何所述块描述为执行任务或操作时,此处理解,主机处理器301可能响应于对应于所述块的代码指令的执行而正在执行所述任务或操作。

图3的系统仅是支持用于从输入设备安全接收数据的方法的计算系统的示例。其他实施方案可以包括与计算系统相关联的其他功能块,例如供电源或如DVD-ROM驱动器的可移动存储设备。

转到图4,示出支持用于从输入设备安全接收数据的方法的计算系统的另一个示例。系统400包括与图3中的系统300的特征相似的多个特征,并且因此图3的上文描述可以应用于图4中的对应块,除非另外注明。

PS/2 404可以执行与图3中的USB 304相似的任务。但是,PS/2 404可以提供用于输入设备403的不同协议。PS/2 404可以使用个人系统/2接口(PS/2),其可以使用与各种USB协议不同的硬件连接器以及不同的数据传输协议。输入设备403因此可以使用与PS/2标准兼容的协议向PS/2 404发送数据。不同于USB 304,PS/2 404甚至无法经DMA将数据写入到存储器402。在此类情况中,输入处理程序405可以从PS/2 404读取数据并将数据存储在存储器402中的输入缓冲器。尽管任何硬件或协议差异,输入处理程序405可以另外呈示如上相对于输入处理程序305描述的行为,以及PS/2兼容的输入设备可以与等效USB兼容的输入设备一样安全。

USB连接与PS/2连接之间的一个不同在于,PS/2连接仅针对输入设备,具体来说,键盘和鼠标或其他指向设备,如跟踪球,而USB连接支持不断增大范围的设备,包括前述输入设备,以及海量存储闪存驱动、摄像头、电话、平板电脑、玩具等。PS/2 404因此可以提供用于实现相对于图3描述的安全输入过程的较简单机构,因为PS/2 404上的活动可以限于输入设备403。相比之下,USB 304上的活动可以不限于输入设备303,以及可能需要依据对系统300的安全性要求的认识来管理与经USB 304的非输入设备相关的活动。此外,PS/2 404可以限于给定端口的单个设备,即点到点协议。另一方面,USB 304可以可扩充到给定端口上的多种类型的多个设备。

图4的系统仅是支持用于从输入设备安全接收数据的方法的计算系统的示例。出于演示的目的,对图4的系统进行了简化。其他实施方案可以包括与计算系统相关联的其他功能块。

接下来,图5示出支持用于从输入设备安全接收数据的方法的计算系统的另一个示例。系统500也包括与图3中的系统300的特征相似的多个特征,并且再次图3的上文描述可以应用于图5中的对应块,除非另外注明。

蓝牙(BT)发射器503可以被包括作为无线输入设备的一部分,例如无线键盘和/或鼠标。在一些实施方案中,BT发射器还可以如相对于图2中的输入设备203描述的被包括在其他类型的输入设备中。BT发射器503可以与蓝牙无线标准或蓝牙低能量(BTLE)标准兼容。在其他实施方案中,BT发射器可以与电气和电子工程师协会(IEEE)802.11(Wi-Fi)标准中的一种或多种兼容或支持专有无线协议。

BT发射器503可以经BT接收器504向主机处理器501发送数据。BT接收器504可以支持与BT发射器503相同的通信标准,并且除了BT发射器503使用的协议,还可以支持附加的无线协议。BT接收器504可以执行与图3中的USB 304相似的任务。尽管任何硬件或协议差异,输入处理程序505可以呈示如上相对于输入处理程序305描述的行为,以及BT接收器504可以提供与对来自耦合到BT发射器503的输入设备的数据进行安全处理相关的等效功能。BT接收器504因此可以向可耦合到中断信号的主机处理器501断言信号以指示数据将从BT接收器504传送到输入处理程序505。一旦输入处理程序505接收到数据,则对数据进行安全处理和验证的过程可以类似于图3描述的过程。

图5所示的系统仅是支持用于从无线输入设备安全接收数据的方法的计算系统的示例。出于演示的目的,对图5的系统进行了简化。其他实施方案可以包括与计算系统相关联的其他功能块。

现在转到图6,示出用于从输入设备向计算系统中的应用传送数据的方法的流程图。图6的方法可以应用于例如图3的系统300的系统。统一地参考图3和图6,该方法可以开始于框601。

输入设备,如图3的输入设备303,可以启动安全输入模式(框602)。在各种其他实施方案中,应用,如获信任的应用308,可以启动安全输入模式,或OS 306内运行的应用,例如web浏览器,可以接收从远程服务器加载的web页面进入安全输入模式的请求。作为安全输入模式的一部分,安全性处理器如安全性模块309或输入处理程序如输入处理程序305可以指令主机处理器301以将安全模式中断耦合到来自USB电路如USB 304的信号。在其他实施方案中,主机处理器301以外的逻辑电路可以将来自USB 304的信号耦合到安全模式中断。无论何时USB 304从输入设备303接收到数据,可以断言来自USB 304的信号。

安全输入模式可以在系统300引导时启动或可以由系统300的用户来启用和禁用。如果系统引导时启用安全输入模式,则可以使用安全方法来发送来自输入设备303的所有输入。在一些情况中,这可能导致系统的较低性能,因为对数据安全处理并确保数据到达获信任的目的地耗费额外处理时间。通过包括供用户启用和禁用安全输入模式的选项,当输入的数据不视为敏感时,可以提高系统性能。当需要输入敏感数据时,例如在网站上输入用户名和密码时,用户可以启动安全输入模式。安全输入模式可以使用从输入设备发送的预定值来启动。使用例如键盘,用户可以键入特定击键,例如<Ctrl>+<Alt>+<S>。备选地,使用鼠标可以让用户单击鼠标上的某个按钮同时作出特定手势,如以鼠标进行快速左右左运动。使用麦克风作为输入可以让用户说特定字串,例如“命令,进入,安全,模式”或其他词汇或数字组合。要使用的值可以由与安全输入模式相关联的软件来预先确定或该值能够由用户编程。

一旦安全输入模式被启动,则可以生成会话密钥以供输入处理程序305和安全性模块309使用(框603)。在其他实施方案中,会话密钥可以在系统引导时创建并且重复用于所有安全输入模式会话直到系统关机、用户注销、系统维持待机持续某个时间段或发生另一个合适的事件为止。会话密钥可以基于为输入处理程序305和安全性模块309安装代码指令时确定的值。在其他实施方案中,可以使用密钥交换协议如Diffie-Hellman密钥交换来生成会话密钥。在密钥交换协议中,可以通过多种方法将该会话密钥在输入处理程序305与安全性模块309之间共享。输入处理程序305和安全性模块309可以各具有安装输入处理程序305时创建的相同开始值(也通称为“种子值”)。在其他实施方案中,安全性模块309或输入处理程序305可以生成种子值并将其发送到其他块。一旦输入处理程序305和安全性模块309共享相同种子值,则每个块可以使用私用密钥加密种子值。输入处理程序305和安全性模块309可以各具有它们自己的私用密钥,其可以对于其他块是未知的。输入处理程序305和安全性模块309然后可以将它们各自加密的种子值发送到其他块,其中每个块然后可以将所接收、被其他块已加密的种子值加密。因此,输入处理程序305和安全性模块309现在可以共享两个块都加密且可用作会话密钥的公共加密种子值。共享会话密钥的各种其他方法是公知,并且可以用于替代公开的实施方案。

USB 304可以从输入设备303接收数据(框604)。在接收到数据时,USB 304可以向主机处理器301断言信号以指示准备向输入处理程序305发送数据。可以将断言的信号耦合到启用了安全模式选项的主机处理器301上的中断。

响应于USB 304断言信号,可以在主机处理器301中生成中断(框605)。该中断可以触发主机处理器301从正常操作模式切换到安全操作模式,例如,具有x86架构的处理器上的SMM模式或具有ARM架构的处理器上的TrustZone安全模式,或主机处理器301上可用的任何其他合适特权模式。切换到主机处理器的安全操作模式可以阻止与操作系统如OS 306相关联的指令与用于OS 306内启动的任何应用的指令一起执行。输入处理程序305和用于安全性模块309的软件驱动程序如安全性模块驱动程序310可以被允许在安全操作模式中执行指令。一旦进入安全操作模式,可以将数据从USB 304传递到输入处理程序305。

输入处理程序305可以根据从框603获得的会话密钥生成传送的数据的散列,并将所得到的散列值和数据发送到安全性模块309(框606)。任何合适的散列算法均可使用,例如,MD5、SHA-2或SHA-3。会话密钥可以用作散列算法的密钥。可以加密地或不加密地将数据发送到安全性模块309。如果该数据是加密发送的,则数据散列可以是可选的,因为成功解密数据可以充分证明数据始发于输入设备303。可以使用会话密钥来将数据加密和解密以及对数据进行散列处理。

然后根据数据的有效性作出确定(框607)。安全性模块309可以接收散列值和数据,且然后使用来自框603的接收的数据和会话密钥生成第二散列值。安全性模块309然后可以将第二散列值与从输入处理程序305接收的散列值比较。如果两个值是相同的,则可以认为该数据被验证为始发于输入设备303以及因此是有效的。如果两个散列值是不同的,则该数据可能并非始发于输入设备303以及可以认为是不获信任的。在一些实施方案中,该数据可以作为加密的数据连同散列值一起被接收。在此类实施方案中,在生成第二散列值之前,安全性模块309可以使用会话密钥解密数据。在其他实施方案中,可以仅接收加密的数据而不含对应的散列值。在此类情况中,可以预期解密的数据落在某些值内,以及如果任何解密的值在预期的值之外,则可以认为数据是不获信任的。在又一些实施方案中,解密的数据可以包括可用于确定数据的解密是否成功的奇偶校验位或一个或多个纠错码(ECC)位,在此情况中,该数据可以视为有效的。如果确定数据是有效的,则该方法可以转移到框609。否则,该方法可以移到框608,其中可以标记数据。

如果散列值不匹配或数据的解密失败,则该数据可以标记为未获信任(框608)。在一些实施方案中,防病毒应用可以存储和使用未获信任的数据来尝试确定未获信任的数据的来源。这可以帮助确定恶意软件例如键盘记录器307是否已安装在系统300中。未获信任的数据可以存储在“隔离区”位置,如果未获信任的数据包括在无意间执行的情况下可能具有恶意目的的代码指令,则隔离区位置限制代码执行。作为替代或附加,使用隔离的存储器进行存储,可以在存储之前加密未获信任的数据。主机处理器301可能不能执行加密的指令,从而使未获信任的数据的加密以相似方式安全免于无意地执行。安全性模块309可以以信号通知防病毒程序或可以通过OS 306以信号通知用户接收到未获信任的数据。

在其他实施方案中,安全性模块309可以不存储未获信任的数据。作为替代,安全性模块309可以删除未获信任的数据以帮助阻止具有潜在恶意目的的代码指令执行。一旦存储或删除数据,安全性模块309可以以信号通知主机处理器301以退出安全操作模式。在各种实施方案中,发往主机处理器301的信号可以来自安全性模块驱动程序310或来自输入处理程序305。该方法可以移到框610以便退出安全输入模式。

如果在框607中数据被认为是有效的,则可以将该有效数据发送到获信任的应用,如获信任的应用308(框609)。为了将有效数据传送到获信任的应用308,可以将数据存储在仅获信任的应用有权访问的安全输入缓冲器中。在其他实施方案中,可以使用预定的密钥字(不同于会话密钥)将有效数据加密,并存储在任何应用可以有权访问的标准输入缓冲器中。在此类情况中,仅获信任的应用可以让该预定密钥用于将数据解密。获信任的应用可以是指已向安全性模块309和/或安全性模块驱动程序310注册的应用。注册过程可以包括与该应用共享安全输入缓冲器的位置或与该应用共享预定的密钥字。一旦为获信任的应用308存储了数据,安全性模块309可以以信号通知主机处理器301以退出安全操作模式。在各种实施方案中,发往主机处理器301的信号可以来自安全性模块驱动程序310或来自输入处理程序305。

在数据标记为未获信任的或发送到获信任的应用之后,可以退出安全输入模式(框610)。安全输入模式可以由于处理框605中生成的中断完成而结束,如可以由从可促使主机处理器301完成中断处理的中断或相似指令的返回来指定。在此点处,主机处理器301可以返回正常操作模式。在一些实施方案中,还可以从安全模式中断解耦来自USB 304的信号。其他实施方案是可设想的,其中安全输入模式可以由于用户输入用于进入安全输入模式的相同值或由于来自获信任的应用708的请求而结束。在此类实施方案中,输入处理程序305或安全性模块309可以指令主机处理器301以退出安全操作模式和/或对耦合到USB 304的中断禁用安全模式选项。一旦安全输入结束以及主机处理器301切换到正常操作模式,则方法可以在框611中结束。

注意安全性模块309在本文实施方案中呈示为硬件模块。但是,在一些实施方案中,安全性模块309可以实现为软件模块。在此类实施方案中,安全性模块309可以仅以安装模式如SMM或TrustZone模式操作。在其他实施方案中,安全性模块309可操作的模式可以是访问限制可比基准安全模式更严苛的安全模式的子模式。例如,如SMM和TrustZone的模式可以对应于基准模式以及可以经由这些模式进入更高等级的安全模式以启用安全性模块309的操作。如果安全性模块309实现为软件模块,则在一些实施方案中,安全性模块驱动程序310可以是相同软件的一部分而非单独的实体。

同样地要注意,如输入处理程序305、OS 306、键盘记录器307、获信任的应用308和安全性模块驱动程序310的软件程序、应用和驱动程序可以由主机处理器301执行的一系列代码指令组成。因此,在由代码指令组成的任何所述块描述为执行任务或操作时,此处理解,主机处理器301响应于对应于所述块的代码指令的执行而正在执行所述任务或操作。

还要注意图6的流程图所示的方法仅是示例。在其他实施方案中,可以使用不同数量的操作,以及一个或多个操作可以并行地或以交替次序来执行。

移到图7,示出支持用于从输入设备安全接收数据的方法的计算系统的另一个示例。系统700包括与图3中的系统300的特征相似的多个特征,并且因此图3的上文描述可以应用于图7中的对应块,除非另外注明。

在图7的实施方案中,在根据图6的方法,生成安全中断以及主机计算机720切换到安全操作模式之后,输入处理程序705可以从USB 704接收数据并将数据存储在输入缓冲器中,然后将数据发送到安全性模块709上,类似于关于图3描述的。输入处理程序705可以生成接收的数据的散列并且将该数据的副本发送到安全性模块709。安全性模块709可以确认数据始发于输入设备703,如图6的方法中描述的,从而确定数据是有效的。安全性模块709可以使用如获信任的应用708的已注册应用可访问的安全输入缓冲器来将有效数据发送到获信任的应用708。

安全性模块709还可以将数据发送回输入处理程序705替代输入缓冲器中的有效数据,该数据与有效数据的大小相同,但是由可对应于特定ASCII字符的预定值的重复组成。例如,如果由例如“password123”的ASCII字符串组成的有效数据表示输入的密码,则安全性模块309可以回送例如“###########”的ACSII字符串,其中该密码的每个字符被替代以“#”字符。以预定值替代有效数据的此过程可以称为“修订”数据。一旦有效数据被存储在安全输入缓冲器以及修订的数据被存储在输入缓冲器,安全性模块309可以以信号通知主机处理器701以切换回正常操作模式。如果键盘记录器707尝试读取输入缓冲器,只会读取到修订的数据,例如“###########”。

注意,输入处理程序705、OS 706、键盘记录器707、获信任的应用708和安全性模块驱动程序710可以由主机处理器701执行的一系列代码指令组成。由本文描述为执行任务或操作的代码指令组成的任何所述块应该解释为主机处理器301响应于对应于所述块的代码指令的执行而执行所述任务或操作。

图7的系统仅是支持用于从输入设备安全接收数据的方法的计算系统的示例。出于演示的目的,对图7的系统进行了简化。其他实施方案可以包括与计算系统相关联的其他功能块。

现在转到图8,示出描绘用于修订计算系统中的数据的方法的实施方案的流程图。图8的方法可以应用于例如图7的系统700的系统。统一地参考图7和图8,该方法可以开始于框801。

如安全性模块709的安全性模块可以确认接收的数据是有效的(框802)。在如主机处理器701的处理器处于安全操作模式时,如输入处理程序705的输入处理程序可以接收数据并将数据存储在输入缓冲器中。安全性模块709可以从输入处理程序705接收数据。安全性模块709可以使用先前公开的方法中任一种确认数据是有效的,如将接收的散列值与安全性模块709生成的散列值比较。

安全性模块709可以将该有效数据发送到如安全性模块驱动程序710的安全性模块驱动程序(框803)。安全性模块709可以将有效数据存储在安全输入缓冲器中以供安全性模块驱动程序710读取。在一些实施方案中,可以使用安全性模块709和安全性模块驱动程序710知道的密钥字将所存储的有效数据加密。在其他实施方案中,可以不将有效数据加密。

安全性模块709还可以创建大小与该有效数据相似的修订的数据(框804)。修订的数据可以包括与有效数据中包括的相等数量的数据值。但是,可以利用预定值替代有效数据的值。例如,该有效数据可以对应于如“mypassword”的密码,以及修订的数据可以是“**********”或任何其他合适的字符的重复。在其他实施方案中,输入处理程序705可以直接修订有效数据,而非从安全性模块709接收修订的数据。修订的数据可以替换输入缓冲器中的有效数据。在存储了有效数据和修订的数据之后,主机处理器701可以切换到正常操作模式。

安全性模块驱动程序710可以将该有效数据发送到获信任的应用,如获信任的应用708(框805)。一旦主机处理器701返回到正常操作模式,安全性模块驱动程序710可以向获信任的应用708以信号通知准备读取数据。获信任的应用可以从安全输入缓冲器读取有效数据,以及如果它是加密的,则将其解密。否则,获信任的应用708可以按需使用有效数据。该方法可以结束于框807。

输入处理程序705可以向操作系统如OS 706以信号通知已接收到数据并准备读取(框806)。OS 706可以向等待来自输入处理程序705的输入的应用提示准备从输入缓冲器读取数据。虽然获信任的应用708可以促成将数据发送输入处理程序705的需要,但是其他应用可以监视输入处理程序705和/或OS 706以便知道数据何时位于输入缓冲器中。例如,如键盘记录器707的恶意软件可以等待数据位于输入缓冲器中的信号或可以定期地读取缓冲器以记录缓冲器的内容。因为仅修订的数据可以位于缓冲器中,所以仅无意义的数据会被收集到。该方法可以结束于框807。

注意图8所示的流程图所示的数据修订方法仅是示例,以及一些操作描述为顺序地执行而另一些操作是并行执行的。在其他实施方案中,不同次序的操作和不同数量的操作是可能的且可设想的。

现在移到图9,示出支持用于从输入设备接收电子签名的方法的计算系统的另一个示例。系统900包括与图3中的系统300的特征相似的多个特征,并且因此图3的上文描述可以应用于图9中的对应块,除非另外注明。

至此已公开用于通过输入设备安全输入数据的计算系统和方法。可以利用相似的计算系统来创建电子签名。电子签名可以是指计算机系统如系统900的用户通过输入设备903输入值以便对动作授权的过程。在此情况中,在输入设备903上输入的数据可能不重要。相反,确保用户负责地输入数据可能更重要。例如,用户可能选择要从网站下载的文件。网站的提供商可能希望确认真实用户在请求该文件以及该请求不是始发于用户未知情况下运行的恶意软件。网站可以要求输入电子签名,之后才下载该文件。

网站可以请求获信任的应用908,例如主机计算机920上运行的web浏览器向用户请求电子签名。通过显示器950,获信任的应用可以告知用户需要电子签名。可以使用输入设备903来输入电子签名。签名的数据可以是显示器950上显示的用户被请求重复的随机字。使用下文将详细描述的过程,安全性模块909可以验证该数据并将验证的数据提供到获信任的应用908。获信任的应用908然后可以响应网站以确认已输入有效的电子签名。网站然后可以开始下载文件。

注意,输入处理程序905、OS 906、键盘记录器907、获信任的应用908和安全性模块驱动程序910可以由主机处理器901执行的一系列代码指令组成。由本文描述为执行任务或操作的代码指令组成的任何所述块应该解释为主机处理器901响应于对应于所述块的代码指令的执行而执行所述任务或操作。

图9的系统仅是支持用于从输入设备接收电子签名的方法的计算系统的示例。在其他实施方案中,可以在该计算系统中包括一个或多个附加功能块。

现在转到图10,示出用于计算系统中生成电子签名的方法的流程图。该方法可以应用于图9的系统900。统一地参考图9和图10,该方法可以开始于框1001。

获信任的应用例如获信任的应用908可以向系统900的用户请求电子签名(框1002)。在其他实施方案中,另一个应用如web浏览器可以通过从远程服务器加载的web页面从该远程服务器接收对电子签名的请求。获信任的应用908可以通过显示屏950提示用户需要电子签名。提示可以包括用户需要重复的值,或可以请求用户已知的特定值,例如,密码。

在输入请求的值之前,用户可以通过在输入设备903上输入预定值来激活安全输入模式(框1003)。在其他实施方案中,获信任的应用908可以向主机计算机920发送要进入安全输入模式的请求。用户然后可以在输入设备903上输入所请求的值,该值然后可以经USB 904被发送到主机处理器901。USB 904可以向主机处理器901以信号通知准备将值发送到主机处理器901。响应于来自USB 904的信号,主机处理器901可以由于已启用安全输入模式而进入安全操作模式。安全操作模式可以限制主机处理器901执行与OS 906以及通过OS 906启动的应用例如获信任的应用908和键盘记录器907相关联的任何指令。与设备驱动程序如输入处理程序905和安全性模块驱动程序910相关的指令仍可以被执行。因此,输入处理程序905可以从USB 904接收所请求的值,将该值保存在输入缓冲器中,且然后根据所请求的数据和会话密钥字生成散列值。所请求的数据和散列值可以发送到安全性模块909。在一些实施方案中,可以将数据加密。

该方法然后可以取决于所请求的数据的有效性(框1004)。安全性模块909可以从输入处理程序905接收所请求的数据和散列值。安全性模块909可以使用输入处理程序905使用的相同会话密钥字来生成第二散列值。如果数据被加密,则安全性模块909可以将该数据解密,之后才生成第二散列值。如果两个散列值匹配,则在框1006中,该电子签名可以认为是有效的且方法可以继续。否则,如果两个散列值不匹配,则该签名可以认为是无效的。

如果是无效的,可以将该签名标记为未获信任的(框1005)。标记签名可以包括以另一个值替代输入缓冲器中的数据。还可以将替代值存储在安全输入缓冲器中。输入缓冲器中以及安全输入缓冲器中的值可能相同或可能不相同。一旦存储了新值,则可以以信号通知主机处理器901退出安全操作模式。安全输入模式也可以退出。安全性模块驱动程序910可以向获信任的应用908以信号通知准备从安全输入缓冲器读取数据。获信任的应用908可以从安全输入缓冲器读取值,并将其与预期的值比较并检测不匹配情况。在其他实施方案中,获信任的应用908可以将数据转发到另一个应用,进而可以由该另一个应用来检测不匹配情况。该方法可以结束于框1007。

如果在框1004中数据被认为是有效的,则可以将所请求的数据发送到获信任的应用908(框1006)。所请求的数据可以存储在安全输入缓冲器中。在各种实施方案中,可以将安全输入缓冲器中的数据加密,以及可以将输入缓冲器中的数据修订或可以不修订。一旦存储了所请求的数据,则可以以信号通知主机处理器901退出安全操作模式。安全输入模式也可以退出。安全性模块驱动程序910可以向获信任的应用908以信号通知准备从安全输入缓冲器读取数据。获信任的应用908可以从安全输入缓冲器读取值,并将其与预期的值比较并检测指示成功的电子签名的匹配情况。在其他实施方案中,获信任的应用908可以将数据转发到另一个应用,进而可以由该另一个应用来检测成功的电子签名。该方法可以结束于框1007。

图10所示的方法仅是旨在演示验证电子签名的过程的示例。在其他实施方案中,可以采用不同操作和不同次序的操作。

虽然上文描述了特定实施方案,但是这些实施方案无意限制本发明公开的范围,即使其中关于特定特征仅描述了一个实施方案。本发明公开中提供的特征的示例理应是说明性而非限制性的,除非另外阐明。上文描述理应涵盖从本发明公开获益的本领域技术人员应明白的此类替代、修改和等效物。

本发明公开的范围包括本文公开的特征中的任一特征或其组合(显性地或隐含地)或其任何推广,无论其是否缓解本文提出的任何或所有问题。因此,在这种对任何这些特征组合的申请(或要求其优先权的申请)过程中可以论证新权利要求。具体,参考所附权利要求,可以将从属权利要求中的特征与独立权利要求的特征进行组合,并且可以将各自独立权利要求中的特征以任何合适的方式来进行组合以及不仅处于所附权利要求枚举的特定组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号