CN110582776A - 连续散列验证 - Google Patents
连续散列验证 Download PDFInfo
- Publication number
- CN110582776A CN110582776A CN201880029413.9A CN201880029413A CN110582776A CN 110582776 A CN110582776 A CN 110582776A CN 201880029413 A CN201880029413 A CN 201880029413A CN 110582776 A CN110582776 A CN 110582776A
- Authority
- CN
- China
- Prior art keywords
- hash
- hash state
- file
- state
- starting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012795 verification Methods 0.000 title claims description 15
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000001174 ascending effect Effects 0.000 claims abstract description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 230000036961 partial effect Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000002441 reversible effect Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Power Engineering (AREA)
- Medical Informatics (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
描述了一种用于验证下载文件的部分或全部的方法和数据处理装置,该文件包括字节序列,一个或多个字节定义块,该文件具有通过散列算法从第一个到最后一个按升序在块上计算的最终散列状态,每个块具有通过散列算法计算的起始散列状态,所述方法包括:接收最终散列状态;接收能够从最后一块开始按降序排序的一个或多个块;对于每个接收到的块,接收该块的起始散列状态;对于每个接收到的块,通过从接收到的块的起始散列状态运行散列算法来计算结束散列状态;当结束散列状态与最终散列状态或已确认的起始散列状态相同时,确认每个接收到的块的起始散列状态;以及当结束散列状态与最终散列状态或已确认的起始散列状态不匹配时,标记错误。
Description
技术领域
本技术涉及在下载数据时针对常规散列(hash)的恶意改变的检测以及在下载期间检测到数据的修改的情况下终止下载。
背景技术
在下载固件更新时,下载文件的早期终止尤为重要,因为闪现更新需要相当大的功率,并且由于拒绝服务(denial-of-service,DoS)的原因,损坏的固件更新可用于耗尽设备的电池。
越来越多数量的数据处理设备具有用于作为物联网(IoT)的部分的它们自身、网络设备和服务之间的交互的处理和通信能力。例如,家庭中的加热系统可以从各种温度传感器设备收集信息,并基于收集到的信息控制加热器的激活。另一个示例,工厂污染监视传感器设备可以从工厂网络中的各种化学传感器收集信息,并基于收集到的信息经由互联网安排维护。在另一个示例中,冰箱可以从冰箱内的产品收集信息,并经由用户的智能手表或智能手机向用户更新库存水平和最佳使用日期。在另一个示例中,被配置为锁定或解锁的门锁设备可以与授权设备通信以接收控制消息。
与安全的网络计算系统相比,这种网络附连的数据处理设备(此后称为IoT设备)往往具有降低的安全能力,并因此往往容易受到第三方攻击的伤害。第三方攻击者可能会拦截发往IoT设备的消息并修改该消息,以便损害和/或导致IoT设备发生故障。能够尽可能早地检测被修改的消息以免浪费诸如功率和网络带宽之类的IoT设备资源处理受损消息将是有用的。
发明内容
根据第一技术,提供了一种用于验证下载文件的部分或全部的方法,该文件包括字节序列,一个或多个字节定义块,该文件具有通过散列算法(hash algorithm)从第一个到最后一个按升序在块上计算的最终散列状态,每个块具有通过散列算法计算的起始散列状态,所述方法包括:接收最终散列状态;接收能够从最后一块开始按降序排序的一个或多个块;对于每个接收到的块,接收该块的起始散列状态;对于每个接收到的块,通过从接收到的块的起始散列状态运行散列算法来计算结束散列状态;当结束散列状态与最终散列状态或已确认的起始散列状态相同时,确认每个接收到的块的起始散列状态;以及当结束散列状态与最终散列状态或已确认的起始散列状态不匹配时,标记错误。
根据第二技术,提供了一种用于验证下载文件的部分或全部的系统,该文件包括字节序列,一个或多个字节定义块,该文件具有通过散列算法从第一个到最后一个按升序在块上计算的最终散列状态,每个块具有通过散列算法计算的起始散列状态,所述系统包括:接收器,用于接收最终散列状态,接收能够从最后一块开始按降序排序的一个或多个块,以及对于每个接收到的块,接收该块的起始散列状态;以及验证器,用于对于每个接收到的块,通过从接收到的块的起始散列状态运行散列算法来计算结束散列状态,用于当结束散列状态与最终散列状态或已确认的起始散列状态相同时确认每个接收到的块的起始散列状态,以及用于当结束散列状态与最终散列状态或已确认的起始散列状态不匹配时标记错误。
优选地,当结束散列状态与最终散列状态或已确认的起始散列状态不匹配时,该方法和系统还包括结束下载和/或请求重新传输下载。
附图说明
将参考附图描述实施例:
图1是本实施例的用于连续散列物联网(IoT)设备的部署图;
图2是根据本实施例的连续散列客户端和连续散列服务器的组件图;
图3是根据本实施例的连续散列构建器方法的图;
图4是根据本实施例的连续散列验证器方法的图;
图5A1和图5A2是本实施例的示例文件容器(file container)和数据分组(datapacket)的示意图;
图5B1和图5B2是另一个实施例的示例文件容器和数据分组的示意图;以及
图6A、图6B和图6C是图5A1的示例的示意性状态图。
具体实施方式
参考图1,描述了用于计算机实现的连续散列物联网(IoT)设备1实施例的示例部署。该实施例和其它实施例可以应用于第三方签名的数据,从而使得能够在下载期间对该数据进行逐块验证,而无需信任云或添加附加的签名。实施例还可以应用于现有工具,如公共私钥签名的附件,以在下载附件时进行信任的解码/显示。实施例附加地以相反顺序实现来自不信任的云基础设施的信任的服务日志文件条目。
连续散列IoT设备1在众多其它通用或专用计算系统环境或配置下操作。可以适用于与连续散列IoT设备1一起使用的众所周知的计算处理系统、环境和/或配置的示例包括但不限于网关、路由器、个人计算机系统、服务器计算机系统、瘦客户端(thin client)、胖客户端(thick client)、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品(智能手机、智能手表、平板电脑)、网络PC、小型计算机系统、大型计算机系统以及包括任何上述系统或设备的分布式计算环境。
可以在计算机系统和片上计算机系统(SoC)的一般上下文中描述连续散列IoT设备1。这样的计算机系统包括由计算机处理器执行的可执行指令,诸如程序模块。通常,程序模块可以包括:例程;程式;对象;组件;逻辑;以及执行任务或实现抽象数据类型的数据结构。
连续散列IoT设备1通过广域网(WAN)10连接到连续散列服务器系统2。可以使用任何其它类型的网络,包括低功率无线网络。WAN 10典型地是有线网络,诸如互联网。
连续散列IoT设备1包括:处理器12;网络适配器14;以及设备存储器16。
处理器12用于从设备存储器16加载机器指令,并且用于响应于机器指令而执行机器操作。这样的机器操作包括:对寄存器中的值执行操作(例如算术或逻辑操作);直接将值从寄存器移动到存储器位置,反之亦然;以及有条件或无条件分支。典型的处理器可以执行许多不同的机器操作。机器指令用机器代码语言编写,机器代码语言被称为低级计算机语言。用高级计算机语言编写的计算机程序(也称为源代码)在它可以被处理器执行之前需要被编译成机器代码程序(也称为目标代码)。替代地,诸如虚拟机或解释器之类的机器代码程序可以按照机器操作来解释高级语言(诸如C)。
网络适配器14用于实现连续散列IoT设备1与网络设备之间的通信。
设备存储器16包括模块。第一模块是被配置为执行优选实施例的功能的连续散列客户端100,以及第二模块是用于执行特定设备应用的设备应用102。由于实施例与可能下载诸如固件更新之类的文件的任何设备功能相关,因此不进一步描述设备应用102。在本实施例中,将模块从设备存储器16加载到处理器存储器28中。支持优选实施例但未示出的其它程序指令模块包括固件、引导程序和支持应用。
处理器12包括:处理电路系统22;固件24;操作系统26;以及处理器存储器28。
处理电路系统22用于处理指令并且包括:用于获取指令的获取电路系统;用于解码指令的解码电路系统;以及用于执行指令的执行电路系统(未示出)。处理电路系统22能够访问存储在设备存储器16中的数据和程序代码。
固件24是用于运行每个其它处理和环境的操作内核程序。固件24可以在处理器存储器28中的电路系统或程序指令中实施。
操作系统26是用于加载和执行包括设备应用和连续散列客户端100的程序模块的基本系统。操作系统26可以在处理器存储器中的电路系统或程序指令中实施。
处理器存储器28为处理器12提供执行环境,并为固件24和操作系统26提供用于程序指令的空间。
连续散列服务器系统2在众多其它通用或专用计算系统环境或配置下类似地操作,并且典型地是计算机服务器系统。连续散列服务器系统2包括与连续散列客户端1类似的组件,但是这些组件未示出或描述。但是,连续散列服务器系统2的核心功能存在于下面描述的标记为连续散列服务器150的计算机模块中。
参考图2,连续散列服务器150用于将文件发送到连续散列客户端100。
连续散列服务器150包括:文件储存库152;连续散列储存库154;连续散列发送器156;以及连续散列构建器方法300。
文件储存库152用于存储下载到客户端的文件。
连续散列储存库154用于存储文件的块的首部(header)和散列状态。
连续散列发送器156用于将首部、散列状态和数据块发送到连续散列客户端100。存在两种类型的首部:类型A,其中中间散列状态被包含在首部内;以及类型B,其中首部仅包含最终散列并且每个中间散列状态与相关联的数据块捆绑。在这两种情况下,数据块都以相反的顺序发送并从最后一个到第一个进行确认。
连续散列构建器方法300用于执行如下所述的实施例的构建方面。
连续散列客户端100包括:连续散列接收器104;连续散列储存库106;文件储存库108;以及连续散列验证器方法400。
连续散列接收器104用于从连续散列服务器150接收文件首部、数据块和散列状态。在防火墙实施例中,连续散列接收器104还用于接收每个块并将它们转发到另一个设备,可选地具有单独的确认。这样的实施例是透明的,因为它不可见地验证了下载,并且仅在停止下载的情况下才将通过自己生成新消息而变得可见。在那种停止的情况下,它们将创建给通信的双方的取消请求(TCP重置“RST”等),并在将来停止转发任何相关联的分组以终止该下载。
连续散列储存库106用于存储文件首部、数据块和散列状态。
文件储存库108用于存储已确认的(以及可选地未确认的)数据块。
连续散列验证器方法400用于当数据块如下所述从最后一个到第一个被接收时,针对最终和随后的中间散列状态执行数据块的验证方面。
参考图3,连续散列(CH)构建器方法300包括步骤302至316。
步骤302用于从单个文件按序列定义N个块(其中“N”可以是一个或多个)。
步骤304用于提取文件的密钥签名。
步骤306用于确定签名的散列算法。
步骤308用于定义循环,该循环用于从作为当前块的第一块开始,并且以最后一块结束。
步骤310用于在当前块上运行散列算法以创建散列状态。可以选择块的数量和/或块的大小以减小散列状态的大小。例如,64的倍数在SHA256散列算法下工作地很好。
步骤312用于保存当前块的散列状态。
步骤314用于,如果存在其它块,则在当前块被设置为下一块的情况下从步骤310开始重复。
步骤316用于创建连续散列容器,连续散列容器包括:所使用的散列算法;文件散列状态;可选地,在块的开始处的散列状态;以及可选地,文件的大小。容器可以抑制起始散列状态,因为对于给定的散列算法它通常是相同的。类型A首部包含所有中间散列状态。类型B首部包含最终散列或者对最终散列的参考,并且其中每个中间散列与相关联的数据块一起发送。在另一个实施例中,用于创建容器文件(用于HTTP下载等)的静态情况包括:将文件分成N个块(比如1k);提取文件的预先存在的公钥签名;确定签名的散列算法;在整个文件上运行该签名算法;每当越过块边界时,记住散列的运行状态;以及创建新的文件容器,其结构包括:发出容器首部(issue container header);预先存在的第三方签名块;以及最后一块和该块的开始处的散列状态。
参考图4,以下关于步骤402至420描述实施例的方法。该方法用于验证下载文件的部分或全部,该文件包括字节序列,一个或多个字节定义块,该文件具有通过散列算法从第一个到最后一个按升序在块上计算的最终散列状态,每个块具有通过散列算法计算的相关联的起始散列状态。升序和降序分别描述从第一个到最后一个的用于创建散列的顺序以及从最后一个到第一个的用于验证散列的该顺序的颠倒。设想其它实施例具有用于散列目的的块的顺序排序以及随后的用于验证散列的该顺序的颠倒。
步骤402用于接收文件首部,该文件首部是容器的类型。
步骤404用于参考散列算法和最终散列状态来验证连续散列容器格式被使用。优选地,包含每个块的相关联的起始散列状态,但是在其它实施例中,可以分开地发送或与每个块一起发送相关联的起始散列。优选地,最终散列状态包含在文件首部中,但是在其它实施例中,最终散列状态可以与文件首部相关联。例如,最终散列状态可以是用私钥创建的签名(例如RSA签名)。在这样的实施例中,最终散列状态被接收作为签名的部分以验证文件的发送者,而不是在与文件和签名相关联的容器中。最终散列状态可以是在已应用进一步的最终确定(finalizing)步骤之后最终确定的散列状态。
步骤406用于优选地从容器或参考或与文件首部的关联中提取散列算法和最终散列状态。还可以提取最终确定散列算法。
步骤408用于从块序列中的最后一块到第一块接收块序列中的下一块。
步骤410用于接收每个接收到的块的相关联的起始散列状态。优选地,块和相关联的起始散列状态被保存到临时存储器。
步骤412用于通过从起始散列状态运行散列算法来计算结束散列状态。
步骤414用于当结束散列状态与已确认的起始散列状态或最终散列状态相同时,确认相关联的起始散列状态。
步骤416用于当结束散列状态与已确认的起始散列状态或最终散列状态不匹配时标记错误,并且优选地用于随后中止下载。
步骤418用于如果存在其它块则进行重复。文件的大小的指示可以被包含在容器中,使得其在所有块已被接收时被知晓。在一些实施例中,接收从文件的末尾不间断的部分文件是可接受的,只要它从该末尾不间断即可。例如,当电子邮件包含两部分(比如文本部分和html部分),并且这些部分中的一个就是所需要的全部时,那么不需要接收整个文件。如果没有其他块被发送,则步骤418也用于进行到步骤420。
步骤420用于当所有起始散列状态都被确认时将文件视为有效。优选实施例在文件被确认时使整个文件可用。终止所有块的验证而不早期终止是将文件视为有效的一个示例。所有成功验证的块都被视为有效,并且文件可以被视为部分有效直到无效块。
块能够从要验证的最后一块到最早的块按降序排序,使得在包含块序列B1、B2、B3的文件中;即使这些块以不同的或随机的顺序被接收(例如:B2、B1、B3),这些块也需要能够从B3降到B2和B1排序。例如,在接收广播的固件映像(firmware image)的网格网络并且尤其是深网格节点中,宽分组很可能会乱序到达。每个节点将具有存储在SRAM中的预期分组的窗口。验证将仍然必须是从最后一块到最早的块的不间断的链,并且系统只会将不间断的已验证的块存储到最终位置中。
在另一个对称密码散列实施例中,使用HMAC算法对文件进行散列。在这种特殊情况下,不需要公钥签名。因此,必须使用具有相同秘密的相同HMAC来计算中间散列状态。为了允许对这样的文件进行连续反向验证,验证算法还需要用于计算中间散列的共享秘密。对于其它实施例,存在这样的选项:每个传输的相关联的散列状态被单独地最终确定——可选地通过使用每个块散列最终确定的点的文件位置。
在修改的实施例中,验证文件包括:通过网络下载容器;验证容器格式被使用;接收签名,验证并提取预期的最终散列状态(例如,MAC状态或SHA256);接收下一块;接收在下一块的开始处的预期的MAC状态;使用MAC状态作为开始,在剩余字节上计算MAC,最终确定并与签名的预期末尾进行比较,如果匹配则继续下一块,如果不匹配则指示错误并且不将该块转发给API的用户;重复直到下载完整映像为止。在随后的块中,仅需要为下一个MAC状态计算MAC,并且如果这些匹配,则该块有效。
在动态实施例中,日志文件API签名是按请求更新的,但是之前块的预先计算的MAC状态将不会有所不同,因此可以成为存储的日志文件的一部分。日志文件分析工具可以通过逐块向后计算MAC来在越来越旧的日志文件条目中找回。对于每个块,下载器可以确信其完整性。网络基础设施无法对篡改已签名的日志文件做任何事。日志处理将在每个日志条目或每个块的基础上为尾部发出签名。网络基础设施可以用以后的签名原子地替换以前的签名。
另一个动态情况是围绕已签名的内容传递网络(CDN)文件(例如固件更新映像)提供协议或API。整个映像的MAC状态可以通过CDN来预先计算,并且通过将文件与预先计算的MAC状态交错,该文件被以相反的顺序提供给下载器,下载器可以在下载时验证映像。
参考图5A1,本实施例的示例文件容器(类型A)包括:文件的长度;最终散列;以及块[最后一个]到[001]的起始散列。示例中文件的长度为200000字节。最终散列为4cbbd9be0cba6858 35755f82 7758705d b5a413c5 494c3426 2cd25946 a73e7582。最后一块[最后一个]的起始散列为FD4A8581 C9C9AD61 3EF77D00 958F36F0 373FEF49 8770714244F794F8 7B5FA38E。第一块[最后一个-1]的起始散列为6A09E667 BB67AE85 3C6EF372A54FF53A 510E527F 9B05688C 1F83D9AB 5BE0CD19。后续块的起始散列未示出。
参考图5A2,本实施例的用于文件容器(类型A)的示例数据块仅包括数据块(在这种情况下为零字节的纯集合(plain set))。数据块的打包数据未示出,并且需要注意的是,任何相关联的散列都不包含在该数据中,因为它应该已经包含在文件首部中。
参考图5B1,不同的示例文件容器(类型B)包括:文件的长度;以及最终散列(但不是如类型A中的中间散列)。如同对于类型A一样,该示例中的文件的长度为200000字节,并且最终散列为4cbbd9be 0cba6858 35755f82 7758705d b5a413c5 494c3426 2cd25946a73e7582。
参考图5B2,对于本实施例的示例文件,发送和接收的前两个数据分组是块[最后一个]和块[最后一个-1]。
块[最后一个]的数据分组包括:最后一个数据块和最后一块[最后一个]的起始散列。该散列为FD4A8581 C9C9AD61 3EF77D00 958F36F0 373FEF49 87707142 44F794F87B5FA38E。数据分组的打包数据未示出,并且需要注意的是,相关联的散列被包含在数据中而不是文件首部中。
块[最后一个-1]的数据分组包括数据(全零)和6A09E667 BB67AE85 3C6EF372A54FF53A 510E527F 9B05688C 1F83D9AB 5BE0CD19的起始散列。后续块的起始散列未示出。
参考图6A、图6B和图6C,描述了图5A1的示例的状态图。
图6A示出了客户端的状态,该客户端已经从示例接收首部文件并将首部加载到数据结构中,该数据结构包括用于客户端计算的值的列以及用于最终散列和起始散列的已确认的值的列。首部被加载,并且尚未计算或确认任何值。
图6B示出了下一个状态。使用最后一块[最后一个]的起始散列FD4A8581C9C9AD61 3EF77D00 958F36F0 373FEF49 87707142 44F794F8 7B5FA38E将最终散列计算为(步骤412)4cbbd9be 0cba6858 35755f82 7758705d b5a413c5 494c34262cd25946a73e7582。这被确认(步骤414)为与接收到的最终散列状态匹配,并且最后一块被确认在已确认的列中。下载中的至少最后一个字节块已被检验。
图6C示出了下一个状态。使用倒数第二块[最后一个-1]的起始散列6A09E667BB67AE85 3C6EF372 A54FF53A 510E527F 9B05688C 1F83D9AB 5BE0CD19来计算(步骤412)散列,但是发送的数据(未显示)出错,并且散列被计算为FFFFFFFFF FFFFFFFFF FFFFFFFFFFFFFFFFFF FFFFFFFFF FFFFFFFFF FFFFFFFFF FFFFFFFFF。由于这与块[最后一个]的起始散列不匹配,因此,倒数第二块[最后一个-1]没有被确认(步骤416)。该块的数据被拒绝(并且随后的块也被拒绝),并且在该阶段下载被中止。可以保留这个阶段之前确认的数据块。在随后的下载中,可以跳过这些已验证的块。
连续散列实施例的用途的示例包括:固件下载;日志文件应用接口(API);文件的部分下载;向后兼容;匿名内容传递网络;以及硬件引擎。
当使用连续散列下载固件时,一旦设备在下载期间碰到原始签名的映像的修改就立即终止固件映像的下载。在防火墙执行即时验证的情况下,防火墙将在它发现无效块的情况下终止连接的双方。第一次出现的无效块不会被转发给下载方。
在下载完成之前可以在下载期间解析日志文件,以防御常见的第三方黑客攻击,诸如在完全下载之后利用日志文件解析器。这可以防止意图远程利用解析这些日志的管理基础设施而恶意修改数据库或CDN中的日志文件条目。在这种情况下,不需要信任存储装置。
文件可以部分被下载,并且仍然允许完全验证部分下载的部分。
连续散列与先前存在的文件和第三方签名向后兼容。连续散列可以用作容器格式或者用作web服务API,以允许针对第三方签名验证部分下载,而无需重新计算签名或添加签名。
连续散列可以被应用于不信任的内容传递网络,以实现具有连续签名验证的下载而无需对内容重新签名。
连续散列可以被应用于硬件引擎,以用于在从首先接收到的块开始的单个步骤中验证固件映像下载。
另外的有价值的用途是集成到防火墙中或与防火墙紧密耦合。防火墙可以知道包括连续散列容器格式的连续散列方法。(可选地为透明的)防火墙(或代理)可以逐步允许IoT设备的推送或拉取请求,以防容器的开始和随后的块签出(check out)。连续散列的优点是防火墙不需要存储固件下载或其部分,因为防火墙可以以流的方式验证流经的数据。当应用防火墙无论如何都会验证它们时,交错的散列状态只需被放置在流中靠近该点。当今航空电子网络安全系统中的防火墙系统在将映像转发到更信任的一方之前存储整个映像用于签名验证,并且这对固件更新(最大固件大小)或使系统耐受DoS攻击有严重限制。这种方法消耗大量资源是不利的,其中固件更新可以很容易达到10或100兆字节(嵌入式Linux等)。
在没有连续散列容器格式的情况下,防火墙可以透明地尝试获取对应的连续散列清单(manifest)和在相对于原始文件(已讨论的清单文件)的不同文件中的所需要的中间散列。在应用网络防火墙后面的设备选择使用连续散列方法来下载固件的情况下,该下载不受更新大小和应用防火墙的资源限制的影响。假设并行更新防火墙后面的数千个IoT设备,那么防火墙上使用的资源将非常重要。
另一个示例是使用RSA方法的数字签名的文件。实体A使用私钥C将已签名的消息发送给实体B。A产生消息的散列值,将其提升到d的幂(模n)(就如同在解密RSA消息时一样),并将其作为“签名”附加到消息。B接收已签名的消息,并使用相同的散列算法连同公钥D。B将签名提升到e的幂(模n)(就如同在加密RSA的消息时一样),并将所得的散列值与消息的实际散列值进行比较。如果两者一致,则B知道消息的作者拥有A的私钥C,并且此后消息未被篡改。在这种上下文中,签名是最终确定的散列状态,因为它采用散列状态并应用最终确定处理。因此,在RSA的情况下,最终确定的散列不需要作为容器的部分被传输——只是中间散列状态减去第一个散列状态(其对于使用相同签名算法的所有文件都是相同的——起始初始散列状态)。因此,容器格式将只需要大小的概念——这可以可选地从其它更高级别(如http Content-Length字段等)中推断出来,并且因此也不是传输的一部分。基本上,RSA签名是在任何块/中间散列传输之前首先被传输。
另一个示例是使用密码消息语法(cryptographic message syntax,CMS)(RFC5652)的文件。对于RFC5652,逐字最终确定的散列已经是CMS容器格式的一部分,因此最终确定的散列将不需要被独立地传输。简单来说,CMS容器将分为三部分:原始签名的有效载荷(payload)之前的部分;签名的有效载荷;以及签名的有效载荷之后的部分。第一部分和第三部分在有效载荷的任何部分之前被传输,并且因此可以提前被验证。有效载荷的长度需要从更高级别协议长度指示符(例如,http content-length)进行传输或计算,因为它没有被逐字包括在CMS格式中。因此,长度信息将由于剥除有效载荷而丢失。有效载荷将逐块被传输,每个块之后是该块的开始处的散列状态。
在接收方,CMS消息需要被验证直到散列值的签名(其中有效载荷被剥除),以检验最终确定的散列值。一旦散列值是信任的,它就用于验证最后一块(首先被接收),并且作为结果,检验最后一块的起始状态。需要计算或知道有效载荷的长度。通过以下来考虑每个块:通过基于下一个散列状态在最后接收到的块上运行散列算法来使用那个散列状态;并且将其与先前的散列状态进行比较。如果散列状态相同,则该块是信任的,被存储到闪存中,并且新的起始散列状态变为信任的并且被记住以用于验证下一块(变为“最后一个散列状态”)。这样继续,直到接收到第一块(传输的最后一块),并且在该块上计算的散列状态与先前的散列状态进行比较(使用已知的初始散列状态作为起始条件)。如果两者匹配,则映像被完全验证。
如本领域技术人员将认识到的,本技术可以被实施为系统、方法或计算机程序产品。因此,本技术可以采取完全硬件实施例、完全软件实施例或者组合软件和硬件的实施例的形式。
此外,本技术可以采取在计算机可读介质中实施的计算机程序产品的形式,该计算机可读介质具有实施在其上的计算机可读程序代码。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介质可以是例如但不限于电子、磁性、光学、电磁、红外线或半导体系统、装置或设备,或前述的任何适当组合。
可以以一种或多种编程语言的任何组合来编写用于执行本技术的操作的计算机程序代码,包括面向对象的编程语言和常规的过程编程语言。
例如,用于执行本技术的操作的程序代码可以包括诸如C之类的常规编程语言(解释型或编译型)源代码、目标代码或可执行代码,或汇编代码,用于建立或控制ASIC(专用集成电路)或FPGA(现场可编程门阵列)的代码,或用于诸如VerilogTM或VHDL(超高速集成电路硬件描述语言)之类的硬件描述语言的代码。
程序代码可以完全在用户的计算机上执行,部分地在用户的计算机上并且部分地在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机。代码组件可以被实施为过程、方法等,并且可以包括子组件,这些子组件可以采取任何抽象级别的指令或指令序列的形式,从原生指令集的直接机器指令到高级编译型或解释型语言构造。
下面列出了用于创建容器的示例C代码指令,并带有内联注释。
下面列出了用于验证容器的示例C代码指令,并带有内联注释。
本领域技术人员还将清楚,根据本技术的优选实施例的逻辑方法的全部或部分可以适当地实施在包括执行方法的步骤的逻辑元件的逻辑装置中,并且这样的逻辑元件可以包括例如可编程逻辑阵列或专用集成电路中的诸如逻辑门之类的组件。这样的逻辑布置还可以实施在使能元件中,用于使用例如虚拟硬件描述符语言在这样的阵列或电路中临时或永久地建立逻辑结构,其可以使用固定或可传输的载体介质来存储和传输。
在一个替代方案中,可以以计算机实现的部署服务的方法的形式来实现本技术的实施例,该方法包括以下步骤:部署计算机程序代码,该计算机程序代码可操作以在被部署到计算机基础设施或网络中并在其上执行时使所述计算机系统或网络执行该方法的所有步骤。
在另一个替代方案中,可以以其上具有功能数据的数据载体的形式来实现本技术的优选实施例,所述功能数据包括功能计算机数据结构,以在被加载到计算机系统或网络中并由此对其进行操作时,使所述计算机系统能够执行该方法的所有步骤。
本领域技术人员将清楚,在不脱离本技术的范围的情况下,可以对前述示例性实施例进行许多改进和修改。
Claims (27)
1.一种用于验证下载文件的部分或全部的方法,所述文件包括字节序列,一个或多个字节定义块,所述文件具有一个或多个块并且所述文件具有通过散列算法从第一个到最后一个按升序在所述一个或多个块上计算的最终散列状态,所述一个或多个块中的每个块具有起始散列状态,所述方法包括:
接收最终散列状态;
接收能够从最后一块开始按降序排序的所述一个或多个块;
对于每个接收到的块,接收该块的起始散列状态;
对于每个接收到的块,通过从接收到的块的起始散列状态运行所述散列算法来计算结束散列状态;
当结束散列状态与最终散列状态或已确认的起始散列状态相同时,确认每个接收到的块的起始散列状态;以及
当结束散列状态与最终散列状态或已确认的起始散列状态不匹配时,标记错误。
2.根据权利要求1所述的方法,还包括,当结束散列状态与最终散列状态或已确认的起始散列状态不匹配时,结束下载和/或请求重新传输下载。
3.根据权利要求1或2所述的方法,还包括如果针对整个块序列确认了起始散列状态,则验证所述文件。
4.根据权利要求1或2所述的方法,还包括验证仅包括具有已确认的起始散列状态的块的部分文件。
5.根据权利要求1至4中的任一项所述的方法,还包括接收所述文件的大小的指示。
6.根据权利要求1至5中的任一项所述的方法,其中,散列状态是用私钥签名的。
7.根据权利要求1至6中的任一项所述的方法,其中,在将散列状态与所传输的中间散列状态进行比较之前,按照所使用的散列算法所要求的对每个块最终确定散列状态以用于验证。
8.根据权利要求1至7中的任一项所述的方法,还包括接收每个块并且将它们转发到设备,所述设备可选地具有单独的确认。
9.根据权利要求8所述的方法,其中所述设备编译各个批准并批准所述文件。
10.根据权利要求1至9中的任一项所述的方法,其中字节块和起始散列状态被一起接收。
11.根据权利要求10所述的方法,其中多个起始散列状态被一起接收。
12.根据权利要求1至11中的任一项所述的方法,其中多个起始散列状态在首部文件中被一起接收。
13.根据权利要求12的方法,其中所述文件的长度的指示在首部文件中被接收。
14.一种用于验证下载文件的部分或全部的系统,所述文件包括字节序列,一个或多个字节定义块,所述文件具有一个或多个块并且所述文件具有通过散列算法从第一个到最后一个按升序在所述一个或多个块上计算的最终散列状态,所述一个或多个块中的每个块具有起始散列状态,所述系统包括:
接收器,用于接收最终散列状态,接收能够从最后一块开始按降序排序的所述一个或多个块,并且对于每个接收到的块,接收该块的起始散列状态;以及
验证器,用于对于每个接收到的块,通过从接收到的块的起始散列状态运行所述散列算法来计算结束散列状态,用于当结束散列状态与最终散列状态或已确认的起始散列状态相同时确认每个接收到的块的起始散列状态,以及用于当结束散列状态与最终散列状态或已确认的起始散列状态不匹配时标记错误。
15.根据权利要求14所述的系统,其中所述验证器还用于当结束散列状态与最终散列状态或已确认的起始散列状态不匹配时,结束下载和/或请求重新传输下载。
16.根据权利要求14或15所述的系统,其中所述验证器还用于如果针对整个块序列确认了起始散列状态,则确认所述文件。
17.根据权利要求14至16中的任一项所述的系统,其中所述接收器还用于接收所述文件的大小的指示。
18.根据权利要求14至17中的任一项所述的系统,其中散列状态是用私钥签名的。
19.根据权利要求14至17中的任一项所述的系统,其中,在将散列状态与所传输的中间散列状态进行比较之前,按照所使用的散列算法所要求的对每个块最终确定散列状态以用于验证。
20.根据权利要求14至19中的任一项所述的系统,其中所述接收器还用于接收每个块并且将它们转发到设备,所述设备可选地具有单独的确认。
21.根据权利要求20所述的系统,其中所述验证器还用于编译各个批准并批准所述文件。
22.根据权利要求14至21中的任一项所述的系统,其中字节块和起始散列状态被一起接收。
23.根据权利要求22所述的系统,其中多个起始散列状态被一起接收。
24.根据权利要求14至23中的任一项所述的系统,其中多个起始散列状态在首部文件中被一起接收。
25.根据权利要求24的系统,其中所述文件的长度的指示在首部文件中被接收。
26.一种用于传输文件以用于验证的方法,所述文件包括字节序列,一个或多个字节定义块,所述文件具有一个或多个块并且所述文件具有通过散列算法从第一个到最后一个按升序在所述一个或多个块上计算的最终散列状态,所述一个或多个块中的每个块具有通过所述散列算法计算的起始散列状态,所述方法包括:
传输最终散列状态;
传输能够从最后一块开始按降序排序的所述一个或多个块;
对于每个传输的块,传输该块的起始散列状态;
其中,每个传输的块能够通过从所传输的块的起始散列状态运行所述散列算法并与最终散列状态或先前已确认的起始散列状态进行匹配来确认其结束散列状态,并且当结束散列状态与最终散列状态或已确认的起始散列状态不匹配时,能够标记错误。
27.一种用于验证下载文件的部分或全部的计算机程序,所述文件包括字节序列,一个或多个字节定义块,所述文件具有一个或多个块,所述文件具有通过散列算法从第一个到最后一个按升序在所述一个或多个块上计算的最终散列状态,所述一个或多个块中的每个块具有起始散列状态,所述计算机程序存储在计算机可读介质上并且能够加载到数字计算机的内部存储器中,所述计算机程序包括当所述程序在计算机上运行时用于执行以下步骤的软件代码部分:
接收最终散列状态;
接收能够从最后一块开始按降序排序的所述一个或多个块;
对于每个接收到的块,接收该块的起始散列状态;
对于每个接收到的块,通过从接收到的块的起始散列状态运行所述散列算法来计算结束散列状态;
当结束散列状态与最终散列状态或已确认的起始散列状态相同时,确认每个接收到的块的起始散列状态;以及
当结束散列状态与最终散列状态或已确认的起始散列状态不匹配时,标记错误。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1707078.0 | 2017-05-04 | ||
GB1707078.0A GB2562079B (en) | 2017-05-04 | 2017-05-04 | Continuous hash verification |
PCT/GB2018/051161 WO2018203045A1 (en) | 2017-05-04 | 2018-05-01 | Continuous hash verification |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110582776A true CN110582776A (zh) | 2019-12-17 |
Family
ID=59065518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880029413.9A Pending CN110582776A (zh) | 2017-05-04 | 2018-05-01 | 连续散列验证 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200059478A1 (zh) |
CN (1) | CN110582776A (zh) |
GB (1) | GB2562079B (zh) |
WO (1) | WO2018203045A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10938578B2 (en) * | 2018-10-18 | 2021-03-02 | Keir Finlow-Bates | System and method for maintaining an integrity of a blockchain using digital certificates |
CN109413200B (zh) * | 2018-11-26 | 2021-04-23 | Oppo(重庆)智能科技有限公司 | 一种资源导入的方法、客户端、mes及电子设备 |
US11381972B2 (en) | 2020-02-24 | 2022-07-05 | Bank Of America Corporation | Optimizing authentication and management of wireless devices in zero trust computing environments |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050097318A1 (en) * | 2001-03-21 | 2005-05-05 | Microsoft Corporation | On-disk file format for a serverless distributed file system |
US20060036627A1 (en) * | 2004-08-06 | 2006-02-16 | Roger Deran | Method and apparatus for a restartable hash in a trie |
CN1808326A (zh) * | 2005-01-18 | 2006-07-26 | 微软公司 | 使用部分映像散列确认可执行文件完整性的系统和方法 |
CN101641675A (zh) * | 2006-10-31 | 2010-02-03 | 特尔科迪亚许可公司有限公司 | 使用密码散列法的病毒定位 |
US7949641B1 (en) * | 2006-02-15 | 2011-05-24 | Crimson Corporation | Systems and methods for validating a portion of a file that is downloaded from another computer system |
CN104486086A (zh) * | 2014-12-26 | 2015-04-01 | 北京奇虎科技有限公司 | 数字签名方法及移动终端和服务器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040111610A1 (en) * | 2002-12-05 | 2004-06-10 | Canon Kabushiki Kaisha | Secure file format |
DE102010006008B4 (de) * | 2010-01-27 | 2012-10-31 | Artec Computer Gmbh | Verfahren zum gesicherten Download von verteilten Downloadsourcen |
CN102446250A (zh) * | 2010-10-13 | 2012-05-09 | 索尼公司 | 数据完整性的保护和验证方法、设备和系统 |
WO2017030886A1 (en) * | 2015-08-14 | 2017-02-23 | Pcms Holding, Inc. | Securely upgrading resource constrained devices |
GB2541950B (en) * | 2015-09-07 | 2020-01-08 | Arm Ip Ltd | Methods for verifying data integrity |
-
2017
- 2017-05-04 GB GB1707078.0A patent/GB2562079B/en active Active
-
2018
- 2018-05-01 CN CN201880029413.9A patent/CN110582776A/zh active Pending
- 2018-05-01 WO PCT/GB2018/051161 patent/WO2018203045A1/en active Application Filing
- 2018-05-01 US US16/609,879 patent/US20200059478A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050097318A1 (en) * | 2001-03-21 | 2005-05-05 | Microsoft Corporation | On-disk file format for a serverless distributed file system |
US20060036627A1 (en) * | 2004-08-06 | 2006-02-16 | Roger Deran | Method and apparatus for a restartable hash in a trie |
CN1808326A (zh) * | 2005-01-18 | 2006-07-26 | 微软公司 | 使用部分映像散列确认可执行文件完整性的系统和方法 |
US7949641B1 (en) * | 2006-02-15 | 2011-05-24 | Crimson Corporation | Systems and methods for validating a portion of a file that is downloaded from another computer system |
CN101641675A (zh) * | 2006-10-31 | 2010-02-03 | 特尔科迪亚许可公司有限公司 | 使用密码散列法的病毒定位 |
CN104486086A (zh) * | 2014-12-26 | 2015-04-01 | 北京奇虎科技有限公司 | 数字签名方法及移动终端和服务器 |
Also Published As
Publication number | Publication date |
---|---|
GB2562079A (en) | 2018-11-07 |
GB2562079B (en) | 2021-02-10 |
US20200059478A1 (en) | 2020-02-20 |
GB201707078D0 (en) | 2017-06-21 |
WO2018203045A1 (en) | 2018-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
De Coninck et al. | Pluginizing quic | |
US9747425B2 (en) | Method and system for restricting execution of virtual application to a managed process environment | |
US20180124043A1 (en) | System and method for authenticating the legitimacy of a request for a resource by a user | |
EP2748751B1 (en) | System and method for day-zero authentication of activex controls | |
CN102067146A (zh) | 安全的应用程序流式传输 | |
CN109951546B (zh) | 基于智能合约的事务请求处理方法、装置、设备和介质 | |
KR20200066288A (ko) | 애셋 업데이트 서비스 | |
US11977637B2 (en) | Technique for authentication and prerequisite checks for software updates | |
US20100268952A1 (en) | Optimization of Signing SOAP Body Element | |
CN110582776A (zh) | 连续散列验证 | |
Mbakoyiannis et al. | Secure over-the-air firmware updating for automotive electronic control units | |
Crain et al. | Bolt-on security extensions for industrial control system protocols: A case study of dnp3 sav5 | |
US9241048B2 (en) | Mechanism for processing network event protocol messages | |
CN112131041A (zh) | 用于管理数据放置的方法、设备和计算机程序产品 | |
US11429489B2 (en) | Device recovery mechanism | |
US11392700B1 (en) | System and method for supporting cross-platform data verification | |
Lim | Secure code dissemination and remote image management using short-lived signatures in WSNs | |
CN114428661A (zh) | 一种镜像管理方法及装置 | |
US9780951B2 (en) | Prevention of forgery of web requests to a server | |
US11552804B1 (en) | Code sign white listing (CSWL) | |
CN109358875B (zh) | 基于Ubuntu系统的硬件钱包离线升级装置和方法 | |
CN113395161A (zh) | 验证方法、装置、电子设备及存储介质 | |
Witanto et al. | Blockchain-based OCF Firmware Update | |
Carlson | An internet of things software and firmware update architecture based on the suit specification | |
Itani et al. | PETRA: a secure and energy-efficient software update protocol for severely-constrained network devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191217 |
|
WD01 | Invention patent application deemed withdrawn after publication |