專利名稱:用于存儲、認(rèn)證以及執(zhí)行應(yīng)用程序的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種程序數(shù)據(jù)文件存儲方法和一種認(rèn)證程序執(zhí)行方 法,用于在檢驗下載程序的可靠性之后存儲所述下載的程序,并且執(zhí) 行所述已被檢驗為可靠的程序,特別地,本發(fā)明涉及程序的更新和認(rèn) 證。
背景技術(shù):
在DVB-MHP規(guī)范"ETSI TS 101 812 Vl.2.1 DVB-MHP Specification 1.0.2"及其他規(guī)范中描述了數(shù)字電視中的下載程序以及 檢查/保證這種程序的可靠性的功能。該DVB-MHP規(guī)范定義檢驗功 能,該功能用于檢驗疊加在正在被接收的廣播電波上的程序是否未被 篡改以及是否這樣的程序是由可靠的組織發(fā)出的。該功能能夠防止激 活不按照原來的要求工作、因此將使數(shù)字電視遭受損害的重寫過的程 序,以及欺騙性第三方的程序。
在OCAP規(guī)范(OCAP 1.0 Profile OC-SP-OCAP1.0-IF-I09-031121) 中描述了更新程序的功能。依據(jù)該OCAP規(guī)范,當(dāng)在XAIT(描述程序 的表)中檢測到程序升級信號(無論何時它的描述發(fā)生變化都升級程 序的版本)時,刪除程序的所有文件,例如當(dāng)前存儲在輔助存儲器(例 如閃速ROM(flash ROM))中的類文件和數(shù)據(jù)文件,并替換為升級程序 的文件,例如類文件和數(shù)據(jù)文件。
同時,日本特開平專利申請No.2000-259417公開了一種技術(shù), 其中,通過響應(yīng)于來自構(gòu)成執(zhí)行環(huán)境的執(zhí)行實體或另一個對象的請求執(zhí)行以下步驟來替換構(gòu)成執(zhí)行環(huán)境的對象,即刪除構(gòu)成執(zhí)行環(huán)境的 對象的步驟;以及從外部系統(tǒng)獲取新對象的步驟。
當(dāng)升級程序時,并不升級它的所有文件,例如類文件和數(shù)據(jù)文件, 而是僅部分地升級該程序。然而,根據(jù)傳統(tǒng)的技術(shù),即使當(dāng)程序僅需 要被部分地升級時,也需要刪除存儲的程序的所有文件,以替換為升 級程序的文件。這是使用傳統(tǒng)技術(shù)的問題,因為響應(yīng)速度會隨著存儲 所需的時間的增長成比例的增大。此外,在將程序存入非易失性存儲 器一次以便在所述設(shè)備被通電/斷電之后激活該程序的情況下,在它 被激活之前執(zhí)行程序認(rèn)證。在這種情況下,需要在開始激活所述程序 之前執(zhí)行例如解密加密值這樣的計算,這將導(dǎo)致隨著計算所需的時間 變長,響應(yīng)速度會減小更多。尤其是在一個程序被頻繁的激活或程序 的體積較大的情況下,因為計算量隨著激活頻率和體積的增大成比例 地增加,所以響應(yīng)速度變得越來越慢。
由于以上問題,希望提供一種程序執(zhí)行設(shè)備,例如具有增大的響 應(yīng)速度的數(shù)字電視,其能夠縮短程序更新所需的時間以及縮短激活程 序之前所需的時間,同時保證所述程序的可靠性。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種程序數(shù)據(jù)文件存儲方法以及一種認(rèn)證 程序執(zhí)行方法,其既能夠在升級程序版本時,通過提取升級前后的程 序之間的差異,在存儲程序之前僅為該差異執(zhí)行認(rèn)證和更新,從而保 證可靠性以及提高響應(yīng)速度,又能夠在激活程序時,不執(zhí)行認(rèn)證或只 執(zhí)行部分認(rèn)證。
為了解決傳統(tǒng)問題,根據(jù)本發(fā)明的程序數(shù)據(jù)文件存儲方法包括 第一步驟,用于認(rèn)證包含在第一傳輸流中的第一程序的每個數(shù)據(jù)文 件,并根據(jù)關(guān)于第一程序的每個數(shù)據(jù)文件的存儲的信息,將第一程序 的每個已認(rèn)證的數(shù)據(jù)文件存儲到廣播接收器中;第二步驟,用于接收 關(guān)于包含在第二傳輸流中的第二程序的每個數(shù)據(jù)文件的存儲的信息; 以及下列步驟,當(dāng)?shù)诙绦虻臄?shù)據(jù)文件包含不同于當(dāng)存儲第一程序時 已認(rèn)證的、第一程序的任何數(shù)據(jù)文件的數(shù)據(jù)文件時執(zhí)行所述下列步驟第三步驟,用于檢驗兩個散列值是否一致,其中一個散列值是根 據(jù)包含在第二程序中的不同數(shù)據(jù)文件計算的,另一個散列值是存儲在 對應(yīng)于包含在第二程序中的不同數(shù)據(jù)文件的散列文件中;第四步驟, 用于檢驗包含在第二程序中的證書文件是否有效;第五步驟,檢驗解 密值與散列值是否一致,其中,所述解密值是通過使用第二程序的證 書文件中的葉證書的公鑰解密包含在第二程序中的簽名文件的簽名 值而獲得的,并且散列值是根據(jù)位于第二程序的頂層目錄的散列文件 而計算的;以及第六步驟,用于認(rèn)證所述第二程序,以及當(dāng)滿足下列 條件時,根據(jù)與所述第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信 息存儲所述己認(rèn)證的第二程序,所述條件為在所述第三步驟中,檢 驗結(jié)果為所述兩個散列值一致;在所述第四步驟中,檢驗結(jié)果為包含 在所述第二程序中的證書文件有效;以及在所述第五步驟中,檢驗結(jié) 果為所述解密值與所述散列值一致。
因此,能夠縮短認(rèn)證和更新程序所需的時間。
此外,包含在第二程序中的不同的數(shù)據(jù)文件可以是用于更新在存 儲所述第一程序時已認(rèn)證的、第一程序的數(shù)據(jù)文件的數(shù)據(jù)文件。
因此,能夠使用包含在版本已升級的第二程序中的數(shù)據(jù)文件更新 包含在第一程序中的數(shù)據(jù)文件。
此外,包含在所述第二程序中的所述不同的數(shù)據(jù)文件可以是不同 于已在存儲所述第一程序時被認(rèn)證過的、所述第一程序的數(shù)據(jù)文件中 的任何一個的新數(shù)據(jù)文件。
因此,能夠存儲新加入版本己升級的第二程序的數(shù)據(jù)文件。
此外,當(dāng)所述程序中的每一個具有目錄結(jié)構(gòu)時,包含在每個目錄 中的每個數(shù)據(jù)文件與對應(yīng)于所述每個數(shù)據(jù)文件的散列文件位于相同 的目錄中,以及可以對包含所述包含在所述第二程序中的不同的數(shù)據(jù) 文件的每個目錄執(zhí)行所述第三步驟。
因此,能夠為包含在每個目錄中的每個數(shù)據(jù)文件檢查根據(jù)所述文 件計算的散列值和存儲在對應(yīng)于所述數(shù)據(jù)文件的散列文件中的散列 值是否一致。
此外,第四步驟可以包括第七步驟,用于檢驗兩個根證書是否匹
14配,所述兩個根證書中的一個在包含在所述第二程序中的證書文件 中,而另一個根證書被安裝在所述廣播接收器中,以及在所述第四步 驟中,當(dāng)所述兩個根證書匹配時,所述證書文件被證實有效。
這里,第四步驟可以還包括第八步驟,用于檢驗包含在所述第二 程序中的證書文件中的每個證書的有效期,以及在所述第四步驟中, 當(dāng)同時滿足下列兩個條件時,所述證書文件被證實有效,所述兩個條 件為所述兩個根證書匹配;以及執(zhí)行所述認(rèn)證的時間在所述證書文
件中的每個證書的有效期內(nèi)。
因此,當(dāng)根證書不匹配以及證書的有效期期滿時,能夠防止存儲 程序。
同樣,根據(jù)本發(fā)明的已認(rèn)證程序執(zhí)行方法包括第一步驟,用于 認(rèn)證包含在第一傳輸流中的第一程序的數(shù)據(jù)文件中的每一個,以及根 據(jù)與所述第一程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息,將所述 第一程序的已認(rèn)證的數(shù)據(jù)文件中的每一個存儲到廣播接收器中;第二
步驟,用于接收與包含在第二傳輸流中的第二程序的數(shù)據(jù)文件中的每
一個的存儲有關(guān)的信息;以及下列步驟,當(dāng)所述第二程序的數(shù)據(jù)文件
包含不同于在存儲所述第一程序時已認(rèn)證的、所述第一程序的數(shù)據(jù)文 件中的任何一個的數(shù)據(jù)文件時執(zhí)行下列步驟第三步驟,用于檢驗兩
個散列值是否一致,其中一個散列值是根據(jù)包含在所述第二程序中的 所述不同的數(shù)據(jù)文件而計算的,而另 一個散列值存儲在對應(yīng)于包含在
所述第二程序中的所述不同的數(shù)據(jù)文件的散列文件中;第四步驟,用 于檢驗包含在所述第二程序中的證書文件是否有效;第五步驟,用于 檢驗解密值與散列值是否一致,所述解密值是通過使用所述第二程序 的證書文件中的葉證書的公鑰,來解密包含在所述第二程序中的簽名 文件的簽名值而獲得的,而所述散列值是根據(jù)位于所述第二程序的頂 層目錄中的散列文件計算的;第六步驟,用于認(rèn)證所述第二程序,以 及當(dāng)滿足下列條件時,根據(jù)與所述第二程序的數(shù)據(jù)文件中的每一個的 存儲有關(guān)的信息存儲所述已認(rèn)證的第二程序,所述條件為在所述第 三步驟中,檢驗結(jié)果為所述兩個散列值一致;在所述第四步驟中,檢 驗結(jié)果為包含在所述第二程序中的證書文件有效;以及在所述第五步驟中,檢驗結(jié)果為所述解密值與所述散列值一致;以及第九步驟,用 于當(dāng)將執(zhí)行所述第二程序時,檢驗包含在所述存儲的第二程序中的所 述證書文件是否有效;以及執(zhí)行步驟,用于再次認(rèn)證所述存儲的第二 程序,以及僅當(dāng)在所述第九步驟中證實包含在所述存儲的第二程序中 的所述證書文件有效時,執(zhí)行所述己認(rèn)證的第二程序。
因此,能夠縮短認(rèn)證和更新程序所需的時間,并且能夠縮短程序 激活前所需的時間,同時保證程序的可靠性。
此外,第九步驟可以包括第十步驟,用于檢驗兩個根證書是否匹 配,所述兩個根證書中的一個在包含在所述存儲的第二程序中的證書 文件中,而另一個根證書被安裝在所述廣播接收器中,以及在所述第 九步驟中,當(dāng)所述兩個根證書匹配時,所述證書文件被證實有效。
這里,第九步驟可以包括第十一步驟,用于檢驗包含在所述存儲 的第二程序中的證書文件中的每個證書的有效期,以及在所述第九步 驟中,當(dāng)同時滿足下列兩個條件時,所述證書文件被證實有效,所述 兩個條件為所述兩個根證書匹配;以及進行所述執(zhí)行的時間在所述 證書文件中的每個證書的有效期內(nèi)。
因此,當(dāng)根證書不匹配以及證書的有效期期滿時,可以防止存儲 程序。
注意,本發(fā)明不僅可以如上所述體現(xiàn)為程序數(shù)據(jù)文件存儲方法以 及已認(rèn)證程序執(zhí)行方法,而且還可以體現(xiàn)為程序數(shù)據(jù)文件存儲設(shè)備和 已認(rèn)證程序執(zhí)行設(shè)備,其中,所述程序數(shù)據(jù)文件存儲設(shè)備和已認(rèn)證程 序執(zhí)行設(shè)備包括包含在程序數(shù)據(jù)文件存儲方法以及已認(rèn)證程序執(zhí)行 方法中的特征步驟,作為它們相應(yīng)的單元,本發(fā)明還可以體現(xiàn)為使計 算機執(zhí)行相應(yīng)步驟的程序。還應(yīng)注意,可以通過記錄介質(zhì)(例如 CD-ROM)和傳輸介質(zhì)(例如因特網(wǎng))來分發(fā)該程序。
通過以上描述,可以容易地知道,根據(jù)本發(fā)明的程序數(shù)據(jù)文件存 儲方法能夠縮短認(rèn)證和更新程序所需的時間。此外,根據(jù)本發(fā)明的已 認(rèn)證程序執(zhí)行方法能夠縮短程序激活前所需的時間,同時保證程序的 可靠性。
通過參考,將包含說明書、附圖、和權(quán)利要求在內(nèi)的,于2003年12月18日提交的日本專利申請No. 2003-421616的公開,于2004 年4月6日提交的日本專利申請No. 2004-111802的公開,以及于2003 年12月19日提交的美國臨時申請No. 60/530663的公開包含在此。
通過結(jié)合附圖所進行的、說明了本發(fā)明具體實施例的下列描述, 本發(fā)明的這些以及其它目的、優(yōu)點、特征將變得明顯。在附圖中-圖1是顯示根據(jù)本發(fā)明第一實施例的有線電視系統(tǒng)的結(jié)構(gòu)的示
圖2是顯示使用將被用于根據(jù)本發(fā)明的有線電視系統(tǒng)中的頭端 (head end)和終端設(shè)備之間的通信的頻帶的例子的示圖3是顯示使用將被用于根據(jù)本發(fā)明的有線電視系統(tǒng)中的頭端 和終端設(shè)備之間的通信的頻帶的例子的示圖4是顯示使用將被用于根據(jù)本發(fā)明的有線電視系統(tǒng)中的頭端 和終端設(shè)備之間的通信的頻帶的例子的示圖5是顯示根據(jù)本發(fā)明的有線電視系統(tǒng)中的終端設(shè)備的配置的 示圖6是顯示根據(jù)本發(fā)明的有線電視系統(tǒng)中的終端設(shè)備的典型的 外部視圖的示圖7是顯示根據(jù)本發(fā)明的POD 504的硬件配置的示圖8是顯示存儲在根據(jù)本發(fā)明的POD 504中的程序的結(jié)構(gòu)的示
圖9是顯示在MPEG標(biāo)準(zhǔn)中定義的數(shù)據(jù)分組的結(jié)構(gòu)的示圖; 圖10是顯示MPEG2傳輸流的例子的示圖; 圖11是顯示當(dāng)以面板的形式配置時的輸入單元513的典型外部 視圖的示圖12是顯示存儲在根據(jù)本發(fā)明的終端設(shè)備500中的程序的結(jié)構(gòu) 的示圖13A是顯示由根據(jù)本發(fā)明的顯示器509顯示的顯示屏幕的例 子的示圖,圖13B是顯示由根據(jù)本發(fā)明的顯示器509顯示的顯示屏
17幕的例子的示.圖14是顯示存儲在根據(jù)本發(fā)明的輔助存儲單元510中的信息的 例子的示圖15A、 15B和15C是示圖,其中每一個顯示了存儲在根據(jù)本發(fā) 明的主存儲單元511中的信息的例子;
圖16是顯示在根據(jù)本發(fā)明的MPEG2標(biāo)準(zhǔn)中規(guī)定的PAT的內(nèi)容 的概要示圖17是顯示在根據(jù)本發(fā)明的MPEG2標(biāo)準(zhǔn)中規(guī)定的PMT的內(nèi)容 的概要示圖18是顯示根據(jù)本發(fā)明的AIT的內(nèi)容的概要示圖; 圖19是顯示將以根據(jù)本發(fā)明的DSMCC格式傳送的文件系統(tǒng)的 概要示圖20是顯示根據(jù)本發(fā)明的XAIT的內(nèi)容的概要示圖; 圖21是顯示存儲在根據(jù)本發(fā)明的輔助存儲單元510中的信息的 例子的示圖22A、 22B和22C是示圖,每一個顯示根據(jù)本發(fā)明的包括文件
或目錄的散列值的文件的例子;
圖23是顯示根據(jù)本發(fā)明的證書鏈的結(jié)構(gòu)的示圖24是顯示根據(jù)本發(fā)明的X. 509證書的結(jié)構(gòu)的示圖25是顯示根據(jù)本發(fā)明的簽名文件的結(jié)構(gòu)的示圖26是顯示根據(jù)本發(fā)明的安全模塊的組成部分的示圖27是顯示根據(jù)本發(fā)明,當(dāng)認(rèn)證文件系統(tǒng)時將執(zhí)行的操作的流
程圖28是根據(jù)本發(fā)明,當(dāng)接收到程序預(yù)激活通知時不執(zhí)行認(rèn)證的 情況下的流程圖29是顯示根據(jù)本發(fā)明,當(dāng)對文件系統(tǒng)執(zhí)行篡改檢査時執(zhí)行的 操作的流程圖30是顯示根據(jù)本發(fā)明,當(dāng)通過使用簽名文件執(zhí)行篡改檢査時
將被執(zhí)行的操作的流程圖31是顯示根據(jù)本發(fā)明,當(dāng)檢查葉證書和中間證書之間的鏈關(guān)系時執(zhí)行的操作的流程圖32是顯示根據(jù)本發(fā)明,當(dāng)檢查中間證書和根證書之間的鏈關(guān) 系時執(zhí)行的操作的流程圖33是顯示根據(jù)本發(fā)明,當(dāng)檢査根證書中的簽名時執(zhí)行的操作 的流程圖34是顯示根據(jù)本發(fā)明,將被用于指定待存儲的文件的文件的 例子的示圖35是顯示根據(jù)本發(fā)明,描述文件2130的詳細(xì)內(nèi)容的文件列表 信息的例子的示圖36是顯示根據(jù)本發(fā)明的AM的組成元素的示圖37是顯示根據(jù)本發(fā)明,描述之前被存儲到輔助存儲單元510 中的文件2130的詳細(xì)內(nèi)容的文件列表信息的例子的示圖38是顯示根據(jù)本發(fā)明,通過提取差異而生成的文件列表信息 的例子的示圖39是顯示根據(jù)本發(fā)明,由文件比較單元3601執(zhí)行的處理的流 程圖40是顯示根據(jù)本發(fā)明,由文件系統(tǒng)管理單元3602執(zhí)行的處理 的流程圖41是顯示根據(jù)本發(fā)明,由文件系統(tǒng)存儲單元3603執(zhí)行的處理 的流程圖42是顯示根據(jù)本發(fā)明,由AM和安全管理器執(zhí)行的過程的流 程圖43是顯示根據(jù)本發(fā)明的XAIT的內(nèi)容的概要示圖; 圖44是顯示存儲在根據(jù)本發(fā)明的輔助存儲單元510中的信息的 例子的示圖45A、 45B和45C是示圖,每一個顯示包括根據(jù)本發(fā)明的文件 或目錄的散列值的文件的例子;
圖46是顯示根據(jù)本發(fā)明,當(dāng)為文件系統(tǒng)執(zhí)行篡改檢查時將執(zhí)行 的操作的流程圖47是顯示根據(jù)本發(fā)明,將用于指定將存儲的文件的文件的例子的示圖48是顯示根據(jù)本發(fā)明,當(dāng)執(zhí)行文件系統(tǒng)的認(rèn)證時將執(zhí)行的操 作的流程圖49是顯示根據(jù)本發(fā)明,當(dāng)接收到程序預(yù)先激活通知時,在檢 查X. 509證書的有效性時將執(zhí)行的操作的流程圖50是顯示根據(jù)本發(fā)明,將從下載模塊接收的代碼文件的簡化 結(jié)構(gòu)的示圖;.
圖51A、 51B和51C是示圖,每一個顯示根據(jù)本發(fā)明,由正被替 換的終端設(shè)備擁有的證書;
圖52是顯示根據(jù)本發(fā)明,當(dāng)執(zhí)行證書替換時將執(zhí)行的操作的流 程圖53是顯示根據(jù)本發(fā)明,當(dāng)接收到預(yù)先激活通知時,在比較根 證書時將執(zhí)行的操作的流程圖54是顯示根據(jù)本發(fā)明的CRL的結(jié)構(gòu)的示圖55是顯示在根據(jù)本發(fā)明的CRL中的撤銷證書列表的概要示
圖56是顯示包括根據(jù)本發(fā)明的CRL的文件系統(tǒng)的例子的示圖57是顯示根據(jù)本發(fā)明,當(dāng)基于散列值和簽名值檢査CRL的有 效性時將執(zhí)行的操作的流程圖58是顯示根據(jù)本發(fā)明,當(dāng)基于證書間的鏈關(guān)系和根證書間的 比較來檢查CRL的有效性時執(zhí)行的操作的流程圖59是顯示包括根據(jù)本發(fā)明的文件或目錄的散列值的文件的例 子的示圖60是顯示根據(jù)本發(fā)明,當(dāng)在程序存儲時間存在CRL時,用于 執(zhí)行認(rèn)證的操作的流程圖61是顯示當(dāng)在程序激活時間存在CRL時,用于執(zhí)行認(rèn)證的操 作的流程圖62是顯示根據(jù)本發(fā)明的撤銷證書的數(shù)據(jù)庫的概要示圖; 圖63是顯示根據(jù)本發(fā)明,包括用于指定將存儲的文件的文件的 典型的文件系統(tǒng)的示圖;以及圖64是顯示根據(jù)本發(fā)明,用于指定將被存儲的文件的典型的文 件的示圖。
具體實施例方式
下面參照附圖描述本發(fā)明的實施例。 (第一實施例)
參照
根據(jù)本發(fā)明的有線電視系統(tǒng)的優(yōu)選實施例。圖1是
顯示構(gòu)成有線系統(tǒng)的設(shè)備間的關(guān)系的框圖,所述設(shè)備包括頭端101,
以及三個終端設(shè)備,分別為終端設(shè)備Alll、終端設(shè)備B112、終端設(shè) 備C113。在本實施例中,三個終端設(shè)備連接到一個頭端,但是如果 將任意數(shù)量的終端設(shè)備連接到頭端,也能夠?qū)崿F(xiàn)本發(fā)明。
頭端101向多個終端設(shè)備傳送廣播信號,例如視頻、音頻和數(shù)據(jù), 并接收從終端設(shè)備傳送的數(shù)據(jù)。為了實現(xiàn)這一點,頻帶被分割以用于 頭端IOI、終端設(shè)備Alll、終端設(shè)備B112、終端設(shè)備C113之間的數(shù) 據(jù)傳輸。
圖2是顯示分割的頻帶的例子的表格。粗略地可以分為兩種類型 的頻帶帶外(簡寫為OOB)和帶內(nèi)頻帶。5 130MHz的頻帶被分配 給OOB,主要用于頭端101、終端設(shè)備Alll、終端設(shè)備B112以及終 端設(shè)備C113之間的數(shù)據(jù)交換。130MHz 864MHz的頻帶被分配給帶 內(nèi)頻帶,主要用于廣播信道,包括視頻和音頻。QPSK用于OOB, 而QAM64用于帶內(nèi)頻帶,作為調(diào)制技術(shù)。因為它們是與本發(fā)明無關(guān) 的公知技術(shù),所以這里省略對調(diào)制技術(shù)的詳細(xì)說明。圖3顯示了如何 使用OOB頻帶的更具體的例子。70MHz 74MHz的頻帶用于從頭端 101傳送數(shù)據(jù)。在本例中,所有終端設(shè)備Alll、終端設(shè)備B112、終 端設(shè)備C113都從頭端101接收同樣的數(shù)據(jù)。同時,10.0MHz 10.1MHz的頻帶用于從終端設(shè)備Alll向頭端101傳送數(shù)據(jù)。 10.1MHz 10.2MHz的頻帶用于從終端設(shè)備B112向頭端101傳送數(shù) 據(jù)。10.2MHz 10.3MHz的頻帶用于從終端設(shè)備C113向頭端101傳 送數(shù)據(jù)。因此,能夠從終端設(shè)備Alll、終端設(shè)備B112、終端設(shè)備 C113向頭端101傳送唯一屬于每個終端設(shè)備的數(shù)據(jù)。
21圖4顯示了帶內(nèi)頻帶的典型使用。150 156MHz以及156 162MHz的頻帶分別分配給電視頻道1和電視頻道2,并且隨后的頻 率被以6MHz的間隔分配給電視頻道。310MHz以及隨后的頻率以 lMHz的間隔分配給無線電廣播頻道。每個上述頻道或者可用于模擬 廣播,或者可用于數(shù)字廣播。當(dāng)用于數(shù)字廣播時,以符合MPEG2規(guī) 范的傳輸分組格式傳送數(shù)據(jù),其中,除了音頻和視頻之外,針對各種 數(shù)據(jù)廣播系統(tǒng)的數(shù)據(jù)都可以被傳送。
頭端101裝配有QPSK調(diào)制單元、QAM調(diào)制單元等等,以便向 相應(yīng)的各個頻率范圍傳送合適的廣播信號。此外,頭端101裝配有 QPSK解調(diào)單元,用于從終端設(shè)備接收數(shù)據(jù)。而且,假定頭端101還 裝配有與上述調(diào)制單元和解調(diào)單元有關(guān)的各種裝置。但是,由于本發(fā) 明主要涉及終端設(shè)備,所以省略對它們的詳細(xì)說明。
終端設(shè)備Alll、終端設(shè)備B112、終端設(shè)備C113接收并再現(xiàn)從 頭端101傳送的廣播信號。此外,終端設(shè)備Alll、終端設(shè)備B112、 終端設(shè)備C113向頭端101傳送唯一屬于每個終端的數(shù)據(jù)。在本實施 例中,這三個終端設(shè)備具有相同的配置。
圖5是顯示每個終端設(shè)備的硬件配置的框圖。500是終端設(shè)備, 其由QAM解調(diào)單元501, QPSK解調(diào)單元502, QPSK調(diào)制單元503, TS解碼器505,音頻解碼器506,揚聲器507,視頻解碼器508,顯 示器509,輔助存儲單元510,主存儲單元511, ROM 512,輸入單 元513以及CPU 514等構(gòu)成。此外,POD 504可以被附加到終端設(shè) 備500,或從終端設(shè)備500分離。
圖6顯示形狀較薄的電視,其是終端設(shè)備500的典型的外部視圖。 終端設(shè)備可以具有不同的配置,但在本實施例中,將基于OpenCable(R) 和OCAP配置的終端設(shè)備作為例子進行描述。
601是形狀較薄的電視的鋼外殼,其中包含除POD504以外的終 端設(shè)備500的所有組件。
602是顯示器,其對應(yīng)于圖5中的顯示器509。
603是面板單元,其由多個按鈕組成,并且對應(yīng)于圖5中的輸入 單元513。
22604是信號輸入端子,電纜線連接到其,用于向頭端101發(fā)送信 號以及從頭端101接收信號。信號輸入端子連接到圖5所示的QAM 解調(diào)單元501, QPSK解調(diào)單元502以及QPSK調(diào)制單元503。
605是對應(yīng)于圖5中的POD 504的POD卡。POD 504獨立于終 端設(shè)備500而實現(xiàn),并且可以附加到終端設(shè)備500上,或從終端設(shè)備 分離,如同圖6中的POD卡605。后面詳細(xì)說明POD504。
606是可插入POD卡605的插槽。
參照圖5, QAM解調(diào)單元501根據(jù)包括由CPU 514指定的頻率 的調(diào)諧信息,對己在頭端101中被進行QAM調(diào)制并且被從頭端101 傳送的信號進行解調(diào),并將結(jié)果傳送給POD 504。
QPSK解調(diào)單元502根據(jù)包括由CPU 514指定的頻率的調(diào)諧信 息,對已在頭端101中被進行QPSK調(diào)制并且被從頭端101傳送的信 號進行解調(diào),并將結(jié)果傳送給POD504。
QPSK調(diào)制單元503根據(jù)包括由CPU 514指定的頻率的解調(diào)信 息,對從POD 504傳送來的信號進行QPSK解調(diào),并將結(jié)果傳送給 頭端IOI。
如圖6所示,POD 504可以從終端設(shè)備500的主體分離。終端 500的主體和POD 504之間的連接接口的定義在OpenCable(R) CableCARD(R)接口規(guī)范(OC-SP-CC-IF-I15-031121)以及該規(guī)范所 參考的規(guī)范中給出。這里,省略了詳細(xì)說明,并且僅給出與本發(fā)明有 關(guān)的組成部分的說明。
圖7是顯示POD 504的內(nèi)部配置的框圖。POD 504由第一解擾 器單元701、第二解擾器單元702、擾頻器單元703、主存儲單元704、 輔助存儲單元705和CPU 706構(gòu)成。
第一解擾器單元701根據(jù)來自CPU 706的指令從終端設(shè)備500 的QAM解調(diào)單元501接收失真信號,并解擾該信號。然后,第一解 擾器單元701將解擾后的信號傳送給終端設(shè)備500的TS解碼器505。 根據(jù)需要,由CPU 706提供解擾器所需的信息,例如密鑰。更具體 地,頭端101廣播多路付費頻道,當(dāng)用戶購買了觀看這些付費頻道的 權(quán)利后,第一解擾器單元701從CPU 706接收所需的信息,例如密鑰,并執(zhí)行解擾。因此,用戶可以觀看這些付費頻道。當(dāng)不提供諸如 密鑰這樣所需的信息時,第一解擾器單元701在不執(zhí)行解擾的情況
下,直接將所接收的信號傳遞給TS解碼器505。
第二解擾器單元702根據(jù)來自CPU 706的指令接收來自終端設(shè) 備500的QPSK解調(diào)單元502的失真(scrambled)信號,并解擾該 信號。然后,第二解擾器單元702將解擾后的數(shù)據(jù)傳送給CPU706。
擾頻器單元703根據(jù)來自CPU 706的指令對從CPU 706接收的 信號進行擾頻,并將結(jié)果發(fā)送給終端設(shè)備500的QPSK調(diào)制單元503。
主存儲單元704,它的具體組成元件是例如RAM這樣的主存儲 器,當(dāng)CPU 706執(zhí)行處理時用于臨時地存儲數(shù)據(jù)。
輔助存儲單元705,它的具體組成元件是例如閃速ROM這樣的 輔助存儲器,用于存儲將由CPU 706執(zhí)行的程序,并且用于存儲即 使當(dāng)關(guān)閉電源時也不應(yīng)刪除的數(shù)據(jù)。
CPU 706執(zhí)行存儲在輔助存儲單元705中的程序。該程序由多個 子程序構(gòu)成。圖8顯示了存儲在輔助存儲單元705中的程序的例子。 在圖8中,程序800由多個子程序構(gòu)成,包括主程序801、初始化 子程序802、網(wǎng)絡(luò)子程序803、再現(xiàn)子程序804以及PPV子程序805。
這里,PPV是每次觀看付費(Pay Per View)的縮寫,是指一種服 務(wù),其使得用戶能夠在可記帳的基礎(chǔ)上,觀看諸如電影這樣的特定程 序。當(dāng)用戶輸入他/她的個人識別號時,向頭端101通知用戶購買了 觀看程序的權(quán)利,并且解擾程序。因此,用戶能夠觀看該程序。觀看 程序需要用戶在日后為購買付費。
在所有子程序中,主程序801是當(dāng)打開電源時,首先由CPU706 激活的子程序,其控制其它子程序。
當(dāng)打開電源時,由主程序801激活的初始化子程序802與終端設(shè) 備500執(zhí)行信息交換等等,以執(zhí)行初始化處理。該初始化處理在 OpenCable(R) CableCARD(R)接口規(guī)范(OC-SP陽CC-IF-Il 5-031121) 以及該規(guī)范所參考的規(guī)范中詳細(xì)定義。此外,初始化子程序802還執(zhí) 行不在這些規(guī)范中定義的初始化處理。這里,介紹部分這種初始化處 理。當(dāng)打開電源時,初始化子程序802經(jīng)由終端設(shè)備500的CPU514向QPSK解調(diào)單元502通知存儲在輔助存儲單元705中的第一頻率。 QPSK解調(diào)單元502使用所提供的第一頻率執(zhí)行調(diào)諧,并將得到的信 號傳送給第二解擾器單元702。此外,初始化子程序802為第二解擾 器單元702提供解擾信息,例如存儲在輔助存儲單元705中的第一密 鑰。從而,第二解擾器單元702執(zhí)行解擾,并將結(jié)果傳送給執(zhí)行初始 化子程序802的CPU706。因此,初始化子程序802可以接收信息。 在本實施例中,初始化子程序802經(jīng)由網(wǎng)絡(luò)子程序803接收信息。后 面詳細(xì)進行描述。
此外,初始化子程序802經(jīng)由終端設(shè)備500的CPU 514向QPSK 調(diào)制單元503通知存儲在輔助存儲單元705中的第二頻率。初始化子 程序802為擾頻器單元703提供存儲在輔助存儲單元705中的擾頻信 息。當(dāng)初始化子程序802經(jīng)由網(wǎng)絡(luò)子程序803向擾頻器單元703提供 需要被發(fā)送的信息時,擾頻器單元703使用所提供的擾頻信息對數(shù)據(jù) 進行擾頻,并向QPSK調(diào)制單元503提供失真數(shù)據(jù)。QPSK調(diào)制單元 503調(diào)制它接收的失真信息,并將調(diào)制后的信息發(fā)送給頭端101。
因此,初始化子程序802能夠經(jīng)由終端設(shè)備500、第二解擾器單 元702、擾頻器單元703和網(wǎng)絡(luò)子程序803與頭端101執(zhí)行雙向通信。
由多個子程序(例如主程序801和初始化子程序802)使用的網(wǎng)絡(luò) 子程序803是用于執(zhí)行與頭端101的雙向通信的子程序。更具體地, 網(wǎng)絡(luò)子程序803使得其它使用網(wǎng)絡(luò)子程序803的子程序好像是在根據(jù) TCP/IP與頭端101進行雙向通信。因為TCP/IP是當(dāng)在多個終端之間 交換信息時指定將使用的協(xié)議的公知技術(shù),所以這里省略TCP/IP的 詳細(xì)說明。當(dāng)在接通電源時由初始化子程序802激活時,網(wǎng)絡(luò)子程序 803經(jīng)由終端設(shè)備500向頭端101通知MAC地址(媒體訪問控制的縮 寫),其是用于識別POD 504的識別符,并且被預(yù)先存儲在輔助存儲 單元705中,以便請求獲取IP地址。頭端101經(jīng)由終端設(shè)備500向 POD 504通知IP地址,并且網(wǎng)絡(luò)子程序803將該IP地址存儲在主存 儲單元704中。此后,通過使用該IP地址作為POD 504的識別符, 頭端101和POD 504互相通信。
再現(xiàn)子程序804為第一解擾器單元701提供例如存儲在輔助存儲單元705中的第二密鑰這樣的解擾信息以及例如由終端設(shè)備500提供 的第三密鑰這樣的解擾信息,以便使得能夠執(zhí)行解擾。此外,再現(xiàn)子 程序804經(jīng)由網(wǎng)絡(luò)子程序803接收指示輸入第一解擾器單元701的信 號是PPV頻道的信息。當(dāng)被通知信號是PPV頻道時,再現(xiàn)子程序804 激活PPV子程序805。
當(dāng)被激活時,PPV子程序805在終端設(shè)備500上顯示提示用戶購 買所述程序的消息,并接受來自用戶的輸入。更具體地,當(dāng)希望被顯 示在屏蔽上的信息被發(fā)送給終端設(shè)備500的CPU 514時,運行在終 端設(shè)備500的CPU 514上的程序在終端設(shè)備500的顯示器509上顯 示所述消息。然后,當(dāng)用戶經(jīng)由終端設(shè)備500的輸入單元513輸入個 人識別號時,終端設(shè)備500的CPU514接受其,并將其發(fā)送到運行在 POD 504的CPU 706上的PPV子程序805。 PPV子程序805將接受 的個人識別號經(jīng)由網(wǎng)絡(luò)子程序803發(fā)送到頭端101。當(dāng)該個人識別號 有效時,頭端101經(jīng)由網(wǎng)絡(luò)子程序803向PPV子程序805通知解擾 所需的解擾信息,例如第四密鑰。PPV子程序805向第一解擾器單元 701提供所接受的解擾信息,例如所述第四密鑰,然后第一解擾器單 元701解擾所述輸入信號。
參照圖5, TS解碼器505對接受自POD 504的信號進行過濾, 并將必要的數(shù)據(jù)傳送到音頻解碼器506、視頻解碼器508和CPU 514。 這里,發(fā)送自POD 504的信號是MPEG2傳輸流。關(guān)于MPEG2傳輸 流的詳細(xì)說明在MPEG規(guī)范ISO/IEC138181-l中給出,因此在本實施 例中不對其進行詳細(xì)地說明。MPEG傳輸流由多個固定長度的數(shù)據(jù)分 組組成,并且為每個數(shù)據(jù)分組分配一個數(shù)據(jù)分組ID。圖9是顯示數(shù) 據(jù)分組的結(jié)構(gòu)的示圖。900是一數(shù)據(jù)分組,其包含188字節(jié)的固定長 度。頭四個字節(jié)是存儲用于識別數(shù)據(jù)分組的信息的頭901,并且另外 184字節(jié)是存儲希望傳送的信息的有效負(fù)載902。 903顯示了所述頭 901的細(xì)節(jié)。數(shù)據(jù)分組ID包含在從第12比特到第24比特的13個比 特中。圖10是說明待傳送的多個數(shù)據(jù)分組串的概要圖。數(shù)據(jù)分組1001 在它的頭中包含數(shù)據(jù)分組ID "1"并且在它的有效負(fù)載中包含視頻A 的第一信息。數(shù)據(jù)分組1002在它的頭中包含數(shù)據(jù)分組ID "2"并且在它的有效負(fù)載中包含音頻A的第一信息。數(shù)據(jù)分組1003在它的頭 中包含數(shù)據(jù)分組ID "3"并且在它的有效負(fù)載中包含音頻B的第一信息。
數(shù)據(jù)分組1004在它的頭包含數(shù)據(jù)分組ID "1"并且在它的有效 負(fù)載中包含視頻A的第二信息,其是所述數(shù)據(jù)分組1001的后續(xù)的信 息。類似的,數(shù)據(jù)分組1005、 1026和1027攜帶其它數(shù)據(jù)分組的后續(xù) 數(shù)據(jù)。通過按照上述方式連接具有相同數(shù)據(jù)分組ID的數(shù)據(jù)分組的有 效負(fù)載的內(nèi)容,能夠連續(xù)地再現(xiàn)視頻和音頻。
參照圖10。當(dāng)CPU514向TS解碼器505指出數(shù)據(jù)分組ID "1" 以及作為輸出目的地的"視頻解碼器508"時,TS解碼器505從接 收自POD 504的MPEG2傳輸流中提取具有數(shù)據(jù)分組ID " 1"的數(shù)據(jù) 分組,并將它們傳送到所述視頻解碼器508。因此,在圖10中,僅 將視頻數(shù)據(jù)傳送到視頻解碼器508。同時,當(dāng)CPU514向TS解碼器 505指出數(shù)據(jù)分組ID "2"以及"音頻解碼器506"時,TS解碼器505 從接收自POD 504的MPEG2傳輸流中提取具有數(shù)據(jù)分組ID "2"的 數(shù)據(jù)分組,并將它們傳送到所述音頻解碼器506。在圖10中,僅音 頻數(shù)據(jù)被傳送到所述視頻解碼器508。
該根據(jù)數(shù)據(jù)分組ID僅提取必要的數(shù)據(jù)分組的處理對應(yīng)于由TS 解碼器505執(zhí)行的過濾。TS解碼器505能夠按照來自CPU 514的指
令同時執(zhí)行多于一個過濾處理。
參照圖5,音頻解碼器506連接由TS解碼器505提供的、嵌入 在MPEG2傳輸流的數(shù)據(jù)分組中的音頻數(shù)據(jù),對所連接的數(shù)據(jù)執(zhí)行數(shù) 模轉(zhuǎn)化,并向揚聲器507輸出結(jié)果。
揚聲器507將由音頻解碼器506提供的信號作為音頻輸出。
視頻解碼器508連接由TS解碼器505提供的、嵌入在MPEG2 傳輸流的數(shù)據(jù)分組中的視頻數(shù)據(jù),對所連接的數(shù)據(jù)執(zhí)行數(shù)模轉(zhuǎn)化,并 向顯示器509輸出結(jié)果。
顯示器509,其具體的組成元件是CRT或液晶等等,輸出由視頻 解碼器508提供的視頻信號并顯示由CPU 514指定的消息等等。
輔助存儲單元510,其具體的組成元件是閃速存儲器、硬盤等等,
27存儲并刪除由CPU 514指定的數(shù)據(jù)和程序。由CPU 514訪問所存儲 的數(shù)據(jù)和程序。即使當(dāng)終端設(shè)備500斷電時,所存儲的數(shù)據(jù)和程序也 能保存在存儲器中。
主存儲單元511,其具體組成元件是RAM等等,其臨時地存儲 由CPU 514指定的數(shù)據(jù)和程序以及刪除它們。由CPU 514訪問所存 儲的數(shù)據(jù)和程序。當(dāng)終端設(shè)備500斷電時,存儲的數(shù)據(jù)以及程序被刪 除。
ROM 512是只讀存儲器裝置,其具體的組成元件是ROM、 CD-ROM、 DVD等等。ROM512存儲將由CPU514執(zhí)行的程序。
輸入單元513,其具體的組成元件是面板或遙控器,其接受來自 用戶的輸入。圖11顯示當(dāng)以面板的形式配置輸入單元時的輸入單元 的例子。1100是一面板,其對應(yīng)于圖6中顯示的面板單元603。該面 板由七個按鈕組成上指針按鈕1101、指針下按鈕1102、左指針按 鈕1103、右指針按鈕1104、 OK按鈕1105、取消按鈕1106以及EPG 按鈕1107。當(dāng)用戶按下一按鈕時,該被按下的按鈕的識別符被通知 給CPU 514。
CPU 514執(zhí)行存儲在ROM 512中的程序。根據(jù)來自該待執(zhí)行程 序的指令,CPU514控制QAM解調(diào)單元501、 QPSK解調(diào)單元502、 QPSK調(diào)制單元503、 POD 504、 TS解碼器505、顯示器509、輔助 存儲單元510、主存儲單元511以及ROM 512。
圖12是顯示存儲在ROM 512中并且由CPU 514執(zhí)行的程序的
典型結(jié)構(gòu)的示圖。
程序1200由多個子程序組成。更具體地,程序1200由OS 1201、 EPG 1202、 Java (R)VM 1203(以下簡稱為VM 1203)、服務(wù)管理器1204、 以及Java(R)庫1205(以下簡稱庫1205)組成。
OS 1201是當(dāng)終端設(shè)備500通電時將由CPU 514激活的子程序。 OS 1201是操作系統(tǒng)的縮寫,它的例子是Linux等等。OS 1201是一 種公知技術(shù)的普通名稱,其由內(nèi)核1201a和庫1201b組成,內(nèi)核1201a 用于與另一個子程序并行地執(zhí)行一個子程序,因此詳細(xì)說明被省略。 在本實施例中,OS 1201的內(nèi)核1201a執(zhí)行作為子程序的EPG 1202和VM 1203。同時,庫1201b為這些子程序提供控制終端設(shè)備500 的組成元件所需的多個功能。
這里,調(diào)諧作為這種功能一個例子被介紹。使用調(diào)諧的功能,從 另一個子程序接收包括頻率的調(diào)諧信息,然后傳送至QAM解調(diào)單元 501。因此,QAM解調(diào)單元501能夠根據(jù)所提供的調(diào)諧信息執(zhí)行解 調(diào),并將解調(diào)后的數(shù)據(jù)傳送至POD504。因此,其它子程序可以經(jīng)由 庫1201b控制QAM解調(diào)單元。
所述EPG 1202由程序顯示單元1202a以及再現(xiàn)單元1102b組成, 程序顯示單元1202a用于向用戶顯示一列程序以及接受來自用戶的 輸入,再現(xiàn)單元1102b用于選擇頻道。這里,EPG是電子程序指南的 縮寫。當(dāng)終端設(shè)備500通電時EPG 1202被激活。在激活的EPG 1202 中,程序顯示單元1202a等待來自用戶經(jīng)由終端設(shè)備500的輸入單元 513的輸入。這里,當(dāng)輸入單元513采用圖11中說明的面板的形式 時,當(dāng)用戶按下輸入單元513上的EPG按鈕1107時,向CPU 514 通知該EPG按鈕的識別符。EPG 1202的程序顯示單元1202a是運行 在CPU 514上的一子程序,其接受該識別符,并在顯示器509上顯 示程序信息。圖13A和圖13B顯示了在顯示器509上顯示的程序表 的例子。參看圖13A。以網(wǎng)格圖形在顯示器509上顯示程序信息。列 1301描述時間信息。列1302描述頻道名稱"頻道1"和將在對應(yīng)于 列1301中描述的各個時間的時期內(nèi)廣播的程序。其表明,在"頻道 1",從9:00至10:30廣播"新聞9",從10:30至12:00廣播"電影 AAA"。列1303描述頻道名稱"頻道2"和將在對應(yīng)于列1301中描 述的各個時間的時期內(nèi)廣播的程序,如同列1302的情況。從9:00至 ll:OO廣播程序"電影BBB",從ll:OO至12:00廣播"新聞11"。 1330 是光標(biāo)。光標(biāo)1330隨著按下面板IIOO上的左指針1103或右指針1104 而移動。當(dāng)在圖13A的狀態(tài)中按下右指針時,光標(biāo)1330向右移動, 如圖13B所示。當(dāng)在圖13B的狀態(tài)中按下左指針時,光標(biāo)1330向左 移動,如圖13A所示。
當(dāng)在圖13A的狀態(tài)中按下面板1100上的OK按鈕1105時,程 序顯示單元1202a向再現(xiàn)單元1102b通知"頻道1"的識別符。同時,
29當(dāng)在圖13B的狀態(tài)中按下面板1100上的OK按鈕1105時,程序顯示 單元1202a向再現(xiàn)單元1102b通知"頻道2"的識別符。
此外,程序顯示單元1202a定期地將待顯示的程序信息從頭端 101經(jīng)由POD504存儲到主存儲單元511中。通常,從頭端獲得程序 信息要花費時間。然而,在按下輸入單元513的EPG按鈕1107時, 通過顯示被預(yù)先存儲在主存儲單元511中的程序信息,能夠迅速顯示 程序表。
再現(xiàn)單元1102b使用接收的頻道的識別符再現(xiàn)頻道。頻道識別符 和頻道之間的關(guān)系被輔助存儲單元510作為頻道信息預(yù)先存儲。圖 14顯示存儲在輔助存儲單元510中的頻道信息的例子。以表格形式 存儲所述頻道信息。列1401描述頻道的識別符。列1402描述頻道名 稱。列1403描述調(diào)諧信息。這里,調(diào)諧信息由將提供給QAM解調(diào) 單元501的值表示,例如頻率、傳輸速率和編碼比(coding ratio)。列 1404描述程序編號。程序編號是用于識別由MPEG2標(biāo)準(zhǔn)定義的PMT 的編號。隨后給出關(guān)于PMT的描述。行1411 1414中的每一行指出 一組每個頻道的識別符、頻道名稱和調(diào)諧信息。行1411描述一個組, 其中包含"1"作為識別符,"頻道l"作為頻道名稱,"312MHz"的 頻率作為調(diào)諧信息,以及"101"作為程序編號。再現(xiàn)單元1102b直 接將所接收的頻道的識別符傳送給服務(wù)管理器以便再現(xiàn)頻道。
此外,如果用戶當(dāng)正在再現(xiàn)時按下面板1100上的上指針1101和 下指針1102,則再現(xiàn)單元1102b經(jīng)由CPU 514從輸入單元513接收 關(guān)于由用戶進行的該按壓的通知,并將正在被再現(xiàn)的頻道切換到另一 個。首先,再現(xiàn)單元1102b在主存儲單元511中存儲當(dāng)前再現(xiàn)的頻道 的識別符。圖15A、 15B、 15C顯示了存儲在主存儲單元511中的頻 道的識別符的例子。圖15A顯示識別符"3"被存儲,并且通過參照 圖14,表明具有頻道名稱"TV 3"的頻道正在被再現(xiàn)。當(dāng)用戶在圖 15A的狀態(tài)中按下上指針1101時,再現(xiàn)單元1102b參考圖14中顯示 的頻道信息,并且將具有頻道名稱"頻道2"的頻道的識別符"2" 傳送給服務(wù)管理器,以便新再現(xiàn)具有頻道名稱"頻道2"的頻道,其 是所述表中的上一個頻道。同時,再現(xiàn)單元1102b將識別符重寫為存儲在主存儲單元511中的頻道識別符"2"。圖15B顯示該重寫的頻道 識別符。同樣,當(dāng)用戶在圖15A的狀態(tài)中按下下指針1102時,再現(xiàn) 單元1102b參考圖14中顯示的頻道信息,并且將具有頻道名稱"TV 日本"的頻道的識別符"4"傳送給服務(wù)管理器,以便新再現(xiàn)具有頻 道名稱"TV日本"的頻道,其是所述表中的下一個頻道。同時,再 現(xiàn)單元1102b將識別符重寫為存儲在主存儲單元511中的頻道識別符 "4"。圖15C顯示該重寫的頻道識別符。
VM 1203是Java(R)虛擬機,其連續(xù)地分析并執(zhí)行以Java (R)語言 所寫的程序。以Java (R)語言所寫的程序被編譯為稱為字節(jié)代碼的中 間碼,其不依賴于硬件。Java(R)虛擬機是執(zhí)行該字節(jié)代碼的解釋器。 一些Java(R)虛擬機將字節(jié)代碼轉(zhuǎn)化為一種可以由CPU 514理解的可 執(zhí)行的形式,并將結(jié)果傳送給CPU514, CPU514執(zhí)行其。用由內(nèi)核 1201a指定的待執(zhí)行的Java(R)程序激活VM 1203。在本實施例中, 內(nèi)核1201a指定服務(wù)管理器1204作為待執(zhí)行的Java(R)程序。對Java(R) 語言的詳細(xì)注釋在許多書中給出,包括"Java(R) Language Specification" (ISBN 0-201-63451-1)。因此,這里省略關(guān)于其的詳細(xì) 說明。同樣,對Java(R)VM本身的操作的詳細(xì)注釋在許多書中給出, 包括"Java (R) Virtual Machine Specification" (ISBN 0-201-6345l-X)。 因此,這里省略關(guān)于其的詳細(xì)說明。
服務(wù)管理器1204是以Java (R)語言寫的Java (R)程序,其由VM 1203順序地執(zhí)行。通過JNI(Java本地接口),服務(wù)管理器1204能夠調(diào) 用另一個未用Java(R)語言寫的子程序,并且能被另一個未用Java(R) 語言寫的子程序調(diào)用。關(guān)于JNI的說明在許多書中給出,包括"Java(R) 本地接口"。因此,這里省略關(guān)于其的詳細(xì)說明。
服務(wù)管理器1204通過JNI從再現(xiàn)單元1102b接受頻道的識別符。
首先,服務(wù)管理器1204將頻道的識別符傳送給庫1205中的調(diào)諧 器1205c,以便請求調(diào)諧。調(diào)諧器1205c參考存儲在輔助存儲單元510 中的頻道信息以獲得調(diào)諧信息。假定服務(wù)管理器1204將頻道的識別 符"2"傳送給調(diào)諧器1205c,調(diào)諧器1205c參考圖14中顯示的行1412, 并獲得對應(yīng)于所述頻道的調(diào)諧信息"156MHz"。調(diào)諧器1205c經(jīng)由OS 1201的庫1201b將調(diào)諧信息傳送給QAM解調(diào)單元501 。 QAM解 調(diào)單元501根據(jù)發(fā)送給其的調(diào)諧信息解調(diào)發(fā)送自頭端101的信號,并 將結(jié)果信號傳送給POD 504。
然后,服務(wù)管理器1204請求庫1205中的CA 1205b執(zhí)行解擾。 CA 1205d通過OS 1201中的庫1201b為POD 504提供解擾所需的信 息。根據(jù)所提供的信息,POD 504解擾由QAM解調(diào)單元501提供的 信號,并將結(jié)果信號傳送給TS解碼器505。
然后,服務(wù)管理器1204為庫1205內(nèi)的JMF 1205a提供頻道的識 別符,以便請求再現(xiàn)視頻和音頻。
首先,JMF 1205a從PAT和PMT獲得用于指定待再現(xiàn)的視頻和 音頻的數(shù)據(jù)分組ID。 PAT和PMT是由MPEG-2標(biāo)準(zhǔn)定義的表,其顯 示包括在MPEG2傳輸流中的程序應(yīng)用配置(program line-up)。在包含 在MPEG2傳輸流的數(shù)據(jù)分組中的有效負(fù)載中攜帶PAT和PMT以及 音頻與視頻。參照PAT和PMT的詳細(xì)說明的規(guī)范。這里,僅給出PAT 和PMT的概要。
PAT是程序關(guān)系表的縮寫,在具有數(shù)據(jù)分組ID"0"的數(shù)據(jù)分組 中傳送其。為了獲得PAT, JMF 1205a通過OS 1201的庫1201b,向 TS解碼器505指出數(shù)據(jù)分組ID "0"和CPU 514。然后,TS解碼器 505根據(jù)數(shù)據(jù)分組ID "0"執(zhí)行過濾,并將結(jié)果傳送給CPU 514。因 此,JMF 1205a可以收集PAT數(shù)據(jù)分組。圖16說明了示意性地顯示 所收集的PAT信息的例子的表。列1601描述程序編號。列1602描 述數(shù)據(jù)分組ID。列1602中顯示的數(shù)據(jù)分組ID用于獲得PAT。行1611 1613中的每一個包含一對頻道的程序編號以及對應(yīng)于其的數(shù)據(jù)分組 ID。這里,定義了三個頻道。行1611定義了一對程序編號"101"和 數(shù)據(jù)分組ID"501"。假定提供給JMF 1205a的頻道識別符是"2", 則JMF 1205a參考圖14中的行1412,以便獲得對應(yīng)于該頻道識別符 的程序編號"102",然后參考圖16中顯示的PAT中的行1612,以便 獲得對應(yīng)于程序編號"102"的數(shù)據(jù)分組ID"502"。 PMT是程序映射 表的縮寫,其在具有PAT中指定的數(shù)據(jù)分組ID的數(shù)據(jù)分組中被傳送。 為了獲得PMT, JMF 1205a通過OS 1201的庫1201b,向TS解碼器
32505指出數(shù)據(jù)分組ID和CPU 514。這里,將指定的數(shù)據(jù)分組ID是 "502"。然后,TS解碼器505根據(jù)數(shù)據(jù)分組ID "502"執(zhí)行過濾, 并將結(jié)果傳送給CPU 514。因此,JMF 1205a可以收集PMT數(shù)據(jù)分組。
圖17說明了示意性地顯示所收集的PMT信息的例子的表。列 1701描述流類型。列1702描述數(shù)據(jù)分組ID。在各個流類型中指定的 信息在具有列1702中指定的數(shù)據(jù)分組ID的數(shù)據(jù)分組的有效負(fù)載中被 傳送。列1703描述附加信息。1711 1714中的每一行是一對數(shù)據(jù)分 組ID和被傳送的信息的類型,其被稱為基本流(elementary stream)。 行1711是一對流類型"音頻"和數(shù)據(jù)分組ID "5011",其指示音頻 數(shù)據(jù)被存儲在具有數(shù)據(jù)分組ID"5011 "的數(shù)據(jù)分組的有效負(fù)載中。JMF 1205a從PMT獲得將再現(xiàn)的視頻和音頻的數(shù)據(jù)分組ID。參照圖17, JMF 1205a從行1711獲得音頻數(shù)據(jù)分組ID "5011",并從行1712獲 得視頻數(shù)據(jù)分組ID "5012"。
然后,JMF 1205a經(jīng)由OS 1201的庫1201b為TS解碼器505提 供一對所獲得的音頻數(shù)據(jù)分組ID和作為輸出目的地的音頻解碼器 506,并提供一對視頻數(shù)據(jù)分組ID和作為輸出目的地的視頻解碼器 508。 TS解碼器505根據(jù)所提供的數(shù)據(jù)分組ID和輸出目的地執(zhí)行過 濾。這里,將具有數(shù)據(jù)分組ID "5011"的數(shù)據(jù)分組傳送給音頻解碼 器506,并將具有數(shù)據(jù)分組ID"5012"的數(shù)據(jù)分組傳送給視頻解碼器 508。音頻解碼器506對所提供的數(shù)據(jù)分組執(zhí)行數(shù)模轉(zhuǎn)化,以便經(jīng)由 揚聲器507再現(xiàn)音頻。視頻解碼器508對所提供的數(shù)據(jù)分組執(zhí)行數(shù)模 轉(zhuǎn)化,以便在顯示器509上顯示視頻。
最后,服務(wù)管理器1204將頻道識別符提供給庫1205中的AM 1205b,以便請求數(shù)據(jù)廣播再現(xiàn)。這里,數(shù)據(jù)廣播再現(xiàn)的意思是提取 包含在MPEG2傳輸流中的Java (R)程序并使VM 1203執(zhí)行其。作為 一種用于將Java (R)程序嵌入MPEG2傳輸流的技術(shù),使用稱為 DSMCC的方法,其在MPEG規(guī)范ISO/正C 138181-6中描述。這里省 略對DSMCC的詳細(xì)說明。DSMCC規(guī)范定義了一種方法,用于將包 含由計算機使用的目錄和文件的文件系統(tǒng)編碼到MPEG2傳輸流內(nèi)的數(shù)據(jù)分組中。在MPEG2傳輸流內(nèi)的數(shù)據(jù)分組中以AIT的形式傳送關(guān)于待執(zhí)行的Java(R)程序的信息。AIT是應(yīng)用程序信息表的縮寫,其定義在DVB-MHP規(guī)范(正式稱為ETSI TS 101 812 DVB-MHP規(guī)范V1.0.2)的第十章中給出。
首先,為了獲得AIT,與JMF 1205a的情況中一樣,AM 1205b獲得PAT和PMT,以便獲得存儲AIT的數(shù)據(jù)分組的數(shù)據(jù)分組ID。假定"2"是所提供的頻道識別符而且圖16中顯示的PAT和圖17中顯示的PMT正在被傳送,根據(jù)與JMF 1205a所遵循的過程相同的過程,AM 1205b獲得圖17中顯示的PMT。隨后,AM 1205b從PMT提取基本流的數(shù)據(jù)分組ID,該基本流的流類型是"數(shù)據(jù)"并且其具有作為附加信息的"AIT"。如圖17所示,行1713內(nèi)的基本流對應(yīng)于這種基本流,因此AM 1205b從其獲得數(shù)據(jù)分組ID "5013"。
AM 1205b通過OS 1201的庫1201b為TS解碼器505提供AIT的數(shù)據(jù)分組ID和作為輸出目的地的CPU514。然后,TS解碼器505根據(jù)提供的數(shù)據(jù)分組ID執(zhí)行過濾,并將結(jié)果傳送給CPU514。因此,AM 1205b可以收集AIT的數(shù)據(jù)分組。
圖18是示意性地顯示所收集的AIT信息的例子的表。列1801描述Java (R)程序的識別符。根據(jù)MHP規(guī)范,這些識別符被定義為應(yīng)用程序ID,其識別一個Java (R)程序是否是應(yīng)該被終端設(shè)備500的安全管理器1205f認(rèn)證的程序。當(dāng)識別符的值在0x0到0x3fff范圍之內(nèi)時,不需要進行認(rèn)證,而當(dāng)識別符的值在0x4000到0x7fff的范圍之內(nèi)時,需要進行認(rèn)證。識別符的值在前一個范圍之內(nèi)的Java(R)程序被稱為"未簽名程序",而識別符的值在后一個范圍之內(nèi)的Java(R)程序被稱為"簽名程序"。列1802描述用于控制Java(R)程序的控制信息。所述控制信息包含"自動起動(autostart)"、"呈現(xiàn)(present)"和"殺死(kil)"。"自動起動"的意思是終端設(shè)備500自動地迅速執(zhí)行程序。"呈現(xiàn)"的意思是不自動執(zhí)行所述程序。"殺死"的意思是將終止所述程序。列1803描述用于提取包括DSMCC格式的Java(R)程序的數(shù)據(jù)分組ID的DSMCC識別符。列1804描述所述Java(R)程序的程序名。
341811 1812中的每一行都是一組關(guān)于Java(R)程序的信息。在行1811中定義的Java(R)程序是一組識別符"301"、控制信息"自動起動"、DSMCC識別符"1"以及程序名"a/TopXlet"。在行1812中定義的Java(R)程序是一組識別符"302"、控制信息"呈現(xiàn)"、DSMCC識別符"1"以及程序名"b/GameXlet"。這里,這兩個Java(R)程序具有相同的DSMCC識別符。這表示文件系統(tǒng)中包含兩個Java(R)程序,該文件系統(tǒng)已被根據(jù)相同的DSMCC方法編碼。這里,僅為各個Java(R)程序指定四條信息,而實際中指定更多的信息。詳細(xì)內(nèi)容請參考DVB-MHP規(guī)范。
AM 1205b從AIT找到"自動起動"Java(R)程序,并提取對應(yīng)的DSMCC識別符和Java(R)程序名。參照圖18, AM 1205b提取行1811中的Java(R)程序,并獲取DSMCC識別符"1"和Java(R)程序名"a/TopXlet"。
然后,AM 1205b使用從AIT獲取的DSMCC識別符,從PMT獲取以DSMCC格式存儲Java(R)程序的數(shù)據(jù)分組的數(shù)據(jù)分組ID。更具體地,AM 1205b從PMT獲取包含在基本流中的數(shù)據(jù)分組ID,該基本流的流類型是"數(shù)據(jù)"并且在附加信息中的DSMCC識別符是匹配的。
這里,假定該DSMCC識別符為"1",并且PMT如圖17所示,行1714中的基本流滿足上述條件。因此,將提取數(shù)據(jù)分組ID"5014"。
AM 1205b通過OS 1201的庫1201b,向TS解碼器505指出其中以DSMCC格式嵌入數(shù)據(jù)的數(shù)據(jù)分組的數(shù)據(jù)分組ID,以及作為輸出目的地的CPU 514。這里,提供數(shù)據(jù)分組ID "5014"。然后,TS解碼器505根據(jù)所提供的數(shù)據(jù)分組ID執(zhí)行過濾,并將結(jié)果傳送給CPU514。因此,AM 1205b可以收集需要的數(shù)據(jù)分組。AM 1205b根據(jù)DSMCC方法,基于所收集的數(shù)據(jù)分組重建文件系統(tǒng),并且將重建的文件系統(tǒng)存儲到主存儲單元511。用于從MPEG2傳輸流的數(shù)據(jù)分組中提取數(shù)據(jù)(例如文件系統(tǒng)),以及將所提取的數(shù)據(jù)存儲到存儲單元(例如主存儲單元5H)的處理以下被稱為下載。
圖19顯示了下載的文件系統(tǒng)的例子。在圖中,圓圈表示目錄,方框表示文件,其中,1901是根目錄,1902是目錄"a", l卯3是目錄"b", 1904是文件"TopXlet.class"并且1905是文件"GameXlet.class"。隨后,AM 1205b將一Java (R)程序傳送到VM 1203,所述Java (R)程序?qū)⒃谙螺d到主存儲單元511中的文件系統(tǒng)之外執(zhí)行。這里,假定將執(zhí)行的Java (R)程序的程序名是"a/TopXlet",通過將".class"附加到上述Java(R)程序名得到的文件"a/TopXletxlass"是將被執(zhí)行的文件。"/"是目錄和文件名之間的分界符,并且如圖19所示,文件1904是將執(zhí)行的Java (R)程序。然后,AM 1205b將文件l卯4傳送到VM 1203,這是因為描述Java(R)程序的識別符的列1801指示未簽名的程序,這意謂著不必請求安全管理器1205f對該Java(R)程序執(zhí)行認(rèn)證0
VM 1203執(zhí)行所接收的Java(R)程序。
在接收到另一個頻道的識別符后,服務(wù)管理器1204通過包含在相同庫1205中的每個庫,終止視頻和音頻的再現(xiàn),并終止執(zhí)行正在通過包含在庫1205中的每個庫執(zhí)行的Java(R)程序,然后根據(jù)新接收的頻道識別符對視頻和音頻進行再現(xiàn),并且執(zhí)行Java(R)程序。
庫1205是存儲在ROM 512中的多個Java (R)庫的集合。在本實施例中,庫1205包含JMF 1205a、AM 1205b、調(diào)諧器1205c、CA 1205d、PODLibl205e、安全管理器1205f、下載模塊1206等等。
服務(wù)管理器1204和下載模塊1206經(jīng)由包含在庫1205中的PODLib 1205e與頭端101執(zhí)行雙向通信??梢酝ㄟ^POD Lib 1205e使用QPSK解調(diào)單元502和QPSK調(diào)制單元503,經(jīng)由OS 1201的庫1201b和POD 504來實現(xiàn)雙向通信。
下載模塊1206可以通過該通信從頭端101接收代碼數(shù)據(jù)。代碼數(shù)據(jù)是指包含X.509證書和/或終端設(shè)備500的固件(firmware)的二進制數(shù)據(jù)。
圖20說明了示意性地顯示從頭端101獲得的XAIT信息的例子的表。列2001描述Java(R)程序的識別符。列2002描述用于控制Java(R)程序的控制信息。控制信息包含"自動起動"和"呈現(xiàn)"。"自動起動"的意思是,當(dāng)終端設(shè)備500通電時,自動地執(zhí)行程序,"呈現(xiàn)"的意思是,不自動地執(zhí)行所述程序。列2003描述用于提取包含DSMCC格式的Java(R)程序的數(shù)據(jù)分組ID的DSMCC識別符。列2004描述Java(R)程序的程序名。列2005描述Java(R)程序的優(yōu)先級。列2006描述Java(R)程序的版本號。行2011指示一組關(guān)于Java(R)程序的信息。定義在行20H中的Java(R)程序是一組識別符"0x7001"、控制信息"自動起動"、DSMCC識別符"1"和程序名"a/xletl"??梢愿鶕?jù)其Java(R)程序應(yīng)用程序ID知道該Java(R)程序是簽名程序。這里,僅為Java(R)程序指定了六段信息,但是即使當(dāng)定義了更多段的信息時,也可以實現(xiàn)本發(fā)明。
當(dāng)接收到XAIT信息時,AM 1205b根據(jù)與用于根據(jù)AIT信息下載Java(R)程序的過程相同的過程,將來自MPEG2傳輸流的文件系統(tǒng)存儲到主存儲單元511中。
之后,將文件系統(tǒng)存儲到輔助存儲單元510中,但是,如果該文件系統(tǒng)包含如圖34所示的"應(yīng)用程序描述文件",則AM 1205b根據(jù)所述"應(yīng)用程序描述文件"的描述將特定文件存儲到文件系統(tǒng)。AM1205b在其將文件系統(tǒng)存儲到輔助存儲單元510之前,向安全管理器1205f發(fā)出預(yù)存儲通知。響應(yīng)于此,安全管理器1205f執(zhí)行認(rèn)證,并通知AM 1205b允許激活。當(dāng)被安全管理器1205f通知允許激活時,AM 1205b將包含在文件系統(tǒng)中的特定文件存儲到輔助存儲單元510中。由AM 1205b和安全管理器1205f執(zhí)行的處理是本發(fā)明的主要功能,后面將詳細(xì)描述這些處理。
然后,AM 1205b把將XAIT信息與下載的文件系統(tǒng)的存儲位置相關(guān)聯(lián)而得到的結(jié)果存儲到輔助存儲單元510中。圖21顯示了彼此關(guān)聯(lián)地存儲在輔助存儲單元510中的XAIT信息和下載的文件系統(tǒng)的例子。這里,將在OCAP規(guī)范中定義的文件作為例子描述。圖21中的元素與圖20中的對應(yīng)元素彼此相同,因此省略對這些元素的說明。列2101存儲下載的文件系統(tǒng)的存儲位置。在圖21中,由箭頭指示這些存儲位置。2110是下載的文件系統(tǒng),其中包含頂層目錄(還稱為根目錄)2120、目錄"a" 2121、目錄"b" 2122、文件"ocap.storage"2130、文件"ocap.certificates.l "2131、文件"ocap.signaturefile.l "2132、文件"ocap.hashfile" 2140 2142、文件"xletl.class" 2150以及文件"sub.dass" 2151。
文件2130是"應(yīng)用程序描述文件",其用XML(可擴展標(biāo)記語言)格式來描述,如圖34所示。圖35是顯示文件列表信息的例子的示圖,所述文件列表信息顯示文件2130的描述。圖35中的351是指示文件2130的描述的文件列表信息。列3511描述文件名。列3512描述各個文件的版本號。這里,僅為"應(yīng)用程序描述文件"指定了兩條信息,但是,如果定義了更多條信息,也能夠?qū)崿F(xiàn)本發(fā)明。注意,作為列3512中描述的每個文件的版本號,包含該文件的程序的程序號2006的值被基本上給出,并且作為在列3512中描述的、即使當(dāng)它的程序的版本被升級時其內(nèi)容也不會改變的唯一文件的版本號,該程序在被升級前的程序號2006的值被給出。
文件2140 2142是散列文件,其中包含文件名或目錄名以及對應(yīng)的散列值。圖22A、 22B和22C是顯示"ocap.hashfiles"的細(xì)節(jié)的概要圖。圖22A中的221顯示"ocap.hashfile"2116,圖22B中的222顯示"ocap.hashfile"2117,圖22C中的223顯示"ocap.hashfile"2118。221的"ocap.hashfile"存在于"/"目錄2120中,其在列2211中包含"ocap.storage"文件2130、 "ocap.certificates.l"文件2131以及"a"目錄2121,它們存在于相同的目錄2120中。列2212指示使用哪種散列算法來計算在列2213中描述的每個值。列2213與列2211中的文件或目錄有關(guān),列2213包含通過利用列2212中指定的散列算法而計算的散列值。當(dāng)前主要使用的散列算法是SHA1(安全散列算法1)和MD5(消息摘要5)。這些是用于將具有任意長度的數(shù)據(jù)轉(zhuǎn)換為固定長度字節(jié)值的公知算法,它們具有以下特征在原始數(shù)據(jù)被轉(zhuǎn)換后,不可能推算出原始數(shù)據(jù);以及它們被用于檢查文件是否已被破壞或篡改。
同時,散列值是通過使用散列算法而產(chǎn)生的偽隨機數(shù)。當(dāng)散列算法是SHA1時,散列值的長度是20字節(jié),而當(dāng)散列算法是MD5時,散列值的長度變?yōu)?6字節(jié)。關(guān)于SHA1和MD5的詳細(xì)介紹可以分別參考"FIPS-PUB 186-2 Secure Hash Standard"禾口 "正TF RFC1321"。
38這里,對應(yīng)于列2211中描述的"a"目錄的散列值是SHA1散列值,其是已經(jīng)為"a"目錄中存在的"ocap.hashfile"文件2141而計算的值。
與在221中的"ocap,hashfile"的例子相同,222中的"ocap.hashfile"包含"xletl.class "文件2150的文件名以及目錄名、散列算法和目錄"b" 2122的散列值。類似地,223中的"ocap.hashfile"包含文件名、散列算法和存在于相同目錄2122中的"sub.class "文件2151
的散列值。
這里,僅描述與本發(fā)明有關(guān)的屬性,因此,關(guān)于"ocap.hashfile"的詳細(xì)內(nèi)容,應(yīng)該參考OCAP規(guī)范"OpenCable(R) Application Platformspecification OCAP 1.0 Profile(OC-SP-OCAPl,0國IF-109-031121)"。
文件2131是證書鏈。圖23是顯示"ocap.certificate.l"文件2131的詳細(xì)結(jié)構(gòu)的示圖。231描述"ocap.certificate.x" (x是正整數(shù))的典型結(jié)構(gòu),其包含根證書2311、中間證書2312和葉證書2313。它們處于鏈關(guān)系中,例如其中,根證書2311的持有者發(fā)行中間證書2312,并且中間證書2312的持有者發(fā)行葉證書2313。注意,根據(jù)OCAP規(guī)范,與簽名文件"ocap.signaturefile.x"有關(guān)的證書鏈?zhǔn)蔷哂邢嗤?x"的"ocap.C6rtificate.x"o
在圖21的例子中,對應(yīng)于"ocap.signaturefile.l"的證書鏈?zhǔn)?ocap.certificate.l"。同樣,根證書2311、中間證書2312、葉證書2313被配置為相同的X.509證書格式。作為ITU-T的推薦標(biāo)準(zhǔn),X,509證書被廣泛用于信息和通信行業(yè)中的各個領(lǐng)域,作為證書表現(xiàn)格式的事實上的標(biāo)準(zhǔn)。在圖23中,僅說明了三個證書,但是可以有存在多個中間證書的情況。然而,在這種情況下,這些中間證書必須處于鏈狀態(tài)中,其中它們彼此相關(guān)。
圖24是顯示X.509證書的結(jié)構(gòu)的示圖。這里,僅說明了說明本發(fā)明所需的屬性。關(guān)于X.509的詳細(xì)內(nèi)容,請參考正TF RFC3280
241指示X.509證書的屬性區(qū)域,242指示X,509證書的簽名值。序列號2411指示識別證書的編號,簽名算法2412指示用于確定簽名值242的算法,本次更新日期和時間2413指示當(dāng)該X.509證書變?yōu)橛?效時的日期和時間,下次更新日期和時間2414指示當(dāng)X.509證書期 滿時的日期和時間,發(fā)行人名稱2415指示發(fā)行該X.509證書的管理 機構(gòu)的名稱,主體名稱2416指示該X.509證書的持有者,公鑰2417 指示主體名稱2416的公鑰,簽名值242指示己使用該X.509證書的 發(fā)行人的私鑰簽名(加密)的值。在本實施例中,本次更新日期和時間 2413和下次更新日期和時間2414需要日期和時間的信息,但是,本 次更新日期和時間2413和下次更新日期和時間2414并不總是需要時 間信息。作為使用公鑰和私鑰的系統(tǒng),公鑰密碼系統(tǒng)被廣泛用于電子 商務(wù)等。在公鑰密碼系統(tǒng)中,使用不同于加密明文所用的密鑰的密鑰 來解密密文。由于加密密鑰和解密密鑰不同,所以不能根據(jù)解密密鑰 推斷出加密密鑰。加密密鑰對應(yīng)于私鑰,而解密密鑰對應(yīng)于公鑰。公 鑰密碼系統(tǒng)的典型例子包括RSA(Rivest-Shamir-Adleman)和 DSA(Digital Signature Standard)。
文件2132是簽名文件。圖25是顯示"ocap. signaturefile. 1"文件 2132的示意圖。251指示用于識別關(guān)聯(lián)哪個乂.509證書的證書識別符, 252指示散列簽名算法,253指示通過使用在252中指示的散列簽名 算法根據(jù)"ocap.hashfile" "40所計算的簽名值。
一旦將Java (R)程序存儲到輔助存儲單元510中,即使當(dāng)由于頻 道改變和終端設(shè)備500斷電等原因,將Java (R)程序從主存儲單元511 刪除時,只要AM 1205b已接收到圖20中所示的XAIT,就能夠在不 需要等待下載的情況下激活該Java(R)程序。也就是說,在圖20中, 程序"/a/xletl"的控制信息2002是"自動起動"。因此,在圖21的 2011中,當(dāng)對文件系統(tǒng)的對應(yīng)于"/a/xIetl"的存儲位置2101進行搜 索,然后文件2150被傳送到VM 1203時,存儲在該文件系統(tǒng)中的 Java(R)程序"xletl"被激活。
然后,對由AM 1205b和安全管理器1205f執(zhí)行的處理進行描述, 這些處理是本發(fā)明的主要功能,用于認(rèn)證存儲在主存儲單元511中的 文件系統(tǒng)以及將所認(rèn)證的文件系統(tǒng)存儲到輔助存儲單元510中。
首先描述AM 1205b的功能,然后描述安全管理器1205f的功能,最后描述由AM 1205b和安全管理器1205f執(zhí)行的處理的流程。 首先,描述AM 1205b。
圖36顯示AM 1205b的組成部分,AM 1205b用于將存儲在主存 儲單元511中的文件系統(tǒng)存儲到輔助存儲單元510中。
當(dāng)將存儲新下載的Java(R)程序時,文件系統(tǒng)比較單元3601將存 儲在主存儲單元511中的文件系統(tǒng)的"/"目錄中包含的"ocap.storage" 的描述與存儲在輔助存儲單元510中的"/"目錄中包含的 "ocap.storage"的描述進行比較,其中,所述Java(R)程序?qū)⒈淮鎯?到所述輔助存儲單元510中。然后,文件系統(tǒng)比較單元3601提取指
示將被存儲的文件的文件列表信息(以下簡稱為文件列表信息),并將 一對提取的文件列表信息和Java(R)程序識別符2001傳送到文件系統(tǒng) 管理單元3602。文件系統(tǒng)管理單位3602根據(jù)來自文件系統(tǒng)存儲單元 3603的查詢,通過使用從文件系統(tǒng)比較單元3601傳送的文件列表信
息來提供所述文件列表信息。
文件系統(tǒng)存儲單元3603向文件系統(tǒng)管理單元3602查詢,以便獲
得文件列表信息,并根據(jù)所獲得的文件列表信息,將文件從主存儲單 元511存儲入輔助存儲單元510。
例如,考慮以下例子圖37顯示基于Java(R)程序的文件系統(tǒng)中 的"ocap.storage"的文件列表信息的詳細(xì)內(nèi)容,所述Java(R)程序已 被在前一次下載和認(rèn)證時,在其被存儲入主存儲單元511后,存儲入 輔助存儲單元510;并且圖35顯示基于Java(R)程序的文件系統(tǒng)中的
"ocap.storage"的文件列表信息的詳細(xì)內(nèi)容,其中,所述Java(R)程 序是已被通過已根據(jù)圖21中顯示的XAIT信息執(zhí)行的下載而存儲入 主存儲單元511的Java(R)程序。在本例中,文件系統(tǒng)比較單元3601 將圖38中顯示的文件列表信息和已被新存儲入主存儲單元511的 Java(R)程序的程序識別符2001傳送到文件系統(tǒng)管理單元3602。
如圖38所示,圖38的文件列表信息中顯示的是在圖37中顯示 的、然而未在圖35中顯示的文件(即,"/a/c/ocap,hashfile"和
"/a/c/sub.class")以及同時在圖37和圖35中顯示的、但版本號不同 的文件(即"/ocap.hashfile", "/ocap .singaturefile,l ", "/a/ocap. hashfile "
41和"/a/xlet.class"),而在圖37和圖35中共同顯示的文件不在圖38 的文件列表信息中描述。
文件系統(tǒng)管理單元3602管理一對Java(R)程序的程序識別符2001 和文件列表信息,并且文件系統(tǒng)存儲單元3603向文件系統(tǒng)管理單元 3602查詢將存儲的文件,以便根據(jù)所接收的文件列表信息存儲文件。
以下通過采用一個例子,其中將存儲行2011中定義的Java(R)程 序,來詳細(xì)描述由文件系統(tǒng)比較單元3601、文件系統(tǒng)管理單元3602 和文件系統(tǒng)存儲單元3603執(zhí)行的處理。
圖39是顯示由文件系統(tǒng)比較單元3601執(zhí)行的處理的流程圖。文 件系統(tǒng)比較單元3601檢査在存儲在主存儲單元511中的文件系統(tǒng)的 "/"目錄中是否存在"ocap.storage"(步驟S391)。當(dāng)存在有 "ocap.storage"時,文件系統(tǒng)比較單元3601根據(jù)存儲在主存儲單元 511中的"ocap.storage"的描述生成文件列表信息351(步驟S392)。
當(dāng)步驟S391的檢查結(jié)果為不存在"ocap.storage"時,在本例子 中終止所述處理,但是同樣能夠使用包含下列信息的文件列表信息 351移到步驟S393,所述信息為(i)參考存儲在主存儲單元511中的文 件系統(tǒng)的文件結(jié)構(gòu)生成的文件名列3511,以及(ii )根據(jù)版本號2006 生成的版本號列3512。
然后,文件系統(tǒng)比較單元3601檢查在存儲在輔助存儲單元510 中的"/"目錄中是否存在"ocap.storage",其中,新下載的Java(R) 程序被存儲到所述輔助存儲單元510中(在本實施例中,給出一個例 子的描述,其中,圖21中顯示的Java(R)程序被新下載的Java(R)程 序所替換)(步驟S393)。當(dāng)存在有"ocap.storage"時,文件系統(tǒng)比較 單元3601根據(jù)存儲在輔助存儲單元510中的"ocap.storage"的描述 生成文件列表信息371(步驟S394)。
當(dāng)步驟S393的檢查結(jié)果為不存在"ocap.storage"時,在本例子 中終止所述處理,但是同樣能夠使用包含下列信息的文件列表信息 371移到步驟S395,所述信息為(i)參考存儲在輔助存儲單元510中的 文件系統(tǒng)的文件結(jié)構(gòu)生成的文件名列3711,以及(ii )根據(jù)最小的版 本號1生成的版本號列3712。
42然后,文件比較單元3601將文件列表信息351與文件列表信息 371進行比較,以提取差別,并生成文件列表信息3S1(步驟S395)。 最后,文件比較單元3601向文件管理單元3602傳送一對Java(R)程 序識別符2001以及文件列表信息3S1(步驟S396)。
圖40是顯示由文件系統(tǒng)管理單元3602執(zhí)行的處理的流程圖。當(dāng) 接收到Java(R)程序識別符2001以及對文件列表信息的查詢時(步驟 S401),文件系統(tǒng)管理單元3602將對應(yīng)于所接收的Java (R)程序識別 符2001的文件列表信息381返回給查詢者(步驟S402)。
圖41是顯示由文件系統(tǒng)存儲單元3603執(zhí)行的處理的流程圖。當(dāng) 接收到Java(R)程序識別符2001以及存儲所述Java(R)程序的請求時 (步驟S411),文件系統(tǒng)存儲單元3603獲得提供給文件系統(tǒng)管理單元 3602的、對應(yīng)于Java(R)程序識別符2001的文件列表信息3S1(步驟 S412)。然后,文件系統(tǒng)存儲單元3603判斷是否已獲得文件列表信息 381(步驟S413)。當(dāng)判斷己獲得文件列表信息381時(步驟413:是), 文件系統(tǒng)存儲單元3603將版本號2006與在所獲得的文件列表信息 381的列3812中描述的每個版本號進行比較,并從第一行開始比較 (步驟S414)。
當(dāng)版本號2006更大時(步驟S415),文件系統(tǒng)存儲單元3603刪除 存儲在輔助存儲單元510中的、對應(yīng)于在文件列表信息381的當(dāng)前行 的列381中描述的文件名的文件。在圖38中顯示的例子中,兩個文 件"/a/c/ocap,hashfile"和"/a/c/sub.class"將被刪除(步驟S416)。當(dāng) 版本號2006不是較大的時,文件系統(tǒng)存儲單元3603判斷當(dāng)前比較的 版本號是否等于版本號2006(步驟S417)。當(dāng)這些版本號相等時,文 件系統(tǒng)存儲單元3603將存儲在主存儲單元511中的、對應(yīng)于在文件 列表信息381的當(dāng)前行的列3811中描述的文件名的文件存儲到輔助 存儲單元510中。注意,當(dāng)該文件存在于輔助存儲單元510中時,這 里的"存儲文件"是指"重寫文件",當(dāng)沒有文件存在于輔助存儲單 元510中時,這里的"存儲文件"是指"另外存儲文件"。還要注意, 在這里的存儲操作之前,已完成隨后描述的認(rèn)證操作。最后,文件系 統(tǒng)存儲單元3603判斷是否己達到文件列表信息的最后一行(步驟S419)。當(dāng)不是最后一行時,文件系統(tǒng)存儲單元3603返回步驟S414, 而當(dāng)是最后一行時,所述處理結(jié)束。
注意,只要該方法能夠存儲較大版本的文件并刪除較老版本的文 件,就可以使用另一種方法。此外,在以上描述中,通過使用版本號 2006 —種在文件列表信息381列3812中描述的版本號來區(qū)別較大的 和較老的版本,但是,可以使用另外的方法,只要能夠區(qū)別較大和較 老的版本就行。
下面,給出由安全管理器1205f執(zhí)行的一般操作的描述。假定, 例如,安全管理器1205f從AM 1205b接收到指示將存儲定義在行 2011中的Java(R)程序的預(yù)存儲通知。當(dāng)接收到該通知時,安全管理 器1205f檢査Java(R)程序識別符2001的值以判斷其是未簽名程序還 是簽名程序。這里,因為Java(R)程序是簽名程序,所以安全管理器 1205f對"/"目錄以下的文件系統(tǒng)執(zhí)行認(rèn)證。為了檢驗所述文件系統(tǒng), 通過使用ocap.hashfile(2140 2142) 、 ocap.certificates.1(2131)和 ocap.signaturefile.l(2132)來執(zhí)行認(rèn)證。
圖26顯示用于執(zhí)行文件系統(tǒng)的認(rèn)證的安全管理器1205f的組成 部分。
通知接收單元261用于在AM 1205b即將存儲文件系統(tǒng)之前接收 預(yù)存儲通知,以及用于將該事實通知給判斷單元262。
判斷單元262判斷認(rèn)證結(jié)果。其請求散列計算單元263對文件系 統(tǒng)進行散列計算以接收散列值。判斷單元262從存在于"ocap.hashfile" 文件中的散列值2213和2223提取將比較的值,并檢査其與所接收的 散列值是否相配。如果它們不匹配,則判斷單元262判斷已發(fā)生篡改, 并且認(rèn)證以失敗結(jié)束。
此外,判斷單元262使用證書提取單元265提取每個X.509證書, 并且判斷當(dāng)前時間是否不在每個X. 509證書的本次更新日期與時間 2413之前,并且不在每個X. 509證書的下次更新日期與時間2414之 后(也就是說,當(dāng)前時間在每個509證書的本次更新日期與時間2413 和下次更新日期與時間2414之間)。從OS 1201的庫1201b獲得當(dāng)前 日期和時間。如果有效期不滿足"本次更新日期和時間<當(dāng)前日期和時間<下次更新日期和時間",則判斷單元262判斷認(rèn)證失敗。
此外,為了認(rèn)證證書鏈,判斷單元262請求散列計算單元263對 每個1509證書的屬性區(qū)域241進行散列計算。然后,其請求簽名值 解密單元264執(zhí)行用于解密每個X.509證書中包含的簽名值242的計 算,并將得到的解密值與通過散列值計算單元263獲得的散列值進行 比較,以便檢查證書鏈的狀態(tài)。如果它們不匹配,則意味著證書不處 于鏈關(guān)系中,并且因此判斷認(rèn)證失敗。同時,當(dāng)值匹配并且已證實證 書處于鏈關(guān)系中時,檢查所述證書鏈中的根證書是否包含在終端設(shè)備 500的輔助存儲單元510中。如果不包含,則判斷單元262判斷認(rèn)證 失敗,也就是說不能執(zhí)行比較。
當(dāng)滿足下列所有條件時,判斷單元262判斷認(rèn)證成功,所述條件 為(l)沒有篡改;(2)處于有效期;(3)證書處于鏈關(guān)系中;(4)根證書 匹配。
當(dāng)被判斷單元262請求計算每個文件的散列值時,散列計算單元 263從OS 1201的庫1201b中提取每個文件,以對它們執(zhí)行散列計算, 并將結(jié)果值傳送給判斷單元262。此外,散列計算單元263從證書提 取單元265獲得證書鏈231中的每個1509證書,并對它們中的每一 個的屬性區(qū)域241執(zhí)行散列計算。
由判斷單元262請求簽名值解密單元264執(zhí)行用于解密每個X. 509證書或"ocap.signaturefile.x"的簽名值的計算。當(dāng)執(zhí)行計算以解 密每個X.509證書的簽名時,簽名值解密單元264從證書提取單元 265獲得證書鏈231中的每個X,509證書,然后執(zhí)行用于解密它們中 的每一個的簽名的計算,并返回結(jié)果給判斷單元262。
由判斷單元262、散列計算單元263、簽名值解密單元264請求 證書提取單元265提取證書鏈231中的每個X,509證書,并且提取并 返回X.509證書。
圖27是概述當(dāng)執(zhí)行文件系統(tǒng)的認(rèn)證時,由安全管理器1205f執(zhí) 行的操作的流程圖?;谠摿鞒虉D,給出當(dāng)文件系統(tǒng)具有圖21中顯 示的結(jié)構(gòu)時執(zhí)行的操作的說明。當(dāng)從AM 1205b接收到文件系統(tǒng)的預(yù) 存儲通知時(步驟S271),安全管理器1205f對文件系統(tǒng)的頂層"/"目錄以下的文件系統(tǒng)執(zhí)行篡改檢查(步驟S272)。在篡改檢査中,通過比較散列值,證實在存在于文件系統(tǒng)的每個目錄中的文件中未發(fā)生破壞或更改。
圖29和圖30是步驟S272的詳細(xì)流程圖。首先,安全管理器1205b從文件系統(tǒng)管理單元3602獲得對應(yīng)于程序識別符2001的文件列表信息381(步驟S290)。然后,安全管理器1205f聚焦于文件系統(tǒng)中的7"目錄(步驟S291),并執(zhí)行比較以判斷所獲得的文件列表信息381是否包含在所聚焦的目錄中包含的文件(步驟S292)。如果判斷結(jié)果是存在文件(步驟S293 :是),則安全管理器1205f計算文件"ocap.certificates.l"禾t3 "ocap .storage"以及目錄"a"的散列值(步驟S294)。目錄"a"的散列值是根據(jù)"/a/ocap.hashfile"文件222來計算的。然后,安全管理器1205f將在步驟S294中計算的每個散列值與在"/ocap.hashfile"的2213中描述的每個散列值進行比較(步驟S295)。在步驟S296中,如果有任何所計算的散列值不同于2213中的散列值,則安全管理器1205f判斷己發(fā)生篡改(步驟S299)。同時,當(dāng)所有所計算的散列值都與2213中的散列值匹配時,安全管理器1205f移動到步驟S297。如果判斷是沒有文件(步驟S293:否),在安全管理器1205f轉(zhuǎn)移到步驟S297。
在步驟S297,檢査是否存在還未完成篡改檢查的任何子目錄。在當(dāng)前階段,存在作為"/"目錄的子目錄的"a"目錄。因此,聚焦于"a"目錄,以便對其執(zhí)行篡改檢查,作為步驟S298,其中,執(zhí)行與為"/"目錄執(zhí)行的處理相同的處理。在為"a"目錄完成篡改檢查之后,為"b"目錄執(zhí)行篡改檢查,"b"目錄是"a"目錄的子目錄。當(dāng)己經(jīng)為所有的目錄完成篡改檢査時,聚焦于"/"目錄,執(zhí)行圖30中的步驟S301的處理。在步驟S301中,從作為證書鏈231的"/ocap.certificates.1 "文件2131提取葉證書2313。然后,在步驟S302,從所提取的葉證書2313中取出公鑰2417。隨后,在步驟S303,為"/ocap.hashfile"文件221計算散列值。
同時,在步驟S304,使用存在于"/ocap.certificatefile.l"文件2131中的葉證書2313中的公鑰2417對"/ocap.sig幽refile.l"文件2132中的簽名值242執(zhí)行解密。在步驟S305,檢查在步驟S303計算的散列值是否等于在步驟S304通過解密簽名值而獲得的值。如果這些所計算的值匹配,則能夠斷定"/"目錄以下的文件系統(tǒng)未被篡改(步驟S306)。如果這些所計算的值不匹配,則能夠斷定所述文件系統(tǒng)己被篡改(步驟S307)。注意,已給出了一個例子的描述,其中,以降序從頂層"/"目錄開始向子目錄依次執(zhí)行篡改檢查,但是本發(fā)明不局限于此。因此,可以以升序,從最低層目錄開始向頂層目錄依次執(zhí)行處理。通過以上處理,獲得圖27中的步驟S272的結(jié)果。
在步驟S273,當(dāng)步驟S272中的結(jié)果是"已發(fā)生篡改"時,判斷認(rèn)證失敗,并且發(fā)送關(guān)于該事實的通知(步驟S279),之后結(jié)束處理。當(dāng)步驟S272的結(jié)果是"沒有篡改"時,執(zhí)行步驟S274的處理。
接下來,參照圖31至圖33,給出證書鏈認(rèn)證的詳細(xì)說明(步驟S274)。假定首先對中間證書2312和葉證書2313執(zhí)行檢査,圖31中顯示了其流程圖。首先,從證書鏈231中提取中間證書2312和葉證書2313(步驟S311)。從該提取的葉證書2313中提取本次更新日期與時間2413、下次更新日期與時間2414以及發(fā)行人名稱2415(步驟S312)。對于它們,判斷當(dāng)前日期和時間是否在所述本次更新日期與時間2413和下次更新日期與時間2414之間,在這期間,證書保持有效(步驟S313)。如果其超出了證書可以保持有效的時期,則證書鏈的認(rèn)證以失敗結(jié)束(步驟S319)。同時,當(dāng)判斷其在證書的有效期內(nèi)時,提取中間證書2312中的主體名稱2416和公鑰2417(步驟S314),并且將中間證書2312的主體名稱2416與葉證書2313的發(fā)行人名稱2415進行比較,以判斷所述中間證書2312和所述葉證書2313是否處于鏈關(guān)系中(步驟S315)。
如果這些證書不處于鏈關(guān)系中,則證書鏈的認(rèn)證失敗。同時,當(dāng)在它們之間存在鏈關(guān)系時,為葉證書2313的屬性區(qū)域241計算散列值(步驟S316)。此外,用中間證書2312的公鑰2417來解密葉證書2313中的簽名值242(步驟S317)。當(dāng)完成步驟S316和步驟S317時,
檢查在各個步驟中獲得的散列值和解密的簽名值是否匹配(步驟S318)。如果它們不匹配,則證書鏈的認(rèn)證以失敗結(jié)束(步驟S319)。
47接下來,在根證書2311和中間證書2312之間執(zhí)行檢查。圖32是顯示該處理的流程圖。從證書鏈231提取根證書2311和中間證書2312(步驟S321),并且為根證書2311和中間證書2312執(zhí)行與為中間證書2312和葉證書2313執(zhí)行的檢查相同的處理(步驟S322 步驟S328)。
當(dāng)在步驟S328中判斷所述值匹配時,單獨對根證書2311執(zhí)行檢查。圖33是顯示將單獨為根證書2311執(zhí)行的檢查的流程圖。從在步驟S321中提取的根證書2311中提取本次更新日期與時間2413、下次更新日期與時間2414以及發(fā)行人名稱2415(步驟S331)。對于它們,判斷當(dāng)前日期和時間是否在所述本次更新日期與時間2413和下次更新曰期與時間2414之間,在這期間,證書保持有效(步驟S332)。如果其超出了證書可以保持有效的時期,則證書鏈的認(rèn)證以失敗結(jié)束。同時,當(dāng)判斷其在證書的有效期內(nèi)時,為根證書2311的屬性區(qū)域241計算散列值(步驟S334)。此外,用根證書2311的公鑰2417來解密根證書2311中的簽名值242(步驟S335)。當(dāng)完成步驟S334和步驟S335時,檢査在相應(yīng)步驟中獲得的散列值和解密的簽名值是否匹配(步驟S336)。如果它們匹配,則證書鏈的認(rèn)證成功(S337),而如果它們不匹配,則證書鏈的認(rèn)證以失敗結(jié)束(步驟S338)。在該點,步驟S274的處理結(jié)束。
根據(jù)步驟S274的結(jié)果,在步驟S275中執(zhí)行的處理是不同的。當(dāng)步驟S274的結(jié)果是"證書鏈的認(rèn)證失敗"時,判斷認(rèn)證已失敗并且發(fā)送關(guān)于其的通知(步驟S279),然后,結(jié)束對所述文件系統(tǒng)的認(rèn)證。同時,當(dāng)"證書鏈的認(rèn)證成功時,執(zhí)行步驟S276的處理。
接下來,在終端設(shè)備500的輔助存儲單元510中搜索與"/ocap.certificate.l"文件2119的根證書2311相同的證書(步驟S276)。當(dāng)在輔助存儲單元510中不存在相同的證書時,在步驟S277判斷證書鏈231的認(rèn)證失敗,并且發(fā)送關(guān)于該認(rèn)證失敗的通知(步驟S279),之后結(jié)束處理。同時,當(dāng)包含根證書2311時,判斷文件系統(tǒng)的認(rèn)證成功,并且將關(guān)于該認(rèn)證成功的通知發(fā)送給AM 1205b(步驟S278)。參照圖28,即使在那之后接收到Java程序的預(yù)激活通知(步驟S281),也結(jié)束處理而不執(zhí)行處理。
最后,參照圖42,描述由AM 1205b和安全管理器1205f執(zhí)行的處理的流程。當(dāng)將存儲Java(R)程序時,AM 1205b請求文件系統(tǒng)比較單元3601提取文件列表信息。響應(yīng)于此,文件系統(tǒng)比較單元3601根據(jù)圖39中顯示的流程圖執(zhí)行處理(步驟S421)。接下來,AM 1205b請求安全管理器1205f認(rèn)證所述Java(R)程序(典型的認(rèn)證如下根據(jù)
所提取的文件列表信息認(rèn)證新文件(包括版本已被升級的文件);對新下載的Java(R)程序的"/ocap,hashfile"執(zhí)行篡改檢査(只要已經(jīng)在認(rèn)證以上文件的時候執(zhí)行了篡改檢查,就不必再次執(zhí)行篡改檢查);以及新下載的Java(R)程序的證書文件的根認(rèn)證)(步驟S422)。AM 1205b判斷認(rèn)證是否失敗(步驟S423),并且如果認(rèn)證未失敗(即成功)(步驟S423:否),則AM 1205b請求文件系統(tǒng)存儲單元3603存儲Java(R)程序。響應(yīng)于此,文件系統(tǒng)存儲單元3603根據(jù)圖41中顯示的流程圖執(zhí)行處理(步驟S424)。
如上所述,通過提取當(dāng)前存儲在輔助存儲單元510中的Java(R)程序和將被新存儲的Java(R)程序之間的差別,能夠不必對整個將存儲的Java(R)程序進行認(rèn)證和存儲。此外,如果在一定時間之后激活所存儲的Java(R)程序,則不必在激活時再一次執(zhí)行認(rèn)證,這是因為在其被存儲之前已經(jīng)對它的文件系統(tǒng)執(zhí)行了認(rèn)證。更具體的,在程序執(zhí)行時,不必再次執(zhí)行與在存儲所述程序時執(zhí)行的認(rèn)證相同的認(rèn)證,并且可以例如僅執(zhí)行根認(rèn)證。
注意,文件系統(tǒng)存儲單元3603用于存儲和刪除與在先前的存儲時間存儲入輔助存儲單元510的文件系統(tǒng)中的任何文件不同的文件,而不會再次存儲與在先前的存儲時間存儲入輔助存儲單元510的文件系統(tǒng)中包含的文件之一相同的文件。然而,文件系統(tǒng)存儲單元3603可以在不再次執(zhí)行認(rèn)證的情況下,用不同的文件重寫相同的文件。
(第二實施例)
參照
根據(jù)本發(fā)明的有線電視系統(tǒng)的優(yōu)選實施例。圖1是顯示構(gòu)成有線系統(tǒng)的設(shè)備間的關(guān)系的框圖,所述設(shè)備包括頭端101,以及三個終端設(shè)備,分別為終端設(shè)備Alll、終端設(shè)備B112、終端設(shè)
49備C113。在本實施例中,三個終端設(shè)備連接到一個頭端,但是如果將任意數(shù)量的終端設(shè)備連接到頭端,也能夠?qū)崿F(xiàn)本發(fā)明。
頭端101向多個終端設(shè)備傳送廣播信號,例如視頻、音頻和數(shù)據(jù),并接收從終端設(shè)備傳送的數(shù)據(jù)。為了實現(xiàn)這一點,頻帶被分割以用于頭端IOI、終端設(shè)備Alll、終端設(shè)備B112、終端設(shè)備C113之間的數(shù)據(jù)傳輸。圖2是顯示分割的頻帶的例子的表格。粗略地可以分為兩種類型的頻帶帶外(簡寫為OOB)和帶內(nèi)頻帶。5 130MHz的頻帶被分配給OOB,主要用于頭端101、終端設(shè)備Alll、終端設(shè)備B112以及終端設(shè)備C113之間的數(shù)據(jù)交換。130MHz 864MHz的頻帶被分配給帶內(nèi)頻帶,主要用于廣播信道,包括視頻和音頻。QPSK用于OOB,而QAM64用于帶內(nèi)頻帶,作為調(diào)制技術(shù)。因為它們是與本發(fā)明無關(guān)的公知技術(shù),所以這里省略對調(diào)制技術(shù)的詳細(xì)說明。圖3顯示了如何使用OOB頻帶的更具體的例子。70MHz 74MHz的頻帶用于從頭端101傳送數(shù)據(jù)。在本例中,所有終端設(shè)備A111、終端設(shè)備B112、終端設(shè)備C113都從頭端101接收同樣的數(shù)據(jù)。同時,10.0MHz 10.1MHz的頻帶用于從終端設(shè)備Alll向頭端101傳送數(shù)據(jù)。10.1MHz 10.2MHz的頻帶用于從終端設(shè)備B112向頭端101傳送數(shù)據(jù)。10.2MHz 10.3MHz的頻帶用于從終端設(shè)備C113向頭端101傳送數(shù)據(jù)。因此,能夠從終端設(shè)備Alll、終端設(shè)備B112、終端設(shè)備C113向頭端101傳送唯一屬于每個終端設(shè)備的數(shù)據(jù)。圖4顯示了帶內(nèi)頻帶的典型使用。150 156MHz以及156 162MHz的頻帶分別分配給電視頻道1和電視頻道2,并且隨后的頻率被以6MHz的間隔分配給電視頻道。310MHz以及隨后的頻率以lMHz的間隔分配給無線電廣播頻道。每個上述頻道或者可用于模擬廣播,或者可用于數(shù)字廣播。當(dāng)用于數(shù)字廣播時,以符合MPEG2規(guī)范的傳輸分組格式傳送數(shù)據(jù),其中,除了音頻和視頻時間之外,針對各種數(shù)據(jù)廣播系統(tǒng)的數(shù)據(jù)都可以被傳送。
頭端101裝配有QPSK調(diào)制單元、QAM調(diào)制單元等等,以便向相應(yīng)的各個頻率范圍傳送合適的廣播信號。此外,頭端101裝配有QPSK解調(diào)單元,用于從終端設(shè)備接收數(shù)據(jù)。而且,假定頭端101還
50裝配有與上述調(diào)制單元和解調(diào)單元有關(guān)的各種裝置。但是,由于本發(fā)明主要涉及終端設(shè)備,所以省略對它們的詳細(xì)說明。
終端設(shè)備Alll、終端設(shè)備B112、終端設(shè)備C113接收并再現(xiàn)從頭端101傳送的廣播信號。此外,終端設(shè)備Alll、終端設(shè)備B112、終端設(shè)備CU3向頭端101傳送唯一屬于每個終端的數(shù)據(jù)。在本實施例中,這三個終端設(shè)備具有相同的配置。
圖5是顯示每個終端設(shè)備的硬件配置的框圖。500是終端設(shè)備,其由QAM解調(diào)單元501, QPSK解調(diào)單元502, QPSK調(diào)制單元503,TS解碼器505,音頻解碼器506,揚聲器507,視頻解碼器508,顯示器509,輔助存儲單元510,主存儲單元511, ROM 512,輸入單元513以及CPU 514等構(gòu)成。此外,POD 504可以被附加到終端設(shè)備500,或從終端設(shè)備500分離。
圖6顯示形狀較薄的電視,其是終端設(shè)備500的典型的外部視圖。終端設(shè)備可以具有不同的配置,但在本實施例中,將基于OpenCable(TM)和OCAP配置的終端設(shè)備作為例子進行描述。
601是形狀較薄的電視的鋼外殼,其中包含除POD504以外的終端設(shè)備500的所有組件。
602是顯示器,其對應(yīng)于圖5中的顯示器509。
603是面板單元,其由多個按鈕組成,并且對應(yīng)于圖5中的輸入單元513。
604是信號輸入端子,電纜線連接到其,用于向頭端101發(fā)送信號以及從頭端101接收信號。信號輸入端子連接到圖5所示的QAM解調(diào)單元501 , QPSK解調(diào)單元502以及QPSK調(diào)制單元503。
605是對應(yīng)于圖5中的POD 504的POD卡。POD 504獨立于終端設(shè)備500而實現(xiàn),并且可以附加到終端設(shè)備500上,或從終端設(shè)備分離,如同圖6中的POD卡605。后面詳細(xì)說明POD504。
606是可插入POD卡605的插槽。
參照圖5, QAM解調(diào)單元501根據(jù)包括由CPU 514指定的頻率的調(diào)諧信息,對已在頭端101中被進行QAM調(diào)制并且被從頭端101傳送的信號進行解調(diào),并將結(jié)果傳送給POD504。QPSK解調(diào)單元502根據(jù)包括由CPU 514指定的頻率的調(diào)諧信 息,對已在頭端101中被進行QPSK調(diào)制并且被從頭端101傳送的信 號進行解調(diào),并將結(jié)果傳送給POD 504。
QPSK調(diào)制單元503根據(jù)包括由CPU 514指定的頻率的解調(diào)信 息,對從POD 504傳送來的信號進行QPSK解調(diào),并將結(jié)果傳送給 頭端101。
如圖6所示,POD 504可以從終端設(shè)備500的主體分離。終端 500的主體和POD 504之間的連接接口的定義在OpenCable(R) CableCARD(R)接口規(guī)范(OC-SP-CC-IF-I15-031121)以及該規(guī)范所 參考的規(guī)范中給出。這里,省略了詳細(xì)說明,并且僅給出與本發(fā)明有 關(guān)的組成部分的說明。
圖7是顯示POD 504的內(nèi)部配置的框圖。POD 504由第一解擾 器單元701、第二解擾器單元702、擾頻器單元703、主存儲單元704、 輔助存儲單元705和CPU 706構(gòu)成。
第一解擾器單元701根據(jù)來自CPU 706的指令從終端設(shè)備500 的QAM解調(diào)單元501接收失真信號,并解擾該信號。然后,第一解 擾器單元701將解擾后的信號傳送給終端設(shè)備500的TS解碼器505。 根據(jù)需要,由CPU 706提供解擾器所需的信息,例如密鑰。更具體 地,頭端101廣播多路付費頻道,當(dāng)用戶購買了觀看這些付費頻道的 權(quán)利后,第一解擾器單元701從CPU 706接收所需的信息,例如密 鑰,并執(zhí)行解擾。因此,用戶可以觀看這些付費頻道。當(dāng)不提供諸如 密鑰這樣所需的信息時,第一解擾器單元701在不執(zhí)行解擾的情況 下,直接將所接收的信號傳遞給TS解碼器505。
第二解擾器單元702根據(jù)來自CPU 706的指令接收來自終端設(shè) 備500的QPSK解調(diào)單元502的失真信號,并解擾該信號。然后,第 二解擾器單元702將解擾后的數(shù)據(jù)傳送給CPU 706。
擾頻器單元703根據(jù)來自CPU 706的指令對從CPU 706接收的 信號進行擾頻,并將結(jié)果發(fā)送給終端設(shè)備500的QPSK調(diào)制單元503。
主存儲單元704,它的具體組成元件是例如RAM這樣的主存儲 器,當(dāng)CPU 706執(zhí)行處理時用于臨時地存儲數(shù)據(jù)。
52輔助存儲單元705,它的具體組成元件是例如閃速ROM這樣的 輔助存儲器,用于存儲將由CPU 706執(zhí)行的程序,并且用于存儲即 使當(dāng)關(guān)閉電源時也不應(yīng)刪除的數(shù)據(jù)。
CPU 706執(zhí)行存儲在輔助存儲單元705中的程序。該程序由多個 子程序構(gòu)成。圖8顯示了存儲在輔助存儲單元705中的程序的例子。 在圖8中,程序800由多個子程序構(gòu)成,包括主程序801、初始化 子程序802、網(wǎng)絡(luò)子程序803、再現(xiàn)子程序804以及PPV子程序805。
這里,PPV是每次觀看付費(Pay Per View)的縮寫,是指一種服 務(wù),其使得用戶能夠在可記帳的基礎(chǔ)上,觀看諸如電影這樣的特定程 序。當(dāng)用戶輸入他/她的個人識別號時,向頭端101通知用戶購買了 觀看程序的權(quán)利,并且解擾程序。因此,用戶能夠觀看該程序。觀看 程序需要用戶在日后為購買付費。
在所有子程序中,主程序801是當(dāng)打開電源時,首先由CPU706 激活的子程序,其控制其它子程序。
當(dāng)打開電源時,由主程序801激活的初始化子程序802與終端設(shè) 備500執(zhí)行信息交換等等,以執(zhí)行初始化處理。該初始化處理在 OpenCable(TM)CableCARD(TM)接口規(guī)范(OC-SP-CC-IF-I15-031121) 以及該規(guī)范所參考的規(guī)范中詳細(xì)定義。此外,初始化子程序802還執(zhí) 行不在這些規(guī)范中定義的初始化處理。這里,介紹部分這種初始化處 理。當(dāng)打開電源時,初始化子程序802經(jīng)由終端設(shè)備500的CPU514 向QPSK解調(diào)單元502通知存儲在輔助存儲單元705中的第一頻率。 QPSK解調(diào)單元502使用所提供的第一頻率執(zhí)行調(diào)諧,并將得到的信 號傳送給第二解擾器單元702。此外,初始化子程序802為第二解擾 器單元702提供解擾信息,例如存儲在輔助存儲單元705中的第一密 鑰。從而,第二解擾器單元702執(zhí)行解擾,并將結(jié)果傳送給執(zhí)行初始 化子程序802的CPU706。因此,初始化子程序802可以接收信息。 在本實施例中,初始化子程序802經(jīng)由網(wǎng)絡(luò)子程序803接收信息。后 面詳細(xì)進行描述。
此外,初始化子程序802經(jīng)由終端設(shè)備500的CPU514向QPSK 調(diào)制單元503通知存儲在輔助存儲單元705中的第二頻率。初始化子程序802為擾頻器單元703提供存儲在輔助存儲單元705中的擾頻信 息。當(dāng)初始化子程序802經(jīng)由網(wǎng)絡(luò)子程序803向擾頻器單元703提供 需要被發(fā)送的信息時,擾頻器單元703使用所提供的擾頻信息對數(shù)據(jù) 進行擾頻,并向QPSK調(diào)制單元503提供失真數(shù)據(jù)。QPSK調(diào)制單元 503調(diào)制它接收的失真信息,并將調(diào)制后的信息發(fā)送給頭端101。
因此,初始化子程序802能夠經(jīng)由終端設(shè)備500、第二解擾器單 元702、擾頻器單元703和網(wǎng)絡(luò)子程序803與頭端101執(zhí)行雙向通信。
由多個子程序(例如主程序801和初始化子程序802)使用的網(wǎng)絡(luò) 子程序803是用于執(zhí)行與頭端101的雙向通信的子程序。更具體地, 網(wǎng)絡(luò)子程序803使得其它使用網(wǎng)絡(luò)子程序803的子程序好像是在根據(jù) TCP/IP與頭端101進行雙向通信。因為TCP/IP是當(dāng)在多個終端之間 交換信息時指定將使用的協(xié)議的公知技術(shù),所以這里省略TCP/IP的 詳細(xì)說明。當(dāng)在接通電源時由初始化子程序802激活時,網(wǎng)絡(luò)子程序 803經(jīng)由終端設(shè)備500向頭端101通知MAC地址(媒體訪問控制的縮 寫),其是用于識別POD 504的識別符,并且被預(yù)先存儲在輔助存儲 單元705中,以便請求獲取IP地址。頭端101經(jīng)由終端設(shè)備500向 POD 504通知IP地址,并且網(wǎng)絡(luò)子程序803將該IP地址存儲在主存 儲單元704中。此后,通過使用該IP地址作為POD 504的識別符, 頭端101和POD 504互相通信。
再現(xiàn)子程序804為第一解擾器單元701提供例如存儲在輔助存儲 單元705中的第二密鑰這樣的解擾信息以及例如由終端設(shè)備500提供 的第三密鑰這樣的解擾信息,以便使得能夠執(zhí)行解擾。此外,再現(xiàn)子 程序804經(jīng)由網(wǎng)絡(luò)子程序803接收指示輸入第一解擾器單元701的信 號是PPV頻道的信息。當(dāng)被通知信號是PPV頻道時,再現(xiàn)子程序804 激活PPV子程序805。
當(dāng)被激活時,PPV子程序805在終端設(shè)備500上顯示提示用戶購 買所述程序的消息,并接受來自用戶的輸入。更具體地,當(dāng)希望被顯 示在屏蔽上的信息被發(fā)送給終端設(shè)備500的CPU 514時,運行在終 端設(shè)備500的CPU 514上的程序在終端設(shè)備500的顯示器509上顯 示所述消息。然后,當(dāng)用戶經(jīng)由終端設(shè)備500的輸入單元513輸入個人識別號時,終端設(shè)備500的CPU514接受其,并將其發(fā)送到運行在 POD 504的CPU 706上的PPV子程序805。 PPV子程序805將接受 的個人識別號經(jīng)由網(wǎng)絡(luò)子程序803發(fā)送到頭端101。當(dāng)該個人識別號 有效時,頭端101經(jīng)由網(wǎng)絡(luò)子程序803向PPV子程序805通知解擾 所需的解擾信息,例如第四密鑰。PPV子程序805向第一解擾器單元 701提供所接受的解擾信息,例如所述第四密鑰,然后第一解擾器單 元701解擾所述輸入信號。
參照圖5, TS解碼器505對接受自POD 504的信號進行過濾, 并將必要的數(shù)據(jù)傳送到音頻解碼器506、視頻解碼器508和CPU 514。 這里,發(fā)送自POD 504的信號是MPEG2傳輸流。關(guān)于MPEG2傳輸 流的詳細(xì)說明在MPEG規(guī)范ISO/IEC138181-l中給出,因此在本實施 例中不對其進行詳細(xì)地說明。MPEG傳輸流由多個固定長度的數(shù)據(jù)分 組組成,并且為每個數(shù)據(jù)分組分配一個數(shù)據(jù)分組ID。圖9是顯示數(shù) 據(jù)分組的結(jié)構(gòu)的示圖。900是一數(shù)據(jù)分組,其包含188字節(jié)的固定長 度。頭四個字節(jié)是存儲用于識別數(shù)據(jù)分組的信息的頭901,并且另外 184字節(jié)是存儲希望傳送的信息的有效負(fù)載902。 903顯示了所述頭 901的細(xì)節(jié)。數(shù)據(jù)分組ID包含在從第12比特到第24比特的13個比 特中。圖10是說明待傳送的多個數(shù)據(jù)分組串的概要圖。數(shù)據(jù)分組1001 在它的頭中包含數(shù)據(jù)分組ID " 1 "并且在它的有效負(fù)載中包含視頻A 的第一信息。數(shù)據(jù)分組1002在它的頭中包含數(shù)據(jù)分組ID "2"并且 在它的有效負(fù)載中包含音頻A的第一信息。數(shù)據(jù)分組1003在它的頭
中包含數(shù)據(jù)分組ID"3"并且在它的有效負(fù)載中包含音頻B的第一信
自
必o
數(shù)據(jù)分組1004在它的頭包含數(shù)據(jù)分組ID "1"并且在它的有效 負(fù)載中包含視頻A的第二信息,其是所述數(shù)據(jù)分組1001的后續(xù)的信 息。類似的,數(shù)據(jù)分組1005、 1026和1027攜帶其它數(shù)據(jù)分組的后續(xù) 數(shù)據(jù)。通過按照上述方式連接具有相同數(shù)據(jù)分組ID的數(shù)據(jù)分組的有 效負(fù)載的內(nèi)容,能夠連續(xù)地再現(xiàn)視頻和音頻。
參照圖10。當(dāng)CPU 514向TS解碼器505指出數(shù)據(jù)分組ID "1" 以及作為輸出目的地的"視頻解碼器508"時,TS解碼器505從接收自POD 504的MPEG2傳輸流中提取具有數(shù)據(jù)分組ID " 1"的數(shù)據(jù) 分組,并將它們傳送到所述視頻解碼器508。因此,在圖10中,僅 將視頻數(shù)據(jù)傳送到視頻解碼器508。同時,當(dāng)CPU514向TS解碼器 505指出數(shù)據(jù)分組ID "2"以及"音頻解碼器506"時,TS解碼器505 從接收自POD 504的MPEG2傳輸流中提取具有數(shù)據(jù)分組ID "2"的 數(shù)據(jù)分組,并將它們傳送到所述音頻解碼器506。在圖10中,僅音 頻數(shù)據(jù)被傳送到所述視頻解碼器508。
該根據(jù)數(shù)據(jù)分組ID僅提取必要的數(shù)據(jù)分組的處理對應(yīng)于由TS 解碼器505執(zhí)行的過濾。TS解碼器505能夠按照來自CPU 514的指 令同時執(zhí)行多于一個過濾處理。
參照圖5,音頻解碼器506連接由TS解碼器505提供的、嵌入 在MPEG2傳輸流的數(shù)據(jù)分組中的音頻數(shù)據(jù),對所連接的數(shù)據(jù)執(zhí)行數(shù) 模轉(zhuǎn)化,并向揚聲器507輸出結(jié)果。
揚聲器507將由音頻解碼器506提供的信號作為音頻輸出。
視頻解碼器508連接由TS解碼器505提供的、嵌入在MPEG2 傳輸流的數(shù)據(jù)分組中的視頻數(shù)據(jù),對所連接的數(shù)據(jù)執(zhí)行數(shù)模轉(zhuǎn)化,并 向顯示器509輸出結(jié)果。
顯示器509,其具體的組成元件是CRT或液晶等等,輸出由視頻 解碼器508提供的視頻信號并顯示由CPU 514指定的消息等等。
輔助存儲單元510,其具體的組成元件是閃速存儲器、硬盤等等, 存儲并刪除由CPU 514指定的數(shù)據(jù)和程序。由CPU 514訪問所存儲 的數(shù)據(jù)和程序。即使當(dāng)終端設(shè)備500斷電時,所存儲的數(shù)據(jù)和程序也 能保存在存儲器中。
主存儲單元511,其具體組成元件是RAM等等,其臨時地存儲 由CPU 514指定的數(shù)據(jù)和程序以及刪除它們。由CPU 514訪問所存 儲的數(shù)據(jù)和程序。當(dāng)終端設(shè)備500斷電時,存儲的數(shù)據(jù)以及程序被刪 除。
ROM 512是只讀存儲器裝置,其具體的組成元件是ROM、 CD-ROM、 DVD等等。ROM512存儲將由CPU514執(zhí)行的程序。 輸入單元513,其具體的組成元件是面板或遙控器,其接受來自
56用戶的輸入。圖11顯示當(dāng)以面板的形式配置輸入單元時的輸入單元
的例子。IIOO是一面板,其對應(yīng)于圖6中顯示的面板單元603。該面 板由七個按鈕組成上指針按鈕1101、指針下按鈕1102、左指針按 鈕1103、右指針按鈕1104、 OK按鈕1105、取消按鈕1106以及EPG 按鈕1107。當(dāng)用戶按下一按鈕時,該被按下的按鈕的識別符被通知 給CPU 514。
CPU 514執(zhí)行存儲在ROM 512中的程序。根據(jù)來自該待執(zhí)行程 序的指令,CPU 514控制QAM解調(diào)單元501、 QPSK解調(diào)單元502、 QPSK調(diào)制單元503、 POD 504、 TS解碼器505、顯示器509、輔助 存儲單元510、主存儲單元511以及ROM 512。
圖12是顯示存儲在ROM 512中并且由CPU 514執(zhí)行的程序的 典型結(jié)構(gòu)的示圖。
程序1200由多個子程序組成。更具體地,程序1200由OS 1201、 EPG 1202、 Java (R)VM 1203(以下簡稱為VM 1203)、服務(wù)管理器1204、 以及Java(R)庫1205(以下簡稱庫1205)組成。
OS 1201是當(dāng)終端設(shè)備500通電時將由CPU 514激活的子程序。 OS 1201是操作系統(tǒng)的縮寫,它的例子是Linux等等。OS 1201是一 種公知技術(shù)的普通名稱,其由內(nèi)核1201a和庫1201b組成,內(nèi)核1201a 用于與另一個子程序并行地執(zhí)行一個子程序,因此詳細(xì)說明被省略。 在本實施例中,OS 1201的內(nèi)核1201a執(zhí)行作為子程序的EPG 1202 和VM 1203。同時,庫1201b為這些子程序提供控制終端設(shè)備500 的組成元件所需的多個功能。
這里,調(diào)諧作為這種功能一個例子被介紹。使用調(diào)諧的功能,從 另一個子程序接收包括頻率的調(diào)諧信息,然后傳送至QAM解調(diào)單元 501。因此,QAM解調(diào)單元501能夠根據(jù)所提供的調(diào)諧信息執(zhí)行解 調(diào),并將解調(diào)后的數(shù)據(jù)傳送至POD504。因此,其它子程序可以經(jīng)由 庫1201b控制QAM解調(diào)單元。
所述EPG 1202由程序顯示單元1202a以及再現(xiàn)單元1102b組成, 程序顯示單元1202a用于向用戶顯示一列程序以及接受來自用戶的 輸入,再現(xiàn)單元1102b用于選擇頻道。這里,EPG是電子程序指南的
57縮寫。當(dāng)終端設(shè)備500通電時EPG 1202被激活。在激活的EPG 1202 中,程序顯示單元1202a等待來自用戶經(jīng)由終端設(shè)備500的輸入單元 513的輸入。這里,當(dāng)輸入單元513采用圖11中說明的面板的形式 時,當(dāng)用戶按下輸入單元513上的EPG按鈕1107時,向CPU 514 通知該EPG按鈕的識別符。EPG 1202的程序顯示單元1202a是運行 在CPU 514上的一子程序,其接受該識別符,并在顯示器509上顯 示程序信息。圖13A和圖13B顯示了在顯示器509上顯示的程序表 的例子。參看圖13A。以網(wǎng)格圖形在顯示器509上顯示程序信息。列 1301描述時間信息。列1302描述頻道名稱"頻道1"和將在對應(yīng)于 列1301中描述的各個時間的時期內(nèi)廣播的程序。其表明,在"頻道 1",從9:00至10:30廣播"新聞9",從10:30至12力0廣播"電影 AAA"。列1303描述頻道名稱"頻道2"和將在對應(yīng)于列1301中描 述的各個時間的時期內(nèi)廣播的程序,如同列1302的情況。從9:00至 ll:OO廣播程序"電影BBB",從ll:OO至12:00廣播"新聞11"。 1330 是光標(biāo)。光標(biāo)1330隨著按下面板1100上的左指針1103或右指針1104 而移動。當(dāng)在圖13A的狀態(tài)中按下右指針時,光標(biāo)1330向右移動, 如圖13B所示。當(dāng)在圖13B的狀態(tài)中按下左指針時,光標(biāo)1330向左 移動,如圖13A所示。
當(dāng)在圖13A的狀態(tài)中按下面板1100上的OK按鈕1105時,程 序顯示單元1202a向再現(xiàn)單元1102b通知"頻道1"的識別符。同時, 當(dāng)在圖13B的狀態(tài)中按下面板1100上的OK按鈕1105時,程序顯示 單元1202a向再現(xiàn)單元1102b通知"頻道2"的識別符。
此外,程序顯示單元1202a定期地將待顯示的程序信息從頭端 101經(jīng)由POD504存儲到主存儲單元511中。通常,從頭端獲得程序 信息要花費時間。然而,在按下輸入單元513的EPG按鈕1107時, 通過顯示被預(yù)先存儲在主存儲單元511中的程序信息,能夠迅速顯示 程序表。
再現(xiàn)單元1102b使用接收的頻道的識別符再現(xiàn)頻道。頻道識別符 和頻道之間的關(guān)系被輔助存儲單元510作為頻道信息預(yù)先存儲。圖 14顯示存儲在輔助存儲單元510中的頻道信息的例子。以表格形式存儲所述頻道信息。列1401描述頻道的識別符。列1402描述頻道名 稱。列1403描述調(diào)諧信息。這里,調(diào)諧信息由將提供給QAM解調(diào) 單元501的值表示,例如頻率、傳輸速率和編碼比(coding ratio)。列 1404描述程序編號。程序編號是用于識別由MPEG2標(biāo)準(zhǔn)定義的PMT 的編號。隨后給出關(guān)于PMT的描述。行1411 1414中的每一行指出 一組每個頻道的識別符、頻道名稱和調(diào)諧信息。行1411描述一個組, 其中包含"1"作為識別符,"頻道1"作為頻道名稱,"312MHz"的 頻率作為調(diào)諧信息,以及"101"作為程序編號。再現(xiàn)單元1102b直 接將所接收的頻道的識別符傳送給服務(wù)管理器以便再現(xiàn)頻道。
此外,如果用戶當(dāng)正在再現(xiàn)時按下面板1100上的上指針1101和 下指針1102,則再現(xiàn)單元1102b經(jīng)由CPU 514從輸入單元513接收 關(guān)于由用戶進行的該按壓的通知,并將正在被再現(xiàn)的頻道切換到另一 個。首先,再現(xiàn)單元1102b在主存儲單元511中存儲當(dāng)前再現(xiàn)的頻道 的識別符。圖15A、 15B、 15C顯示了存儲在主存儲單元511中的頻 道的識別符的例子。圖15A顯示識別符"3"被存儲,并且通過參照 圖14,表明具有頻道名稱"TV 3"的頻道正在被再現(xiàn)。當(dāng)用戶在圖 15A的狀態(tài)中按下上指針1101時,再現(xiàn)單元1102b參考圖14中顯示 的頻道信息,并且將具有頻道名稱"頻道2"的頻道的識別符"2" 傳送給服務(wù)管理器,以便新再現(xiàn)具有頻道名稱"頻道2"的頻道,其 是所述表中的上一個頻道。同時,再現(xiàn)單元1102b將識別符重寫為存 儲在主存儲單元511中的頻道識別符"2"。圖15B顯示該重寫的頻道 識別符。同樣,當(dāng)用戶在圖15A的狀態(tài)中按下下指針1102時,再現(xiàn) 單元1102b參考圖14中顯示的頻道信息,并且將具有頻道名稱"TV 曰本"的頻道的識別符"4"傳送給服務(wù)管理器,以便新再現(xiàn)具有頻 道名稱"TV日本"的頻道,其是所述表中的下一個頻道。同時,再 現(xiàn)單元1102b將識別符重寫為存儲在主存儲單元511中的頻道識別符 "4"。圖15C顯示該重寫的頻道識別符。
VM 1203是Java虛擬機,其連續(xù)地分析并執(zhí)行以Java語言所寫 的程序。以Java (TM)語言所寫的程序被編譯為稱為字節(jié)代碼的中間 碼,其不依賴于硬件。Java虛擬機是執(zhí)行該字節(jié)代碼的解釋器。 一些
59Java虛擬機將字節(jié)代碼轉(zhuǎn)化為一種可以由CPU 514理解的可執(zhí)行的 形式,并將結(jié)果傳送給CPU514, CPU514執(zhí)行其。用由內(nèi)核1201a 指定的待執(zhí)行的Java程序激活VM 1203。在本實施例中,內(nèi)核1201a 指定服務(wù)管理器1204作為待執(zhí)行的Java程序。對Java語言的詳細(xì)注 釋在許多書中給出,包括"Java Language Specification" (ISBN 0-201-63451-1)。因此,這里省略關(guān)于其的詳細(xì)說明。同樣,對Java VM 本身的操作的詳細(xì)注釋在許多書中給出,包括"Java Virtual Machine Specification" (ISBN 0-201-6345l-X)。因此,這里省略關(guān)于其的詳細(xì) 說明。
服務(wù)管理器1204是以Java語言寫的Java程序,其由VM 1203 順序地執(zhí)行。通過JNI(Java本地接口),服務(wù)管理器1204能夠調(diào)用另 一個未用Java語言寫的子程序,并且能被另一個未用Java語言寫的 子程序調(diào)用。關(guān)于JM的說明在許多書中給出,包括"Java本地接口"。 因此,這里省略關(guān)于其的詳細(xì)說明。
服務(wù)管理器1204通過JNI從再現(xiàn)單元1102b接受頻道的識別符。
首先,服務(wù)管理器1204將頻道的識別符傳送給庫1205中的調(diào)諧 器1205c,以便請求調(diào)諧。調(diào)諧器1205c參考存儲在輔助存儲單元510 中的頻道信息以獲得調(diào)諧信息。假定服務(wù)管理器1204將頻道的識別 符"2"傳送給調(diào)諧器1205c,調(diào)諧器1205c參考圖14中顯示的行1412, 并獲得對應(yīng)于所述頻道的調(diào)諧信息"156MHz"。調(diào)諧器1205c經(jīng)由 OS 1201的庫1201b將調(diào)諧信息傳送給QAM解調(diào)單元501。 QAM解 調(diào)單元501根據(jù)發(fā)送給其的調(diào)諧信息解調(diào)發(fā)送自頭端101的信號,并 將結(jié)果信號傳送給POD 504。
然后,服務(wù)管理器1204請求庫1205中的CA 1205b執(zhí)行解擾。 CA 1205d通過OS 1201中的庫1201b為POD 504提供解擾所需的信 息。根據(jù)所提供的信息,POD 504解擾由QAM解調(diào)單元501提供的 信號,并將結(jié)果信號傳送給TS解碼器505。
然后,服務(wù)管理器1204為庫1205內(nèi)的JMF 1205a提供頻道的識 別符,以便請求再現(xiàn)視頻和音頻。
首先,JMF 1205a從PAT和PMT獲得用于指定待再現(xiàn)的視頻和音頻的數(shù)據(jù)分組ID。 PAT和PMT是由MPEG-2標(biāo)準(zhǔn)定義的表,其顯 示包括在MPEG2傳輸流中的程序行(program line-up)。在包含在 MPEG2傳輸流的數(shù)據(jù)分組中的有效負(fù)載中攜帶PAT和PMT以及音 頻與視頻。參照PAT和PMT的詳細(xì)說明的規(guī)范。這里,僅給出PAT 和PMT的概要。PAT是程序關(guān)系表的縮寫,在具有數(shù)據(jù)分組ID"O" 的數(shù)據(jù)分組中傳送其。為了獲得PAT, JMF 1205a通過OS1201的庫 1201b,向TS解碼器505指出數(shù)據(jù)分組ID "0"和CPU 514。然后, TS解碼器505根據(jù)數(shù)據(jù)分組ID"O"執(zhí)行過濾,并將結(jié)果傳送給CPU 514。因此,JMF 1205a可以收集PAT數(shù)據(jù)分組。圖16說明了示意性 地顯示所收集的PAT信息的例子的表。列1601描述程序編號。列1602 描述數(shù)據(jù)分組ID。列1602中顯示的數(shù)據(jù)分組ID用于獲得PAT。行 1611 1613中的每一個包含一對頻道的程序編號以及對應(yīng)于其的數(shù) 據(jù)分組ID。這里,定義了三個頻道。行1611定義了一對程序編號"101" 和數(shù)據(jù)分組ID "501"。假定提供給JMF 1205a的頻道識別符是"2", 則JMF 1205a參考圖14中的行1412,以便獲得對應(yīng)于該頻道識別符 的程序編號"102",然后參考圖16中顯示的PAT中的行1612,以便 獲得對應(yīng)于程序編號"102"的數(shù)據(jù)分組ID "502"。 PMT是程序映射 表的縮寫,其在具有PAT中指定的數(shù)據(jù)分組ID的數(shù)據(jù)分組中被傳送。 為了獲得PMT, JMF 1205a通過OS 1201的庫1201b,向TS解碼器 505指出數(shù)據(jù)分組ID和CPU 514。這里,將指定的數(shù)據(jù)分組ID是 "502"。然后,TS解碼器505根據(jù)數(shù)據(jù)分組ID "502"執(zhí)行過濾, 并將結(jié)果傳送給CPU 514。因此,JMF 1205a可以收集PMT數(shù)據(jù)分 組。圖17說明了示意性地顯示所收集的PMT信息的例子的表。列 1701描述流類型。列1702描述數(shù)據(jù)分組ID。在各個流類型中指定的 信息在具有列1702中指定的數(shù)據(jù)分組ID的數(shù)據(jù)分組的有效負(fù)載中被 傳送。列1703描述附加信息。1711 1714中的每一行是一對數(shù)據(jù)分 組ID和被傳送的信息的類型,其被稱為基本流(elementary stream)。 行1711是一對流類型"音頻"和數(shù)據(jù)分組ID "5011",其指示音頻 數(shù)據(jù)被存儲在具有數(shù)據(jù)分組ID"5011"的數(shù)據(jù)分組的有效負(fù)載中。JMF 1205a從PMT獲得將再現(xiàn)的視頻和音頻的數(shù)據(jù)分組ID。參照圖17,JMF 1205a從行1711獲得音頻數(shù)據(jù)分組ID "5011",并從行1712獲 得視頻數(shù)據(jù)分組ID "5012"。
然后,JMF 1205a經(jīng)由OS 1201的庫1201b為TS解碼器505提 供一對所獲得的音頻數(shù)據(jù)分組ID和作為輸出目的地的音頻解碼器 506,并提供一對視頻數(shù)據(jù)分組ID和作為tr出目的地的視頻解碼器 508。 TS解碼器505根據(jù)所提供的數(shù)據(jù)分組ID和輸出目的地執(zhí)行過 濾。這里,將具有數(shù)據(jù)分組ID "5011"的數(shù)據(jù)分組傳送給音頻解碼 器506,并將具有數(shù)據(jù)分組ID "5012"的數(shù)據(jù)分組傳送給視頻解碼器 508。音頻解碼器506對所提供的數(shù)據(jù)分組執(zhí)行數(shù)模轉(zhuǎn)化,以便經(jīng)由 揚聲器507再現(xiàn)音頻。視頻解碼器508對所提供的數(shù)據(jù)分組執(zhí)行數(shù)模 轉(zhuǎn)化,以便在顯示器509上顯示視頻。
最后,服務(wù)管理器1204將頻道識別符提供給庫1205中的AM 1205b,以便請求數(shù)據(jù)廣播再現(xiàn)。這里,數(shù)據(jù)廣播再現(xiàn)的意思是提取 包含在MPEG2傳輸流中的Java程序并使VM 1203執(zhí)行其。作為一 種用于將Java程序嵌入MPEG2傳輸流的技術(shù),使用稱為DSMCC的 方法,其在MPEG規(guī)范ISO/IEC 138181-6中描述。這里省略對DSMCC 的詳細(xì)說明。DSMCC規(guī)范定義了一種方法,用于將包含由計算機使 用的目錄和文件的文件系統(tǒng)編碼到MPEG2傳輸流內(nèi)的數(shù)據(jù)分組中。 在MPEG2傳輸流內(nèi)的數(shù)據(jù)分組中以AIT的形式傳送關(guān)于待執(zhí)行的 Java程序的信息。AIT是應(yīng)用程序信息表的縮寫,其定義在DVB-MHP 規(guī)范(正式稱為ETSI TS 101 812 DVB-MHP規(guī)范V1.0.2)的第十章中 給出。
首先,為了獲得AIT,與JMF 1205a的情況中一樣,AM 1205b 獲得PAT和PMT,以便獲得存儲AIT的數(shù)據(jù)分組的數(shù)據(jù)分組ID。假 定"2"是所提供的頻道識別符而且圖16中 顯示的PAT和圖17中顯 示的PMT正在被傳送,根據(jù)與JMF 1205a所遵循的過程相同的過程, AM 1205b獲得圖17中顯示的PMT。隨后,AM 1205b從PMT提取 基本流的數(shù)據(jù)分組ID,該基本流的流類型是"數(shù)據(jù)"并且其具有作 為附加信息的"AIT"。如圖17所示,行1713內(nèi)的基本流對應(yīng)于這 種基本流,因此AM 1205b從其獲得數(shù)據(jù)分組ID "5013"。AM 1205b通過OS 1201的庫1201b為TS解碼器505提供AIT 的數(shù)據(jù)分組ID和作為輸出目的地的CPU514。然后,TS解碼器505 根據(jù)提供的數(shù)據(jù)分組ID執(zhí)行過濾,并將結(jié)果傳送給CPU514。因此, AM 1205b可以收集AIT的數(shù)據(jù)分組。圖18是示意性地顯示所收集 的AIT信息的例子的表。列1801描述Java程序的識別符。根據(jù)MHP 規(guī)范,這些識別符被定義為應(yīng)用程序ID,其識別一個Java程序是否 是應(yīng)該被終端設(shè)備500的安全管理器1205f認(rèn)證的程序。當(dāng)識別符的 值在0x0至lj0x3fff范圍之內(nèi)時,不需要進行認(rèn)證,而當(dāng)識別符的值在 0x4000到0x7fff的范圍之內(nèi)時,需要進行認(rèn)證。識別符的值在前一 個范圍之內(nèi)的Java程序被稱為"未簽名程序",而識別符的值在后一 個范圍之內(nèi)的Java程序被稱為"簽名程序"。列1802描述用于控制 Java程序的控制信息。所述控制信息包含"自動起動"、"呈現(xiàn)"和"殺 死"。"自動起動"的意思是終端設(shè)備500自動地迅速執(zhí)行程序。"呈 現(xiàn)"的意思是不自動執(zhí)行所述程序。"殺死"的意思是將終止所述程 序。列1803描述用于提取包括DSMCC格式的Java程序的數(shù)據(jù)分組 ID的DSMCC識別符。列1804描述所述Java程序的程序名。1811 1812中的每一行都是一組關(guān)于Java程序的信息。在行1811中定義的 Java程序是一組識別符"301"、控制信息"自動起動"、DSMCC識 別符"1"以及程序名"a/TopXlet"。在行1812中定義的Java程序是 一組識別符"302"、控制信息"呈現(xiàn)"、DSMCC識別符"1"以及程 序名"b/GameXlet"。這里,這兩個Java程序具有相同的DSMCC識 別符。這表示文件系統(tǒng)中包含兩個Java程序,該文件系統(tǒng)已被根據(jù) 相同的DSMCC方法編碼。這里,僅為各個Java程序指定四條信息, 而實際中指定更多的信息。詳細(xì)內(nèi)容請參考DVB-MHP規(guī)范。AM 1205b從AIT找到"自動起動"Java程序,并提取對應(yīng)的 DSMCC識別符和Java程序名。參照圖18, AM 1205b提取行1811 中的Java程序,并獲取DSMCC識別符"1 "和Java程序名"a/TopXlet"。然后,AM 1205b使用從AIT獲取的DSMCC識別符,從PMT 獲取以DSMCC格式存儲Java程序的數(shù)據(jù)分組的數(shù)據(jù)分組ID。更具 體地,AM 1205b從PMT獲取包含在基本流中的數(shù)據(jù)分組ID,該基63本流的流類型是"數(shù)據(jù)"并且在附加信息中的DSMCC識別符是匹配的。這里,假定該DSMCC識別符為"1 ",并且PMT如圖17所示, 行1714中的基本流滿足上述條件。因此,將提取數(shù)據(jù)分組ID"5014"。AM 1205b通過OS 1201的庫1201b,向TS解碼器505指出其 中以DSMCC格式嵌入數(shù)據(jù)的數(shù)據(jù)分組的數(shù)據(jù)分組ID,以及作為輸 出目的地的CPU 514。這里,提供數(shù)據(jù)分組ID "5014"。然后,TS 解碼器505根據(jù)所提供的數(shù)據(jù)分組ID執(zhí)行過濾,并將結(jié)果傳送給CPU 514。因此,AM 1205b可以收集需要的數(shù)據(jù)分組。AM 1205b根據(jù) DSMCC方法,基于所收集的數(shù)據(jù)分組重建文件系統(tǒng),并且將重建的 文件系統(tǒng)存儲到主存儲單元511。用于從MPEG2傳輸流的數(shù)據(jù)分組 中提取數(shù)據(jù)(例如文件系統(tǒng)),以及將所提取的數(shù)據(jù)存儲到存儲單元(例 如主存儲單元511)的處理以下被稱為下載。圖19顯示了下載的文件系統(tǒng)的例子。在圖中,圓圈表示目錄, 方框表示文件,其中,1901是根目錄,1902是目錄"a", 1903是目 錄"b", 1904是文件"TopXet.class"并且1905是文件"GameXletclass"。隨后,AM 1205b將一 Java程序傳送到VM 1203,所述Java程 序?qū)⒃谙螺d到主存儲單元511中的文件系統(tǒng)之外執(zhí)行。這里,假定將 執(zhí)行的Java程序的程序名是"a/TopXlet",通過將".class"附加到上 述Java程序名得到的文件"a/T叩Xletxlass"是將被執(zhí)行的文件。"/" 是目錄和文件名之間的分界符,并且如圖19所示,文件1904是將執(zhí) 行的Java程序。然后,AM 1205b將文件1904傳送到VM 1203,這 是因為描述Java程序的識別符的列1801指示未簽名的程序,這意謂 著不必請求安全管理器1205f對該Java程序執(zhí)行認(rèn)證。VM 1203執(zhí)行所接收的Java程序。在接收到另一個頻道的識別符后,服務(wù)管理器1204通過包含在 相同庫1205中的每個庫,終止視頻和音頻的再現(xiàn),并終止執(zhí)行正在 通過包含在庫1205中的每個庫執(zhí)行的Java程序,然后根據(jù)新接收的 頻道識別符對視頻和音頻進行再現(xiàn),并且執(zhí)行Java程序。Java庫1205是存儲在ROM 512中的多個Java庫的集合。在本實施例中,Java庫1205包含JMF 1205a、 AM 1205b、調(diào)諧器1205c、 CA 1205d、 PODLibl205e、安全管理器1205f、下載模塊1206等等。服務(wù)管理器1204和下載模塊1206經(jīng)由包含在庫1205中的POD Lib 1205e與頭端101執(zhí)行雙向通信。可以通過PODLib 1205e使用 QPSK解調(diào)單元502和QPSK調(diào)制單元503,經(jīng)由OS 1201的庫1201b 和POD 504來實現(xiàn)雙向通信。下載模塊1206可以通過該通信從頭端101接收代碼數(shù)據(jù)。代碼 數(shù)據(jù)是指包含X.509證書和/或終端設(shè)備500的固件的二進制數(shù)據(jù)。 圖50是顯示僅描述與本發(fā)明有關(guān)的一部分的代碼數(shù)據(jù)的概要圖。當(dāng) 接收到代碼數(shù)據(jù)5000時,如果其包含根證書,則下載模塊1206提取 該根證書,并將其傳送到安全管理器1205f。 5002指示其它數(shù)據(jù),例 如固件。AM 1205b從頭端101接收關(guān)于將被終端設(shè)備500存儲在輔助存 儲單元510中的Java程序的信息。該信息被稱為XAIT信息信息。 在頭端101和POD 504之間以任意形式傳送XAIT信息。只要包含所 需的如XAIT—樣的信息,就可以實施本發(fā)明,而不管傳送格式。圖43說明了示意性地顯示從頭端101獲得的XAIT信息的例子 的表。列4301描述Java程序的識別符。列4302描述用于控制Java程 序的控制信息??刂菩畔?自動起動"和"呈現(xiàn)"。"自動起動" 的意思是當(dāng)終端設(shè)備500通電時,自動地執(zhí)行所述程序,"呈現(xiàn)"的 意思是不自動地執(zhí)行程序。列4303描述用于提取包括DSMCC格式 的Java(R)程序的數(shù)據(jù)分組ID的DSMCC識別符。列4304描述Java程 序的程序名。列4305描述Java程序的優(yōu)先級。行4311和4312中的 每一行是一組關(guān)于相應(yīng)的Java程序的信息。定義在行4311中的Java(R) 程序是一組識別符"0x7001"、控制信息"自動起動"、DSMCC識別 符"1"和程序名"a/PPVlxlet"??梢愿鶕?jù)它的Java程序應(yīng)用程序ID 知道該Java程序是簽名程序。這里,僅為各個Java程序指定了五條 信息,但是即使當(dāng)定義更多條信息時,也可以實現(xiàn)本發(fā)明。當(dāng)接收到XAIT信息時,AM 1205b根據(jù)與用于根據(jù)AIT信息下 載Java(R)程序的過程相同的過程,將來自MPEG2傳輸流的文件系統(tǒng)存儲到主存儲單元511中。之后,AM 1205b在其將所述文件系統(tǒng)存 儲入輔助存儲單元510之前,向安全管理器105f發(fā)送預(yù)存儲通知。 這時,由根據(jù)本發(fā)明的安全管理器1205f啟動認(rèn)證操作,但是稍后描 述它的詳細(xì)內(nèi)容。當(dāng)由安全管理器1205f通知允許激活時,AM 1205b 將文件系統(tǒng)存儲入輔助存儲單元510。然后,AM 1205b把將XAIT 信息與下載的文件系統(tǒng)的存儲位置相關(guān)聯(lián)而得到的結(jié)果存儲到輔助 存儲單元510中。圖44顯示了彼此關(guān)聯(lián)地存儲在輔助存儲單元510 中的XAIT信息和下載的文件系統(tǒng)的例子。這里,將在OCAP規(guī)范中 定義的文件描述為例子。圖44中的元素與圖43中的相應(yīng)元素彼此相 同,因此省略對這些元素的說明。列4401存儲下載的文件系統(tǒng)的存 儲位置。在附圖中,由箭頭指示這些存儲位置。4410是下載的文件 系統(tǒng),其中包含頂層目錄4411、目錄"a"4412、目錄"b" 4413、文 件"PPVlXletclass " 4414、文件"PPV2Xlet.class " 4415、文件"ocap.hashfile" 4416 4418,文件"ocap .certificate .1" 4419以及文 件"ocap.signaturefile,l" 4420。文件4416 4418是散列文件,其中包含文件名或目錄名以及對 應(yīng)的散列值。圖45A、 45B以及45C是顯示"ocap.hashfiles"的詳細(xì) 內(nèi)容。圖45A中的451顯示"ocap .hashfile" 4416,圖45B中的452 顯示"ocap .hashfile" 4417,圖45C中的453顯示"ocap .hashfile" 4418。 451的"ocap.hashfile"存在于"/" 目錄44U中,在列4511 中包含存在于相同目錄4411中的"ocap.certificate.l"文件4419、"ocap.signaturefile.l"文件4420、 "a"目錄4412以及"b"目錄4413。 列4512指示使用哪種散列算法來計算在列4513中描述的每個值。列 4513與列4511中的文件或目錄有關(guān),列4513包含通過利用列4512 中指定的散列算法而計算的散列值。當(dāng)前主要使用的散列算法是 SHA1(安全散列算法l)和MD5(消息摘要5)。這些是用于將具有任意長度的數(shù)據(jù)轉(zhuǎn)換為固定長度字節(jié)值的公知算法,它們具有以下特征 在原始數(shù)據(jù)被轉(zhuǎn)換之后,不能推算出原始數(shù)據(jù);以及它們被用于檢查 文件是否已被破壞或篡改。散列值是通過使用散列算法而產(chǎn)生的偽隨 機數(shù)。當(dāng)散列算法是SHA1時,散列值的長度是20字節(jié),而當(dāng)散列66算法是MD5時,散列值的長度變?yōu)?6字節(jié)。關(guān)于SHA1和MD5的 詳細(xì)介紹可以分別參考"FIPS-PUB 186-2 Secure Hash Standard"和 "正TFRFC1321"。這里,在列4511中描述的對應(yīng)于相應(yīng)的目錄"a" 和"b"的散列值是SHA 1散列值,它們是分別對存在于"a"目錄中 的"ocap.hashfile"文件4417和存在于"b"目錄中的文件4418進行 計算而得到的。與在451中的"ocap,hashfile"的情況相同,452中的"ocap.hashfile" 包含文件名、散列算法以及存在于相同目錄4412中的 "PPVlXlet.dass"文件4414的散列值。類似的,在453中包含文件 名、散列算法以及存在于相同目錄4413中的"PPV2Xletclass"文件 4415的散列值。這里,僅描述與本發(fā)明有關(guān)的屬性,因此,關(guān)于"ocap.hashfile" 的詳細(xì)內(nèi)容,應(yīng)該參考OCAP規(guī)范"OpenCable(TM) Application Platform specification OCAP 1.0 Profile(OC-SP-OCAP1 .O畫IF-109-031121)"。文件4419是證書鏈。圖23是顯示"ocap.certificate.l"文件4419 的詳細(xì)結(jié)構(gòu)的示圖。231描述"ocap.certificate.x" (x是正整數(shù))的典型 結(jié)構(gòu),其包含根證書2311、中間證書2312和葉證書2313。它們具有 鏈關(guān)系,例如其中,根證書2311的持有者發(fā)行中間證書2312,并且 中間證書2312的持有者發(fā)行葉證書2313。注意,根據(jù)OCAP規(guī)范, 與簽名文件"oc叩.signaturefile.x"有關(guān)的證書鏈?zhǔn)蔷哂邢嗤?x" 的"ocap.certificate.x"。在圖44的例子中,對應(yīng)于"ocap.signaturefile.l" 的證書鏈?zhǔn)?ocap.certificate.l"。同樣,根證書2311、中間證書2312、 葉證書2313被配置為相同的X.509證書格式。作為ITU-T的推薦標(biāo) 準(zhǔn),X.509證書被廣泛用于信息和通信行業(yè)中的各個領(lǐng)域,作為一種 證書表現(xiàn)格式的事實上的標(biāo)準(zhǔn)。在圖23中,僅說明了三個證書,但 是可以有存在多個中間證書的情況。然而,在這種情況下,這些中間 證書必須處于鏈狀態(tài)中,其中它們彼此相關(guān)。圖24是顯示X.509證書的結(jié)構(gòu)的示圖。這里,僅說明了說明本 發(fā)明所需的屬性。關(guān)于X.509的詳細(xì)內(nèi)容,請參考正TF RFC3280"Internet X.509 Public Key Infrastructure Certificate and CRL Profile,,。 241指示X.509證書的屬性區(qū)域,242指示X.509證書的簽名值。序 列號2411指示識別證書的編號,簽名算法2412指示用于確定簽名值 242的算法,本次更新日期和時間2413指示當(dāng)該X.509證書變?yōu)橛?效時的日期和時間,下次更新日期和時間2414指示當(dāng)X.509證書期 滿時的日期和時間,發(fā)行人名稱2415指示發(fā)行該X.509證書的管理 機構(gòu)的名稱,主體名稱2416指示該X.509證書的持有者,公鑰2417 指示主體名稱2416的公鑰,簽名值242指示已使用該X.509證書的 發(fā)行人的私鑰簽名(加密)的值。在本實施例中,本次更新日期和時間 2413和下次更新日期和時間2414需要日期和時間的信息,但是,本 次更新日期和時間2413和下次更新日期和時間2414并不總是需要時 間信息。作為使用公鑰和私鑰的系統(tǒng),公鑰密碼系統(tǒng)被廣泛用于電子 商務(wù)等。在公鑰密碼系統(tǒng)中,使用不同于加密明文所用的密鑰的密鑰 來解密密文。由于加密密鑰和解密密鑰不同,所以不能根據(jù)解密密鑰 推斷出加密密鑰。加密密鑰對應(yīng)于私鑰,而解密密鑰對應(yīng)于公鑰。公 鑰密碼系統(tǒng)的典型例子包括RSA(Rivest-Shamir-Adleman)和 DSA(Digital Signature Standard)。文件4420是簽名文件。圖25是顯示"ocap. signaturefile. 1"文件 4420的示意圖。251指示用于識別關(guān)聯(lián)哪個1509證書的證書識別符, 252指示散列簽名算法,253指示通過使用在252中指示的散列簽名 算法根據(jù)"ocap.hashfik" 4416所計算的簽名值。一旦將Java程序存儲到輔助存儲單元510中,即使當(dāng)由于頻道 改變和終端設(shè)備500斷電等原因,將Java程序從主存儲單元511刪 除時,只要AM 1205b己接收到圖20中所示的XAIT,就能夠在不需 要等待下載的情況下激活該Java程序。也就是說,在圖43中,程序"/a/PPVlXlet"的控制信息4302是"自動起動"。因此,在圖44的 4311中,當(dāng)對文件系統(tǒng)的對應(yīng)于"/a/PPVlXlet"的存儲位置4401進 行搜索,然后文件4414被傳送到VM 1203時,存儲在該文件系統(tǒng)中 的Java程序"PPVlXlet"被激活。接下來,給出安全管理器1205f的描述,其是本發(fā)明的主要功能68部件。
安全管理器1205f從服務(wù)管理器1204接收指示即將存儲圖43中 的4304指示的"/a/PPVlXlet"和"/b/PPV2Xlet "的預(yù)存儲通知。 當(dāng)接收到該通知時,安全管理器1205f檢查Java程序識別符4301的 值以判斷其是未簽名程序還是簽名程序。這里,因為Java程序是簽 名程序,所以安全管理器1205f對"/"目錄以下的文件系統(tǒng)執(zhí)行認(rèn)證。 為了檢驗文件系統(tǒng),通過使用圖44中說明的ocap.hashfiles (4416 4418)、 ocap.certificate, 1 (4419)和ocap.signaturefile. 1 (4420)來執(zhí)行認(rèn)i正。
圖26顯示用于執(zhí)行文件系統(tǒng)的認(rèn)證的安全管理器1205f的組成 部分。
通知接收單元261用于在AM 1205b即將存儲文件系統(tǒng)之前接收 預(yù)存儲通知,以及用于將該事實通知給判斷單元262。
判斷單元262判斷認(rèn)證結(jié)果,其請求散列計算單元263對文件系 統(tǒng)進行散列計算以接收散列值。判斷單元262從存在于"ocap.hashfile" 文件中的散列值45.13、 4523和4533提取將比較的值,并檢查其與所 接收的散列值是否相配。如果它們不匹配,則判斷單元262判斷已發(fā) 生篡改,并且認(rèn)證以失敗結(jié)束。
此外,判斷單元262使用證書提取單元265提取每個X.509證書, 并且判斷當(dāng)前時間是否不在每個X.509證書的本次更新日期與時間 2413之前,并且不在每個X,509證書的下次更新日期與時間2414之 后(也就是說,當(dāng)前時間在每個X.509證書的本次更新日期與時間 2413和下次更新日期與時間2414之間)。從OS 1201的庫1201b獲得 當(dāng)前日期和時間。如果有效期不滿足"本次更新日期和時間<當(dāng)前日 期和時間<下次更新日期和時間",則判斷單元262判斷認(rèn)證失敗。
此外,為了認(rèn)證證書鏈,判斷單元262請求散列計算單元263對 每個X.509證書的屬性區(qū)域241進行散列計算。然后,其請求簽名值 解密單元264執(zhí)行用于解密每個X.509證書中包含的簽名值242的計 算,并將得到的解密值與通過散列值計算單元263獲得的散列值進行 比較,以便檢查證書鏈的狀態(tài)。如果它們不匹配,則意味著證書不處 于鏈關(guān)系中,并且因此判斷認(rèn)證失敗。同時,當(dāng)值匹配并且已證實證說明書第59/70頁
書處于鏈關(guān)系中時,檢查所述證書鏈中的根證書是否包含在終端設(shè)備
500的輔助存儲單元510中。如果不包含,則判斷單元262判斷認(rèn)證 失敗,也就是說不能執(zhí)行比較。
當(dāng)滿足下列所有條件時,判斷單元262判斷認(rèn)證成功,所述條件
為(l)沒有篡改;(2)處于有效期;(3)證書處于鏈關(guān)系中;(4)根證書匹配。
當(dāng)被判斷單元262請求計算每個文件的散列值時,散列計算單元 263從OS 1201的庫1201b中提取每個文件,以對它們執(zhí)行散列計算, 并將結(jié)果值傳送給判斷單元262。此外,散列計算單元263從證書提 取單元265獲得證書鏈231中的每個X.509證書,并對它們中的每一 個的屬性區(qū)域241執(zhí)行散列計算。
由判斷單元262請求簽名值解密單元264執(zhí)行用于解密每個 X,509證書或"ocap.signaturefile.x"的簽名值的計算。當(dāng)執(zhí)行計算以 解密每個X.509證書的簽名時,簽名值解密單元264從證書提取單元 265獲得證書鏈231中的每個X,509證書,然后執(zhí)行用于解密它們中 的每一個的簽名的計算,并返回結(jié)果給判斷單元262。
由判斷單元262、散列計算單元263、簽名值解密單元264請求 證書提取單元265提取證書鏈231中的每個X.509證書,并且提取并 返回X.509證書。
圖27是概述當(dāng)執(zhí)行文件系統(tǒng)的認(rèn)證時,由安全管理器1205f執(zhí) 行的操作的流程圖?;谠摿鞒虉D,給出當(dāng)文件系統(tǒng)具有圖44中顯 示的結(jié)構(gòu)時執(zhí)行的操作的說明。當(dāng)從AM 1205b接收到文件系統(tǒng)的預(yù) 存儲通知時(步驟S271),安全管理器1205f對文件系統(tǒng)的頂層"/"目 錄以下的文件系統(tǒng)執(zhí)行篡改檢查(步驟S272)。在篡改檢查中,通過比 較散列值,證實在存在于文件系統(tǒng)的每個目錄中的文件中未發(fā)生破壞 或更改。
圖46和圖30是步驟S272的詳細(xì)流程圖。首先,如步驟S461 所示,分別為各個文件"ocap,certificate.l"和"ocap.signaturefile, 1" 以及存在于"/"目錄中的各個目錄"a"和"b"計算散列值。注意, 目錄"a"和"b"的散列值是分別根據(jù)"/a/ocap,hashfile"文件452和"/b/ocap.hashfile"文件453計算的。在步驟S463,將在步驟S462 計算的散列值與在"/ocap.hashfile"中的4513中描述的每個散列值進 行比較。在步驟S464,如果所計算的散列值中的任何一個與4513中 的散列值不同,則判斷已發(fā)生篡改(步驟S467)。同時,當(dāng)所有所計算 的散列值都與4513中的散列值匹配時,安全管理器1205f轉(zhuǎn)移到步 驟S465。在步驟S465,檢查是否存在還未完成篡改檢查的任何子目 錄。在當(dāng)前階段,目錄"a"和"b"作為"/"目錄的子目錄而存在, 并且還沒有對它們進行篡改檢查。因此,需要為這些目錄"a"和"b" 執(zhí)行篡改檢査。首先,在步驟S466聚焦于"a"目錄,在其中,執(zhí)行 與為"/"目錄執(zhí)行的處理相同的處理。在為"a"目錄完成篡改檢查 之后,為"b"目錄執(zhí)行篡改檢查。當(dāng)已經(jīng)為目錄"a"和"b"完成 篡改檢查時,聚焦于"/"目錄,執(zhí)行圖30中的步驟S301的處理。 在步驟S301中,從作為證書鏈231的"/ocap.certificates.l"文件4419 提取葉證書2313。然后,在步驟S302,從所提取的葉證書2313中取 出公鑰2417。隨后,在步驟S303,為"/ocap,hashfile"文件451計算 散列值。同時,在步驟S304,使用存在于"/ocap.certificatefile,l"文 件4419中的葉證書2313中的公鑰2417對"/ocap ,signaturefile .1"文 件4420中的簽名值242執(zhí)行解密。在步驟S305,檢查在步驟S303 計算的散列值是否等于在步驟S304通過解密簽名值而獲得的值。如 果這些所計算的值匹配,則能夠斷定"/"目錄以下的文件系統(tǒng)未被 篡改(步驟S306)。如果這些所計算的值不匹配,則能夠斷定"/"目 錄以下的文件系統(tǒng)己被篡改(步驟S307)。注意,已給出了一個例子的 描述,其中,以降序從頂層"/"目錄開始向子目錄依次執(zhí)行篡改檢 查,但是,本發(fā)明并不局限于此。因此,可以以升序,從最低層目錄 開始向頂層目錄依次執(zhí)行處理。通過以上處理,獲得圖27中的步驟 S272的結(jié)果。
在步驟S273,當(dāng)步驟S272中的結(jié)果是"已發(fā)生篡改"時,判斷 認(rèn)證失敗,并且發(fā)送關(guān)于該事實的通知(步驟S279),之后結(jié)束處理。 當(dāng)步驟S272的結(jié)果是"沒有篡改"時,執(zhí)行步驟S274的處理。
接下來,參照圖31至圖33,給出證書鏈認(rèn)證的詳細(xì)說明(步驟S274)。假定首先對中間證書2312和葉證書2313執(zhí)行檢査,圖31中 顯示了其流程圖。首先,從證書鏈231中提取中間證書2312和葉證 書2313(步驟S311)。從該提取的葉證書2313中提取本次更新日期與 時間2413、下次更新日期與時間2414以及發(fā)行人名稱2415(步驟 S312)。對于它們,判斷當(dāng)前日期和時間是否在所述本次更新日期與 時間2413和下次更新日期與時間2414之間,在這期間,證書保持有 效(步驟S313)。如果其超出了證書可以保持有效的時期,則證書鏈的 認(rèn)證以失敗結(jié)束(步驟S319)。同時,當(dāng)判斷其在證書的有效期內(nèi)時, 提取中間證書2312中的主體名稱2416和公鑰2417(步驟S314),并 且將中間證書2312的主體名稱2416與葉證書2313的發(fā)行人名稱 2415進行比較,以判斷所述中間證書2312和所述葉證書2313是否 處于鏈關(guān)系中(步驟S315)。如果這些證書不處于鏈關(guān)系中,則證書鏈 的認(rèn)證失敗。同時,當(dāng)在它們之間存在鏈關(guān)系時,為葉證書2313的 屬性區(qū)域241計算散列值(步驟S316)。此外,用中間證書2312的公 鑰2417來解密葉證書2313中的簽名值242(步驟S317)。當(dāng)完成步驟 S316和步驟S317時,檢查在各個步驟中獲得的散列值和解密的簽名 值是否匹配(步驟S318)。如果它們不匹配,則證書鏈的認(rèn)證以失敗結(jié) 束(步驟S319)。
接下來,在根證書2311和中間證書2312之間執(zhí)行檢査。圖32 是顯示該處理的流程圖。從證書鏈231提取根證書2311和中間證書 2312(步驟S321),并且為根證書2311和中間證書2312執(zhí)行與為中間 證書2312和葉證書2313執(zhí)行的檢査相同的處理(步驟S322 步驟 S328)。
當(dāng)在步驟S328中判斷所述值匹配時,單獨對根證書2311執(zhí)行檢 査。圖33是顯示將單獨為根證書2311執(zhí)行的檢查的流程圖。從在步 驟S321中提取的根證書2311中提取本次更新日期與時間2413、下 次更新日期與時間2414以及發(fā)行人名稱2415(步驟S331)。對于它們, 判斷當(dāng)前日期和時間是否在所述本次更新日期與時間2413和下次更 新日期與時間2414之間,在這期間,證書保持有效(步驟S332)。如 果其超出了證書可以保持有效的時期,則證書鏈的認(rèn)證以失敗結(jié)束。
72同時,當(dāng)判斷其在證書的有效期內(nèi)時,為根證書2311的屬性區(qū)域241 計算散列值(步驟S334)。此外,用根證書2311的公鑰2417來解密根 證書2311中的簽名值242(步驟S335)。當(dāng)完成步驟S334和步驟S335 時,檢査在相應(yīng)步驟中獲得的散列值和解密的簽名值是否匹配(步驟 S336)。如果它們匹配,則證書鏈的認(rèn)證成功(S337),而如果它們不匹 配,則證書鏈的認(rèn)證以失敗結(jié)束(步驟S338)。在該點,步驟S274的 處理結(jié)束。
根據(jù)步驟S274的結(jié)果,在步驟S275中執(zhí)行的處理是不同的。當(dāng) 步驟4的結(jié)果是"證書鏈的認(rèn)證失敗"時,判斷認(rèn)證已失敗并且發(fā)送 關(guān)于其的通知(步驟S279),然后,結(jié)束對所述文件系統(tǒng)的認(rèn)證。同時, 當(dāng)"證書鏈的認(rèn)證成功時,執(zhí)行歩驟S276的處理。
接下來,在終端設(shè)備500的輔助存儲單元510中搜索與 "/ocap.certificate. 1 "文件2119的根證書2311相同的證書(步驟S276)。 當(dāng)在輔助存儲單元510中不存在相同的證書時,在步驟S277判斷證 書鏈231的認(rèn)證失敗,并且發(fā)送關(guān)于該認(rèn)證失敗的通知(步驟S279), 之后結(jié)束處理。同時,當(dāng)包含根證書2311時,判斷文件系統(tǒng)的認(rèn)證 成功,并且將關(guān)于該認(rèn)證成功的通知發(fā)送給AM 1205b(步驟S278)。 參照圖28,即使在那之后接收到Java程序的預(yù)激活通知(步驟S281), 也結(jié)束處理而不執(zhí)行處理。
在第二實施例中,如果在一定時間之后激活所存儲的Java程序, 則不必在激活時再一次執(zhí)行認(rèn)證,這是因為在其被存儲之前已經(jīng)對文 件系統(tǒng)執(zhí)行了認(rèn)證。
這里,給出了一個例子的描述,其中,圖47中顯示的"應(yīng)用程 序描述文件"存在于文件系統(tǒng)中,并且僅僅將存儲其中描述的文件。 根據(jù)OCAP規(guī)范,例如,"應(yīng)用程序描述文件"是以XML(可擴展標(biāo) 記語言)格式描述的。圖47顯示了 "應(yīng)用程序描述文件"的一個例子。 在圖47中,沒有圖44中顯示的"PPV2Xletclass" 4415的描述。因 此,在這種情況下,不包含"PPV2xletxlass" 4415作為存儲對象。 在這種情況下,在S462中不為"PPV2xlet,class" 4415計算散列值, 并且因此在S463中,不與"ocap.hashfile"文件4418中描述的4533中的散列值進行比較。在步驟S464,通過約定未作為存儲對象包括 在內(nèi)的文件是在應(yīng)用程序之外來向S465的處理進行轉(zhuǎn)變。 第三實施例
當(dāng)包含在文件系統(tǒng)中的Java程序(PPVlXlet.class 4414或PPV 2Xlet.class 4415)在該文件系統(tǒng)被存儲之后的某一時段將被激活時,包 含在"/ocap.certificate.l"文件4419中的X.509證書之一的有效期有 可能期滿(即,Java程序的激活日期與時間>下次更新日期與時間 2414)。然而,即使在證書鏈231中包含已經(jīng)期滿的X.509證書,第 二實施例也允許激活Java程序。
因此,通過向第二實施例增加檢驗功能來實現(xiàn)本實施例,所述檢 驗功能用于在激活Java程序的時候,檢驗包含在證書鏈231中的每 個證書2311、 2312和2313未期滿。圖26顯示了本實施例中的組成 部分。已經(jīng)在第二實施例中描述了本實施例所需的組成部分261 265,因此這里不再給出其描述。
圖27的流程圖被圖48的流程圖所替代,并且增加了圖49的流 程圖,作為本實施例的流程圖。
參照圖48,在存儲文件系統(tǒng)之前執(zhí)行的處理(步驟S481到步驟 S487)與在第二實施例中說明的處理(步驟S271到步驟S277)相同,因 此省略對其的說明。如果認(rèn)證未失敗,則處理進入圖49中顯示的流 程圖。當(dāng)在一定時間之后,通知將激活Java程序PPVlXlet.class 4414 時(步驟S491),從"ocap.certificate.l"文件4419提取每個X.509證 書,即,根證書2311、中間證書2312、葉證書2313(步驟S492)。然 后,按照從葉證書開始到根證書的順序依次選擇所提取的X.509證書 (步驟S493),并且檢查當(dāng)前日期和時間是否在每個所選擇的X.509證 書的本次更新日期與時間2413和下次更新日期與時間2414之間(步 驟S494)。如果當(dāng)前日期和時間不在本次更新日期與時間2413和下次 更新日期與時間2414之間,則判斷認(rèn)證失敗,并且發(fā)送關(guān)于該事實 的通知(步驟S497)。在其它情況中,檢查是否已經(jīng)為所有的兄509證 書執(zhí)行檢查(步驟S495)。如果未對所有的X.509證書完成檢查,則處 理返回S493,并且重復(fù)后續(xù)的處理。同時,當(dāng)在步驟S495中已經(jīng)對所有的X.509證書進行了檢查,則判斷認(rèn)證成功,并且發(fā)送關(guān)于該認(rèn) 證成功的通知(步驟S496),之后結(jié)束處理。通過增加圖49的流程圖 中顯示的處理,能夠向AM 1205b通知認(rèn)證失敗,從而使得不會激活 有效期已經(jīng)期滿的Java程序。當(dāng)被安全管理器1205f通知認(rèn)證失敗時, AM 1205b在不將該Java程序傳送到JavaVM1203的情況下終止激活。 第四實施例
如第二實施例所述,輔助存儲單元510包含作為根證書的X.509 證書,將其與證書鏈231中的根證書2311進行比較。用新的X.509 證書(以下稱為證書替換)替換存儲在輔助存儲單元510中的根證書, 以防由于黑客(hacking)和其它原因?qū)е伦C書可靠性降低。從頭端101 將新X. 509證書傳送到終端設(shè)備500,以經(jīng)由下載模塊106將其傳送 給安全管理器1205f。
圖51A、 51B和51C是示圖,每一個顯示正在通過安全管理器 1205f替換(證書替換)的輔助存儲單元510中的根證書。在本例中, 證書A5101是將被替換的舊的證書,而證書B5102是新證書。圖51A 中的51-1顯示在執(zhí)行證書替換之前存儲在輔助存儲單元510中的證 書,圖51B中的51-2顯示正在被替換的過程中的證書,圖51C中的 51-3顯示在執(zhí)行證書替換之后存儲在輔助存儲單元510中的證書,
在第二實施例和第三實施例中,即使當(dāng)在存儲Java程序之后執(zhí) 行證書替換,在激活Java程序時也不考慮新證書。例如考慮以下情 況,當(dāng)安全管理器1205f響應(yīng)于預(yù)存儲通知認(rèn)證Java程序時,證書鏈 231中的根證書2311與證書A5101相匹配,并且在用證書B5102替 換證書A5101之后,安全管理器1205f接收到對Java程序的預(yù)激活 通知。這時,輔助存儲單元510不包括任何與證書鏈231中的根證書 2311匹配的證書,這意味著該證書不可靠的。然而在第二實施例和 第三實施例中,因為在激活Java程序之前不在根證書之間進行比較, (即,不將證書鏈231中的根證書2311與證書B5102進行比較),所 以,不對AM 1205b發(fā)送關(guān)于認(rèn)證失敗的通知。因此,AM 1205b使 得Java程序能夠被激活。
因此,在本實施例中,由于證書替換,在激活Java程序時增加比較根證書的功能。
圖26顯示了本實施例中的組成部分。已經(jīng)描述過組成部分261
265,因此省略對其的描述。增加證書替換單元266、證書替換指定 單元267和證書接收單元268。
當(dāng)證書替換指定單元267判斷在輔助存儲單元510中存儲著比所 接收的證書舊的證書時,證書替換單元266用新證書替換該舊證書。 同時,當(dāng)證書替換指定單元267判斷未存儲更舊的證書時,證書替換 單元266將新證書存儲入輔助存儲單元510。
證書替換指定單元267接收由證書接收單元268接收的證書。然 后,通過使用OS 1201的庫1201b,其檢查存儲輔助存儲單元510中 的證書,以査看是否存在發(fā)行人相同并且比所接收的證書舊的證書。
當(dāng)下載模塊1206從頭端101接收到新證書時,證書接收單元268 接收該新證書。當(dāng)接收到所述證書時,證書接收單元268將其傳送到 證書替換單元266和證書替換指定單元267。
另外,在圖48的流程圖之后增加圖52和圖53。
圖52是執(zhí)行證書替換時的流程圖,而圖53是在執(zhí)行證書替換之 后激活Java程序時的流程圖。參照圖52,當(dāng)接收到證書替換請求時(步 驟S521),提取所接收的證書的發(fā)行人名稱(步驟S522)。檢查在終端 設(shè)備500的輔助存儲單元510中是否存在需要被替換的舊的證書(步 驟S523),并且僅當(dāng)存在舊的證書時,刪除該證書。然后,將所接收 的證書存儲入輔助存儲單元510(步驟S525)。當(dāng)在一定時間之后接收 到激活Java程序的通知時(步驟S531),在輔助存儲單元510中搜索 與證書鏈231中的根證書2311匹配的證書(步驟S532),如果存在(步 驟S533),判斷認(rèn)證成功并且發(fā)送關(guān)于該事實的通知(步驟S534)。如 果不存在(步驟S533),則判斷認(rèn)證失敗并且發(fā)送關(guān)于該事實的通知 (步驟S535)。注意,在步驟S534判斷認(rèn)證成功之前,還能夠在檢驗 證書鏈中的每個X.509證書滿足"本次更新日期與時間<當(dāng)前日期和 時間<下次更新日期與時間"之后,推斷出認(rèn)證成功。
此外,除檢査根證書是否匹配之外,在S532之前,還能夠在執(zhí) 行圖31 圖33中顯示的檢查以查看證書鏈中的證書是否處于鏈關(guān)系之后,判斷認(rèn)證是成功的/不成功的。
此外,以上描述了一種情況,其中,基于發(fā)行人名稱指定應(yīng)該替 換的證書,但是還可以基于另一個屬性值(例如主體名稱)來指定證 書。
第五實施例
當(dāng)包含在文件系統(tǒng)中的Java程序(PPVlXletclass 4414或PPV 2Xletxlass 4415)在該文件系統(tǒng)被存儲之后的某一時段將被激活時,存 在一種情況,其中,由于除了包含在"/ocap.certificate.l"文件4419 中的任何X.509證書的有效期期滿以及根證書被替換以外的其它原 因證書被撤銷。本配置允許即使當(dāng)存在撤銷證書時也可以激活Java 程序。
這里,CRL(證書撤銷列表)是公知的證書的撤銷者。圖54是顯示 CRL的結(jié)構(gòu)的示圖。這里,僅說明用于說明本發(fā)明所需的屬性。關(guān) 于CRL的詳細(xì)內(nèi)容,請參考正TF RFC 3280"Internet X. 509 Public Key Infrastructure Certificate and CRLProfile"。 541指示CRL的屬性區(qū)域, 542指示簽名值543的簽名算法,543指示CRL的簽名值。發(fā)行人名 稱5411指示該CRL的發(fā)行人,本次更新日期與時間5412指示CRL 變得有效時的日期與時間,下次更新日期和時間5413指示當(dāng)CRL的 有效期期滿時的日期與時間,撤銷證書列表5414指示關(guān)于撤銷的 X.509證書的信息。圖55是顯示撤銷證書列表5414的結(jié)構(gòu)的示圖。 這里,也僅說明用于說明本發(fā)明所需的屬性。關(guān)于多個撤銷的X.509 證書的信息被存儲在撤銷證書列表5414中。在圖55的例子中,包含 用于唯一識別證書的序列號5511以及當(dāng)"證書A" 551被撤銷時的 曰期與時間5512,作為關(guān)于撤銷的"證書A" 551的信息。其它撤銷 的證書與551相同。
圖56是包含CRL的文件系統(tǒng)的典型結(jié)構(gòu)。"〃'目錄561、 "a" 目錄562、 "SimpleXlet.class "文件563、 "ocap.hashfile"文件564 565、 "ocap.certiflcate.l"文件566、 "ocap.signaturefile.l"文件567、 "ocap.crl.2"文件568以及"ocap.certificate.2"文件569被存儲在其 中。不包含CRL的文件系統(tǒng)的認(rèn)證如第一實施例所述。因此,在本
77實施例中,聚焦于以crl格式構(gòu)造的"ocap.crl.2"文件568以及作為 該文件的證書鏈的"ocap.certificate,2"文件569。注意,根據(jù)OCAP 規(guī)范,"OCAP.crl.x"的證書鏈?zhǔn)?OCAP.certificate.x"。在圖56的例 子中,"ocap.crl.2"的證書鏈?zhǔn)?ocap.certificate.2"。
圖59是顯示"ocap.hashfile"文件564的概要圖。591顯示 ocap.hashfile 564的詳細(xì)內(nèi)容。591中的ocap .hashfile存在于"/"目 錄561中,其包含與存在于相同目錄561中的"ocap,certificate.l"文 件566、 "ocap.signatrefile.l"文件567、 "a"目錄562、 "ocap.crl.2" 文件568以及"ocap.certificate.2"文件569中每一個有關(guān)的散列值。
圖57是用于說明CRL的認(rèn)證的流程圖。以下對一個例子進行描 述,其中,文件系統(tǒng)具有圖56中顯示的結(jié)構(gòu)。首先,從CRL提取本 次更新日期與時間5412和下次更新日期與時間5413(步驟S571),并 且檢查當(dāng)前日期和時間是否在所述本次更新日期與時間5412和下次 更新日期與時間5413之間(步驟S572)。如果不在之間,則判斷該CRL 無效(步驟S577)。如果當(dāng)前日期和時間在它們之間,則計算屬性區(qū)域 541的散列值,以便檢驗"ocap.crl.2"文件568的簽名值(步驟S573)。 同時,從"ocap.certificate,2"文件569提取葉證書2313的公鑰2417, "ocap.certificate.2"文件569是證書鏈(步驟S574),并且用所提取的 公鑰2417解密"ocap.crl.2"文件568的簽名值543(步驟S575)。然 后,檢査在步驟S573獲得的散列值是否等于在步驟S575獲得的解密 值(步驟S576)。如果它們不相等,則判斷CRL無效(步驟S577)。如 果它們相等,參照圖58,對作為證書鏈的"ocap.certificate.2"文件 569執(zhí)行認(rèn)證(步驟S581)。用于認(rèn)證證書鏈的方法與圖31至圖33所 示的方法相同,因此這里不再描述。隨后,判斷證書鏈的認(rèn)證是否成 功(步驟S582),如果認(rèn)證失敗,則判斷該CRL無效(步驟S586)。同 時,如果認(rèn)證成功,則在輔助存儲單元510中搜索與根證書相同的證 書(步驟S583)。這里,如果沒有匹配的根證書,則判斷認(rèn)證失敗并且 該CRL無效(步驟S586),而如果包含匹配的根證書,則判斷認(rèn)證成 功并且CRL有效(步驟S585)。
下面描述對以下問題的解決方案,所述問題為,盡管根據(jù)CRL證
78書被撤銷,但是還激活Java程序。為了支持該方案,為本實施例增 加功能,所述功能用于當(dāng)發(fā)出激活該Java程序的通知時,判斷用于 認(rèn)證Java程序的證書是否為CRL中的撤銷證書。
圖26顯示了本實施例中的組成部分。除了增加了功能的262和 未描述過的269之外,不再描述已在上面描述的組成部分。
判斷單元262還能夠認(rèn)證CRL,其請求證書撤銷指定單元269 指定將通過CRL撤銷的證書。然后,當(dāng)通知接收單元261接收到與 由證書撤銷指定單元269指定的撤銷證書有關(guān)的Java程序的預(yù)激活 通知時,判斷單元262判斷認(rèn)證失敗。同時,當(dāng)在判斷單元262認(rèn)證 CRL失敗并且因此判斷該CRL無效的狀態(tài)中,通知接收單元261 接收到Java程序的預(yù)激活通知時,判斷單元262判斷認(rèn)證成功。
當(dāng)判斷單元262判斷CRL的認(rèn)證成功時,證書撤銷指定單元269 指定由證書提取單元265提取的哪一個X.509證書是撤銷證書。
增加圖60和圖61作為流程圖。根據(jù)這些流程圖給出下列描述。 假定發(fā)出了對圖44所示的文件系統(tǒng)的預(yù)存儲通知,開始圖48的流程 圖中顯示的處理,并且在適當(dāng)?shù)臅r候完成步驟S487的處理。假定然 后接受到對圖56中顯示的另一個文件系統(tǒng)的預(yù)存儲通知,在完成圖 57的流程圖中顯示的處理之后,執(zhí)行步驟S6001至步驟S6007。步驟 S6001至步驟S6007的處理與步驟S481至步驟S487的處理相同。當(dāng) 達到步驟S6008并且如果"ocap.crl.2"文件563的認(rèn)證(圖57和圖58 的流程圖)成功時,關(guān)于包含在該文件中的撤銷證書的信息被寫入撤 銷證書的數(shù)據(jù)庫。圖62是顯示撤銷證書的數(shù)據(jù)庫的概要圖。發(fā)行人 名稱存儲在列621,證書序列號存儲在列622,撤銷的日期和時間存 儲在列623。這里,當(dāng)接收到"PPVlXletxlass" 4414的預(yù)激活通知 時(步驟S611),檢査在撤銷證書的數(shù)據(jù)庫中是否包含 "ocap.certificate.l"文件4419的證書鏈231中包含的任何X.509證 書(步驟S613)。如果存在任何證書,則判斷認(rèn)證失敗并且發(fā)送關(guān)于此 的通知(步驟S616)。同時,當(dāng)沒有可應(yīng)用的證書時,對整個證書鏈執(zhí) 行檢查(步驟S614),并且發(fā)送判斷認(rèn)證成功的通知(步驟S615)。通過 以上處理,對于所述文件系統(tǒng),通過判斷文件的認(rèn)證是失敗的,能夠解決激活不應(yīng)被激活的Java程序的問題,其中,所述文件系統(tǒng)是指 其證書在檢驗時是有效的,而在激活Java程序時已通過CRL轉(zhuǎn)變?yōu)?已撤銷的文件系統(tǒng)。
注意,在第一至第五實施例中,當(dāng)接收到Java程序的預(yù)激活通 知時,還能夠通過使用每個目錄中的"ocap.hashfile"執(zhí)行檢驗以査 看文件系統(tǒng)的樹結(jié)構(gòu)是否正確。
此外,為了簡化說明,在證書鏈中僅存在一個中間證書,但是有 可能存在多個中間證書。然而,當(dāng)對它的證書鏈執(zhí)行認(rèn)證時,所有的 中間證書都必需處于鏈關(guān)系中。
此外,以所述的順序描述了下列處理,但是本發(fā)明并不局限于該 次順檢查存在/沒有篡改;認(rèn)證證書鏈;檢査以查看輔助存儲單元 是否包含與證書鏈中的根證書相同的根證書。
此外,對于文件系統(tǒng)的存儲,安全管理器1205f可以使用OS的 庫1201b存儲其。同樣,第一至第五實施例還可應(yīng)用于以下情況,其 中,在文件系統(tǒng)的頂層目錄"/"提供"應(yīng)用程序描述文件",并且作 為其內(nèi)容,僅指示文件系統(tǒng)的一部分作為將存儲的文件。因此,如果 僅處理將存儲的文件也沒問題。
此外,以上將程序描述為存儲對象,但是,除程序以外的數(shù)據(jù)也 可以作為存儲對象,這意味著第一至第五實施例同樣適用于數(shù)據(jù)。
此外,存在一種可能性,其中,多于一個"ocapxertificate.x"對 應(yīng)于"ocap.signaturefile.x ",在這種情況下,需要至少 一 個 "ocap.certificate,x"文件的認(rèn)證成功。
同樣,"ocap.certificate.x "已被作為典型的證書鏈來表示, "ocap.hashfile"已被作為典型的具有散列值的文件來表示,并且 "ocap.signaturefile.x"已被作為用于檢査"/"目錄中的"ocap .hashfile" 是否已被篡改的典型文件來表示,但是本發(fā)明并不局限于這些文件 名。
此外,當(dāng)認(rèn)證失敗時,可以在重下載之后再次執(zhí)行認(rèn)證。 此外,當(dāng)認(rèn)證失敗時,可以刪除存儲的程序以及用于認(rèn)證的證書 鏈、簽名文件、散列文件,以便保留足夠的存儲區(qū)域。這里,給出了一個例子的描述,其中,組成程序的文件系統(tǒng)具有
圖63中顯示的結(jié)構(gòu),并且沒有用于認(rèn)證的文件的描述,如同在圖64 中顯示的"應(yīng)用程序描述文件"的情況。圖63中顯示的6311至6320 相當(dāng)于圖44中顯示的4411至4420。 6321表示描述將被存儲的文件 的"應(yīng)用程序描述文件"。在圖64中的"應(yīng)用程序描述文件"中,沒 有認(rèn)證所需的"ocap.certificate.l" 6319、 "ocap.signaturefile.l" 6320 以及"ocap.hashfile" 6317的描述。在本例中,如果僅僅如圖64所示 存儲文^^,則不會存儲執(zhí)行認(rèn)證所需的文件。因此,在第三、第四以 及第五實施例中提出的認(rèn)證不能在激活的時候執(zhí)行。當(dāng)將激活存儲的 程序,并且圖63中顯示的文件(其顯示存儲該程序之前的文件)準(zhǔn)備 好下載時,存儲的文件可以被用作構(gòu)成程序的文件并且用于認(rèn)證的文 件可以被再次下載以用于認(rèn)證。
然而,可以出現(xiàn)以下情況,其中,圖63中顯示的文件(其顯示存 儲程序之前的文件)不能被下載。因此,可以存儲用于在程序激活時 執(zhí)行的認(rèn)證的認(rèn)證所需的文件,即使它們不在"應(yīng)用程序描述文件" 中被描述。
盡管以上描述了本發(fā)明的一些典型實施例,但是,本領(lǐng)域的技術(shù) 人員將容易地意識到,在實質(zhì)上不脫離本發(fā)明的新的教義和優(yōu)點的情 況下,可以對典型實施例實施各種變形。因此,所有這些變形都應(yīng)包 含在本發(fā)明的范圍內(nèi)。
工業(yè)實用性
根據(jù)本發(fā)明的程序數(shù)據(jù)文件存儲方法和認(rèn)證程序執(zhí)行方法適用 于程序執(zhí)行設(shè)備,例如數(shù)字電視接收器和移動電話,其下載并執(zhí)行程序。
8權(quán)利要求
1.一種程序數(shù)據(jù)文件存儲方法,包括第一步驟,用于認(rèn)證包含在第一傳輸流中的第一程序的數(shù)據(jù)文件中的每一個,以及根據(jù)與所述第一程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息,將所述第一程序的已認(rèn)證的數(shù)據(jù)文件中的每一個存儲到廣播接收器中;第二步驟,用于接收與包含在第二傳輸流中的第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息;以及當(dāng)所述第二程序的數(shù)據(jù)文件包含不同于在存儲所述第一程序時已認(rèn)證的、所述第一程序的數(shù)據(jù)文件中的任何一個的數(shù)據(jù)文件時執(zhí)行下列步驟第三步驟,用于檢驗第一散列值和第二散列值是否一致,該第一散列值是根據(jù)包含在所述第二程序中的所述不同的數(shù)據(jù)文件而計算的,該第二散列值存儲在對應(yīng)于包含在所述第二程序中的所述不同的數(shù)據(jù)文件的散列文件中;第四步驟,用于檢驗包含在所述第二程序中的證書文件是否有效;第五步驟,用于檢驗解密值與第三散列值是否一致,所述解密值是通過使用所述第二程序的證書文件中的葉證書的公鑰,來解密包含在所述第二程序中的簽名文件的簽名值而獲得的,而所述第三散列值是根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的;以及第六步驟,當(dāng)滿足下列條件時,認(rèn)證所述第二程序,并根據(jù)與所述第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息存儲所述已認(rèn)證的第二程序,所述條件為在所述第三步驟中,檢驗到所述第一散列值和所述第二散列值一致;在所述第四步驟中,檢驗到包含在所述第二程序中的證書文件有效;以及在所述第五步驟中,檢驗到通過解密包含在所述第二程序中的簽名文件的簽名值而獲得的所述解密值和根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的所述第三散列值一致,其中,當(dāng)所述第二程序具有目錄結(jié)構(gòu)時,包含在所述第二程序的每個目錄中的每個數(shù)據(jù)文件與對應(yīng)于所述每個數(shù)據(jù)文件的散列文件位于相同的目錄中,以及對包含所述包含在所述第二程序中的所述不同的數(shù)據(jù)文件的每個目錄執(zhí)行所述第三步驟。
2. —種程序數(shù)據(jù)文件存儲方法,包括第一步驟,用于認(rèn)證包含在第一傳輸流中的第一程序的數(shù)據(jù)文件 中的每一個,以及根據(jù)與所述第一程序的數(shù)據(jù)文件中的每一個的存儲 有關(guān)的信息,將所述第一程序的已認(rèn)證的數(shù)據(jù)文件中的每一個存儲到 廣播接收器中;第二步驟,用于接收與包含在第二傳輸流中的第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息;以及當(dāng)所述第二程序的數(shù)據(jù)文件包含不同于在存儲所述第一程序時 已認(rèn)證的、所述第一程序的數(shù)據(jù)文件中的任何一個的數(shù)據(jù)文件時執(zhí)行下列步驟第三步驟,用于檢驗第一散列值和第二散列值是否一致,該第一 散列值是根據(jù)包含在所述第二程序中的所述不同的數(shù)據(jù)文件而計算 的,該第二散列值存儲在對應(yīng)于包含在所述第二程序中的所述不同的 數(shù)據(jù)文件的散列文件中;第四步驟,用于檢驗包含在所述第二程序中的證書文件是否有效;第五步驟,用于檢驗解密值與第三散列值是否一致,所述解密值 是通過使用所述第二程序的證書文件中的葉證書的公鑰,來解密包含 在所述第二程序中的簽名文件的簽名值而獲得的,而所述第三散列值 是根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的;以及第六步驟,當(dāng)滿足下列條件時,認(rèn)證所述第二程序,并根據(jù)與所 述第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息存儲所述已認(rèn) 證的第二程序,所述條件為在所述第三步驟中,檢驗到所述第一散 列值和所述第二散列值一致;在所述第四步驟中,檢驗到包含在所述第二程序中的證書文件有效;以及在所述第五步驟中,檢驗到通過解 密包含在所述第二程序中的簽名文件的簽名值而獲得的所述解密值 和根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的所述第三 散列值一致,其中,在所述第六步驟中,當(dāng)滿足下列條件中的至少一個時,不 存儲所述第二程序,所述條件為在所述第三步驟中,未檢驗到所述 第一散列值和所述第二散列值一致;在所述第四步驟中,未檢驗到包 含在所述第二程序中的證書文件有效;以及在所述第五步驟中,未檢 驗到通過解密包含在所述第二程序中的簽名文件的簽名值而獲得的 所述解密值和根據(jù)位于所述第二程序的頂層目錄中的散列文件計算 的所述第三散列值一致。
3. —種程序數(shù)據(jù)文件存儲方法,包括第一步驟,用于認(rèn)證包含在第一傳輸流中的第一程序的數(shù)據(jù)文件 中的每一個,以及根據(jù)與所述第一程序的數(shù)據(jù)文件中的每一個的存儲 有關(guān)的信息,將所述第一程序的已認(rèn)證的數(shù)據(jù)文件中的每一個存儲到 廣播接收器中;第二步驟,用于接收與包含在第二傳輸流中的第二程序的數(shù)據(jù)文 件中的每一個的存儲有關(guān)的信息;以及當(dāng)所述第二程序的數(shù)據(jù)文件包含不同于在存儲所述第一程序時 己認(rèn)證的、所述第一程序的數(shù)據(jù)文件中的任何一個的數(shù)據(jù)文件時執(zhí)行 下列步驟第三步驟,用于檢驗第一散列值和第二散列值是否一致,該第一 散列值是根據(jù)包含在所述第二程序中的所述不同的數(shù)據(jù)文件而計算 的,該第二散列值存儲在對應(yīng)于包含在所述第二程序中的所述不同的 數(shù)據(jù)文件的散列文件中;第四步驟,用于檢驗包含在所述第二程序中的證書文件是否有效;第五步驟,用于檢驗解密值與第三散列值是否一致,所述解密值 是通過使用所述第二程序的證書文件中的葉證書的公鑰,來解密包含在所述第二程序中的簽名文件的簽名值而獲得的,而所述第三散列值 是根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的;以及第六步驟,當(dāng)滿足下列條件時,認(rèn)證所述第二程序,并根據(jù)與所 述第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息存儲所述已認(rèn) 證的第二程序,所述條件為在所述第三步驟中,檢驗到所述第一散 列值和所述第二散列值一致;在所述第四步驟中,檢驗到包含在所述 第二程序中的證書文件有效;以及在所述第五步驟中,檢驗到通過解 密包含在所述第二程序中的簽名文件的簽名值而獲得的所述解密值 和根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的所述第三 散列值一致,其中,在所述第六步驟中,當(dāng)所述第二程序的數(shù)據(jù)文件包括與所 述第一程序的數(shù)據(jù)文件中的任意一個相同的數(shù)據(jù)文件時,不將包含在 所述第二程序中的所述相同的數(shù)據(jù)文件存儲到所述廣播接收器中。
4. 一種程序數(shù)據(jù)文件存儲方法,包括第一步驟,用于認(rèn)證包含在第一傳輸流中的第一程序的數(shù)據(jù)文件 中的每一個,以及根據(jù)與所述第一程序的數(shù)據(jù)文件中的每一個的存儲 有關(guān)的信息,將所述第一程序的已認(rèn)證的數(shù)據(jù)文件中的每一個存儲到 廣播接收器中;第二步驟,用于接收與包含在第二傳輸流中的第二程序的數(shù)據(jù)文 件中的每一個的存儲有關(guān)的信息;以及當(dāng)所述第二程序的數(shù)據(jù)文件包含不同于在存儲所述第一程序時 已認(rèn)證的、所述第一程序的數(shù)據(jù)文件中的任何一個的數(shù)據(jù)文件時執(zhí)行 下列步驟第三步驟,用于檢驗第一散列值和第二散列值是否一致,該第一 散列值是根據(jù)包含在所述第二程序中的所述不同的數(shù)據(jù)文件而計算 的,該第二散列值存儲在對應(yīng)于包含在所述第二程序中的所述不同的 數(shù)據(jù)文件的散列文件中;第四步驟,用于檢驗包含在所述第二程序中的證書文件是否有效;第五步驟,用于檢驗解密值與第三散列值是否一致,所述解密值 是通過使用所述第二程序的證書文件中的葉證書的公鑰,來解密包含 在所述第二程序中的簽名文件的簽名值而獲得的,而所述第三散列值 是根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的;以及第六步驟,當(dāng)滿足下列條件時,認(rèn)證所述第二程序,并根據(jù)與所 述第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息存儲所述已認(rèn) 證的第二程序,所述條件為在所述第三步驟中,檢驗到所述第一散 列值和所述第二散列值一致;在所述第四步驟中,檢驗到包含在所述 第二程序中的證書文件有效;以及在所述第五步驟中,檢驗到通過解 密包含在所述第二程序中的簽名文件的簽名值而獲得的所述解密值 和根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的所述第三 散列值一致,其中,在所述第六步驟中,當(dāng)所述第二程序的數(shù)據(jù)文件包括與所 述第一程序的數(shù)據(jù)文件中的任意一個相同的數(shù)據(jù)文件時,用包含在所 述第二程序中的所述相同的數(shù)據(jù)文件重寫所述第一程序的所述數(shù)據(jù) 文件并將其存儲到所述廣播接收器中。
5. —種程序存儲設(shè)備,包括第一存儲單元,用于認(rèn)證包含在第一傳輸流中的第一程序的數(shù)據(jù)文件中的每一個,以及根據(jù)與所述第一程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息,存儲所述第一程序的已認(rèn)證的數(shù)據(jù)文件中的每一 個.存儲信息接收單元,用于接收與包含在第二傳輸流中的第二程序 的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息;以及下列單元,當(dāng)所述第二程序的數(shù)據(jù)文件包含不同于在存儲所述第 一程序時已認(rèn)證的、所述第一程序的數(shù)據(jù)文件中的任何一個的數(shù)據(jù)文 件時執(zhí)行其操作第一檢驗單元,用于檢驗第一散列值和第二散列值是否一致,該 第一散列值是根據(jù)包含在所述第二程序中的所述不同的數(shù)據(jù)文件而 計算的,該第二散列值存儲在對應(yīng)于包含在所述第二程序中的所述不同的數(shù)據(jù)文件的散列文件中;第二檢驗單元,用于檢驗包含在所述第二程序中的證書文件是否有效;第三檢驗單元,用于檢驗解密值與第三散列值是否一致,所述解 密值是通過使用所述第二程序的證書文件中的葉證書的公鑰,來解密 包含在所述第二程序中的簽名文件的簽名值而獲得的,而所述第三散 列值是根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的;以及第二存儲單元,當(dāng)滿足下列條件時,認(rèn)證所述第二程序,并根據(jù) 與所述第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息存儲所述 已認(rèn)證的第二程序,所述條件為所述第一檢驗單元檢驗到所述第一 散列值和所述第二散列值一致;所述第二檢驗單元檢驗到包含在所述 第二程序中的證書文件有效;以及,所述第三檢驗單元檢驗到通過解密包含在所述第二程序中的簽名文件的簽名值而獲得的所述解密值 和根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的所述第三 散列值一致,其中,當(dāng)所述第二程序具有目錄結(jié)構(gòu)時,包含在所述第二程序的每個目錄中的每個數(shù)據(jù)文件與對應(yīng)于所 述每個數(shù)據(jù)文件的散列文件位于相同的目錄中,以及所述第一檢驗單元用于對包含所述包含在所述第二程序中的所 述不同的數(shù)據(jù)文件的每個目錄執(zhí)行檢驗。
6. —種程序存儲設(shè)備,包括第一存儲單元,用于認(rèn)證包含在第一傳輸流中的第一程序的數(shù)據(jù)文件中的每一個,以及根據(jù)與所述第一程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息,存儲所述第一程序的已認(rèn)證的數(shù)據(jù)文件中的每一 個.存儲信息接收單元,用于接收與包含在第二傳輸流中的第二程序 的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息;以及下列單元,當(dāng)所述第二程序的數(shù)據(jù)文件包含不同于在存儲所述第 一程序時已認(rèn)證的、所述第一程序的數(shù)據(jù)文件中的任何一個的數(shù)據(jù)文件時執(zhí)行其操作第一檢驗單元,用于檢驗第一散列值和第二散列值是否一致,該 第一散列值是根據(jù)包含在所述第二程序中的所述不同的數(shù)據(jù)文件而 計算的,該第二散列值存儲在對應(yīng)于包含在所述第二程序中的所述不 同的數(shù)據(jù)文件的散列文件中;第二檢驗單元,用于檢驗包含在所述第二程序中的證書文件是否 有效;第三檢驗單元,用于檢驗解密值與第三散列值是否一致,所述解 密值是通過使用所述第二程序的證書文件中的葉證書的公鑰,來解密 包含在所述第二程序中的簽名文件的簽名值而獲得的,而所述第三散列值是根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的;以及 第二存儲單元,當(dāng)滿足下列條件時,認(rèn)證所述第二程序,并根據(jù) 與所述第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息存儲所述 已認(rèn)證的第二程序,所述條件為所述第一檢驗單元檢驗到所述第一 散列值和所述第二散列值一致;所述第二檢驗單元檢驗到包含在所述 第二程序中的證書文件有效;以及,所述第三檢驗單元檢驗到通過解 密包含在所述第二程序中的簽名文件的簽名值而獲得的所述解密值 和根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的所述第三 散列值一致,,其中,當(dāng)滿足下列條件中的至少一個時,所述第二存儲單元不存 儲所述第二程序,所述條件為在所述第一檢驗單元中,未檢驗到所 述第一散列值和所述第二散列值一致;所述第二檢驗單元未檢驗到包 含在所述第二程序中的證書文件有效;以及,所述第三檢驗單元未檢 驗到通過解密包含在所述第二程序中的簽名文件的簽名值而獲得的 所述解密值和根據(jù)位于所述第二程序的頂層目錄中的散列文件計算 的所述第三散列值一致。
7. —種程序存儲設(shè)備,包括第一存儲單元,用于認(rèn)證包含在第一傳輸流中的第一程序的數(shù)據(jù) 文件中的每一個,以及根據(jù)與所述第一程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息,存儲所述第一程序的已認(rèn)證的數(shù)據(jù)文件中的每一 個.存儲信息接收單元,用于接收與包含在第二傳輸流中的第二程序 的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息;以及下列單元,當(dāng)所述第二程序的數(shù)據(jù)文件包含不同于在存儲所述第 一程序時已認(rèn)證的、所述第一程序的數(shù)據(jù)文件中的任何一個的數(shù)據(jù)文 件時執(zhí)行其操作第一檢驗單元,用于檢驗第一散列值和第二散列值是否一致,該 第一散列值是根據(jù)包含在所述第二程序中的所述不同的數(shù)據(jù)文件而 計算的,該第二散列值存儲在對應(yīng)于包含在所述第二程序中的所述不 同的數(shù)據(jù)文件的散列文件中; -第二檢驗單元,用于檢驗包含在所述第二程序中的證書文件是否 有效;第三檢驗單元,用于檢驗解密值與第三散列值是否一致,所述解 密值是通過使用所述第二程序的證書文件中的葉證書的公鑰,來解密 包含在所述第二程序中的簽名文件的簽名值而獲得的,而所述第三散 列值是根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的;以及第二存儲單元,當(dāng)滿足下列條件時,認(rèn)證所述第二程序,并根據(jù) 與所述第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息存儲所述 已認(rèn)證的第二程序,所述條件為所述第一檢驗單元檢驗到所述第一 散列值和所述第二散列值一致;所述第二檢驗單元檢驗到包含在所述 第二程序中的證書文件有效;以及,所述第三檢驗單元檢驗到通過解 密包含在所述第二程序中的簽名文件的簽名值而獲得的所述解密值 和根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的所述第三 散列值一致,其中,當(dāng)所述第二程序的數(shù)據(jù)文件包括與所述第一程序的數(shù)據(jù)文 件中的任意一個相同的數(shù)據(jù)文件時,所述第二存儲單元不將包含在所 述第二程序中的所述相同的數(shù)據(jù)文件存儲到所述廣播接收器中。
8. —種程序存儲設(shè)備,包括第一存儲單元,用于認(rèn)證包含在第一傳輸流中的第一程序的數(shù)據(jù)文件中的每一個,以及根據(jù)與所述第一程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息,存儲所述第一程序的已認(rèn)證的數(shù)據(jù)文件中的每一 個.存儲信息接收單元,用于接收與包含在第二傳輸流中的第二程序 的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息;以及下列單元,當(dāng)所述第二程序的數(shù)據(jù)文件包含不同于在存儲所述第 一程序時已認(rèn)證的、所述第一程序的數(shù)據(jù)文件中的任何一個的數(shù)據(jù)文 件時執(zhí)行其操作第一檢驗單元,用于檢驗第一散列值和第二散列值是否一致,該 第一散列值是根據(jù)包含在所述第二程序中的所述不同的數(shù)據(jù)文件而 計算的,該第二散列值存儲在對應(yīng)于包含在所述第二程序中的所述不 同的數(shù)據(jù)文件的散列文件中;第二檢驗單元,用于檢驗包含在所述第二程序中的證書文件是否 有效;第三檢驗單元,用于檢驗解密值與第三散列值是否一致,所述解 密值是通過使用所述第二程序的證書文件中的葉證書的公鑰,來解密 包含在所述第二程序中的簽名文件的簽名值而獲得的,而所述第三散 列值是根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的;以及第二存儲單元,當(dāng)滿足下列條件時,認(rèn)證所述第二程序,并根據(jù) 與所述第二程序的數(shù)據(jù)文件中的每一個的存儲有關(guān)的信息存儲所述 已認(rèn)證的第二程序,所述條件為所述第一檢驗單元檢驗到所述第一 散列值和所述第二散列值一致;所述第二檢驗單元檢驗到包含在所述 第二程序中的證書文件有效;以及,所述第三檢驗單元檢驗到通過解 密包含在所述第二程序中的簽名文件的簽名值而獲得的所述解密值 和根據(jù)位于所述第二程序的頂層目錄中的散列文件計算的所述第三 散列值一致,其中,當(dāng)所述第二程序的數(shù)據(jù)文件包括與所述第一程序的數(shù)據(jù)文 件中的任意一個相同的數(shù)據(jù)文件時,所述第二存儲單元用包含在所述 第二程序中的所述相同的數(shù)據(jù)文件重寫所述第一程序的所述數(shù)據(jù)文件并將在所述第二程序中包括的所述相同的數(shù)據(jù)文件存儲到所述廣 播接收器中。
全文摘要
傳統(tǒng)上,當(dāng)已升級程序的版本時,當(dāng)前存儲的程序的整體需要被刪除,以便被新程序替換,并且當(dāng)激活該新程序時,需要再次對該新程序進行認(rèn)證。然而,由于即使當(dāng)僅僅改變一部分該程序時,也需要存儲并認(rèn)證整個程序,這會消耗時間并導(dǎo)致響應(yīng)速度下降。為了解決該問題,當(dāng)存儲新程序時,本發(fā)明提取新程序和當(dāng)前存儲的舊程序之間的差別,并且在僅對這些差別執(zhí)行認(rèn)證后存儲新程序。
文檔編號G06F9/445GK101668166SQ20091017329
公開日2010年3月10日 申請日期2004年12月15日 優(yōu)先權(quán)日2003年12月18日
發(fā)明者寺尾聰, 楠堂忠夫, 鹽見隆一 申請人:松下電器產(chǎn)業(yè)株式會社