首页 / 密钥认证

密钥认证无效专利 发明

技术内容

密钥认证 背景技术 [0001] 加密协议用于在不受信任的环境中保护通信和认证用户。公钥密码系统使用密钥对:在网络中广泛传播的公钥,以及所有者而不是其他人所知道的私钥。单独的公钥密码系统不足以让用户在网络中相互信任。公钥基础设施可用于认证用户。在公钥基础设施中,每个用户向证书颁发机构申请数字证书,该数字证书作为用户身份的不可篡改的认证为其他用户服务。证书颁发机构充当网络中每个人都信任的可信第三方。 附图说明 [0002] 某些示例的各种特征将从以下结合附图的详细描述中变得明显,附图一起通过示例的方式示出了多个特征,其中: [0003] 图1示出了根据示例的用于生成加密密钥的装置。 [0004] 图2示出了根据示例的用于生成加密密钥的方法的框图。 [0005] 图3示出了根据示例的质询和响应协议的示意图。 [0006] 图4示出了根据示例的与存储器相关联并且包括用于认证计算设备上的加密密钥的指令的处理器。 具体实施方式 [0007] 在以下描述中,为了解释的目的,阐述了某些示例的许多具体细节。说明书中对“示例”或类似用语的引用意味着结合示例描述的特定特征、结构或特性被包括在至少一个示例中,但不一定被包括在其他示例中。 [0008] 密码术已广泛应用于移动和网络通信系统等现代通信技术中。密码协议被用于保护各方之间的通信通道,并相互认证用户。加密协议提供数据安全性,并且数字签名被用于认证各方之间发送的消息。 [0009] 现代密码系统的安全性依赖于密钥的保密性。早期的密码系统采用对称密钥算法,其中发送方和接收方使用相同的密钥。在对称密码系统中,在亲自或通过安全通道使用系统之前,必须以某种安全方式在通信双方之间交换密钥。当安全通道不可用于密钥交换或密钥频繁更改时,大量参与方使用对称密钥加密变得难以管理。密钥的数量随着用户数量呈指数增长。 [0010] 公钥密码术是对称密钥密码术的替代方案,其中用户生成公钥和私钥。公钥可以通过不安全的通道传送给任何一方。在公钥加密中,公钥允许任何拥有公钥的人使用公钥加密数据。对应私钥的拥有者可以对用公钥加密的密文进行解密。任何其他参与方都无法解密数据。 [0011] 安全通信中使用的另一个原语是密钥交换算法。Diffie‑Hellman密钥交换算法是一种允许彼此没有先验知识的两方通过不安全的通道共同建立共享密钥的公钥算法。这允许在以前使用安全通道的情况下使用有效的对称密钥密码术。 [0012] Diffie‑Hellman密钥交换在单独使用时容易受到所谓的中间人攻击。这是因为Diffie‑Hellman是一种未经认证的协议。它不向消息的发送者或接收者提供消息分别源自真实的接收者或发送者的加密保证。充当中间人的一方可以拦截各方之间的通信,来回转发消息,并可能在发送方和接收方之间篡改或注入消息。 [0013] 为了克服这个问题,可以使用密钥交换算法中使用的公钥/私钥对源自密钥的真正所有者的保证。例如,证书颁发机构可验证某方已生成加密密钥。证书颁发机构可以颁发公钥证书,也称为数字证书或身份证书,是用于证明公钥所有权的电子文件。证书包括有关密钥的信息、有关其所有者身份的信息以及已验证证书内容的实体——也称为颁发者——的数字签名。 [0014] 在某些情况下,实体可能不具备安全存储长期静态私钥的能力。在这种情况下,可以使用临时密钥交换。临时密钥是短期使用的密钥。这可能是每个会话一次或多次。但是,临时密钥不会长期存储。 [0015] 在密钥交换协议诸如Diffie Hellman密钥交换中使用临时密钥时,可能难以在每次生成新的临时密钥时使用证书颁发机构对密钥进行认证。例如,在其中生成密钥的设备无权访问联网功能的启动过程期间生成密钥的情况下。 [0016] 根据示例,本公开描述的方法和系统可用于通过使用长期、安全存储、静态且经认证的基于硬件的设备标识符以与物理设备相关联的秘密密钥的形式来认证临时密钥。在示例中,基于硬件的设备身份可用于在密钥协商期间验证临时密钥,例如,使用加密签名。这将临时密钥绑定到设备的物理身份。然后在带外接收与基于硬件的设备标识符/秘密密钥对应的公钥,允许用户验证硬件的身份并将临时密钥链接到物理设备的信任根。设备使用设备的信任根有效地证明其自己的密钥。 [0017] 可以将长期基于硬件的设备标识符存储在某些可能不存储静态密钥的设备上。例如,一些计算设备具有嵌入式硬件组件,例如可信平台模块。这些模块可以以受控和受限的方式存储标识符。在密钥交换会话中重新使用实际密钥会带来安全风险,因此建议不要这样做。因此,在示例中,可以存储标识符并签署临时密钥,而不是在密钥交换协议本身中重复使用相同的长期存储密钥。 [0018] 这里描述的方法和系统不同于基于与证书颁发机构通信的系统。在许多情况下,证书颁发机构可能无法验证临时密钥。在此描述的系统断言在计算设备的启动过程期间是否在物理设备上真正生成了临时密钥。该功能可以通过基于硬件的设备标识符来提供。 [0019] 此外,如果存在不一定像管理设备的用户那样与设备具有物理关系的企业实体,基于硬件的设备标识符使企业能够将标识符与实际物理设备相关联。如果没有基于硬件的设备标识符,企业将不得不相信用户,因为他们看到的临时密钥与用户面前的物理设备相关联。没有什么可以阻止用户自己生成不同的密钥对并将此信息发送给声称它与他们的设备相关联的企业。 [0020] 图1示出了根据示例的用于生成加密密钥的装置100。在此处描述的示例中,图1中所示的装置100是诸如个人计算机、笔记本电脑或移动设备之类的计算设备。 [0021] 装置100与本公开所述的其他方法和系统结合使用。特别地,装置100被布置为生成用于诸如Diffie Hellman密钥交换协议之类的密钥交换协议中的诸如临时密钥之类的加密密钥。这些密钥可用于生成在对称密钥加密协议中使用的其他密钥,这些密钥可用于各方之间的安全通信。 [0022] 图1所示的装置100包括防篡改模块(TPM)110,例如可信平台模块。在装置100的示例中,假设TPM 110包括安全数据存储器(未示出)。可以控制或限制对存储在安全存储装置中的部分或全部数据的访问。例如,在一些情况下,保存在TPM上的数据是装置100的一些或所有其他组件的只读数据。 [0023] 在一些示例中,TPM 110或装置100的制造商将数据写入TPM。在其他情况下,对TPM  110上保存的数据具有访问权限的各方可能能够执行读写操作进出TPM 110。 [0024] TPM具有不同的功能和特性。在某些情况下,TPM 110具有加密处理能力。例如,TPM  110可能能够使用存储在安全存储装置中的一个或多个密钥来加密数据。在其他示例中,TPM 110能够对存储在设备100上别处的数据生成加密签名。在其他示例中,TPM 110能够使用散列函数安全地计算数据的散列值。 [0025] 装置100包括通信耦接到TPM 110的处理器120。处理器120是通用处理器,被布置为对存储在装置100上的数据执行操作。例如,处理器120可以被布置为检索或读取安全存储在TPM 110上的数据。 [0026] 在这里描述的示例中,处理器120被布置为当装置100被通电时执行启动过程。在此,启动过程是由装置100执行以加载操作系统的过程。在一些示例中,启动过程可以由存储在装置100的只读存储器(未示出)中的小型启动加载程序发起。 [0027] 在此处描述的示例中,处理器120结合TPM 110执行可信启动过程。可信启动过程是这样的启动过程,其中用户可以确保在启动周期期间执行的操作序列的完整性。也就是说,由处理器120结合TPM 110执行的操作被可验证地执行,并且在某些情况下,例如以输入和输出的散列值的形式,可以向用户提供以下保证:操作顺序没有被改变或篡改。特别地,装置120在启动周期中的给定点的状态是可信状态。 [0028] 装置100还包括加密密钥生成模块130。加密密钥生成模块130通信耦接到处理器 120和TPM 110。在这里描述的示例中,加密密钥生成模块130与处理器120和TPM110分离。然而,在TPM的一些示例中,可以执行某些加密功能,包括密钥生成。类似地,密钥生成可以由诸如处理器120之类的通用处理器执行。在这种情况下,装置100可以包括TPM 110和处理器 120而不包括加密密钥生成模块130。 [0029] 处理器120被布置为控制加密密钥生成模块130。特别地,处理器120向密码密钥生成模块130传送指令以执行加密密钥生成过程。根据在此描述的方法的示例,处理器120被布置为在可信启动过程期间发起密钥生成。以这种方式,处理器120可以结合加密密钥生成模块130在可信启动过程期间控制临时加密密钥的生成。设备100的用户可以确信从加密密钥生成模块130输出的临时密钥是以可信的操作序列创建的。 [0030] 即使用户可以信任操作顺序本身,但将操作顺序与设备联系起来是不够的。加密密钥生成模块130输出的临时密钥也应该被认证。 [0031] 在启动期间,装置100和处理器120执行装置在其完全操作时能够执行的那些功能的某个功能子集。特别地,例如,当装置100在受信任状态下操作时,可能无法通过证书颁发机构以通常的方式生成和认证加密密钥。 [0032] 在此处描述的示例中,处理器120还被布置为基于安全地存储在TPM 110上的标识符,在可信启动过程期间认证由加密密钥生成模块130生成的加密密钥。根据这里描述的示例,处理器120访问TPM 110。如果TPM 110具有执行那些操作的功能,则执行认证以验证临时密钥的实际操作序列可以在TPM 110内部发生。在其他情况下,临时密钥的加密认证发生在处理器120上。 [0033] 根据一个示例,处理器120可以使用存储在TPM中的标识符来执行加密签名操作以在临时密钥上生成加密签名。加密签名将临时密钥与设备联系起来。该签名可由外部实体独立验证。 [0034] 图2示出了根据示例的在计算设备的启动过程期间生成加密密钥的方法200的方法。图2所示的方法200可以在图1所示的装置100上实施。 [0035] 在块210,访问存储在计算设备上的安全位置处的标识符。根据这里描述的示例,当方法200在图1所示的装置100上实施时,安全存储装置由TPM 110提供。在其他示例中,安全存储装置可以提供在主存储器的区域中,或计算设备的硬盘空间中。 [0036] 在块220,根据密钥生成过程生成加密密钥。密钥生成过程可以由图1中所示的加密密钥生成模块130发起。这样的密钥生成过程可以在软件中或由专用硬件组件来执行。 [0037] 任何种类的非对称加密密钥生成算法都可以与这里描述的方法结合使用。例如,可以实施使用RSA、椭圆曲线或基于晶格的密钥生成算法生成的密钥。可以使用任何大小的密钥,例如,1024位的RSA密钥提供80位的安全级别。对于基于椭圆曲线点的密钥,使用160位的密钥可以达到类似80位的安全级别。因此,椭圆曲线密码术可用于内存受限或轻量级应用,或用于计算效率的目的。 [0038] 在块230,加密密钥被验证以证明它是在计算设备的启动过程期间真实地生成的。 加密密钥的认证是根据标识符进行的。根据这里描述的示例,验证加密密钥包括基于标识符在加密密钥上生成加密签名。 [0039] 由于方法200中的操作是在启动过程期间执行的,如果启动过程是可信启动过程,则根据方法200的密钥认证也是可信的,因为假设标识符与计算设备的信任根相关联。 [0040] 在图2所示的方法200的替代方案中,可以在发起启动过程之前执行块210。特别地,可以在任何启动加载器已经被加载到计算设备的存储器中之前从安全位置访问身份。 但是,如果实施了这样的替代方案,则应采取额外的预防措施以确保读取操作是可信的。 [0041] 方法200还可以包括验证密码是由计算设备真实生成的密钥。在某些情况下,在计算设备上执行密钥验证。例如,希望与另一用户执行安全通信的用户可能希望验证计算设备上的临时密钥是由计算设备在可信启动过程期间生成的。用户可以根据这里描述的方法 200来验证密钥。例如,在密钥的验证包括在密钥上提供加密签名的情况下,用户可以使用对应的公钥来验证加密签名。 [0042] 如果设备的用户不是制造商,则他们不能简单地相信标识符与计算设备相关联。 因此,这应该是用户可以独立验证的。 [0043] 描述了一种方法,通过该方法用户可以验证标识符链接到计算设备。根据示例,实施方法200的计算设备可以基于计算设备的序列号生成加密签名,其中使用据称链接到计算设备的标识符生成签名。该签名可以发送给设备制造商。 [0044] 响应于接收到签名,设备制造商基于序列号在带外提供经认证的公钥,其中经认证的公钥是与标识符相关联的对应公钥。在这种情况下,标识符本身可以用作秘密密钥,也可以用于生成密钥以对序列号进行签名。然后,用户可以使用经过认证的公钥来验证序列号上的签名。 [0045] 如果企业实体正在管理系统,则可以使企业知道序列号和基于硬件的身份证书。 例如,企业可以在将设备部署到用户之前与制造商进行通信,然后将证书存储并传递给用户。如果/当企业与设备通信时(可能通过用户),企业可以确保与其通信的临时密钥关联到物理设备,如果用户从企业引出输入进行认证,企业学习用户正在向哪个设备进行认证。 [0046] 在另一个示例中,用户可以如下方式验证标识符:可以在计算设备上预先安装序列号上的加密签名。当用户希望将标识符链接到计算设备时,用户可以从设备制造商处接收带外公钥。然后用户可以验证加密签名。 [0047] 此处描述了允许授权用户以无密码方式向计算设备的基本输入/输出系统(BIOS)认证的协议的示例。例如,该协议可用于允许经过认证的用户执行低级别BIOS管理操作。 [0048] 在一个示例中,用户从设备接收公钥/私钥对。在认证阶段,可以在设备的屏幕上向用户呈现机器可读的光学代码,例如矩阵条形码,例如快速响应(QR)代码,这是加密的质询。如果用户能够使用之前收到的私钥解密质询,并将质询(或质询的指纹)输入设备,则用户能够成功被认证。 [0049] 计算设备上的恶意应用可能会向用户显示伪装成BIOS的屏幕,并向用户提供用户错误地认为属于该设备的公钥。然后,用户将与恶意应用而不是BIOS计算共享密钥,正如他们所期望的那样。这种对抗性应用可以进行“拒绝”式攻击,防止用户在没有意识到的情况下修改BIOS设置。 [0050] 额外的攻击可能涉及中间人攻击,即设备上的恶意应用将用户输入的信息通信给控制用户有权修改的设备的对手,但对手不是。通过这种方式,攻击者可以访问他们无权进入的设备的BIOS。 [0051] 图3示出了可以结合在此描述的系统来实施的质询和响应协议300的示例。在图3的示例中,协议300在计算设备310和用户设备320之间执行,用户设备320例如可以是智能电话,并且可以包括显示器321和诸如相机的成像装置323。该协议可用于认证用户以使得他们能够在计算设备310上安全地执行启动管理操作,而独立于授权加密密钥的任何认证机构。计算设备310和用户设备320之间的通信在启动阶段受到限制。计算设备310可以使用设备310的显示设备321来显示代码。如上所述,这样的代码可以是例如QR代码。用户设备 320可以用设备320读取代码,例如。使用设备320的成像装置323。在启动阶段,从用户到设备310的BIOS的通信通道是使用键盘。 [0052] 在图3所示的示例中,用户设备320最初持有私钥Pri1,计算设备310持有相应的公钥Pub1,其中(Pub1,Pri1)是根据密钥生成算法KeyGen()生成的。根据示例,设备310、320可以被配置为在协议300的初始注册阶段持有公钥和私钥。注册阶段可以由例如生成相应密钥并将其传送到设备的可信管理系统发起。 [0053] 在协议的质询和响应阶段,计算设备310生成另一个密钥对(Pub1,Pri1)301。计算设备310基于Pub2和Pri2的组合生成种子(seed)302。种子302用作密钥推导函数KDF()的输入以生成对称密钥Sym 303。质询chal是随机生成的并且使用密钥Sym加密,以生成传送到用户设备320的加密C。 [0054] 用户设备320可以与计算设备310密钥的公共部分Pub2一起接收质询。用户设备 320使用Pub2和他们的私钥Pri1计算相同的种子。然后使用种子302来计算对称密钥Sym  303,用户可以使用该对称密钥来解密质询密文C。响应Resp 304被输入到计算设备310上。 例如,用户可以使用键盘将响应键入到设备中310。接收到的质询由计算设备310验证。 [0055] 当方法200与协议300结合使用以验证与用户设备共享的密钥时,可以确保用户在其启动过程期间与计算设备交互而不是与某些其他恶意应用交互。结合协议300使用方法 200还保护用户免受先前描述的中间人攻击情形。 [0056] 在此描述的方法和系统提供了一种用于以可信赖的方式来验证在计算设备上的进一步加密协议中使用临时加密密钥的方法。所描述的方法可以用在证书颁发机构不可用于验证密钥的情况下,例如在计算设备的可信启动阶段。有利地,这里描述的方法和系统允许用户从设备通电的那一刻起信任在他们的设备上即时生成的密钥。以在此描述的方式使用基于硬件的设备标识符允许企业用户对其设备的身份有信心并安全地建立用于安全通信的共享秘密。企业用户还可以更多地控制他们的设备,这意味着他们将不得不减少对用户的信任。 [0057] 本公开中的示例可以作为方法、系统或机器可读指令提供。这样的机器可读指令可以被包括在其中或其上具有计算机可读程序代码的计算机可读存储介质(包括但不限于盘存储器、CD‑ROM、光存储器等)上。 [0058] 参照根据本公开示例的方法、设备和系统的流程图和/或框图来描述本公开。尽管上述流程图显示了特定的执行顺序,但执行顺序可能与所描绘的不同。 [0059] 关于一个流程图描述的块可以与另一流程图的块组合。在一些示例中,流程图的一些块可能不是必需的和/或可以添加的额外的块。应当理解,流程图和/或框图中的每个流程和/或块,以及流程图和/或框图中的流程和/或框图的组合,都可以通过机器可读指令来实现。 [0060] 机器可读指令例如可以由通用计算机、专用计算机、嵌入式处理器或其他可编程数据处理设备的处理器执行以实现说明书和图中描述的功能。特别地,处理器或处理装置可以执行机器可读指令。因此,装置的模块可以由执行存储在存储器中的机器可读指令的处理器或根据嵌入在逻辑电路中的指令操作的处理器来实施。 [0061] 术语“处理器”应广义地解释为包括CPU、处理单元、ASIC、逻辑单元或可编程门组等。方法和模块都可以由单个处理器执行或在多个处理器之间进行划分。 [0062] 这种机器可读指令也可以存储在计算机可读存储器中,该计算机可读存储器可以指导计算机或其他可编程数据处理设备以特定模式操作。 [0063] 例如,指令可以在用指令编码的非暂态计算机可读存储介质上提供,可由处理器执行。 [0064] 图4示出了与存储器420相关联的处理器410的示例。存储器420包括可由处理器 410执行的计算机可读指令430。指令430包括从计算设备上的安全存储装置检索基于硬件的数字签名密钥的指令;在计算设备的启动过程期间,根据基于硬件的数字签名密钥对根据加密密钥生成算法生成的加密密钥进行认证。 [0065] 这种机器可读的指令也可以加载到计算机或其他可编程数据处理设备上,使计算机或其他可编程数据处理设备执行一系列操作以产生计算机实施的处理,从而在计算机或其他可编程数据处理设备上执行指令,提供用于实现由流程图中的流程和/或框图中的块指定的功能的操作。 [0066] 此外,这里的教导可以以计算机软件产品的形式实施,该计算机软件产品存储在存储介质中并且包括用于使计算机设备实施在本公开的示例中陈述的方法的多个指令。 [0067] 词语“包括”不排除权利要求中列出的元件以外的元件的存在,“一(a/an)”不排除多个,并且单个处理器或其他单元可以实现权利要求中列举的多个单元的功能。 [0068] 任何从属权利要求的特征可以与任何独立权利要求或其他从属权利要求的特征组合。