用于信息中心網(wǎng)絡(luò)的訪問控制框架的制作方法
【專利摘要】一個實施例提供用于發(fā)布和獲得加密形式的加密數(shù)據(jù)集合的訪問控制架構(gòu)。操作中,內(nèi)容消費者可以獲得數(shù)據(jù)集合的清單對象,使得清單包括對所述數(shù)據(jù)集合的一組加密內(nèi)容對象的引用,并包括一個或多個訪問控制規(guī)約ACS,每個訪問控制規(guī)約規(guī)定用于解密所述數(shù)據(jù)集合的一個或多個內(nèi)容對象的解密協(xié)議。消費者可以通過信息中心網(wǎng)絡(luò)ICN傳播興趣消息以接收清單中列出的加密內(nèi)容對象??蛻舳诉€可以從清單獲得與相應(yīng)的加密內(nèi)容對象關(guān)聯(lián)的ACS,以及使用ACS中規(guī)定的解密協(xié)議解密相應(yīng)的加密內(nèi)容對象。
【專利說明】
用于信息中心網(wǎng)絡(luò)的訪問控制框架
技術(shù)領(lǐng)域
[0001]本申請一般涉及信息中心網(wǎng)絡(luò)。更具體地,本申請涉及用于發(fā)布和訪問加密數(shù)據(jù)的訪問控制框架。
【背景技術(shù)】
[0002]信息中心網(wǎng)絡(luò)架構(gòu)(ICN)正快速成為研究界和工業(yè)界中當前的主機對主機設(shè)計的互聯(lián)網(wǎng)設(shè)計的有吸引力的替代方式。最近提出幾個新穎的網(wǎng)絡(luò)架構(gòu)作為ICN的實例。這些ICN架構(gòu)的最通用和基礎(chǔ)的特征包括基于興趣的內(nèi)容檢索、內(nèi)容為導(dǎo)向的路由和網(wǎng)絡(luò)內(nèi)緩存。基于興趣的內(nèi)容檢索和內(nèi)容為導(dǎo)向的路由允許用戶通過對唯一命名的內(nèi)容的顯式請求而不是通過建立與可以提供內(nèi)容的目標計算機的點對點連接從網(wǎng)絡(luò)獲得內(nèi)容。網(wǎng)絡(luò)內(nèi)緩存允許路由器將內(nèi)容緩存預(yù)先確定的時間長度,使得隨后對相同名稱的內(nèi)容對象的請求可以通過緩存滿足,而不是通過將請求向上游轉(zhuǎn)發(fā)到由請求識別的網(wǎng)絡(luò)端點。
[0003]由于網(wǎng)絡(luò)內(nèi)緩存,ICN內(nèi)容對象可以不總是來自其原始生產(chǎn)者。不過,如果曾為特定消費者加密緩存內(nèi)容,則即使其它消費者被授權(quán)訪問此內(nèi)容,但他們也不可能解密內(nèi)容。因此,ICN架構(gòu)通常要求對加密內(nèi)容的請求直接轉(zhuǎn)發(fā)到內(nèi)容生產(chǎn)者,使得每個消費者可以接收已經(jīng)使用消費者的公鑰加密的內(nèi)容的副本。遺憾的是,要求ICN節(jié)點將請求轉(zhuǎn)發(fā)到內(nèi)容生產(chǎn)者不允許消費者和發(fā)布者從網(wǎng)絡(luò)內(nèi)緩存受益,這可能導(dǎo)致對于消費者慢的響應(yīng)時間和對于內(nèi)容生產(chǎn)者的大的請求負擔,這是不期望的。
【發(fā)明內(nèi)容】
[0004]—個實施例給客戶端提供一種訪問控制架構(gòu),該架構(gòu)基于發(fā)布者的訪問控制規(guī)約(ACS)接收并解密加密數(shù)據(jù)的集合。操作中,客戶端可以獲得數(shù)據(jù)集合的清單對象,使得清單包括對數(shù)據(jù)集合的一組加密內(nèi)容對象的引用,并包括一個或多個訪問控制規(guī)約(ACS),每個規(guī)約規(guī)定用于解密數(shù)據(jù)集合的一個或多個內(nèi)容對象的解密協(xié)議。客戶端通過信息中心網(wǎng)絡(luò)(ICN)獲得清單中列出的相應(yīng)加密內(nèi)容對象??蛻舳诉€可以從清單獲得與相應(yīng)加密的內(nèi)容對象關(guān)聯(lián)的ACS,并使用ACS中規(guī)定的解密協(xié)議解密相應(yīng)加密的內(nèi)容對象。
[0005]在信息中心網(wǎng)絡(luò)(ICN)中,每項內(nèi)容是分別被命名的,每項數(shù)據(jù)被綁定到將該數(shù)據(jù)與任何其它項數(shù)據(jù)相區(qū)分的唯一名稱,諸如相同數(shù)據(jù)的其它形式或來自其它源的數(shù)據(jù)。此唯一名稱允許網(wǎng)絡(luò)裝置通過傳播指示唯一名稱的請求或興趣來請求數(shù)據(jù),可以獲得與數(shù)據(jù)的存儲位置、網(wǎng)絡(luò)位置、應(yīng)用和傳輸手段無關(guān)的數(shù)據(jù)。命名數(shù)據(jù)網(wǎng)絡(luò)(NDN)或內(nèi)容中心網(wǎng)絡(luò)(CCN)是ICN架構(gòu)的示例,以下詞語描述NDN或CCN架構(gòu)的元件:
[0006]內(nèi)容對象(ContentObject):單——項命名數(shù)據(jù),其綁定到唯一名稱。內(nèi)容對象是“永久的”,這意味著內(nèi)容對象可以在計算裝置內(nèi)或者在不同的計算裝置中移動,但不會改變。如果內(nèi)容對象的任何組成變化,則出現(xiàn)變化的實體創(chuàng)建包括更新內(nèi)容的新內(nèi)容對象,并且將新內(nèi)容對象綁定到新唯一名稱。
[0007]唯一名稱(Unique Name):CCN中的名稱通常是與位置無關(guān)的,唯一地標識內(nèi)容對象。數(shù)據(jù)轉(zhuǎn)發(fā)裝置不管內(nèi)容對象的網(wǎng)絡(luò)地址或物理位置如何,可以使用名稱或名稱前綴將包向生成或存儲內(nèi)容對象的網(wǎng)絡(luò)節(jié)點轉(zhuǎn)發(fā)。在一些實施例中,名稱可以是分層結(jié)構(gòu)的可變長度標識符(HSVLI) ASVLI可以分成幾個層次組成,這些組成可以以各種方式構(gòu)造。例如,個別的名稱組成口&1^、1101]16、11(111和〖681:.〖11:可以以左對齊的前綴為主的方式構(gòu)造,形成名稱 V parc/home/ndn/test.txt”。因此,名稱 “/parc/home/ndn” 可以是 “/parc/home/ndn/test.txt”的“父”或“前綴”。附加組成可以用來區(qū)分內(nèi)容項目的不同形式,諸如合作文檔。
[0008]在一些實施例中,名稱可以包括標識符,諸如從內(nèi)容對象的數(shù)據(jù)(例如驗證和值)和/或從內(nèi)容對象的名稱的元素導(dǎo)出的散列值?;谏⒘械拿Q的描述在美國專利申請?zhí)?3/847,814中描述(發(fā)明人Ignac1 Solis于2013年3月20日申請的名稱為“0RDERED-ELEMENT NAMING FOR NAME-BASED PACKET FORWARDING”)。名稱還可以是扁平標簽。后文中“名稱”用來指名稱數(shù)據(jù)網(wǎng)絡(luò)中的一條數(shù)據(jù)的任何名稱,諸如層次名稱或名稱前綴、扁平名稱、固定長度的名稱、任意長度的名稱或標簽(例如多協(xié)議標簽交換(MPLS)標簽)。
[0009]興趣(Interest):指示對一條數(shù)據(jù)的請求的包,包括該條數(shù)據(jù)的名稱(或名稱前綴)。數(shù)據(jù)消費者可以在信息中心網(wǎng)絡(luò)中傳播請求或興趣,CCN/NDN路由器可以向可以提供所請求數(shù)據(jù)以滿足請求或興趣的存儲裝置(例如緩存服務(wù)器)或數(shù)據(jù)生產(chǎn)者播送。
[0010]在一些實施例中,ICN系統(tǒng)可以包括內(nèi)容中心網(wǎng)絡(luò)(CCN)架構(gòu)。然而,本文中公開的方法還適用于其它ICN架構(gòu)。對CCN架構(gòu)的描述在美國專利申請?zhí)?2/338,175中描述(發(fā)明人 Van L.Jacobson 和 Diana K.Smetters 于 2008年 12 月 18 日申請,名稱為 “CONTROLLING THESPREAD OF INTERESTS AND CONTENT IN A CONTENT CENTRIC NETWORK”)。
[0011]在一些實施例中,客戶端通過ICN傳播對數(shù)據(jù)集合的興趣,以及響應(yīng)于傳播興趣,通過ICN接收清單對象。
[0012]在一些實施例中,清單包括通過引用的相應(yīng)ACS。并且在獲得ACS時,客戶端可以從清單獲得與ACS關(guān)聯(lián)的名稱前綴;通過ICN傳播其名稱包括名稱前綴的興趣。然后響應(yīng)于傳播興趣,客戶端接收包括ACS的內(nèi)容對象。
[0013]在一些實施例中,在解密加密的內(nèi)容對象時,客戶端獲得與加密的內(nèi)容對象對應(yīng)的加密密鑰,通過執(zhí)行ACS中規(guī)定的解密協(xié)議,獲得解封裝密鑰??蛻舳巳缓笫褂媒夥庋b密鑰解密加密密鑰,以獲得解密密鑰;以及使用解密密鑰解密加密內(nèi)容對象。
[0014]在一些實施例中,在獲得解封裝密鑰時,客戶端獲得標識解封裝密鑰的解封裝密鑰名稱,并沿著密鑰鏈,直到達到由解封裝密鑰名稱標識的密鑰節(jié)點。密鑰鏈的相應(yīng)密鑰節(jié)點包括加密形式的解密密鑰,解密密鑰能夠解密密鑰鏈的下一密鑰節(jié)點的解密密鑰??蛻舳巳缓髲臉俗R的密鑰節(jié)點獲得解封裝密鑰。
[0015]在一些實施例中,解密密鑰是使用基于分組的加密方案和/或廣播加密方案加密的。
[0016]—個實施例提供一種客戶端裝置,他使用訪問控制規(guī)約(ACS)建立與發(fā)布者的安全的端對端通信信道。操作中,客戶端可以獲得數(shù)據(jù)集合的初始清單對象。初始清單包括規(guī)定用于獲得并解密數(shù)據(jù)集合的一個或多個內(nèi)容對象的端對端訪問控制方案的ACS??蛻舳藦某跏记鍐沃械腁CS獲得發(fā)布者的公鑰,從ACS確定用于與發(fā)布者的會話的加密算法。
[0017]客戶端然后為發(fā)布者傳播設(shè)置興趣消息,使得設(shè)置興趣消息包括使用確定的加密算法和發(fā)布者的公鑰加密的臨時密鑰。響應(yīng)于傳播設(shè)置興趣消息,客戶端接收滿足設(shè)置興趣消息的設(shè)置內(nèi)容對象,使得設(shè)置內(nèi)容對象包括會話密鑰和會話標識符。客戶端然后為發(fā)布者傳播包括會話標識符的完成興趣消息,作為響應(yīng),接收?兩足完成興趣消息的會話中清單(in-sess1n manifest)。會話中清單包括對使用會話密鑰加密的數(shù)據(jù)集合的一個或多個內(nèi)容對象的引用。
[0018]在一些實施例中,客戶端從設(shè)置內(nèi)容對象獲得驗證數(shù)據(jù),使用驗證數(shù)據(jù)驗證會話密鑰。然后,響應(yīng)于確定會話密鑰是有效的,客戶端繼續(xù)傳播完成興趣消息,以建立安全的通信信道。
[0019]在一些實施例中,在驗證會話密鑰時,客戶端由一個或多個會話密鑰、密鑰標識符和用于確定的加密算法的標識符計算散列。客戶端然后將計算的散列與驗證數(shù)據(jù)比較,以確定會話密鑰是否是有效的。
[0020]在一些實施例中,客戶端可以通過信息中心網(wǎng)絡(luò)(ICN)獲得會話中清單中列出的相應(yīng)內(nèi)容對象,并使用會話密鑰解密相應(yīng)的內(nèi)容對象。
【附圖說明】
[0021]圖1呈現(xiàn)根據(jù)實施例促進發(fā)布和訪問加密形式的數(shù)據(jù)集合的示例性網(wǎng)絡(luò)環(huán)境。
[0022]圖2A圖解說明根據(jù)實施例的示例性CCN消息。
[0023]圖2B圖解說明根據(jù)實施例的CCN興趣消息的示例性元數(shù)據(jù)。
[0024]圖2C圖解說明根據(jù)實施例的CCN內(nèi)容對象的示例性元數(shù)據(jù)。
[0025]圖3A圖解說明根據(jù)實施例的示例性清單。
[0026]圖3B圖解說明根據(jù)實施例的示例性名稱列表部分和示例性散列列表部分。
[0027]圖4圖解說明根據(jù)實施例的示例性訪問控制規(guī)約(ACS)400。
[0028]圖5呈現(xiàn)根據(jù)實施例圖解說明獲得并基于訪問控制規(guī)約解密數(shù)據(jù)集合的方法的流程圖。
[0029]圖6呈現(xiàn)根據(jù)實施例圖解說明使用ACS解密清單中列出的內(nèi)容對象的方法的流程圖。
[0030]圖7呈現(xiàn)根據(jù)實施例圖解說明使用ACS中指定的密鑰鏈解密數(shù)據(jù)集合的內(nèi)容對象的方法的流程圖。
[0031]圖8呈現(xiàn)根據(jù)實施例圖解說明基于清單中的ACS建立安全的端對端會話的方法的流程圖。
[0032 ]圖9圖解說明根據(jù)本發(fā)明的實施例的示例性傳輸架構(gòu)。
[0033]圖10圖解說明根據(jù)實施例促進發(fā)布和訪問加密形式的數(shù)據(jù)集合的示例性設(shè)備。
[0034]圖11圖解說明根據(jù)實施例促進發(fā)布和訪問加密形式的數(shù)據(jù)集合的示例性計算機系統(tǒng)。
[0035]在圖中,相同的附圖標記指相同的附圖元件。
【具體實施方式】
[0036]給出以下描述使得本領(lǐng)域技術(shù)人員能夠制造和使用實施例,以下描述是在特定應(yīng)用和其需求的背景下提供的。對所公開實施例的各種改進對本領(lǐng)域技術(shù)人員是非常顯然的,在不偏離本發(fā)明的精神和范圍下,本文中定義的通用原理可以應(yīng)用于其它實施例和應(yīng)用。因此,本發(fā)明不局限于所顯示的實施例,而是給予與本文中公開的原理和特征一致的最寬范圍。
[0037]_
[0038]本發(fā)明的實施例提供一種訪問控制框架,其解決了通過信息中心網(wǎng)絡(luò)(ICN)或內(nèi)容中心網(wǎng)絡(luò)(CCN)發(fā)布加密形式的數(shù)據(jù)集合的問題。具體地,訪問控制框架允許發(fā)布者通過使用加密的內(nèi)容對象使用清單發(fā)布其內(nèi)容,并且規(guī)定可以使用哪個訪問控制方案來解密和訪問內(nèi)容。
[0039]例如,在一些實施例中,清單可以規(guī)定內(nèi)容的加密的解密密鑰的名稱,并且可以規(guī)定用于獲得解密密鑰的解封裝密鑰的訪問控制方案。只有被允許訪問內(nèi)容的客戶端被允許獲得解封裝密鑰。替代性地,清單可以規(guī)定訪問控制方案,訪問控制方案允許客戶端直接從發(fā)布者或者從代表發(fā)布者的內(nèi)容生產(chǎn)者獲得加密的內(nèi)容對象和解密密鑰。
[0040]因此,訪問控制框架可以用來使用任何訪問控制方案發(fā)布任何類型的內(nèi)容。不是要求每個發(fā)布者執(zhí)行其自己形式的應(yīng)用專用訪問控制規(guī)約和實施機制,發(fā)布者可以通過使用其自己選擇的訪問控制方案,使用訪問控制框架來發(fā)布加密內(nèi)容。
[0041 ]在訪問控制框架中,清單包括將加密內(nèi)容與訪問控制和解密信息去耦合的訪問控制規(guī)約和密鑰鏈。而且,密鑰鏈自身可以使用包含訪問受任意的基于分組的分層保護的內(nèi)容所需的解密密鑰列表的清單實現(xiàn)。密鑰本身基于主體(principal),以便實現(xiàn)細粒度的訪問控制方案,其中,主體為個別用戶或一組主體。清單的描述在美國專利申請?zhí)?4/337,026(律師案號為PARC-20140480US01,名稱為 “System for Distributing Nameless Objectsusing Self-Certifying Names”發(fā)明人Marc E.Mosko于2014年7月21 日申請)中描述。
[0042]在一些實施例中,訪問控制框架可以實現(xiàn)至少三種類型的通過ICN的訪問控制方案:基于分組的訪問控制方案,廣播訪問控制方案和向TLS提供ICN變形的端對端安全通信。本發(fā)明的實施例還提供一種ICN應(yīng)用編程接口(API),生產(chǎn)者可以使用API來發(fā)布加密內(nèi)容,消費者可以使用API來訪問加密內(nèi)容。
[0043]示例性網(wǎng)絡(luò)環(huán)境
[0044]圖1呈現(xiàn)根據(jù)實施例的促進發(fā)布和訪問加密形式的數(shù)據(jù)集合的示例性網(wǎng)絡(luò)環(huán)境100。具體地,網(wǎng)絡(luò)環(huán)境100可以包括內(nèi)容中心網(wǎng)絡(luò)(CCN) 102、內(nèi)容生產(chǎn)者108、內(nèi)容發(fā)布者110、客戶端112(例如內(nèi)容消費者)和內(nèi)容中心網(wǎng)絡(luò)102XCN 102(或信息中心網(wǎng)絡(luò))可以包括多個邊緣節(jié)點104和路由節(jié)點106。
[0045]例如,視頻流服務(wù)可以配置通過CCN 102可訪問的內(nèi)容生產(chǎn)者110。內(nèi)容生產(chǎn)者110可以包括與網(wǎng)絡(luò)102的邊緣節(jié)點104.2接口的服務(wù)器計算機或計算機集群。內(nèi)容生產(chǎn)者110可以生成任意內(nèi)容,諸如照片、視頻、傳感器采集的數(shù)據(jù)等。內(nèi)容生產(chǎn)者110可以在本地托管或不托管內(nèi)容,但可以與內(nèi)容發(fā)布者110合作代表內(nèi)容生產(chǎn)者108發(fā)布其內(nèi)容。
[0046]發(fā)布者110可以將來自內(nèi)容生產(chǎn)者108的數(shù)據(jù)轉(zhuǎn)換成攜帶數(shù)據(jù)塊的內(nèi)容對象集合(或任何形式的命名數(shù)據(jù)對象或ND0),他們是具有關(guān)聯(lián)的加密簽名的命名對象。發(fā)布者110可以通過CCN 102以他們的名稱發(fā)布這些ND0,CCN 102的轉(zhuǎn)發(fā)器104和106可以將NDO請求通過網(wǎng)絡(luò)102從客戶端112轉(zhuǎn)發(fā)到發(fā)布者110。
[0047]轉(zhuǎn)發(fā)器包括至少兩種主要元件:轉(zhuǎn)發(fā)信息庫(FIB)和未決興趣表(PIT)。轉(zhuǎn)發(fā)器可以使用FIB來通過輸出接口向可以滿足興趣的內(nèi)容生產(chǎn)者或發(fā)布者路由進入的興趣消息。在一些實施例中,轉(zhuǎn)發(fā)器可以使用標準路由協(xié)議或靜態(tài)路由填充FIB,并使用最長前綴匹配將興趣名稱與FIB表項匹配。路由協(xié)議可以基于發(fā)布的NDO的位置異步地填充FIB。
[0048]轉(zhuǎn)發(fā)器可以使用PIT來緩存未決興趣消息的和接收每個興趣消息所通過的接口的狀態(tài)。當轉(zhuǎn)發(fā)器接收內(nèi)容對象時,轉(zhuǎn)發(fā)器可以對PIT執(zhí)行最長前綴匹配查詢操作,以識別匹配的PIT表項,并使用匹配的PIT表項的接口來沿相反的興趣路徑將內(nèi)容對象返回傳播相應(yīng)興趣的客戶端。
[0049]在一些實施例中,一些轉(zhuǎn)發(fā)器還可以包括緩存內(nèi)容對象的內(nèi)容存儲(CS)。例如,轉(zhuǎn)發(fā)器節(jié)點104可以對應(yīng)于提供其它計算機或網(wǎng)絡(luò)訪問CCNl 02的邊緣節(jié)點。因此,轉(zhuǎn)發(fā)器節(jié)點104可以從客戶端裝置接收興趣消息,并且可以代表內(nèi)容生產(chǎn)者108和/或內(nèi)容發(fā)布者110緩存內(nèi)容對象。當邊緣節(jié)點104接收興趣時,他們可以對CS執(zhí)行初始的最長匹配前綴查詢操作,以搜索可以滿足興趣的匹配的緩存內(nèi)容對象。如果沒有找到匹配的緩存內(nèi)容對象,則邊緣節(jié)點104可以繼續(xù)通過CCN 102轉(zhuǎn)發(fā)興趣(例如基于匹配的FIB表項)。因此,CCN 102上分布的內(nèi)容存儲可以降低通過CCN 102的內(nèi)容對象檢索等待時間。
[0050]例如,內(nèi)容生產(chǎn)者108可以包括媒體流服務(wù)(例如來自加利福尼亞州的洛思加圖斯市的Netflix,Inc.的NetfIix媒體流服務(wù)),他與內(nèi)容生產(chǎn)者110合作來通過CCN傳播加密形式的受保護內(nèi)容,并允許CCN邊緣節(jié)點104.1上的內(nèi)容存儲緩存加密內(nèi)容。內(nèi)容生產(chǎn)者108可以使用訪問控制框架來通過只允許付費訂閱者解密內(nèi)容來保持控制哪些實體可以消費內(nèi)容。因此,內(nèi)容生產(chǎn)者108可以允許媒體流服務(wù)的訂閱者能夠訪問內(nèi)容,但不要求他們直接從內(nèi)容生產(chǎn)者108或內(nèi)容發(fā)布者110獲得內(nèi)容。
[0051]然而,內(nèi)容生產(chǎn)者108可能想防止未訂閱用戶或惡意實體獲得對其緩存內(nèi)容的訪問。在一些實施例中,在將內(nèi)容返回請求內(nèi)容的客戶端112之前,內(nèi)容生產(chǎn)者108可以加密內(nèi)容(例如媒體流片斷)和內(nèi)容的加密密鑰。此內(nèi)容和其解密密鑰然后可以沿著指向客戶端112的返回路徑緩存在內(nèi)容存儲上。然后,如果另一客戶端請求內(nèi)容,則此其它客戶端可以從內(nèi)容存儲獲得加密內(nèi)容,并且只有訂閱用戶能夠解密解密密鑰和內(nèi)容。
[0052]為此,內(nèi)容生產(chǎn)者108向作為付費訂閱者的用戶提供包括到內(nèi)容片斷和解密密鑰的鏈路的清單。清單還包括訪問控制規(guī)約(ACS),其規(guī)定正在使用哪個訪問控制方案來保護內(nèi)容,諸如基于廣播的加密、基于會話的加密、基于分組的加密或現(xiàn)在已知或以后開發(fā)的任何其它的加密協(xié)議的變形。此ACS可以規(guī)定集合的加密/解密算法,如何獲得集合的解密密鑰等。因此,內(nèi)容生產(chǎn)者108不需要為集合中的每個內(nèi)容對象傳播訪問控制方案。而是,集合的清單可以規(guī)定用于控制對集合中的每個內(nèi)容對象或流片斷進行訪問的必要信息。
[0053]在基于會話的加密方案中,只要當前與發(fā)布者110的會話是活動的,或者在一些變形中,只要客戶端裝置的用戶是內(nèi)容生產(chǎn)者108的有效訂閱者,例如客戶端112可以使用個人的解密密鑰來解密內(nèi)容?;跁挼募用軈f(xié)議可以使用特定于用戶會話的對稱密鑰加密內(nèi)容或其解密密鑰。當客戶端112建立與內(nèi)容發(fā)布者110的會話時(例如當發(fā)布對一項內(nèi)容的請求時),內(nèi)容發(fā)布者110可以返回包括使用會話密鑰加密的媒體流片斷列表或包括客戶端112可以使用的解密緩存的媒體流片斷的解密密鑰(使用會話密鑰加密的)的清單。然后,在使用內(nèi)容的解密密鑰之后,客戶端112可以從托管內(nèi)容片斷的CCN 102的任何內(nèi)容存儲或服務(wù)器獲得并解密所請求內(nèi)容的媒體流片斷。
[0054]在一些實施例中,訪問控制框架可以支持適合不同的訪問控制策略的任意類型的加密,并通過使用用于緩存和檢索加密內(nèi)容的網(wǎng)絡(luò)中緩存保持CCN內(nèi)容檢索的效率。例如,密鑰管理器(未顯示)可以發(fā)布用于內(nèi)容加密的對稱密鑰,并可以發(fā)布用于加密對稱密鑰的公-私鑰對。當內(nèi)容生產(chǎn)者108生成內(nèi)容時(例如或者根據(jù)需要或者通過從永久性存儲器讀數(shù)據(jù)),內(nèi)容生產(chǎn)者108向使用對稱密鑰加密內(nèi)容塊的內(nèi)容發(fā)布者110發(fā)送內(nèi)容,并通過CCN102發(fā)布加密的內(nèi)容對象。內(nèi)容生產(chǎn)者108的訪問策略管理器可以根據(jù)特定用戶的公鑰加密對稱密鑰,并且還通過網(wǎng)絡(luò)發(fā)布加密的對稱密鑰。沿CCN 102的任何內(nèi)容存儲可以在加密的內(nèi)容或加密的對稱密鑰通過CCN 102發(fā)布時,緩存加密的內(nèi)容或加密的對稱密鑰。
[0055]在一些實施例中,用戶的客戶端裝置112可以通過與內(nèi)容生產(chǎn)者108的安全信道獲得他的公-私鑰對。同樣,客戶端112可以通過CCN 102傳播興趣來通過CCN 102(例如從發(fā)布者110或CCN轉(zhuǎn)發(fā)器節(jié)點上的內(nèi)容存儲)獲得加密內(nèi)容和對稱密鑰,并且如果客戶端112具有來自生產(chǎn)者108的有效密鑰則解密對稱密鑰。在解密對稱密鑰之后,客戶端112可以使用對稱密鑰來解密內(nèi)容。盡管此示例包括以非集中方式工作的多個實體,但在一些實施例中,兩個或更多個這些實體可以在單臺機器上配置或者分布在CCN 102上的不同的網(wǎng)絡(luò)節(jié)點。
[0056]訪問控制框架通過使用對安全數(shù)據(jù)混合加密執(zhí)行加密訪問控制。具體地,內(nèi)容對象是以密碼隨機對稱密鑰(稱作隨機數(shù)密鑰(nonce key))加密的。隨機數(shù)密鑰則是使用另一種適合內(nèi)容生產(chǎn)者的期望訪問控制形式(例如廣播加密、基于屬性加密、RSA、基于身份的代理重加密等)加密算法加密的。隨機數(shù)密鑰針對主體加密,主體可以是個別消費者或個人團體。
[0057]清單中列出的各個內(nèi)容對象是以隨機數(shù)密鑰通過預(yù)定的加密算法(諸如AES-256-CTR)加密的。清單包括ListOfNames(名稱列表)字段,其包括加密的內(nèi)容對象的名稱,清單包括ListOfHashes(散列列表)字段,其包括加密的內(nèi)容對象的散列值。因此,獲得清單的客戶端可以順序地或同時傳播對加密的內(nèi)容對象組的興趣。清單的ACS字段提供解密加密的內(nèi)容對象所需的信息,諸如(加密的)隨機數(shù)密鑰的名稱、加密算法的參數(shù)等。
[0058]訪問控制框架通過另一種適合實現(xiàn)內(nèi)容生產(chǎn)者的期望的訪問控制結(jié)構(gòu)的預(yù)定加密算法對隨機數(shù)密鑰加密。可以解密加密的隨機數(shù)密鑰的密鑰在后面稱作解封裝密鑰。解封裝密鑰本身是加密的,使得只有授權(quán)主體(例如擁有或可以訪問適當?shù)乃接薪饷苊荑€的主體)可以解密解封裝密鑰。
[0059]例如,內(nèi)容生產(chǎn)者可以給每個主體i分配公-私鑰對(PK1,SK1),使得各個客戶端一開始就具有他們自己的主體密鑰對。通過公鑰密碼算法以PKj對SKi的加密由EncPKC(SKi,PKj)表示。因此,當主體分組X被授權(quán)時,針對X的封裝密鑰DKX以EncX(DKx,PKx)加密。用戶“A”然后可以通過只使用他們自己的私鑰SKa檢索密文Enc(SKx,PKA)和Enc(DKx,PKx)獲得解封裝密鑰DKx。
[0060]在一些實施例中,主體密鑰的集合可以是私鑰集合或密鑰鏈的一部分。例如,主體密鑰鏈分層可以以主私鑰為根,其用來用到合格葉子主體(leaf principal)i的路徑解密解封裝密鑰。如果主體j是主體分組i的成員,則主體i的加密私鑰可以包括于私鑰集中。這使主體j能使用其私鑰獲得主體i的私鑰,然后用來順序地解密分層中的其它私鑰,一直到主私鑰根。再次,此根私鑰然后用來解密解封裝密鑰。解封裝和主體密鑰之間的這種分離允許主體密鑰被離線分發(fā)或在頻帶外獲得。而且,私鑰集合是足夠靈活的,能夠?qū)崿F(xiàn)任何主體的復(fù)雜的訪問控制組分層。[0061 ] CCN 消息
[0062]圖2A圖解說明根據(jù)實施例的示例性CCN消息200。CCN消息200可以用來通過CCN生成任何類型的網(wǎng)絡(luò)消息,諸如興趣、內(nèi)容對象或清單。在一些實施例中,清單本身實現(xiàn)為一種類型的內(nèi)容對象。
[0063]CCN消息200可以包括消息標題、驗證數(shù)據(jù)和CCNMessage (CCN消息)字段206。消息標題可以包括F i xedHeader (固定標題)字段202、Opt1nalHeader (可選標題)字段204,他們分別可以提供關(guān)于消息結(jié)構(gòu)和轉(zhuǎn)發(fā)信息的信息。CCN消息字段206提供消息主體,其包括Name(名稱)212、Metadaga(元數(shù)據(jù))214和Payload(有效載荷)216(對于興趣和內(nèi)容對象消息兩者)。而且,驗證數(shù)據(jù)可以包括Val idat 1nAl gor i thm (驗證算法)字段208和Validat1nPayload(驗證有效載荷)字段210。驗證算法字段208可以包括數(shù)字簽名驗證信息(例如簽名算法、驗證算法CRC32C、RSA簽名等)。驗證有效載荷字段210可以包括簽名數(shù)據(jù)本身。
[0064]CCN興趣和內(nèi)容對象是兩種類型的CCN消息,但他們通過CCN網(wǎng)絡(luò)節(jié)點以不同方式處理。內(nèi)容對象是命名數(shù)據(jù)對象(NDO),他的有效載荷字段216包括發(fā)布的內(nèi)容,可以通過與其位置無關(guān)的CCN名稱定位和認證他。另一方面,興趣是由內(nèi)容消費者(例如客戶端)發(fā)布以請求NDO內(nèi)容對象的消息。興趣的名稱字段212可以包括期望內(nèi)容的名稱,有效載荷字段216可以包括與請求有關(guān)的任何附加信息。而且,興趣和內(nèi)容對象的元數(shù)據(jù)字段214可以包含引導(dǎo)如何處理興趣或內(nèi)容對象的不同的數(shù)據(jù)。
[0065]圖2B圖解說明根據(jù)實施例的CCN興趣消息的示例性元數(shù)據(jù)250。元數(shù)據(jù)250可以包括Key IdRestrict 1n (密鑰標識符限制)字段252、InterestLifetime (興趣生存期)字段254、<:0社611切1^6(^!^8111^8壯丨(^丨011(內(nèi)容對象散列限制)字段256和附加元數(shù)據(jù)字段258。
[0066]KeyId字段252和內(nèi)容對象散列限制字段256允許興趣消息規(guī)定控制內(nèi)容對象如何與興趣匹配的限制。例如,KeyId通過檢查用來簽名內(nèi)容對象的密鑰ID限制與特定的發(fā)布者的匹配,其中,KeyId值存儲在內(nèi)容對象的驗證有效載荷字段中。同樣,內(nèi)容對象散列限制字段256將有效的匹配內(nèi)容對象限制到自認證名稱與內(nèi)容對象散列限制字段256的值匹配的那些內(nèi)容對象。在一些實施例中,自認證名稱可以包括CCN消息字段、驗證算法字段和驗證有效載荷字段的SHA-256散列。
[0067]附加元數(shù)據(jù)字段258可以包括內(nèi)容生產(chǎn)者可以用來生成動態(tài)內(nèi)容的附加信息。在一些實施例中,CCN上的轉(zhuǎn)發(fā)器不在他們本地的PIT內(nèi)的附加元數(shù)據(jù)字段258中存儲數(shù)據(jù)。
[0068]圖2C圖解說明根據(jù)實施例的CCN內(nèi)容對象的示例性元數(shù)據(jù)270。元數(shù)據(jù)270可以包括ContentType (內(nèi)容類型)字段272,其規(guī)定由內(nèi)容對象攜帶的內(nèi)容的類型,諸如清單、文本、圖像、二進制大對象(blob)等。元數(shù)據(jù)270還可以包括PublishTime(發(fā)布時間)字段274,其規(guī)定發(fā)布有效載荷的數(shù)據(jù)的時間和日期;Creat1nTime (創(chuàng)建時間)字段276,其規(guī)定創(chuàng)建內(nèi)容對象的時間;Expirat1nTime(到期時間)字段278,其規(guī)定內(nèi)容對象的數(shù)據(jù)到期的時間。而且,元數(shù)據(jù)270可以包括附加元數(shù)據(jù)字段280,其可以包括不控制內(nèi)容對象如何沿網(wǎng)絡(luò)轉(zhuǎn)發(fā)的關(guān)于內(nèi)容對象或有效載荷的任何元數(shù)據(jù)。
[0069]清單和訪問控制規(guī)約(ACS)
[0070]清單可以包括規(guī)定用來加密一項內(nèi)容的加密算法的ACS。例如,一項內(nèi)容可以使用AES密鑰加密,AES密鑰可以包括隨機生成的隨機數(shù)密鑰。加密內(nèi)容然后可以通過網(wǎng)絡(luò)分發(fā),授權(quán)客戶端可以通過使用ACS中規(guī)定的解密算法對隨機數(shù)密鑰解密來訪問加密的隨機數(shù)密鑰。一旦客戶端解密隨機數(shù)密鑰,客戶端可以使用隨機數(shù)密鑰來解密加密內(nèi)容。
[0071]在一些實施例中,清單可以列出使用非相同集合的加密方案加密的內(nèi)容對象集合。清單可以包括多個ACS對象,使得每個ACS可以用來解密清單的內(nèi)容對象的不同子集。在一些實施例中,清單中的每個內(nèi)容對象表項可以規(guī)定清單中的ACS的引用。替代性地,每個ACS可以識別哪些內(nèi)容對象是可以通過ACS中規(guī)定的解密方案解密的。例如,每個ACS可以映射到一組內(nèi)容對象(例如由內(nèi)容對象的名稱前綴標識的)。舉另一示例,每個ACS和內(nèi)容對象表項可以包括將ACS解密方案和一個或多個內(nèi)容對象綁定在一起的方案標識符。
[0072]圖3A圖解說明根據(jù)實施例的示例性清單300。清單300可以包括Name(名稱)字段302、Metadata(元數(shù)據(jù))字段304和Payload(有效載荷)字段306。名稱字段302可以規(guī)定清單300的名稱,諸如受保護的數(shù)據(jù)集合的名稱。此受保護的數(shù)據(jù)集合可以包括加密的內(nèi)容對象、加密的解密密鑰和規(guī)定客戶端可以如何獲得數(shù)據(jù)集合的一個或多個ACS對象。因此,元數(shù)據(jù)304可以包括關(guān)于元數(shù)據(jù)300本身的信息,有效載荷306可以包括關(guān)于內(nèi)容對象、密鑰和ACS對象的信息。
[0073]如之前提到的,清單300定義為內(nèi)容對象的類型。因此,清單300的元數(shù)據(jù)308可以包括值為“Manifest(清單)”的ContentType(內(nèi)容類型)字段310。元數(shù)據(jù)308還可以包括其它內(nèi)容對象元數(shù)據(jù)字段,諸如發(fā)布時間字段312、創(chuàng)建時間字段314、到期時間字段316和附加的兀數(shù)據(jù)部分318。
[0074]清單300的有效載荷306包括內(nèi)容對象的邏輯集合的信息。在一些實施例中,有效載荷306通過包括集合的內(nèi)容對象的元數(shù)據(jù)信息并包括集合的組成內(nèi)容對象的基于散列的名稱的排序列表來描述邏輯集合。這種格式使客戶端能夠針對有效載荷306中列出的各個內(nèi)容對象,發(fā)布具有自認證名稱的興趣。
[0075]例如,有效載荷306可以包括一個或多個有效載荷部分320,每個有效載荷部分320可以包括ListOfNames (名稱列表)字段324和ListOfHashes(散列列表)字段326,他們一起提供集合中內(nèi)容對象的排序名稱。名稱列表字段324可以包括一個或多個內(nèi)容對象的CCN名稱,散列列表字段326可以包括一個或多個內(nèi)容對象的內(nèi)容對象散列值(例如自認證名稱)。
[0076]有效載荷部分320還可以包括ACS字段322。如果在ACS字段322中,ACS字段存在,則ACS提供對相同部分320中列出的內(nèi)容對象的至少子集的訪問控制信息。ACS可以包括獲得并解密隨機數(shù)密鑰并獲得對加密的內(nèi)容對象的訪問所需的信息。在一些實施例中,有效載荷部分320可以包括ACS對象或ACS對象的引用。例如,有效載荷306可以包括ACS鏈路,諸如包括實際的ACS對象的內(nèi)容對象的CCN名稱。這允許清單300在不消耗有效載荷306中的大量數(shù)據(jù)的情況下包括多個復(fù)雜的ACS對象。
[0077]而且,清單300可以包括或引用多個ACS對象,使得每個ACS可以對應(yīng)于清單300中列出的內(nèi)容對象的子集。例如,清單有效載荷306可以包括多個有效載荷部分320(例如圖示的星號指示零或更多的實例可以存在),使得每個有效載荷部分320包括(或引用)ACS和其相應(yīng)的內(nèi)容對象子集。因此,清單元數(shù)據(jù)308可以包括多個名稱列表和多個散列列表字段,每個ACS—個列表。
[0078]作為一個替代性實現(xiàn),清單元數(shù)據(jù)308可以包括一個名稱列表部分324、一個散列列表部分326和包括多個ACS表項的一個ACS部分322。部分322中的每個ACS可以具有關(guān)聯(lián)的ACS標識符,部分324或部分326的每個名稱或散列表項具有規(guī)定哪個ACS對應(yīng)于名稱或散列表項的關(guān)聯(lián)的ACS標識符。因此,當取出名稱列表324中引用的內(nèi)容對象時,客戶端可以使用相應(yīng)的ACS標識符來獲得ACS部分322列出的相應(yīng)的ACS。
[0079]圖3B圖解說明根據(jù)實施例的示例性名稱列表部分350和示例性散列列表部分360。名稱列表部分350包括一個或多個NameEntry (名稱表項)部分352的列表。名稱表項部分352包括MediaName(媒體名稱)字段356,其規(guī)定一項數(shù)據(jù)的內(nèi)容名稱前綴,并且名稱表項部分352可以包括StartChunk(開始塊)字段354,其規(guī)定一項數(shù)據(jù)的第一塊號(如果數(shù)據(jù)被分割成塊的集合)。散列列表部分360可以包括一個或多個HashEntry(散列表項)部分362的列表。散列表項部分362可以包括NameIndex(名稱索引)字段364,其通過與名稱列表字段350的表項對應(yīng)的數(shù)字標識內(nèi)容對象,散列表項部分362包括Hash (散列)字段366,其包括內(nèi)容對象的內(nèi)容對象散列(C0H)值。
[0080]例如,考慮名稱列表350,其第一名稱表項部分(由名稱索引標識符“I”標識)包括:[0081 ] {StartChunk = 3 ,MediaName = Ici:/parc/obj}
[0082]并考慮散列列表部分360,其第一和第二表項包括:
[0083]{NameIndex = I,Hash = 0xl23};和
[0084]{Namelndex = I,Hash = 0xABC} ο
[0085]因此,名稱列表350中的各個名稱表項部分352可以對應(yīng)于多個內(nèi)容對象(每個內(nèi)容對象攜帶不同的塊)。同樣,散列列表360的前兩個散列表項部分可以對應(yīng)于與名稱表項關(guān)聯(lián)的兩個塊。第一散列表項代表名稱為Ic1:/parc/obj/chunk = 3、散列摘要為0x123的內(nèi)容對象塊,第二散列表項代表名稱為lc1:/parC/obj/Chunk = 4、散列摘要為OxABC的內(nèi)容對象塊。
[0086]因此,清單可以降低檢索片斷數(shù)據(jù)包括的總開銷,可以允許內(nèi)容生產(chǎn)者或內(nèi)容消費者避免必須分別簽名或驗證集合中的每個個別內(nèi)容對象。例如,客戶端可以使用名稱列表和散列列表表項來通過具有自認證名稱的興趣獲得每個個別內(nèi)容對象,并且可以通過在從接收的內(nèi)容對象計算的散列摘要和他們對應(yīng)的散列表項部分之間執(zhí)行二進制等式檢查驗證它接收的內(nèi)容對象??蛻舳酥恍枰獙γ總€清單執(zhí)行一個加密驗證操作,以驗證清單中列出的內(nèi)容對象的集合。
[0087]在一些實施例中,清單集合可以組織成清單樹,其中,一個清單內(nèi)的組成內(nèi)容對象的名稱本身是另一清單(例如子清單)的名稱。如果內(nèi)容消費者可以驗證根清單的簽名是關(guān)聯(lián)密鑰且信任關(guān)聯(lián)密鑰,則內(nèi)容消費者還可以信任根清單中(直接或間接)包括的通過他們的自認證名稱(例如COH值)的性質(zhì)信任的其它內(nèi)容對象和清單。這使內(nèi)容消費者避免必須對可以通過他們的自認證名稱驗證的這些引用的內(nèi)容對象和清單執(zhí)行加密驗證。
[0088]圖4圖解說明根據(jù)實施例的示例性訪問控制規(guī)約(ACS)400。ACS400可以包括AccessControlConf igurat 1n(訪問控制配置)字段402和 Encryp t1nAlgori thm(加密算法)字段404。加密算法字段404規(guī)定曾用來保護集合數(shù)據(jù)的加密/解密算法,用于加密/解密算法的參數(shù)用來對清單中列出的內(nèi)容對象加密。例如,當使用JavaScript對象表示(JavaScript Object Notat1n,JS0N)時,加密算法值被編碼為:
[0089]{{encrypt1nAlgorithm:AES-128-CTR,initialCounter:***}}。
[0090]訪問控制配置字段402描述執(zhí)行加密算法字段404中規(guī)定的解密算法所需的信息。具體地,訪問控制配置字段402包括Access Control (訪問控制字段)406,其規(guī)定處理Encrypt1nAlgorithm(加密算法)字段404中使用的對稱密鑰的訪問控制方案的類型。例如,當使用JSON編碼時,訪問控制字段406可以包括:
[0091]{type:NonceKey,encapsulat1nAlgorithm:Naor-Pinkas-BE,...},
[0092]其中,“type:NonceKey”指示對內(nèi)容對象的訪問控制是通過隨機數(shù)密鑰的封裝執(zhí)行的,“encapsulat1nAlgorithm:Naor-Pinkas_BE” 指不Noar-Pinkas廣播加密算法用來封裝隨機數(shù)密鑰。
[0093]注意,如果在訪問控制配置字段402中規(guī)定封裝算法,則算法施加到主體密鑰鏈分層中的所有節(jié)點。同樣,如果訪問控制策略不包括執(zhí)行隨機數(shù)密鑰的封裝,則“type(類型)”可以規(guī)定執(zhí)行訪問控制的另一種方法。當客戶端發(fā)起解密操作以解密內(nèi)容對象時,客戶端讀訪問控制字段406以確定需要哪種類型的密碼原語。
[0094]訪問控制配置字段402還可以包括NonceKeyName(隨機數(shù)密鑰名稱)字段408和NonceKeyID(隨機數(shù)密鑰標識符)字段410,客戶端可以使用這兩個字段生成用于獲得加密的隨機數(shù)密鑰的興趣。隨機數(shù)密鑰名稱字段408規(guī)定封裝的隨機數(shù)密鑰的CCN名稱??蛻舳丝梢允褂么薈CN名稱來生成并傳播對(若干)解封裝密鑰的興趣。在一些實施例中,隨機數(shù)密鑰名稱字段408可以包括別名,他是用來代表隨機數(shù)密鑰名稱字段408中狀態(tài)相關(guān)的名稱的名稱組成的變量。例如,考慮CCN名稱:
[0095]uIci:/parc/ob j/noncekey/<principal private key hash>,,
[0096]其中,〈principal private key hash〉包括主體特定值(例如合格主體的私鑰的散列值)的別名??蛻舳丝梢允褂秒S機數(shù)密鑰名稱字段408中的別名來查詢用主體特定的值加密的隨機數(shù)密鑰,其中,主體特定值的所需類型由別名本身和/或訪問控制字段406描述。
[0097]隨機數(shù)密鑰標識符字段410規(guī)定(非加密的)隨機數(shù)密鑰的散列值。這使得人們可以容易地驗證解密的隨機數(shù)密鑰的完整性。在一些實施例中,使用適當?shù)姆罌_突散列函數(shù)(例如SHA-256)保持隨機數(shù)密鑰的完整性和安全性(沖突只以可忽略的概率出現(xiàn)),原因是摘要包括于在檢查隨機數(shù)密鑰標識符字段410之前驗證的清單數(shù)字簽名輸入中。
[0098]同樣,一旦客戶端獲得加密的隨機數(shù)密鑰(例如使用隨機數(shù)密鑰名稱字段408),客戶端可以讀KeychainLink (密鑰鏈鏈路)字段412和Decapsulat 1nKeyLink(解封裝密鑰鏈路)字段414(其可以存儲密鑰鏈和解封裝密鑰的名稱或散列值),以沿著加密密鑰節(jié)點鏈,直到獲得期望的隨機數(shù)密鑰。密鑰鏈鏈路字段412可以規(guī)定到另一個清單(或清單分層)的鏈路,也稱作密鑰鏈?!發(fā)ink(鏈路)”可以包括Name(名稱)字段418,其可以規(guī)定清單的名稱,并且可以包括KeyldRestrict1n(密鑰標識符限制)字段420,其包括至少清單簽名者的密鑰標識符(例如到密鑰鏈的內(nèi)容對象的密鑰標識符)。
[0099]密鑰鏈可以對應(yīng)于對于一項內(nèi)容解密解封裝密鑰所需的主私鑰(例如加密密鑰)的排序列表。當密鑰鏈封裝于清單(后面稱作密鑰鏈清單)中時,客戶端可以通過解析密鑰鏈的清單的名稱/散列列表,(例如并行地)檢索解密解封裝密鑰所需的密鑰鏈的密鑰。密鑰鏈清單中的密鑰鏈鏈路字段還可以有提供個性化到特定用戶的密鑰鏈的別名。
[0100]注意,當密鑰鏈清單不規(guī)定主清單的封裝算法字段時,密鑰鏈清單的ACS字段可以為每個主體密鑰鏈分層節(jié)點規(guī)定加密算法字段。例如,如果密鑰鏈包含三個密鑰,則密鑰鏈的ACS在ACS的加密算法字段404中有三個排序的封裝算法字段。替代性地,算法的類型可以包括于從密鑰鏈返回的密鑰內(nèi)容對象中。
[Ο?Ο? ] Decapsulat1nKeyLink(解封裝密鑰鏈路)字段414可以規(guī)定到加密的解密密鑰的鏈路。例如,鏈路可以包括規(guī)定加密的解密密鑰名稱的Name (名稱)字段422和規(guī)定簽名者的密鑰ID(例如到解封裝密鑰的內(nèi)容對象的KeyId)的KeyldRestrict1n(密鑰標識符限制)字段424 ο加密的解封裝密鑰的名稱可以包括給每個合格主體分配個性化的解封裝密鑰的別名。注意,當客戶端已經(jīng)存儲解封裝密鑰并成功地驗證解封裝密鑰時,客戶端可以避免檢索和遍歷密鑰鏈。
[0102]在一些實施例中,客戶端可以使用ACS 400的密鑰鏈鏈路412獲得鏈中的第一密鑰節(jié)點,并使用本地解密密鑰解密第一密鑰節(jié)點,以獲得鏈中的第二密鑰節(jié)點的另一密鑰鏈鏈路和解密密鑰??蛻舳俗罱K到達由解封裝密鑰鏈路414標識的加密密鑰節(jié)點。由解封裝密鑰鏈路414標識的此加密密鑰節(jié)點是密鑰鏈中的最后一個節(jié)點,包括可以用來解密目標隨機數(shù)密鑰的“解封裝密鑰”??蛻舳私饷苊荑€鏈中的此最后一個密鑰節(jié)點,以獲得解封裝密鑰,并使用解封裝密鑰來解密客戶端已經(jīng)獲得的加密隨機數(shù)密鑰。一旦客戶端獲得解密的隨機數(shù)密鑰,客戶端可以使用此隨機數(shù)密鑰來解密清單中列出的所有內(nèi)容對象或內(nèi)容對象的子集。
[0103]在一些實施例中,訪問控制配置402可以包括一個或多個附加子字段的集合416,其描述現(xiàn)在已知或以后開發(fā)的任何其它訪問控制方案的其它屬性。例如,子字段416可以包括可以用來執(zhí)行與TLS類似的一對一訪問控制方案(例如通過包括發(fā)布者的公鑰)或執(zhí)行現(xiàn)在已知或以后開發(fā)的任何其它訪問控制方案的附加參數(shù)。
[0104]基于清單的ACS獲得數(shù)據(jù)
[0105]圖5呈現(xiàn)根據(jù)實施例圖解說明基于訪問控制規(guī)約獲得并解密數(shù)據(jù)集合的方法500的流程圖。操作中,客戶端裝置可以從用戶接收對數(shù)據(jù)或數(shù)據(jù)集合的請求(操作502),并傳播對數(shù)據(jù)集合的興趣(操作504)。在預(yù)定的時段之后或在接收內(nèi)容對象之后,客戶端確定它是否已經(jīng)接收滿足興趣的內(nèi)容對象(操作506)。如果沒有,則客戶端可以返回操作506。
[0106]當客戶端接收滿足興趣的內(nèi)容對象時,客戶端繼續(xù)確定內(nèi)容對象是否是清單(操作508)。如果不是,則客戶端可以存儲或其它使用內(nèi)容對象(操作510)。不過,如果內(nèi)容對象是清單,則客戶端分析清單以從清單獲得訪問控制規(guī)約(ACS)(操作512),并根據(jù)ACS獲得數(shù)據(jù)集合的保護內(nèi)容對象(操作514)。客戶端然后根據(jù)ACS解密內(nèi)容對象(操作516),并繼續(xù)存儲或另外使用內(nèi)容對象(操作510)。
[0107]圖6呈現(xiàn)根據(jù)實施例圖解說明使用ACS解密清單中列出的內(nèi)容對象的方法600的流程圖。操作中,客戶端裝置從清單獲得內(nèi)容對象名稱的列表(操作602),諸如從名稱列表字段,從清單的有效載荷。客戶端從清單中選擇內(nèi)容對象名稱(操作604),通過傳播包括內(nèi)容對象名稱的CCN興趣通過CCN獲得內(nèi)容對象(操作606)。
[0108]客戶端然后確定與內(nèi)容對象關(guān)聯(lián)的ACS(操作608),并使用ACS中規(guī)定的解密協(xié)議解密內(nèi)容對象(操作610)??蛻舳巳缓蟠鎯蛄硗馐褂媒饷艿膬?nèi)容對象(操作612)。客戶端然后確定它是否需要獲得清單中列出的另一內(nèi)容對象(操作614),如果需要,則返回操作604,以從清單中選擇另一內(nèi)容對象名稱。
[0109]遍歷密鑰鏈以檢索解封裝密鑰
[0110]圖7呈現(xiàn)根據(jù)實施例圖解說明使用ACS中規(guī)定的密鑰鏈來解密數(shù)據(jù)集合的內(nèi)容對象的方法700的流程圖。操作中,客戶端裝置可以獲得與加密的內(nèi)容對象對應(yīng)的加密密鑰(操作702),諸如通過傳播對ACS的訪問控制配置字段的隨機數(shù)密鑰名稱子字段中標識的隨機數(shù)密鑰的興趣。
[0111]客戶端然后通過沿著由ACS的密鑰鏈鏈路字段規(guī)定的密鑰鏈,獲得解封裝密鑰以解密加密密鑰(操作704)??蛻舳巳缓笫褂媒夥庋b密鑰解密加密密鑰,以獲得內(nèi)容對象的解密密鑰(操作706),使用解密密鑰解密加密的內(nèi)容對象(操作708)。
[0112]別忘記密鑰鏈是提供用戶(主體)所需的私鑰的排序列表的清單。在一些實施例中,密鑰鏈清單在其ACS的字段中具有下列值:
[0113]籲AccessControl: {type:Keychain},訪問控制:{類型:密鑰鏈}
[0114]?Encrypt1nAlgorithm(加密算法):加密算法具有用來加密清單中列出的密鑰的參數(shù),諸如RSA-1024。
[0115]同樣,密鑰鏈清單的名稱列表表項提供用戶所需的加密的解密密鑰的名稱的排序列表。
[0116]例如,考慮有資格訪問清單中列出的內(nèi)容對象的分組Z。用戶B可以通過檢索引導(dǎo)到分組Z的所有密鑰獲得對內(nèi)容對象的訪問。例如,用戶B需要檢索他密鑰鏈原型(ancestor)的加密私鑰(解密密鑰)EncPKC( SKx,PKB)和EncPKC(SKz,PKx)。用戶B還需要分配給主體Z的加密解封裝密鑰EncPKC(DKz,PKz)。為了檢索這些密鑰,用戶B首先通過使用ACS訪問控制配置字段的密鑰鏈鏈路生成興趣,發(fā)布對其私鑰SKb個性化的密鑰鏈的興趣。在一些實施例中,KeychainLink可以包括用戶特定的認證器的別名,諸如CCN名稱:
[0117]uIci: /pare/ob j/key-chain/<user private key hash>,,。
[0118]在上面的CCN名稱中,名稱片斷〈principal private key hash〉包括用戶特定的值(例如合格用戶的私鑰的散列值)的別名。
[0119]然后在傳播興趣之后,用戶B獲得名稱列表字段和散列列表字段。名稱列表字段包括具有排序密鑰列表的密鑰鏈:
[0120](StartChunk = I ,MediaName = name of EncPKC(SKx,PKb)}
[0121](StartChunk = I ,MediaName = name of EncPKC(SKz,PKx)}
[0122](StartChunk = I ,MediaName = name of EncPKC(DKz,PKz)},
[0123]ListOfHashes字段列舉密鑰鏈的分塊內(nèi)容對象的散列值。此時,用戶B從葉子開始,檢索加密密鑰的內(nèi)容對象,順序解密密鑰。如果用戶B的私鑰可以解密隨機數(shù)密鑰,則密鑰鏈中的密鑰列表是空的。
[0124]只要密鑰鏈具有有效簽名,則密鑰鏈中所列密鑰的完整性和安全性質(zhì)可以被驗證和保證。同樣,由于客戶端可以獲得基于密鑰鏈清單中的名稱列表字段解密隨機數(shù)密鑰所需的解密密鑰集合,客戶端可以并行地發(fā)布對多個密鑰的興趣,這允許客戶端最大化可用的網(wǎng)絡(luò)帶寬的使用。
[0125]別忘記在密鑰鏈架構(gòu)的頂層可以實現(xiàn)至少兩個訪問控制方案:基于分組的訪問控制方案和廣播訪問控制方案。在存在主體分層的基于分組的訪問控制方案中,任何解封裝密鑰的封裝算法不一定耦合到用來加密密鑰鏈中的其它密鑰的算法。例如,RSA可以用來加密密鑰鏈中的所有非根節(jié)點,不同的算法可以用來解密根密鑰。這允許不同的加密算法施加到密鑰鏈中特定的根到葉子路徑的每一層。ACS規(guī)定哪一算法施加到樹中的每一層,使得消費者可以在遍歷分層路徑時施加適當?shù)慕饷芩惴?。此解耦合允許任何基于分組的訪問控制策略被強加于基于分組的主體分層。
[0126]同樣,注意在沒有主體分層的一些訪問控制方案中,諸如“扁平的”基于廣播的訪問控制中,主體的公/私鑰對特定于廣播加密算法。因此,隨機數(shù)密鑰是以分組公共廣播密鑰加密的,分組中的每個合格主體的私鑰可以用來解密此解封裝密鑰。
[0127]基于分組的訪問控制
[0128]內(nèi)容發(fā)布者可以加密并通過CCN網(wǎng)絡(luò)發(fā)布命名內(nèi)容對象,還可以加密(封裝)用來加密每個隨機數(shù)密鑰的隨機數(shù)密鑰。在基于分組的訪問控制方案中,內(nèi)容發(fā)布者僅通過生成為不同的主體分組加密的隨機數(shù)密鑰的多個(不同的)密文,允許特定分組的用戶(例如主體)訪問內(nèi)容。然后,每個分組中的授權(quán)客戶端可以通過遍歷密鑰鏈解密密文。這意味著合格主體的公鑰被直接用來加密隨機數(shù)密鑰,因此解封裝密鑰是合格主體的私鑰。
[0129]已發(fā)布內(nèi)容在CCN網(wǎng)絡(luò)拓撲上從內(nèi)容發(fā)布者通過遍歷核心網(wǎng)絡(luò)和互聯(lián)網(wǎng)服務(wù)提供節(jié)點(CCN路由器)流向各個消費者,任何CCN節(jié)點可以在內(nèi)容從生產(chǎn)者流向消費者時緩存內(nèi)容。授權(quán)客戶端已經(jīng)被分配其公-私鑰對以在遍歷密鑰鏈的主體分層時使用。這些密鑰可以離線或者通過與內(nèi)容發(fā)布者的安全會話分發(fā)。
[0130]客戶端可以通過發(fā)布對具有與內(nèi)容關(guān)聯(lián)的名稱的清單的興趣,獲得一項內(nèi)容。清單可以包括基于分組的ACS,其命令客戶端如何獲得構(gòu)成內(nèi)容的內(nèi)容對象,以及用于解密內(nèi)容對象的隨機數(shù)密鑰。舉一個示例,數(shù)據(jù)集合的名稱具有CCN前綴“l(fā)e1: /parc/GE/”,密鑰的封裝算法是使用RSA加密算法實現(xiàn)的,用1024位密鑰進行加密?;诜纸M的ACS可以具有下列配置:
[0131]籲AccessControl={type:NonceKey,
[0132]encapsulat1nAlgorithm:GroupBased-RSA-1024,...}
[0133]此字段可以包括與封裝算法相關(guān)的任何參數(shù),諸如主體的私鑰的加密算法。
[0134]#NonceKeyName = Ic1:/parc/GE/NonceKey/<principal private key hash〉
[0135]以合格主體的公鑰加密的隨機數(shù)密鑰的名稱,包括特定于每個合格主體的別名。
[0136]籲NonceKeyId = Ox********
[0137](非加密)隨機數(shù)密鑰的散列值。
[0138]籲KeychainLink:到密鑰鏈的鏈路。鏈路可以包括子字段:
[0139]-Name = Ic1:/parc/GE/Keychain/<user private key hash>
[0140]密鑰鏈的名稱,包括用戶特定值的別名。
[0141 ] -KeyIdRestrict1n = Ox********
[0142]對于密鑰鏈,簽名者的密鑰標識符。
[0143]?Decapsulat1nKeyEink:到加密的解封裝密鑰的鏈路。鏈路可以包括子字段“Name” 和 “Key I dRe s tr i c t i on:,,
[0144]-Name=Ici:/parc/GE/PrincipalPrivateKey/〈principal
[0145]以其成員的公鑰加密的解封裝密鑰的名稱(即合格主體的私鑰),包括特定于合格主體和其成員的別名。
[0146]-KeyIdRestrict1n = Ox********
[0147]對于加密的解封裝密鑰,簽名者的密鑰標識符。
[0148]在一些實施例中,因為合格主體的私鑰可以是解封裝密鑰,通過使用特定于合格主體和他們的成員的一些適當別名值,解封裝密鑰鏈路字段可以用他們的密文的名稱填充。
[0149]同樣,ACS的加密算法字段可以描述用來加密清單中列出的內(nèi)容對象的加密算法:
[0150]籲Encrypt1nAlgorithm={encrypt1nAlgorithm:AES-128-CTR,
[0151 ] initialCounter:Ox林林林林,...}。
[0152]注意,當客戶端不用檢查客戶端的密鑰存儲是否具有用于訪問控制的解封裝密鑰就可以檢索密鑰鏈時,ACS中的訪問控制配置字段的解封裝密鑰鏈路字段可以是空的。
[0153]廣播訪問控制
[0154]在廣播訪問控制中,內(nèi)容發(fā)布者可以通過以隨機數(shù)密鑰加密內(nèi)容對象,使得特定的主體集合(內(nèi)容消費者或客戶端)有資格訪問內(nèi)容對象的集合。內(nèi)容發(fā)布者使用廣播加密用分組特定(主體特定)的密鑰封裝隨機數(shù)密鑰。有資格解密解封裝密鑰的每個私鑰與合格的主體關(guān)聯(lián)。
[0155]與基于分組的加密類似,客戶端可以通過發(fā)布對具有與內(nèi)容關(guān)聯(lián)的名稱的清單的興趣獲得一項內(nèi)容。舉一個示例,由內(nèi)容發(fā)布者生成的內(nèi)容對象具有CCN前綴為“l(fā)e1:/parc/BE/”的名稱,隨機數(shù)密鑰的解封裝算法是使用Naor-Pinkas廣播加密算法實現(xiàn)的。基于廣播的ACS可以具有以下配置。
[0?5?] ACS的加密算法(Encrypt1nAlgorithm)字段可以包括描述用來加密清單中列出的內(nèi)容對象的加密算法。ACS的訪問控制配置(AccessControlConf igurat 1n) (ACC)字段可以具有設(shè)置:
[0157]籲AccessControl={type:NonceKey,
[0158]encapsulat1nAlgorithm:Naor-Pinkas-BE,...}
[0159]此字段可以包括與[28]的加密相關(guān)的任何參數(shù)。
[0160]籲NonceKeyName= Ici: /parc/BE/NonceKey:
[0161]通過廣播加密[28]加密的隨機數(shù)密鑰的名稱,其中,它對所有合格的主體是共同的,因此不包含別名。
[0162]籲NonceKeyId = Ox********
[0163]籲KeychainLink
[0164]-Name = Ic1:/parc/BE/Keychain/<user private key hash>
[0165]-KeyIdRestrict1n = Ox********
[0166]籲Decapsulat1nKeyLink
[0167]-Name = Ic1:/parc/BE/Decapsulat1nKey/<principal private key hash>:
[0168](加密的)解封裝密鑰的名稱,包括特定于每個合格主體的別名。
[0169]-KeyIdRestrict1n = Ox********
[0170]端對端訪問控制
[0171]別忘記在基于分組或廣播訪問控制方案中,發(fā)布者使用唯一的隨機數(shù)密鑰加密內(nèi)容。然而,在這些方案中,假設(shè)每個客戶端具有公-私鑰對作為個別主體。然而,如果中央密鑰管理器要通過網(wǎng)絡(luò)發(fā)布或證明客戶端公-私鑰對,則中央密鑰管理器需要安全地將每個密鑰對發(fā)送到每個客戶端(主體)。在一些實施例中,與TLS會話類似,客戶端可以通過CCN建立與目標實體(例如中央密鑰管理器或發(fā)布者)的安全端對端通信會話。此安全的端對端會話在后文稱作安全會話或安全會話實例。
[0172]圖8呈現(xiàn)根據(jù)實施例圖解說明基于清單中的ACS建立安全的端對端會話的方法800的流程圖。操作中,客戶端裝置可以獲得數(shù)據(jù)集合的初始清單(操作802)。此初始清單由內(nèi)容發(fā)布者創(chuàng)建,包括為與發(fā)布者的安全會話配置的ACS,具有空的名稱列表(ListOfNames)和散列列表(ListOfHashes)??蛻舳朔治龀跏记鍐沃械腁CS,以獲得與發(fā)布者關(guān)聯(lián)的公鑰(操作804),使用公鑰來啟動設(shè)置協(xié)議以啟動與發(fā)布者的新安全會話。
[0173]在啟動會話的設(shè)置階段,客戶端為發(fā)布者生成臨時密鑰(操作806),使用發(fā)布者的公鑰加密臨時密鑰(操作808)??蛻舳巳缓鬄榘l(fā)布者傳播設(shè)置興趣消息(操作810),使得設(shè)置興趣消息包括用來在用戶和發(fā)布者之間共享隨機會話密鑰的加密臨時密鑰。
[0174]響應(yīng)于設(shè)置興趣,發(fā)布者生成并返回內(nèi)容對象,這稱作設(shè)置內(nèi)容對象,其包括新的隨機對稱會話密鑰和會話標識符,兩者都是由設(shè)置興趣中提供的臨時密鑰加密的。設(shè)置內(nèi)容對象還包括客戶端可以用來驗證會話密鑰是否正確地在用戶和發(fā)布者之間共享的數(shù)據(jù)。例如,驗證數(shù)據(jù)可以包括通過級連臨時密鑰和會話密鑰計算的簽名。
[0175]客戶端然后接收設(shè)置內(nèi)容對象(操作812),并獲得針對與發(fā)布者的會話的會話密鑰和會話標識符。當客戶端使用內(nèi)容對象中的驗證數(shù)據(jù)來驗證會話密鑰時,設(shè)置階段完成。
[0176]在設(shè)置階段后,客戶端生成并為發(fā)布者傳播完成興趣消息(操作814)。完成興趣消息的名稱包括對于發(fā)布者的CCN名稱如綴,完成興趣消息包括附加到興趣的名稱或在興趣的有效載荷部分中的會話標識符。發(fā)布者通過將完成內(nèi)容對象返回來進行響應(yīng)以完成建立會話。完成內(nèi)容對象可以包括被稱作會話中清單的清單,他對用戶是個性化的。會話中清單包括以會話密鑰加密的ACS和內(nèi)容對象的列表??蛻舳私邮瞻〞捴星鍐蔚耐瓿蓛?nèi)容對象(操作816)。類似于通過對稱密鑰保護的TLS類型的安全信道,客戶端可以使用客戶端的會話密鑰解密加密的內(nèi)容對象。
[0177]在一些實施例中,如果發(fā)布者要求在初始設(shè)置階段之后的客戶端認證,則客戶端可以繼續(xù)與發(fā)布者的恢復(fù)階段??蛻舳送ㄟ^CCN為發(fā)布者傳播恢復(fù)興趣,使得恢復(fù)興趣包括客戶端的公鑰證書。然后,響應(yīng)于傳播恢復(fù)興趣,客戶端接收恢復(fù)內(nèi)容對象,恢復(fù)內(nèi)容對象包括發(fā)布者對客戶端認證的認證響應(yīng)。例如,認證響應(yīng)可以包括指示發(fā)布者已經(jīng)成功地驗證客戶端的身份的ACK消息,或者可以包括指示發(fā)布者沒有成功驗證客戶端的身份的NACK消息。發(fā)布者還可以通過重新使用相同的會話標識符和會話密鑰,使用恢復(fù)階段來刷新超時會話。
[0178]在一些實施例中,客戶端或發(fā)布者可以使用安全會話實例來引導(dǎo)其它訪問控制方案,諸如基于分組的訪問控制方案或廣播訪問控制方案。
[0179]安全會話數(shù)據(jù)對象
[0180]以下數(shù)據(jù)對象提供在安全會話的實例化過程中使用的興趣和內(nèi)容對象的詳細配置的示例。
[0181 ]初始清單:安全會話的初始清單包含ACS,ACS具有如在其它訪問控制實例中啟動檢索訪問控制內(nèi)容所需的信息。ACS中的訪問控制配置字段的子字段可以具有以下值:
[0182] #AccessControl = {Type:SecureSess1n,Status:1nitiat1n,Sess1nId:Null}
[0183]籲SetupLink:到設(shè)置內(nèi)容對象的鏈路。
[0184]-Name:設(shè)置內(nèi)容對象的名稱,aSecureSess1n:State”字段值為“Task: Setup andNonce:〈nonce〉”,其中,〈nonce〉是隨機數(shù)值的別名。例如,Name字段可以包括CCN名稱:
[0185]“l(fā)ei:/parc/SecureSess1n:State = {Task:Setup,Nonce:<nonce>}.,,
[0186]-KeyId:簽名者的密鑰標識符。
[0187]籲FinishLink:到完成內(nèi)容對象的鏈路。
[0?88] -Name:完成內(nèi)容對象的名稱(例如會話中清單),aSecureSess1n: State”字段值為“Task:Finish”和“Sess1nld:〈sess1n id>”,其中,〈sess1n id>是會話標識符的別名。例如,Name字段可以包括CCN名稱:
[0189]“Ici:/parc/SecureSess1n:State ={Task:Finish,Sess1nId:〈sess1n id>}.,,
[0190]-KeyId:簽名者的密鑰標識符。
[0191 ]與通過CCN訪問控制架構(gòu)的基于隨機數(shù)密鑰的方案不同,ACS的加密算法規(guī)定一個或多個加密算法,其具有在內(nèi)容發(fā)布者上是可用的參數(shù)。字段可以以JSON編碼,諸如:
[0192]{{encrypt1nAlgorithm:AES-128-CTR,initialCounter:…},
[0193]{encrypt1nAlgorithm:AES-256-CTR,initialCounter:...},...}。
[0194]設(shè)置程序:在檢索安全會話的初始清單之后,客戶端通過CCN發(fā)布設(shè)置興趣,開始設(shè)置階段。設(shè)置興趣在響應(yīng)內(nèi)容對象中具有以下值。在下面的示例中,注釋“A.B”代表字段A的子字段B。
[0195]籲SetupLink.Name:初始清單的名稱,例如隨機數(shù)值在〈nonce〉中。
[0196]籲Metadata.KeyIdRestrict1n:初始清單的 SetupLink.Key IdRestrict 1n。
[0197]^Payload:安全共享會話密鑰所需的信息,其可以以類型-長度-值(TLV)格式書與O
[0198]-Encrypt1nAlgorithm:從初始清單中的加密算法(Encrypt1nAlgorithm)選擇的算法。所選算法用來以共享會話密鑰加密和解密內(nèi)容對象。
[0199]-TemporaryKey:興趣中給定的加密算法(Encrypt1nAlgorithm)的隨機臨時密鑰,是以發(fā)布者的密鑰標識符的公鑰(在興趣的KeyId中給出)加密的。
[0200]發(fā)布者可以使用名稱中的隨機數(shù)來將不同用戶和不同會話發(fā)布的興趣相區(qū)分(初始實例)O響應(yīng)于接收設(shè)置興趣,發(fā)布者發(fā)布具有以下值的設(shè)置內(nèi)容對象:
[0201]^Name:設(shè)置興趣的名稱。
[0202]籲Metadata.ContentType:數(shù)據(jù)。
[0203]^Payload:安全共享會話密鑰所需的信息,它可以以TLV格式書寫。
[0204]-HandshakeMessage: “Completed(完成)”值指不轉(zhuǎn)到完成階段,“Rejected(拒絕)”值指示拒絕連接請求。如果發(fā)布者需要可選的用戶認證,則值設(shè)置為“Authenticat1nRequest,,。
[0205]-ResumeLink:到完成內(nèi)容對象的鏈路。只要HandshakeMessage為“Authenticat1nRequest”時,此字段具有非空值。鏈路可以包括Name子字段和KeyId子字段。
[0206]*Name:恢復(fù)內(nèi)容對象的名稱,使得aSecureSess1n: State”字段具有“Task:Finish”和“Sess1nId:〈sess1n id>”值,其中,“〈sess1n id>” 是會話標識符的別名。例如,Name可以包括CCN名稱:
[0207]“l(fā)ei:/parc/SecureSess1n:State = {Task:Resume,Sess1nId:〈sess1n id>},,
[0208]*Key Id:簽名者的密鑰標識符。
[0209]-Sess1nld:明文會話密鑰的散列。
[0210]-Sess1nKey:由所選加密算法以TemporaryKey加密的會話密鑰。
[0211 ] -VerifyData:SHA_256消息摘要,如下:
[0212]Hash(Plaintext Sess1n Key|!Selected Encrypt1nAlgorithm||KeyId ofthis content object),
[0213]以臨時密鑰加密。
[0214]注意此設(shè)置內(nèi)容對象需要具有由發(fā)布者以設(shè)置興趣中的KeyId中指示的密鑰標識符簽名的有效簽名??蛻舳丝梢允褂肰erifyData字段來檢查解密的(明文)會話密鑰的完整性。
[0215]完成啟動和會話中清單:為了完成啟動流,客戶端首先通過計算散列驗證VerifyData 值:
[0216]Hash(Plaintext Sess1n Key|!Selected Encrypt1nAlgorithm||KeyId ofthis content object)
[0217]如果計算結(jié)果等于設(shè)置內(nèi)容對象中的VerifyData值,則認為會話密鑰在客戶端和發(fā)布者之間正確地共享,各方因此可以轉(zhuǎn)到完成階段。否則,由于會話數(shù)據(jù)被破壞,設(shè)置內(nèi)容對象被丟棄。
[0218]作為完成階段的第一步,客戶端傳播完成興趣,通知發(fā)布者客戶端成功地驗證VerifyData值,并請求完成內(nèi)容對象(例如會話中清單)C3Name(名稱)字段對應(yīng)于:
[0219]“l(fā)ei:/parc/SecureSess1n:State = {Task:Finish,Sess1nld:<sess1n id>},,
[0220]會話標識符為別名的值〈sess1ni d>。同樣,完成興趣具有在初始清單的FinishLink中規(guī)定的Key Id。
[0221]響應(yīng)于接收完成興趣,發(fā)布者返回會話中清單作為完成內(nèi)容對象。SecureSess1n的會話中清單是列出以共享會話密鑰加密的內(nèi)容對象的名稱和散列值的標準清單。通過參照會話中清單,客戶端可以通過由會話密鑰保護的安全信道從發(fā)布者安全地檢索內(nèi)容。
[0222]可選的用戶認證:在此給出用在安全會話實例中的用戶認證的恢復(fù)興趣和恢復(fù)內(nèi)容對象的詳細描述。如果設(shè)置內(nèi)容對象的“HandshakeMessage”字段具有“Authenticat1nRequest”值,貝Ij客戶端為發(fā)布者傳播具有下列值的恢復(fù)興趣:
[0223]籲Name =設(shè)置內(nèi)容對象的ResumeLink.Name,會話標識符在〈sess1n id>中,諸如名稱:
[0224]“l(fā)ei:/parc/SecureSess1n:State = {Task:Resume,Sess1nld:〈sess1n id>},,
[0225]籲Metadata.KeyIdRestrict1n =設(shè)置內(nèi)容對象的
[0226]ResumeLink.KeyIdRestrict1nο
[0227]^Payload:認證用戶需要的信息,以TLV格式書寫。有效載荷可以包括以下子字段:
[0228]-ClientPulicKeyCertificate:如果此興趣在驗證數(shù)據(jù)中具有簽名,則為客戶端的公鑰證書。否則,它為空。
[0229]-EncryptedPublicKeyCertificate:如果此興趣不具有簽名,則是以會話密鑰加密的客戶端的公鑰證書。否則,它為空。
[0230]如果恢復(fù)興趣不具有簽名,則可以通過使用與發(fā)布者安全共享的會話密鑰進行加密,檢查客戶端的公鑰證書的完整的和不可偽造性。
[0231]作為對恢復(fù)興趣的響應(yīng),發(fā)布者發(fā)布有效載荷中具有HahdshakeMessage子字段的恢復(fù)內(nèi)容對象。HandshakeMessage子字段可以包括“Compl eted (完成)”值或“Re jected (拒絕),,值。
[0232]訪問控制(AC)應(yīng)用編程接口(API)
[0233]在一些實施例中,CCN網(wǎng)絡(luò)節(jié)點可以包括CCN網(wǎng)絡(luò)堆棧,其管理流進和流出網(wǎng)絡(luò)節(jié)點的興趣和內(nèi)容對象消息。本地應(yīng)用可以創(chuàng)建以期望方式處理CCN消息的堆棧,諸如對CCN消息執(zhí)行加密、流量控制或任何其它消息處理操作。
[0234]圖9圖解說明根據(jù)本發(fā)明的實施例的示例性傳輸架構(gòu)900XCN節(jié)點執(zhí)行“傳輸架構(gòu)” 900,其可以動態(tài)地配置自定義堆棧904以滿足應(yīng)用的自定義“環(huán)境執(zhí)行上下文” ο自定義堆棧904可以處理去向和/或來自轉(zhuǎn)發(fā)器906或在CCN節(jié)點上運行的任何應(yīng)用的包,堆棧的組件可以包括可以以任何次序組織的任何可用組件,以滿足應(yīng)用的需求。
[0235]在一些實施例中,傳輸架構(gòu)900可以包括一組堆棧配置代理,其可以動態(tài)地按需配置堆棧。例如,傳輸架構(gòu)900可以包括一組傳輸API組件902,其執(zhí)行通過庫和/或API訪問的函數(shù)。應(yīng)用可以通過向傳輸架構(gòu)900發(fā)布呼叫訪問由傳輸架構(gòu)900實現(xiàn)的API ο傳輸架構(gòu)900然后將API呼叫映射到組件902的執(zhí)行此特定函數(shù)的相應(yīng)API組件,并將API呼叫轉(zhuǎn)發(fā)到此API組件。
[0236]如果不存在用于處理API呼叫的堆棧,則API組件可以配置或?qū)嵗梢詧?zhí)行應(yīng)用的API呼叫的自定義堆棧。例如,API組件可以向傳輸架構(gòu)900發(fā)布描述自定義堆棧的功能的請求。此功能描述可以是高級的,諸如規(guī)定要對數(shù)據(jù)包執(zhí)行的預(yù)定義行為或操作。傳輸架構(gòu)900然后通過將所需組件以實現(xiàn)期望的行為或操作的次序組織到自定義堆棧902(例如在自定義堆棧組件)中來實現(xiàn)此行為或操作。
[0237]替代性地,功能描述可以是低級的,諸如規(guī)定要使用的特定的堆棧組件,可以規(guī)定排列堆棧組件的次序。而且,功能描述還可以對于各個組件是特定的或通用的,例如,請求特定的“安全組件”(例如PKI驗證組件)或請求任何“驗證組件”。
[0238]在一些實施例中,傳輸API組件可以包括端口API,其提供用于向堆棧寫和從堆棧讀興趣和內(nèi)容對象的一組函數(shù)。從結(jié)構(gòu)上,興趣消息(例如CCNx I n t e r e s t)和內(nèi)容對象消息(例如CCNxContentObject)具有相似的數(shù)據(jù)結(jié)構(gòu)。因此,在一些實施例中,端口 API在CCNxMessage容器中包裝CCNxInterest和CCNxContentOb ject實例,這些實例然后用在各個端口 API 函數(shù)中,諸如 ccnxPortal Read(CCNxMessage*msg^PccnxPortal Write(CCNxMessage*msg),以向傳輸堆桟寫消息或從其讀消息。連同監(jiān)聽特定名稱前綴的興趣的能力,這些函數(shù)提供通過興趣消息發(fā)布和檢索內(nèi)容對象的功能。
[0239]在一些實施例中,傳輸API組件902還包括在端口API頂部構(gòu)建的訪問控制API,并且包括ProtectedPortal (保護端口)API。訪問控制API允許消費者訪問受保護的內(nèi)容,允許發(fā)布者發(fā)布和控制對特定內(nèi)容的訪問。消費者和發(fā)布者直接與ProtectedPortal API接口,創(chuàng)建顯式地處理所有訪問控制相關(guān)功能的“受保護”傳輸堆棧(例如堆棧904)。
[0240]ProtectedPortal API由消費者和發(fā)布者應(yīng)用用特定的身份集合實例化。對于消費者,身份可以包裝PKCS#12證書和私鑰包,以便能夠在需要時解密內(nèi)容對象有效載荷。類似地,發(fā)布者可以使用PKCS#12包來對響應(yīng)于接收興趣消息而生成的出內(nèi)容對象簽名。其它密鑰,諸如用在廣播訪問控制或代理重新加密方案中的那些密鑰也可以包括于PKCS#12的文件內(nèi)。由于用戶可以通過單獨的文件管理這些密鑰,ProtectedPortal在運行和實例化時接收身份的集合。
[0241]消費者API概要
[0242]ProtectedPortal API的消費者部分用表I中列出的函數(shù)擴展底層端口 API。ProtectedPortal使用內(nèi)容對象清單中返回的信息來獲得適當?shù)慕饷苊荑€,以用正確的密碼算法解密隨機數(shù)密鑰。一旦ProtectedPortal檢索解密密鑰,則ProtectedPortal使用隨機數(shù)密鑰來為消費者解密內(nèi)容有效載荷。ProtectedPortal在內(nèi)部執(zhí)行迭代解密密鑰決定和內(nèi)容解密過程(例如安全會話),不將這些過程暴露給消費者,以允許軟件開發(fā)者容易地將這些特征集成到他們的應(yīng)用中。
[0243]#CCNxMessage*ccnxProtectedPortal Read(CCNxName*msg)_發(fā)布對由特定名稱標識的內(nèi)容對象的興趣,如果受保護,則在CCNxMe s sage有效載荷中解密并返回產(chǎn)生的有效載荷。
[0244]#CCNxMessage*ccnxProtectedPortal ReadManifest(CCNxName*msg)_發(fā)布對由特定名稱標識的內(nèi)容對象的興趣,如果受保護,貝lJ返回在CCNxMessage有效載荷中序列化的內(nèi)容對象的清單。
[0245]#CCNxMessage*ccnxProtectedPortal ReadByManifest(CCNxManifest*msg)
[0246]-發(fā)布對與特定清單關(guān)聯(lián)的內(nèi)容對象的興趣,并在CCNxMessage有效載荷內(nèi)返回解密的內(nèi)容對象有效載荷。
[0247]表1:消費者ProtectedPortalAPI函數(shù)
[0248]發(fā)布者API概要
[0249]在一些實施例中,傳輸API組件902可以包括發(fā)布者API,其可以與訪問控制系統(tǒng)的各個組件通信和/或控制訪問控制系統(tǒng)的各個組件,諸如分發(fā)服務(wù)器(內(nèi)容存儲或存儲庫)、加密服務(wù)器、訪問策略管理器和計量服務(wù)器。在實例化用于每個組件的傳輸堆棧904之后,每個組件的代理在堆棧904的頂部被實例化,以便控制他們相應(yīng)的系統(tǒng)。例如,密鑰管理器代理組件在密鑰管理器傳輸堆棧的頂部被實例化,可以與本地操作系統(tǒng)上的本地密鑰管理應(yīng)用或遠程應(yīng)用通過CCN消息通信(例如通過傳播CCN興趣以查詢密鑰管理器,從密鑰管理器接收內(nèi)容對象作為響應(yīng))。發(fā)布者API代表發(fā)布者執(zhí)行此通信,并且提取此通信機制遠離發(fā)布者API。
[0250]通過發(fā)布者API可用的函數(shù)列于表2中。發(fā)布者API可通過訪問控制系統(tǒng)的任何實體訪問,諸如分發(fā)服務(wù)器(內(nèi)容存儲或存儲庫)、加密服務(wù)器、訪問策略服務(wù)器和/或計量服務(wù)器。一旦被實例化,發(fā)布者ProtectedPortal實例將句柄暴露于訪問控制系統(tǒng)的這些實體中的每一個,使得應(yīng)用可以動態(tài)地創(chuàng)建內(nèi)容,改變訪問策略和許可,并為消費者提供被保護內(nèi)容和清單。此外,在實例化發(fā)布者API之后,每個實體為特定的名稱空間創(chuàng)建傳輸堆棧(例如堆桟904),使得消費者ProtectedPortal可以發(fā)布興趣,以與訪問控制系統(tǒng)的其它實體通信。例如,CCNxAccessControIManagerProxy堆桟組件可以監(jiān)聽 “l(fā)ei: /parc/csl/acm/” 名稱空間,請求內(nèi)容解密密鑰的消費者可以發(fā)布具有從名稱模板“l(fā)c1:/parC/CSl/aCm/〈content name>/<principal id>”得到的名稱的興趣,以獲得解密隨機數(shù)密鑰所需的密鑰。同樣,對于基于會話的訪問控制,發(fā)布者ProtectedPortal堆桟組件可以代表其本地實體處理DTLS會話信息的創(chuàng)建和維護。
[0251 ] #CCNxContentStoreProxy:內(nèi)容存儲和分發(fā)服務(wù)器的代理。
[0252]-UploadContent(...)_將不受保護的內(nèi)容對象上傳到特定的名稱空間。
[0253]-UploadProtectedContent(...)_將受保護的內(nèi)容對象和相應(yīng)的清單上傳到特定的名稱空間。
[0254]# CCNxAccessContro IManagerProxy:用于訪問控制管理器的代理。
[0255]-SetAccessControlType(...)_設(shè)置特定清單的訪問控制類型。
[0256]-RevokePrincipalFromContent(...)-從對特定的受保護內(nèi)容對象的訪問中去掉由身份表示的特定主體。
[0257]-AddPrincipalToContent(...)_向?qū)μ囟ǖ氖鼙Wo內(nèi)容對象的訪問添加由身份表示的特定的主體。
[0258]# CCNxKeyManagerProxy:用于(內(nèi)容和私密)密鑰管理器的代理。
[0259]-GenerateContentKey(...)_為特定名稱的一項內(nèi)容生成內(nèi)容加密(隨機數(shù))密鑰。
[0260]-GenerateSecretKey (...)-生成特定主體的私鑰。這要求與CCNxAccessControlManagerProxy通信,以獲得訪問控制配置細節(jié)(例如廣播組信息)。
[0261 ] # CCNxEncrypt 1nServerProxy:加密(封裝)服務(wù)器的代理。
[0262]-EncryptContent(...)_用特定的隨機數(shù)密鑰加密特定的內(nèi)容對象。
[0263]-EncryptKey (…)_針對特定的主體列表加密特定的隨機數(shù)密鑰。這要求與CCNxAccessControlManagerProxy通信,以獲得訪問控制配置細節(jié)(例如廣播組信息)。
[0264]表2:發(fā)布者ProtectedPortal API和相關(guān)的代理函數(shù)
[0265]圖10圖解說明根據(jù)實施例促進發(fā)布和訪問加密形式的數(shù)據(jù)集合的示例性設(shè)備1000。設(shè)備1000可以包括可以通過有線或無線通信信道相互通信的多個模塊。設(shè)備1000可以使用一個或多個集成電路實現(xiàn),可以包括比圖10中所示的更多或更少的模塊。而且,設(shè)備1000可以集成于計算機系統(tǒng)中,或者實現(xiàn)為能夠與其它計算機系統(tǒng)和/或裝置通信的單獨的裝置。具體地,設(shè)備1000可以包括通信模塊1002、清單處理模塊1004、訪問控制模塊1006和安全模塊1008。
[0266]在一些實施例中,通信模塊1002可以獲得數(shù)據(jù)集合的清單,可以獲得清單中列出的加密內(nèi)容對象的集合。清單處理模塊1004可以解析清單,以獲得與加密的內(nèi)容對象關(guān)聯(lián)的訪問控制規(guī)約(ACS)。訪問控制模塊1006可以處理ACS以獲得用于解密內(nèi)容對象的適當?shù)慕饷苊荑€。安全模塊1008可以使用解密密鑰解密內(nèi)容對象。
[0267]圖11圖解說明根據(jù)實施例促進發(fā)布和訪問加密形式的數(shù)據(jù)集合的示例性計算機系統(tǒng)1102。計算機系統(tǒng)1102包括處理器1104、存儲器1106和存儲裝置1108。存儲器1106可以包括充當管理存儲器的易失性存儲器(例如RAM),并且可以用來存儲一個或多個內(nèi)存池。而且,計算機系統(tǒng)1102可以耦連到顯示裝置1110、鍵盤1112和定位裝置1114。存儲裝置1108可以存儲操作系統(tǒng)1116、訪問控制系統(tǒng)1118和數(shù)據(jù)1128。
[0268]訪問控制系統(tǒng)1118可以包括指令,這些指令在由計算機系統(tǒng)1102執(zhí)行時,可以引起計算機系統(tǒng)1102執(zhí)行本申請中描述的方法和/或過程。具體地,訪問控制系統(tǒng)1118可以包括用于獲得數(shù)據(jù)集合的清單,并且可以獲得清單中列出的加密內(nèi)容對象的集合的指令(通信模塊1120)。而且,訪問控制系統(tǒng)1118可以包括用于解析清單以獲得與加密內(nèi)容對象關(guān)聯(lián)的訪問控制規(guī)約(ACS)的指令(清單處理模塊1122)。
[0269]訪問控制系統(tǒng)1118還可以包括用于處理ACS以獲得用于解密內(nèi)容對象的適當解密密鑰的指令(訪問控制模塊1124),還可以包括用于使用解密密鑰解密內(nèi)容對象的指令(安全模塊1126)。
[0270]數(shù)據(jù)1128可以包括通過本申請中描述的方法和/或過程作為輸入請求的或作為輸出生成的任何數(shù)據(jù)。具體地,數(shù)據(jù)1128可以存儲至少清單、來自清單的ACS和與發(fā)布者關(guān)聯(lián)的安全信息和/或會話信息。
[0271]在此詳細描述中描述的數(shù)據(jù)結(jié)構(gòu)和代碼通常存儲于計算機可讀存儲介質(zhì)上,計算機可讀存儲介質(zhì)可以是可以存儲代碼和/或數(shù)據(jù)以由計算機系統(tǒng)使用的任何裝置或介質(zhì)。計算機可讀存儲介質(zhì)包括但不限于易失性存儲器、非易失性存儲器、磁和光存儲裝置(諸如磁盤驅(qū)動器、磁帶、CD(光盤)、DVD(數(shù)字通用盤或數(shù)字視頻盤))或能夠存儲計算機可讀介質(zhì)的現(xiàn)在已知或以后開發(fā)的其它介質(zhì)。
[0272]在詳細描述部分描述的方法和過程可以體現(xiàn)為代碼和/或數(shù)據(jù),這些代碼和/或數(shù)據(jù)可以存儲在如上文描述的計算機可讀存儲介質(zhì)中。當計算機系統(tǒng)讀、執(zhí)行計算機可讀存儲介質(zhì)上存儲的代碼和/或數(shù)據(jù)時,計算機系統(tǒng)執(zhí)行體現(xiàn)為數(shù)據(jù)結(jié)構(gòu)和代碼并存儲于計算機可讀存儲介質(zhì)中的方法和過程。
[0273]而且,上面描述的方法和過程可以包括于硬件模塊中。例如,硬件模塊可以包括但不限于專用集成電路(ASIC)芯片、現(xiàn)場可編程門陣列(FPGA)、現(xiàn)在已知或以后開發(fā)的其它可編程邏輯器件。當硬件模塊被激活時,硬件模塊執(zhí)行其中包括的方法和過程。
【主權(quán)項】
1.一種計算機實現(xiàn)的方法,包括: 通過計算裝置獲得數(shù)據(jù)集合的清單對象,其中,所述清單包括對所述數(shù)據(jù)集合的一組加密內(nèi)容對象的引用,并包括一個或多個訪問控制規(guī)約ACS,每個訪問控制規(guī)約規(guī)定用于解密所述數(shù)據(jù)集合的一個或多個內(nèi)容對象的解密協(xié)議; 通過信息中心網(wǎng)絡(luò)ICN獲得所述清單中列出的相應(yīng)的加密內(nèi)容對象; 通過所述計算裝置從所述清單獲得與所述相應(yīng)的加密內(nèi)容對象關(guān)聯(lián)的ACS;以及 通過所述計算裝置使用所述ACS中規(guī)定的解密協(xié)議解密所述相應(yīng)的加密內(nèi)容對象。2.根據(jù)權(quán)利要求1所述的方法,還包括: 通過ICN傳播對所述數(shù)據(jù)集合的興趣;以及 響應(yīng)于傳播所述興趣,通過ICN接收所述清單對象。3.根據(jù)權(quán)利要求1所述的方法,其中,所述清單包括通過引用的相應(yīng)ACS,并且其中獲得所述ACS涉及: 從所述清單獲得與所述ACS關(guān)聯(lián)的名稱前綴; 通過ICN傳播其名稱包括所述名稱前綴的興趣;以及 響應(yīng)于傳播所述興趣,接收包括所述ACS的內(nèi)容對象。4.根據(jù)權(quán)利要求1所述的方法,其中,解密所述加密的內(nèi)容對象涉及: 獲得與所述加密的內(nèi)容對象對應(yīng)的加密密鑰; 通過執(zhí)行所述ACS中規(guī)定的解密協(xié)議,獲得解封裝密鑰; 使用所述解封裝密鑰解密所述加密密鑰,以獲得解密密鑰;以及 使用所述解密密鑰解密所述加密的內(nèi)容對象。5.一種計算機實現(xiàn)的方法,包括: 通過計算裝置獲得數(shù)據(jù)集合的初始清單對象,其中,所述初始清單包括規(guī)定用于獲得并解密所述數(shù)據(jù)集合的一個或多個內(nèi)容對象的端對端訪問控制方案的訪問控制規(guī)約ACS;從所述初始清單中的ACS獲得發(fā)布者的公鑰; 通過所述計算裝置從所述ACS確定用于與所述發(fā)布者的會話的加密算法; 為所述發(fā)布者傳播設(shè)置興趣消息,其中,所述設(shè)置興趣消息包括使用確定的加密算法和所述發(fā)布者的公鑰加密的臨時密鑰; 接收滿足所述設(shè)置興趣消息的設(shè)置內(nèi)容對象,其中,所述設(shè)置內(nèi)容對象包括會話密鑰和會話標識符; 為所述發(fā)布者傳播完成興趣消息,其中,所述完成興趣消息包括所述會話標識符;以及接收滿足所述完成興趣消息的會話中清單,其中,所述會話中清單包括對使用所述會話密鑰加密的所述數(shù)據(jù)集合的一個或多個內(nèi)容對象的引用。6.根據(jù)權(quán)利要求5所述的方法,還包括: 從所述設(shè)置內(nèi)容對象獲得驗證數(shù)據(jù); 使用所述驗證數(shù)據(jù)驗證所述會話密鑰;以及 響應(yīng)于確定所述會話密鑰是有效的,傳播所述完成興趣消息。7.—種存儲指令的非暫態(tài)計算機可讀存儲介質(zhì),所述指令在由計算機執(zhí)行時引起所述計算機執(zhí)行一種方法,所述方法包括: 獲得數(shù)據(jù)集合的清單對象,其中,所述清單包括對所述數(shù)據(jù)集合的一組加密內(nèi)容對象的引用;并包括一個或多個訪問控制規(guī)約ACS,每個訪問控制規(guī)約規(guī)定用于解密所述數(shù)據(jù)集合的一個或多個內(nèi)容對象的解密協(xié)議; 通過信息中心網(wǎng)絡(luò)ICN獲得所述清單中列出的相應(yīng)加密內(nèi)容對象; 通過所述計算裝置從所述清單獲得與所述相應(yīng)的加密內(nèi)容對象關(guān)聯(lián)的ACS;以及 使用所述ACS中規(guī)定的解密協(xié)議解密所述相應(yīng)的加密內(nèi)容對象。8.根據(jù)權(quán)利要求7所述的存儲介質(zhì),還包括: 通過ICN傳播對所述數(shù)據(jù)集合的興趣;以及 響應(yīng)于傳播所述興趣,通過ICN接收所述清單對象。9.根據(jù)權(quán)利要求7所述的存儲介質(zhì),其中,所述清單包括通過引用的相應(yīng)ACS,并且其中獲得所述ACS涉及: 從所述清單獲得與所述ACS關(guān)聯(lián)的名稱前綴; 通過ICN傳播其名稱包括所述名稱前綴的興趣;以及 響應(yīng)于傳播所述興趣,接收包括所述ACS的內(nèi)容對象。10.—種存儲指令的非暫態(tài)計算機可讀存儲介質(zhì),所述指令在由計算機執(zhí)行時引起所述計算機執(zhí)行一種方法,所述方法包括: 獲得數(shù)據(jù)集合的初始清單對象,其中,所述初始清單包括規(guī)定用于獲得并解密所述數(shù)據(jù)集合的一個或多個內(nèi)容對象的端對端訪問控制方案的訪問控制規(guī)約ACS ; 從所述初始清單中的ACS獲得發(fā)布者的公鑰; 從所述ACS確定用于與所述發(fā)布者的會話的加密算法; 為所述發(fā)布者傳播設(shè)置興趣消息,其中,所述設(shè)置興趣消息包括使用確定的加密算法和所述發(fā)布者的公鑰加密的臨時密鑰; 接收滿足所述設(shè)置興趣消息的設(shè)置內(nèi)容對象,其中,所述設(shè)置內(nèi)容對象包括會話密鑰和會話標識符; 為所述發(fā)布者傳播完成興趣消息,其中,所述完成興趣消息包括所述會話標識符;以及接收滿足所述完成興趣消息的會話中清單,其中,所述會話中清單包括對使用所述會話密鑰加密的所述數(shù)據(jù)集合的一個或多個內(nèi)容對象的引用。
【文檔編號】H04L29/06GK105847228SQ201610031885
【公開日】2016年8月10日
【申請日】2016年1月19日
【發(fā)明人】E·尤祖恩, J·庫里哈拉, C·A·伍德
【申請人】帕洛阿爾托研究中心公司