USB PD协议芯片以及身份验证方法转让专利

申请号 : CN202210391576.X

文献号 : CN115037474B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 左正

申请人 : 深圳曼巴微电子有限公司

摘要 :

本发明公开了USB PD协议芯片以及身份验证方法,其中,上述芯片包括:计算/控制模块,内部总线,与计算/控制模块通信连接的检测及放电模块,与计算/控制模块通信连接的通道配置电路及开关电路模块,通过内部总线与计算/控制模块通信连接的接口模块、USB PD物理层模块、伪随机数生成模块、随机存取存储模块、寄存器模块、程序存储器模块以及ECC加速模块;伪随机数生成模块用于生成伪随机数,伪随机数满足USB PD协议的标准;计算/控制模块协同ECC加速模块根据伪随机数对USB PD协议芯片的外部通信过程进行身份验证。与现有技术相比,本发明有利于提高USB PD协议芯片使用的安全性。

权利要求 :

1.一种USB PD协议芯片,其特征在于,所述芯片包括:

计算/控制模块、内部总线、检测及放电模块、通道配置电路及开关电路模块、接口模块、USB PD物理层模块、伪随机数生成模块、随机存取存储模块、寄存器模块、程序存储器模块以及ECC加速模块;

所述内部总线与所述计算/控制模块通信连接,所述检测及放电模块与所述计算/控制模块通信连接,所述通道配置电路及开关电路模块与所述计算/控制模块通信连接;

所述接口模块、所述USB PD物理层模块、所述伪随机数生成模块、所述随机存取存储模块、所述寄存器模块、所述程序存储器模块以及所述ECC加速模块分别与所述内部总线通信连接;

所述伪随机数生成模块用于生成伪随机数,所述伪随机数满足USB PD协议的标准;

所述ECC加速模块中部署有椭圆曲线算法,所述计算/控制模块采用软件方式与所述ECC加速模块协同工作;

所述计算/控制模块与所述ECC加速模块协同工作且根据所述伪随机数对所述USB PD协议芯片的外部通信过程进行身份验证,包括:所述计算/控制模块协同所述ECC加速模块根据所述伪随机数以及预设的与所述USB PD协议对应的曲线进行椭圆曲线加密运算、椭圆曲线解密运算、数字签名生成以及验签运算;

采用硬件实现ECC底层运算,软件实现ECC算法流程,包括:所述计算/控制模块通过软件控制ECC加速模块,并调用所述ECC加速模块中的椭圆曲线算法,其中,所述ECC加速模块是所述椭圆曲线加密算法库算法的专用集成电路;

所述检测及放电模块用于检测输入所述USB PD协议芯片的VBUS电流的过流情况;

所述通道配置电路及开关电路模块用于进行电源供应配置;

所述USB PD物理层模块采用双相标记码,并用于实现基于USB PD协议的数据通信;

USB PD协议的通信数据包中包含CRC校验,并使用4b5b编码;

USB PD协议芯片通过接口模块和烧录器连接,通过接口模块和烧录器进行身份验证和固件烧录。

2.一种身份验证方法,其特征在于,所述身份验证方法应用于数据发送端和数据接收端的通信过程中,所述数据接收端中包括权利要求1所述的USB PD协议芯片,所述方法包括:所述数据发送端对通信数据进行加密,获得待发送数据,并向所述数据接收端发送所述待发送数据;

所述数据接收端接收所述待发送数据,并通过所述USB PD协议芯片对所述待发送数据进行身份验证。

3.根据权利要求2所述的身份验证方法,其特征在于,所述数据发送端对通信数据进行加密,获得待发送数据,包括:所述数据发送端根据安全哈希算法计算获取所述通信数据的摘要;

所述数据发送端根据发送端私钥对所述摘要进行椭圆曲线加密签名运算,获得发送端数字签名;

所述数据发送端根据椭圆曲线加密算法以及预设的认证授权私钥对待加密信息进行加密,获得发送端数字证书,其中,所述待加密信息包括发送端信息、发送端公钥以及预设的认证数字证书信息;

所述数据发送端根据所述发送端私钥以及所述椭圆曲线加密算法对所述摘要进行加密,获得加密摘要;

所述数据发送端构建待发送数据,所述待发送数据中包括所述通信数据、所述发送端数字证书、所述发送端数字签名、预设的认证授权公钥以及所述加密摘要。

4.根据权利要求3所述的身份验证方法,其特征在于,所述数据接收端接收所述待发送数据,并通过所述USB PD协议芯片对所述待发送数据进行身份验证,包括:所述数据接收端接收所述待发送数据并获得对应的被接收通信数据、被接收发送端数字证书、被接收发送端数字签名、被接收认证授权公钥以及被接收加密摘要;

所述数据接收端根据预设的认证授权公钥对所述被接收发送端数字证书进行解密,获得解密发送端信息、解密发送端公钥以及解密认证数字证书信息;

所述数据接收端根据椭圆曲线解密算法和所述解密发送端公钥对所述被接收加密摘要进行解密,获得解密摘要;

所述数据接收端根据所述解密发送端公钥对待验证数据进行验签运算,并获得身份验证结果,其中,所述待验证数据包括所述解密摘要和所述被接收发送端数字签名;

当所述身份验证结果为验证成功时,所述数据接收端根据所述安全哈希算法计算获取所述被接收通信数据对应的接收端摘要;

所述数据接收端根据所述接收端摘要与所述解密摘要进行数据完整性验证,并获得数据完整性验证结果。

5.根据权利要求4所述的身份验证方法,其特征在于,在所述接收端根据所述接收端摘要与所述解密摘要进行数据完整性验证,并获得数据完整性验证结果之后,所述方法还包括:所述数据接收端将所述身份验证结果和/或所述数据完整性验证结果反馈给所述数据发送端。

6.根据权利要求5所述的身份验证方法,其特征在于,所述数据发送端是电源消耗端,所述数据接收端是电源提供端。

7.根据权利要求6所述的身份验证方法,其特征在于,所述数据发送端为烧录器。

说明书 :

USB PD协议芯片以及身份验证方法

技术领域

[0001] 本发明涉及芯片安全技术领域,尤其涉及的是一种USB PD协议芯片以及身份验证方法。

背景技术

[0002] 随着科学技术的发展,尤其是芯片技术的发展,芯片的种类越来越多,对应的应用范围也越来越广泛。USB PD协议(USB‑Power Delivery)是USB‑IF组织(USB Implementers Forum)制定的一种快速充电规范,目前已经成为一种主流的快充协议,越来越多的设备需要基于USB PD协议实现快速充电。
[0003] 现有技术中,通过USB PD协议芯片具体实现对USB PD协议的支持。现有技术的问题在于,目前的USB PD协议芯片没有考虑安全性,缺少身份验证的功能,因此在使用过程中无法实现身份验证,不利于提高USB PD协议芯片使用的安全性。
[0004] 因此,现有技术还有待改进和发展。

发明内容

[0005] 本发明的主要目的在于提供一种USB PD协议芯片以及身份验证方法,旨在解决现有技术中USB PD协议芯片没有考虑安全性,缺少身份验证的功能,因此在使用过程中无法实现身份验证,不利于提高USB PD协议芯片使用的安全性的问题。
[0006] 为了实现上述目的,本发明第一方面提供一种USB PD协议芯片,其中,上述芯片包括:
[0007] 计算/控制模块、内部总线、检测及放电模块、通道配置电路及开关电路模块、接口模块、USB PD物理层模块、伪随机数生成模块、随机存取存储模块、寄存器模块、程序存储器模块以及ECC加速模块;
[0008] 上述内部总线与上述计算/控制模块通信连接,上述检测及放电模块与上述计算/控制模块通信连接,上述通道配置电路及开关电路模块与上述计算/控制模块通信连接;
[0009] 上述接口模块、上述USB PD物理层模块、上述伪随机数生成模块、上述随机存取存储模块、上述寄存器模块、上述程序存储器模块以及上述ECC加速模块分别与上述内部总线通信连接;
[0010] 上述伪随机数生成模块用于生成伪随机数,上述伪随机数满足USB PD协议的标准;
[0011] 上述计算/控制模块与上述ECC加速模块协同工作且根据上述伪随机数对上述USB PD协议芯片的外部通信过程进行身份验证。
[0012] 可选的,上述ECC加速模块中部署有椭圆曲线算法,上述计算/控制模块采用软件方式与上述ECC加速模块协同工作。
[0013] 可选的,上述计算/控制模块协同上述ECC加速模块根据上述伪随机数以及预设的与上述USB PD协议对应的曲线进行椭圆曲线加密运算、椭圆曲线解密运算、数字签名生成以及验签运算。
[0014] 可选的,上述检测及放电模块用于检测输入上述USB PD协议芯片的VBUS电流的过流情况;
[0015] 上述通道配置电路及开关电路模块用于进行电源供应配置;
[0016] 上述USB PD物理层模块采用双相标记码,并用于实现基于USB PD协议的数据通信。
[0017] 本发明第二方面提供一种身份验证方法,上述身份验证方法应用于数据发送端和数据接收端的通信过程中,上述数据接收端中包括上述任意一种USB PD协议芯片,上述方法包括:
[0018] 上述数据发送端对通信数据进行加密,获得待发送数据,并向上述数据接收端发送上述待发送数据;
[0019] 上述数据接收端接收上述待发送数据,并通过上述USB PD协议芯片对上述待发送数据进行身份验证。
[0020] 可选的,上述数据发送端对通信数据进行加密,获得待发送数据,包括:
[0021] 上述数据发送端根据安全哈希算法计算获取上述通信数据的摘要;
[0022] 上述数据发送端根据发送端私钥对上述摘要进行椭圆曲线加密签名运算,获得发送端数字签名;
[0023] 上述数据发送端根据椭圆曲线加密算法以及预设的认证授权私钥对待加密信息进行加密,获得发送端数字证书,其中,上述待加密信息包括发送端信息、发送端公钥以及预设的认证数字证书信息;
[0024] 上述数据发送端根据上述发送端私钥以及上述椭圆曲线加密算法对上述摘要进行加密,获得加密摘要;
[0025] 上述数据发送端构建待发送数据,上述待发送数据中包括上述通信数据、上述发送端数字证书、上述发送端数字签名、预设的认证授权公钥以及上述加密摘要。
[0026] 可选的,上述数据接收端接收上述待发送数据,并通过上述USB PD协议芯片对上述待发送数据进行身份验证,包括:
[0027] 上述数据接收端接收上述待发送数据并获得对应的被接收通信数据、被接收发送端数字证书、被接收发送端数字签名、被接收认证授权公钥以及被接收加密摘要;
[0028] 上述数据接收端根据预设的认证授权公钥对上述被接收发送端数字证书进行解密,获得解密发送端信息、解密发送端公钥以及解密认证数字证书信息;
[0029] 上述数据接收端根据椭圆曲线解密算法和上述解密发送端公钥对上述被接收加密摘要进行解密,获得解密摘要;
[0030] 上述数据接收端根据上述解密发送端公钥对待验证数据进行验签运算,并获得身份验证结果,其中,上述待验证数据包括上述解密摘要和上述被接收发送端数字签名;
[0031] 当上述身份验证结果为验证成功时,上述数据接收端根据上述安全哈希算法计算获取上述被接收通信数据对应的接收端摘要;
[0032] 上述数据接收端根据上述接收端摘要与上述解密摘要进行数据完整性验证,并获得数据完整性验证结果。
[0033] 可选的,在上述接收端根据上述接收端摘要与上述解密摘要进行数据完整性验证,并获得数据完整性验证结果之后,上述方法还包括:
[0034] 上述数据接收端将上述身份验证结果和/或数据完整性上述验证结果反馈给上述数据发送端。
[0035] 可选的,上述数据发送端是电源消耗端,上述数据接收端是电源提供端。
[0036] 可选的,上述数据发送端为烧录器。
[0037] 由上可见,本发明方案中提供一种USB PD协议芯片,上述芯片包括:计算/控制模块、内部总线、检测及放电模块、通道配置电路及开关电路模块、接口模块、USB PD物理层模块、伪随机数生成模块、随机存取存储模块、寄存器模块、程序存储器模块以及ECC加速模块;上述内部总线与上述计算/控制模块通信连接,上述检测及放电模块与上述计算/控制模块通信连接,上述通道配置电路及开关电路模块与上述计算/控制模块通信连接;上述接口模块、上述USB PD物理层模块、上述伪随机数生成模块、上述随机存取存储模块、上述寄存器模块、上述程序存储器模块以及上述ECC加速模块分别与上述内部总线通信连接;上述伪随机数生成模块用于生成伪随机数,上述伪随机数满足USB PD协议的标准;上述计算/控制模块与上述ECC加速模块协同工作且根据上述伪随机数对上述USB PD协议芯片的外部通信过程进行身份验证。与现有技术中的USB PD协议芯片相比,本发明中的USB PD协议芯片设置伪随机数生成模块和ECC加速模块,可以通过伪随机数生成模块生成符合USB PD协议的标准的伪随机数,并通过协同工作的计算/控制模块和ECC加速模块根据对应的伪随机数实现身份验证,为USB PD协议芯片增加了适配USB PD协议的身份验证的功能,有利于提高USB PD协议芯片使用的安全性。

附图说明

[0038] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
[0039] 图1是本发明实施例提供的一种USB PD协议芯片的结构示意图;
[0040] 图2是本发明实施例提供的一种USB PD协议芯片的具体结构示意图;
[0041] 图3是本发明实施例提供的一种软硬件划分示意图;
[0042] 图4是本发明实施例图1中ECC加速模块120的具体结构示意图;
[0043] 图5是本发明实施例提供的一种身份验证方法的流程示意图;
[0044] 图6是本发明实施例提供的一种USB电源传输数据包格式示意图;
[0045] 图7是本发明实施例提供的一种电源消耗端和电源提供端之间进行通信及身份验证的具体流程示意图;
[0046] 图8是本发明实施例提供的一种固件安全烧录验证的流程示意图。

具体实施方式

[0047] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况下,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
[0048] 应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0049] 还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0050] 如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当…时”或“一旦”或“响应于确定”或“响应于检测到”。类似的,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述的条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0051] 下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0052] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
[0053] 随着科学技术的发展,尤其是芯片技术的发展,芯片的种类越来越多,对应的应用范围也越来越广泛。USB PD协议(USB‑Power Delivery)是USB‑IF组织(USB Implementers Forum)制定的一种快速充电规范,目前已经成为一种主流的快充协议,越来越多的设备需要基于USB PD协议实现快速充电。
[0054] USB PD快充协议可以通过USB电缆和连接器增加电力的输送,扩展USB应用中的电缆总线供电能力,从而达到提高充电电压或电流的目的,并且可以自由改变电力的输送方向。Type‑C接口默认最大支持15W(5V/3A),但是在实现了USB‑PD协议以后,能够使输出功率最大支持到100W(20V/5A)。因此目前许多使用Type‑C接口的设备都会支持USB PD协议。同时,USB PD协议中还包括了部分其它快充协议,其应用前景较高。
[0055] 现有技术中,通过USB PD协议芯片具体实现对USB PD协议的支持。现有技术的问题在于,目前的USB PD协议芯片没有考虑安全性,缺少身份验证的功能,因此在使用过程中无法实现身份验证,不利于提高USB PD协议芯片使用的安全性。
[0056] 具体的,通用串行总线电源传输R3.1(USB PD3.1)及以上版本协议中要求增添数字证书及数字签名功能,但现有的USB PD协议芯片中没有椭圆曲线数字签名算法(ECDSA,Elliptic Curve Digital Signature Algorithm)和椭圆曲线(ECC)加解密功能,无法实现数字签名认证以及ECC加解密功能。在一种应用场景中,需要在USB PD协议芯片外设置一颗专用的安全加密芯片来实现上述功能,不利于芯片的使用和集成化,且成本较高。
[0057] 为了解决上述多个问题中的至少一个问题,本发明方案中提供一种USB PD协议芯片,上述芯片包括:计算/控制模块、内部总线、检测及放电模块、通道配置电路及开关电路模块、接口模块、USB PD物理层模块、伪随机数生成模块、随机存取存储模块、寄存器模块、程序存储器模块以及ECC加速模块;上述内部总线与上述计算/控制模块通信连接,上述检测及放电模块与上述计算/控制模块通信连接,上述通道配置电路及开关电路模块与上述计算/控制模块通信连接;上述接口模块、上述USB PD物理层模块、上述伪随机数生成模块、上述随机存取存储模块、上述寄存器模块、上述程序存储器模块以及上述ECC加速模块分别与上述内部总线通信连接;上述伪随机数生成模块用于生成伪随机数,上述伪随机数满足USB PD协议的标准;上述计算/控制模块与上述ECC加速模块协同工作且根据上述伪随机数对上述USB PD协议芯片的外部通信过程进行身份验证。
[0058] 与现有技术中的USB PD协议芯片相比,本发明中的USB PD协议芯片设置伪随机数生成模块和ECC加速模块,可以通过伪随机数生成模块生成符合USB PD协议的标准的伪随机数,并通过协同工作的计算/控制模块和ECC加速模块根据对应的伪随机数实现身份验证,为USB PD协议芯片增加了适配USB PD协议的身份验证的功能,有利于提高USB PD协议芯片使用的安全性。例如,可以在设备充电过程中,对需要充电的设备进行身份验证,再决定是否为其充电,从而避免非授权设备充电。
[0059] 同时,在原有的芯片上增加一个硬件的伪随机数生成模块以及一个ECC加速模块(ECC加速模块可以支持点乘运算和素数监测),从而以较高的效率及较低的成本实现数字签名认证以及ECC加解密功能,提高USB PD协议芯片使用的安全性,进而提高用户的使用体验。
[0060] 示例性设备
[0061] 如图1所示,本发明实施例提供一种USB PD协议芯片1,具体的,包括:
[0062] 计算/控制模块110、内部总线111、检测及放电模块112、通道配置电路及开关电路模块113、接口模块114、USB PD物理层模块115、伪随机数生成模块116、随机存取存储模块117、寄存器模块118、程序存储器模块119以及ECC加速模块120;
[0063] 上述内部总线111与上述计算/控制模块110通信连接,上述检测及放电模块112与上述计算/控制模块110通信连接,上述通道配置电路及开关电路模块113与上述计算/控制模块110通信连接;
[0064] 上述接口模块114、上述USB PD物理层模块115、上述伪随机数生成模块116、上述随机存取存储模块117、上述寄存器模块118、上述程序存储器模块119以及上述ECC加速模块120分别与上述内部总线111通信连接;
[0065] 上述伪随机数生成模块116用于生成伪随机数,上述伪随机数满足USB PD协议的标准;
[0066] 上述计算/控制模块110与上述ECC加速模块120协同工作且根据上述伪随机数对上述USB PD协议芯片1的外部通信过程进行身份验证。
[0067] 具体的,上述接口模块114、USB PD物理层模块115、伪随机数生成模块116、随机存取存储模块117、寄存器模块118、程序存储器模块119以及ECC加速模块120分别通过上述内部总线111与上述计算/控制模块110通信连接。
[0068] 其中,上述USB PD协议芯片1是支持USB PD协议的芯片,上述计算/控制模块110可以是微型控制单元(MCU),上述内部总线111用于为内部模块之间提供通信通道。上述接口模块114用于本实施例中的USB PD协议芯片1和外部的电子装置进行数据通信,可选的,上述接口模块114可以是通用异步收发传输器(UART)、双向二线制同步串行总线(I2C)、串行外设接口(SPI)或通用串行总线接口(USB)。
[0069] 本实施例中,上述伪随机数生成模块116可以是一个伪随机数生成器,其生成的伪随机数满足PD3.1协议规定的NIST‑SP‑800‑90A标准,上述伪随机数是ECDSA和ECC加解密过程中需要使用到的。
[0070] 具体的,本实施例中,上述ECC加速模块120中部署有椭圆曲线算法,上述计算/控制模块110采用软件方式与上述ECC加速模块120协同工作。具体的,上述计算/控制模块110可以通过软件调用上述ECC加速模块120中的椭圆曲线算法(例如椭圆曲线加密算法和椭圆曲线解密算法)。上述计算/控制模块110协同上述ECC加速模块120根据上述伪随机数以及预设的与上述USB PD协议对应的曲线进行椭圆曲线加密运算、椭圆曲线解密运算、数字签名生成以及验签运算。需要说明的是,本实施例中,上述计算/控制模块110是一个用于进行计算和控制的模块,即计算/控制模块110同时具备计算和控制的功能,即可以作为一个计算控制模块。
[0071] 具体的,本实施例中,上述检测及放电模块112用于检测输入上述USB PD协议芯片1的VBUS电流的过流情况;
[0072] 上述通道配置电路及开关电路模块113用于进行电源供应配置;
[0073] 上述USB PD物理层模块115采用双相标记码,并用于实现基于USB PD协议的数据通信。
[0074] 需要说明的是,实际应用过程中,上述USB PD协议芯片1还可以包括其它模块、单元或具体器件,在此不作具体限定。
[0075] 本实施例中,还基于一种具体应用场景对上述USB PD协议芯片1进行具体说明,图2是本发明实施例提供的一种USB PD协议芯片的具体结构示意图,图2中带有小斜杠的线代表与总线的连接线。具体的,图2中所示的USB PD协议芯片是一种SoC类型的PD协议芯片,上述芯片中包括:计算/控制模块110(MCU),内部总线111(Internal BUS),检测及放电模块
112(即Detection&Discharge)、通道配置电路及开关电路模块113(Channel 
Configuration&CC Switch)、接口模块114、USB PD物理层模块115(USB PD Physical)、伪随机数生成模块116(PRNG)、随机存取存储模块117(RAM)、寄存器模块118(Register)、程序存储器模块119(Program Memory)以及ECC加速模块120。
[0076] 需要说明的是,图2中,VBUS是5~24V USB设备供电的电源线,由Type‑C连接,用于通过USB接口取电;VDD是正电源电压,用于为本实施例中的USB PD协议芯片1供电;INT是中断管脚,用于向外部电子装置提供中断信号;VCONN为有源电缆提供电源;CC1/CC2是Type‑C配置信道信号1/2,用于连接器定位、连接检测和移除、电流能力和PD协议通信。
[0077] 上述检测及放电模块112(即Detection&Discharge)具有VBUS电流的检测能力,其主要作用是对过流状况进行检测,另外还会含有VBUS的放电电路。CC1和CC2的检测电路在源端和吸端都会存在。需要说明的是,USB Type‑C标准中引入了双角色能力。每根USB Type‑C电缆的两端都是完全等同的,因此连接起来的两台设备必须相互进行沟通以确定自己应作为主机还是外设而存在。角色的沟通需针对数据和电源分别进行,此工作在电缆接通之后就要进行。用于数据通讯的主机端口被称为下行端口(DFP,Downstream Facing Port),外设端口被称为上行端口(UFP,Upstream Facing Port)。而电源方面,供电端被称为源端(Source),耗电端被称为吸端(Sink)。有的设备既可以有数据上的双角色(DRD,Dual Roles of Data)能力,又具有电源上的双角色。CC线在两台设备连接期间能起到定义电源角色的作用。
[0078] USB Type‑C系统还具有较高的供电能力,具体的,传统的USB电缆只容许提供2.5W的功率,USB Type‑C电缆则容许提供高达5V/3A。即15W的最大功率,如果采用了电源传输(PD,Power Deliver)协议,电压电流指标就可以提升到20V/5A,即100W的最大功率,这就容许通过USB端口为大型设备如监视器等设备供电,也容许对含有大型电池包的笔记本电脑等设备进行充电。USB PD 3.0协议还支持可编程电源(PPS,Programmable Power Supply)协议,容许对总线电压和电流进行精确调节,而电压则可以低于5V。利用这样的协议,可以实现使用可调的总线电压对电池进行直接充电的高效直充系统,这时的总线电压可以低达3V。
[0079] 上述通道配置电路及开关电路模块113(Channel Configuration&CC Switch)的作用是对两个连接在一起的设备(即源端设备和吸端设备)进行电源供应的配置。初始情况下,USB Type‑C接口的VBUS上是没有电源供应的,系统需要在电缆连接期间进行设备角色的定义,插座上的CC线被上拉至高电平的设备将被定义为电源供应者即源端,而被下拉至低电平的设备将被定义为电源消费者即吸端。
[0080] 在一种应用场景中,源端的CC1和CC2通过电阻Rp被拉高,被监测着的CC1或CC2在没有连接任何东西时总是处于高电平,一旦吸端接入,CC1或CC2的电压就被电阻Rd拉低了。由于电缆中只有一条CC线,因而源端可以分辨出是哪个CC端被拉低了。吸端的CC1或CC2的电压也同样被监测着,一旦发现某条CC线被拉高了,其电压水平就让吸端知道源端电流供应能力,如此,可以实现电源配置。其中,上述电阻Rp和电阻Rd可以是芯片中集成的电阻器件,电路中的上拉电阻Rp也可以用电流源代替,便于实现且可以不受V+电源电压误差的影响。
[0081] 上述USB PD物理层模块115(USB PD Physical)用于实现USB PD通讯,通信过程中采用双相标记码(BMC,Bi‑phase Mark Code)实现USB PD通讯,BMC码是一种单线通信编码,数据1的传输需要有一次高/低电平之间的切换过程,数据0的传输则是固定的高电平或低电平。每个数据包都含有0/1交替的前导码(Preamble)、报文起始码(SOP,Start of Packet)、报文头、信息数据字节、CRC循环冗余编码和报文结束码(EOC,End of Packet)。
[0082] 伪随机数生成模块116(PRNG)模块可生成满足PD3.1协议规定的NIST‑SP‑800‑90A标准的伪随机数,用于进行ECDSA和ECC加解密。
[0083] 上述接口模块114(I2C)、随机存取存储模块117(RAM)、伪随机数生成模块116(PRNG)、寄存器模块118(Register)以及程序存储器模块119(Program Memory)以及ECC加速模块120都与内部总线111(Internal BUS)连接,MCU通过总线与上述各模块进行连接及通信。上述MCU可以是8位MCU或32位MCU,优选32位MCU以实现更好的算法性能,MCU采用软件方式与ECC加速模块120协同工作(即MCU可以通过软件控制ECC加速模块120并调用其中的椭圆曲线算法),并根据伪随机数生成模块116生成的伪随机以实现ECDSA签名、ECC加解密、SHA2‑256散列值生成等功能。本实施例中,预设的与上述USB PD协议对应的曲线包括NIST P256曲线和secp256r1曲线,选取PD3.1协议的要求的NIST P256曲线和secp256r1曲线进行ECC加解密运算和数字签名及验签运算,其SHA2‑256散列值的生成满足NIST‑FIPS‑180‑4加密标准,其生成的数字证书满足协议要求的X509v3‑ISO‑9594‑8;ITU‑T X.509标准。
[0084] 上述程序存储器模块119(Program Memory)可以是掩模存储器(MASK ROM)、一次性可编程存储器(OTP ROM)、多次可编程存储器(MTP ROM)或闪存(Flash ROM)。需要说明的是,采用MASK ROM时,固件在芯片制造时烧录进去,出厂后不可更改;采用OTP ROM时,固件在原厂FT终测时烧录进去,产品销售后不可更改;采用MTP ROM或Flash ROM时可多次进行擦写,原厂可以根据用户需求更改固件。本实施例中优选MTP ROM或Flash ROM,可实现根据需要更改固件,以满足后续PD协议升级后更新固件的需求。
[0085] 需要说明的是,ECC加速模块120可以是椭圆曲线加密算法库算法的专用集成电路(ASIC)。椭圆曲线密码算法可由软件(运行ECC算法库)或纯硬件(ASIC)实现数字签名、验签和加解密功能。纯软件实现的方案实施起来较为容易,但其效率低、运算速度慢、功耗高、大量占用MCU运算资源、且稳定性差;而ASIC完整固化算法的方式速度快,但会占用很大的芯片面积,导致成本增加,更因为固化算法,灵活性及兼容性都很差,导致后续升级困难。
[0086] 本实施例中采用软硬件协同设计使一个设计能够综合利用软件灵活可配置的优点和硬件运算速度快、功耗低、不占用MCU运算资源的优点,规避纯软件和纯硬件方式的不足,来获得更快的运行速度、更低的功耗、更少的硬件资源消耗和更大的灵活度。见图3,为了满足ECC多种运算形式的需要,结合硬件的约束,对软硬件进行了划分,采用硬件实现ECC底层运算,软件实现ECC算法流程的形式。
[0087] 椭圆曲线算法可以基于素数域GF(p)或基于二进制域(GF(2m))上的椭圆曲线。根据USB PD‑3.1协议要求,本实施例中采用的是素数域的NIST P256曲线和secp256r1曲线。
[0088] 为了对基于素数域椭圆曲线密码算法系统进行有效的软硬件划分,首先在单片机系统上实现了基于C语言和开源代码的安全套接字层密码(OpenSSL)库函数的纯软件ECC应用。通过评估软件应用的性能,发现点乘运算和素数检测占据了整个系统50%以上的执行时间,为了提高系统性能,需要对这两种运算进行优化。对最耗时的点乘运算和素数检测可采用大量并行运算来提高速度,而专用集成电路适用于大规模并行运算,故可以采用硬件电路来实现;而各种分支跳转指令又特别适合MCU来执行,故可以采用软件来实现。
[0089] 表1
[0090]应用层 数字签名、签名认证、加/解密
群运算层 点乘
曲线层 点加、倍点
有限域层 模加/减、模乘、模平方及模逆
[0091] 表1是ECC算法的层次结构示意表,如表1所示,ECC各种应用协议都以点加、倍点以及点乘运算规则为基础,具有层次性。上层算法可以通过调用下层的算法来实现,点乘运算可以由多次调用点加和倍点操作完成,而点加,倍点运算则可以通过调用有限域上的模运算而实现,包括模加/减、模约减、模乘、模平方及模逆等运算。
[0092] 参照图4,是ECC加速模块120的结构框图,上述ECC加速模块120包括总线接口200、点乘运算单元201、素数检查单元202、曲线域运算单元203、素数域运算单元204、通用寄存器组205和SHA2‑256单元206。上述曲线域运算单元203可实现点加、倍点运算,上述素数域运算单元204可实现模加、模减、模乘、模逆及模幂等运算。本发明采用多级流水线硬件加法器和乘法器来实现上述运算单元,可并行高速的实现乘累加运算,大大提高运算效率。上述SHA2‑256单元206采用硬件方式,可快速实现SHA2散列值计算,其生成的散列值为256bits(32bytes)。
[0093] 表2
[0094]
[0095] 表2是运算单元的软硬件性能比较示意表,通过表2的运算单元软硬件性能对比可知,软件运算由于受到算法和并行速度的限制,效率非常低,相比之下硬件实现带来了巨大的性能提升。硬件实现方式以少量的面积代价带来了速度的极大提升。
[0096] 由上可见,与现有技术中的USB PD协议芯片相比,本发明中的USB PD协议芯片1设置伪随机数生成模块116和ECC加速模块120,可以通过伪随机数生成模块116生成符合USB PD协议的标准的伪随机数,并根据对应的伪随机数以及协同工作的MCU和ECC加速模块实现身份验证,为USB PD协议芯片增加了适配USB PD协议的身份验证的功能,有利于提高USB PD协议芯片使用的安全性。例如,可以在设备充电过程中,对需要充电的设备进行身份验证,再决定是否为其充电,从而避免非授权设备充电。
[0097] 示例性方法
[0098] 对应于上述USB PD协议芯片,本发明实施例还提供一种身份验证方法,上述身份验证方法应用于数据发送端和数据接收端的通信过程中,上述数据接收端中包括上述任意一种USB PD协议芯片,如图5所示,上述身份验证方法包括:
[0099] 步骤S100,数据发送端对通信数据进行加密,获得待发送数据,并向数据接收端发送上述待发送数据。
[0100] 步骤S200,上述数据接收端接收上述待发送数据,并通过上述USB PD协议芯片对上述待发送数据进行身份验证。
[0101] 需要说明的是,上述数据接收端中可以包括上述USB PD协议芯片,或者,上述数据接收终端也可以为上述USB PD协议芯片,不包括其它模块、单元或器件,在此不作具体限定。
[0102] 进一步的,上述步骤S100具体包括如下步骤:上述数据发送端根据安全哈希算法计算获取上述通信数据的摘要;上述数据发送端根据发送端私钥对上述摘要进行椭圆曲线加密签名运算,获得发送端数字签名;上述数据发送端根据椭圆曲线加密算法以及预设的认证授权私钥对待加密信息进行加密,获得发送端数字证书,其中,上述待加密信息包括发送端信息、发送端公钥以及预设的认证数字证书信息;上述数据发送端根据上述发送端私钥以及上述椭圆曲线加密算法对上述摘要进行加密,获得加密摘要;上述数据发送端构建待发送数据,上述待发送数据中包括上述通信数据、上述发送端数字证书、上述发送端数字签名、预设的认证授权公钥以及上述加密摘要。
[0103] 上述步骤S200具体包括如下步骤:上述数据接收端接收上述待发送数据并获得对应的被接收通信数据、被接收发送端数字证书、被接收发送端数字签名、被接收认证授权公钥以及被接收加密摘要;上述数据接收端根据预设的认证授权公钥对上述被接收发送端数字证书进行解密,获得解密发送端信息、解密发送端公钥以及解密认证数字证书信息;上述数据接收端根据椭圆曲线解密算法和上述解密发送端公钥对上述被接收加密摘要进行解密,获得解密摘要;上述数据接收端根据上述解密发送端公钥对待验证数据进行验签运算,并获得身份验证结果,其中,上述待验证数据包括上述解密摘要和上述被接收发送端数字签名;当上述身份验证结果为验证成功时,上述数据接收端根据上述安全哈希算法计算获取上述被接收通信数据对应的接收端摘要;上述数据接收端根据上述接收端摘要与上述解密摘要进行数据完整性验证,并获得数据完整性验证结果。
[0104] 进一步的,在上述接收端根据上述接收端摘要与上述解密摘要进行数据完整性验证,并获得数据完整性验证结果之后,上述方法还包括:上述数据接收端将上述身份验证结果和/或上述数据完整性验证结果反馈给上述数据发送端。
[0105] 其中,上述身份验证结果是进行身份验证的结果,上述数据完整性验证结果是进行数据完整性验证的结果,本实施例中将上述身份验证结果和上述数据完整性验证结果都反馈给上述数据发送端。
[0106] 在一种应用场景中,上述数据发送端是电源消耗端,上述数据接收端是电源提供端。
[0107] 具体的,基于USB PD协议进行快速充电时,电源消耗端需要先向电源提供端发送数据以触发电源提供端为其充电。现有技术中使用的USB PD协议芯片缺少身份验证功能,则未被许可的电源消耗端也可以进行充电,不利于提高使用的安全性。本申请中提供的USB PD协议芯片增加了数字证书及数字签名功能,并结合对应的身份验证方法,可以在充电过程中进行身份验证,提高使用的安全性,并为USB PD的应用提供支持。如此,可以使TYPE‑C产品必须获得USB‑IF组织使用私有密钥签发的数字证书才能使用。无证书的产品则无法使用,从而避免不合格的TYPE‑C接口设备因为品质问题而伤害正常的设备。在企业信息安全应用中,也可以由对应企业(或用户)自己来发布安全证书,让非企业内部的USB设备无法接入,这会比现有的USB加密技术更安全,因为在通过CC线完成安全认证之前,存储媒介与系统之间是物理隔离的。因此,本实施例中,上述预设的认证授权私钥可以是USB‑IF组织的私钥,也可以是对应企业或用户自身认证的私钥,在此不作具体限定。
[0108] 本实施例中,USB PD协议的通信数据包中包含CRC校验,并使用4b5b编码和BMC编码。具体的,本实施例中基于USB PD协议的扩展功能实现上述身份验证方法,图6是本发明实施例提供的一种USB电源传输数据包格式示意图,其中,物理层(PHY Layer)负责通过USB Type‑C CC线在端口对之间发送和接收消息,协议层(Protocol Layer)形成消息的实体,用于在端口伙伴之间传递信息。如图6所示,本实施例中的数据包包括扩展消息头和有效负载,具体的,包括前导码(Preamble),使用场景码(SOP*),功能码(Message Header),扩展功能码(Extended Message Header),数据码(Data)(Byte0‑n)、校验码(CRC)以及结束码(EOP)。如果数据码部分为空,说明该数据包仅作为控制指令使用,称为控制消息。有数据内容的称为数据消息,通常数据消息里包含了要变化的电压值和电流值等信息。整个USB PD数据包中,除了前导码不需要进行4b5b编码外,数据包的其他部分均需要进行4b5b编码,指定数据经过4b5b编码后,数据包中所有数据都需要使用BMC编码之后才能通过CC发送。
[0109] 前导码(Preamble)是为了锁定接收端,预示发送端将要有数据到达,前导码由64位交替的‘0’和‘1’组成,以‘0’开始,以‘1’结束。
[0110] 使用场景码(SOP*,SOP*代表可以是SOP、SOP’、SOP”三种不同的场景对应的场景码中的任意一种),所有的USB PD传输流程都是以SOP开始。不同的使用场景会用到不同SOP,每一个SOP也由不同的特殊编码组成。数据包使用SOP作为开头,说明该数据包是在Source与Sink之间进行的。
[0111] 功能码(Message Header)长度为16‑bits,通常包含数据包类型、端口角色(UFP/DFP)、PD协议版本等信息。
[0112] 扩展功能码(Extended Message Header)的长度为16‑bits,用于支持包含数据块的扩展消息,这些数据块的数据大小可以在单个消息中发送,也可以作为一系列数据块发送。
[0113] 数据码(Byte0‑n)只有在数据包类型为数据消息时才会使用,具体的数据内容需要根据指令的内容改变,数据码同样需要使用4b5b进行编码。
[0114] 功能码和数据码都需要由32bits的校验码(CRC)校验进行保护,本实施例中校验码使用查表的方式实现。
[0115] 结束码(EOP)表示整个数据包的结束,在4b5b编码表中可以找到对应的5b编码,为01101。需要说明的是,4b5b编码是BMC编码的一种具体编码方式,CRC校验码用于对传输过程中的数据传输错误进行校验。
[0116] 图7是本发明实施例提供的一种电源消耗端和电源提供端之间进行通信及身份验证的具体流程示意图,如图7所示,本实施例中采用扩展功能命令(Extended Message Command)实现在电源消耗端Sink(Host)与电源提供端Source(Device)之间进行通信及身份验证,Source(Device)为本发明实施例中的USB PD协议芯片,其具体流程如下:
[0117] 1. Sink(Host)通过SHA2‑256计算出通信数据的哈希值(Hash)即摘要(Digest);
[0118] 2. Host用Host私钥(即发送端私钥)对摘要进行ECC签名运算(即椭圆曲线加密签名运算),得到数字签名(Signature),即发送端数字签名;
[0119] 3. Host用USB‑IF认证组织授权的私钥将Host信息、Host的公钥和USB‑IF认证组织的数字证书信息(即预设的认证数字证书信息)进行ECC加密(即椭圆曲线加密),得到Host的数字证书(Host_CA),即发送端数字证书;其中,数字证书是用来认证公钥持有者身份合法性的数据,以防止第三方冒充行为,用于签名认证;
[0120] 4. Host将数字证书附加在通信数据后面;
[0121] 5. Host将数字签名附加在通信数据后面;
[0122] 6. Host用Host私钥(即发送端私钥)将摘要进行ECC加密,得到加密的摘要并附加在通信数据后面,并获得对应的待发送数据,即安全请求命令(Security_Request);
[0123] 7.通过扩展功能的安全请求命令(Security_Request)将数据发送给Source(即Device,其Data数据块由通信数据、Host的数字证书、Host的数字签名、USB‑IF认证组织授权的公钥和加密的摘要组成);
[0124] 8. Device对接收数据包进行CRC检验并确认校验无误后会向Host发送GoodCRC(即CRC校验成功信息),表明接收成功;
[0125] 9. Device用USB‑IF认证组织授权的公钥对接收的Host的数字证书进行ECC解密,得到接收解密的Host信息、解密的Host的公钥和解密的USB‑IF认证组织的数字证书信息;
[0126] 10. Device用解密出的Host的公钥对接收到的经过Host加密的摘要(即被接收加密摘要)进行ECC解密,得到解密后的摘要;
[0127] 11. Device用解密获得的Host的公钥对解密后的摘要和被接收的Host的数字签名进行ECC验签运算(身份验证),若身份验证成功则在Data数据块标注身份验证成功,若身份验证失败则在Data数据块标注身份验证失败;进一步的,在进行身份验证之后还可以进行数据完整性验证;
[0128] 12.若身份验证成功,Device用SHA2‑256计算出被接收的通信数据的摘要;
[0129] 13. Device比较SHA2‑256计算出的摘要和解密后的摘要是否相等?若相等,则在Data数据块标注Host的通信数据未篡改;若不相等,则在Data数据块标注通信数据被篡改;因此,本实施例中的验证结果包括身份验证结果和数据完整性验证结果;
[0130] 14. Device用Host的公钥对标注后的Data数据块进行ECC加密,加密后可以获得安全响应信息;需要说明的是,此处的Data数据块是对应标注了验证结果的数据;
[0131] 15. Device通过扩展功能的安全响应命令(Security_Response)将加密后的Data数据块发送给Sink(Host);
[0132] 16. Host对接收数据包校验无误后会向Device发送GoodCRC,表明接收成功;
[0133] 17. Host用自己的私钥将加密后的Data数据块进行ECC解密,根据解密获得的数据确认Device的身份验证是否成功以及通信数据的完整性,完成整个通信及身份验证流程。
[0134] 可见,本实施例中,Host向Device发送验证请求,Device进行身份验证,并把身份验证结果发送给Host,完成身份验证。身份验证成功后,再进行数据完整性验证,验证数据是否被篡改,进一步提高使用的安全性。如果身份验证不成功则不进行数据完整性验证。
[0135] 其中,Source为电源提供端,如电源适配器,Sink为电源消耗端,如手机、平板电脑、笔记本电脑等电子设备。CC(Configuration Channel)为配置通道,用于识别、控制等。BMC编码通过CC通信。DFP(Downstream Facing Port)为下行端口,即为HOST或者HUB下行端口。UFP(Upstream Facing Port)为上行端口,即为Device或者HUB的上行端口。Extended Message Header代表扩展功能码。本实施例中采用CRC校验:功能码(Message Header)和数据(Data)需进行32bit CRC‑32校验。CRC‑32校验保护数据有效载荷的数据完整性。CRC‑32的定义如下:CRC‑32多项式应为=04C1 1DB7h。CRC‑32初始值应为=FFFF FFH。应针对不包括任何分组帧符号(即,Preamble、SOP*、EOP)的有效载荷的所有字节计算CRC‑32。CRC‑32计算应从字节0第0位开始,并继续到数据包每个字节的第7位。应填充CRC‑32的余数部分。
CRC‑32的余数应为C704DD7Bh。CRC‑32余数的反转增加了FFFF FFFFh的偏移量,这将在接收器端产生C704 DD7Bh的恒定CRC‑32余数。
[0136] 椭圆曲线数字签名算法ECDSA认证所需的计算包括密钥对(私钥、公钥)的生成、签名的计算和签名的验证。ECDSA验证器在运行之前,需要知道它的私钥。公钥是从私钥和域参数派生的。私钥不能从外部进行访问。相反,公钥必须是可公开读取和访问的。采用ECDSA可以实现通过外围设备身份验证的一方不受安全存储密钥的约束,且身份验证方可以通过可快速分发的公钥进行身份验证。
[0137] 需要说明的是,ECC是非对称加密算法,上述Sink(Host)需采用PD3.1协议的要求的NIST P256曲线和secp256r1曲线进行ECC加密运算及签名运算,以确保跟Source(Device)匹配。DFP和UFP通过数据包进行通信,首先进行身份验证流程,只有在身份验证成功及通信数据未篡改的情况下,才进行后续的支持USB PD协议的设备与电源的快充协议协商操作,协商内容包括电源可提供的充电能力,设备支持的充电功率等;如果身份验证失败或通信数据(可以是用于进行快充协议写上的数据)被篡改,则禁止后续协商操作。本实施例中的认证方法采用USB‑IF认证组织授权颁发的公私钥对进行数字证书验证,无证书的产品则不能正常使用。
[0138] 同时,现有技术中,如果有密钥的存储要求,需要用非遗失性存储器进行存储,而且还需要复杂的安全存储电路,不仅增加了成本还增加了电路复杂度及功耗,因为芯片内部存储了密钥还容易受到旁路攻击、故障注入攻击、差分功耗分析(DPA)攻击等导致密钥泄露风险。本实施例的验证方法及身份验证流程既满足PD3.1协议要求还无需存储密钥,不仅大大增加了芯片的安全性,还减少了成本及功耗。本实施例方案的另一优势是CC信道上传输的数据都是经过加密的,从而可以防止黑客对信道进行侦听。更进一步的,Sink(Host)在每次发起通信及身份验证之前,可以生成不同的公私钥对来进行数据加解密,采用该方式,即使每次的原始数据相同,但CC信道上的传输数据却是不同的,从而进一步提高数据传输的安全性。例如,上述流程中步骤2的私钥由Host生成的,步骤3的私钥是由Host通过USB‑IF认证组织授权得到;私钥存储在Host本地,私钥是不能进行传输的,Device用到的两个公钥是由Host加密传输过来的,所以Device是不存储任何公钥和私钥的。
[0139] 在另一种应用场景中,上述数据发送端为烧录器,此时对应的数据接收端为USB PD协议芯片。具体的,USB PD协议芯片一般包括物理层、协议层和策略层,物理层包括一些通用寄存器和PD专用寄存器,还有BMC编解码的功能等,协议层就会包含SOP*的识别、协议的实现等内容,策略层则包括一些上层策略。所以需要对芯片进行编程,配置策略,实现协议,也可以通过烧录实现协议的更新或功能的更新。可以通过接口模块对USB PD协议芯片进行固件烧录。
[0140] 在一种应用场景中,采用原厂单次烧录(OTP)的方式,这种芯片只在出货之前被烧录一次,不会被再次修改,也就是说不存在烧录恶意固件的问题。同时也因为只支持一次性烧录,所以这种协议芯片往往只会兼容标准的、成熟的快充协议,后续如果出现其他快充协议,协议芯片很难兼容。
[0141] 在另一种应用场景中,采用开放式的多次烧录(eFlash/MTP)方式,这种协议芯片配置灵活,可以利用开发工具修改固件,完成对新快充协议的兼容以及修复后续出现的BUG,出货量较大,但存在较大安全风险。
[0142] 在另一种应用场景中,还可以采用加密式的多次烧录(eFlash/MTP)方式,芯片配置同样非常灵活,不过只有掌握了密钥才能获得固件更新的权限,而密钥一般都有充电器厂商保管。在技术层面,这样既保证充电器对BUG的修复能力,又能保护充电器不会被恶意更改程序,但该方法需要将密钥存储在USB PD协议芯片中,存在被侵入式攻击、侧信道攻击、差分功耗分析、故障注入等攻击手段而造成密钥泄露。
[0143] 因此,本实施例中,基于身份验证方法进行固件烧录,即提供一种带身份认证的固件安全烧录方法,该方法不用在USB PD协议芯片中存储密钥,从而杜绝了密钥泄露的风险。本实施例的USB PD协议芯片通过接口模块和烧录器(上位机)连接,通过接口模块和烧录器进行身份验证和固件(Hex文件)烧录。图8是本发明实施例提供的一种固件安全烧录验证的流程示意图,参照图8可知,上述固件烧录的具体流程如下:
[0144] 1.烧录器(上位机)用SHA2‑256计算出固件文件(Hex文件,即通信数据)的摘要即哈希值;
[0145] 2.烧录器用私钥(即发送端私钥)对摘要进行ECC签名运算,得到数字签名(即发送端数字签名);
[0146] 3.烧录器用企业自用数字证书的私钥(即预设的认证授权私钥)对芯片原厂信息、企业自用数字证书信息和烧录器公钥组成的数据(即待加密信息)进行ECC加密,得到数字证书(即发送端数字证书);
[0147] 4.将数字证书附加在固件文件后面;
[0148] 5.将数字签名附加在固件文件后面;
[0149] 6.将原厂颁发的企业自用数字证书的公钥附加在固件文件后面;
[0150] 7.烧录器用私钥将摘要ECC加密后并附加在固件文件后面;
[0151] 8.得到由固件文件、数字证书、数字签名、原厂颁发的企业自用数字证书的公钥和加密后的摘要组成的数据包(即待发送数据);
[0152] 9.通过接口模块将数据包发送给USB PD协议芯片;
[0153] 10. USB PD协议芯片用原厂颁发的企业自用数字证书的公钥ECC解密数字证书,得到解密后的芯片原厂信息、企业自用数字证书信息和烧录器公钥;
[0154] 11. USB PD协议芯片用解密出的烧录器公钥对接收获得的由烧录器加密后的摘要(即被接收加密摘要)进行ECC解密,得到固件文件的解密摘要;
[0155] 12. USB PD协议芯片用解密出的烧录器公钥对接收的数字签名和摘要进行ECC验签运算(即身份验证);
[0156] 13.如果验签失败,通过接口模块向烧录器发送身份验证失败命令,并结束烧录;
[0157] 14.如果验签成功,USB PD协议芯片用SHA2‑256计算出接收的固件文件的摘要;
[0158] 15.比较通过SHA2‑256计算出的摘要和解密后的摘要是否相等;
[0159] 16.若不相等,通过接口模块向烧录器发送固件文件被纂改命令,并结束烧录;
[0160] 17.若相等,通过接口模块将固件文件烧录进USB PD协议芯片的程序存储器,并向烧录器发送固件烧录成功命令;
[0161] 18.固件烧录结束。
[0162] 如此,本实施例中提供了一种集成数字证书及数字签名功能并满足PD3.1(及以上版本)快充协议的USB PD芯片,可以解决传统快充协议芯片中安全性低的问题。同时,提供了一种带身份认证的固件安全烧录方法,该方法不用在USB PD协议芯片中存储密钥,从而杜绝了密钥泄露的风险。
[0163] 应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0164] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0165] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0166] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0167] 在本发明所提供的实施例中,应该理解到,所揭露的系统/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的系统/终端设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0168] 上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
[0169] 以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不是相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。