專利名稱:驗證流媒體內容完整性的方法、設備以及系統的制作方法
技術領域:
本發明涉及通信技術領域,具體涉及一種驗證流媒體內容完整性的方法、設備以 及系統。
背景技術:
流媒體是指采用流式傳輸的方式在互聯網播放的媒體格式,業務運營商可以采 用流媒體方式向用戶提供視頻播放業務,例如寬帶交互式電視(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日
發明者朱俊華 申請人:華為技術有限公司