CN110603540B - 用于验证下载的内容子集的计算机系统和方法 - Google Patents

用于验证下载的内容子集的计算机系统和方法 Download PDF

Info

Publication number
CN110603540B
CN110603540B CN201880030160.7A CN201880030160A CN110603540B CN 110603540 B CN110603540 B CN 110603540B CN 201880030160 A CN201880030160 A CN 201880030160A CN 110603540 B CN110603540 B CN 110603540B
Authority
CN
China
Prior art keywords
ranges
content
combination
subset
values
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.)
Active
Application number
CN201880030160.7A
Other languages
English (en)
Other versions
CN110603540A (zh
Inventor
A·布尔巴
B·T·亨特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN110603540A publication Critical patent/CN110603540A/zh
Application granted granted Critical
Publication of CN110603540B publication Critical patent/CN110603540B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3239Cryptographic 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 non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

在一些实施例中,验证服务接收对针可用于下载的内容内的范围集合的组合的描述。范围集合未顺序地位于客户端设备已下载的内容中。验证服务确定该范围集合的组合的第一部分是否已经在先前的请求中被接收到。当第一部分已经被接收到时,验证服务取回表示与第一部分相对应的内容的子集的第一验证值集合。当范围集合的组合的至少第二部分尚未被接收到时,验证服务使用与第二部分相对应的内容的子集来生成第二验证值集合。第一验证值集合和第二验证值集合中的一个或多个验证值集合被发送到客户端设备。

Description

用于验证下载的内容子集的计算机系统和方法
背景技术
在诸如对等网络或客户端-服务器网络的通信网络中,正被分发到客户端设备的内容被划分(例如被破坏或成块)为离散的片段,其通常可以是相同大小。这些片段中的每一个(例如1兆字节的片段)都被散列处理以创建验证值(例如安全散列算法1(SHA-1)值)。验证值可以被存储在授权摘要中,该授权摘要包括针对内容的片段的所有验证值。
客户端设备诸如从其他客户端或从诸如内容传递网络的源下载内容的片段。客户端设备可以下载整个文件,诸如包括500个单独的1MB片段的500MB文件。客户端设备可以为每个片段生成验证值,并对照摘要检查生成的验证值,以验证为每个片段下载的字节的完整性。下载整个文件并检查针对每个单独片段的验证值需要下载大量数据并进行散列处理。当通信网络拥塞时,用于下载整个文件的额外带宽可能会导致通信网络的性能下降。
附图说明
图1描绘了根据一些实施例的用于验证内容的简化系统。
图2描绘了根据一些实施例的客户端设备可以下载的范围的示例。
图3描绘了根据一些实施例的用于验证由客户端设备下载的内容的子集的方法的简化流程图。
图4描绘了根据一些实施例的范围的描述的示例。
图5描绘了根据一些实施例的用于确定是否可以使用针对范围的验证密钥的方法的简化流程图。
图6描绘了根据一些实施例的用于生成验证值的方法的简化流程图,该验证值用于与在服务器处从客户端设备接收的内容的范围相对应的内容的子集的描述。
图7A描绘了根据一些实施例的用于为每个范围生成验证值的示例。
图7B描绘了根据一些实施例的示例,其中验证服务输入范围的组合以生成单个验证值。
图7C描绘了根据一些实施例的示例,其中验证服务输入范围的不同组合以生成多个验证值。
图8描绘了根据一些实施例的访问缓存的验证值的示例。
图9描绘了根据一些实施例的用于在客户端设备处验证验证值的简化流程图。
图10是根据一些实施例的计算机系统的简化框图。
具体实施方式
在下面的描述中,出于解释的目的,阐述了许多示例和细节以便提供对某些实施例的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些细节中的一些细节的情况下实践某些实施例,或者可以对其进行修改或等同地实践。
一些实施例允许客户端仅从内容文件下载客户端所需的内容的子集。这减少了需要下载的数据量,从而减少了通信网络上使用的带宽,并且此外,在验证内容子集的客户端设备处使用了更少的计算资源。常规地,如上所述,内容可以被划分成多片内容(例如块),并且由于每片被用于在授权摘要中创建验证值,因此要求客户端设备下载整个片以执行验证,授权摘要是一个列出部件验证值的文档。然而,客户端设备可能仅需要下载内容内的较小的非连续范围。例如客户端设备在文件内的各片内容中可能需要小范围的连续字节。在一些示例中,范围可以被包括在文件的不同片段中。例如在第一片段中,可能需要来自一个兆字节(MB)片段中的100字节范围的连续字节,而在第二个MB片段中,则需要连续字节的第一个50字节范围和连续字节的第二个50字节范围(第一范围和第二范围是非连续的),依此类推。如果客户端设备需要下载这些片段的两者的全部内容,则客户端设备将下载两个MB,而不是所需的200个字节。
由于在一些实施例中,客户端设备不下载整片内容,因此客户端设备不能使用用于验证每个片段的授权摘要,因为授权摘要仅包括整个内容片段的验证值。然而,一些实施例提供了一种验证服务,该验证服务允许客户端设备验证被下载的内容的子集。
当客户端设备下载了范围集合的内容的子集时,客户端设备可以将范围的描述发送给验证服务。例如描述可以描述下载了哪些范围,诸如一片内容中字节值介于100到200之间的范围。客户端设备可以发送针对客户端设备已经下载的多个范围的组合的描述。然后,验证服务确定在先前的请求中是否已经组合接收到范围的组合。例如某些客户端设备可能正在下载相同的范围,这可以当相似配置的客户端设备正在下载对相同软件的更新时发生。
当之前尚未组合接收到范围集合时,则验证服务使用范围表示的内容子集来生成表示内容子集的一个或多个验证值。在一些实施例中,散列函数用于生成散列值,该散列值是唯一地标识内容的子集的数字值。散列值将内容的子集表示为比内容本身小得多的数字值。在一些实施例中,验证服务可以为每个范围生成验证值。在其他实施例中,验证服务可以输入范围的所有内容子集,以生成用于组合的单个验证值。用于生成验证值的内容是由验证服务维护的内容,其尚未被损坏。客户端设备验证下载内容的一个原因是为了确保正确的数据被下载并且没有被损坏。在一些实施例中,当使用对等网络来下载内容时,由于多个客户端设备下载内容并将内容的部分提供给其他客户端设备,因此存在毁坏发生的更高可能性,其中与每个客户端设备分离地从内容服务器下载内容的情况相比,数据损坏的可能性更大。一旦计算出一个或多个验证值,验证服务就将一个或多个验证值发送到客户端设备。
当已经在先前的请求中组合接收到范围集合时,验证服务将先前为该范围的内容的子集生成的一个或多个验证值取回到客户端设备。在这种情况下,验证服务无需再次为内容子集生成验证值,这节省了时间和计算资源。因此,下载的范围的描述可以用于节省计算资源和时间,因为验证服务可以确定至少一部分范围的内容子集之前曾被用于生成验证值。
一旦接收到验证值,客户端设备就可以验证由客户端设备下载的内容的子集。在这种情况下,由客户端设备下载的内容的子集被输入到验证值生成器中以生成一个或多个验证值。客户端设备可以根据验证服务生成哪些验证值,为每个范围生成验证值,或者为范围的组合生成验证值。如果客户端设备生成的验证值与从验证服务接收到的验证值匹配,则这验证客户端下载的内容未被损坏。
上述过程可以节省带宽,因为客户端设备将范围的组合的描述发送到验证服务。如果为下载的每个范围发送了消息,则发送的多个消息可能会占用大量带宽。另外,可以节省带宽的另一种技术是客户端设备可以使用范围组合的描述来生成验证密钥(例如描述的散列值),而不是以使得验证服务可以仅从描述中确定范围集合的描述的格式来发送描述。该格式可以被称为“独立格式”,并且可以是文本格式、人类可读格式、编码格式、紧缩格式、压缩格式等。
概述
图1描绘了根据一些实施例的用于验证内容的简化系统100。系统100包括服务器102和客户端设备104-1至104-N。客户端设备104-1的组件可以被包括在每个客户端设备104中。客户端设备104使用验证服务106,验证服务106验证由客户端设备104的下载管理器108下载的内容。
内容可以由客户端设备104经由通信网络107下载。例如客户端设备104可以经由对等联网来下载内容,其中客户端设备104从其他客户端设备104下载内容。在其他实施例中,客户端设备104使用客户端-服务器模型下载内容,其中每个客户端设备104从内容服务器(未示出)下载内容,该内容服务器可以将内容存储在内容文件中。
在一些实施例中,可以将内容划分成内容片段,诸如500个1兆字节的内容片段。可以将内容划分为多个片段,因为内容的点对点下载是可能的,其中这些内容的片段允许客户端设备104从不同的客户端设备104下载片段。然而,不需要将内容划分为多个片段。例如客户端设备104可以仅从未被分段的整个内容文件内的范围中下载内容的子集。这些范围可以包括范围内的连续字节;然而,每个范围都不是连续的。即,第一范围是内容文件中的50-100字节,第二范围可以是内容文件中的200-240字节。第一范围和第二范围不连续,因为客户端设备104不下载内容文件的101-199字节。为了讨论的目的,内容将被描述为被划分成内容片段,但是将内容划分成片段不是必须的,而仅需要下载非连续范围。
客户端设备104可以将内容的子集存储在存储装置112中。内容的子集可以对应于内容片段中的范围。客户端设备104可以从诸如对等网络中的对等客户端设备或从内容递送网络中的内容服务器的其他实体下载存储装置112中的内容的子集。可能需要在客户端设备104可以使用内容之前验证内容的子集。服务器102使用存储在存储装置110中的内容来验证客户端设备104下载的内容。存储在存储装置110中的内容是内容的经验证的副本。
范围
如上所述,下载管理器108可以下载内容的片段的范围。图2描绘了根据一些实施例的客户端设备104可以下载的范围的示例。在202处示出已经被划分为片段204-1、204-2、204-3和204-4(片段#1至#4)的内容。如上所述,内容可以包括任意数量的片段或根本不包括片段。常规地,可以对每个片段204进行散列以分别为内容204-1、204-2、204-3和204-4的片段生成验证值#1、#2、#3和#4。替代地,整个内容文件202可以被散列以生成验证值#0。
客户端设备104可以仅下载每个片段内的范围,而不是下载每个片段。例如客户端设备104已经下载了内容的片段204-1中的范围206-1和206-2、内容的片段204-2中的范围206-3、内容的片段204-3中的范围206-4和206-5 -3、以及内容的片段204-4中的范围206-6。范围描述内容的子集在片段中所处的位置。如所使用的,“范围”可以是对在内容的片段204内被下载的字节的范围的描述,诸如在内容的片段204内的字节值100至字节值200。“内容的子集”是字节值100和字节值200之间的实际内容。在某些实施例中,内容的子集用于生成验证值,而不是范围。
因为验证值不是针对整个内容的片段204,所以客户端设备104不使用授权摘要来验证被下载的内容的子集。此外,由于客户端设备104可能会下载可能会发生巨大变化的较小范围,因此验证服务106无法为客户端设备104可以下载的内容的每个单个可能的子集生成验证值,并且无法在授权摘要中提供验证值。因此,一些实施例提供对客户端设备104实时下载的范围206的验证。
客户端侧过程
图3描绘了根据一些实施例的用于验证由客户端设备104下载的内容的子集的方法的简化流程图300。该方法可以由下载内容的子集的每个客户端设备104执行。
在302处,客户端设备104下载内容的片段204中的范围206的内容的子集。内容的子集对应于非连续地位于内容的片段中的范围206。
一旦内容的子集被下载,客户端设备104就将下载的范围的描述发送到验证服务106。范围206的描述可以是描述下载的范围206的元数据。图4描绘了根据一些实施例的范围206的描述400的示例。例如在402处示出了片段,并且在404处示出了每个片段内的范围206。注意,可以理解用于范围描述的不同格式。例如当内容未被划分成片段时,字节值不会在每片上被重置,并且从0到X,其中X是内容文件的结尾。
在此示例中,每个内容的片段均以字节值1开始,并以该片大小的字节值结束,诸如1MB。例如在406-1处,范围的描述为[20-45],它对应于内容的片段#1中字节20-45中内容的子集。类似地,在406-2,范围的描述是内容的片段#1内的字节63-79。在406-3、406-4、406-5和406-6处还示出了范围的其他描述。每个范围都是分别为片段#2、#3和#4下载的内容子集的描述。
在某些实施例中,客户端设备104可以以独立格式将描述400发送给验证服务106,诸如客户端设备104为文本文件中的所有范围206提供描述。独立格式是验证服务106可以用来确定范围206的描述而无需参考其他信息的格式。在其他实施例中,客户端设备104可以使用范围206的描述来生成验证密钥,该验证密钥可以是唯一地表示范围206的组合的数字。例如这些描述可以用于生成散列值。验证密钥的使用可以节省必须从客户端设备104传送到服务器102的数据量,因为仅发送一个值用于范围描述,而不是整个范围描述。然而,验证服务106不能仅根据验证密钥来确定范围206。而是,验证服务106将不得不诸如当在先前的请求中处理了相同的范围206时预先存储用于验证密钥的范围206的描述。
返回参考图3,客户端104可以使用或可以不使用验证密钥。在304处,客户端设备104确定是否使用描述中范围206的组合的验证密钥。在一些实施例中,客户端设备104可以总是首先尝试使用验证密钥。在其他实施例中,如果客户端设备104检测到范围206的这种组合可以与其他客户端一起流行下载,则客户端设备104可以使用验证密钥。如果将使用验证密钥,则在306,客户端设备104使用范围206的组合的描述来生成验证密钥。然后,在308,客户端设备104将验证密钥发送到验证服务106。
如上所述,验证服务106不能仅使用验证密钥来确定客户端104下载的确切范围206。而是,验证服务106检查存储装置112以确定之前是否已经接收到用于验证密钥的范围206的组合。在这种情况下,验证服务106可能已经使用范围206的组合来预先生成验证密钥,并且将范围206的组合与验证密钥一起存储。因此,如果验证服务106可以从存储装置112取回验证密钥,则验证服务106可以确定范围206的描述,因为验证服务106将已经用验证密钥保存了范围。然而,如果验证服务106不能取回验证密钥,则验证服务106需要以这样的格式从客户端设备104接收范围206的描述,该格式使得验证服务可以仅根据描述来确定针对范围集合的描述。
一旦验证服务106确定是否可以使用验证密钥,验证服务106就向客户端104发送消息,请求描述范围206或可以针对范围206的组合发送内容子集的验证值。例如在310,客户端设备104可以从验证服务106接收指示验证服务106可以使用验证密钥的消息。如果验证服务106不能使用验证密钥,则在312,客户端设备104以独立格式向验证服务106发送范围206的描述。独立格式可能会使用比验证值更多的带宽进行发送。同样,返回参考304,如果客户端设备104未使用验证密钥,则该过程跳至这一点,其中客户端设备104发送范围206的描述而不发送验证密钥。
如果验证服务106可以使用验证密钥(并且也在点312之后,其中客户端设备以独立格式发送范围206的描述),则在314,客户端设备104接收对应于范围206的内容子集的一个或多个验证值。不管客户端设备104以独立格式将范围206的描述发送给验证服务106还是验证服务106找到了验证密钥,都接收验证值。
在一些实施例中,如果客户端设备104在下载所有范围206之前知道它将下载的范围206的描述,则客户端设备104可以在下载内容的子集之前(或者在客户端104完成了内容子集的整个下载之前)发送范围206的描述。当客户端设备104下载内容的子集时,客户端设备104可以验证与范围206相对应的内容的子集。这可以允许客户端设备104实时检测内容的不良子集,而不是等待内容的整个子集被下载。
服务器侧过程
服务器侧过程首先从接收用于范围206的描述的验证密钥开始,但是在一些实施例中,可以不接收验证密钥,并且可以仅执行图6的过程。图5描绘了根据一些实施例的用于确定是否可以使用范围206的验证密钥的方法的简化流程图500。在502,验证服务106接收用于范围206的描述的验证密钥。在504,验证服务106检查验证密钥是否被存储在存储装置112中。例如,如果之前已经接收到相同精确范围206的描述,则验证服务106可能已生成验证密钥并在存储器112中存储了验证密钥。
如果用于范围206的描述的验证密钥被存储在存储装置112中,则在506,验证服务106确定与验证密钥相对应的用于范围206的描述。然后,在508,验证服务106取回与范围206相对应的内容的子集的一个或多个验证值,并将该一个或多个验证值发送到客户端设备104。
如果验证密钥不在存储装置112中,则在510,验证服务106向客户端设备104发送请求范围206的描述的消息。在512,验证服务105以独立的格式接收范围206的描述。此时,验证服务106随后可以执行图6中描述的过程,以生成对应于范围206的内容子集的一个或多个验证值。
图6描绘了根据一些实施例的用于生成验证值的方法的简化流程图600,该验证值用于与在服务器102从客户端设备104接收的范围206相对应的内容的子集的描述。在602,验证服务106接收范围206的描述。在这种情况下,范围206的描述可以是文本文件,而不是用于范围206的描述的验证密钥。
在604处,验证服务106检查存储装置112以确定之前是否已经接收到用于相同描述的至少一部分的范围206的相同组合。例如组合中的所有范围206可能已经在范围206的描述被接收到之前被接收到,诸如从发布更新开始到范围206的描述被接收到的时间段。在一些实施例中,可能没有接收到组合中的所有范围206,但是如果接收到一些范围,则可能节省计算资源。例如六个范围206中的五个可能之前已经被接收并且已经生成验证值。可以取回五个范围的内容子集的验证值。
在606处,如果诸如在上述时间段内,在接收到范围206的描述之前已经接收到范围206的一部分,则验证服务106取回之前已经接收到的范围206的内容的子集的验证值。例如可以取回内容子集的6个验证值中的5个。如上所述,有可能某些子集已合并为更少的验证值。
在608处,对于之前未接收到的范围206,验证服务106生成用于存储装置112中的内容的子集的验证值,其对应于之前未接收到的范围206。在610,验证服务106可以高速缓存每个范围206的验证值,以用于在针对相同范围的以后的验证请求中使用。
在一些实施例中,验证服务106为每个单独的范围206生成内容的每个子集的验证值。对于六个范围,验证服务106生成六个验证值。在其他实施例中,验证服务106可以为范围206的整个组合生成验证值。也就是说,可以将多个范围206的内容的子集输入到验证值生成器中,以为范围206的整个组合生成单个验证值。当接收到范围206的相同组合时,随后可以使用单个验证值。例如对于六个范围206,验证服务106生成一个验证值。这可能比在客户端设备104处生成多个验证值并验证每个验证值更为有效。然而,如果生成了针对每个单独范围206的验证值,则当接收到范围206的组合时,组合可能包含以前看到的单个范围而不是整个组合的可能性更高。在其他实施例中,可以组合一些范围,诸如将6个范围中的5个范围的内容子集进行组合以生成单个验证值,然后将第六个范围的内容子集用于生成另一个验证值。
在612,验证服务106发送与范围206相对应的内容的子集的验证值。验证服务106可以发送针范围206的组合的单个验证值、针对每个范围206的单独验证值、或针对多个范围206的验证值。也就是说,验证服务106可以具有范围206中的三个的验证值和其他三个范围206的验证值、范围206中的五个的组合的验证值、以及第六个范围206验证值。通过发送针对范围206的组合的验证值,可以节省带宽,因为发送的数据较少。
图7A、7B和7C描绘了根据一些实施例的在验证服务106处生成验证值的不同系统。图7A描绘了根据一些实施例的用于为每个范围206生成验证值的示例。在702处,示出了三个范围206-1、206-2和206-3。例如范围206可以来自片段#1中的字节20-45和字节63-79,以及来自片段#2中的字节35-127。验证服务106可以获取与每个单独范围206相对应的内容的子集,并将内容的子集分别输入到验证值生成器704。验证值生成器704可以使用从输入数据生成验证值的算法。诸如SHA-1算法、SHA-256算法、SHA-384算法、SHA-512算法和消息摘要5(MD5)算法的该算法可以是散列函数,其生成唯一表示输入数据的散列值。验证值生成器704和客户端104使用相同的算法来生成验证值。
在该示例中,与片段#1的字节20-45相对应的内容的子集被输入到验证值生成器704中以生成验证值#1。然后,验证服务106输入与片段#1的字节63-79相对应的内容的第二子集,以生成验证值#2。类似地,验证服务106将与片段#2的字节35-127相对应的内容的第三子集输入到验证值生成器704中以生成验证值#3。因此,生成多个验证值。当在来自其他客户端设备104的请求中接收到相同范围时,可以存储这些单独的验证值以供以后使用。
图7B描绘了根据一些实施例的验证服务106输入范围206的组合以生成单个验证值的示例。验证服务106将来自片段#1的字节20-45,片段#1的字节63-79和片段#2的字节35-127的内容的子集顺序地输入到验证值生成器704。验证值生成器704生成验证值#4用于内容子集的组合。因此,单个验证值可以用于针对范围206的组合来验证内容子集的组合中的内容范围。
此外,将认识到,可以使用范围206的内容的子集的不同组合,诸如3个范围中的2个范围用于生成单个验证值,而第3个范围用于生成第二个验证值。图7C描绘了根据一些实施例的示例,其中验证服务106输入范围206的不同组合以生成多个验证值。可能有不同的组合,但是在此示例中,验证服务106将来自每个片段的内容子集输入到验证值生成器704。例如来自片段#1的字节20-45和片段#1的字节63-79的内容子集被输入到验证值生成器704以生成验证值#5。而且,来自片段#2的字节35-127的内容的子集被输入到验证值生成器704中以生成验证值#6。
如上所述,验证服务106还可以访问存储装置112中的缓存的验证密钥或缓存的验证值,以增加服务的效率。图8描绘了根据一些实施例的访问缓存的验证值的示例。例如存储装置112的第一部分802可以在803处为范围206存储验证密钥(Val.key)。验证服务106使用部分802来确定是否可以使用验证密钥。验证密钥可以是范围206的描述的散列,诸如针对片段#1的字节20-45和字节63-79的范围以及片段#2的字节35-127的范围的描述。该组合可以创建验证密钥#1。出于讨论目的,字节值的范围已简化为范围#1、#2、#3、#4和#5。这些范围可以引用字节,诸如范围#1是片段#1的字节20-45的描述、范围#2是片#1的字节63-79的描述、依此类推。范围的不同描述可用于生成验证密钥,诸如范围#2、#3和#4用于生成验证密钥#2,范围#1、#3和#5用于生成验证密钥#3,并且范围#1、#2、#3和#4用于生成验证密钥#4。
验证服务106可以参考部分802以确定是否先前已经接收到范围206的相同组合的描述。每个验证密钥可以对应于在804的描述,该描述以独立格式指定验证密钥的范围206。验证服务106可以使用具有验证密钥的查询来取回针对验证密钥的范围206的描述。
在存储装置112的第二部分808中,可以在810处标识内容的子集,并且在812处显示针对内容的子集的验证值。验证服务106使用第二部分808来在确定在描述被确定时,内容的子集是否已用于生成验证值。相反,验证服务106使用第一部分802确定范围206的描述,而不是验证值。在812处,内容的每个单独子集可以被单独地散列并且具有存储在存储装置112中的对应验证值。例如内容#1、#2、#3和#4的子集分别对应于验证值#1、#2、#3和#4。另外,内容子集的组合可以具有对应的验证值。例如内容#1、#2、#3和#4的子集的组合具有对应的验证值#5。还可以存储内容#1、#2、#3的子集以及内容#1和#2的子集的其他较小组合,其分别对应于验证值#6和#7。验证服务106可以使用具有范围的查询来基于为内容的子集提供的范围来取回验证值。
在客户端设备处的验证
一旦接收到验证值,客户端设备104就可以验证下载的内容。图9描绘了根据一些实施例的用于在客户端设备104处验证验证值的简化流程图900。在902,客户端设备104为下载的内容的子集生成一个或多个验证值。客户端设备104使用与验证服务106所使用的算法相同的验证值生成算法。例如可以生成用于每个范围206的验证值,或者可以生成用于范围206的组合的单个验证值。在一些实施例中,客户端设备104可以使用从验证服务106接收的指示验证值覆盖的内容的子集的哪些组合的元数据。在904,客户端设备104然后将从验证服务106接收的验证值与所生成的验证值进行比较。在906,客户端设备104确定内容的子集是否被验证。在908,如果内容的子集被验证,则客户端设备104可以安装内容的子集。在一些实施例中,客户端设备104选择小的字节范围用于下载,诸如对二进制文件的更新(例如操作系统更新、应用商店更新、游戏控制台更新)或其他软件、或二进制文件或其他软件下载。客户端设备104选择适用的计算机状态所需的字节范围,诸如视频卡驱动程序、硬盘驱动器、操作系统更新或操作系统版本更新。客户端设备104可以安装下载的字节范围,诸如二进制文件。在一些示例中,各个字节范围可以与更新的不同方面相关联并且被安装以更新客户端设备104的方面。当安装字节范围时,更新可以被存储在客户端设备104处的存储装置中。在910,如果内容的子集没有被验证,客户端设备104可以执行动作,诸如重新下载内容的子集或下载内容的完整片段。
因此,一些实施例允许客户端设备104仅下载内容的子集并验证内容的子集。验证方法可以减少客户端设备104和验证服务106之间的消息传递。例如范围206组合的验证密钥可以用于确定已下载的范围的描述。而且,当与用单个消息验证内容的每个子集相比时,范围206的组合的通信减少了消息的数量。
系统概述
图10是根据实施例的计算机系统1000的简化框图。在一些实施例中,计算机系统1000可以用于实现验证。如图10所示,计算机系统1000包括经由总线子系统1004与多个外围设备进行通信的一个或多个处理器1002。这些外围设备包括存储子系统1006(包括存储器子系统1008和文件存储子系统1010)、用户界面输入设备1012、用户界面输出设备1014和网络接口子系统1016。
总线子系统1004可以提供一种机制,该机制用于使计算机系统1000的各个组件和子系统按预期彼此通信。尽管总线子系统1004被示意性地示出为单个总线,但是总线子系统的一些实施例可以利用多个总线。
网络接口子系统1016可以用作用于在计算机系统1000和其他计算机系统或网络之间传递数据的接口。网络接口子系统1016的一些实施例可以包括例如以太网卡、Wi-Fi和/或蜂窝适配器、调制解调器(电话、卫星、电缆、ISDN等)、数字订户线(DSL)单元和/或类似物。
用户界面输入设备1012可以包括键盘、指示设备(例如鼠标、轨迹球、触摸板等)、扫描仪、条形码扫描仪、结合在显示器中的触摸屏、音频输入设备(例如语音识别系统、麦克风等)和其他类型的输入设备。通常,术语“输入设备”的使用旨在包括用于将信息输入到计算机系统1000中的所有可能类型的设备和机制。
用户界面输出设备1014可以包括显示子系统、打印机或诸如音频输出设备等的非可视显示器。显示子系统可以是诸如液晶显示器(LCD)的平板设备、或投影设备。通常,术语“输出设备”的使用旨在包括用于从计算机系统1000输出信息的所有可能类型的设备和机制。
存储子系统1006包括存储器子系统1008和文件/磁盘存储子系统1010。子系统1008和1010代表非暂时性计算机可读存储介质,其可以存储提供一些实施例的功能的程序代码和/或数据。
存储器子系统1008包括多个存储器,包括用于在程序执行期间的指令和数据的存储的主随机存取存储器(RAM)1018和其中有固定指令被存储的只读存储器(ROM)1020。文件存储子系统1010可以为程序和数据文件提供持久性(即非易失性)存储,并且可以包括磁性或固态硬盘驱动器、光驱以及相关联的可移除介质(例如CD-ROM、DVD、蓝光等)、基于可移除闪存的驱动器或卡和/或本领域已知的其他类型的存储介质。
应当理解,计算机系统1000是示意性的,并不旨在限制实施例。具有比系统1000更多或更少的组件的许多其他配置是可能的。
上面的描述示出了本公开的各种实施例以及可以如何实现这些实施例的各方面的示例。以上示例和实施例不应被认为是仅有的实施例,而是被呈现以说明由所附权利要求所限定的本公开的灵活性和优点。例如尽管已经针对特定的过程流程和步骤描述了某些实施例,但是对于本领域技术人员而言显而易见的是,本公开的范围并不严格限于所描述的流程和步骤。被描述为顺序的步骤可以并行执行,步骤的顺序可以改变,并且步骤可以被修改、组合、添加或省略。作为另一示例,尽管已经使用硬件和软件的特定组合描述了某些实施例,但是应当认识到,硬件和软件的其他组合也是可能的,并且描述为以软件实现的特定操作也可以以硬件实现,并且反之亦然。
因此,说明书和附图应被认为是示意性而非限制性的。对于本领域技术人员而言,其他布置、实施例、实现和等同方式将是显而易见的,并且在不脱离如所附权利要求书中阐述的本公开的精神和范围的情况下,可以采用其他布置、实施例、实现和等同方式。

Claims (20)

1.一种计算机系统,包括:
一个或多个计算机处理器;以及
非暂态计算机可读存储介质,所述计算机可读存储介质包括指令,所述指令在被执行时使所述一个或多个计算机处理器用于:
在验证服务处接收针对范围集合的组合的描述,所述范围集合在可用于下载的内容内,其中所述范围集合没有顺序地位于客户端设备已下载的所述内容中;
确定所述范围集合的所述组合的至少第一部分是否已经在先前的请求中被接收到,所述先前的请求包括针对所述范围集合的所述组合的所述至少第一部分的描述;
当所述范围集合的所述组合的至少所述第一部分已经在所述先前的请求中被接收到时,取回第一验证值集合,所述第一验证值集合表示与所述范围集合的所述组合的所述第一部分相对应的内容的子集,所述第一验证值集合针对所述先前的请求而被生成;
当所述范围集合的所述组合的至少第二部分尚未在所述先前的请求中被接收到时,使用与所述范围集合的所述组合的所述第二部分相对应的内容的子集来生成第二验证值集合;以及
向所述客户端设备发送所述第一验证值集合和所述第二验证值集合中的一个或多个验证值,以允许所述客户端设备验证由所述客户端下载的、对应于所述范围集合的内容的子集。
2.根据权利要求1所述的计算机系统,其中接收针对所述范围集合的所述组合的所述描述包括:
接收唯一表示针对所述范围集合的所述描述的验证密钥。
3.根据权利要求2所述的计算机系统,其中确定所述范围集合的所述组合是否已经在所述先前的请求中被接收到包括:
确定所述验证密钥是否由所述验证服务存储;
如果所述验证密钥被存储,则取回针对所述范围集合的所述组合的所述第一部分的所述描述;以及
取回针对与所述描述相对应的内容的所述子集的所述第一验证值集合。
4.根据权利要求3所述的计算机系统,其中所述验证密钥是针对所述先前的请求而被存储的,所述先前的请求请求与所述范围集合的所述组合的所述第一部分的组合相同的组合。
5.根据权利要求1所述的计算机系统,其中接收针对所述范围集合的所述组合的所述描述包括:
以以下格式接收所述范围的所述描述,所述格式使得所述验证服务仅从所述描述中确定针对所述范围集合的所述描述。
6.根据权利要求1所述的计算机系统,其中确定所述范围集合的所述组合是否已经在所述先前的请求中被接收到包括:
确定所述第一验证值集合是否针对所述范围集合的所述组合的所述第一部分而被存储;以及
在不生成所述第一验证值集合的情况下取回所述第一验证值集合。
7.根据权利要求6所述的计算机系统,其中所述第一验证值集合针对请求所述范围集合的相同组合的所述先前的请求而被存储。
8.根据权利要求1所述的计算机系统,确定所述范围集合的所述组合的所述第一部分是否已经在所述先前的请求中被接收到包括:
确定所述范围集合的所述组合的所述第一部分已经在所述先前的请求中被接收到;以及
确定所述范围集合的所述组合的所述第二部分尚未在所述先前的请求中被接收到。
9.根据权利要求1所述的计算机系统,其中生成所述第二验证值集合包括:
针对与所述范围集合的所述组合的所述第二部分相对应的内容的每个子集生成验证值作为所述第二验证值集合。
10.根据权利要求1所述的计算机系统,其中生成所述第二验证值集合包括:
使用与所述范围集合的所述组合的所述第二部分相对应的内容的所有子集来生成单个验证值作为所述第二验证值集合。
11.根据权利要求1所述的计算机系统,其中生成所述第二验证值集合包括:
针对与所述范围集合的所述组合的所述第二部分相对应的内容的多个子集生成至少一个验证值作为所述第二验证值集合中的验证值。
12.根据权利要求1所述的计算机系统,还包括:
将针对所述范围集合的所述组合的所述第二部分中的每个范围的所述第二验证值集合分离地存储在存储装置中,以用于处理针对所述内容片段内的范围的后续请求。
13.根据权利要求12所述的计算机系统,还包括:
从针对所述范围集合的所述组合的所述描述生成验证密钥;以及
将所述验证密钥与所述第一验证值集合和所述第二验证值集合中的一个或多个验证值一起存储在所述存储装置中,以用于处理包括所述范围集合的所述组合的后续请求。
14.根据权利要求1所述的计算机系统,其中:
所述范围集合的所述组合的所述第一部分包括所述范围集合的整个组合,并且所述第一验证值集合表示与所述范围集合的所述组合相对应的内容的子集,或者
所述范围集合的所述组合的所述第二部分包括所述范围集合的整个组合,并且所述第二验证值集合表示与所述范围集合的所述组合相对应的内容的子集。
15.根据权利要求1所述的计算机系统,其中所述内容被划分成内容的多个片段,并且所述范围集合对应于内容的所述片段中内容的子集。
16.一种方法,包括:
在计算设备的验证服务处,接收针对范围集合的组合的描述,所述范围集合在可用于下载的内容内,其中所述范围集合没有顺序地位于客户端设备已下载的所述内容中;
由所述计算设备确定所述范围集合的所述组合的至少第一部分是否已经在先前的请求中被接收到,所述先前的请求包括针对所述范围集合的所述组合的所述至少第一部分的描述;
当所述范围集合的所述组合的至少所述第一部分已经在所述先前的请求中被接收到时,由所述计算设备取回第一验证值集合,所述第一验证值集合表示与所述范围集合的所述组合的所述第一部分相对应的内容的子集,所述第一验证值集合针对所述先前的请求而被生成;
当所述范围集合的所述组合的至少第二部分尚未在所述先前的请求中被接收到时,由所述计算设备使用与所述范围集合的所述组合的所述第二部分相对应的内容的子集来生成第二验证值集合;以及
由所述计算设备向所述客户端设备发送所述第一验证值集合和所述第二验证值集合中的一个或多个验证值,以允许所述客户端设备验证由所述客户端下载的、对应于所述范围集合的内容的子集。
17.一种计算机系统,包括:
一个或多个计算机处理器;以及
非暂态计算机可读存储介质,所述非暂态计算机可读存储介质包括指令,所述指令在被执行时使所述一个或多个计算机处理器用于:
下载非连续地位于内容中的所述内容的子集;
生成针对与所述内容的所述子集相对应的范围集合的描述;
使用所述范围集合的所述描述来生成验证密钥,其中所述验证密钥表示所述描述;
将所述验证密钥发送给验证服务;
当所述验证服务在先前的请求中已经接收到所述验证密钥时,接收针对内容的所述子集的一个或多个验证值,所述先前的请求包括针对内容的所述子集的描述,所述子集非连续地位于所述内容中,所述一个或多个验证值针对所述先前的请求而被生成;
当所述验证服务尚未在所述先前的请求中收到所述验证密钥时,执行:
接收对针对所述范围集合的所述描述的请求;
将所述范围集合的所述描述发送给所述验证服务;并且接收针对内容的所述子集的所述一个或多个验证值;以及
使用所述一个或多个验证值来验证被下载的内容的所述子集。
18.根据权利要求17所述的计算机系统,其中所述一个或多个验证值各自对应于内容的个体子集。
19.根据权利要求17所述的计算机系统,其中当所述验证服务已经在所述先前请求中接收到所述验证密钥时,所述验证服务在所述先前请求中接收到所述范围集合的相同组合。
20.根据权利要求17所述的计算机系统,其中所述验证密钥唯一地表示所述范围集合的所述描述的组合。
CN201880030160.7A 2017-05-10 2018-04-23 用于验证下载的内容子集的计算机系统和方法 Active CN110603540B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/592,070 2017-05-10
US15/592,070 US10536275B2 (en) 2017-05-10 2017-05-10 Verification of downloaded subsets of content
PCT/US2018/028766 WO2018208480A1 (en) 2017-05-10 2018-04-23 Verification of downloaded subsets of content

Publications (2)

Publication Number Publication Date
CN110603540A CN110603540A (zh) 2019-12-20
CN110603540B true CN110603540B (zh) 2023-04-04

Family

ID=62200528

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880030160.7A Active CN110603540B (zh) 2017-05-10 2018-04-23 用于验证下载的内容子集的计算机系统和方法

Country Status (4)

Country Link
US (1) US10536275B2 (zh)
EP (1) EP3622432B1 (zh)
CN (1) CN110603540B (zh)
WO (1) WO2018208480A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0121299D0 (en) * 2001-09-03 2001-10-24 Intercede Ltd Server with file verification
WO2012138895A1 (en) * 2011-04-07 2012-10-11 Qualcomm Incorporated Network streaming of video data using byte range requests
CN104067259A (zh) * 2012-04-16 2014-09-24 惠普发展公司,有限责任合伙企业 基于哈希值比较的文件上传

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536725B2 (en) * 2003-07-28 2009-05-19 Limelight Networks, Inc. Authentication of content download
KR20080066790A (ko) * 2005-10-12 2008-07-16 데이터캐슬 코퍼레이션 데이터 백업 시스템 및 방법
US8214516B2 (en) * 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
WO2007147170A2 (en) * 2006-06-16 2007-12-21 Bittorrent, Inc. Classification and verification of static file transfer protocols
US20080256255A1 (en) 2007-04-11 2008-10-16 Metro Enterprises, Inc. Process for streaming media data in a peer-to-peer network
EP2148488A1 (en) 2008-07-24 2010-01-27 Irdeto Access B.V. Peer-to-peer content distribution
CN102308549A (zh) 2009-02-06 2012-01-04 瑞典爱立信有限公司 了解网络的对等
CN101902346A (zh) 2009-05-31 2010-12-01 国际商业机器公司 P2p内容缓存系统和方法
US9807468B2 (en) 2009-06-16 2017-10-31 Microsoft Technology Licensing, Llc Byte range caching
US8719580B2 (en) * 2009-06-26 2014-05-06 Trusted Logic Data verification method
US8266310B2 (en) 2009-07-17 2012-09-11 Microsoft Corporation Enabling peer-to-peer content retrieval in HTTP
US20110055312A1 (en) * 2009-08-28 2011-03-03 Apple Inc. Chunked downloads over a content delivery network
JP5387282B2 (ja) * 2009-09-25 2014-01-15 富士通株式会社 コンテンツ処理装置、コンテンツの部分完全性保証のためのプログラム
IT1397440B1 (it) 2009-12-30 2013-01-10 St Microelectronics Srl Procedimento e sistemi per la distribuzione di contenuti mediali e relativo prodotto informatico
WO2011119132A2 (en) 2010-03-24 2011-09-29 Thomson Licensing Variable bit rate video streaming over peer-to-peer networks
US8925109B2 (en) * 2010-07-30 2014-12-30 Adobe Systems Incorporated Client-side player file and content license verification
US9253164B2 (en) * 2011-09-12 2016-02-02 Microsoft Technology Licensing, Llc Distribution of portions of content
US8683206B2 (en) * 2011-09-19 2014-03-25 GM Global Technology Operations LLC System and method of authenticating multiple files using a detached digital signature
WO2014068364A1 (en) 2012-10-30 2014-05-08 Wijetunga Sagara Method and systems for chunk-level peer-to-peer (p2p) file sharing
US9294580B2 (en) 2012-12-14 2016-03-22 Microsoft Technology Licensing, Llc Managed P2P network with content-delivery network
US9355116B2 (en) * 2013-03-04 2016-05-31 Vmware, Inc. Cross-file differential content synchronization using cached patches
US9667735B2 (en) * 2013-03-15 2017-05-30 Infinio Systems, Inc. Content centric networking
US9197647B2 (en) * 2013-10-21 2015-11-24 Cisco Technology, Inc. Integrity checking of a client device in a networked computer environment
US10187358B2 (en) * 2013-12-03 2019-01-22 Amazon Technologies, Inc. Data transfer optimizations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0121299D0 (en) * 2001-09-03 2001-10-24 Intercede Ltd Server with file verification
WO2012138895A1 (en) * 2011-04-07 2012-10-11 Qualcomm Incorporated Network streaming of video data using byte range requests
CN104067259A (zh) * 2012-04-16 2014-09-24 惠普发展公司,有限责任合伙企业 基于哈希值比较的文件上传

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
A Measurement Study of Google Play;Nicolas Viennot ,Edward Garcia;《The 2014 ACM international conference on Measurement and modeling of computer systems》;20140731;1-13 *

Also Published As

Publication number Publication date
EP3622432A1 (en) 2020-03-18
WO2018208480A1 (en) 2018-11-15
US20180331823A1 (en) 2018-11-15
CN110603540A (zh) 2019-12-20
EP3622432B1 (en) 2021-03-17
US10536275B2 (en) 2020-01-14

Similar Documents

Publication Publication Date Title
US9841909B2 (en) Continuous data backup using real time delta storage
US10552640B2 (en) In-situ data verification for the cloud
US7805765B2 (en) Execution validation using header containing validation data
CN108270874B (zh) 应用程序的更新方法及装置
US7496604B2 (en) Reducing duplication of files on a network
US8429643B2 (en) Secure upgrade of firmware update in constrained memory
CN106131612B (zh) 安卓app动态加载资源功能模块的方法及系统
WO2019201039A1 (zh) 一种更新应用程序的方法、系统及应用服务器
US8452822B2 (en) Universal file naming for personal media over content delivery networks
CN112565393B (zh) 文件上传方法、下载方法、装置、计算机设备和存储介质
US8214646B2 (en) Bundle verification
US11709810B1 (en) Delivery of digital information to a remote device
US20120260096A1 (en) Method and system for monitoring a secure document
CN110389859B (zh) 用于复制数据块的方法、设备和计算机程序产品
CN105812427B (zh) 文件上传和下载方法、装置、及文件服务器
US7870089B1 (en) Reducing duplication of embedded resources on a network
CN115225409B (zh) 基于多备份联合验证的云数据安全去重方法
US10268832B1 (en) Streaming authenticated encryption
CN115248919A (zh) 一种函数接口的调用方法、装置、电子设备及存储介质
CN110603540B (zh) 用于验证下载的内容子集的计算机系统和方法
US8464097B1 (en) Method and apparatus for efficiently creating backup files with less redundancy
US20220038260A1 (en) Validating received sensor data using computer cryptographic processing
CN109800579B (zh) 一种软件的完整性校验方法、装置及电子设备
US20140214768A1 (en) Reducing backup bandwidth by remembering downloads
US8463871B1 (en) Method and system for data backup with capacity and traffic optimization

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
GR01 Patent grant
GR01 Patent grant