验证流媒体内容完整性的方法、设备以及系统的制作方法

文档序号:7763916阅读:462来源:国知局
专利名称:验证流媒体内容完整性的方法、设备以及系统的制作方法
技术领域
本发明涉及通信技术领域,具体涉及一种验证流媒体内容完整性的方法、设备以 及系统。
背景技术
流媒体是指采用流式传输的方式在互联网播放的媒体格式,业务运营商可以采 用流媒体方式向用户提供视频播放业务,例如宽带交互式电视(IPTV,Internet Protocol Television)业务。目前视频播放业务的发布手段可以采用节点辅助分发方案,即,除了业 务运营商的流媒体服务器能够向用户发送流媒体内容,用户也能够向互联网中的其他用户 发送自身保存的流媒体内容。用户接收或发送视频播放文件是通过业务运营商提供的终端 设备来实现,通常这个终端设备为机顶盒。为了保证终端设备所接收的流媒体内容正确,终端设备需要对所接收的流媒体内 容进行完整性验证。为了使得业务运营商能够提供快速流畅的视频播放业务,终端设备要 能够绝对保证持续验证流媒体内容完整性。目前,业务运营商所采用的方法为流媒体服务器将流媒体内容划分为许多数据 块,采用基于Merkle树的树链来构造数据块的验证信息,进行网络传输时所有数据块都携 带各自基于Merkle树的树链构造而成的验证信息,终端设备按照数据块携带的验证信息 采用基于Merkle树的树链来验证所接收的数据块的完整性。上述进行流媒体内容完整性验证的过程,也可以用在对端到端(P2P,PeerTo Peer)的连续数据流或流媒体进行实时完整性验证的工作场景,如P2P文件系统,或P2P流 媒体系统。在对现有技术的研究和实践过程中,本发明的发明人发现,随着高清多媒体设备 的普及,高清流媒体内容的容量很大,由于网络中能传输的数据块的最大长度是固定的,所 以由高清流媒体内容划分所得的数据块数量很多,导致按照这些数据块构造的Merkle树 的高度很深,从而使得每个数据块基于Merkle树的树链构造而成的验证信息的长度很大。 因此在这种情况下,流媒体内容进行网络传输时,所有数据块都要携带基于Merkle树的树 链构造而成的大容量的验证信息,会导致终端设备下载流媒体内容的传输开销很大。

发明内容
本发明实施例提供一种验证流媒体内容完整性的方法和设备。一种验证流媒体内容完整性的方法,包括流媒体服务器读取源流媒体文件的第 N个分片,所述分片包括M个数据块;将所述分片的第M个数据块作为后流媒体文件的第N 个分片的第M个数据块,从所述后流媒体文件的第N个分片的第M个数据块开始,计算所 述后流媒体文件的第N个分片的第m个数据块的验证信息,通过将第m个数据块的验证信 息添加到所述源流媒体文件的第N个分片的第m-1个数据块生成第m-1 ‘个数据块,将第 m-Ι'个数据块作为所述后流媒体文件的第N个分片的第m-1个数据块,直至构造完所述后流媒体文件的第N个分片的第一个数据块,m属于1至M之间的任一整数;构造所述后流媒 体文件中第N个分片的每个数据块的独立验证信息,并单独存储所述独立验证信息。一种验证流媒体内容完整性的方法,包括终端设备发送第一请求消息,所述第一 请求消息用于请求接收的后流媒体文件的分片的第一个数据块的独立验证信息,所述分片 包括K个数据块;接收第一个数据块的独立验证信息;按照所述第一个数据块的独立验证 信息验证第一个数据块的完整性,当第一个数据块是完整的时候,从第一个数据块开始,从 已经验证为完整的第k个数据块中提取出所述分片的第k+Ι个数据块的验证信息,按照所 述第k+Ι个数据块的验证信息验证所述分片的第k+Ι个数据块的完整性,直至验证完所述 分片的第K个数据块的完整性,k属于1至K之间的任一整数;在验证完所述分片的第K个 数据块的完整性之前,当第τ个数据块的验证信息缺失时,T为2至K中的任一整数,发送 第二请求消息,所述第二请求消息用于请求第T个数据块的独立验证信息,接收第T个数据 块的独立验证信息,按照所述第T个数据块的独立验证信息验证第T个数据块的完整性。一种流媒体服务器,包括读取分片单元,用于读取源流媒体文件的第R个分片, 所述分片包括Z个数据块;构造后流媒体文件单元,用于将所述分片的第Z个数据块作为后 流媒体文件的第R个分片的第ζ个数据块,从所述后流媒体文件的第R个分片的第Z个数 据块开始,计算所述后流媒体文件的第R个分片的第Z个数据块的验证信息,通过将第Z个 数据块的验证信息添加到所述源流媒体文件的第R个分片的第z-1个数据块生成第
个数据块,将第个数据块作为所述后流媒体文件的第R个分片的第z-1个数据块,直 至构造完所述后流媒体文件的第R个分片的第一个数据块,ζ属于1至Z之间的任一整数; 构造独立验证信息单元,用于构造所述后流媒体文件中第R个分片的每个数据块的独立验 证信息,并单独存储所述独立验证信息。一种终端设备,包括发送请求消息单元,用于发送第三请求消息,所述第三请求 消息用于请求接收的后流媒体文件的分片的第一个数据块的独立验证信息,所述分片包括 S个数据块;接收验证信息单元,用于接收第一个数据块的独立验证信息;验证完整性单元,用于按照所述第一个数据块的独立验证信息验证第一个数据块 的完整性,当第一个数据块是完整的时候,从第一个数据块开始,从已经验证为完整的第S 个数据块中提取出所述分片的第s+1个数据块的验证信息,按照所述第s+1个数据块的验 证信息验证所述分片的第s+1个数据块的完整性,直至验证完所述分片的第S个数据块的 完整性,s属于1至S之间的任一整数;在验证完所述分片的第S个数据块的完整性之前,当第G个数据块的验证信息缺 失时,G为2至S中的任一整数,发送第四请求消息,所述第四请求消息用于请求第G个数 据块的独立验证信息,接收第G个数据块的独立验证信息,按照第G个数据块的独立验证信 息验证第G个数据块的完整性。一种验证流媒体内容完整性的系统,包括上述流媒体服务器和终端设备。在本发明实施例中,流媒体服务器对源流媒体文件进行处理得到后流媒体文件, 其中后流媒体文件中的数据块携带下一数据块的验证信息,流媒体服务器还构造后流媒体 文件中所有数据块各自的独立验证信息,将这些独立验证信息单独保存,因此本发明实施 例能够保证终端设备下载的后流媒体文件中的所有数据块都能绝对持续得到验证,并且使得终端设备下载后流媒体文件所需的传输开销较小。


图1是本发明实施例中验证流媒体内容完整性的方法的实施例一的流程示意图;图2是本发明实施例中Merkle树的示意图;图3是本发明实施例中验证流媒体内容完整性的方法的实施例二的流程示意图;图4是本发明实施例中验证流媒体内容完整性的方法的实施例三的流程示意图;图5是本发明实施例中一种流媒体服务器的实施例四的逻辑结构示意图;图6是本发明实施例中一种终端设备的实施例五的逻辑结构示意图;图7是本发明实施例中一种验证流媒体内容完整性的系统的实施例六的逻辑结 构示意图。
具体实施例方式本发明实施例提供一种验证流媒体内容完整性的方法,本发明实施例还提供相应 的设备以及系统。以下分别进行详细说明。实施例一、请参阅图1,本发明实施例中验证流媒体内容完整性的方法的一个实施 例包括101、读取源流媒体文件;在流媒体系统中,流媒体内容以文件的形式存在,当一个新的源流媒体文件被加 入到业务运营商的流媒体服务器的时候,流媒体服务器将该源流媒体文件划分为一系列的 分片,每个分片包括一定数量的数据块,其中数据块为网络传输的最小单元,分片的排序和 所有的数据块的排序都是按照流媒体内容的播放次序从前到后依次排列,流媒体服务器需 要以分片为单位处理该源流媒体文件以生成后流媒体文件,当流媒体内容发布时,流媒体 服务器是发布后流媒体文件,其中后媒体文件的分片的序号与源流媒体文件的分片的序号 --对应。在本实施例中,将以读取源流媒体文件的第N个分片为例对流媒体服务器处理源 流媒体文件的过程进行描述,其中第N个分片包括M个数据块。102、构造后流媒体文件;流媒体服务器读取源流媒体文件的第N个分片,其中第N个分片包括M个数据块, 这M个数据块的标识为^^,Bn,2,M,构造后流媒体文件的第N个分片的过程如下所 述,源流媒体文件除第一个分片之外的剩余分片也是和第N个分片一样进行处理1、将最后一个数据块M作为后流媒体文件的第N个分片的最后一个数据块,即 后流媒体文件的第N个分片的第M个数据块;2、由于哈希摘要算法(例如MD5,SHA-1)具有低计算开销,高安全性等特性,在本 实施例中,为了降低验证开销,流媒体服务器采用哈希摘要算法来计算数据块的验证信息。数据块Bn, m调用哈希摘要函数h (),得到哈希值h (Bn, m),然后将哈希值h (Bn, m)添 加到数据块Ish的末尾,构成数据块B' ,,H,将数据块B' ,,Η作为后流媒体文件的第N 个分片的第M-I个数据块,然后再调用哈希摘要函数h (),生成哈希值h (B ‘ ,,^1),将哈希值 h(B' N^1)添加到数据块Bn,M_2的末尾,构成数据块B' N,M_2,将数据块B' N,M_2作为后流媒体文件的第N个分片的第M-2个数据块,继续上述操作,直至构造完后流媒体文件的第N个 分片的第一个数据块。将源流媒体文件的所有分片都处理完毕后,流媒体服务器得到后流 媒体文件,该后流媒体文件的每个分片的数据块之间以哈希链的形式相互连接。由于流媒体内容的发布是采用节点辅助分发方案,流媒体服务器保存后流媒体文 件的所有分片的备份,并将这些分片分散保存在流媒体系统中的各个终端设备里,以供请 求播放流媒体内容的终端设备下载,在本实施例中,流媒体服务器还将分散保存的分片与 保存分片的终端设备之间的对应关系以列表的形式保存在目录服务器中,目录服务器可以 就是流媒体服务器,也可以是另一个单独的服务器,请求播放流媒体内容的终端设备可以 从目录服务器获得一组拥有某分片的较佳状态的终端设备的地址列表,按照这个地址列表 依次向其他终端设备请求下载该分片,在下载过程中,若其他终端设备都无法提供该分片, 终端设备则会请求流媒体服务器提供该分片。进一步的,为了提高终端设备下载流媒体内容的速度,终端设备可以在自身的内 存中划出一定容量的缓冲区,并行下载后流媒体文件的多个分片,因此考虑到终端设备分 片下载的并行性,终端设备同样可以对这些并行下载的分片并行进行验证。仍然以流媒体 服务器构造后流媒体文件的第N个分片的过程为例,该过程还包括3、当构造完后流媒体文件的第N个分片的第一个数据块,流媒体服务器调用哈希 摘要函数,生成后流媒体文件的第N个分片的第一个数据块的哈希值,将这个哈希值添加 到后流媒体文件中若干个连续位于第N个分片前面的分片的第一个数据块中,即将这个哈 希值添加到后流媒体文件的第N-I个分片的第一个数据块中,第N-2个分片的第一个数据 块中,...,以及第N-x个分片的第一个数据块中,其中χ值按照终端设备在自身的内存中划 出的缓冲区的大小而定。103、构造后流媒体文件的独立验证信息。由于哈希链不适用于后流媒体文件的数据块随机丢失的场景,为了使得业务运营 商能够提供快速流畅的视频播放业务,终端设备要能够绝对保证持续验证流媒体内容完整 性,因此终端设备必须要能够获得后流媒体文件的所有数据块的独立验证信息。在本实施 例中,流媒体服务器采用基于Merkle树的树链来构造后流媒体文件中每个数据块的独立 验证信息,具体的过程如下后流媒体文件的所有分片构造一棵Merkle树,假设后流媒体文件有两个分片,每 个分片各有四个数据块,构造Merkle树的过程具体为=Merkle树的每一个叶子节点Ds,t是 由一个数据块Bs,t的哈希值构成,即,Ds,t = h(Bs,t),其中,s是分片的序号,t是数据块在第 s个分片中的序号,Ds, t在Merkle树里是按照从右至左的顺序从后流媒体文件的最后一个 分片的最后一个数据块的哈希值开始开始排列在Merkle树的最低层里,也就是说Merkle 树的构造是从第二个分片的最后一个数据块开始的,Merkle树的每个父节点下面所有子节 点的哈希值串联到一起再进行哈希计算就得到它们的父节点,即由下面的公式决定,Ds,bi, C = h(Ds,b s, (b+c_1)/2,Ds, (b+c+1)/2 s,c)例如,D1,卜 = I^D1,卜 U,DLhL4),这个过程一直进 行下去直至得到Merkle树的根节点h,。。t,然后对该根节点h,。。t进行数字签名,获得根节点 的数字签名信息sign (hroot) ,Merkle树应该是二叉平衡树,如果Merkle树不平衡,则调用平 衡二叉树的平衡算法,使Merkle树重新平衡。按照后媒体文件所有分片构造的Merkle树 如图2所示。
构造完Merkle树后,流媒体服务器将数据块在Merkle树的验证路径上的完整信 息作为该数据块的验证信息添加到该数据块上,验证路径是由树的每一层上的一个节点组 成,这些节点是由该叶子路径上的兄弟节点直到根节点的下一层节点为止,如对数据块Bu 而言,它的验证信息为乂811011^)、02,卜2,4、01,1 1,2、01,4、以及数据块的序号3和包含该数 据块的分片的序号1。如果使用单棵Merkle树,后流媒体文件中一个数据块的验证路径的完整信息的 大小很有可能超过网络能传输的最大数据结构的容量大小。为防止这种情况的出现,可以 把后流媒体文件的数据块的独立验证信息构成多棵Merkle树,将每棵Merkle树的验证路 径的完整信息的长度限制在最大数据块的长度之内。仍然假设后流媒体文件有两个分片,每个分片各有四个数据块,当前处理到数据 块B2il,遍历当前Merkle树,找到由哈希值h (B2il)构成的叶子节点D2il在Merkle树中的位 置,即当前Merkle树的最左端。如果插入叶子节点D2>1后,该叶子节点D2>1到根节点的验证 路径的完整信息的大小已超过网络能传输的最大数据结构的容量大小,则保存未插入叶子 节点D2il的Merkle树,将叶子节点D2il作为新建的Merkle树的第一个叶子节点,新建一棵 Merkle 树。后流媒体文件中所有数据块的独立验证信息都要单独保存,在本实施例中,可以 将后流媒体文件中所有数据块的独立验证信息保存在验证服务器中,验证服务器可以就是 流媒体服务器,也可以是另一个单独的服务器。在本实施例中,流媒体服务器对源流媒体文件进行处理得到后流媒体文件,其中 后流媒体文件中的数据块携带下一数据块的验证信息,流媒体服务器还构造后流媒体文件 中所有数据块各自的独立验证信息,将这些独立验证信息单独保存中,因此本实施例能够 保证终端设备下载的后流媒体文件中的所有数据块都能绝对持续得到验证,并且使得终端 设备下载后流媒体文件所需的传输开销较小,而且分片的第一个数据块的验证信息用数字 签名签署,有效的杜绝了第一个数据块的验证信息被伪造的可能性,并且保证了采用哈希 链构造的分片的后继数据块的验证信息的可靠性。实施例一是从流媒体服务器的角度来描述验证流媒体内容完整性的方法,下面将 从终端设备的角度来描述验证流媒体内容完整性的方法。实施例二、请参阅图3,本发明实施例还提供验证流媒体内容完整性的方法的另一 实施例,包括301、发送第一请求消息;当终端设备需要播放某一流媒体内容时,终端设备开始请求包含该流媒体内容的 后流媒体文件的下载,实质上,终端设备是下载后流媒体文件的分片。在本实施例中,终端 设备是从后流媒体文件的第一个分片开始依次请求下载,但是由于每个分片从发送方发送 到终端设备接收整个过程所需的时间会因为网络等原因而有所不同,因此终端设备对每个 分片的验证并不是一定从第一个分片开始。当终端设备下载到某一分片时,终端设备可以先向目录服务器请求能提供该分片 的终端设备的集合,目录服务器根据拥有该分片的终端设备的状态,返回具有较佳状态的 一组终端设备的地址列表,终端设备根据目录服务器返回的地址列表,依次从地址列表中 选择一个终端设备,发送该分片下载请求,直到有终端设备响应为止,若没有终端设备能够提供该分片,终端设备则会请求流媒体服务器提供该分片。下载开始后,终端设备要对接收 的分片从分片的第一数据块开始进行流媒体内容完整性验证,由于接收的分片中没有携带 分片的第一个数据块的验证信息,因此在本实施例中,终端设备向验证服务器发送第一请 求消息,该第一请求消息用于请求终端设备接收的第一个数据块的验证信息,302、接收第一个数据块的独立验证信息;终端设备从验证服务器接收第一个数据块的独立验证信息,在本实施例中,在验 证服务器保存的后流媒体文件的所有数据块的独立验证信息是采用与如图1所示的实施 例一相同的基于Merkle树的树链构造的。303、对第一个数据块进行验证;在本实施例中,仍然假设后流媒体文件有两个分片,每个分片各有四个数据块,按 照后媒体文件所有分片构造的Merkle树如图2所示,第一个分片的第一个数据块的独立验 证信息为sign(hra。t,D2,^2,4, D1,4,Dli2,终端设备对第一个数据块的验证过程如下1、用对Merkle树的根节点进行数字签名的同样方法验证第一个数据块所携带的 sign(hroot)的完整性,若验证结果是sign(h_t)是完整的,则执行以下验证第一个数据块的 流媒体内容完整性的步骤;2、采用哈希算法生成第一个数据块的哈希值D' ia ;3、采用哈希算法计算D' u在Merkle树上的父节点,即D' 1,1^1,2 = h(D'
Di,2),D 1,1 1,4 — h (D 1,1-1,2,1^,3^1,4),1^ root — h (D 1,1 1,4,D2,1 2,4);4、将h' root与第一个数据块所携带的数字签名SignOiraJ中的h_t进行比较。 如果相同,则第一个数据块是完整的。304、对其他数据块进行验证。当第一个数据块经过验证是完整的时候,则从第一个数据块中提取同分片的第二 个数据块的验证信息,也就是第二个数据块的真实哈希值,终端设备采用哈希摘要算法对 接收的第二个数据块进行计算,将计算所得的哈希值与真实的哈希值进行比较,如果相同, 则第二个数据块是完整的。当第二个数据块经过验证是完整的时候,则从第二个数据块中 提取同分片的第三个数据块的验证信息,也就是第三个数据块的真实哈希值,终端设备采 用哈希摘要算法对接收的第三个数据块进行计算,将计算所得的哈希值与真实的哈希值进 行比较,如果相同,则第三个数据块是完整的。继续验证同分片的后继数据块,直至验证完 同分片的最后一个数据块。由于例如网络丢包,乱序等种种原因,在验证完同分片的最后一个数据块之前,终 端设备会在验证某一数据块的完整性时发生该数据块的验证信息缺失的情况,因此终端设 备会向验证服务器请求该数据块的独立验证信息,采用验证服务器发送的该数据块的独立 验证信息验证该数据块的完整性,这个过程与步骤203验证第一个数据块的过程可以是一 样的,也可以是有所不同的,不同之处在于,当终端设备从验证服务器接收到该数据块的独 立验证信息,按照该数据块的独立验证信息提取出该数据块在Merkle树上的验证路径,沿 着验证路径逐步构造验证路径上的节点,当构造到某一节点时,若与在验证其他数据块的 完整性时已保存的相同序号的节点的内容相同,则停止构造验证路径上的剩余节点,保存 已构造的节点,验证结果是该数据块是完整的。举例如下仍然假设后流媒体文件共两个分片,每个分片有四个数据块,按照后媒体文件所有分片构造的Merkle树如图2所示。若第一个分片的第二个数据块丢失,需要验证第一个 分片的第三个数据块的完整性时,终端设备会向验证服务器请求第一个分片的第三个数据 块的独立验证信息,按照该数据块的独立验证信息提取出该数据块在Merkle树上的验证 路径,沿着验证路径逐步构造验证路径上的节点,因为在验证第一个分片的第一个数据块 时,当第一个分片的第一个数据块是完整的时候,已构造的节点D' u一就是如图2所示的 Merkle树的节点Dlil一的真实值,所以只要在验证第一个分片的第三个数据块的过程中生 成的同样序号的节点的哈希值与已构造的节点D' "Μ相同,则可判断第一个分片的第三 个数据块是完整的,当第一个分片的第三个数据块的完整的时候,终端设备从第一个分片 的第三个数据块中提取出第一个分片的第四个数据块,继续验证第一个分片的第四个数据 块,直至验证完第一个分片的最后一个数据块的完整性。对于每个分片,终端设备都会设置一个预设值为0的破损数据块的计数器,当验 证某个数据块为破损时,其处理流程如下1、终端设备将破损数据块的计数器加1,并丢弃该数据块;2、若该数据块是不可缺失的,终端设备重新向提供该分片的终端设备或者流媒体 服务器请求下载该数据块;3、若破损数据块的计数器超过一个预先设定的阙值,则该分片被判断为破损的。 终端设备将向其他能提供该分片的终端设备或者流媒体服务器请求下载该分片。进一步的,为了提高终端设备下载后流媒体文件的速度,终端设备可以在自身的 内存中划出一定容量的缓冲区,并行下载后流媒体文件的多个分片,因此考虑到终端设备 分片下载的并行性,终端设备同样也可以对这些并行下载的分片并行进行验证,具体为假设后流媒体文件有4个分片,当第一个分片的第一个数据块采用步骤203经过 验证后证实是完整的之后,终端设备除了从第一个分片的第一个数据块提取出第一个分片 的第二个数据块的验证信息,还从第一分片的第一个数据块提取出后继3个分片的第一个 数据块的验证信息,如果终端设备已经开始并行下载所有的分片,因此终端设备可以并行 验证第一个分片的第二个数据块和后继3个分片的第一数据块的完整性,直至并行验证完 所有的分片的完整性。在本实施例中,终端设备通过在验证服务器中保存的所有数据块的独立验证信 息,在所有数据块的验证信息不缺失的情况下,从验证服务器中提取分片的第一个数据块 的验证信息,再持续的对后继数据块进行完整性验证,在某个数据块的验证信息缺失的情 况下,从验证服务器中提取该数据块的独立验证信息,同样能够持续的对后继数据块进行 完整性验证,因此在本实施例中,终端设备能够对所有收到的数据块持续进行完整性验证, 有效的杜绝了检漏损坏的数据块的可能性。业务运营商提供的视频播放业务可以让用户通过VCR操作对观看的视频向前跳 进或者向后跳进,这会导致下一播放的数据块不一定是已被缓冲且通过验证的数据块,下 面将对终端设备在VCR操作场景下进行数据块的完整性验证的过程进行详细描述,实施例三、请参阅图4,本发明实施例还提供验证流媒体内容完整性的方法的另一 实施例,包括401、接收用户的指示消息;当用户想对业务运营商提供的视频向前跳进或者向后跳进时,用户可以通过遥控器上的VCR操作按钮执行这些操作。终端设备接收用户的指示消息,终端设备可以从该指 示消息中获知用户通过VCR操作指定的将被播放的数据块。402、确定将被播放的数据块的位置;终端设备按照接收的指示消息确定将被播放的数据块在后流媒体文件中所有数 据块里的位置,在本实施例中,后流媒体文件有两个分片,第一个分片有八个数据块。终端 设备按照接收的指示消息确定将被播放的数据块在后流媒体文件中所有数据块里的位置 为第一个分片的第三个数据块。403、判断将被播放的数据块是否已被缓冲,若否,则执行步骤404和步骤405,若 是,则执行步骤406;终端设备确定将被播放的数据块是第一个分片的第三个数据块后,判断第一个分 片的第三个数据块是否已被缓冲。404、下载包含将被播放的数据块的分片;若将被播放的数据块没有被缓冲,终端设备下载包含这个的数据块的分片,也就 是说,终端设备下载一个分片,在本实施例中,终端设备在将被播放的数据块没有被缓冲的 情况下,下载包含将被播放的数据块的分片而不是下载将被播放的数据块和这个数据块的 后继数据块,是因为在流媒体系统中,后流媒体文件的发布采用的是节点辅助分发方案,因 此,请求下载一个分片要比请求下载将被播放的数据块和这个数据块的后继数据块在操作 上更方便。405、验证将被播放的数据块和后继数据块的完整性;虽然将被播放的数据块没有被缓冲,为了提高业务运营商的视频播放业务的流畅 性,终端设备不从包含将被播放的数据块的分片的第一个数据块开始进行流媒体内容完整 性验证,而是向验证服务器请求将被播放的数据块(第一个分片的第三个数据块)的独立 验证信息,从验证服务器接收将被播放的数据块的独立验证信息,按照将被播放的数据块 的独立验证信息验证将被播放的数据块的完整性,当将被播放的数据块是完整的时候,即 第一个分片的第三个数据块是完整的时候,终端设备从中提取出第一个分片的第四个数据 块的验证信息,当第一个分片的第四个数据块是完整的时候,再从中提取出第一个分片的 第五个数据块的验证信息,终端设备持续操作下去,直至验证完第一个分片的第八个数据 块的验证信息,更详细的验证过程请参照如图3所示的实施例二。406、判断将被播放的数据块是否已通过完整性验证,若是,则执行步骤407,若否, 则执行步骤408 ;若将被播放的数据块已被缓冲,终端设备判断将被播放的数据块是否已通过完整 性验证,若是,则播放将被播放的数据块,若否,终端设备则重新下载将被播放的数据块,终 端设备按照从将被播放的数据块的前一数据块中提取出的将被播放的数据块的验证信息 对将被播放的数据块进行完整性验证,更详细的验证过程请参照如图3所示的实施例二。需要说明的是,用户也可以通过VCR操作将视频连续的向前跳进或者连续向后跳 进,又或者向前跳进后再向后跳进等等,终端设备的操作同上述过程类似,就不再赘述。407、播放将被播放的数据块;终端设备根据VCR操作开始播放视频。408、重新下载并验证将被播放的数据块的完整性。
本实施例中,当用户通过VCR操作来观看视频时,终端设备在将被播放的数据块 没有被缓冲的情况下,采用验证服务器提供的独立验证信息来验证将被播放的数据块,在 将被播放的数据块已缓冲的情况下,从将被播放的数据块的前一数据块中提取出的将被播 放的数据块的验证信息对将被播放的数据块进行完整性验证,因此,在本实施例中,终端设 备能够在VCR操作场景下进行数据块的完整性验证。下面对本发明实施例中流媒体服务器进行描述,请参阅图5,本发明实施例中流媒 体服务器的一个实施例四包括读取分片单元501,用于读取源流媒体文件的第R个分片,第R个分片包括Z个数 据块;构造后流媒体文件单元502,用于将第R个分片的第Z个数据块作为后流媒体文件 的第R个分片的第Z个数据块,计算第Z个数据块的验证信息,将第Z个数据块的验证信息 添加到第Z-I个数据块中生成第Z-I'个数据块,将第Z-I'个数据块作为后流媒体文件的 第R个分片的第Z-I个数据块,再计算第Z-I'个数据块的验证信息,将第Z-I'个数据块 的验证信息添加到第Z-2个数据块中生成第Z-2'个数据块,将第Z-2'个数据块作为后流 媒体文件的第R个分片的第Z-2个数据块,继续上述操作,直至构造完后流媒体文件的第R 个分片的第一个数据块;构造独立验证信息单元503,用于构造后流媒体文件中每个数据块的独立验证信 息,并单独存储后流媒体文件中每个数据块的独立验证信息。具体的,构造独立验证信息单 元503可以采用基于Merkle树的树链构造后流媒体文件中第R个分片的每个数据块的独 立验证信息。为了提高终端设备下载流媒体内容的速度,终端设备可以在自身的内存中划出一 定容量的缓冲区,并行下载后流媒体文件的多个分片,因此考虑到终端设备分片下载的并 行性,进一步的,构造后流媒体文件单元502还用于,当构造完后流媒体文件的第R个分片 的第一个数据块,计算后流媒体文件的第R个分片的第一个数据块的验证信息,将后流媒 体文件的第R个分片的第一个数据块的验证信息添加到后流媒体文件中若干个连续位于 第R个分片前面的分片的第一个数据块中,具体的,构造后流媒体文件单元502可以按照终 端设备的缓冲区的大小确定若干个连续位于第R个分片前面的分片的数量。本实施例中的终端设备可以与如图6所示的实施例五的终端设备相同。下面对本发明实施例中终端设备进行描述,请参阅图6,本发明实施例中终端设备 的一个实施例五包括发送请求消息单元601,用于发送第三请求消息,该第三请求消息用于请求接收的 后流媒体文件的当前分片的第一个数据块的独立验证信息,并且该分片包括S个数据块;接收验证信息单元602,用于在发送请求消息单元601发送完第三请求消息之后, 接收该分片的第一个数据块的独立验证信息;验证完整性单元603,用于按照第一个数据块的独立验证信息验证第一个数据块 的完整性,当第一个数据块是完整的时候,从第一个数据块开始,从已经验证为完整的第S 个数据块中提取出该分片的第s+1个数据块的验证信息,按照第s+1个数据块的验证信息 验证该分片的第s+1个数据块的完整性,直至验证完该分片的第S个数据块的完整性,S属 于1至S之间的任一整数,在验证完该分片的第S个数据块的完整性之前,当第G个数据块的验证信息缺失时,G为2至S中的任一整数,发送第四请求消息,第四请求消息用于请求 第G个数据块的独立验证信息,接收第G个数据块的独立验证信息,按照第G个数据块的独 立验证信息验证第G个数据块的完整性。进一步的,验证完整性单元603可以包括验证子单元604,验证子单元604用于接 收第G个数据块的独立验证信息,按照第G个数据块的独立验证信息提取出第G个数据块 在Merkle树上的验证路径,沿着第G个数据块在Merkle树上的验证路径逐步构造该验证 路径上的节点,当构造到某一节点时,若与在验证其他数据块的完整性时已保存的相同序 号的节点的内容相同,则停止构造该验证路径上的剩余节点,保存已构造的节点,第G个数 据块是完整的。为了提高终端设备下载流媒体内容的速度,终端设备可以在自身的内存中划出一 定容量的缓冲区,并行下载后流媒体文件的多个分片,因此考虑到终端设备分片下载的并 行性,进一步,验证完整性单元603还用于,当第一个数据块是完整的时候,从第一个数据 块中提取出连续位于当前分片之后的i个分片的第一个数据块的验证信息,按照i个分片 的第一个数据块的验证信息并行验证i个分片的第一个数据块的完整性,将i个分片中包 含完整的第一个数据块的分片与当前分片一起采用同样的验证方法并行验证各自剩余数 据块的完整性。为了终端设备能够在VCR操作场景下进行数据块的流媒体内容完整性验证,进一 步,终端设备还包括接收指示消息单元605,用于接收用户的指示消息,该指示消息用于指定通过VCR 操作将被播放的数据块;VCR执行单元606用于,按照指示消息单元605所接收的指示消息确定将被播放的 数据块在后流媒体文件中所有数据块里的位置;判断将被播放的数据块是否已被缓冲,若 将被播放的数据块没有被缓冲,按照将被播放的数据块在后流媒体文件中所有数据块里的 位置下载包含将被播放的数据块的分片,采用发送请求消息单元601请求将被播放的数据 块的独立验证信息,接收将被播放的数据块的独立验证信息,按照将被播放的数据块的独 立验证信息验证将被播放的数据块的完整性;若将被播放的数据块已被缓冲,判断将被播 放的数据块是否已通过完整性验证,若是,则播放将被播放的数据块,若否,则重新下载将 被播放的数据块,按照从将被播放的数据块的前一数据块中提取出的将被播放的数据块的 验证信息对将被播放的数据块进行完整性验证。下面对本发明实施例中验证流媒体内容完整性的系统进行描述,请参阅图7,本发 明实施例中验证流媒体内容完整性的系统的一个实施例六包括流媒体服务器701和终端设备702,需要说明的是,本实施例中的流媒体服务器 701可以与前述图5所示的流媒体服务器相同,本实施例中的终端设备702可以与前述图6 所示的终端设备相同,具体此处不再赘述本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储 介质可以包括ROM、RAM、磁盘或光盘等。以上对本发明实施例所提供的验证流媒体内容完整性的方法以及设备和系统进 行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人 员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明 书内容不应理解为对本发明的限制。
权利要求
1.一种验证流媒体内容完整性的方法,其特征在于,包括流媒体服务器读取源流媒体文件的第N个分片,所述分片包括M个数据块;将所述分片的第M个数据块作为后流媒体文件的第N个分片的第M个数据块,从所述 后流媒体文件的第N个分片的第M个数据块开始,计算所述后流媒体文件的第N个分片的 第m个数据块的验证信息,通过将第m个数据块的验证信息添加到所述源流媒体文件的第 N个分片的第m-1个数据块生成第m-1'个数据块,将第m_l'个数据块作为所述后流媒体 文件的第N个分片的第m-1个数据块,直至构造完所述后流媒体文件的第N个分片的第一 个数据块,m属于1至M之间的任一整数;构造所述后流媒体文件中第N个分片的每个数据块的独立验证信息,并单独存储所述 独立验证信息。
2.根据权利要求1所述的方法,其特征在于,构造所述后流媒体文件中第N个分片的每 个数据块的独立验证信息,具体为采用基于Merkle树的树链构造所述后流媒体文件中第N个分片的每个数据块的独立 验证信息。
3.根据权利要求1或2所述的方法,其特征在于,还包括当构造完所述后流媒体文件的第N个分片的第一个数据块,计算所述后流媒体文件的 第N个分片的第一个数据块的验证信息,将所述后流媒体文件的第N个分片的第一个数据 块的验证信息添加到所述后流媒体文件中若干个连续位于第N个分片前面的分片的第一 个数据块中。
4.根据权利要求3所述的方法,其特征在于,若干个连续位于第N个分片前面的分片的数量由终端设备的缓冲区的大小而定。
5.一种验证流媒体内容完整性的方法,其特征在于,包括终端设备发送第一请求消息,所述第一请求消息用于请求接收的后流媒体文件的分片 的第一个数据块的独立验证信息,所述分片包括K个数据块;接收第一个数据块的独立验证信息;按照所述第一个数据块的独立验证信息验证第一个数据块的完整性,当第一个数据块 是完整的时候,从第一个数据块开始,从已经验证为完整的第k个数据块中提取出所述分 片的第k+Ι个数据块的验证信息,按照所述第k+Ι个数据块的验证信息验证所述分片的第 k+Ι个数据块的完整性,直至验证完所述分片的第K个数据块的完整性,k属于1至K之间 的任一整数;在验证完所述分片的第K个数据块的完整性之前,当第T个数据块的验证信息缺失时, T为2至K中的任一整数,发送第二请求消息,所述第二请求消息用于请求第T个数据块的 独立验证信息,接收第T个数据块的独立验证信息,按照所述第T个数据块的独立验证信息 验证第T个数据块的完整性。
6.根据权利要求5所述的方法,其特征在于,所述后流媒体文件的数据块的独立验证 信息是采用基于Merkle树的树链构造的,接收第T个数据块的独立验证信息,按照所述第 T个数据块的独立验证信息验证第T个数据块的完整性,具体为接收第T个数据块的独立验证信息;按照所述第T个数据块的独立验证信息提取出第T个数据块在Merkle树上的验证路径,沿着所述验证路径逐步构造所述验证路径上的节点,当构造到某一节点时,若与在验证 其他数据块的完整性时已保存的相同序号的节点的内容相同,则停止构造所述验证路径上 的剩余节点,保存已构造的节点,第T个数据块是完整的。
7.根据权利要求5或6所述的方法,其特征在于,还包括当第一个数据块是完整的时候,从第一个数据块中提取出连续位于所述分片之后的j 个分片的第一个数据块的验证信息,按照所述j个分片的第一个数据块的验证信息并行验 证所述j个分片的第一个数据块的完整性,将j个分片中包含完整第一个数据块的分片与 所述分片一起采用同样的验证方法并行验证各自剩余数据块的完整性。
8.根据权利要求7所述的方法,其特征在于,还包括接收用户的指示消息,所述指示消息用于指定通过VCR操作将被播放的数据块;按照所述指示消息确定将被播放的数据块在所述后流媒体文件中所有数据块里的位置;判断将被播放的数据块是否已被缓冲,若将被播放的数据块没有被缓冲,按照将被播 放的数据块在所述后流媒体文件中所有数据块里的位置下载包含将被播放的数据块的分 片,请求将被播放的数据块的独立验证信息,接收所述将被播放的数据块的独立验证信息, 按照所述将被播放的数据块的独立验证信息验证将被播放的数据块的完整性;若将被播放的数据块已被缓冲,判断将被播放的数据块是否已通过完整性验证,若是, 则播放将被播放的数据块,若否,则重新下载将被播放的数据块,按照从将被播放的数据块 的前一数据块中提取出的将被播放的数据块的验证信息对将被播放的数据块进行完整性 验证。
9.一种流媒体服务器,其特征在于,包括读取分片单元,用于读取源流媒体文件的第R个分片,所述分片包括Z个数据块;构造后流媒体文件单元,用于将所述分片的第Z个数据块作为后流媒体文件的第R个 分片的第Z个数据块,从所述后流媒体文件的第R个分片的第Z个数据块开始,计算所述后 流媒体文件的第R个分片的第ζ个数据块的验证信息,通过将第ζ个数据块的验证信息添 加到所述源流媒体文件的第R个分片的第z-1个数据块生成第个数据块,将第 个数据块作为所述后流媒体文件的第R个分片的第z-1个数据块,直至构造完所述后流媒 体文件的第R个分片的第一个数据块,ζ属于1至Z之间的任一整数;构造独立验证信息单元,用于构造所述后流媒体文件中第R个分片的每个数据块的独 立验证信息,并单独存储所述独立验证信息。
10.根据权利要求9所述的流媒体服务器,其特征在于,所述构造独立验证信息单元采用基于Merkle树的树链构造所述后流媒体文件中第R 个分片的每个数据块的独立验证信息。
11.根据权利要求9或10所述的流媒体服务器,其特征在于,所述构造后流媒体文件单元还用于,当构造完所述后流媒体文件的第R个分片的第一 个数据块,计算所述后流媒体文件的第R个分片的第一个数据块的验证信息,将所述后流 媒体文件的第R个分片的第一个数据块的验证信息添加到所述后流媒体文件中若干个连 续位于第R个分片前面的分片的第一个数据块中。
12.根据权利要求11所述的流媒体服务器,其特征在于,所述构造后流媒体文件单元按照终端设备的缓冲区的大小确定若干个连续位于第R个分片前面的分片的数量。
13.—种终端设备,其特征在于,包括发送请求消息单元,用于发送第三请求消息,所述第三请求消息用于请求接收的后流 媒体文件的分片的第一个数据块的独立验证信息,所述分片包括S个数据块;接收验证信息单元,用于接收第一个数据块的独立验证信息;验证完整性单元,用于按照所述第一个数据块的独立验证信息验证第一个数据块的完 整性,当第一个数据块是完整的时候,从第一个数据块开始,从已经验证为完整的第s个数 据块中提取出所述分片的第s+1个数据块的验证信息,按照所述第s+1个数据块的验证信 息验证所述分片的第s+1个数据块的完整性,直至验证完所述分片的第S个数据块的完整 性,s属于1至S之间的任一整数;在验证完所述分片的第S个数据块的完整性之前,当第G个数据块的验证信息缺失时, G为2至S中的任一整数,发送第四请求消息,所述第四请求消息用于请求第G个数据块的 独立验证信息,接收第G个数据块的独立验证信息,按照第G个数据块的独立验证信息验证 第G个数据块的完整性。
14.根据权利要求13所述的终端设备,其特征在于,所述验证完整性单元包括验证子单元;所述验证子单元用于接收第G个数据块的独立验证信息,按照所述第G个数据块的独 立验证信息提取出第G个数据块在Merkle树上的验证路径,沿着所述验证路径逐步构造所 述验证路径上的节点,当构造到某一节点时,若与在验证其他数据块的完整性时已保存的 相同序号的节点的内容相同,则停止构造所述验证路径上的剩余节点,保存已构造的节点, 第G个数据块是完整的。
15.根据权利要求13或14所述的终端设备,其特征在于,所述验证完整性单元还用于,当第一个数据块是完整的时候,从第一个数据块中提取 出连续位于所述分片之后的i个分片的第一个数据块的验证信息,按照所述i个分片的第 一个数据块的验证信息并行验证所述i个分片的第一个数据块的完整性,将i个分片中包 含完整的第一个数据块的分片与所述分片一起采用同样的验证方法并行验证各自剩余数 据块的完整性。
16.根据权利要求15所述的终端设备,其特征在于,还包括接收指示消息单元,用于接收用户的指示消息,所述指示消息用于指定通过VCR操作 将被播放的数据块;VCR执行单元用于,按照所述指示消息确定将被播放的数据块在所述后流媒体文件中 所有数据块里的位置;判断将被播放的数据块是否已被缓冲,若将被播放的数据块没有被 缓冲,按照将被播放的数据块在所述后流媒体文件中所有数据块里的位置下载包含将被播 放的数据块的分片,采用所述发送请求消息单元请求将被播放的数据块的独立验证信息, 接收所述将被播放的数据块的独立验证信息,按照将被播放的数据块的独立验证信息验证 将被播放的数据块的完整性;若将被播放的数据块已被缓冲,判断将被播放的数据块是否 已通过完整性验证,若是,则播放将被播放的数据块,若否,则重新下载将被播放的数据块, 按照从将被播放的数据块的前一数据块中提取出的将被播放的数据块的验证信息对将被 播放的数据块进行完整性验证。
17. —种验证流媒体内容完整性的系统,包括如权利要求9至12中任一项所述的流媒体服务器和如权利要求13至16中任一项所 述的终端设备。
全文摘要
本发明实施例公开了一种验证流媒体内容完整性方法,还提供相应的设备和系统。在本发明实施例中,流媒体服务器对源流媒体文件进行处理得到后流媒体文件,其中后流媒体文件中的数据块携带下一数据块的验证信息,流媒体服务器还构造后流媒体文件中所有数据块各自的独立验证信息,将这些独立验证信息单独保存,因此本发明实施例能够保证终端设备下载的后流媒体文件中的所有数据块都能绝对持续得到验证,并且使得终端设备下载后流媒体文件所需的传输开销较小。
文档编号H04N21/238GK102137089SQ201010528198
公开日2011年7月27日 申请日期2010年11月1日 优先权日2010年11月1日
发明者朱俊华 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1