具有键盘或相关设备的安全通信的制作方法

文档序号:6402823阅读:161来源:国知局
专利名称:具有键盘或相关设备的安全通信的制作方法
技术领域
本发明总体上涉及计算机安全领域。本发明尤其涉及在通信信道上的键盘的安全使用,其中该通信信道可能会遭到窃听或其他类型的篡改。
背景技术
键盘将用户输入数据传送到电子设备,例如计算机。当用户按下键盘上的键时,键盘生成代表被按的特定键的数据(例如,字母“e”的ASCII码),并且该数据由计算机中的元件,例如装置驱动器接收。随后该装置驱动器向在计算机上运行的正在接收输入的无论什么程序提供该数据(例如,通过将数据放入随便哪个运行中的应用程序的输入缓冲器)。
在使用键盘接收数据中出现的一个问题是当数据是敏感的或另外需要保密。例如,安全应用(或操作系统的安全服务)可能要求用户输入口令,该口令通常不应该随意泄漏给公众。然而,因为有若干机会窃听数据,所以由键盘通向接收数据的软件元件的路径是非安全的。例如,数据将经常在会遭到窥探的总线上传播,并将由可能遭到篡改的装置驱动器进行处理(或者该操作系统将允许由非安全装置驱动器来代替,该非安全装置驱动器存储和泄漏由驱动器处理的信息)。换句话说,在保密数据由键盘到其最终目的地的路线上,有若干机会观测或篡改该保密数据。
通常,对由非安全信道连接的两个元件之间传送的数据进行加密是可能的。然而,由于众多因素,许多加密技术不容易适用于键盘环境,例如密钥管理问题、重放攻击的可能性、以及如果密文的适度尺寸的样值可被窃听、那么通过键盘产生的相对小范围的数据将会使得在键盘通信上形成普通密码相对易于破解的事实。
从上述观点可看出,需要一种具有键盘的促进安全通信的技术。
发明概述本发明提供了一种通过非安全通信信道在两元件之间进行安全通信的技术。该技术使用一种尤其适合键盘的加密方案,,而且在对键盘应用标准加密方案的过程中将存在地址问题。
根据本发明所述的键盘存储密钥和常量,该常量用于加密方案的初始化。元件(例如在计算机运行的应用程序)存储与存储在键盘中的密钥和常量相同的密钥和常量。为了启动元件和键盘之间的安全对话,元件和键盘分别产生一个现时(nonce),接着互相交换现时,以便键盘和元件均拥有两个现时。键盘和元件接着计算两个初始值,所述的每个初始值都基于两个现时,按键和常量的值。例如,第一初始值可以通过使用CBC-3DESMAC算法创建,此处CBC-3DESMAC使用存储的常量作为其初始链接值并将所述的密钥应用到消息中,该消息基于两个现时创建。(CBC-3DESMAC是指依照具有加密块链的数据加密标准(DES)算法,应用三倍加密,并使用最终密文块创建信息证实代码(MAC))。优选地,第二初始值通过反转第一初始值中的位来创建(例如,在第一初始值和数字0xffffffffffffffff之间执行“exclusive or”操作)。因为键盘和元件以同样方式计算第一和第二初始值,所以它们拥有相同的两个初始值。
在可选的优选实施例中,键盘和元件配备有两个常量,且第一和第二初始值可以通过将CBC-3DESMAC应用到基于两个现时的消息中、使用第一常数创建第一初始值和使用第二常数创建第二初始值来创建。
第一和第二初始值创建后,键盘准备传送加密数据,将接收该数据的元件准备解密并检验该数据。当数据键入键盘,键盘对基于第一初始值和密钥的数据进行加密。优选地,键盘通过上面提到的使用CBC-3DES(三倍-DES具有密码块链接)的密钥和用于填装密码块链的第一初始值对数据进行加密。键盘同样为优选地为使用CBC-3DESMAC的数据的每个单元创建MAC,此处该CBC-3DESMAC应用上面提到的密钥,并使用第二初始值填装密码块链。优选地,由于这种技术允许出现相同的键击(例如,字母“e”),依赖于先于他自己的键击,表现为不同的密文,因此每次键击在单独的加密块中加密,且整个数据流在构成密码块链的对话期间在键盘上产生。
一旦在接收元件中接收了加密数据和MAC(s),接收元件就使用上面提到的密钥和第一、第二初始值来解密并验证该接收到的数据。
下面描述本发明的其他特征。


前面的概述和随后的优选实施例的详细描述一样,当结合附图进行阅读时将变得更好理解。为达到说明本发明的目的,本发明的示范性构造展示在附图中;然而,本发明并不限于所公开的特殊方法和手段。附图中图1是示范性计算环境的框图,本发明各方面可以在该框图中执行;图2是第一示范性环境的框图,在该框图中键盘和元件之间的通信在非安全信道上发生;图3是第二示范性环境的框图,在该框图中键盘和元件之间的通信在非安全信道上发生;图4是已为安全通信设置的键盘和元件的框图,其依据本发明各方面交换现时;图5是参与键盘和元件之间安全通信对话的过程的流程图;图6是第一示范性环境的框图,在该框图中键盘和元件可以分配为参与依照本发明各方面的安全通信;发明详述示范性计算配置图1示出了示范性计算环境,在该环境中执行本发明的各方面。计算系统环境100只是一个适合的计算环境的示例,而且它并不打算对本发明的使用或功能的范围作任何限制的建议。计算环境100也不应解释为对示范性操作环境100所示出元件的任何单个或其结合具有任何依赖性或需求。
本发明对于多个其他通用或专用计算系统环境或配置是可操作的。虽然众所周知的计算系统、环境、和/或配置的实例适合于在本发明包括的范围内使用,但是并不局限于个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程用户电子设备、网络PC、迷你计算机、大型计算机、嵌入系统、包含任何上述系统或设备的分布式计算机环境等等。
本发明通常可以描述为计算机可执行指令上下文,例如计算机执行的程序模块。通常,程序模块包括例行程序、程序、对象、元件、数据结构等,其完成特殊的任务或者实现特殊的抽象数据类型。本发明也在分布式计算环境内实行,该分布式计算环境中通过远程处理设备完成任务,该远程处理设备通过通信网络或其他数据传输媒质连接。在分布式计算环境中,程序模块和其他数据可以在包含存储器存储装置的本地和远程计算机存储媒体中定位。
参照图1,执行本发明的示范性系统包括以计算机110的形式存在的通用计算设备。计算机110的元件包括,但不限定于处理单元120、系统存储器130、系统总线121,系统总线121将包括系统存储器在内的多种系统元件与处理单元120连在一起。系统总线121可以是总线结构若干类型的任何一种,该总线结构包括存储器总线或存储器控制器、外围总线、和使用多种总线体系结构的任何一种的局域总线。作为示例,担不是限定,这样的体系结构包括工业标准体系结构(ISA)总线、微新到体系结构(MCA)总线、增强的ISA(EISA)总线、视频电子标准协会(VESA)局域总线、周边元件扩展接口(PCI)总线(也叫Mezzanine总线)。系统总线121也可以实现为通信设备中的点到点连接、开关结构等等。
计算机110典型地包括多种计算机可读媒体。计算机可读媒体可以是任何可以通过计算机110进行访问的媒体,该媒体包括易失性和非易失性媒体、可删除和非可删除媒体。作为示例,但不是限定,计算机可读媒体可以包含计算机存储媒体和通信媒体。计算机存储媒体包括易失性和非易失性、可删除和非可删除媒体,该媒体在任何用于信息存储的方法或技术中使用,所述信息指例如计算机可读指令、数据结构、程序模块或其他数据。计算机存储媒体包括,但不限定为RAM、ROM、EEPROM、闪存和其他存储技术、CDROM、数字化视频光盘DVD或其他光学存储设备、盒式磁带、磁带、磁盘存储器或其他磁存储装置、或任何其他可以用于存储期望信息并可通过计算机110进行访问的媒体。通信媒体典型地体现为计算机可读指令、数据结构、程序模块或其他在已调制数字信号中的数据,该已调制数字信号指例如载波或其他传输机制,并包括任何信息传送媒体。术语“已调制数据信号(modulated data signal)”意指一种信号,该信号具有一个或更多特征集,或者以信号编码信息的方式改变。作为示例,但不是限定,通信媒体号括有线媒体,例如有线网或直接线连接,还包括无线媒体,例如声学的、RF、红外线和其他无线媒体。上述的任何组合也应包括在计算机可读媒体的范围内。
系统存储器130包括计算机存储媒体,该计算机存储媒体的形式是易失性或非易失性存储器,例如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入输出系统133(BIOS)包含典型地存储在ROM131中的基本例程,该基本例程例如启动期间帮助在计算机110内的组件之间传送信息。RAM132典型地包含数据和/或程序模块,该数据和/或程序模块通过处理单元120直接访问和/或即时操作。作为示例,但不是限定,图1示出了操作系统134、应用程序135、其他程序模块136、和程序数据137。
计算机110也可以包括其他可删除/非可删除、易失性/非易失性计算机存储媒体。仅作为示例,图1示出了从非可删除、非易失性磁性媒体读取或写入的硬盘驱动器140,从可删除、非易失性磁盘152读取或写入的磁盘驱动器151,和从可删除、非易失性光盘156,例如CD ROM或其他光学媒体,读取或写入的光盘驱动器155。其他可以用于示范性操作环境的可删除/非可删除、易失性/非易失性计算机存储媒体包括,但不限定于盒式磁带机、闪存卡、数字通用磁盘、数字录像带、固态RAM、固态ROM等。硬盘接口141典型地通过非可删除存储器接口连接到系统总线121,该非可删除存储器接口指例如接口140,并且磁盘驱动器151和光盘驱动器155典型地通过可删除存储器接口连接到系统总线121,该可删除存储接口指例如接口150。
上面讨论并在图1中示出的驱动器和他们的相关计算机存储媒体提供了计算机可读指令、数据指令、程序模块和其他计算机110数据的存储。例如在图1中,硬盘驱动器141可举例说明为存储操作系统144、应用程序145、其他程序模块146、和程序数据147。注意,这些元件可以与操作系统134、应用程序135、其他程序模块136、和程序数据137相同或是不同。这里给出的操作系统144、应用程序145、其他程序模块146、和程序数据147具有不同的个数,以举例说明,至少,它们是不同副本。用户可以通过输入设备向计算机20输入命令和信息,输入设备指例如键盘162和点击装置161,点击装置通常指鼠标、轨迹球或触摸板。其他输入设备(没有示出)可以包括扩音器、操纵杆、游戏板、圆盘式卫星电视天线、扫描仪等。虽然这些及其他输入设备通常通过耦联到系统总线的用户输入接口160与处理单元120相连,,但是这些及其他输入设备也可以通过其他接口和总线结构与处理单元120相连接,例如并行端口、游戏端口或通用串行总线(USB)。监测器191或显示装置的其他类型经由接口也连接到系统总线121,该接口指例如视频接口190。除监测器之外,计算机还包括其他外围输出设备,例如扬声器197和打印机196,它们可以通过输出外围接口190连接。
计算机110通过使用逻辑连接到一个或更多远程计算机,例如远程计算机180,可以在网络环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、端对端设备或其他普通网络节点,它典型地包括上面所论及的计算机110的多数或全部组件,虽然在图1中仅示出了存储器存储设备181。虽然图1中描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是还能包括其他网络。这些网络环境在办公室、企业外部计算机网络、企业内部互联网和因特网中是常见的。
当计算机110在LAN网络环境中使用时,它通过网络接口或适配器170连接到LAN171。当计算机110用于WAN网络环境时,它典型地包括调制解调器172或者其他的想要在WAN173上建立通信的装置,例如因特网。内置或者外置的调制解调器172,可以经由用户输入接口160或者其他适当的机制连接到系统总线121。在网络环境中,相对于计算机110或者它的部分所描述的程序模块,可以存储在远程存储器存储设备中。作为示例,但并不是限定,图1举例说明了作为驻留在存储器设备181上的远程应用程序185。将会理解到,所示出的网络连接是说明性的,并且可以使用在计算机之间创建通信连接的其他手段。
键盘和元件之间通信的安全本发明提出了怎样可以使键盘用于与元件安全通信的问题,该元件需要键盘从输入。图2示出了这样的通信的示范性方案。在图2中,键盘162与元件204通信。元件204可以是任何类型的元件——例如计算机上执行的程序、一块硬件等。由键盘162到元件202的通信由通信信道通过,该通信信道至少包括一些非安全部分204。即,当表示键击的数据在由键盘162到元件202的路线上通过一些信道时,可能有一些机会被第三方窃听或篡改该数据。如果例如键入键盘162的信息是不应当向公众泄漏的秘密口令那么,这种窃听或篡改可能称为一个问题。
图3示出了特殊方案,在该方案中期望键盘和元件之间的安全通信。在图3中,键盘162用于向软件提供输入,该软件在计算机110中运行。在图3的示例中,键盘162是适合使用通用串行总线(USB)302的键盘。(为简洁起见,这样的键盘参照USB键盘。)键盘162接收键击,将那些键击所表示的字节放置到USB302,此处由USB驱动器304整理该字节。接下来驱动器304将那些字节传送到它们的最终目的地,该最终目的在图3的示例中是软件306。软件306是元件202的实例(图2所示)。
图3的示例中有两个操作系统134(1)和134(2)在计算机110运行。操作系统134(1)是典型的操作系统,例如MICROSOFTWINDOWSXP,Unix,Linux、Solaris等。操作系统134(2)是“高保证”操作系统,它用于存放应用程序。例如,操作系统134(2)可以与“掩蔽的”存储器相连接,该存储器在操作系统134(2)外是不可存取的,而且操作系统134(2)可以在该掩蔽的存储器中存储秘密信息(例如,加密密钥、口令等),因此只有一定的特殊应用程序可以读取该秘密信息,该应用程序允许在操作系统134(2)下执行。操作系统134(2)是“高保证”的,意味着公众被授予非常高级别的保证,可以正确执行它的功能——即,如果保护秘密信息是操作系统134(2)的一个预期的功能,那么公众被授予非常高级别的保证,操作系统134(2)将不会泄漏秘密信息。能保护秘密通信的部分,可以包括能够接收键入的秘密(例如口令)而不将这些秘密泄漏到外界。由于驱动器304在操作系统134(1)的控制下(且操作系统134(1)可能允许电脑黑客直接由USB302读取信息,或者允许电脑黑客以存储和暴露该秘密信息的邪恶驱动器来做替代),因此操作系统134(2)不能信任驱动器304去操控这些秘密信息。因此,操作系统134(2)需要一种途径,在不为发生在操作系统134(1)中的行动会泄漏秘密信息而担忧的情况下,通过操作系统134(1)从键盘162接收信息。
应当理解,尽管图3的实例示出键盘162通过通用串行总线USB302与计算机110进行通信,但是可以应用上述方案而不管键盘162与计算机110进行通信的确切方法,因而本发明不限于USB键盘。
图4示出了键盘162与元件202怎样配置,以参与通过非安全信道的安全通信。键盘162和元件202每个都存储加密密钥402的副本。键盘162和元件202还适宜存储常量404,该常量用作特殊首选加密技术的初始值,下面将更加详细的描述。在更优选的实施例中,键盘162和元件202可存储(除了密钥外)两个常量而不是一个;这两个常量可以象下面描述的一样用于加密技术。例如,键盘162可以包含台上非易失性半导体,该半导体存储密钥402和常量404,也可以具有一个端口,该端口接收存储有密钥402和元件404的可删除存储媒体。在元件202是软件元件的情况下,密钥402和元件404可以存储在元件202的数据区。然而应当理解的是,本发明不限于存储密钥402和404的任何特殊方式。
在键盘162和元件202之间的安全通信的开始,键盘162和元件202可以产生和交换现时。这就是说,键盘162产生现时412并将现时412发送到元件202。元件202产生现时414并将现时414发送到键盘162。作为本领域公知的,现时是一段数据,该数据用于加密应用程序——经常验证加密实体,或者起动加密对话,该对话有不易复制的组件,加密可以依靠该组件制造。现时412和414可用于创建在键盘162和元件202之间传送的数据的验证和加密的初始值,这一点将在下面更加详细的描述。
由键盘到元件安全发送数据的过程图5示出了一个过程,通过该过程键盘162和元件202可以参加对话,其中元件202从键盘162安全接收数据。图5的过程为加密(其保护传送数据反窃听)和验证(其保护传送数据反篡改)作准备。但是应当理解的是,依靠传输的安全需求,可以单独使用加密或验证。例如,如果可以容许修改数据而不允许窃听,那么可以单独使用加密。相反的,如果可以容许窃听数据而不允许修改,那么可以单独使用验证。
起初,键盘162和元件202交换现时502。例如,象上面描述的图4中的连接一样,键盘162可产生现时412,并将其发送到元件202,元件202可产生现时414,并将其发送到键盘162。产生现时的技术在本领域中是公知的,且这里不详细描述那些技术。作为一些实例,现时412和414可以基于随机数、存储器的一些区域的内容、时间、温度、月相等,或者可能经常改变并且有充足范围的任何其它因素产生,键盘162或元件202未必将会生成两次相同的现时。
现时412和414交换502后,键盘162和元件202每个都拥有两个现时。接下来键盘162和元件202使用针对计算504的普通的、与公式一致的两个初始值——IV-c和IV-m—作为现时和密钥402的函数。即,如果K=key402,N1=nonce412,且N2=once414,则IV_c=f(K,N1,N2),且IV_m=g(K,N1,N2)。
函数f和g可以是任何函数。在优选的实施例中,f(K,N1,N2)=CBC-3DESMACK(const_IV,N1|N2);且g(K,N1,N2)=f(K,N1,N2)xor 0xffffffffffffffff,其中const_IV等于常量404(图4所示)。在更优选的实施例中,键盘和组件共享两个常量(例如const_IV_1和const_IV_2),函数f和g可以优选地计算如下f(K,N1,N2)=CBC-3DESMACK(const_IV_1,N1|N2);且g(K,N1,N2)=CBC-3DESMACK(const_IV_2,N1|N2),
(运算符“|”意为级连,所以N1|N2是由N1和N2并置所产生的值。“xor”是逐位“异或(exclusive or)”操作,所以A xor B的结果值如此得来当A或者B中一个而不是两者的任何一位是“1”则设置为“1”且把其他位设置为零。)CBC-3DESMACK(const_IV,N1|N2)是加密函数,它的含义在本领域是公知的,并在下面更详细的描述。
IV_c和IV_m计算完后,可以开始键盘162和元件202之间的通信。键盘162接收键击——即通过操作者按下一个键(或者特定键的组合,例如<SHIFT>和“A”或者<CTRL>和“A”)(步骤506)。接下来键盘加密508键击;加密优选地基于密钥402和IV_c。在优选的实施例中,键击使用CBC-3DES加密,用密钥402作为密钥且IV_c作为初始值。CBC-3DES本领域公知的加密算法,并在下面更详细的描述。另外,键盘162为键击计算510消息验证码(MAC),优选地基于密钥402和IV_m。在优选的实施例中,消息验证码使用CBC-3DESMAC创建,用密钥402作为密钥且IV_m作为初始值。作为上面的注解,CBC-3DESMAC是本领域公知的并在下面更详细的描述。
键盘创建加密键击数据和MAC后,元件202从键盘162接收512加密键击数据和MAC(步骤512)。接下来元件202使用密钥402和IV_c解密514所述的数据,并使用密钥402和IV_m核对该数据(步骤514)。过程然后回到步骤506,以在键盘接收下一个输入。
加密函数CBC-3DES和CBC-3DESMACCBC-3DES是加密函数,它将数据加密标准(DES)和密码块链(CBC)相结合。“3DES”意为将DES加密算法三次应用到给出数据块(“triple-DES”)。DES以公知的方式通过将密钥应用到数据来加密数据。DES通过将该消息分成小块、并加密该分开的块来加密长消息。(当使用“triple-DES”时,将DES算法应用到每个块三次,以生成该块的密文。)DES(和三倍-DES)可以通过仅使用一个密钥来加密数据的每个块;然而,当使用密码块链时,一个块的加密不止基于密钥,还基于密文,该密文通过加密最末块生成。因而,加密一个给出的块基于两个输入密钥和密文,该密文由加密在前的块产生。因为要加密的数据的第一块没有在前的块,所以密码块链过程必须以“初始值”为初始即,基于密码和一些初始值加密数据的第一块。虽然初始值不用于随后的块的加密,但是初始值可以直接影响那些块怎样加密(因为第一块的密文基于初始值、第二块的密文基于第一块的密文、等等)。
在前讨论的视图中,短语“CBC-3DESK(IV,message)”意为使用三倍-DES和密码块链的密码K加密“消息”,其中IV是密码块链的初始值。
CBC-3DESMAC是使用CBC-3DES生成消息验证码(MAC)的途径。尤其是短语CBC-3DESK(IV,message)意为“消息”通过使用三倍-DES和密码块链的密钥K加密,且使用IV作为密码块链的初始值。然而,因为CBC-3DESMAC的目标仅是为了生成适合于消息的MAC而不是适合于消息的复合密文,所以仅存储密文的最末块,且可以删除密文的剩余块。密文的最末块可以用作MAC,因为——即使给出常量密码和常量IV——不同消息是不可能生成相同的最终块的(或者,更精确地,如果每个块能代表2n个不同值,任意两个消息会有相同的最末块只有2n之一个机会)。
应当指出的是,CBC-3DES的特别选择,也是它使用的途径,对加密键盘通信特别的有利。因为要加密的消息域很小(例如,大约128个不同的ASCII字符),密码块链在阻止密码破解中特别有用。如果使用直加密(无链),那么,在给出的对话中,每次键入的每个字符都加密为相同的密文——例如,键入“e”总是会生成相同的密文。通过制造有根据的推测(例如,通过使用英语中“e”是最通常出现字母这一事实),可以更容易的破解该密文。通过确保相同的数据可以表示为不同的密文,链接所有在对话中的输入会使密文更难破解,该密文依赖于它在输入流中的位置(例如,“e”不能总是生成相同密文)。另外,通过创建基于现时的新初始值改变每个对话的加密,阻止观测者检测使用模型,该使用模型可用于危及安全性(例如,如果在每个对话中键入的第一正文都是口令,那么观测者会捕获口令的密文并建立一个重放攻击。)。此外,DES使用的密码块的尺寸是特别适合的,因为DES以8字节块操作,且块中的多数键盘协议传输数据可适合这个尺寸(例如,USB标准也从事于8字节块,因而每个USB块都适合DES块而没有浪费的空间。)然而,应当理解的是,可以使用任何其他块密码,且同CBC相似的链接概念可以应用于这样的块密码。
需要进一步指出的是,由于相同的原因,这里所述的加密方案尤其适合于键盘,该加密方案也很适合某些其他类型的输入装置,例如鼠标(或其他指点装置)。这些输入装置分享与键盘相同的许多特征,例如小符号集,和受限制的执行复杂的加密算法的能力。
加密数据的键盘的示范性使用图6示出了示范性环境,在该环境中,执行加密的键盘可以与需要安全通信的元件一起使用。在图6的实施例中,制造商602制造多个键盘162(1),162(2),162(3),…,162(n),并将这些键盘分配给公众使用。每个键盘162(1),162(2),162(3),…,162(n)都结合密钥402和常量404(图4所示)(或结合一些装置,通过这些装置可以外部访问密钥402和常量404,例如通过适合于可删除半导体存储端口的装置)。制造商604制造多个元件202(1),202(2),…,202(m),这些元件受益于同键盘的安全通信。每个元件202(1),202(2),…,202(m)都结合密钥402和常量404(或者以某种可以接收密钥和常量的方式)。现在元件202(1),202(2),…,202(m)通过上面描述的技术,可以接收来自键盘162(1),162(2),162(3),…,162(n)的输入。
因为制造商602可以与制造商604有先前存在的关系,所以两个制造商对密钥402和元件404达成一致意见,该密钥和元件应当结合,以进行安全通信。在一个实施例中,制造商602和604是相同的实体。在其他实施例中,制造商604是元件202(1),202(2),…,202(m)的制造商,他愿意那些元件能接收来自安全键盘的数据,且制造商602是键盘的制造商,制造商604在制造适合于与元件202(1),202(2),…,202(m)进行安全通信的键盘、以及保存密钥402和/或常量404方面,被认为是充分可信赖的。
应当指出的是,提供前述的实施例仅仅为了解释的目的,而决不应解释为本发明的限制。应当理解的是,尽管本发明参照多个实施例进行描述,但这里所使用的措辞是描述和说明的措辞,而不是限制的措辞。进一步说,虽然这里参照特殊的装置、材料和实施例描述本发明,但是本发明不想限于这里公开的细目;相反的,本发明扩展到所有功能性等效的结构、方法和用途,例如在附加的权利要求的范围之内的。本领域的熟练技术人员,受益于本说明书的教导,可以实现很多改变,且该改变在特征上不脱离本发明的精神和范围。
权利要求
1.一种用键盘通信的方法,包括在元件接收来自键盘的多个数据,该多个数据三倍-DES和密码块链进行加密,该密码块链使用密钥和第一初始值,所述密钥和所述初始值对元件和键盘都是可知的;基于所述初始值和所述密钥加密该多个数据。
2.如权利要求1所述的方法,还包括元件接收来自键盘的与多个数据一致的多个消息验证码,所述消息验证码用三倍-DES和密码块链创建,该密码块链使用密钥和与所述第一初始值不同的第二初始值,所述第二初始值对元件和键盘是可知的;通过使用多个消息验证码检验该多个数据。
3.如权利要求2所述的方法,还包括从键盘接收第一现时;向键盘发送第二现时;及通过应用三倍-DES和密码块链创建第一初始值和第二初始值,以合并第一现时和第二现时,使用为键盘和元件都所知的密钥和第三初始值。
4.如权利要求2所述的方法,还包括从键盘接收第一现时;向键盘发送第二现时;通过应用三倍-DES和密码块链创建第一初始值,以合并第一现时和第二现时,使用为键盘和元件都所知的密钥和第三初始值;及通过应用三倍-DES和密码块链创建第二初始值,以合并第一现时和第二现时,使用为键盘和元件都所知的密钥和第四初始值。
5.如权利要求1所述的方法,其中多个数据通过信道接收,元件不能信任该信道的特性完整性。
6.如权利要求5所述的方法,其中元件包括第一操作系统,该第一操作系统与第二操作系统共同在计算装置上执行,第一操作系统在至少一些方面不信任第二操作系统的特性,键盘与第一操作系统通过由第二操作系统控制的驱动器通信。
7.如权利要求1所述的方法,其中键盘包括USB键盘。
8.如权利要求7所述的方法,其中所述三倍-DES和密码块链在具有预定尺寸的块中加密数据,且其中键盘在所述预定尺寸的块中与数据进行通信。
9.如权利要求1所述的方法,其中多个数据的每一个都基于在键盘接收的单独的键击产生。
10.如权利要求1所述的方法,还包括从键盘接收第一现时;向键盘发送第二现时;及通过应用三倍-DES和密码块链创建第一初始值和第二初始值,以合并第一现时和第二现时,使用为键盘和元件都所知的密钥和第二初始值。
11.一种用计算机可执行指令进行编码的计算机可读媒体,该计算机可执行指令用于执行在元件中从键盘安全地接收输入的方法,该方法包括在元件接收来自键盘的多个已加密键击,该已加密键击通过加密在具有三倍-DES和密码块链的键盘处所接收的输入键击在键盘处创建,该密码块链使用密钥和第一初始值,该密钥和第一初始值对键盘和元件都是可用的;及在元件使用密钥和第一初始值解密多个已加密键击。
12.如权利要求11所述的计算机可读媒体,其中元件包括第一操作系统,该第一操作系统与第二操作系统共同在计算装置上执行,第一操作系统在至少一些方面不信任第二操作系统的特性,键盘与第一操作系统通过由第二操作系统控制的驱动器通信。
13.如权利要求11所述的计算机可读媒体,其中该方法还包括元件接收来自键盘的与多个加密键击一致的多个消息验证码,所述消息验证码用三倍-DES和密码块链创建,该密码块链使用密钥和与所述第一初始值不同的第二初始值,所述第二初始值对键盘和元件是可知的;通过使用多个消息验证码检验该多个加密键击。
14.如权利要求13所述的计算机可读媒体,其中该方法还包括从键盘接收第一现时;向键盘发送第二现时;及通过应用三倍-DES和密码块链创建第一初始值和第二初始值,以合并第一现时和第二现时,使用为键盘和元件都所知的密钥和第三初始值。
15.如权利要求13所述的计算机可读媒体,其中该方法还包括从键盘接收第一现时;向键盘发送第二现时;通过应用三倍-DES和密码块链创建第一初始值,以合并第一现时和第二现时,使用为键盘和元件都所知的密钥和第三初始值;及通过应用三倍-DES和密码块链创建第二初始值,以合并第一现时和第二现时,使用为键盘和元件都所知的密钥和第四初始值。
16.如权利要求11所述的计算机可读媒体,其中所述三倍-DES和密码块链在有预定尺寸的块中加密数据,且其中键盘在有所述预定尺寸的块中与数据进行通信。
17.一个键盘,包括一个或多个存储第一初始值和密钥的存储位置;加密元件,该加密元件在具有三倍-DES和密码块链的键盘处接收的输入数据进行加密,该密码块链使用所述的密钥和所述的第一初始值,籍此加密数据基于所述输入数据创建;且通信接口,该通信接口向键盘外部的设备传送所述加密数据,所述加密数据指定为所述第一初始值和所述密钥都所知的接收者。
18.如权利要求17所述的键盘,其中加密元件进一步创建多个与加密数据或输入数据一致的消息验证码,所述消息验证码用三倍-DES和密码块链创建,该密码块链使用密钥和与所述第一初始值不同的第二初始值,
19.如权利要求17所述的键盘,其中键盘包括USB键盘。
20.如权利要求17所述的键盘,其中通信接口向驱动器传送所述加密数据,该驱动器由所述设备中的第一操作系统控制,于是所述加密数据传送到所述接受者,所述接受者是在所述装置上执行的第二操作系统或是在所述第二操作系统下执行的程序,所述第二操作系统在至少一些方面不信任第一操作系统的特性。
21.如权利要求17所述的键盘,其中所述加密元件适于;通过通信接口从接收者接收第一现时;通过通信接口向接收者发送第二现时;及通过应用三倍-DES和密码块链创建第一初始值,以合并第一现时和第二现时,使用为键盘和元件都所知的密钥和第二初始值。
22.如权利要求17所述的键盘,其中键盘接收的输入数据包括多个单独的键击,且其中加密元件单独加密每个单独的键击。
23.一种用计算机可执行指令进行编码的计算机可读媒体,该计算机可执行指令用于执行使键盘能够参与与键盘外部的元件进行安全通信的方法,该方法包括接收多个输入键击;对每个具有三倍-DES和密码块链的输入键击进行加密,该密码块链使用密钥和第一初始值,该密钥和第一初始值对键盘和元件都是可知的,籍此多个加密键击,;及向元件传送该加密键击。
24.如权利要求23所述的计算机可读媒体,其中所述三倍-DES和密码块链在有预定尺寸的块中加密数据,且其中键盘在所述预定尺寸的块中与数据进行通信。
25.如权利要求23所述的计算机可读媒体,其中该方法还包括创建多个具有三倍-DES和密码块链的消息验证码,该密码块链使用密钥和与所述第一初始值不同的第二初始值,该多个消息验证码与该多个键击一致;及将消息验证码检验传送到元件。
26.如权利要求23所述的计算机可读媒体,其中该方法还包括向元件发送第一现时;向元件发送第二现时;及通过应用三倍-DES和密码块链创建第一初始值,以合并第一现时和第二现时,使用为键盘和元件者防知的密钥和第二初始值。
27.一种使数据能安全输入到软件元件的方法,包括分配软件元件的副本,该软件元件包括密钥;第一初始值;及计算机可执行指令,该计算机可执行指令使软件能够向键盘发送第一现时;从键盘接收第二现时;基于所述第一现时、所述第二现时和所述第一初始值创建第二初始值;及使用密钥和第二初始值解密从键盘接收的加密数据;及分配,或者使能够分配,键盘,该键盘包括存储或者访问密钥副本的硬件;存储或者访问第一初始值副本的硬件;硬件或者软件使键盘能够从软件元件接收第一现时;向软件元件发送第二现时;及基于所述第一现时、所述第二现时和所述第一初始值创建第二初始值;及通过对在使用密钥和第二初始值的键盘处接收的输入数据进行加密,来创建加密数据。
28.如权利要求27所述的方法,其中所述键盘还包括硬件或软件,其使键盘能够基于所述第一现时、所述第二现时和所述第一初始值创建第三初始值,所述第三初始值与所述第二初始值不同;及使用密钥和第三初始值创建消息验证码;软件元件还包括计算机可执行指令以基于所述第一现时、所述第二现时和所述第一初始值创建第三初始值;及使用密钥和第三初始值检验该消息验证码。
29.如权利要求27所述的方法,其中加密数据通过将具有密码块链的三倍-DES应用到使用密钥和第二初始值的输入数据中来创建。
30.如权利要求27所述的方法,其中键盘适合于单独的加密每个键击。
全文摘要
键盘和例如计算机上运行的一段软件的元件之间的安全通信。第一初始值是为键盘和元件都所知的。键盘和元件交换现时。键盘和元件基于现时和第一初始值分别计算第二初始值和第三初始值。由于键盘和元件都执行相同的计算,因此键盘和元件每个都有相同的第二和第三初始值。基于密钥和第二初始值,键盘加密数据运往使用CBC-3DES的元件,并且基于密钥和第三初始值为每个使用CBC-3DESMAC的创建消息验证码。元件解密和检验使用密钥和第二、第三初始值的键击。
文档编号G06F21/00GK1599311SQ200410043080
公开日2005年3月23日 申请日期2004年5月8日 优先权日2003年5月2日
发明者M·佩那多, J·贝纳尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1