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