用于使用硬件安全引擎通过网络进行安全通信的方法和设备的制作方法
【专利摘要】一种用于与服务器建立安全通信会话的方法、装置和系统,包括发起对于安全通信会话的请求,所述安全通信会话例如是使用在客户端设备的片上系统(SOC)的安全引擎中生成的临时随机数值的与服务器的安全套接字层(SLL)通信。此外,在客户端和服务器之间执行密码密钥交换,以便生成对称会话密钥,该对称会话密钥被存储在安全性引擎的安全存储设备中。所述密码密钥交换可以例如是Rivest-Shamir-Adleman(RSA)密钥交换或者Diffie-Hellman密钥交换。在所述密码密钥交换期间生成的私有密钥和其它数据可以被所述安全引擎生成和/或存储在所述安全引擎中。
【专利说明】用于使用硬件安全引擎通过网络进行安全通信的方法和设备
【背景技术】
[0001]密码通信协议用于通过不可信的网络或通信链路建立计算设备之间的安全通信会话。一个常用的密码通信协议是安全套接字层(SSL)协议。SSL协议以及相关的传输层安全(TLS)协议被用于许多不同类型的安全通信会话,例如包括在诸如以太网的不可信的网络上的安全网络浏览、电子商务、安全升级以及两个计算设备之间的其它安全通信会话。其它通信协议可以利用SSL/TLS协议以便提供底层安全。例如,超文本传输协议安全(HTTPS)使用SSL/TLS用于设备之间的消息的加密。典型地,由SSL/TLS协议提供的密码安全在带内完成并且在软件应用级别上执行。
[0002]由于一些计算和电子设备的相对小的封装(footprint),它们利用片上系统(SOC)设计。SOC设备是将电子系统的除了处理核心之外还包括的各种部件结合在单个管芯上的集成电路。例如,SOC可以包括位于单个芯片上的处理器核心、存储器控制器、视频部件、音频部件和/或通信部件。
【专利附图】
【附图说明】
[0003]在附图中通过示例而非限制的方式说明了本文描述的发明。为了说明的简单性和清楚性,附图中说明的元件不必按照比例绘制。例如,为了清楚性,一些元件的尺寸可能相对其它元件被放大。进而,在认为适当时,在附图中重复附图标记以便指示相对应或者类似的元件。
[0004]图1是用于通过网络在具有片上系统(SOC)的客户端设备和服务器之间建立安全通信会话的系统的至少一个实施例的简化框图;
[0005]图2是用于图1的系统的安全方案的至少一个实施例的框图;
[0006]图3是用于建立安全通信会话的图1的客户端设备和服务器的通信序列的至少一个实施例的简化序列图;并且
[0007]图4是用于建立由图1的客户端设备执行的安全通信会话的方法的至少一个实施例的简化流程图。
【具体实施方式】
[0008]尽管本公开的概念容易具有各种修改和替换形式,但是在附图中通过示例的方式示出了其具体示例性实施例并且在本文将对这些实施例进行详细描述。然而,应当理解的是,并非意在将本公开的概念局限于所公开的具体形式,而是相反,意在涵盖与本公开和所附权利要求一致的所有修改、等同物和替代。
[0009]在下面的描述中,阐释了诸如逻辑实现、操作码、指定操作数的手段、资源划分/共享/复制实现、系统部件的类型和相互关系以及逻辑划分/集成选择,以便提供对本公开的更加全面的理解。然而,本领域的普通技术人员应当认识到,本公开的实施例可以在没有这些具体细节的情况下实践。在其它实例中,没有详细示出控制结构、门级电路和全软件指令序列,以便不混淆本发明。使用所包括的描述,本领域的普通技术人员将能够实现适当的功能而无需过多实验。
[0010]在本说明书中对“ 一个实施例”、“实施例”、“示例实施例”等等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是每一个实施例可以不必都包括该特定的特征、结构或特性。而且,这样的短语不必指代相同的实施例。进而,当结合实施例描述特定的特征、结构或特性时,应当认为结合无论是否被明确描述的其它实施例来实现这样的特征、结构或特性在本领域技术人员的知识范围内。本发明的实施例可以被实现在硬件、固件、软件或它们的任意组合中。被实现在计算机系统中的本发明的实施例可以包括部件之间的一个或多个基于总线的互连和/或部件之间的一个或多个点对点互连。本发明的实施例也可以被实现为由机器可读介质承载或者存储在该机器可读介质上的指令,这些指令可以由一个或多个处理器读取和执行。机器可读介质可以被体现为用于以机器(例如,计算设备)可读的形式存储或传输信息的任何设备、机制或物理结构。例如,机器可读介质可以被体现为只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪存设备;小型或微型SD卡、记忆棒、电信号等等。
[0011]在附图中,可以为了便于描述而示出诸如代表设备、模块、指令块和数据元素的那些元件的示意性元件的具体布置或排序。然而,本领域技术人员应当理解的是,附图中示意性元件的具体顺序或布置并不意在暗示要求处理的特定顺序或序列或者处理的分离。进而,附图中包括示意性元件并不意在暗示在所有实施例中都要求这样的元件,或者在一些实施例中由这样的元件代表的特征可能不被包括在其它元件中或者没有与其它元件相结口 O
[0012]通常,用于代表指令块的示意性元件可以使用机器可读指令的任何适当的形式实现,例如软件或固件应用、程序、函数、模块、例程、过程、进程、插件、小应用程序、窗口小部件、代码片段和/或其它,并且每一个这样的指令可以使用任何合适的编程语言、库、应用编程接口(API)和/或其它软件开发工具来实现。例如,一些实施例可以使用Java、C++和/或其它编程语言来实现。
[0013]类似地,用于代表数据或信息的示意性元件可以使用任何合适的电子布置或结构实现,例如寄存器、数据存储、表、记录、数组、索引、哈希、映射图、树、列表、图、(任何文件类型的)文件、文件夹、目录、数据库和/或其它。
[0014]进而,在附图中,在使用诸如实线或者虚线或者箭头的连接元件来说明两个或更多个其它示意性元件之间的连接、关系或关联的情况下,不存在任何这样的连接元件并不意味着暗示没有连接、关系或关联能够存在。换句话说,在附图中可能没有示出元件之间的一些连接、关系或关联,以便不混淆本发明。此外,为了便于说明,单个连接元件可以用于代表元件之间的多个连接、关系或关联。例如,在连接元件代表信号、数据或指令的传输的情况下,本领域的技术人员应当理解,如果需要,这样的元件可以代表一个或多个信号路径(例如,总线),以便实现通信。
[0015]现在参照图1,用于建立安全通信会话的系统100包括客户端设备102、服务器104以及网络106。在操作中,客户端设备102通过网络106发起对于与服务器104的安全通信会话的请求。为了建立安全通信会话,客户端设备102和服务器104执行密码密钥交换,例如Diffie-Hellman或Rivest-Shamir-Adleman (RSA)密钥交换,以便生成秘密对称会话密钥。该秘密对称会话密钥可以接着用于加密和解密客户端设备102和服务器104之间的消息。为了确保安全通信会话,在客户端设备102的片上系统(SOC) 112的安全引擎110内完成由客户端设备102生成的各种密钥和其它密码功能。客户端设备102将该密钥秘密地维持在安全引擎110的安全存储器114中。例如,如下面讨论的,安全引擎110可以包括安全密钥150,用于签名和/或以其它方式加密其它密钥和消息。按照这种方式,客户端设备102和服务器104可以使用客户端设备102的带外(即,不是应用级)硬件安全功能来贯穿网络106建立安全通信会话。在本文描述的说明性实施例中,安全通信会话是安全套接字层(SSL)通信会话,但是在其它实施例中,本文描述的系统100和特征可以用于建立其它类型的安全通信会话。
[0016]客户端设备102可以被体现为能够通过网络106与服务器104进行通信的任何类型的计算设备,例如,客户端设备102可以被体现为机顶盒、数字电视、智能电话、平板计算机、膝上型计算机、移动互联网设备(MID)、台式计算机或者能够与服务器104进行通信的其它设备。
[0017]如上面讨论的,客户端设备102包括SOC 112,其可以被体现为具有各种部件和结构的任何类型的片上系统设备。在图1的说明性实施例中,SOC 112包括安全引擎110、存储器控制器116、处理器核心118和多个硬件外设130,它们经由链路120可通信地耦合到彼此。链路120可以被体现为任何类型的互连,例如总线、点对点或者能够促进SOC 112的各种部件之间的通信的其它互连。取决于SOC 112的期望功能,硬件外设130可以包括任何类型的硬件外围部件。例如,在说明性实施例中,硬件外设130包括用于分离音频和视频内容流的解复用134 ;用于处理视频内容的视频处理部件132 ;以及用于处理音频内容的音频处理部件136。当然,应当意识到的是,在图1的说明性实施例中简化了 SOC 112的硬件外设130,并且SOC 112可以包括附加的、不同的和/或更大的详细硬件外设130,为了公开的清楚性而未在图1中示出。
[0018]安全引擎110可以被体现为独立于处理器核心118的安全协处理器或处理电路。安全引擎110包括安全密钥150和安全存储器114,该安全存储器114只能由安全引擎110存取。安全引擎110将安全密钥150以及下面讨论的其它密码密钥存储在安全存储器114中。在说明性实施例中,在S0C112的制造过程中提供安全密钥150,但是在其它实施例中可以在操作期间由SOC 112生成安全密钥150。例如,在一些实施例中,安全密钥150基于安全引擎110本身内的熔断保险丝。此外或可选地,安全引擎110可以包括诸如可信平台模块(TPM)的密钥生成模块,以便生成安全密钥150。在使用期间,安全引擎110可以使用任意数量的安全密钥150,它们可以彼此相同或者不同。
[0019]在一些实施例中,取决于客户端设备102的类型和期望用途,除了 S0C112之外,客户端设备102可以包括其它部件和结构。例如,在图1的说明性实施例中,客户端设备102包括系统存储器160、数据存储设备162、通信输出164以及一个或多个输入/输出设备166。系统存储器160可以被体现为任何类型的主存储器或者数据存储单元,例如,包括动态随机存取存储器设备(DRAM)、同步动态随机存取存储器设备(SDRAM)、双倍数据速率同步动态随机存取存储器设备(DDR SDRAM)、掩模只读存储器(ROM)设备、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)设备、闪存设备和/或其它易失性和/或非易失性存储器设备。
[0020]数据存储设备162可以被体现为被配置用于数据的短期或长期存储的任意类型的一个或多个设备,例如以存储器设备和电路、存储卡、硬盘驱动、固态驱动或其它数据存储设备为例。通信输出164可以被体现为简化的输出或者作为各种电路和/或设备,以便例如促进与服务器104的通信。例如,通信输出164(和/或SOC 112内的通信电路)可以使用任何合适的通信协议,例如以太网(即IEEE 802.3标准)或W1-Fi? (即IEEE 802.11
标准)和/或其它通信协议或标准。此外,输入/输出设备166可以被体现为任何类型的I/O设备,用于与客户端设备102进行交互。例如,I/O设备166可以包括输出设备,例如用于在客户端设备102上显示数据的显示器;用于生成音频的扬声器;和/或输入设备,例如遥控接收器、键盘、鼠标和/或其它。
[0021]服务器104可以被体现为能够与客户端设备102建立安全通信会话的任意类型的数据服务器。这样,服务器104可以包括在附图中典型地发现的用于通过网络通信、维护和传输数据的各种硬件和软件部件。例如,说明性服务器104包括可以与在其它数据服务器中发现的这样的部件类似的处理器180、存储器182以及通信电路184。例如,处理器180可以被体现为能够执行软件/固件的任意类型的处理器,例如微处理器、数字信号处理器、微控制器等,并且可以包括一个或多个处理核心。存储器182可以被体现为任意类型的存储器或数据存储单元,例如包括动态随机存取存储器设备(DRAM)、同步动态随机存取存储器设备(SDRAM)、双倍数据速率同步动态随机存取存储器设备(DDR SDRAM)、掩模只读存储器(ROM)设备、可擦除可编程ROM(EPROM)、电可擦除可编程ROM (EEPROM)设备、闪存设备和/或其它易失性和/或非易失性存储器。通信电路184可以被体现为任意类型的电路和/或设备,以便例如促进与客户端设备102的通信。例如,通信电路184可以支持通信协议,例如以太网(即IEEE 802.3标准)和/或W1-Fi? (例如,IEEE 802.11标准)和/或其它通信协议或标准。
[0022]网络106可以被体现为任意数量的各种有线和/或无线网络。例如,网络106可以被体现为或者以其它方式包括局域网(LAN)、广域网(WAN)和/或诸如以太网的公共可访问全球网络。此外,网络106可以包括任意数量的附加设备,以便促进客户端设备102和服务器104之间的通信。如上面讨论的,在说明性实施例中,客户端设备102和服务器104通过网络106建立SSL通信会话。然而,在其它实施例中可以建立其它类型的安全通信会话。
[0023]现在参照图2,如下面更加详细讨论的,使用客户端设备102的安全引擎110来执行密码功能并且存储与建立安全通信会话相关联的密钥数据允许系统100提供几个不同级别的安全。在系统100中使用的特定安全级别可以取决于各种准则,例如网络106的本质、在客户端设备102和服务器104之间传输的数据的重要性和/或其它。例如,一个说明性安全方案200包括如图2所示的三个不同的安全级别。在第O级安全处,客户端设备102被配置为保护客户端私有设备密钥(即,安全密钥150),如下面更加详细讨论的,用于加密、签名和验证功能。
[0024]在第I级安全处,客户端设备102被配置为保护会话密钥以及用于数据加密的相关密钥。例如,如果执行RSA密钥交换,则可以将预主密钥和主密钥(B卩,会话密钥)存储在SOC 112的安全引擎110的安全存储器114中。此外,在下面讨论的一些实施例中,主密钥可以按照加密或包裹的形式被存储(例如,使用安全密钥150加密)。在其中使用Diffie-HelIman密钥交换的实施例中,私有Diffie-Hellman客户端密钥和/或共享秘密密钥(即,会话密钥)可以被存储在SOC 112的安全引擎110的安全存储器114中。再者,在一些实施例中,私有Diffie-Hellman客户端密钥和/或会话密钥可以按照加密或包裹的形式被存储(例如,使用安全密钥150加密)。
[0025]此外,在第2级安全处,客户端设备102可以被配置为保护主机应用的数据。例如,如果主机应用用于执行电子商务交易,则在这样的交易中使用的银行账户信息可以使用安全密钥150被加密并且被存储在安全存储器114中。通过这一方式,银行账户信息对于主机应用不可用。当然,应当意识到的是,在其它实施例中,可以使用具有更多或更少的安全级别的安全方案。
[0026]现在参照图3,在操作中,客户端设备102与服务器104使用客户端设备102的安全引擎110建立安全通信会话,以便执行各种密码功能并且在其中存储密钥数据。为了做到这一点,客户端设备102和服务器104可以执行如在图3的通信序列300中示出的握手会话。为了建立安全通信会话,安全引擎110的安全引擎驱动器302与安全引擎110的固件以及在客户端设备102上执行的客户端安全通信应用304进行通信。客户端安全通信应用304还与在服务器104上执行的相对应的服务器安全通信应用306进行通信。
[0027]通信序列300开始于块310,其中客户端安全通信应用304向服务器安全通信应用306发送ClientHello消息以便请求安全通信会话的发起。如上面讨论的,在说明性实施例中,安全通信会话是SSL会话。在块312中,为了促进该请求,安全引擎驱动器302与SOC 112的安全引擎110进行通信,以便从安全引擎110请求随机的临时随机数。在块312中,安全引擎110可以使用任何合适的随机数生成算法来生成随机的临时随机数。该临时随机数被体现为随机数或者伪随机数,意在仅在密码功能中使用一次以便例如阻止重放攻击。在说明性实施例中,随机的临时随机数包括32位的时间戳和28字节的随机数。当然,在其它实施例中可以使用随机的临时随机数的其它数字格式。无论如何,应当意识到的是,因为在安全引擎110中生成随机的临时随机数,因此与例如在应用级生成临时随机数相比较,保护了该随机的临时随机数的生成和存储。
[0028]在块312中生成的随机的临时随机数被包括在在块310中被发送到服务器安全通信应用306的ClientHel1消息中。此外,ClientHello消息可以包括密码套件、压缩方法以及服务器104可以从其进行选择用于建立安全通信会话的其它密码协议或算法的列表。在块314中,对所述安全通信会话请求做出响应,服务器安全通信应用306发送ServerHello消息。ServerHello消息可以基本上类似于ClientHello消息。例如,在说明性实施例中,ServerHello消息包括由服务器104生成的服务器随机的临时随机数。此外,ServerHello消息包括密码协议的选择和/或来自ClientHello消息中包括的列表的由服务器104做出的其它选项。ServerHello消息完成说明性握手会话的会话发起阶段(第I阶段)。
[0029]在块316中,服务器安全通信应用306向客户端安全通信应用304发送服务器证书。与下面讨论的客户端证书类似,服务器证书典型地由证书权威机构生成,所述证书权威机构用作服务器104的认证的第三方证实者。服务器证书可以包括由证书权威机构分配到服务器104的用于验证服务器104到网络106上的其它设备的唯一标识符或号码。这样,在块318中,客户端设备102可以验证服务器证书。在一些实施例中,客户端设备102使用由证书权威机构颁发的公共证书密钥来验证服务器证书。在这样的实施例中,安全引擎110可以在未加密或者加密的状态下在安全存储器114中存储公共证书密钥(例如,使用安全密钥150)。
[0030]为了建立安全通信会话,客户端设备102和服务器104执行密钥交换,以便在客户端设备102和服务器104的每一个中建立共享秘密密钥(B卩,主密钥或会话密钥)。客户端设备102和服务器104可以使用任何合适的密钥交换算法来实现共享秘密的建立。在说明性实施例中,密钥交换可以被体现为RSA密钥交换或Diffie-Hellman密钥交换。在其中使用RSA密钥交换的实施例中,在块320中,服务器安全通信应用306执行服务器RSA密钥交换。在这样的实施例中,在块320中,服务器104可以生成临时RSA公钥/私钥对,并且将RSA公钥发送到客户端设备102。这样的消息可以由服务器104进行签名,并且通过使用公共服务器密钥由客户端设备102进行验证,如上面讨论的,所述公共服务器密钥可以被存储在安全存储器114中。
[0031]可选地,在块320中,服务器安全通信应用306可以执行服务器Diffie-Hellman密钥交换。在这样的实施例中,在方框320,服务器104选择或者以其它方式生成Diffie-Hellman全局值(例如,素数和素数的原始根),生成私有和公共Diffie-Hellman服务器密钥,并且将Diffie-Hellman全局值和公共Diffie-Hellman服务器密钥发送到客户端设备102。再次,这样的消息可以由服务器104签名并且由客户端设备102使用公共服务器密钥进行验证。
[0032]在一些实施例中,在块322中,服务器安全通信应用306可以发送客户端证书请求。如果这样,则该请求可以指定由服务器104接受的证书的类型(例如,所使用的公钥算法)、可接受的证书颁发机构和/或其它证书参数。随后,在块324中,服务器安全通信应用306向客户端安全通信应用304发送服务器完成消息(“ServerHelloDone”消息),以便指示服务器104已经完成了握手会话的这一阶段。在说明性实施例中,服务器完成消息不要求参数或其它数据。ServerHelloDone消息完成说明性握手会话的服务器认证和密钥交换阶段(第2阶段)。
[0033]在块326中,在接收到所述服务器完成消息之后,通过发送客户端证书,客户端安全通信应用304发起客户端认证和握手会话的密钥交换阶段(第3阶段)。如上面讨论的,客户端证书典型地由证书权威机构生成,并且可以包括由证书权威机构分配到客户端设备102以便验证客户端设备102到网络106上的其它设备的唯一的标识符或号码。在一些实施例中,客户端证书可以按照未加密或加密的状态被存储在SOC 112的安全引擎110的安全存储器114中。此外,在将证书发送到服务器104之前,客户端设备102可以使用由证书权威机构签发的私有设备密钥来签名所述证书。
[0034]在块328中,客户端安全通信应用304执行客户端密钥交换。再次,如上面讨论的,客户端设备102和服务器104可以使用任何合适的密钥交换算法来实现共享秘密的建立。在其中使用RSA密钥交换的实施例中,在块330中,客户端设备102的SOC 112的安全引擎110生成随机的预主密钥。说明性地,预主密钥被体现为48字节的随机数,但是在其它实施例中可以使用其它数字格式。在块332中,使用在服务器认证和密钥交换阶段(第2阶段)中由服务器提供的服务器公钥来加密或者以其它方式包裹在块330中生成的预主密钥。在块328中,被加密的预主密钥可以被存储在S0C112的安全引擎110的安全存储器114中并且被发送到服务器104。
[0035]可选地,在其中使用Diffie-Hellman密钥交换的实施例中,在块334中,安全引擎110使用在块320中从服务器104接收的Diffie-HelIman全局值来生成私有Diffie-HelIman客户端密钥和公共Diffie-Hellman客户端密钥。私有Diffie-Hellman客户端密钥可以被体现为由安全引擎110生成的随机值,而公共Di ffie-He I Iman客户端密钥可以由安全引擎110使用从服务器104接收的Diffie-Hellman全局值来生成。私有Diffie-Hellman客户端密钥可以被存储在安全引擎110的安全存储器114中。当然,在一些实施例中,客户端设备102可以在块334中生成Diffie-Hellman全局值并且在块328中将这样的全局值发送到服务器104,以便允许服务器104基于此来生成公共Diffie-Hellman服务器密钥。不管怎样,在块336中,SOC 112的安全引擎110使用安全密钥150或者安全引擎110的其它私有客户端密钥110来在块336中签名公共Diffie-Hellman客户端密钥(以及如果由客户端设备102生成,Diffie-Hellman全局值)。在块328中,被签名的Diffie-Hellman参数可以使用公共服务器密钥被进一步加密并且被发送到服务器104。
[0036]在一些实施例中,在块338中,客户端安全通信应用304可以向服务器安全通信应用306发送客户端证书验证消息。为了这样做,在块340中,安全引擎110基于先前的信息生成哈希代码并且使用安全引擎110的安全密钥150来签名该哈希代码。在块338中,客户端设备102将被签名的哈希代码发送到服务器104,作为先前消息的验证。应当意识到的是,这样的客户端证书验证消息可以随后用于从客户端设备102发送到服务器104的任何消息,以便向安全通信会话提供安全的附加级别和验证。在块338中,客户端证书验证消息完成客户端身份认证和说明性握手会话的密钥交换阶段(第3阶段)。
[0037]在块342中,客户端安全通信应用304向服务器安全通信应用306发送更改密码说明消息,以便通知服务器104随后的通信将使用商定的密码(例如,所生成的会话密钥)。在块344中,客户端设备102的安全引擎110生成会话密钥(即,“主”密钥)。在其中使用RSA密钥交换的实施例中,安全引擎110根据在块330中生成的预主密钥来生成会话密钥。为了这样做,安全引擎110计算预主密钥、在块312中生成的客户端随机的临时随机数以及在块314中接收的服务器随机的临时随机数的哈希函数。可选地,在其中使用Diffie-Hellman密钥交换的实施例中,安全引擎110根据Diffie-Hellman全局值、公共Diffie-Hellman服务器密钥和私有Diffie-Hellman客户端密钥生成会话密钥。如上面讨论的,所述会话密钥被存储在安全引擎110的安全存储器114中。
[0038]在块346中,安全引擎110生成会话密钥的哈希代码,这取决于所使用的哈希函数的类型而可以包括附加的填充。在块348中,会话密钥的哈希代码被发送到服务器104用于在客户端完成消息中进行验证。会话密钥的哈希代码可以由安全引擎110使用如上面讨论的公共服务器密钥进行加密。
[0039]在块350中,对客户端完成消息做出响应,服务器104发送确认使用商定的密码(例如,会话密钥)的改变密码规范消息。在块352中,服务器104也发送服务器完成消息,该服务器完成消息包括与所述会话密钥类似的哈希代码,用于由客户端设备102进行验证。假设客户端设备102和服务器104验证会话密钥的哈希代码,则握手会话完成并且客户端设备102和服务器104的每一个具有用于加密和解密随后的消息的共享秘密会话密钥。再次,应当意识到的是,客户端设备102的SOC 112的安全引擎110用于所有密码功能以及敏感密钥数据的存储,以便提供在通信序列300期间使用的密码密钥和证书密钥的基于硬件的保护。
[0040]现在参照图4,在使用中,客户端设备102可以执行方法400,以便与服务器104建立安全通信会话。方法400开始于块402,其中提供客户端设备102的SOC 112的安全引擎110。为了这样做,在一个实施例中,安全引擎110接收客户端设备证书、私有客户端设备密钥和公共证书密钥。所述客户端设备证书、私有客户端设备密钥和公共证书密钥典型地由证书权威机构生成,如上面讨论的,该证书权威机构用作客户端设备102的认证的第三方证实者。所述客户端设备证书可以包括由证书权威机构分配给客户端设备102的唯一的设备标识符或号码,以便验证客户端设备102到网络106上的其它设备。如下面更加详细讨论的,私有客户端设备密钥可以由客户端设备102用于签署客户端设备证书,以便认证该客户端设备102到其它设备。相反,公共证书密钥可以由客户端设备102使用以便由证书权威机构验证网络106上其它设备的证书。
[0041]安全引擎110使用安全密钥150加密私有客户端设备密钥,并且将被加密的私有客户端设备密钥存储在安全存储器114中。安全引擎110还可以将客户端设备证书和/或公共证书密钥存储在安全存储器114中。此外,在一些实施例中,安全引擎110可以使用存储在安全引擎110中的安全密钥150来加密客户端设备证书和/或公共证书密钥。
[0042]在块402中提供安全引擎110之后,在块404中,客户端设备102确定是否要与服务器104建立安全通信会话(例如,SSL会话)。如果为是,则在块406中,安全引擎110生成随机的临时随机数值。如上面讨论的,安全引擎110可以使用任何合适的随机数生成算法来生成该随机的临时随机数。在块408中,客户端设备102发送请求(ClientHello消息)来发起到服务器104的安全通信会话。该请求包括在块406中生成的随机的临时随机数,连同服务器104可以从中进行选择的密码协议、压缩方法和/或其它密码选择的列表。
[0043]在块410中,客户端设备102完成服务器认证和服务器密钥交换。在这样做时,客户端设备102可以接收相对应的ServerHello消息,其包括服务器随机的临时随机数、服务器104公钥以及在ClientHello消息中呈现的密码选择的服务器104的选择。如上面讨论的,服务器随机的临时随机数连同客户端随机的临时随机数用于生成会话密钥。这样,安全引擎110可以在安全存储器114中存储服务器随机的临时随机数。此外,在一些实施例中,安全引擎110可以在安全存储器114中存储服务器证书和/或其它密钥数据。例如,在其中使用RSA密钥交换的实施例中,安全引擎110可以在安全存储器114中存储从服务器接收的公共RSA密钥。可选地,在其中使用Diffie-Hellman密钥交换的实施例中,安全引擎110可以在安全存储器114中存储Diffie-Hellman全局值和/或公共DiffieHellman服务器密钥。
[0044]在块414中,客户端104确定服务器104是否被成功认证。如果为否,则方法400循环回到块404,其中客户端设备102可以重新尝试与服务器104建立安全通信会话。
[0045]然而,如果服务器104被成功认证,则方法400前进到块416,其中客户端设备102发送客户端证书给服务器104。如果客户端证书已被加密(例如,使用安全密钥150),则安全引擎110解密客户端证书并且使用私有客户端设备密钥来签名客户端证书。
[0046]在块418中,客户端104使用安全引擎110来完成客户端密钥交换以便维持密钥函数的安全。例如,如果选择了 RSA密钥交换,则在块420中,安全引擎110生成预主密钥,并且使用在块410中接收的服务器公共密钥来加密该预主密钥,这在将被加密的预主密钥发送到服务器104之前进行。可选地,如果选择了 Diffie-Hellman密钥交换,则在块410中,安全引擎110使用从服务器104接收的Diffie-Hellman全球值来生成公共和私有Diffie-Hellman客户端密钥。安全引擎110可以使用安全密钥150或者在块402中设置的公共客户端设备密钥来签名公共Diffie-Hellman客户端密钥。在块422中,客户端设备102将被签名的公共Diffie-Hellman客户端密钥发送到服务器104。在客户端密钥交换期间生成的密钥和相关的密钥数据可以在加密状态(使用安全密钥150)或未加密的状态下被存储在安全存储器114中。
[0047]在块424中,客户端设备102确定客户端设备102是否已经由服务器104成功认证。如果为否,则方法400循环回到块404,其中客户端设备102可以重新尝试与服务器104建立安全通信会话。然而,如果客户端设备102被成功认证,则方法400前进到块426,其中客户端设备102通过通知服务器104随后的消息将使用商定的密码协议来确认与服务器104的密码套件。在这样做时,安全引擎110可以生成主密钥或会话密钥。为了这样做,在其中使用RSA密钥交换的实施例中,安全引擎110计算预主密钥、在块406中生成的客户端随机的临时随机数以及在块410中接收的服务器随机的临时随机数的哈希函数。可选地,在其中使用Diffie-Hellman密钥交换的实施例中,安全引擎110根据Diffie-Hellman全局值、公共Diffie-Hel Iman服务器密钥和私有Diffie-Hel Iman客户端密钥来生成会话密钥。一旦被生成,S0C112的安全性引擎110就可以将所述会话密钥存储在安全引擎110的安全存储器114中。在一些实施例中,在会话密钥存储在安全存储器114中时,可以使用安全密钥150对其进行加密。
[0048]在块428中,安全引擎110生成会话密钥的哈希函数,所述会话密钥被发送到服务器104用于在客户端完成消息中进行验证。再次,如上面讨论的,会话密钥的哈希代码可以通过安全引擎110使用公共服务器密钥进行加密。作为响应,服务器104确认与客户端设备102的密码套件以便确认商定的密码(例如,会话密钥)。服务器104还发送包括会话密钥的类似哈希代码的服务器完成消息,用于由客户端设备102进行验证。假设客户端设备102和服务器104验证会话密钥的哈希代码,则握手会话完成并且客户端设备102和服务器104的每一个具有用于加密和解密随后消息的共享秘密会话密钥。
[0049]尽管在附图和前面的描述中详细说明和描述了本公开,但是这样的说明和描述应当被认为在本质上是示例性的而非限制性的,可以理解,仅示出和描述了示例性实施例,并且请求保护与本公开和所述权利要求一致的所有修改和变型。
【权利要求】
1.一种片上系统装置,包括: 片上系统,包括安全引擎,所述安全引擎具有仅能够由所述安全引擎访问的安全存储器,所述安全引擎用于: 生成随机的临时随机数,用于使用所述临时随机数发起对于通过网络与服务器的安全通信会话的请求; 执行与所述服务器的密码密钥交换,以便生成对称会话密钥来在所述安全通信会话期间对发送到所述服务器的消息进行加密并且对从所述服务器接收的消息进行解密; 将所述会话密钥存储在所述安全存储器中, 所述片上系统用于使用所述会话密钥建立通过所述网络与所述服务器的所述安全通信会话。
2.根据权利要求1所述的片上系统装置,其中,所述片上系统用于使用所述会话密钥建立通过所述网络与所述服务器的安全套接字层通信会话。
3.根据权利要求1所述的片上系统装置,其中,所述安全引擎用于对所述对于所述安全通信会话的请求做出响应,从所述服务器接收服务器临时随机数,响应消息包括服务器临时随机数,并且将所述服务器临时随机数存储在所述安全存储器中。
4.根据权利要求1所述的片上系统装置,其中,所述安全引擎用于从所述服务器接收服务器证书并且将所述服务器证书存储在所述安全存储器中。
5.根据权利要求1所述的片上系统装置,其中,所述安全引擎用于执行与所述服务器的Rivest-Shamir-Adleman密钥交换,以便生成所述对称会话密钥。
6.根据权利要求5所述的片上系统装置,其中,所述安全引擎用于生成预主密钥,使用所述安全引擎的安全密钥对所述预主密钥进行加密,并且将被加密的预主密钥发送到所述服务器。
7.根据权利要求6所述的片上系统装置,其中,所述安全引擎用于使用服务器公共密钥包裹所述预主密钥并且将被包裹的预主密钥存储在安全存储设备中。
8.根据权利要求6所述的片上系统装置,其中,所述安全引擎用于根据所述预主密钥来生成所述会话密钥。
9.根据权利要求8所述的片上系统装置,其中,所述安全引擎用于根据由所述安全引擎生成的所述随机的临时随机数以及从所述服务器接收的临时随机数来计算哈希函数。
10.根据权利要求5所述的片上系统装置,其中,所述安全引擎用于从所述服务器接收公共Rivest-Shamir-Adleman服务器密钥,并且将所述公共Rivest-Shamir-Adleman服务器密钥存储在所述安全存储器中。
11.根据权利要求1所述的片上系统装置,其中,所述安全引擎用于执行与所述服务器的Diffie-Hellman密钥交换,以便生成所述对称会话密钥。
12.根据权利要求11所述的片上系统装置,其中,所述安全引擎用于生成公共Diffie-Hellman客户端密钥和私有Diffie-HelIman客户端密钥,使用所述安全引擎的安全密钥来对所述公共Diffie-Hellman客户端密钥进行签名,并且将被签名的公共Diffie-Hellman密钥发送到所述服务器。
13.根据权利要求12所述的片上系统装置,其中,所述安全引擎用于从所述服务器接收公共Diffie-Hellman服务器密钥并且根据所述私有Diffie-Hellman客户端密钥和所述公共Diffie-Hellman服务器密钥来生成所述会话密钥。
14.根据权利要求13所述的片上系统装置,其中,所述安全引擎用于使用所述会话密钥来对从所述客户端设备发送到所述服务器的随后消息进行加密。
15.根据权利要求11所述的片上系统装置,其中,所述安全引擎用于从所述服务器接收Diffie-Hellman全局值和公共Diffie-Hellman服务器密钥,并且将所述Diffie-Hellman全局值和所述公共Diffie-Hellman服务器密钥中的至少一个存储在安全存储设备中。
16.—种方法,包括: 在客户端设备的片上系统的安全引擎中生成随机的临时随机数; 使用所述客户端设备发起对于通过网络与服务器的安全通信会话的请求,所述请求包括所述随机的临时随机数; 使用所述片上系统的所述安全引擎执行与所述服务器的密码密钥交换,以便生成对称会话密钥来在所述安全通信会话期间对发送到所述服务器的消息进行加密并且对从所述服务器接收的消息进行解密; 将所述会话密钥存储在所述片上系统的所述安全引擎的安全存储器中;并且 使用所述客户端设备,使用所述会话密钥来建立与所述服务器的所述安全通信会话。
17.根据权利要求16所述的方法,其中,发起对于安全通信会话的请求包括发起对于安全套接字层通信会话的请求。
18.根据权利要求16所述的方法,进一步包括: 对所述对于安全通信会话的请求做出响应,从所述服务器接收响应消息,所述响应消息包括服务器临时随机数,并且 将所述服务器临时随机数存储在所述片上系统的所述安全引擎的所述安全存储器中。
19.根据权利要求16所述的方法,其中,发起对于安全通信会话的请求包括将包括所述临时随机数的ClientHello消息发送到所述服务器;并且进一步包括: 从所述服务器接收ServerHello消息,所述ServerHello消息包括服务器临时随机数;并且 将所述服务器临时随机数存储在所述片上系统的所述安全引擎的所述安全存储器中。
20.根据权利要求16所述的方法,进一步包括从所述服务器接收服务器证书并且将所述服务器证书存储在所述客户端设备的所述片上系统的所述安全引擎的所述安全存储器中。
21.根据权利要求16所述的方法,其中,执行与所述服务器的所述密码密钥交换包括使用所述片上系统的所述安全引擎执行与所述服务器的Rivest-Shamir-Adleman密钥交换。
22.根据权利要求21所述的方法,其中,执行与所述服务器的Rivest-Shamir-Adleman密钥交换包括: 在所述安全引擎中生成预主密钥; 使用所述安全引擎的安全密钥来对所述预主密钥进行加密;并且 将被加密的预主密钥发送到所述服务器。
23.根据权利要求22所述的方法,进一步包括: 使用服务器公共密钥将所述预主密钥包裹在所述片上系统的所述安全引擎中,并且 将被包裹的预主密钥存储在所述片上系统的所述安全引擎的安全存储设备中。
24.根据权利要求22所述的方法,其中,执行与所述服务器的Rivest-Shamir-Adleman密钥交换包括:根据所述预主密钥在所述片上系统的所述安全引擎中生成所述会话密钥。
25.根据权利要求24所述的方法,其中,在所述安全引擎中生成所述会话密钥包括:使用所述片上系统的所述安全引擎,根据由所述安全引擎生成的所述随机的临时随机数以及从所述服务器接收的临时随机数来计算哈希函数。
26.根据权利要求21所述的方法,其中,执行与所述服务器的Rivest-Shamir-Adleman密钥交换包括: 从所述服务器接收公共Rivest-Shamir-Adleman服务器密钥;并且 将所述公共Rivest-Shamir-Adleman服务器密钥存储在所述片上系统的所述安全引擎的所述安全存储器中。
27.根据权利要求16所述的方法,其中,执行与所述服务器的所述密码密钥交换包括:使用所述片上系统的所述安全引擎执行与所述服务器的Diffie-Hellman密钥交换。
28.根据权利要求27所述的方法,其中,执行与所述服务器的Diffie-Hellman密钥交换包括: 在所述片上系统的所述安全引擎中生成公共Diffie-Hellman客户端密钥和私有Diffie-Hellman客户端密钥; 使用所述片上系统的所述安全引擎的安全密钥来对所述公共Diffie-Hellman客户端密钥进行签名;并且 将被签名的公共Diffie-Hellman密钥发送到所述服务器。
29.根据权利要求28所述的方法,其中,执行与所述服务器的Diffie-Hellman密钥交换包括: 从所述服务器接收公共Diffie-Hellman服务器密钥; 在所述片上系统的所述安全引擎中,根据所述私有Diffie-Hellman客户端密钥和所述公共Diffie-Hellman服务器密钥生成所述会话密钥。
30.根据权利要求29所述的方法,其中,执行与所述服务器的Diffie-Hellman密钥交换包括:使用所述会话密钥来对从所述客户端设备发送到所述服务器的随后消息进行加密。
31.根据权利要求27所述的方法,其中,执行与所述服务器的Diffie-Hellman密钥交换包括: 从所述服务器接收Diffie-Hellman全局值和公共Diffie-Hellman服务器密钥;并且 将所述Diffie-Hellman全局值和所述公共Diffie-Hellman服务器密钥中的至少一个存储在所述片上系统的所述安全引擎的安全存储设备中。
32.根据权利要求16所述的方法,进一步包括: 取回被存储在所述客户端设备上的客户端证书; 使用被存储在所述片上系统的所述安全引擎的安全存储器中的安全密钥对客户端证书进行签名;并且 将所述客户端证书发送到所述服务器。
33.如权利要求16所述的方法,进一步包括: 在所述片上系统的所述安全引擎中生成从所述客户端发送到所述服务器的先前消息的哈希代码; 使用被存储在所述安全引擎的安全存储器中的安全密钥对所述哈希代码进行签名;并且 向所述服务器发送客户端证书验证消息,所述客户端证书验证消息包括被签名的哈希代码。
34.如权利要求16所述的方法,其中,建立所述安全通信会话包括: 在所述安全引擎中根据所述会话密钥生成哈希代码;并且 向所述服务器发送包括所述哈希代码的客户端完成消息,以便指示所述客户端已经完成初始握手程序。
35.一种源设备,包括: 片上系统,具有安全引擎,所述片上系统包括多个指令,当被执行时,所述指令使所述片上系统执行根据权利要求16-34所述的方法。
36.一个或多个机器可读介质,包括多个指令,对由客户端设备执行做出响应,所述指令使所述客户端设备执行根据权利要求16-34所述的方法。
37.一种方法,包括: 在客户端设备的片上系统的安全引擎中生成随机的临时随机数; 使用所述客户端设备发起对于通过网络与服务器的安全套接字层通信会话的请求,所述请求包括所述随机的临时随机数; 使用所述片上系统的所述安全引擎来执行与所述服务器的密码密钥交换,以便生成对称会话密钥来在所述安全套接字层通信会话期间对发送到所述服务器的消息进行加密并且对从所述服务器接收的消息进行解密; 将所述会话密钥存储在所述片上系统的所述安全引擎的安全存储器中;并且 在所述安全引擎中根据所述会话密钥生成哈希代码;并且 向所述服务器发送包括所述哈希代码的客户端完成消息,以便指示所述客户端已经完成初始握手程序。
38.根据权利要求37所述的方法,其中,执行与所述服务器的所述密码密钥交换包括:使用所述片上系统的所述安全引擎执行与所述服务器的Rivest-Shamir-Adleman密钥交换。
39.根据权利要求38所述的方法,其中,执行与所述服务器的Rivest-Shamir-Adleman密钥交换包括: 在所述安全引擎中生成预主密钥; 使用所述安全引擎的安全密钥对所述预主密钥进行加密;并且 将被加密的预主密钥发送到所述服务器。
40.根据权利要求39所述的方法,进一步包括: 使用服务器公共密钥来将预主密钥包裹在所述安全引擎中,并且 将被包裹的预主密钥存储在所述片上系统的所述安全引擎的安全存储设备中。
41.根据权利要求39所述的方法,其中,执行与所述服务器的Rivest-Shamir-Adleman密钥交换包括:在所述片上系统的所述安全引擎中根据所述预主密钥生成所述会话密钥。
42.根据权利要求41所述的方法,其中,在所述安全引擎中生成所述会话密钥包括:使用所述片上系统的所述安全引擎,根据由所述安全引擎生成的所述随机的临时随机数以及从所述服务器接收的临时随机数来计算哈希函数。
43.根据权利要求37所述的方法,其中,执行与所述服务器的所述密码密钥交换包括:使用所述片上系统的所述安全引擎执行与所述服务器的Diffie-Hellman密钥交换。
44.根据权利要求43所述的方法,其中,执行与所述服务器的Diffie-Hellman密钥交换包括: 在所述片上系统的所述安全引擎中,生成公共Diffie-Hellman客户端密钥和私有Diffie-Hellman客户端密钥; 使用所述片上系统的所述安全引擎的安全密钥对所述公共Diffie-Hellman客户端密钥进行签名;并且 将被签名的公共Diffie-Hellman密钥发送到所述服务器。
45.根据权利要求44所述的方法,其中,执行与所述服务器的Diffie-Hellman密钥交换包括: 从所述服务器接收公共Diffie-Hellman服务器密钥; 在所述片上系统的所述安全引擎中,根据所述私有Diffie-Hellman客户端密钥和所述公共Diffie-Hellman服务器密钥生成所述会话密钥。
46.一种源设备,包括: 具有安全引擎的片上系统,所述片上系统包括多个指令,当被执行时,所述指令使所述片上系统执行根据权利要求37-45所述的方法。
47.一个或多个机器可读介质,包括多个指令,对由客户端设备执行做出响应,所述指令使所述客户端设备执行根据权利要求37-45所述的方法。
【文档编号】H04L9/32GK104170312SQ201180075550
【公开日】2014年11月26日 申请日期:2011年12月15日 优先权日:2011年12月15日
【发明者】H·M·科斯拉维, E·C·埃普, F·卡比尔 申请人:英特尔公司