首页> 中国专利> 临时广播密钥协定

临时广播密钥协定

摘要

本公开涉及用于将内容从分发器安全地分发到多个接收设备的方法、系统和计算机程序,每个接收方创建接收方信任的临时公私钥对并使接收方信任的临时公钥可用,所述方法包括:从储存库中检索接收方信任的临时公钥,每个接收方信任的临时公钥与相应的接收方相关联;生成包括分发器临时私钥和分发器临时公钥的分发器临时密钥对;生成用于加密要分发的内容的内容加密密钥并使用内容加密密钥对内容进行加密;使用接收方信任的临时公钥和分发器临时私钥为每个接收方信任的临时公钥生成共享秘密;生成多个加密的每个接收方的密钥槽,每个加密的每个接收方的密钥槽通过使用多个共享秘密中的不同共享秘密对内容加密密钥进行加密来生成;创建包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构;以及传输数据结构以将内容传递给与从其导出一个或多个加密的每个接收方的密钥槽的设备公钥相关联的接收方。

著录项

  • 公开/公告号CN112352398A

    专利类型发明专利

  • 公开/公告日2021-02-09

    原文格式PDF

  • 申请/专利权人 阿姆IP有限公司;

    申请/专利号CN201980040374.7

  • 发明设计人 B·莫兰;M·梅利亚克;

    申请日2019-05-01

  • 分类号H04L9/08(20060101);

  • 代理机构11038 中国贸促会专利商标事务所有限公司;

  • 代理人鲍进

  • 地址 英国剑桥

  • 入库时间 2023-06-19 09:49:27

说明书

技术领域

本技术涉及一种以最小的数据交换和前向保密性(forward secrecy)在分发器与一个或多个接收方之间协定密钥的机制。

背景技术

将加密的更新传递到网络上的多个接收设备的已知固件更新传递系统容易受到解密攻击,并且一旦针对更新的加密被破坏,它便可以用来获得对后续加密的更新的访问。

发明内容

根据第一种技术,提供了一种用于将内容安全地分发到多个接收设备(接收方)的内容分发器,每个接收方创建接收方信任的临时公私钥对(ephemeral public privatekey pair)并使接收方信任的临时公钥可用,所述内容分发器包括:检索器,用于从储存库中检索接收方信任的临时公钥,每个接收方信任的临时公钥与相应的接收方相关联;分发器密钥产生器(key factory),用于生成包括分发器临时私钥和分发器临时公钥的分发器临时密钥对;内容密钥产生器,用于生成用于加密要分发的内容的内容加密密钥并使用内容加密密钥对内容进行加密;共享秘密产生器,用于使用接收方信任的临时公钥和分发器临时私钥为每个接收方信任的临时公钥生成共享秘密;密钥槽生成器,用于生成多个加密的每个接收方的密钥槽(per-recipient key slot),每个加密的每个接收方的密钥槽通过使用多个共享秘密中的不同共享秘密对内容加密密钥进行加密来生成;数据结构产生器,用于创建包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构;以及结构发送器,用于传输数据结构以将内容传递给与从其导出所述一个或多个加密的每个接收方的密钥槽的设备公钥相关联的接收方。

作为密钥交换(例如,Diffie-Hellman密钥交换)的一部分,在双方独立创建了接收方共享秘密。接收方共享秘密是每个接收方的共享密钥的示例和每个接收方的共享加密密钥的其它示例。每个接收方的共享秘密用于在分发器侧加密内容密钥(也称为每个内容的密钥),并且用于在接收器侧解密内容密钥以解密内容。内容密钥对于每个有效载荷都是唯一的,并由接收方共享秘密加密到每个接收方的密钥槽中(这是舱单传输(manifesttransmission)的一部分)。

根据第二种技术,提供了一种用于将内容从分发器安全地分发到多个接收设备(接收方)的方法,每个接收方创建接收方信任的临时公私钥对并使接收方信任的临时公钥可用,所述方法包括:从储存库中检索接收方信任的临时公钥,每个接收方信任的临时公钥与相应的接收方相关联;生成包括分发器临时私钥和分发器临时公钥的分发器临时密钥对;生成用于加密要分发的内容的内容加密密钥并使用内容加密密钥对内容进行加密;使用接收方信任的临时公钥和分发器临时私钥为每个接收方信任的临时公钥生成共享秘密;生成多个加密的每个接收方的密钥槽,每个加密的每个接收方的密钥槽通过使用多个共享秘密中的不同共享秘密对内容加密密钥进行加密来生成;创建包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构;以及传输数据结构以将内容传递给与从其导出所述一个或多个加密的每个接收方的密钥槽的设备公钥相关联的接收方。

根据第三种技术,提供了一种用于从分发器安全地接收内容的接收设备,所述接收设备包括:密钥产生器,用于创建接收方信任的临时公私钥对;密钥发送器,用于将接收方信任的临时公钥发送到储存库;数据结构接收器,用于接收包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构,每个加密的每个接收方的密钥槽与不同接收方相关联,并且每个通过使用与接收方相关联的接收方共享秘密对内容加密密钥进行加密来形成,每个接收方共享秘密使用相关联的接收方信任的临时公钥和分发器临时私钥生成;秘密产生器,用于根据分发器临时公钥和接收方信任的临时私钥重新创建接收方共享的秘密;密钥槽解码器,用于通过使用重新创建的接收方共享秘密来解密与接收方相关联的一个或多个加密的每个接收方的密钥槽的加密的每个接收方的密钥槽来重新创建内容加密密钥;以及内容解码器,用于用内容加密密钥对加密内容进行解密。

根据第四种技术,提供了一种在接收设备中用于从分发器安全地接收内容的方法,所述方法包括:创建接收方信任的临时公私钥对;将接收方信任的临时公钥发送到储存库;接收包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构,每个加密的每个接收方的密钥槽与不同接收方相关联,并且每个通过使用与接收方相关联的接收方共享秘密对内容加密密钥进行加密来形成,每个接收方共享秘密使用相关联的接收方信任的临时公钥和分发器临时私钥生成;根据分发器临时公钥和接收方信任的临时私钥重新创建接收方共享秘密;通过使用重新创建的接收方共享秘密解密与接收方相关联的加密的每个接收方的密钥槽来重新创建内容加密密钥;以及用内容加密密钥对加密内容进行解密。

根据第五种技术,提供了一种包括分发器、多个接收设备和储存库的系统,所述系统用于将内容安全地分发到接收设备,每个接收设备包括:密钥产生器,用于创建接收方信任的临时公私钥对;密钥发送器,用于将接收方信任的临时公钥发送到储存库;数据结构接收器,用于接收包括分发器临时公钥、加密内容和一个或多个加密的每个接收方的密钥槽的数据结构;秘密产生器,用于根据分发器临时公钥和接收方信任的临时私钥重新创建接收方共享的秘密;密钥槽解码器,用于通过使用共享秘密解密与接收方相关联的加密的每个接收方的密钥槽来生成内容加密密钥;内容解码器,用于用内容加密密钥对加密内容进行解密;并且所述分发器包括:检索器,用于从储存库中检索接收方信任的临时公钥,每个接收方信任的临时公钥与相应的接收方相关联;分发器密钥产生器,用于生成包括分发器临时私钥和分发器临时公钥的分发器临时密钥对;内容密钥产生器,用于生成用于加密要分发的内容的内容加密密钥,并使用内容加密密钥对内容进行加密;共享秘密产生器,用于使用接收方信任的临时公钥和分发器临时私钥为每个接收方信任的临时公钥生成共享秘密;密钥槽生成器,用于生成多个加密的每个接收方的密钥槽,每个加密的每个接收方的密钥槽通过使用多个共享秘密中的不同共享秘密对内容加密密钥进行加密来生成;数据结构产生器,用于创建包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构;以及结构发送器,用于传输数据结构以将内容传递到与从其导出一个或多个加密的每个接收方的密钥槽的设备临时公钥相关联的接收方。

根据第六种技术,提供了一种用于将内容从分发器安全地分发到多个接收设备的方法,所述方法包括:接收器创建接收方信任的临时公私钥对;接收器将接收方信任的临时公钥发送到储存库;分发器从储存库中检索多个接收方信任的临时公钥,每个接收方信任的临时公钥与相应的接收方相关联;分发器生成包括分发器临时私钥和分发器临时公钥的分发器临时密钥对;分发器还生成用于加密要分发的内容的内容加密密钥并使用内容加密密钥对内容进行加密;分发器还使用接收方信任的临时公钥和分发器临时私钥为每个接收方信任的临时公钥生成共享秘密;分发器还生成多个加密的每个接收方的密钥槽,每个加密的每个接收方的密钥槽通过使用多个共享秘密中的不同共享秘密对内容加密密钥进行加密而生成;分发器还创建包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构,并传输数据结构以将内容传递给与从其导出一个或多个加密的每个接收方的密钥槽的设备公钥相关联的接收方;接收设备接收包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构;接收器设备根据分发器临时公钥和接收方信任的临时私钥重新创建接收方共享秘密;接收器通过使用重新创建的共享秘密解密与接收方相关联的加密的每个接收方的密钥槽来重新创建内容加密密钥;以及接收器设备用内容加密密钥对加密内容进行解密。

根据第七种技术,提供了一种存储在计算机可读介质上并且可加载到数字计算机的内部存储器中的计算机程序,该计算机程序包括软件代码部分,当所述程序在计算机上运行时,该软件代码部分用于执行方法权利要求中的任一项的步骤。

附图说明

将参考附图描述多个实施例,其中:

图1是分发器;储存库和一些接收设备(接收方)的示例部署图;

图2A和2B是分发器和通用接收方的部署图;

图3A和3B分别是临时接收器模块和临时分发模块的组件图;

图4A和4B分别是临时接收器方法和临时分发方法的方法图;

图5是一起示出临时接收器方法和临时分发方法的泳道图;

图6是数据结构的示例流程图。

具体实施方式

如本文所使用的,术语临时密钥意指持续短时间段的密钥。临时密钥可以是单次使用(single use)密钥。但是,临时密钥可以被使用多次,例如以减少所需的密钥刷新次数。可替代地,临时密钥可以具有截止日期/时间,使得其仅在有限的时间段内有效,或者临时密钥可以仅在有限数量的使用周期内有效。

参考图1,示例部署图包括:分发器12;储存库14和接收方14(14A至14D)。分发器12用于将软件更新分发给接收方。储存库13用于在分发器和接收方14之间存储和交换数字密钥。接收方14(14A至14D)是用于在网络中执行一般计算机功能的接收设备。每个接收方都有接收方模块,该接收方模块是用于该接收方的控制器,每个接收方模块都使用需要不时更新的程序代码。

参考图2A和2B,根据抽象的互操作通用或专用计算处理系统环境或配置来描述第一实施例的分发器12和接收方14的相应部署图。

分发器12是计算机处理系统,包括:中央处理器单元(CPU)120;存储器122;以及网络适配器124。网络适配器124用于与接收方14通信。存储器122包括:分发器模块126和临时分发器模块250。分发器模块126用于协调分发器的功能。临时分发器模块250用于执行下面更详细描述的实施例的方法。

接收方14是计算机处理系统,包括:中央处理器单元(CPU)140;存储器142;以及网络适配器144。网络适配器144用于与分发器和储存库通信。存储器122包括:接收方模块150和临时接收器模块200。接收方模块126用于协调接收方的功能。临时接收器模块200用于执行下面更详细描述的实施例的方法。

也可以适合用作网关服务器12、移动网关14和远程收发器16的计算处理系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持或便携式设备、多处理器系统、基于微处理器的系统、网络PC、小型计算机系统、大型计算机系统以及包括上述任何系统或设备的分布式计算环境。分布式计算机环境包括云计算环境,例如,其中网关服务器是由多个计算机处理系统中的一个或多个执行的第三方服务。

分发器12和接收器14分别包括包含由计算机处理器执行的可执行指令的程序模块。一般而言,程序模块可以包括:例程;程序;对象;组件;逻辑;以及控制处理器任务的执行或实现特定抽象数据类型的数据结构。计算机处理系统可以实施在分布式云计算环境中,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。

CPU 120和140从相应的模块加载可执行指令以响应于机器指令来执行机器操作。这样的机器操作包括:对寄存器中的值执行运算(例如,算术或逻辑运算);直接将值从寄存器移到存储器位置,反之亦然;以及进行有条件或无条件的分支。CPU可以执行许多不同的机器运算。机器指令以机器代码语言编写,该机器代码语言被称为低级计算机语言。用高级计算机语言(也称为源代码)编写的计算机程序需要先编译为机器代码程序(也称为目标代码),然后才能由处理器执行。可替代地,诸如虚拟机或解释器之类的机器代码程序可以根据机器运算来解释高级语言。

存储器122和142可以是易失性存储器以及非易失性或持久性存储器。易失性存储器用于更快的应用,而非易失性存储器用于将数据保持更长时间。每个计算机处理系统还可以包括其它可移动和/或不可移动、易失性和/或非易失性计算机系统存储介质。仅作为示例,可以提供永久性存储器用于读取和写入不可移动的非易失性磁性介质(未示出,并且通常是磁性硬盘或固态驱动器)。如将在下面进一步描绘和描述的,存储器122和142包括程序产品模块,该程序产品模块包括用于执行实施例的功能的组件和指令。支持优选实施例但未示出的其它程序模块包括固件、引导程序、操作系统和支持应用。每个操作系统;支持应用;其它程序模块;以及程序数据;或者它们的某种组合可以包括联网环境的实现。

参考图3A,描述了实施例的临时接收器模块200的组件图。临时接收器模块200包括:密钥产生器202;密钥发送器204;签名器206A;签名器发送器206B;数据结构接收器210;验证器212;秘密产生器214;密钥槽解码器216;垃圾收集器218;内容解码器220;更新器222;转发器224;以及临时接收器方法300。

密钥产生器202用于创建接收方信任的临时公私钥对(DEKpublic和DEKprivate),并用于创建接收方长期(信任的)公私钥对,并用于将接收方长期公钥发送到储存库。

密钥发送器204用于将接收方信任的临时公钥(DEKpublic)发送到储存库。

签名器206A用于在发送之前用接收方长期私钥对接收方信任的临时公钥(DEKpublic)进行签名。

签名器发送器206B还用于可选地发送和可选地签名以下一项或多项:接收方ID、接收方信任的公钥标识符、接收方信任的临时公钥的截止日期,由此接收方不再想要使用该接收方信任的临时公钥的加密内容。

数据结构接收器210用于接收包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构。

验证器212用于使用分发器长期公钥来验证签名的数据结构。

秘密产生器214用于从分发器临时公钥和接收方信任的临时私钥创建接收方共享秘密。

密钥槽解码器216用于解密与接收方相关联的加密内容每个接收方的密钥槽。

垃圾收集器218用于丢弃分发器的临时公钥和/或接收方共享秘密,以减少密钥刷新或将它们保留有限数量的使用周期(进一步可选地,如数据结构元数据所指示的)。

内容解码器步骤220用于用内容加密密钥对加密内容进行解密。

更新器222用于用内容更新接收方。

转发器224用于将数据结构转发给与加密的每个接收方的密钥槽之一对应的另一个接收方。

下面描述临时接收器方法300。

参考图3B,描述了实施例的临时分发模块250的组件图。临时分发模块250包括:检索器252:分发器密钥产生器254;内容密钥产生器256;共享秘密产生器258;分发器垃圾收集器260;密钥槽生成器262;数据结构产生器264;结构签名器266;以及结构发送器268。

检索器252用于从储存库中检索接收方信任的临时公钥,每个接收方信任的临时公钥与相应的接收方相关联,并且用于使用也从储存库中检索的相关联的接收方长期公钥来验证每个接收方信任的临时公钥。

分发器密钥产生器254用于生成包括分发器临时私钥和分发器临时公钥的分发器临时密钥对。

内容密钥产生器256用于生成用于对要分发的内容进行加密的内容加密密钥并且使用该内容加密密钥对内容进行加密。

共享秘密产生器258用于使用接收方信任的临时公钥和分发器临时私钥为每个接收方信任的临时公钥生成共享秘密。

分发器垃圾收集器260用于在共享秘密生成之后丢弃分发器临时私钥和接收方信任的临时公钥。

密钥槽生成器262用于生成多个加密的每个接收方的密钥槽,每个加密的每个接收方的密钥槽通过使用多个共享秘密中的不同共享秘密对内容加密密钥进行加密来生成。

数据结构产生器264用于创建包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构,并用于在密钥表中组织加密的每个接收方的密钥槽。

结构签名器266用于用分发器长期私钥对数据结构的一个或多个部分进行签名。

结构发送器268用于传输数据结构,以将内容传递给与从其导出一个或多个加密的每个接收方的密钥槽(在密钥表中)的设备公钥相关联的接收方。

下面描述临时分发方法350。

参考图4A,描述了包括逻辑处理步骤302至324的临时接收器方法300。该方法用于在两个或更多个接收设备、分发器和储存库的固件更新系统中安全地进行固件更新传递。该方法在接收设备中,该接收设备用于从分发服务器接收加密内容、解密加密内容并使内容可供使用。

步骤302用于创建接收方信任的临时公私钥对(DEKpublic和DEKprivate)。可选地,该步骤还用于创建接收方长期(信任的)公私钥对并将接收方长期公钥发送到储存库,这是在多个接收方中的每个接收方处执行的。信任的临时密钥是通过信任协议传递的,该协议涉及用另一个信任的密钥对传递包进行签名并在传递时验证签名。在大多数情况下,公钥用于验证签名,但可选地,实现将共享对称密钥用于对称解密或基于散列的消息认证码(HMAC)秘密。这种验证发生在储存库和/或分发器处。

步骤304用于将接收方信任的临时公钥(DEKpublic)发送到储存库。可选地,还使用私钥对接收方临时公钥(或接收方公钥的散列)进行签名,以防止在传送过程中或在分发服务器上发生攻击(例如,中间攻击的人)。储存库和分发服务器可以使用接收方的长期公钥来验证接收方临时公钥。

步骤306A用于在发送之前可选地用接收方长期私钥对接收方信任的临时公钥(DEKpublic)进行签名。可选地,签名的接收方信任的临时公钥(DEKpublic)是包含接收方信任的临时公钥的签名证书链,或者是接收方信任的临时公钥的签名的密码散列或包含接收方信任的临时公钥的证书链的签名的密码散列。

步骤306B还用于可选地发送和可选地签名以下一项或多项:接收方ID、接收方信任的公钥标识符、接收方信任的临时公钥的截止日期,由此接收方不再想要使用该接收方信任的临时公钥的加密内容。接收方ID是可选的,并且/或者可以包含在签名中。在接收方准备期间,接收方将新的临时公钥发送到储存库。这通常在调度的轮询以及与服务器的其它不相关通信期间执行。虽然描述了截止日期,但是可以设想任何类型的截止值,包括事件之后(例如,在接收到接收方信任的临时公钥之后)的相对时间和绝对时间或接收方信任的临时公钥的相对使用和绝对使用。

步骤308,在储存库处接收接收方信任的临时公钥。

由于接收方信任的临时公钥已转移到储存库,然后在分发器准备阶段B期间由分发器从储存库中检索,因此减少了整个系统的时延。这是因为可以在任何时间上传接收方信任的临时公钥,使得不需要分发器向多个接收方广播对其公钥的请求并等待响应。当例如周期性地建立到储存库的连接时,接收方可以将他们信任的临时公钥上传到储存库。

接收方将其信任的临时公钥上传到储存库的附加益处是,分发器可以将在准备广播时不在线的设备定为目标。这为很少连接或处于睡眠状态的设备提供了显著的益处。相比之下,如果接收方直接将其信任的临时公钥上传到分发器,那么准备时间将增加,因为将要求分发器在发送更新之前等待所有设备上线至少一次。在建立连接昂贵(诸如在卫星设备中)并且无论如何必须广播固件更新状态消息的情况下,发送新的公钥同时减少了所需的通信会话的数量,这可以减少准备更新的开支。

接收方等待要从分发器发送的数据结构(包括加密内容和加密的每个接收方的密钥槽)和/或接收方向分发器请求这样的数据结构。分发处理通过方法400执行。

步骤310用于接收包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构。诸如密钥ID或公钥散列的标识符与每个加密密钥槽相关联,使得每个接收方可以识别其自己的加密密钥槽。

步骤312用于可选地使用分发器长期公钥来验证签名的数据结构。

步骤314用于从分发器临时公钥和接收方信任的临时私钥重新创建接收方共享秘密。

步骤316用于通过使用重新创建的共享秘密解密与接收方相关联的加密的每个接收方的密钥槽来重新创建内容加密密钥。接收方可以使用存储在数据结构中的密钥ID/或公钥散列来识别其密钥槽。

步骤318用于可选地丢弃分发器的临时公钥和/或接收方共享的秘密,以减少密钥刷新或使其保持有限数量的使用周期。进一步可选地,丢弃的决定如数据结构元数据所指示。

步骤320用于用内容加密密钥对加密内容进行解密。

步骤322用于用内容更新接收方。

步骤324用于可选地将数据结构转发给与加密的每个接收方的密钥槽之一对应的另一个接收方,或者可替代地,复制包括加密的每个接收方的密钥槽的子集的数据结构,并将复制的数据结构转发给与子集中的加密的每个接收方的密钥槽之一对应的接收方。

参考图4B,描述了包括逻辑处理步骤402至418的临时分发方法400。

步骤402用于从储存库中检索接收方信任的临时公钥,每个接收方信任的临时公钥与相应的接收方相关联(可选地,使用也从储存库中检索的相关联的接收方长期公钥来验证每个接收方信任的临时公钥)。

步骤404用于生成包括分发器临时私钥和分发器临时公钥的分发器临时密钥对。

步骤406用于生成用于对要分发的内容进行加密的内容加密密钥并使用该内容加密密钥对内容进行加密。

步骤408用于使用接收方信任的临时公钥和分发器临时私钥为每个接收方信任的临时公钥生成共享秘密。

步骤410用于在共享秘密生成之后可选地丢弃分发器临时私钥和/或接收方信任的临时公钥。优选地,分发器临时私钥和接收方信任的临时公钥不存储在非易失性存储器中,并且更优选地,一些或全部密钥在不能在分发器外部访问的不可导出的存储器中创建。密钥表头可能包含证明(证书),其所使用的密钥是在足够安全的不可导出的存储器中标记为不可导出的密钥。不可导出的存储器的示例是用于保护和管理用于密码处理的数字密钥的硬件安全模块,此类模块可以采用直接附接到计算机处理设备(诸如分发器)中的插入式硬件的形式。

步骤412用于生成多个加密的每个接收方的密钥槽,每个加密的每个接收方的密钥槽通过使用多个共享秘密中的不同共享秘密对内容加密密钥进行加密来生成。该步骤将临时加密内容的生成与设备通信解耦;生成可以离线执行,这简化了通信并允许目标设备低功耗操作。

步骤414用于创建包括分发器临时公钥、加密内容以及一个或多个加密的每个接收方的密钥槽的数据结构(可选地,在密钥表中组织该一个或多个加密的每个接收方的密钥槽)。与每个加密密钥槽相关联的标识符(诸如,密钥ID或公钥散列)被包括在该结构中,使得每个接收方可以识别其自己的加密密钥槽。

步骤416用于可选地用分发器长期私钥对数据结构的一个或多个部分进行签名。进一步可选地,对于每个加密的每个接收方的密钥槽,包括相关联的接收方设备ID,以在接收方处标识正确的槽并允许将数据结构更容易地拆分为子结构。分发器可以对以下各项的任意组合进行签名:接收方设备ID;接收方加密公钥ID(不透明);分发器的临时公钥;CEK的明文(在数据结构中省略);CEK的明文摘要;和/或CEK的密文。存在用于签名的选项,分发器可能决定使用一个签名对所有设备密钥条目进行签名,或者接收方设备ID或公共加密密钥或者两者都可以不在签名中,签名可能被全部省略。接收器可能改为使用经认证的解密。

步骤418用于传输数据结构,以将内容传递给与从其导出一个或多个加密的每个接收方的密钥槽(在密钥表中)的设备临时公钥相关联的接收方。分发器将其临时公钥BEKpublic附加到密钥表(“密钥表头”)—并用其长期密钥对临时公钥进行签名—并将其与加密的每个接收方的密钥槽表条目组合。在IES的情况下,可以跳过附加BEKpublic的步骤,因为IES已包含BEKpublic公钥条目。该步骤提供了内容的单步传递,从而为双方保留了临时的保证,因为如果内容和任何一方的长期密钥受到损害,那么对方将不能解密该内容。

对于软件实现,这里采用安全措施,用于临时分发器密钥的存储器可以固定到内部CPU高速缓存中,因此它将在可能未加密的外部RAM上永远不可见。

参考图5,根据接收方准备阶段A;分发器准备阶段B;分发阶段C;接收方接收阶段D;以及密钥刷新阶段E来描述实施例。

在接收方准备阶段A期间,接收方将新的临时公钥发送到储存库,这通常将在调度的轮询以及与服务器的其它不相关通信期间执行。

通过使用仅在短时间段内有效(例如,通过定义截止日期/时间)或仅对单次使用或预定义数量的使用周期有效的接收方临时公私钥对,可以保护接收方设备免于暴露于恶意攻击。例如,如果接收方临时私钥被暴露,那么由于临时公私钥对仅在短时间段内有效,因此临时私钥的暴露不会暴露接收方设备的所有先前的通信,仅暴露的临时公私钥对的那些。

在分发器准备期间:分发器从储存库中查询设备临时公钥;创建新的密钥对;为每个接收方创建共享秘密;以及使用每个设备的共享秘密对新的内容加密密钥(CEK)进行加密。这些共享秘密可以重复使用,直到密钥刷新阶段为止。在完成密钥表创建之后,作者删除其私钥和所有共享秘密。

在分发阶段B期间:分发器将接收方ID;接收方密钥ID;分发方公钥;和加密的CEK发送到每个接收方。在密钥刷新阶段E期间,每个接收方删除其私钥和共享秘密。

在接收方准备阶段A期间:每个接收方创建新的信任的临时私钥DEKprivate及其临时公共对应方DEKpublic;接收方用长期密钥签名内容;接收方例如在调度的交互(例如,轮询以进行固件更新)期间将该签名的数据发送到储存库;并且储存库存储签名的密钥信息以供以后使用。内容包括:接收方设备ID(可选,在大多数情况下而是包含在签名中);接收方信任的临时公钥DEKpublic或包含它的证书(链)(或这些的密码散列);接收方加密公钥ID(不透明,可选—参见下面的注释);可选:该条目的截止日期(“在该日期之后,请不要再给我发送加密到该条目的任何东西”)。

分发器准备阶段B包括:分发器从储存库中查询如在先前步骤中存储的所有目标接收方临时公钥;并且分发器根据已知的接收方长期公钥验证所有接收方签名。

分发阶段C包括:分发器创建新的临时加密私钥BEKprivate及其公共对应方BEKpublic;分发器创建新的内容加密密钥(CEK);分发器将内容的密文发送到储存库;对于每个接收方使用收集的临时公共设备密钥(“密钥表条目”)使用集成加密方案(IES或在椭圆曲线密码(ECC)的情况下为椭圆曲线集成加密方案(ECIES))对CEK进行加密;并且分发器对因素的组合进行签名。这些因素包括:接收方设备ID;接收方加密公钥ID(不透明)PKID;CEK的密文、明文或明文的摘要(基于IES、ECIES等)。

此时,分发器将放弃私钥BEKprivate,理想情况下,该密钥永远不存储在非易失性存储器中。在理想情况下,原始密钥是在不可导出的存储器中创建的,使得它不能从外部访问。密钥表头可能包含证明(证书),其所使用的密钥在足够安全的不可导出的存储器中被标记为不可导出;对于软件实现,这里采用通常的安全措施,用于临时分发器密钥的存储器可以固定到内部CPU高速缓存中,因此它将在可能未加密的外部RAM上永远不可见。

分发阶段C还包括:分发器将其临时公钥BEKpublic附加到密钥表(“密钥表头”)、用其长期密钥对临时公钥进行签名,并将其与每个设备的条目密钥表条目组合。在IES的情况下,可以跳过附加BEKpublic的步骤,因为IES已包含BEKpublic公钥条目;分发器将带有上述签名的临时公钥的密钥表结构发送到内容传递网络(CDN)(密钥表结构);并且CDN将分发器密钥表结构分发给所有接收方。设备或网关现在可以下载一个或多个密钥表条目和密钥表头,以从CDN执行密钥更新(密钥表和加密的有效载荷可以被推送到设备或由设备提取)。当这些下载沿着网状网络行进时,可以进一步拆分表,但保留头部。

在任何时间点,多个密钥可以处于活动状态(并在储存库处被上传),以反映与多方的关系或在密钥表创建和密钥表传递之间(以及在设备侧刷新一个或多个可能的密钥)的延迟。在这种情况下,可以使用可选的接收方公钥ID来消除已使用的公钥的歧义。如果签名格式已经提供了这样的标识符,或者在更新期间仅使用一个密钥,那么可以丢弃该标识符。

在接收方阶段D:接收方或者从上述组合的广播中提取其自己的密钥表条目以及密钥表头,或者在点对点通信(推送或提取)中接收这两项;接收方根据导致长期密钥签名的密钥表头和密钥表条目的证书链来验证密钥表(在加密/解密的有效载荷可以通过其它手段进行认证的情况下,这是可选的)。

接收方阶段D继续:在多个临时密钥对于设备处于活动状态的情况下,接收方使用其自己的临时密钥提取CEK以对将来的有效载荷进行解密(可选的经认证的解密),设备可以或者尝试它们全部,或者(可以将其推送到设备或由设备提取)通过如由分发器传递的可选PKID识别正确的密钥。

接收方阶段D继续:固件更新可以直接与一个或多个密钥表条目和密钥表头级联;在同一对象传输或广播分发中允许非常高效的固件分发;此时,接收设备可以丢弃临时密钥,或在丢弃临时密钥之前决定多次使用它以减少密钥刷新。注意的是,在储存库可以被信任的情况下,分发器和储存库可以是单个实体。例如,分发器可以向信任的储存库提供CEK。在这种情况下,储存库将执行所有其它“分发器”动作。可选地,通过高速缓存BEKprivate/BEKpublic和/或DEKprivate/DEKpublic,可以在密钥刷新周期之间进行一次以上的分发。

在密钥刷新阶段E中,可以通过以下方式触发密钥刷新或密钥丢弃:使用密钥(单次使用密钥);密钥截止超时(固定持续时间或固定使用计数密钥);以及外部触发器(例如:手动复位、入侵检测)。在密钥刷新中:每个接收方销毁其(加密)私钥和所有高速缓存的共享秘密;每个接收方执行新的接收方准备;分发器销毁其(加密)私钥和所有高速缓存的共享秘密;并且分发器启动新的分发器准备阶段。

参考图6,描述了数据结构的示例流程图。

路由器600接收数据结构700A。数据结构700A包括:分发器临时公钥;加密内容;以及加密的每个接收方的密钥槽A、B、C和D。路由器600将数据结构700A拆分成子结构,数据结构700B和700C。子结构包含相同的分发器临时公钥和加密内容,但是数据结构700B还包括加密的每个接收方的密钥槽A和B,并且数据结构700C还包括加密的每个接收方的密钥槽C和D。数据结构700B被转发到接收方14A或14B,并且数据结构700C被转发到接收方14C或14D。

每个接收方可以用分发器长期公钥来验证签名的数据结构。然后,接收方可以根据分发器临时公钥和接收方信任的临时私钥来创建接收方共享秘密。然后,用与接收方相关联的每个接收方的密钥槽对加密内容进行解密。然后,接收方可以丢弃分发器的临时公钥。然后可以用接收方用内容更新的内容加密密钥对加密内容进行解密。如果接收方14A最初接收到该数据结构,那么该数据结构可以被转发到与加密的每个接收方的密钥槽之一对应的另一个接收方(例如,14B)。

虽然本文中的描述涉及将接收方信任的临时公钥用于安全软件更新,但是接收方信任的临时公钥上传到储存库与接收方信任的临时公钥的使用无关。上传到储存库的接收方信任的临时公钥可能尚未针对特定任务而被上传到储存库,并且其可以由任何系统使用来与接收方设备进行安全通信。

如本领域技术人员将认识到的,本技术可以被实施为系统、方法或计算机程序产品。因此,本技术可以采取完全硬件实施例、完全软件实施例或组合软件和硬件的实施例的形式。

此外,本技术可以采取在计算机可读介质中实施的计算机程序产品的形式,该计算机可读介质具有实施在其上的计算机可读程序代码。该计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介质可以是例如但不限于电子、磁性、光学、电磁、红外线或半导体系统、装置或设备,或前述的任何适当组合。

可以以一种或多种编程语言的任何组合来编写用于执行本技术的操作的计算机程序代码,包括面向对象的编程语言和过程编程语言。

例如,用于执行本技术的操作的程序代码可以包括诸如C之类的编程语言(解释型或编译型)源代码、目标代码或可执行代码,或汇编代码,用于建立或控制ASIC(专用集成电路)或FPGA(现场可编程门阵列)的代码,或用于诸如VerilogTM或VHDL(超高速集成电路硬件描述语言)之类的硬件描述语言的代码。

程序代码可以完全在计算机上执行、部分地在计算机上执行并且部分地在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到计算机。代码组件可以被实施为过程、方法等,并且可以包括子组件,这些子组件可以采取任何抽象级别的指令或指令序列的形式,从本机指令集的直接机器指令到高级编译型或解释型语言构造。

本领域技术人员还将清楚,根据本技术的优选实施例的逻辑方法的全部或部分可以适当地实施在包括执行方法的步骤的逻辑元件的逻辑装置中,并且这样的逻辑元件可以包括例如可编程逻辑阵列或专用集成电路中的组件,诸如逻辑门。这样的逻辑布置还可以实施在使能元件中,用于使用例如虚拟硬件描述符语言在这样的阵列或电路中临时或永久地建立逻辑结构,其可以使用固定或可传输的载体介质来存储和传输。

在一个可替代方案中,可以以计算机实现的部署服务的方法的形式来实现本技术的实施例,该方法包括以下步骤:部署计算机程序代码,该计算机程序代码可操作以在部署到计算机基础设施或网络中并在其上执行时使所述计算机系统或网络执行该方法的所有步骤。

在另一个替代方案中,可以以其上具有功能数据的数据载体的形式来实现本技术的优选实施例,所述功能数据包括功能计算机数据结构,以在被加载到计算机系统或网络中并由此对其进行操作时,使所述计算机系统能够执行该方法的所有步骤。

对于本领域技术人员将显而易见的是,在不脱离本技术范围的情况下,可以对前述示例性实施例进行许多改进和修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号