掌桥专利:专业的专利平台
掌桥专利
首页

安全的空中固件升级

文献发布时间:2023-06-19 11:55:48


安全的空中固件升级

相关申请的交叉引用

本申请要求于2018年11月12日提交的标题为“安全的空中固件升级”的美国专利申请No.16/186,868的优先权和权益,其全部内容通过引用合并于本文。

技术领域

本说明书涉及用于安全的空中通信以升级嵌入式设备的固件的系统、设备和/或方法。

背景技术

嵌入式设备需要固件升级以增强特征、解决问题和/或更新固件。这些嵌入式设备可以是不具有物理接口以接收固件升级的无线嵌入式设备,因此,无线嵌入式设备必须经由无线链路或空中方式接收固件升级。此外,这些嵌入式设备也可能与提供固件升级的服务提供商不具有连续或恒定的连接性,因此,嵌入式设备可能需要与服务提供商的服务器进行交互并与之达成协议,以协调进行固件更新。

当通过空中发送固件升级时,包(package)容易受到安全漏洞的影响。例如,恶意方可以通过嗅探空中通信或通过模拟目标设备来访问固件升级。在另一个示例中,主动攻击者可以创建固件升级的变更版本,并将该固件升级的变更版本发送到目标设备。

因此,需要一种系统、方法和/或设备,以防止未经授权地访问固件升级,同时还验证和认证固件升级的完整性和来源。

发明内容

通常,本说明书中描述的主题的一方面体现在用于安全地提供无线或空中固件升级的设备、系统和/或装置中。该系统包括被配置为接收固件升级的嵌入式设备。该系统包括服务器,该服务器具有被配置为存储第一密钥加密密钥、固件升级和固件密钥的存储器,并且具有耦接至该存储器的处理器。处理器被配置为获取固件升级、固件密钥和第一密钥加密密钥。处理器配置为使用固件密钥对固件升级进行加密。处理器被配置为使用第一密钥加密密钥对固件密钥进行加密,并且将加密的固件升级和加密的固件密钥传输到嵌入式设备。

这些和其他实施例可以可选地包括以下特征中的一个或更多个。存储器可以进一步被配置为存储服务器私钥。处理器可以进一步被配置为在将加密的固件升级和加密的固件密钥传输到嵌入式设备之前,对加密的固件升级和加密的固件密钥进行数字签名。

该系统可以包括控制器设备。控制器设备可以具有存储器,该存储器可以被配置为存储服务器公共证书或一个或更多个密钥加密密钥。控制器设备可以具有处理器,该处理器可以被配置为使用一个或更多个密钥加密密钥与服务器建立连接。处理器可以被配置为获取加密的固件升级和加密的固件密钥,并且可以使用服务器公共证书对数字签名进行验证。处理器可以被配置为使用一个或更多个密钥加密密钥与嵌入式设备建立连接,并且可以将加密的固件升级和加密的固件密钥提供给嵌入式设备。

服务器的处理器可以被配置为接收固件传递请求。固件传递请求可以包括固件升级的传递模式。不同的传递模式可以包括在服务器和嵌入式设备之间建立直接信道的第一模式、经由离线控制器在服务器和嵌入式设备之间建立间接信道的第二模式、以及经由在线控制器在服务器和嵌入式设备之间建立间接信道的第三模式。

第一密钥加密密钥可以是会话密钥。当处于第三模式时,可以使用会话密钥对固件密钥进行预加密;或者当处于第二模式时,可以使用在先前固件版本中混淆的通用嵌入式设备密钥对固件密钥进行预加密。

嵌入式设备可以具有存储器。存储器可以被配置为存储固件和第一密钥加密密钥。嵌入式设备可以具有耦接到存储器的处理器。处理器可以被配置为存储加密的固件升级和加密的固件密钥。处理器可以被配置为使用第一密钥加密密钥对加密的固件密钥进行解密。处理器可以被配置为使用固件密钥对加密的固件升级进行解密。处理器可以被配置为使用固件升级来更新固件。

在另一方面,该主题体现在用于安全传递固件升级的系统中。该系统包括被配置为接收固件升级的嵌入式设备。该系统包括服务器,该服务器具有被配置为存储会话密钥、固件升级和固件密钥的存储器。该系统具有耦接到该存储器的处理器。处理器被配置为使用固件密钥对固件升级进行加密,并使用会话密钥对固件密钥进行加密。处理器被配置为通过安全信道将加密的固件升级和加密的固件密钥发送到嵌入式设备。

在另一方面,该主题体现在用于安全传递固件的方法中。该方法包括使用固件密钥对固件升级进行加密。该方法包括使用会话密钥对固件密钥进行加密。该方法包括确定嵌入式设备处于第一模式、第二模式还是第三模式。该方法包括:当嵌入式设备处于第一模式时,将固件升级和加密的固件密钥传输到嵌入式设备,并且当嵌入式设备处于第二模式或第三模式时,将固件升级和加密的固件密钥传输到控制器设备。

附图说明

通过检查以下附图和详细描述,本发明的其他系统、方法、特征和优点对于本领域的普通技术人员将是或将变得显而易见。旨在将所有这样的附加系统、方法、特征和优点包括在本说明书中、在本发明的范围内、并由所附权利要求书保护。附图中所示的组成部分不必按比例绘制,并且可以被夸大以更好地说明本发明的重要特征。在附图中,遍及不同的视图,相同的参考标号表示相同的部件,其中:

图1示出了根据本发明的一方面的空中(OTA)升级系统的示例框图,该空中升级系统升级嵌入式设备的软件,例如固件;

图2是根据本发明的一方面的在图1的OTA升级系统的服务器上实施的示例过程的流程图,以向嵌入式设备安全地提供固件升级;

图3是根据本发明的一方面的在图1的OTA升级系统的嵌入式设备上实施的示例过程的流程图,以安全地获取和传递固件升级;

图4是根据本发明的一方面的在图1的OTA升级系统的控制器上实施的示例过程的流程图,以安全地获取和解密固件升级;

图5A示出了根据本发明一方面的、当图1的OTA系统处于直接模式时的示例加密的固件升级和/或固件密钥;以及

图5B示出了根据本发明的一方面的、当图1的OTA系统处于间接离线模式或间接在线模式时的示例加密的固件升级和/或固件密钥。

具体实施方式

本文公开了用于确保从服务提供商的服务器或其他计算设备到嵌入式设备的固件升级的空中传递的系统、设备和方法。嵌入式设备可以是智能设备或其他嵌入式设备,它们可以依靠空中或无线通信来获取固件升级或其他软件升级。嵌入式设备可能具有或不具有用于接收或获取固件或其他软件升级的物理接口,因此,可能需要通过空中传输和接收固件升级。

安全的空中升级系统(“OTA升级系统”)具有服务器和嵌入式设备。服务器(例如服务提供商的计算设备)向嵌入式设备(例如智能可穿戴设备、物联网(IoT)设备、医疗设备或其他嵌入式设备)提供可用于更新嵌入式设备上的软件的软件包,例如固件升级。OTA升级系统可以利用控制器设备(“控制器”)在服务器和嵌入式设备之间进行接口,以提供离线功能和/或提供额外的移动性和/或灵活性,以将软件包传递到一个或更多个嵌入式设备。

其他益处和优点包括OTA升级系统可以在服务器、嵌入式设备和/或控制器之间建立安全通信信道。安全通信信道利用加密、认证、签名和/或其他安全机制在传送之前、传送之后和传送期间保护软件包。例如,可以对软件包进行加密以在空中传送期间保护软件包的机密性。在另一示例中,可以对软件包进行签名,以防止传送期间对软件包的修改并认证软件包的来源。可以使用多种加密算法和/或密钥来保护在传送期间软件包以及分发软件包所需的任何必要密钥两者。这允许OTA升级系统通过空中方式向嵌入式设备提供经验证的、经认证的和机密的软件包。

图1示出了OTA升级系统100的框图,该OTA升级系统100从服务器102升级嵌入式设备104的软件,例如固件。在下文中,即使升级或更新嵌入式设备上的固件的固件升级也可以作为参考,但是OTA升级系统100可以以类似的方式升级任何类型的软件,例如应用程序、操作系统或包括嵌入式设备104上的任何低级别软件的其他软件。

OTA升级系统100包括嵌入式设备104和服务器102。OTA升级系统100可以包括作为嵌入式设备104和服务器102之间的中介的控制器设备(“控制器”)106。嵌入式设备104可以是可穿戴或不可穿戴的智能设备、医疗设备、便携式设备(例如数字手表或音频播放器)、路由器、智能手机、工厂或工业控制器、或其他专用计算机或处理器。在一些实施方式中,OTA升级系统100可以连接到通用计算机并且向通用计算机提供软件升级。

嵌入式设备104可以包括处理器108和存储器110。处理器108可以是单个处理器或多个处理器。处理器108可以从一个或更多个组件接收数据,并基于接收到的或确定的数据来控制一个或更多个组件的操作。例如,处理器108可以从服务器102解密固件升级、验证和认证固件升级、和/或用固件升级来更新嵌入式设备104的固件。

处理器108可以耦接到存储器110。存储器110可以存储要在处理器108上执行的指令,并且可以包括随机存取存储器(RAM)或其他易失性或非易失性存储器中的一个或更多个。存储器110可以是非暂时性存储器或数据存储设备,例如硬盘驱动器、固态磁盘驱动器、混合磁盘驱动器或其他适当的数据存储装置,并且可以进一步存储可以由处理器108加载和执行的机器可读指令。存储器110可以存储用于加密和/或解密的一个或更多个密钥(例如云嵌入式设备密钥)和/或用于签名验证的一个或更多个证书(例如服务器公共证书)。

由于嵌入式设备104可能不具有物理接口,所以嵌入式设备104可能具有网络访问接口112。网络访问接口112可以包括通信端口或信道,例如一个或更多个Wi-Fi单元、

诸如局域网(LAN)、广域网(WAN)、蜂窝网络、互联网或其组合之类的网络138将嵌入式设备104连接到服务器102以便接收空中或无线固件更新。例如,嵌入式设备104可以耦接到服务器102以从服务器102内的数据库访问和下载更新。在一些实施方式中,服务器102将更新推送到嵌入式设备104。

嵌入式设备104可以耦接到服务器102。服务器可以是网络中的计算机,用于向网络中的其他计算机提供服务,例如访问文件或共享外围设备。服务器102可以是向嵌入式设备104提供固件升级的服务提供商。服务器102包括处理器114、存储器116和网络访问设备118。处理器114可以具有与嵌入式设备104的处理器108类似的组件和/或功能,但是具有更多的资源。处理器114可以使用一个或更多个密钥(例如云到嵌入式设备密钥和/或云到控制器设备密钥)和/或一个或更多个证书(例如服务器私钥)来对包和/或消息进行加密、解密和/或签名。

处理器114可以与存储器116耦接。存储器116可以具有与存储器110类似的组件和/或功能,但具有更多的资源。例如,存储器116可以存储一个或更多个密钥(例如云到嵌入式设备密钥和/或云到控制器设备密钥)和/或一个或更多个证书。

存储器116可以存储数据库。数据库是为搜索和检索而例如通过计算机组织起来的任何信息片段的集合,并且数据库可以以表、图表、查询、报告或任何其他数据结构来组织。数据库可以使用任何数量的数据库管理系统。该信息可以包括实时信息、定期更新的信息或用户输入的信息。例如,数据库可以存储用于各种嵌入式设备的各种固件升级的多个版本。数据库可以存储用于加密/解密各种固件升级和/或用于与各种嵌入式设备安全通信的一个或更多个密钥和/或一个或更多个证书。

服务器102包括网络访问设备118。网络访问设备118可以具有与嵌入式设备104的网络访问接口112类似的组件和/或功能,以访问网络138以在服务器102、嵌入式设备104和/或控制器106之间传输和/或接收数据。

服务器102可以包括用户接口120。用户接口120可以包括能够接收用户输入的输入/输出设备122以及能够输出的任何设备;能够接收用户输入的输入/输出设备122例如用户接口元件、按钮、拨盘、麦克风、键盘、触摸屏;能够输出的任何设备例如显示器、扬声器或可刷新的盲文显示器。例如,用户接口120可以接收包括固件升级、一个或更多个密钥和/或一个或更多个证书的用户输入。在另一示例中,用户接口120可以接收用于补充固件升级的附加信息(例如版本号)和/或用于补充一个或更多个证书的附加信息(例如一个或更多个不可变标识符)。

OTA升级系统100可以包括控制器106。控制器106可以在嵌入式设备104和服务器102之间提供在线或离线接口。当控制器106提供在线接口时,服务器102和嵌入式设备104使用网络138通过控制器106建立连接,并且所有三个设备同时连接。服务器102通过所建立的连接经由控制器106将固件升级提供给嵌入式设备104。当控制器106在嵌入式设备104和服务器102之间提供离线接口时,服务器102单独地连接到控制器106,并且与当控制器106连接到嵌入式设备104时明显不同。服务器102向控制器106提供固件升级,该控制器106在递送期间未连接至嵌入式设备104。然后,控制器106随后建立连接,并将固件升级提供给嵌入式设备104。

控制器106具有处理器124和存储器126。处理器124可以具有与处理器108、114类似的组件和/或功能。存储器126可以具有与存储器110、116类似的组件和/或功能。在一些实施方式中,存储器126可以是加密的存储器。控制器106可以具有用户接口128和/或网络访问设备130。用户接口128和/或网络访问设备130分别具有与用户接口120和/或网络访问设备118或网络访问接口112类似的组件和/或功能。

控制器106可以具有可信执行环境(“可信环境”)134和/或不可信执行环境(“不可信环境”)136。可信环境134内的组件与不可信环境136内的其他组件在逻辑上和/或物理上隔离和/或沙盒化。可信环境134可以运行独立的和/或不同的操作系统,并且具有与不可信环境136不同的资源。例如,可信环境134和不可信环境136可以具有不同的处理器。

控制器106可以包括安全元件132。安全元件132可以提供密钥生成、密钥存储和/或其他密码功能。在一些实施方式中,安全元件132被包括在控制器106中、被嵌入在控制器106内或被插入到控制器106中。安全元件132可以是安全地存储证书、密钥或其他认证或标识信息数据的单独的硬件令牌(token)或设备或安全元件芯片,例如集成电路和/或存储器。控制器106可以利用安全元件132和/或可信环境134来执行安全功能,例如,与服务器102和/或嵌入式设备104配对或建立安全连接,和/或当控制器106离线时存储固件升级。

控制器106的任何组件(全部组件或部分组件),例如处理器124、存储器126、用户接口128或网络访问设备130,都可以位于可信执行环境134、安全元件132和/或不可信执行环境136内。

图2是在服务器102上实施以向嵌入式设备104安全地提供固件升级的过程200的流程图。一个或更多个计算机或数据处理装置(例如被适当编程的图1的OTA升级系统100的服务器102的处理器114)可以提供、传输或以其他方式发送固件升级至嵌入式设备104。

服务器102可以获取一个或更多个固件升级、一个或更多个密钥、一个或更多个不可变标识符和/或一个或更多个证书(202)。服务器102可以从用户处获取一个或更多个固件升级、一个或更多个密钥、一个或更多个不可变标识符和/或一个或更多个证书。OTA升级系统100的管理员可以经由用户接口120向服务器012提供该一个或更多个固件升级、一个或更多个密钥、一个或更多个不可变标识符和/或一个或更多个证书。服务器102在存储器116中存储该一个或更多个固件升级、一个或更多个密钥、一个或更多个不可变标识符和/或一个或更多个kore证书,以将其随后提供或传递给控制器106或嵌入式设备104。

一个或更多个固件升级可以具有版本号和/或嵌入式设备关联。版本号可以是提供信息的版本控制号,该信息例如服务提供商发布固件升级的日期和/或与固件升级的版本相关联的更改。嵌入式设备关联可以是固件升级更新的每种嵌入式设备类型或类别的唯一标识符。

一个或更多个密钥可以包括一个或更多个固件密钥和/或一个或更多个密钥加密密钥(KEK)。一个或更多个密钥可能是随机生成的。服务器102可以在将固件升级传递到嵌入式设备104之前、之后和/或期间,使用一个或更多个固件密钥来加密/解密固件升级。服务器可以在将一个或更多个固件密钥传递到嵌入式设备104之前、之后和/或期间,使用一个或更多个KEK来对一个或更多个固件密钥进行加密/解密。

一个或更多个证书可以包括一个或更多个设备证书。一个或更多个设备证书可以包括私钥证书(例如服务器私钥)和/或公共设备证书(例如服务器公钥)。服务器102可以在固件升级和/或固件密钥传递到嵌入式设备104之前,使用私有证书对固件升级和/或固件密钥进行数字签名。嵌入式设备104可以使用公共证书来验证数字签名。私有/公共证书的使用确保了签名内容在传送期间没有被修改,即,数字签名保护了签名内容的完整性和/或标识了签名内容的来源。此外,一个或更多个证书可以具有一个或更多个与该证书绑定的不可变标识符。这为签名内容的来源提供了额外的认证。

一个或更多个不可变标识符可以包括国际移动设备身份码(IMEI)号码、电话号码、低功耗蓝牙(BLE)媒体访问控制(MAC)地址、TrustZone标识符(ID)或可能与设备证书绑定在一起并与设备证书相关联的其他设备标识符。一个或更多个不可变标识符可以是嵌入式设备104的不可变和/或不可改变的特定标识符。

服务器102可以签名并向控制器106或嵌入式设备104传输固件版本号的列表和相关联的有效期(203)。固件版本号的列表和相关联的有效期可以用于标识固件版本何时到期和/或何时需要固件升级。

服务器102可以从固件升级内获取传递模式请求或获取传递模式(204)。传递模式请求是来自嵌入式设备104以使用特定模式来传递固件升级的请求。传递模式请求可以包括固件升级的传递的特定实施方式和方式。在一些实施方式中,固件升级指定传递的实施方式和方式,并且服务器102从固件升级中提取传递模式。

传递模式请求可以标识一种或更多种传递模式。一种以上模式可以包括直接云到嵌入式设备模式(“直接模式”)、间接离线云到控制器到嵌入式设备模式(“间接离线模式”)和/或间接在线云到控制器到嵌入式设备模式(“间接在线模式”)。在直接模式下,服务器102在服务器102与嵌入式设备104之间建立直接信道。在间接离线模式下,服务器102经由离线控制器106在服务器102与嵌入式设备104之间建立间接信道。在间接在线模式下,服务器102经由在线控制器106在服务器102和嵌入式设备104之间建立间接信道。

在服务器102和嵌入式设备104配对之后,和/或已经在服务器102和嵌入式设备104之间建立了安全通信信道之后,服务器102可以从嵌入式设备104获取传递模式请求。在一些实施方式中,服务器102可以初始化并且默认为直接模式,直到在第一固件升级已经成功地传递到嵌入式设备104之后。例如,可以将嵌入式设备104预先配置为要求第一固件升级经由直接模式传递。

服务器102可以对固件升级进行加密(206)。服务器102可以使用固件密钥对固件升级进行加密。固件密钥可以是每个嵌入式设备104的每个固件升级或固件的每个版本的唯一密钥。因此,在从服务器102获取固件密钥之前,嵌入式设备104可能不具有固件密钥,因此如果将固件升级发送到非预期的其他嵌入式设备,则非预期的其他嵌入式设备将无法解密该固件升级。也就是说,即使另一台设备可以访问加密的固件升级,该另一台设备仍将无法解密该固件升级和访问该固件升级。

服务器102可以确定传递模式是用于固件升级的传递的直接模式、间接在线模式还是间接离线模式(208)。直接模式和间接在线模式是在线传递模式。在线传递模式要求服务器102在固件升级传递之前、之后和/或期间,直接或经由控制器106间接地保持服务器102与嵌入式设备104之间的连续连接。而间接离线传递模式是离线传递模式,其允许服务器102将固件升级存储在控制器106上,以随后被传递给嵌入式设备104。

服务器102可以基于固件升级的传递的特定实施方式和方式来确定传递模式,例如,在传递模式请求中指定或在固件升级中指定的一种或更多种传递模式。服务器102可以从传递模式请求中提取一种或更多种传递模式,并确定该传递模式。传递模式请求中包括的模式可以表示为指示传递模式的标志、位或其他指示符。

如果服务器102确定该模式是间接在线模式,则服务器102可以使用第一密钥加密密钥对固件密钥进行预加密(210)。第一密钥加密密钥可以是云到嵌入式设备会话密钥。通过用云到嵌入式设备会话密钥对固件密钥进行加密,服务器102防止控制器106获得对固件密钥的访问,这保护了固件升级的机密性,因为控制器无法访问云到嵌入式设备会话密钥。此外,由于云到嵌入式设备会话密钥可以是特定于每个嵌入式设备和/或每种类型的嵌入式设备的唯一密钥,因此服务器102可以防止另一个非预期嵌入式设备或非预期类型的嵌入式设备对固件密钥的访问,因为这些其他嵌入式设备没有特定的云到嵌入式设备会话密钥。

如果服务器102确定该模式是间接离线模式,则服务器102可以使用第二密钥加密密钥对固件密钥进行预加密(212)。第二密钥加密密钥可以是通用嵌入式设备密钥。通用嵌入式设备密钥可能会在先前固件版本的固件代码中被混淆。原始或初始固件版本可能在制造和/或供应过程中包含了固件代码。例如,如果与固件密钥相关联的固件升级是版本2.0,则该固件的先前版本(例如,版本1.0)可能包括与当前固件升级版本2.0相关联的通用嵌入式设备密钥。正在传递的固件升级的当前版本可能包括下一次固件升级的通用嵌入式设备密钥。例如,固件升级版本2.0可能包含用于固件升级版本3.0的通用嵌入式设备密钥。

通过使用通用嵌入式设备密钥来加密固件密钥,服务器102防止控制器106获得对固件密钥的访问,这保护了固件升级的机密性,因为控制器106无法访问通用嵌入式设备密钥。然而,通用嵌入式设备密钥可能在利用先前固件版本的所有嵌入式设备的固件代码中被混淆,并且对于每个嵌入式设备可能不是唯一的。然而,由于控制器106无法访问固件密钥,因此固件升级可以被存储在控制器106上并且与控制器106一起被输送,直到嵌入式设备104请求固件升级为止。

在一些实施方式中,通过除服务器102之外的另一实体分别使用用于间接在线模式或间接离线模式的云到设备会话密钥或通用嵌入式设备密钥来对固件密钥进行预加密,并且仅获取并且存储在服务器102内。

当服务器102确定该模式是间接在线模式或间接离线模式时,服务器102使用第三密钥加密密钥(例如,云到控制器设备会话密钥)来加密预加密的固件密钥。这保护了传送到控制器106的固件密钥,以便随后分发至一个或更多个嵌入式设备。在一些实施方式中,服务器102还可以使用第三密钥加密密钥来对加密的固件升级进行加密,以提供额外的安全性。

如果服务器102确定该模式是直接模式,则服务器102不需要预加密固件密钥,因为服务器102无需经过控制器106或任何其他设备就可以直接向嵌入式设备104传递或提供固件升级。或者,服务器102使用第四密钥加密密钥(例如,云到嵌入式设备会话密钥)对固件密钥进行加密(216)。云到嵌入式设备会话密钥可能只有服务器102和嵌入式设备104知道,并且可能已被预先共享。通过使用云到嵌入式设备密钥对固件密钥进行加密,其他任何设备都无法访问该固件密钥,因此无法进行固件升级。在一些实施方式中,服务器102还可以使用第四密钥加密密钥对加密的固件升级进行加密。

服务器102可以在传输、发送或以其他方式提供固件升级和/或固件密钥之前对固件升级和/或固件密钥进行签名(218)。服务器102可以将先前已经被加密的固件升级和/或固件密钥组合成单个数据包。在一些实施方式中,服务器102将固件升级和固件密钥的传递保持为单独的包传递,以使得拦截更加困难。服务器102可以从存储器116获取服务器私钥,并且使用该服务器私钥对固件升级和/或固件密钥进行数字签名。服务器102可以对固件升级、固件升级密钥、固件升级版本号和/或嵌入式设备标识符中的一个或更多个的级联的密码哈希函数输出进行数字签名。当服务器102对固件升级和/或固件密钥进行签名时,当服务器102传输固件升级和/或固件密钥时,服务器102可以包括服务器公钥。通过对固件升级和/或固件密钥进行数字签名,可以验证数字签名,以确保未修改固件升级和/或固件密钥以及确保固件升级和/或固件密钥的来源为服务器102。

在服务器102加密固件密钥和/或固件升级之后,服务器102与控制器106或嵌入式设备104建立连接(220)。服务器102基于传递模式建立与控制器106或嵌入式设备104的连接。如果该模式处于间接离线模式或间接在线模式,则服务器102建立与控制器106的连接。服务器102可以使用云到控制器设备会话密钥来建立与控制器106的安全连接。如果该模式处于直接模式,则服务器102建立与嵌入式设备104的连接。服务器102可以使用云到嵌入式设备会话密钥来建立与嵌入式设备104的安全连接。

一旦服务器102已经建立了与控制器106或嵌入式设备104的连接并且已经加密了固件密钥和固件升级,则服务器102发送、提供和/或传输加密的固件密钥和加密的固件升级至控制器106或嵌入式设备104(222)。如果该模式是间接离线模式或间接在线模式,则服务器102向控制器106发送、传输或以其他方式提供加密的固件密钥和加密的固件升级。并且,如果该模式是直接模式,则服务器102将加密的固件密钥和加密的固件升级发送、传输或以其他方式提供给嵌入式设备104。

图3是在嵌入式设备104上实施以安全地获取和解密固件升级的过程300的流程图。一个或更多个计算机或数据处理装置(例如被适当编程的图1的OTA升级系统100的嵌入式设备104的处理器108)可以获取并解密固件升级。

嵌入式设备104可以确定需要固件升级(302)。嵌入式设备104可以从控制器106和/或服务器102获取或先前已经获取固件版本号的列表和相关联的失效期,验证固件版本号的列表上的任何签名,并且检查固件版本以查看是否版本已过期。在一些实施方式中,每个固件版本可以包括指示该版本已过期的失效信息。如果当前日期晚于固件失效期,则嵌入式设备104可以确定固件已过时,这表明需要新的固件升级。

在一些实施方式中,嵌入式设备104将固件版本发送到服务器102。作为响应,嵌入式设备104可以从服务器102接收指示固件版本已过时或已过期和/或嵌入式设备104可以使用新的固件升级的指示。如果固件版本已过时或已过期,则嵌入式设备可能会停止正常运行,并可能进入要求固件升级的安全模式。

嵌入式设备104可以确定在激活时需要固件升级。嵌入式设备104可以请求并获取当前日期和/或时间的时间戳,将时间戳与固件的失效期进行比较,并且如果当前日期和/或时间超过失效期,则确定需要固件升级。例如,嵌入式设备可以从控制器106或服务器102接收签名的时间戳,检查签名的有效性,和/或使用证书和/或固件版本的时间戳以及失效期和/或时间来检查当前固件版本是否未过期。签名可以包括其他标识符,例如嵌入式设备的ID、控制器的ID和由嵌入式设备发送给控制器的随机随机数,这些标识符可以进行验证或确认。签名可以是使用控制器的私钥或服务器的私钥的签名。

在一些实施方式中,在首次使用时,嵌入式设备104可能无法开始正常运行,并且可能要求固件升级,直到嵌入式设备例如从控制器106获取固件版本号的列表及其有效期以及服务器102的数字签名为止。在首次使用时,嵌入式设备104可能要求将嵌入式设备的固件版本包括在固件版本号的列表中,并且嵌入式设备的固件版本不会随着使用服务器的公钥和/或控制器的公钥对数字签名的验证而过期。

嵌入式设备104可以确定固件升级和/或固件密钥的传递模式(304)。嵌入式设备104可以最初例如在工厂中以直接模式设置,该直接模式建立并要求直接连接到服务器102以通过空中或无线方式下载初始固件升级和/或固件密钥。嵌入式设备104可以接收指示以改变为下一次固件升级的不同模式,诸如间接离线模式和/或间接在线模式。

当处于直接模式或间接在线/离线模式时,嵌入式设备104分别使用云到嵌入式设备会话密钥与服务器102建立连接,或者使用控制器到嵌入式设备会话密钥与控制器106建立连接。嵌入式设备104通过所建立的连接直接或经由控制器106间接地向服务器102发送或以其他方式提供包括传递模式的传递模式请求(306)。

在嵌入式设备104确定需要固件升级之后,嵌入式设备104可以获取加密的固件升级和/或加密的固件密钥(308)。嵌入式设备104可以基于传递模式来获取加密的固件升级和/或加密的固件密钥。如果嵌入式设备104设置为直接模式,则嵌入式设备104直接从服务器102获取加密的固件升级和/或加密的固件密钥。如果嵌入式设备104设置为间接离线或间接在线模式,则嵌入式设备104从控制器106获取加密的固件升级和/或加密的固件密钥。

在一些实施方式中,嵌入式设备104还可以接收服务器公钥和/或公钥证书。在一些实施方式中,服务器公钥和/或公钥证书被预存储或已经存储在嵌入式设备104内。例如,服务器公钥和/或公钥证书可以在嵌入式设备104的制造、供应和/或分发过程中被预安装在嵌入式设备104内。

嵌入式设备104可以验证服务器102已经用来对加密的固件升级和/或加密的固件密钥进行数字签名的数字签名(310)。嵌入式设备104可以使用服务器公钥来验证数字签名。通过验证数字签名,嵌入式设备104验证没有对固件升级和/或固件密钥进行修改。此外,嵌入式设备104验证固件升级和/或固件密钥从服务器102到达。也就是说,数字签名认证固件升级和/或固件密钥的来源和完整性。

嵌入式设备104可以验证一个或更多个不可变标识符(312)。一个或更多个不可变标识符可以被包括在与数字签名相关联的公钥证书内。例如,嵌入式设备104可以验证与嵌入式设备104相关联的唯一标识符,例如国际移动设备身份码(IMEI)号码、电话号码、蓝牙低功耗(BLE)媒体访问控制(MAC)地址、TrustZone标识符(ID)或嵌入式设备104的另一标识符。例如,嵌入式设备104可以将一个或更多个不可变标识符发送到服务器102,以与信息数据库进行比较。

嵌入式设备104基于传递模式,使用第四密钥加密密钥或第五密钥加密密钥对加密的固件密钥进行解密(314)。如果嵌入式设备104处于间接离线模式或间接在线模式,则嵌入式设备104可以使用诸如控制器到嵌入式设备会话密钥之类的第五密钥加密密钥来解密加密的固件密钥。如果嵌入式设备104处于直接模式,则嵌入式设备104可以使用诸如云到嵌入式设备会话密钥之类的第四密钥加密密钥来解密加密的固件密钥。

当嵌入式设备104处于间接在线模式或间接离线模式时,嵌入式设备104可以进一步解密固件密钥,因为固件密钥可能已经使用第一密钥加密密钥(例如云到嵌入式设备会话密钥)或第二密钥加密密钥(例如在固件中混淆的通用嵌入式设备密钥)预加密。当嵌入式设备处于间接在线模式或间接离线模式时,嵌入式设备104还分别使用第一或第二密钥加密密钥来解密固件密钥。

一旦解密了固件密钥,则嵌入式设备104使用固件密钥对加密的固件升级进行解密(316)。在一些实施方式中,如果加密的固件升级进一步用第五或第四密钥加密密钥加密,则嵌入式设备104可以在使用固件密钥解密固件升级之前,进一步用第五密钥加密密钥或第四密钥加密密钥来解密加密的固件升级。嵌入式设备104用固件升级来更新固件的当前版本(318)。例如,嵌入式设备104可以用固件升级覆盖当前固件。

图4是在控制器106上实施以安全地获取和解密固件升级的过程400的流程图。一个或更多个计算机或数据处理装置(例如被适当编程的图1的OTA升级系统100的控制器106的处理器124)可以获取并解密固件升级。

控制器106获取加密的固件升级和加密的固件密钥(402)。当嵌入式设备104被设置为间接在线模式或间接离线模式时,控制器106接收加密的固件升级和加密的固件密钥。控制器106可能已经使用云到控制器设备会话密钥通过所建立的连接接收到加密的固件升级。

控制器106可以从服务器102获取固件版本号的列表和相关联的失效期(403)。控制器106可以存储固件版本号的列表和相关联的失效期以随后提供给嵌入式设备104。在一些实施方式中,固件版本号的列表和相关联的失效期可以已经由服务器102签名,和/或控制器106可以对固件版本号的列表和相关的失效期进行数字签名。

控制器106可能已经存储和/或已经获取服务器公钥,并且使用服务器公钥来验证数字签名(404)。例如,一个或更多个密钥可能已经被存储在安全元件132中。随后,如果嵌入式设备104被设置为间接离线模式或间接在线模式,则控制器106使用第三密钥加密密钥(例如,云到控制器设备会话密钥)来对加密的固件密钥进行解密(406)。如果固件升级是用第三密钥加密密钥加密的,则控制器106还可以使用第三密钥加密密钥来解密固件升级。

由于固件密钥仍被预加密,因此控制器106无法访问固件密钥,并且在没有固件密钥的情况下,控制器106无法访问固件升级。

一旦使用第三密钥加密密钥解密了固件密钥,控制器106就可以将加密的固件升级和预加密的固件密钥存储在存储器126和/或安全元件132内(408)。因此,例如当嵌入式设备104处于间接离线模式时,控制器106不需要同时连接到嵌入式设备104以将加密的固件升级和/或预加密的固件密钥传输到嵌入式设备104。

当控制器106准备好向嵌入式设备104传输或提供固件升级和/或固件密钥时,控制器106使用诸如控制器到嵌入式设备密钥的第五密钥加密密钥对预加密的固件密钥进行重新加密(410)。控制器可以使用第五密钥加密密钥另外对加密的固件升级进行加密,以提供附加的安全性,但这通常不是必需的。

控制器106使用控制器到嵌入式设备会话密钥来建立连接(412)。控制器106可以使用控制器到嵌入式设备会话来建立连接。一旦预加密的固件密钥被重新加密,控制器106就向嵌入式设备104发送、传输或以其他方式提供加密的固件升级和加密的固件密钥(414)。当嵌入式设备104在网络138上可用时,控制器106可以发送固件升级和固件密钥。在建立连接的同时,控制器106可以向嵌入式设备104提供或传递固件版本号的列表和相关联的失效期。

图5A-图5B示出了当图1的OTA系统处于不同模式时,加密的固件升级和/或加密的固件密钥。图5A示出了当OTA系统100处于直接模式时使用固件密钥504加密的固件升级502。此外,在直接模式下,使用密钥加密密钥(例如云到嵌入式设备会话密钥)对固件密钥504进行加密。

另一方面,图5B示出了预加密的固件密钥504和使用固件密钥504加密的固件升级502。当OTA系统100处于间接离线模式或间接在线模式时,可以分别使用通用嵌入式设备密钥或云到嵌入式设备密钥对固件密钥504进行预加密。然后,使用另一个密钥加密密钥(例如,云到控制器设备会话密钥或控制器到嵌入式设备会话密钥)进一步对固件密钥504进行加密。

在整个说明书和权利要求书中使用的“A或B中的至少一个”可以仅包括“A”、仅包括“B”或包括“A和B”。已经以说明性方式公开了方法/系统的示例性实施例。因此,应以非限制性方式阅读全文中所使用的术语。尽管本领域的技术人员将对本文的教导进行较小的修改,但应理解,旨在在此批准的专利范围内限制的是所有此类实施例,所有此类实施例合理地落入本领域技术进步范围内并据此做出了贡献,并且除非根据所附权利要求及其等同物,该范围不应受到限制。

相关技术
  • 终端固件空中升级系统及空中升级方法
  • 模组无线固件升级方法、安全芯片和无线固件升级平台
技术分类

06120113106534