专利名称:用于存储、认证以及执行应用程序的方法
技术领域:
本发明涉及一种程序数据文件存储方法和一种认证程序执行方 法,用于在检验下载程序的可靠性之后存储所述下载的程序,并且执 行所述已被检验为可靠的程序,特别地,本发明涉及程序的更新和认 证。
背景技术:
在DVB-MHP规范"ETSI TS 101 812 Vl.2.1 DVB-MHP Specification 1.0.2"及其他规范中描述了数字电视中的下载程序以及 检查/保证这种程序的可靠性的功能。该DVB-MHP规范定义检验功 能,该功能用于检验叠加在正在被接收的广播电波上的程序是否未被 篡改以及是否这样的程序是由可靠的组织发出的。该功能能够防止激 活不按照原来的要求工作、因此将使数字电视遭受损害的重写过的程 序,以及欺骗性第三方的程序。
在OCAP规范(OCAP 1.0 Profile OC-SP-OCAP1.0-IF-I09-031121) 中描述了更新程序的功能。依据该OCAP规范,当在XAIT(描述程序 的表)中检测到程序升级信号(无论何时它的描述发生变化都升级程 序的版本)时,删除程序的所有文件,例如当前存储在辅助存储器(例 如闪速ROM(flash ROM))中的类文件和数据文件,并替换为升级程序 的文件,例如类文件和数据文件。
同时,日本特开平专利申请No.2000-259417公开了一种技术, 其中,通过响应于来自构成执行环境的执行实体或另一个对象的请求执行以下步骤来替换构成执行环境的对象,即删除构成执行环境的 对象的步骤;以及从外部系统获取新对象的步骤。
当升级程序时,并不升级它的所有文件,例如类文件和数据文件, 而是仅部分地升级该程序。然而,根据传统的技术,即使当程序仅需 要被部分地升级时,也需要删除存储的程序的所有文件,以替换为升 级程序的文件。这是使用传统技术的问题,因为响应速度会随着存储 所需的时间的增长成比例的增大。此外,在将程序存入非易失性存储 器一次以便在所述设备被通电/断电之后激活该程序的情况下,在它 被激活之前执行程序认证。在这种情况下,需要在开始激活所述程序 之前执行例如解密加密值这样的计算,这将导致随着计算所需的时间 变长,响应速度会减小更多。尤其是在一个程序被频繁的激活或程序 的体积较大的情况下,因为计算量随着激活频率和体积的增大成比例 地增加,所以响应速度变得越来越慢。
由于以上问题,希望提供一种程序执行设备,例如具有增大的响 应速度的数字电视,其能够縮短程序更新所需的时间以及縮短激活程 序之前所需的时间,同时保证所述程序的可靠性。
发明内容
本发明的目的是提供一种程序数据文件存储方法以及一种认证 程序执行方法,其既能够在升级程序版本时,通过提取升级前后的程 序之间的差异,在存储程序之前仅为该差异执行认证和更新,从而保 证可靠性以及提高响应速度,又能够在激活程序时,不执行认证或只 执行部分认证。
为了解决传统问题,根据本发明的程序数据文件存储方法包括 第一步骤,用于认证包含在第一传输流中的第一程序的每个数据文 件,并根据关于第一程序的每个数据文件的存储的信息,将第一程序 的每个已认证的数据文件存储到广播接收器中;第二步骤,用于接收 关于包含在第二传输流中的第二程序的每个数据文件的存储的信息; 以及下列步骤,当第二程序的数据文件包含不同于当存储第一程序时 已认证的、第一程序的任何数据文件的数据文件时执行所述下列步骤第三步骤,用于检验两个散列值是否一致,其中一个散列值是根 据包含在第二程序中的不同数据文件计算的,另一个散列值是存储在 对应于包含在第二程序中的不同数据文件的散列文件中;第四步骤, 用于检验包含在第二程序中的证书文件是否有效;第五步骤,检验解 密值与散列值是否一致,其中,所述解密值是通过使用第二程序的证 书文件中的叶证书的公钥解密包含在第二程序中的签名文件的签名 值而获得的,并且散列值是根据位于第二程序的顶层目录的散列文件 而计算的;以及第六步骤,用于认证所述第二程序,以及当满足下列 条件时,根据与所述第二程序的数据文件中的每一个的存储有关的信 息存储所述己认证的第二程序,所述条件为在所述第三步骤中,检 验结果为所述两个散列值一致;在所述第四步骤中,检验结果为包含 在所述第二程序中的证书文件有效;以及在所述第五步骤中,检验结 果为所述解密值与所述散列值一致。
因此,能够縮短认证和更新程序所需的时间。
此外,包含在第二程序中的不同的数据文件可以是用于更新在存 储所述第一程序时已认证的、第一程序的数据文件的数据文件。
因此,能够使用包含在版本已升级的第二程序中的数据文件更新 包含在第一程序中的数据文件。
此外,包含在所述第二程序中的所述不同的数据文件可以是不同 于已在存储所述第一程序时被认证过的、所述第一程序的数据文件中 的任何一个的新数据文件。
因此,能够存储新加入版本己升级的第二程序的数据文件。
此外,当所述程序中的每一个具有目录结构时,包含在每个目录 中的每个数据文件与对应于所述每个数据文件的散列文件位于相同 的目录中,以及可以对包含所述包含在所述第二程序中的不同的数据 文件的每个目录执行所述第三步骤。
因此,能够为包含在每个目录中的每个数据文件检查根据所述文 件计算的散列值和存储在对应于所述数据文件的散列文件中的散列 值是否一致。
此外,第四步骤可以包括第七步骤,用于检验两个根证书是否匹
14配,所述两个根证书中的一个在包含在所述第二程序中的证书文件 中,而另一个根证书被安装在所述广播接收器中,以及在所述第四步 骤中,当所述两个根证书匹配时,所述证书文件被证实有效。
这里,第四步骤可以还包括第八步骤,用于检验包含在所述第二 程序中的证书文件中的每个证书的有效期,以及在所述第四步骤中, 当同时满足下列两个条件时,所述证书文件被证实有效,所述两个条 件为所述两个根证书匹配;以及执行所述认证的时间在所述证书文
件中的每个证书的有效期内。
因此,当根证书不匹配以及证书的有效期期满时,能够防止存储 程序。
同样,根据本发明的已认证程序执行方法包括第一步骤,用于 认证包含在第一传输流中的第一程序的数据文件中的每一个,以及根 据与所述第一程序的数据文件中的每一个的存储有关的信息,将所述 第一程序的已认证的数据文件中的每一个存储到广播接收器中;第二
步骤,用于接收与包含在第二传输流中的第二程序的数据文件中的每
一个的存储有关的信息;以及下列步骤,当所述第二程序的数据文件
包含不同于在存储所述第一程序时已认证的、所述第一程序的数据文 件中的任何一个的数据文件时执行下列步骤第三步骤,用于检验两
个散列值是否一致,其中一个散列值是根据包含在所述第二程序中的 所述不同的数据文件而计算的,而另 一个散列值存储在对应于包含在
所述第二程序中的所述不同的数据文件的散列文件中;第四步骤,用 于检验包含在所述第二程序中的证书文件是否有效;第五步骤,用于 检验解密值与散列值是否一致,所述解密值是通过使用所述第二程序 的证书文件中的叶证书的公钥,来解密包含在所述第二程序中的签名 文件的签名值而获得的,而所述散列值是根据位于所述第二程序的顶 层目录中的散列文件计算的;第六步骤,用于认证所述第二程序,以 及当满足下列条件时,根据与所述第二程序的数据文件中的每一个的 存储有关的信息存储所述已认证的第二程序,所述条件为在所述第 三步骤中,检验结果为所述两个散列值一致;在所述第四步骤中,检 验结果为包含在所述第二程序中的证书文件有效;以及在所述第五步骤中,检验结果为所述解密值与所述散列值一致;以及第九步骤,用 于当将执行所述第二程序时,检验包含在所述存储的第二程序中的所 述证书文件是否有效;以及执行步骤,用于再次认证所述存储的第二 程序,以及仅当在所述第九步骤中证实包含在所述存储的第二程序中 的所述证书文件有效时,执行所述己认证的第二程序。
因此,能够縮短认证和更新程序所需的时间,并且能够縮短程序 激活前所需的时间,同时保证程序的可靠性。
此外,第九步骤可以包括第十步骤,用于检验两个根证书是否匹 配,所述两个根证书中的一个在包含在所述存储的第二程序中的证书 文件中,而另一个根证书被安装在所述广播接收器中,以及在所述第 九步骤中,当所述两个根证书匹配时,所述证书文件被证实有效。
这里,第九步骤可以包括第十一步骤,用于检验包含在所述存储 的第二程序中的证书文件中的每个证书的有效期,以及在所述第九步 骤中,当同时满足下列两个条件时,所述证书文件被证实有效,所述 两个条件为所述两个根证书匹配;以及进行所述执行的时间在所述 证书文件中的每个证书的有效期内。
因此,当根证书不匹配以及证书的有效期期满时,可以防止存储 程序。
注意,本发明不仅可以如上所述体现为程序数据文件存储方法以 及已认证程序执行方法,而且还可以体现为程序数据文件存储设备和 已认证程序执行设备,其中,所述程序数据文件存储设备和已认证程 序执行设备包括包含在程序数据文件存储方法以及已认证程序执行 方法中的特征步骤,作为它们相应的单元,本发明还可以体现为使计 算机执行相应步骤的程序。还应注意,可以通过记录介质(例如 CD-ROM)和传输介质(例如因特网)来分发该程序。
通过以上描述,可以容易地知道,根据本发明的程序数据文件存 储方法能够縮短认证和更新程序所需的时间。此外,根据本发明的已 认证程序执行方法能够縮短程序激活前所需的时间,同时保证程序的 可靠性。
通过参考,将包含说明书、附图、和权利要求在内的,于2003年12月18日提交的日本专利申请No. 2003-421616的公开,于2004 年4月6日提交的日本专利申请No. 2004-111802的公开,以及于2003 年12月19日提交的美国临时申请No. 60/530663的公开包含在此。
通过结合附图所进行的、说明了本发明具体实施例的下列描述, 本发明的这些以及其它目的、优点、特征将变得明显。在附图中-图1是显示根据本发明第一实施例的有线电视系统的结构的示
图2是显示使用将被用于根据本发明的有线电视系统中的头端 (head end)和终端设备之间的通信的频带的例子的示图3是显示使用将被用于根据本发明的有线电视系统中的头端 和终端设备之间的通信的频带的例子的示图4是显示使用将被用于根据本发明的有线电视系统中的头端 和终端设备之间的通信的频带的例子的示图5是显示根据本发明的有线电视系统中的终端设备的配置的 示图6是显示根据本发明的有线电视系统中的终端设备的典型的 外部视图的示图7是显示根据本发明的POD 504的硬件配置的示图8是显示存储在根据本发明的POD 504中的程序的结构的示
图9是显示在MPEG标准中定义的数据分组的结构的示图; 图10是显示MPEG2传输流的例子的示图; 图11是显示当以面板的形式配置时的输入单元513的典型外部 视图的示图12是显示存储在根据本发明的终端设备500中的程序的结构 的示图13A是显示由根据本发明的显示器509显示的显示屏幕的例 子的示图,图13B是显示由根据本发明的显示器509显示的显示屏
17幕的例子的示.图14是显示存储在根据本发明的辅助存储单元510中的信息的 例子的示图15A、 15B和15C是示图,其中每一个显示了存储在根据本发 明的主存储单元511中的信息的例子;
图16是显示在根据本发明的MPEG2标准中规定的PAT的内容 的概要示图17是显示在根据本发明的MPEG2标准中规定的PMT的内容 的概要示图18是显示根据本发明的AIT的内容的概要示图; 图19是显示将以根据本发明的DSMCC格式传送的文件系统的 概要示图20是显示根据本发明的XAIT的内容的概要示图; 图21是显示存储在根据本发明的辅助存储单元510中的信息的 例子的示图22A、 22B和22C是示图,每一个显示根据本发明的包括文件
或目录的散列值的文件的例子;
图23是显示根据本发明的证书链的结构的示图24是显示根据本发明的X. 509证书的结构的示图25是显示根据本发明的签名文件的结构的示图26是显示根据本发明的安全模块的组成部分的示图27是显示根据本发明,当认证文件系统时将执行的操作的流
程图28是根据本发明,当接收到程序预激活通知时不执行认证的 情况下的流程图29是显示根据本发明,当对文件系统执行篡改检査时执行的 操作的流程图30是显示根据本发明,当通过使用签名文件执行篡改检査时
将被执行的操作的流程图31是显示根据本发明,当检查叶证书和中间证书之间的链关系时执行的操作的流程图32是显示根据本发明,当检查中间证书和根证书之间的链关 系时执行的操作的流程图33是显示根据本发明,当检査根证书中的签名时执行的操作 的流程图34是显示根据本发明,将被用于指定待存储的文件的文件的 例子的示图35是显示根据本发明,描述文件2130的详细内容的文件列表 信息的例子的示图36是显示根据本发明的AM的组成元素的示图37是显示根据本发明,描述之前被存储到辅助存储单元510 中的文件2130的详细内容的文件列表信息的例子的示图38是显示根据本发明,通过提取差异而生成的文件列表信息 的例子的示图39是显示根据本发明,由文件比较单元3601执行的处理的流 程图40是显示根据本发明,由文件系统管理单元3602执行的处理 的流程图41是显示根据本发明,由文件系统存储单元3603执行的处理 的流程图42是显示根据本发明,由AM和安全管理器执行的过程的流 程图43是显示根据本发明的XAIT的内容的概要示图; 图44是显示存储在根据本发明的辅助存储单元510中的信息的 例子的示图45A、 45B和45C是示图,每一个显示包括根据本发明的文件 或目录的散列值的文件的例子;
图46是显示根据本发明,当为文件系统执行篡改检查时将执行 的操作的流程图47是显示根据本发明,将用于指定将存储的文件的文件的例子的示图48是显示根据本发明,当执行文件系统的认证时将执行的操 作的流程图49是显示根据本发明,当接收到程序预先激活通知时,在检 查X. 509证书的有效性时将执行的操作的流程图50是显示根据本发明,将从下载模块接收的代码文件的简化 结构的示图;.
图51A、 51B和51C是示图,每一个显示根据本发明,由正被替 换的终端设备拥有的证书;
图52是显示根据本发明,当执行证书替换时将执行的操作的流 程图53是显示根据本发明,当接收到预先激活通知时,在比较根 证书时将执行的操作的流程图54是显示根据本发明的CRL的结构的示图55是显示在根据本发明的CRL中的撤销证书列表的概要示
图56是显示包括根据本发明的CRL的文件系统的例子的示图57是显示根据本发明,当基于散列值和签名值检査CRL的有 效性时将执行的操作的流程图58是显示根据本发明,当基于证书间的链关系和根证书间的 比较来检查CRL的有效性时执行的操作的流程图59是显示包括根据本发明的文件或目录的散列值的文件的例 子的示图60是显示根据本发明,当在程序存储时间存在CRL时,用于 执行认证的操作的流程图61是显示当在程序激活时间存在CRL时,用于执行认证的操 作的流程图62是显示根据本发明的撤销证书的数据库的概要示图; 图63是显示根据本发明,包括用于指定将存储的文件的文件的 典型的文件系统的示图;以及图64是显示根据本发明,用于指定将被存储的文件的典型的文 件的示图。
具体实施例方式
下面参照附图描述本发明的实施例。 (第一实施例)
参照
根据本发明的有线电视系统的优选实施例。图1是
显示构成有线系统的设备间的关系的框图,所述设备包括头端101,
以及三个终端设备,分别为终端设备Alll、终端设备B112、终端设 备C113。在本实施例中,三个终端设备连接到一个头端,但是如果 将任意数量的终端设备连接到头端,也能够实现本发明。
头端101向多个终端设备传送广播信号,例如视频、音频和数据, 并接收从终端设备传送的数据。为了实现这一点,频带被分割以用于 头端IOI、终端设备Alll、终端设备B112、终端设备C113之间的数 据传输。
图2是显示分割的频带的例子的表格。粗略地可以分为两种类型 的频带带外(简写为OOB)和带内频带。5 130MHz的频带被分配 给OOB,主要用于头端101、终端设备Alll、终端设备B112以及终 端设备C113之间的数据交换。130MHz 864MHz的频带被分配给带 内频带,主要用于广播信道,包括视频和音频。QPSK用于OOB, 而QAM64用于带内频带,作为调制技术。因为它们是与本发明无关 的公知技术,所以这里省略对调制技术的详细说明。图3显示了如何 使用OOB频带的更具体的例子。70MHz 74MHz的频带用于从头端 101传送数据。在本例中,所有终端设备Alll、终端设备B112、终 端设备C113都从头端101接收同样的数据。同时,10.0MHz 10.1MHz的频带用于从终端设备Alll向头端101传送数据。 10.1MHz 10.2MHz的频带用于从终端设备B112向头端101传送数 据。10.2MHz 10.3MHz的频带用于从终端设备C113向头端101传 送数据。因此,能够从终端设备Alll、终端设备B112、终端设备 C113向头端101传送唯一属于每个终端设备的数据。
21图4显示了带内频带的典型使用。150 156MHz以及156 162MHz的频带分别分配给电视频道1和电视频道2,并且随后的频 率被以6MHz的间隔分配给电视频道。310MHz以及随后的频率以 lMHz的间隔分配给无线电广播频道。每个上述频道或者可用于模拟 广播,或者可用于数字广播。当用于数字广播时,以符合MPEG2规 范的传输分组格式传送数据,其中,除了音频和视频之外,针对各种 数据广播系统的数据都可以被传送。
头端101装配有QPSK调制单元、QAM调制单元等等,以便向 相应的各个频率范围传送合适的广播信号。此外,头端101装配有 QPSK解调单元,用于从终端设备接收数据。而且,假定头端101还 装配有与上述调制单元和解调单元有关的各种装置。但是,由于本发 明主要涉及终端设备,所以省略对它们的详细说明。
终端设备Alll、终端设备B112、终端设备C113接收并再现从 头端101传送的广播信号。此外,终端设备Alll、终端设备B112、 终端设备C113向头端101传送唯一属于每个终端的数据。在本实施 例中,这三个终端设备具有相同的配置。
图5是显示每个终端设备的硬件配置的框图。500是终端设备, 其由QAM解调单元501, QPSK解调单元502, QPSK调制单元503, TS解码器505,音频解码器506,扬声器507,视频解码器508,显 示器509,辅助存储单元510,主存储单元511, ROM 512,输入单 元513以及CPU 514等构成。此外,POD 504可以被附加到终端设 备500,或从终端设备500分离。
图6显示形状较薄的电视,其是终端设备500的典型的外部视图。 终端设备可以具有不同的配置,但在本实施例中,将基于OpenCable(R) 和OCAP配置的终端设备作为例子进行描述。
601是形状较薄的电视的钢外壳,其中包含除POD504以外的终 端设备500的所有组件。
602是显示器,其对应于图5中的显示器509。
603是面板单元,其由多个按钮组成,并且对应于图5中的输入 单元513。
22604是信号输入端子,电缆线连接到其,用于向头端101发送信 号以及从头端101接收信号。信号输入端子连接到图5所示的QAM 解调单元501, QPSK解调单元502以及QPSK调制单元503。
605是对应于图5中的POD 504的POD卡。POD 504独立于终 端设备500而实现,并且可以附加到终端设备500上,或从终端设备 分离,如同图6中的POD卡605。后面详细说明POD504。
606是可插入POD卡605的插槽。
参照图5, QAM解调单元501根据包括由CPU 514指定的频率 的调谐信息,对己在头端101中被进行QAM调制并且被从头端101 传送的信号进行解调,并将结果传送给POD 504。
QPSK解调单元502根据包括由CPU 514指定的频率的调谐信 息,对已在头端101中被进行QPSK调制并且被从头端101传送的信 号进行解调,并将结果传送给POD504。
QPSK调制单元503根据包括由CPU 514指定的频率的解调信 息,对从POD 504传送来的信号进行QPSK解调,并将结果传送给 头端IOI。
如图6所示,POD 504可以从终端设备500的主体分离。终端 500的主体和POD 504之间的连接接口的定义在OpenCable(R) CableCARD(R)接口规范(OC-SP-CC-IF-I15-031121)以及该规范所 参考的规范中给出。这里,省略了详细说明,并且仅给出与本发明有 关的组成部分的说明。
图7是显示POD 504的内部配置的框图。POD 504由第一解扰 器单元701、第二解扰器单元702、扰频器单元703、主存储单元704、 辅助存储单元705和CPU 706构成。
第一解扰器单元701根据来自CPU 706的指令从终端设备500 的QAM解调单元501接收失真信号,并解扰该信号。然后,第一解 扰器单元701将解扰后的信号传送给终端设备500的TS解码器505。 根据需要,由CPU 706提供解扰器所需的信息,例如密钥。更具体 地,头端101广播多路付费频道,当用户购买了观看这些付费频道的 权利后,第一解扰器单元701从CPU 706接收所需的信息,例如密钥,并执行解扰。因此,用户可以观看这些付费频道。当不提供诸如 密钥这样所需的信息时,第一解扰器单元701在不执行解扰的情况
下,直接将所接收的信号传递给TS解码器505。
第二解扰器单元702根据来自CPU 706的指令接收来自终端设 备500的QPSK解调单元502的失真(scrambled)信号,并解扰该 信号。然后,第二解扰器单元702将解扰后的数据传送给CPU706。
扰频器单元703根据来自CPU 706的指令对从CPU 706接收的 信号进行扰频,并将结果发送给终端设备500的QPSK调制单元503。
主存储单元704,它的具体组成元件是例如RAM这样的主存储 器,当CPU 706执行处理时用于临时地存储数据。
辅助存储单元705,它的具体组成元件是例如闪速ROM这样的 辅助存储器,用于存储将由CPU 706执行的程序,并且用于存储即 使当关闭电源时也不应删除的数据。
CPU 706执行存储在辅助存储单元705中的程序。该程序由多个 子程序构成。图8显示了存储在辅助存储单元705中的程序的例子。 在图8中,程序800由多个子程序构成,包括主程序801、初始化 子程序802、网络子程序803、再现子程序804以及PPV子程序805。
这里,PPV是每次观看付费(Pay Per View)的縮写,是指一种服 务,其使得用户能够在可记帐的基础上,观看诸如电影这样的特定程 序。当用户输入他/她的个人识别号时,向头端101通知用户购买了 观看程序的权利,并且解扰程序。因此,用户能够观看该程序。观看 程序需要用户在日后为购买付费。
在所有子程序中,主程序801是当打开电源时,首先由CPU706 激活的子程序,其控制其它子程序。
当打开电源时,由主程序801激活的初始化子程序802与终端设 备500执行信息交换等等,以执行初始化处理。该初始化处理在 OpenCable(R) CableCARD(R)接口规范(OC-SP陽CC-IF-Il 5-031121) 以及该规范所参考的规范中详细定义。此外,初始化子程序802还执 行不在这些规范中定义的初始化处理。这里,介绍部分这种初始化处 理。当打开电源时,初始化子程序802经由终端设备500的CPU514向QPSK解调单元502通知存储在辅助存储单元705中的第一频率。 QPSK解调单元502使用所提供的第一频率执行调谐,并将得到的信 号传送给第二解扰器单元702。此外,初始化子程序802为第二解扰 器单元702提供解扰信息,例如存储在辅助存储单元705中的第一密 钥。从而,第二解扰器单元702执行解扰,并将结果传送给执行初始 化子程序802的CPU706。因此,初始化子程序802可以接收信息。 在本实施例中,初始化子程序802经由网络子程序803接收信息。后 面详细进行描述。
此外,初始化子程序802经由终端设备500的CPU 514向QPSK 调制单元503通知存储在辅助存储单元705中的第二频率。初始化子 程序802为扰频器单元703提供存储在辅助存储单元705中的扰频信 息。当初始化子程序802经由网络子程序803向扰频器单元703提供 需要被发送的信息时,扰频器单元703使用所提供的扰频信息对数据 进行扰频,并向QPSK调制单元503提供失真数据。QPSK调制单元 503调制它接收的失真信息,并将调制后的信息发送给头端101。
因此,初始化子程序802能够经由终端设备500、第二解扰器单 元702、扰频器单元703和网络子程序803与头端101执行双向通信。
由多个子程序(例如主程序801和初始化子程序802)使用的网络 子程序803是用于执行与头端101的双向通信的子程序。更具体地, 网络子程序803使得其它使用网络子程序803的子程序好像是在根据 TCP/IP与头端101进行双向通信。因为TCP/IP是当在多个终端之间 交换信息时指定将使用的协议的公知技术,所以这里省略TCP/IP的 详细说明。当在接通电源时由初始化子程序802激活时,网络子程序 803经由终端设备500向头端101通知MAC地址(媒体访问控制的縮 写),其是用于识别POD 504的识别符,并且被预先存储在辅助存储 单元705中,以便请求获取IP地址。头端101经由终端设备500向 POD 504通知IP地址,并且网络子程序803将该IP地址存储在主存 储单元704中。此后,通过使用该IP地址作为POD 504的识别符, 头端101和POD 504互相通信。
再现子程序804为第一解扰器单元701提供例如存储在辅助存储单元705中的第二密钥这样的解扰信息以及例如由终端设备500提供 的第三密钥这样的解扰信息,以便使得能够执行解扰。此外,再现子 程序804经由网络子程序803接收指示输入第一解扰器单元701的信 号是PPV频道的信息。当被通知信号是PPV频道时,再现子程序804 激活PPV子程序805。
当被激活时,PPV子程序805在终端设备500上显示提示用户购 买所述程序的消息,并接受来自用户的输入。更具体地,当希望被显 示在屏蔽上的信息被发送给终端设备500的CPU 514时,运行在终 端设备500的CPU 514上的程序在终端设备500的显示器509上显 示所述消息。然后,当用户经由终端设备500的输入单元513输入个 人识别号时,终端设备500的CPU514接受其,并将其发送到运行在 POD 504的CPU 706上的PPV子程序805。 PPV子程序805将接受 的个人识别号经由网络子程序803发送到头端101。当该个人识别号 有效时,头端101经由网络子程序803向PPV子程序805通知解扰 所需的解扰信息,例如第四密钥。PPV子程序805向第一解扰器单元 701提供所接受的解扰信息,例如所述第四密钥,然后第一解扰器单 元701解扰所述输入信号。
参照图5, TS解码器505对接受自POD 504的信号进行过滤, 并将必要的数据传送到音频解码器506、视频解码器508和CPU 514。 这里,发送自POD 504的信号是MPEG2传输流。关于MPEG2传输 流的详细说明在MPEG规范ISO/IEC138181-l中给出,因此在本实施 例中不对其进行详细地说明。MPEG传输流由多个固定长度的数据分 组组成,并且为每个数据分组分配一个数据分组ID。图9是显示数 据分组的结构的示图。900是一数据分组,其包含188字节的固定长 度。头四个字节是存储用于识别数据分组的信息的头901,并且另外 184字节是存储希望传送的信息的有效负载902。 903显示了所述头 901的细节。数据分组ID包含在从第12比特到第24比特的13个比 特中。图10是说明待传送的多个数据分组串的概要图。数据分组1001 在它的头中包含数据分组ID "1"并且在它的有效负载中包含视频A 的第一信息。数据分组1002在它的头中包含数据分组ID "2"并且在它的有效负载中包含音频A的第一信息。数据分组1003在它的头 中包含数据分组ID "3"并且在它的有效负载中包含音频B的第一信息。
数据分组1004在它的头包含数据分组ID "1"并且在它的有效 负载中包含视频A的第二信息,其是所述数据分组1001的后续的信 息。类似的,数据分组1005、 1026和1027携带其它数据分组的后续 数据。通过按照上述方式连接具有相同数据分组ID的数据分组的有 效负载的内容,能够连续地再现视频和音频。
参照图10。当CPU514向TS解码器505指出数据分组ID "1" 以及作为输出目的地的"视频解码器508"时,TS解码器505从接 收自POD 504的MPEG2传输流中提取具有数据分组ID " 1"的数据 分组,并将它们传送到所述视频解码器508。因此,在图10中,仅 将视频数据传送到视频解码器508。同时,当CPU514向TS解码器 505指出数据分组ID "2"以及"音频解码器506"时,TS解码器505 从接收自POD 504的MPEG2传输流中提取具有数据分组ID "2"的 数据分组,并将它们传送到所述音频解码器506。在图10中,仅音 频数据被传送到所述视频解码器508。
该根据数据分组ID仅提取必要的数据分组的处理对应于由TS 解码器505执行的过滤。TS解码器505能够按照来自CPU 514的指
令同时执行多于一个过滤处理。
参照图5,音频解码器506连接由TS解码器505提供的、嵌入 在MPEG2传输流的数据分组中的音频数据,对所连接的数据执行数 模转化,并向扬声器507输出结果。
扬声器507将由音频解码器506提供的信号作为音频输出。
视频解码器508连接由TS解码器505提供的、嵌入在MPEG2 传输流的数据分组中的视频数据,对所连接的数据执行数模转化,并 向显示器509输出结果。
显示器509,其具体的组成元件是CRT或液晶等等,输出由视频 解码器508提供的视频信号并显示由CPU 514指定的消息等等。
辅助存储单元510,其具体的组成元件是闪速存储器、硬盘等等,
27存储并删除由CPU 514指定的数据和程序。由CPU 514访问所存储 的数据和程序。即使当终端设备500断电时,所存储的数据和程序也 能保存在存储器中。
主存储单元511,其具体组成元件是RAM等等,其临时地存储 由CPU 514指定的数据和程序以及删除它们。由CPU 514访问所存 储的数据和程序。当终端设备500断电时,存储的数据以及程序被删 除。
ROM 512是只读存储器装置,其具体的组成元件是ROM、 CD-ROM、 DVD等等。ROM512存储将由CPU514执行的程序。
输入单元513,其具体的组成元件是面板或遥控器,其接受来自 用户的输入。图11显示当以面板的形式配置输入单元时的输入单元 的例子。1100是一面板,其对应于图6中显示的面板单元603。该面 板由七个按钮组成上指针按钮1101、指针下按钮1102、左指针按 钮1103、右指针按钮1104、 OK按钮1105、取消按钮1106以及EPG 按钮1107。当用户按下一按钮时,该被按下的按钮的识别符被通知 给CPU 514。
CPU 514执行存储在ROM 512中的程序。根据来自该待执行程 序的指令,CPU514控制QAM解调单元501、 QPSK解调单元502、 QPSK调制单元503、 POD 504、 TS解码器505、显示器509、辅助 存储单元510、主存储单元511以及ROM 512。
图12是显示存储在ROM 512中并且由CPU 514执行的程序的
典型结构的示图。
程序1200由多个子程序组成。更具体地,程序1200由OS 1201、 EPG 1202、 Java (R)VM 1203(以下简称为VM 1203)、服务管理器1204、 以及Java(R)库1205(以下简称库1205)组成。
OS 1201是当终端设备500通电时将由CPU 514激活的子程序。 OS 1201是操作系统的縮写,它的例子是Linux等等。OS 1201是一 种公知技术的普通名称,其由内核1201a和库1201b组成,内核1201a 用于与另一个子程序并行地执行一个子程序,因此详细说明被省略。 在本实施例中,OS 1201的内核1201a执行作为子程序的EPG 1202和VM 1203。同时,库1201b为这些子程序提供控制终端设备500 的组成元件所需的多个功能。
这里,调谐作为这种功能一个例子被介绍。使用调谐的功能,从 另一个子程序接收包括频率的调谐信息,然后传送至QAM解调单元 501。因此,QAM解调单元501能够根据所提供的调谐信息执行解 调,并将解调后的数据传送至POD504。因此,其它子程序可以经由 库1201b控制QAM解调单元。
所述EPG 1202由程序显示单元1202a以及再现单元1102b组成, 程序显示单元1202a用于向用户显示一列程序以及接受来自用户的 输入,再现单元1102b用于选择频道。这里,EPG是电子程序指南的 縮写。当终端设备500通电时EPG 1202被激活。在激活的EPG 1202 中,程序显示单元1202a等待来自用户经由终端设备500的输入单元 513的输入。这里,当输入单元513采用图11中说明的面板的形式 时,当用户按下输入单元513上的EPG按钮1107时,向CPU 514 通知该EPG按钮的识别符。EPG 1202的程序显示单元1202a是运行 在CPU 514上的一子程序,其接受该识别符,并在显示器509上显 示程序信息。图13A和图13B显示了在显示器509上显示的程序表 的例子。参看图13A。以网格图形在显示器509上显示程序信息。列 1301描述时间信息。列1302描述频道名称"频道1"和将在对应于 列1301中描述的各个时间的时期内广播的程序。其表明,在"频道 1",从9:00至10:30广播"新闻9",从10:30至12:00广播"电影 AAA"。列1303描述频道名称"频道2"和将在对应于列1301中描 述的各个时间的时期内广播的程序,如同列1302的情况。从9:00至 ll:OO广播程序"电影BBB",从ll:OO至12:00广播"新闻11"。 1330 是光标。光标1330随着按下面板IIOO上的左指针1103或右指针1104 而移动。当在图13A的状态中按下右指针时,光标1330向右移动, 如图13B所示。当在图13B的状态中按下左指针时,光标1330向左 移动,如图13A所示。
当在图13A的状态中按下面板1100上的OK按钮1105时,程 序显示单元1202a向再现单元1102b通知"频道1"的识别符。同时,
29当在图13B的状态中按下面板1100上的OK按钮1105时,程序显示 单元1202a向再现单元1102b通知"频道2"的识别符。
此外,程序显示单元1202a定期地将待显示的程序信息从头端 101经由POD504存储到主存储单元511中。通常,从头端获得程序 信息要花费时间。然而,在按下输入单元513的EPG按钮1107时, 通过显示被预先存储在主存储单元511中的程序信息,能够迅速显示 程序表。
再现单元1102b使用接收的频道的识别符再现频道。频道识别符 和频道之间的关系被辅助存储单元510作为频道信息预先存储。图 14显示存储在辅助存储单元510中的频道信息的例子。以表格形式 存储所述频道信息。列1401描述频道的识别符。列1402描述频道名 称。列1403描述调谐信息。这里,调谐信息由将提供给QAM解调 单元501的值表示,例如频率、传输速率和编码比(coding ratio)。列 1404描述程序编号。程序编号是用于识别由MPEG2标准定义的PMT 的编号。随后给出关于PMT的描述。行1411 1414中的每一行指出 一组每个频道的识别符、频道名称和调谐信息。行1411描述一个组, 其中包含"1"作为识别符,"频道l"作为频道名称,"312MHz"的 频率作为调谐信息,以及"101"作为程序编号。再现单元1102b直 接将所接收的频道的识别符传送给服务管理器以便再现频道。
此外,如果用户当正在再现时按下面板1100上的上指针1101和 下指针1102,则再现单元1102b经由CPU 514从输入单元513接收 关于由用户进行的该按压的通知,并将正在被再现的频道切换到另一 个。首先,再现单元1102b在主存储单元511中存储当前再现的频道 的识别符。图15A、 15B、 15C显示了存储在主存储单元511中的频 道的识别符的例子。图15A显示识别符"3"被存储,并且通过参照 图14,表明具有频道名称"TV 3"的频道正在被再现。当用户在图 15A的状态中按下上指针1101时,再现单元1102b参考图14中显示 的频道信息,并且将具有频道名称"频道2"的频道的识别符"2" 传送给服务管理器,以便新再现具有频道名称"频道2"的频道,其 是所述表中的上一个频道。同时,再现单元1102b将识别符重写为存储在主存储单元511中的频道识别符"2"。图15B显示该重写的频道 识别符。同样,当用户在图15A的状态中按下下指针1102时,再现 单元1102b参考图14中显示的频道信息,并且将具有频道名称"TV 日本"的频道的识别符"4"传送给服务管理器,以便新再现具有频 道名称"TV日本"的频道,其是所述表中的下一个频道。同时,再 现单元1102b将识别符重写为存储在主存储单元511中的频道识别符 "4"。图15C显示该重写的频道识别符。
VM 1203是Java(R)虚拟机,其连续地分析并执行以Java (R)语言 所写的程序。以Java (R)语言所写的程序被编译为称为字节代码的中 间码,其不依赖于硬件。Java(R)虚拟机是执行该字节代码的解释器。 一些Java(R)虚拟机将字节代码转化为一种可以由CPU 514理解的可 执行的形式,并将结果传送给CPU514, CPU514执行其。用由内核 1201a指定的待执行的Java(R)程序激活VM 1203。在本实施例中, 内核1201a指定服务管理器1204作为待执行的Java(R)程序。对Java(R) 语言的详细注释在许多书中给出,包括"Java(R) Language Specification" (ISBN 0-201-63451-1)。因此,这里省略关于其的详细 说明。同样,对Java(R)VM本身的操作的详细注释在许多书中给出, 包括"Java (R) Virtual Machine Specification" (ISBN 0-201-6345l-X)。 因此,这里省略关于其的详细说明。
服务管理器1204是以Java (R)语言写的Java (R)程序,其由VM 1203顺序地执行。通过JNI(Java本地接口),服务管理器1204能够调 用另一个未用Java(R)语言写的子程序,并且能被另一个未用Java(R) 语言写的子程序调用。关于JNI的说明在许多书中给出,包括"Java(R) 本地接口"。因此,这里省略关于其的详细说明。
服务管理器1204通过JNI从再现单元1102b接受频道的识别符。
首先,服务管理器1204将频道的识别符传送给库1205中的调谐 器1205c,以便请求调谐。调谐器1205c参考存储在辅助存储单元510 中的频道信息以获得调谐信息。假定服务管理器1204将频道的识别 符"2"传送给调谐器1205c,调谐器1205c参考图14中显示的行1412, 并获得对应于所述频道的调谐信息"156MHz"。调谐器1205c经由OS 1201的库1201b将调谐信息传送给QAM解调单元501 。 QAM解 调单元501根据发送给其的调谐信息解调发送自头端101的信号,并 将结果信号传送给POD 504。
然后,服务管理器1204请求库1205中的CA 1205b执行解扰。 CA 1205d通过OS 1201中的库1201b为POD 504提供解扰所需的信 息。根据所提供的信息,POD 504解扰由QAM解调单元501提供的 信号,并将结果信号传送给TS解码器505。
然后,服务管理器1204为库1205内的JMF 1205a提供频道的识 别符,以便请求再现视频和音频。
首先,JMF 1205a从PAT和PMT获得用于指定待再现的视频和 音频的数据分组ID。 PAT和PMT是由MPEG-2标准定义的表,其显 示包括在MPEG2传输流中的程序应用配置(program line-up)。在包含 在MPEG2传输流的数据分组中的有效负载中携带PAT和PMT以及 音频与视频。参照PAT和PMT的详细说明的规范。这里,仅给出PAT 和PMT的概要。
PAT是程序关系表的縮写,在具有数据分组ID"0"的数据分组 中传送其。为了获得PAT, JMF 1205a通过OS 1201的库1201b,向 TS解码器505指出数据分组ID "0"和CPU 514。然后,TS解码器 505根据数据分组ID "0"执行过滤,并将结果传送给CPU 514。因 此,JMF 1205a可以收集PAT数据分组。图16说明了示意性地显示 所收集的PAT信息的例子的表。列1601描述程序编号。列1602描 述数据分组ID。列1602中显示的数据分组ID用于获得PAT。行1611 1613中的每一个包含一对频道的程序编号以及对应于其的数据分组 ID。这里,定义了三个频道。行1611定义了一对程序编号"101"和 数据分组ID"501"。假定提供给JMF 1205a的频道识别符是"2", 则JMF 1205a参考图14中的行1412,以便获得对应于该频道识别符 的程序编号"102",然后参考图16中显示的PAT中的行1612,以便 获得对应于程序编号"102"的数据分组ID"502"。 PMT是程序映射 表的縮写,其在具有PAT中指定的数据分组ID的数据分组中被传送。 为了获得PMT, JMF 1205a通过OS 1201的库1201b,向TS解码器
32505指出数据分组ID和CPU 514。这里,将指定的数据分组ID是 "502"。然后,TS解码器505根据数据分组ID "502"执行过滤, 并将结果传送给CPU 514。因此,JMF 1205a可以收集PMT数据分组。
图17说明了示意性地显示所收集的PMT信息的例子的表。列 1701描述流类型。列1702描述数据分组ID。在各个流类型中指定的 信息在具有列1702中指定的数据分组ID的数据分组的有效负载中被 传送。列1703描述附加信息。1711 1714中的每一行是一对数据分 组ID和被传送的信息的类型,其被称为基本流(elementary stream)。 行1711是一对流类型"音频"和数据分组ID "5011",其指示音频 数据被存储在具有数据分组ID"5011 "的数据分组的有效负载中。JMF 1205a从PMT获得将再现的视频和音频的数据分组ID。参照图17, JMF 1205a从行1711获得音频数据分组ID "5011",并从行1712获 得视频数据分组ID "5012"。
然后,JMF 1205a经由OS 1201的库1201b为TS解码器505提 供一对所获得的音频数据分组ID和作为输出目的地的音频解码器 506,并提供一对视频数据分组ID和作为输出目的地的视频解码器 508。 TS解码器505根据所提供的数据分组ID和输出目的地执行过 滤。这里,将具有数据分组ID "5011"的数据分组传送给音频解码 器506,并将具有数据分组ID"5012"的数据分组传送给视频解码器 508。音频解码器506对所提供的数据分组执行数模转化,以便经由 扬声器507再现音频。视频解码器508对所提供的数据分组执行数模 转化,以便在显示器509上显示视频。
最后,服务管理器1204将频道识别符提供给库1205中的AM 1205b,以便请求数据广播再现。这里,数据广播再现的意思是提取 包含在MPEG2传输流中的Java (R)程序并使VM 1203执行其。作为 一种用于将Java (R)程序嵌入MPEG2传输流的技术,使用称为 DSMCC的方法,其在MPEG规范ISO/正C 138181-6中描述。这里省 略对DSMCC的详细说明。DSMCC规范定义了一种方法,用于将包 含由计算机使用的目录和文件的文件系统编码到MPEG2传输流内的数据分组中。在MPEG2传输流内的数据分组中以AIT的形式传送关于待执行的Java(R)程序的信息。AIT是应用程序信息表的縮写,其定义在DVB-MHP规范(正式称为ETSI TS 101 812 DVB-MHP规范V1.0.2)的第十章中给出。
首先,为了获得AIT,与JMF 1205a的情况中一样,AM 1205b获得PAT和PMT,以便获得存储AIT的数据分组的数据分组ID。假定"2"是所提供的频道识别符而且图16中显示的PAT和图17中显示的PMT正在被传送,根据与JMF 1205a所遵循的过程相同的过程,AM 1205b获得图17中显示的PMT。随后,AM 1205b从PMT提取基本流的数据分组ID,该基本流的流类型是"数据"并且其具有作为附加信息的"AIT"。如图17所示,行1713内的基本流对应于这种基本流,因此AM 1205b从其获得数据分组ID "5013"。
AM 1205b通过OS 1201的库1201b为TS解码器505提供AIT的数据分组ID和作为输出目的地的CPU514。然后,TS解码器505根据提供的数据分组ID执行过滤,并将结果传送给CPU514。因此,AM 1205b可以收集AIT的数据分组。
图18是示意性地显示所收集的AIT信息的例子的表。列1801描述Java (R)程序的识别符。根据MHP规范,这些识别符被定义为应用程序ID,其识别一个Java (R)程序是否是应该被终端设备500的安全管理器1205f认证的程序。当识别符的值在0x0到0x3fff范围之内时,不需要进行认证,而当识别符的值在0x4000到0x7fff的范围之内时,需要进行认证。识别符的值在前一个范围之内的Java(R)程序被称为"未签名程序",而识别符的值在后一个范围之内的Java(R)程序被称为"签名程序"。列1802描述用于控制Java(R)程序的控制信息。所述控制信息包含"自动起动(autostart)"、"呈现(present)"和"杀死(kil)"。"自动起动"的意思是终端设备500自动地迅速执行程序。"呈现"的意思是不自动执行所述程序。"杀死"的意思是将终止所述程序。列1803描述用于提取包括DSMCC格式的Java(R)程序的数据分组ID的DSMCC识别符。列1804描述所述Java(R)程序的程序名。
341811 1812中的每一行都是一组关于Java(R)程序的信息。在行1811中定义的Java(R)程序是一组识别符"301"、控制信息"自动起动"、DSMCC识别符"1"以及程序名"a/TopXlet"。在行1812中定义的Java(R)程序是一组识别符"302"、控制信息"呈现"、DSMCC识别符"1"以及程序名"b/GameXlet"。这里,这两个Java(R)程序具有相同的DSMCC识别符。这表示文件系统中包含两个Java(R)程序,该文件系统已被根据相同的DSMCC方法编码。这里,仅为各个Java(R)程序指定四条信息,而实际中指定更多的信息。详细内容请参考DVB-MHP规范。
AM 1205b从AIT找到"自动起动"Java(R)程序,并提取对应的DSMCC识别符和Java(R)程序名。参照图18, AM 1205b提取行1811中的Java(R)程序,并获取DSMCC识别符"1"和Java(R)程序名"a/TopXlet"。
然后,AM 1205b使用从AIT获取的DSMCC识别符,从PMT获取以DSMCC格式存储Java(R)程序的数据分组的数据分组ID。更具体地,AM 1205b从PMT获取包含在基本流中的数据分组ID,该基本流的流类型是"数据"并且在附加信息中的DSMCC识别符是匹配的。
这里,假定该DSMCC识别符为"1",并且PMT如图17所示,行1714中的基本流满足上述条件。因此,将提取数据分组ID"5014"。
AM 1205b通过OS 1201的库1201b,向TS解码器505指出其中以DSMCC格式嵌入数据的数据分组的数据分组ID,以及作为输出目的地的CPU 514。这里,提供数据分组ID "5014"。然后,TS解码器505根据所提供的数据分组ID执行过滤,并将结果传送给CPU514。因此,AM 1205b可以收集需要的数据分组。AM 1205b根据DSMCC方法,基于所收集的数据分组重建文件系统,并且将重建的文件系统存储到主存储单元511。用于从MPEG2传输流的数据分组中提取数据(例如文件系统),以及将所提取的数据存储到存储单元(例如主存储单元5H)的处理以下被称为下载。
图19显示了下载的文件系统的例子。在图中,圆圈表示目录,方框表示文件,其中,1901是根目录,1902是目录"a", l卯3是目录"b", 1904是文件"TopXlet.class"并且1905是文件"GameXlet.class"。随后,AM 1205b将一Java (R)程序传送到VM 1203,所述Java (R)程序将在下载到主存储单元511中的文件系统之外执行。这里,假定将执行的Java (R)程序的程序名是"a/TopXlet",通过将".class"附加到上述Java(R)程序名得到的文件"a/TopXletxlass"是将被执行的文件。"/"是目录和文件名之间的分界符,并且如图19所示,文件1904是将执行的Java (R)程序。然后,AM 1205b将文件l卯4传送到VM 1203,这是因为描述Java(R)程序的识别符的列1801指示未签名的程序,这意谓着不必请求安全管理器1205f对该Java(R)程序执行认证0
VM 1203执行所接收的Java(R)程序。
在接收到另一个频道的识别符后,服务管理器1204通过包含在相同库1205中的每个库,终止视频和音频的再现,并终止执行正在通过包含在库1205中的每个库执行的Java(R)程序,然后根据新接收的频道识别符对视频和音频进行再现,并且执行Java(R)程序。
库1205是存储在ROM 512中的多个Java (R)库的集合。在本实施例中,库1205包含JMF 1205a、AM 1205b、调谐器1205c、CA 1205d、PODLibl205e、安全管理器1205f、下载模块1206等等。
服务管理器1204和下载模块1206经由包含在库1205中的PODLib 1205e与头端101执行双向通信。可以通过POD Lib 1205e使用QPSK解调单元502和QPSK调制单元503,经由OS 1201的库1201b和POD 504来实现双向通信。
下载模块1206可以通过该通信从头端101接收代码数据。代码数据是指包含X.509证书和/或终端设备500的固件(firmware)的二进制数据。
图20说明了示意性地显示从头端101获得的XAIT信息的例子的表。列2001描述Java(R)程序的识别符。列2002描述用于控制Java(R)程序的控制信息。控制信息包含"自动起动"和"呈现"。"自动起动"的意思是,当终端设备500通电时,自动地执行程序,"呈现"的意思是,不自动地执行所述程序。列2003描述用于提取包含DSMCC格式的Java(R)程序的数据分组ID的DSMCC识别符。列2004描述Java(R)程序的程序名。列2005描述Java(R)程序的优先级。列2006描述Java(R)程序的版本号。行2011指示一组关于Java(R)程序的信息。定义在行20H中的Java(R)程序是一组识别符"0x7001"、控制信息"自动起动"、DSMCC识别符"1"和程序名"a/xletl"。可以根据其Java(R)程序应用程序ID知道该Java(R)程序是签名程序。这里,仅为Java(R)程序指定了六段信息,但是即使当定义了更多段的信息时,也可以实现本发明。
当接收到XAIT信息时,AM 1205b根据与用于根据AIT信息下载Java(R)程序的过程相同的过程,将来自MPEG2传输流的文件系统存储到主存储单元511中。
之后,将文件系统存储到辅助存储单元510中,但是,如果该文件系统包含如图34所示的"应用程序描述文件",则AM 1205b根据所述"应用程序描述文件"的描述将特定文件存储到文件系统。AM1205b在其将文件系统存储到辅助存储单元510之前,向安全管理器1205f发出预存储通知。响应于此,安全管理器1205f执行认证,并通知AM 1205b允许激活。当被安全管理器1205f通知允许激活时,AM 1205b将包含在文件系统中的特定文件存储到辅助存储单元510中。由AM 1205b和安全管理器1205f执行的处理是本发明的主要功能,后面将详细描述这些处理。
然后,AM 1205b把将XAIT信息与下载的文件系统的存储位置相关联而得到的结果存储到辅助存储单元510中。图21显示了彼此关联地存储在辅助存储单元510中的XAIT信息和下载的文件系统的例子。这里,将在OCAP规范中定义的文件作为例子描述。图21中的元素与图20中的对应元素彼此相同,因此省略对这些元素的说明。列2101存储下载的文件系统的存储位置。在图21中,由箭头指示这些存储位置。2110是下载的文件系统,其中包含顶层目录(还称为根目录)2120、目录"a" 2121、目录"b" 2122、文件"ocap.storage"2130、文件"ocap.certificates.l "2131、文件"ocap.signaturefile.l "2132、文件"ocap.hashfile" 2140 2142、文件"xletl.class" 2150以及文件"sub.dass" 2151。
文件2130是"应用程序描述文件",其用XML(可扩展标记语言)格式来描述,如图34所示。图35是显示文件列表信息的例子的示图,所述文件列表信息显示文件2130的描述。图35中的351是指示文件2130的描述的文件列表信息。列3511描述文件名。列3512描述各个文件的版本号。这里,仅为"应用程序描述文件"指定了两条信息,但是,如果定义了更多条信息,也能够实现本发明。注意,作为列3512中描述的每个文件的版本号,包含该文件的程序的程序号2006的值被基本上给出,并且作为在列3512中描述的、即使当它的程序的版本被升级时其内容也不会改变的唯一文件的版本号,该程序在被升级前的程序号2006的值被给出。
文件2140 2142是散列文件,其中包含文件名或目录名以及对应的散列值。图22A、 22B和22C是显示"ocap.hashfiles"的细节的概要图。图22A中的221显示"ocap.hashfile"2116,图22B中的222显示"ocap.hashfile"2117,图22C中的223显示"ocap.hashfile"2118。221的"ocap.hashfile"存在于"/"目录2120中,其在列2211中包含"ocap.storage"文件2130、 "ocap.certificates.l"文件2131以及"a"目录2121,它们存在于相同的目录2120中。列2212指示使用哪种散列算法来计算在列2213中描述的每个值。列2213与列2211中的文件或目录有关,列2213包含通过利用列2212中指定的散列算法而计算的散列值。当前主要使用的散列算法是SHA1(安全散列算法1)和MD5(消息摘要5)。这些是用于将具有任意长度的数据转换为固定长度字节值的公知算法,它们具有以下特征在原始数据被转换后,不可能推算出原始数据;以及它们被用于检查文件是否已被破坏或篡改。
同时,散列值是通过使用散列算法而产生的伪随机数。当散列算法是SHA1时,散列值的长度是20字节,而当散列算法是MD5时,散列值的长度变为16字节。关于SHA1和MD5的详细介绍可以分别参考"FIPS-PUB 186-2 Secure Hash Standard"禾口 "正TF RFC1321"。
38这里,对应于列2211中描述的"a"目录的散列值是SHA1散列值,其是已经为"a"目录中存在的"ocap.hashfile"文件2141而计算的值。
与在221中的"ocap,hashfile"的例子相同,222中的"ocap.hashfile"包含"xletl.class "文件2150的文件名以及目录名、散列算法和目录"b" 2122的散列值。类似地,223中的"ocap.hashfile"包含文件名、散列算法和存在于相同目录2122中的"sub.class "文件2151
的散列值。
这里,仅描述与本发明有关的属性,因此,关于"ocap.hashfile"的详细内容,应该参考OCAP规范"OpenCable(R) Application Platformspecification OCAP 1.0 Profile(OC-SP-OCAPl,0國IF-109-031121)"。
文件2131是证书链。图23是显示"ocap.certificate.l"文件2131的详细结构的示图。231描述"ocap.certificate.x" (x是正整数)的典型结构,其包含根证书2311、中间证书2312和叶证书2313。它们处于链关系中,例如其中,根证书2311的持有者发行中间证书2312,并且中间证书2312的持有者发行叶证书2313。注意,根据OCAP规范,与签名文件"ocap.signaturefile.x"有关的证书链是具有相同值"x"的"ocap.C6rtificate.x"o
在图21的例子中,对应于"ocap.signaturefile.l"的证书链是"ocap.certificate.l"。同样,根证书2311、中间证书2312、叶证书2313被配置为相同的X.509证书格式。作为ITU-T的推荐标准,X,509证书被广泛用于信息和通信行业中的各个领域,作为证书表现格式的事实上的标准。在图23中,仅说明了三个证书,但是可以有存在多个中间证书的情况。然而,在这种情况下,这些中间证书必须处于链状态中,其中它们彼此相关。
图24是显示X.509证书的结构的示图。这里,仅说明了说明本发明所需的属性。关于X.509的详细内容,请参考正TF RFC3280
241指示X.509证书的属性区域,242指示X,509证书的签名值。序列号2411指示识别证书的编号,签名算法2412指示用于确定签名值242的算法,本次更新日期和时间2413指示当该X.509证书变为有 效时的日期和时间,下次更新日期和时间2414指示当X.509证书期 满时的日期和时间,发行人名称2415指示发行该X.509证书的管理 机构的名称,主体名称2416指示该X.509证书的持有者,公钥2417 指示主体名称2416的公钥,签名值242指示己使用该X.509证书的 发行人的私钥签名(加密)的值。在本实施例中,本次更新日期和时间 2413和下次更新日期和时间2414需要日期和时间的信息,但是,本 次更新日期和时间2413和下次更新日期和时间2414并不总是需要时 间信息。作为使用公钥和私钥的系统,公钥密码系统被广泛用于电子 商务等。在公钥密码系统中,使用不同于加密明文所用的密钥的密钥 来解密密文。由于加密密钥和解密密钥不同,所以不能根据解密密钥 推断出加密密钥。加密密钥对应于私钥,而解密密钥对应于公钥。公 钥密码系统的典型例子包括RSA(Rivest-Shamir-Adleman)和 DSA(Digital Signature Standard)。
文件2132是签名文件。图25是显示"ocap. signaturefile. 1"文件 2132的示意图。251指示用于识别关联哪个乂.509证书的证书识别符, 252指示散列签名算法,253指示通过使用在252中指示的散列签名 算法根据"ocap.hashfile" "40所计算的签名值。
一旦将Java (R)程序存储到辅助存储单元510中,即使当由于频 道改变和终端设备500断电等原因,将Java (R)程序从主存储单元511 删除时,只要AM 1205b已接收到图20中所示的XAIT,就能够在不 需要等待下载的情况下激活该Java(R)程序。也就是说,在图20中, 程序"/a/xletl"的控制信息2002是"自动起动"。因此,在图21的 2011中,当对文件系统的对应于"/a/xIetl"的存储位置2101进行搜 索,然后文件2150被传送到VM 1203时,存储在该文件系统中的 Java(R)程序"xletl"被激活。
然后,对由AM 1205b和安全管理器1205f执行的处理进行描述, 这些处理是本发明的主要功能,用于认证存储在主存储单元511中的 文件系统以及将所认证的文件系统存储到辅助存储单元510中。
首先描述AM 1205b的功能,然后描述安全管理器1205f的功能,最后描述由AM 1205b和安全管理器1205f执行的处理的流程。 首先,描述AM 1205b。
图36显示AM 1205b的组成部分,AM 1205b用于将存储在主存 储单元511中的文件系统存储到辅助存储单元510中。
当将存储新下载的Java(R)程序时,文件系统比较单元3601将存 储在主存储单元511中的文件系统的"/"目录中包含的"ocap.storage" 的描述与存储在辅助存储单元510中的"/"目录中包含的 "ocap.storage"的描述进行比较,其中,所述Java(R)程序将被存储 到所述辅助存储单元510中。然后,文件系统比较单元3601提取指
示将被存储的文件的文件列表信息(以下简称为文件列表信息),并将 一对提取的文件列表信息和Java(R)程序识别符2001传送到文件系统 管理单元3602。文件系统管理单位3602根据来自文件系统存储单元 3603的查询,通过使用从文件系统比较单元3601传送的文件列表信
息来提供所述文件列表信息。
文件系统存储单元3603向文件系统管理单元3602查询,以便获
得文件列表信息,并根据所获得的文件列表信息,将文件从主存储单 元511存储入辅助存储单元510。
例如,考虑以下例子图37显示基于Java(R)程序的文件系统中 的"ocap.storage"的文件列表信息的详细内容,所述Java(R)程序已 被在前一次下载和认证时,在其被存储入主存储单元511后,存储入 辅助存储单元510;并且图35显示基于Java(R)程序的文件系统中的
"ocap.storage"的文件列表信息的详细内容,其中,所述Java(R)程 序是已被通过已根据图21中显示的XAIT信息执行的下载而存储入 主存储单元511的Java(R)程序。在本例中,文件系统比较单元3601 将图38中显示的文件列表信息和已被新存储入主存储单元511的 Java(R)程序的程序识别符2001传送到文件系统管理单元3602。
如图38所示,图38的文件列表信息中显示的是在图37中显示 的、然而未在图35中显示的文件(即,"/a/c/ocap,hashfile"和
"/a/c/sub.class")以及同时在图37和图35中显示的、但版本号不同 的文件(即"/ocap.hashfile", "/ocap .singaturefile,l ", "/a/ocap. hashfile "
41和"/a/xlet.class"),而在图37和图35中共同显示的文件不在图38 的文件列表信息中描述。
文件系统管理单元3602管理一对Java(R)程序的程序识别符2001 和文件列表信息,并且文件系统存储单元3603向文件系统管理单元 3602查询将存储的文件,以便根据所接收的文件列表信息存储文件。
以下通过采用一个例子,其中将存储行2011中定义的Java(R)程 序,来详细描述由文件系统比较单元3601、文件系统管理单元3602 和文件系统存储单元3603执行的处理。
图39是显示由文件系统比较单元3601执行的处理的流程图。文 件系统比较单元3601检査在存储在主存储单元511中的文件系统的 "/"目录中是否存在"ocap.storage"(步骤S391)。当存在有 "ocap.storage"时,文件系统比较单元3601根据存储在主存储单元 511中的"ocap.storage"的描述生成文件列表信息351(步骤S392)。
当步骤S391的检查结果为不存在"ocap.storage"时,在本例子 中终止所述处理,但是同样能够使用包含下列信息的文件列表信息 351移到步骤S393,所述信息为(i)参考存储在主存储单元511中的文 件系统的文件结构生成的文件名列3511,以及(ii )根据版本号2006 生成的版本号列3512。
然后,文件系统比较单元3601检查在存储在辅助存储单元510 中的"/"目录中是否存在"ocap.storage",其中,新下载的Java(R) 程序被存储到所述辅助存储单元510中(在本实施例中,给出一个例 子的描述,其中,图21中显示的Java(R)程序被新下载的Java(R)程 序所替换)(步骤S393)。当存在有"ocap.storage"时,文件系统比较 单元3601根据存储在辅助存储单元510中的"ocap.storage"的描述 生成文件列表信息371(步骤S394)。
当步骤S393的检查结果为不存在"ocap.storage"时,在本例子 中终止所述处理,但是同样能够使用包含下列信息的文件列表信息 371移到步骤S395,所述信息为(i)参考存储在辅助存储单元510中的 文件系统的文件结构生成的文件名列3711,以及(ii )根据最小的版 本号1生成的版本号列3712。
42然后,文件比较单元3601将文件列表信息351与文件列表信息 371进行比较,以提取差别,并生成文件列表信息3S1(步骤S395)。 最后,文件比较单元3601向文件管理单元3602传送一对Java(R)程 序识别符2001以及文件列表信息3S1(步骤S396)。
图40是显示由文件系统管理单元3602执行的处理的流程图。当 接收到Java(R)程序识别符2001以及对文件列表信息的查询时(步骤 S401),文件系统管理单元3602将对应于所接收的Java (R)程序识别 符2001的文件列表信息381返回给查询者(步骤S402)。
图41是显示由文件系统存储单元3603执行的处理的流程图。当 接收到Java(R)程序识别符2001以及存储所述Java(R)程序的请求时 (步骤S411),文件系统存储单元3603获得提供给文件系统管理单元 3602的、对应于Java(R)程序识别符2001的文件列表信息3S1(步骤 S412)。然后,文件系统存储单元3603判断是否已获得文件列表信息 381(步骤S413)。当判断己获得文件列表信息381时(步骤413:是), 文件系统存储单元3603将版本号2006与在所获得的文件列表信息 381的列3812中描述的每个版本号进行比较,并从第一行开始比较 (步骤S414)。
当版本号2006更大时(步骤S415),文件系统存储单元3603删除 存储在辅助存储单元510中的、对应于在文件列表信息381的当前行 的列381中描述的文件名的文件。在图38中显示的例子中,两个文 件"/a/c/ocap,hashfile"和"/a/c/sub.class"将被删除(步骤S416)。当 版本号2006不是较大的时,文件系统存储单元3603判断当前比较的 版本号是否等于版本号2006(步骤S417)。当这些版本号相等时,文 件系统存储单元3603将存储在主存储单元511中的、对应于在文件 列表信息381的当前行的列3811中描述的文件名的文件存储到辅助 存储单元510中。注意,当该文件存在于辅助存储单元510中时,这 里的"存储文件"是指"重写文件",当没有文件存在于辅助存储单 元510中时,这里的"存储文件"是指"另外存储文件"。还要注意, 在这里的存储操作之前,已完成随后描述的认证操作。最后,文件系 统存储单元3603判断是否己达到文件列表信息的最后一行(步骤S419)。当不是最后一行时,文件系统存储单元3603返回步骤S414, 而当是最后一行时,所述处理结束。
注意,只要该方法能够存储较大版本的文件并删除较老版本的文 件,就可以使用另一种方法。此外,在以上描述中,通过使用版本号 2006 —种在文件列表信息381列3812中描述的版本号来区别较大的 和较老的版本,但是,可以使用另外的方法,只要能够区别较大和较 老的版本就行。
下面,给出由安全管理器1205f执行的一般操作的描述。假定, 例如,安全管理器1205f从AM 1205b接收到指示将存储定义在行 2011中的Java(R)程序的预存储通知。当接收到该通知时,安全管理 器1205f检査Java(R)程序识别符2001的值以判断其是未签名程序还 是签名程序。这里,因为Java(R)程序是签名程序,所以安全管理器 1205f对"/"目录以下的文件系统执行认证。为了检验所述文件系统, 通过使用ocap.hashfile(2140 2142) 、 ocap.certificates.1(2131)和 ocap.signaturefile.l(2132)来执行认证。
图26显示用于执行文件系统的认证的安全管理器1205f的组成 部分。
通知接收单元261用于在AM 1205b即将存储文件系统之前接收 预存储通知,以及用于将该事实通知给判断单元262。
判断单元262判断认证结果。其请求散列计算单元263对文件系 统进行散列计算以接收散列值。判断单元262从存在于"ocap.hashfile" 文件中的散列值2213和2223提取将比较的值,并检査其与所接收的 散列值是否相配。如果它们不匹配,则判断单元262判断已发生篡改, 并且认证以失败结束。
此外,判断单元262使用证书提取单元265提取每个X.509证书, 并且判断当前时间是否不在每个X. 509证书的本次更新日期与时间 2413之前,并且不在每个X. 509证书的下次更新日期与时间2414之 后(也就是说,当前时间在每个509证书的本次更新日期与时间2413 和下次更新日期与时间2414之间)。从OS 1201的库1201b获得当前 日期和时间。如果有效期不满足"本次更新日期和时间<当前日期和时间<下次更新日期和时间",则判断单元262判断认证失败。
此外,为了认证证书链,判断单元262请求散列计算单元263对 每个1509证书的属性区域241进行散列计算。然后,其请求签名值 解密单元264执行用于解密每个X.509证书中包含的签名值242的计 算,并将得到的解密值与通过散列值计算单元263获得的散列值进行 比较,以便检查证书链的状态。如果它们不匹配,则意味着证书不处 于链关系中,并且因此判断认证失败。同时,当值匹配并且已证实证 书处于链关系中时,检查所述证书链中的根证书是否包含在终端设备 500的辅助存储单元510中。如果不包含,则判断单元262判断认证 失败,也就是说不能执行比较。
当满足下列所有条件时,判断单元262判断认证成功,所述条件 为(l)没有篡改;(2)处于有效期;(3)证书处于链关系中;(4)根证书 匹配。
当被判断单元262请求计算每个文件的散列值时,散列计算单元 263从OS 1201的库1201b中提取每个文件,以对它们执行散列计算, 并将结果值传送给判断单元262。此外,散列计算单元263从证书提 取单元265获得证书链231中的每个1509证书,并对它们中的每一 个的属性区域241执行散列计算。
由判断单元262请求签名值解密单元264执行用于解密每个X. 509证书或"ocap.signaturefile.x"的签名值的计算。当执行计算以解 密每个X.509证书的签名时,签名值解密单元264从证书提取单元 265获得证书链231中的每个X,509证书,然后执行用于解密它们中 的每一个的签名的计算,并返回结果给判断单元262。
由判断单元262、散列计算单元263、签名值解密单元264请求 证书提取单元265提取证书链231中的每个X,509证书,并且提取并 返回X.509证书。
图27是概述当执行文件系统的认证时,由安全管理器1205f执 行的操作的流程图。基于该流程图,给出当文件系统具有图21中显 示的结构时执行的操作的说明。当从AM 1205b接收到文件系统的预 存储通知时(步骤S271),安全管理器1205f对文件系统的顶层"/"目录以下的文件系统执行篡改检查(步骤S272)。在篡改检査中,通过比较散列值,证实在存在于文件系统的每个目录中的文件中未发生破坏或更改。
图29和图30是步骤S272的详细流程图。首先,安全管理器1205b从文件系统管理单元3602获得对应于程序识别符2001的文件列表信息381(步骤S290)。然后,安全管理器1205f聚焦于文件系统中的7"目录(步骤S291),并执行比较以判断所获得的文件列表信息381是否包含在所聚焦的目录中包含的文件(步骤S292)。如果判断结果是存在文件(步骤S293 :是),则安全管理器1205f计算文件"ocap.certificates.l"禾t3 "ocap .storage"以及目录"a"的散列值(步骤S294)。目录"a"的散列值是根据"/a/ocap.hashfile"文件222来计算的。然后,安全管理器1205f将在步骤S294中计算的每个散列值与在"/ocap.hashfile"的2213中描述的每个散列值进行比较(步骤S295)。在步骤S296中,如果有任何所计算的散列值不同于2213中的散列值,则安全管理器1205f判断己发生篡改(步骤S299)。同时,当所有所计算的散列值都与2213中的散列值匹配时,安全管理器1205f移动到步骤S297。如果判断是没有文件(步骤S293:否),在安全管理器1205f转移到步骤S297。
在步骤S297,检査是否存在还未完成篡改检查的任何子目录。在当前阶段,存在作为"/"目录的子目录的"a"目录。因此,聚焦于"a"目录,以便对其执行篡改检查,作为步骤S298,其中,执行与为"/"目录执行的处理相同的处理。在为"a"目录完成篡改检查之后,为"b"目录执行篡改检查,"b"目录是"a"目录的子目录。当己经为所有的目录完成篡改检査时,聚焦于"/"目录,执行图30中的步骤S301的处理。在步骤S301中,从作为证书链231的"/ocap.certificates.1 "文件2131提取叶证书2313。然后,在步骤S302,从所提取的叶证书2313中取出公钥2417。随后,在步骤S303,为"/ocap.hashfile"文件221计算散列值。
同时,在步骤S304,使用存在于"/ocap.certificatefile.l"文件2131中的叶证书2313中的公钥2417对"/ocap.sig幽refile.l"文件2132中的签名值242执行解密。在步骤S305,检查在步骤S303计算的散列值是否等于在步骤S304通过解密签名值而获得的值。如果这些所计算的值匹配,则能够断定"/"目录以下的文件系统未被篡改(步骤S306)。如果这些所计算的值不匹配,则能够断定所述文件系统己被篡改(步骤S307)。注意,已给出了一个例子的描述,其中,以降序从顶层"/"目录开始向子目录依次执行篡改检查,但是本发明不局限于此。因此,可以以升序,从最低层目录开始向顶层目录依次执行处理。通过以上处理,获得图27中的步骤S272的结果。
在步骤S273,当步骤S272中的结果是"已发生篡改"时,判断认证失败,并且发送关于该事实的通知(步骤S279),之后结束处理。当步骤S272的结果是"没有篡改"时,执行步骤S274的处理。
接下来,参照图31至图33,给出证书链认证的详细说明(步骤S274)。假定首先对中间证书2312和叶证书2313执行检査,图31中显示了其流程图。首先,从证书链231中提取中间证书2312和叶证书2313(步骤S311)。从该提取的叶证书2313中提取本次更新日期与时间2413、下次更新日期与时间2414以及发行人名称2415(步骤S312)。对于它们,判断当前日期和时间是否在所述本次更新日期与时间2413和下次更新日期与时间2414之间,在这期间,证书保持有效(步骤S313)。如果其超出了证书可以保持有效的时期,则证书链的认证以失败结束(步骤S319)。同时,当判断其在证书的有效期内时,提取中间证书2312中的主体名称2416和公钥2417(步骤S314),并且将中间证书2312的主体名称2416与叶证书2313的发行人名称2415进行比较,以判断所述中间证书2312和所述叶证书2313是否处于链关系中(步骤S315)。
如果这些证书不处于链关系中,则证书链的认证失败。同时,当在它们之间存在链关系时,为叶证书2313的属性区域241计算散列值(步骤S316)。此外,用中间证书2312的公钥2417来解密叶证书2313中的签名值242(步骤S317)。当完成步骤S316和步骤S317时,
检查在各个步骤中获得的散列值和解密的签名值是否匹配(步骤S318)。如果它们不匹配,则证书链的认证以失败结束(步骤S319)。
47接下来,在根证书2311和中间证书2312之间执行检查。图32是显示该处理的流程图。从证书链231提取根证书2311和中间证书2312(步骤S321),并且为根证书2311和中间证书2312执行与为中间证书2312和叶证书2313执行的检查相同的处理(步骤S322 步骤S328)。
当在步骤S328中判断所述值匹配时,单独对根证书2311执行检查。图33是显示将单独为根证书2311执行的检查的流程图。从在步骤S321中提取的根证书2311中提取本次更新日期与时间2413、下次更新日期与时间2414以及发行人名称2415(步骤S331)。对于它们,判断当前日期和时间是否在所述本次更新日期与时间2413和下次更新曰期与时间2414之间,在这期间,证书保持有效(步骤S332)。如果其超出了证书可以保持有效的时期,则证书链的认证以失败结束。同时,当判断其在证书的有效期内时,为根证书2311的属性区域241计算散列值(步骤S334)。此外,用根证书2311的公钥2417来解密根证书2311中的签名值242(步骤S335)。当完成步骤S334和步骤S335时,检査在相应步骤中获得的散列值和解密的签名值是否匹配(步骤S336)。如果它们匹配,则证书链的认证成功(S337),而如果它们不匹配,则证书链的认证以失败结束(步骤S338)。在该点,步骤S274的处理结束。
根据步骤S274的结果,在步骤S275中执行的处理是不同的。当步骤S274的结果是"证书链的认证失败"时,判断认证已失败并且发送关于其的通知(步骤S279),然后,结束对所述文件系统的认证。同时,当"证书链的认证成功时,执行步骤S276的处理。
接下来,在终端设备500的辅助存储单元510中搜索与"/ocap.certificate.l"文件2119的根证书2311相同的证书(步骤S276)。当在辅助存储单元510中不存在相同的证书时,在步骤S277判断证书链231的认证失败,并且发送关于该认证失败的通知(步骤S279),之后结束处理。同时,当包含根证书2311时,判断文件系统的认证成功,并且将关于该认证成功的通知发送给AM 1205b(步骤S278)。参照图28,即使在那之后接收到Java程序的预激活通知(步骤S281),也结束处理而不执行处理。
最后,参照图42,描述由AM 1205b和安全管理器1205f执行的处理的流程。当将存储Java(R)程序时,AM 1205b请求文件系统比较单元3601提取文件列表信息。响应于此,文件系统比较单元3601根据图39中显示的流程图执行处理(步骤S421)。接下来,AM 1205b请求安全管理器1205f认证所述Java(R)程序(典型的认证如下根据
所提取的文件列表信息认证新文件(包括版本已被升级的文件);对新下载的Java(R)程序的"/ocap,hashfile"执行篡改检査(只要已经在认证以上文件的时候执行了篡改检查,就不必再次执行篡改检查);以及新下载的Java(R)程序的证书文件的根认证)(步骤S422)。AM 1205b判断认证是否失败(步骤S423),并且如果认证未失败(即成功)(步骤S423:否),则AM 1205b请求文件系统存储单元3603存储Java(R)程序。响应于此,文件系统存储单元3603根据图41中显示的流程图执行处理(步骤S424)。
如上所述,通过提取当前存储在辅助存储单元510中的Java(R)程序和将被新存储的Java(R)程序之间的差别,能够不必对整个将存储的Java(R)程序进行认证和存储。此外,如果在一定时间之后激活所存储的Java(R)程序,则不必在激活时再一次执行认证,这是因为在其被存储之前已经对它的文件系统执行了认证。更具体的,在程序执行时,不必再次执行与在存储所述程序时执行的认证相同的认证,并且可以例如仅执行根认证。
注意,文件系统存储单元3603用于存储和删除与在先前的存储时间存储入辅助存储单元510的文件系统中的任何文件不同的文件,而不会再次存储与在先前的存储时间存储入辅助存储单元510的文件系统中包含的文件之一相同的文件。然而,文件系统存储单元3603可以在不再次执行认证的情况下,用不同的文件重写相同的文件。
(第二实施例)
参照
根据本发明的有线电视系统的优选实施例。图1是显示构成有线系统的设备间的关系的框图,所述设备包括头端101,以及三个终端设备,分别为终端设备Alll、终端设备B112、终端设
49备C113。在本实施例中,三个终端设备连接到一个头端,但是如果将任意数量的终端设备连接到头端,也能够实现本发明。
头端101向多个终端设备传送广播信号,例如视频、音频和数据,并接收从终端设备传送的数据。为了实现这一点,频带被分割以用于头端IOI、终端设备Alll、终端设备B112、终端设备C113之间的数据传输。图2是显示分割的频带的例子的表格。粗略地可以分为两种类型的频带带外(简写为OOB)和带内频带。5 130MHz的频带被分配给OOB,主要用于头端101、终端设备Alll、终端设备B112以及终端设备C113之间的数据交换。130MHz 864MHz的频带被分配给带内频带,主要用于广播信道,包括视频和音频。QPSK用于OOB,而QAM64用于带内频带,作为调制技术。因为它们是与本发明无关的公知技术,所以这里省略对调制技术的详细说明。图3显示了如何使用OOB频带的更具体的例子。70MHz 74MHz的频带用于从头端101传送数据。在本例中,所有终端设备A111、终端设备B112、终端设备C113都从头端101接收同样的数据。同时,10.0MHz 10.1MHz的频带用于从终端设备Alll向头端101传送数据。10.1MHz 10.2MHz的频带用于从终端设备B112向头端101传送数据。10.2MHz 10.3MHz的频带用于从终端设备C113向头端101传送数据。因此,能够从终端设备Alll、终端设备B112、终端设备C113向头端101传送唯一属于每个终端设备的数据。图4显示了带内频带的典型使用。150 156MHz以及156 162MHz的频带分别分配给电视频道1和电视频道2,并且随后的频率被以6MHz的间隔分配给电视频道。310MHz以及随后的频率以lMHz的间隔分配给无线电广播频道。每个上述频道或者可用于模拟广播,或者可用于数字广播。当用于数字广播时,以符合MPEG2规范的传输分组格式传送数据,其中,除了音频和视频时间之外,针对各种数据广播系统的数据都可以被传送。
头端101装配有QPSK调制单元、QAM调制单元等等,以便向相应的各个频率范围传送合适的广播信号。此外,头端101装配有QPSK解调单元,用于从终端设备接收数据。而且,假定头端101还
50装配有与上述调制单元和解调单元有关的各种装置。但是,由于本发明主要涉及终端设备,所以省略对它们的详细说明。
终端设备Alll、终端设备B112、终端设备C113接收并再现从头端101传送的广播信号。此外,终端设备Alll、终端设备B112、终端设备CU3向头端101传送唯一属于每个终端的数据。在本实施例中,这三个终端设备具有相同的配置。
图5是显示每个终端设备的硬件配置的框图。500是终端设备,其由QAM解调单元501, QPSK解调单元502, QPSK调制单元503,TS解码器505,音频解码器506,扬声器507,视频解码器508,显示器509,辅助存储单元510,主存储单元511, ROM 512,输入单元513以及CPU 514等构成。此外,POD 504可以被附加到终端设备500,或从终端设备500分离。
图6显示形状较薄的电视,其是终端设备500的典型的外部视图。终端设备可以具有不同的配置,但在本实施例中,将基于OpenCable(TM)和OCAP配置的终端设备作为例子进行描述。
601是形状较薄的电视的钢外壳,其中包含除POD504以外的终端设备500的所有组件。
602是显示器,其对应于图5中的显示器509。
603是面板单元,其由多个按钮组成,并且对应于图5中的输入单元513。
604是信号输入端子,电缆线连接到其,用于向头端101发送信号以及从头端101接收信号。信号输入端子连接到图5所示的QAM解调单元501 , QPSK解调单元502以及QPSK调制单元503。
605是对应于图5中的POD 504的POD卡。POD 504独立于终端设备500而实现,并且可以附加到终端设备500上,或从终端设备分离,如同图6中的POD卡605。后面详细说明POD504。
606是可插入POD卡605的插槽。
参照图5, QAM解调单元501根据包括由CPU 514指定的频率的调谐信息,对已在头端101中被进行QAM调制并且被从头端101传送的信号进行解调,并将结果传送给POD504。QPSK解调单元502根据包括由CPU 514指定的频率的调谐信 息,对已在头端101中被进行QPSK调制并且被从头端101传送的信 号进行解调,并将结果传送给POD 504。
QPSK调制单元503根据包括由CPU 514指定的频率的解调信 息,对从POD 504传送来的信号进行QPSK解调,并将结果传送给 头端101。
如图6所示,POD 504可以从终端设备500的主体分离。终端 500的主体和POD 504之间的连接接口的定义在OpenCable(R) CableCARD(R)接口规范(OC-SP-CC-IF-I15-031121)以及该规范所 参考的规范中给出。这里,省略了详细说明,并且仅给出与本发明有 关的组成部分的说明。
图7是显示POD 504的内部配置的框图。POD 504由第一解扰 器单元701、第二解扰器单元702、扰频器单元703、主存储单元704、 辅助存储单元705和CPU 706构成。
第一解扰器单元701根据来自CPU 706的指令从终端设备500 的QAM解调单元501接收失真信号,并解扰该信号。然后,第一解 扰器单元701将解扰后的信号传送给终端设备500的TS解码器505。 根据需要,由CPU 706提供解扰器所需的信息,例如密钥。更具体 地,头端101广播多路付费频道,当用户购买了观看这些付费频道的 权利后,第一解扰器单元701从CPU 706接收所需的信息,例如密 钥,并执行解扰。因此,用户可以观看这些付费频道。当不提供诸如 密钥这样所需的信息时,第一解扰器单元701在不执行解扰的情况 下,直接将所接收的信号传递给TS解码器505。
第二解扰器单元702根据来自CPU 706的指令接收来自终端设 备500的QPSK解调单元502的失真信号,并解扰该信号。然后,第 二解扰器单元702将解扰后的数据传送给CPU 706。
扰频器单元703根据来自CPU 706的指令对从CPU 706接收的 信号进行扰频,并将结果发送给终端设备500的QPSK调制单元503。
主存储单元704,它的具体组成元件是例如RAM这样的主存储 器,当CPU 706执行处理时用于临时地存储数据。
52辅助存储单元705,它的具体组成元件是例如闪速ROM这样的 辅助存储器,用于存储将由CPU 706执行的程序,并且用于存储即 使当关闭电源时也不应删除的数据。
CPU 706执行存储在辅助存储单元705中的程序。该程序由多个 子程序构成。图8显示了存储在辅助存储单元705中的程序的例子。 在图8中,程序800由多个子程序构成,包括主程序801、初始化 子程序802、网络子程序803、再现子程序804以及PPV子程序805。
这里,PPV是每次观看付费(Pay Per View)的縮写,是指一种服 务,其使得用户能够在可记帐的基础上,观看诸如电影这样的特定程 序。当用户输入他/她的个人识别号时,向头端101通知用户购买了 观看程序的权利,并且解扰程序。因此,用户能够观看该程序。观看 程序需要用户在日后为购买付费。
在所有子程序中,主程序801是当打开电源时,首先由CPU706 激活的子程序,其控制其它子程序。
当打开电源时,由主程序801激活的初始化子程序802与终端设 备500执行信息交换等等,以执行初始化处理。该初始化处理在 OpenCable(TM)CableCARD(TM)接口规范(OC-SP-CC-IF-I15-031121) 以及该规范所参考的规范中详细定义。此外,初始化子程序802还执 行不在这些规范中定义的初始化处理。这里,介绍部分这种初始化处 理。当打开电源时,初始化子程序802经由终端设备500的CPU514 向QPSK解调单元502通知存储在辅助存储单元705中的第一频率。 QPSK解调单元502使用所提供的第一频率执行调谐,并将得到的信 号传送给第二解扰器单元702。此外,初始化子程序802为第二解扰 器单元702提供解扰信息,例如存储在辅助存储单元705中的第一密 钥。从而,第二解扰器单元702执行解扰,并将结果传送给执行初始 化子程序802的CPU706。因此,初始化子程序802可以接收信息。 在本实施例中,初始化子程序802经由网络子程序803接收信息。后 面详细进行描述。
此外,初始化子程序802经由终端设备500的CPU514向QPSK 调制单元503通知存储在辅助存储单元705中的第二频率。初始化子程序802为扰频器单元703提供存储在辅助存储单元705中的扰频信 息。当初始化子程序802经由网络子程序803向扰频器单元703提供 需要被发送的信息时,扰频器单元703使用所提供的扰频信息对数据 进行扰频,并向QPSK调制单元503提供失真数据。QPSK调制单元 503调制它接收的失真信息,并将调制后的信息发送给头端101。
因此,初始化子程序802能够经由终端设备500、第二解扰器单 元702、扰频器单元703和网络子程序803与头端101执行双向通信。
由多个子程序(例如主程序801和初始化子程序802)使用的网络 子程序803是用于执行与头端101的双向通信的子程序。更具体地, 网络子程序803使得其它使用网络子程序803的子程序好像是在根据 TCP/IP与头端101进行双向通信。因为TCP/IP是当在多个终端之间 交换信息时指定将使用的协议的公知技术,所以这里省略TCP/IP的 详细说明。当在接通电源时由初始化子程序802激活时,网络子程序 803经由终端设备500向头端101通知MAC地址(媒体访问控制的縮 写),其是用于识别POD 504的识别符,并且被预先存储在辅助存储 单元705中,以便请求获取IP地址。头端101经由终端设备500向 POD 504通知IP地址,并且网络子程序803将该IP地址存储在主存 储单元704中。此后,通过使用该IP地址作为POD 504的识别符, 头端101和POD 504互相通信。
再现子程序804为第一解扰器单元701提供例如存储在辅助存储 单元705中的第二密钥这样的解扰信息以及例如由终端设备500提供 的第三密钥这样的解扰信息,以便使得能够执行解扰。此外,再现子 程序804经由网络子程序803接收指示输入第一解扰器单元701的信 号是PPV频道的信息。当被通知信号是PPV频道时,再现子程序804 激活PPV子程序805。
当被激活时,PPV子程序805在终端设备500上显示提示用户购 买所述程序的消息,并接受来自用户的输入。更具体地,当希望被显 示在屏蔽上的信息被发送给终端设备500的CPU 514时,运行在终 端设备500的CPU 514上的程序在终端设备500的显示器509上显 示所述消息。然后,当用户经由终端设备500的输入单元513输入个人识别号时,终端设备500的CPU514接受其,并将其发送到运行在 POD 504的CPU 706上的PPV子程序805。 PPV子程序805将接受 的个人识别号经由网络子程序803发送到头端101。当该个人识别号 有效时,头端101经由网络子程序803向PPV子程序805通知解扰 所需的解扰信息,例如第四密钥。PPV子程序805向第一解扰器单元 701提供所接受的解扰信息,例如所述第四密钥,然后第一解扰器单 元701解扰所述输入信号。
参照图5, TS解码器505对接受自POD 504的信号进行过滤, 并将必要的数据传送到音频解码器506、视频解码器508和CPU 514。 这里,发送自POD 504的信号是MPEG2传输流。关于MPEG2传输 流的详细说明在MPEG规范ISO/IEC138181-l中给出,因此在本实施 例中不对其进行详细地说明。MPEG传输流由多个固定长度的数据分 组组成,并且为每个数据分组分配一个数据分组ID。图9是显示数 据分组的结构的示图。900是一数据分组,其包含188字节的固定长 度。头四个字节是存储用于识别数据分组的信息的头901,并且另外 184字节是存储希望传送的信息的有效负载902。 903显示了所述头 901的细节。数据分组ID包含在从第12比特到第24比特的13个比 特中。图10是说明待传送的多个数据分组串的概要图。数据分组1001 在它的头中包含数据分组ID " 1 "并且在它的有效负载中包含视频A 的第一信息。数据分组1002在它的头中包含数据分组ID "2"并且 在它的有效负载中包含音频A的第一信息。数据分组1003在它的头
中包含数据分组ID"3"并且在它的有效负载中包含音频B的第一信
自
必o
数据分组1004在它的头包含数据分组ID "1"并且在它的有效 负载中包含视频A的第二信息,其是所述数据分组1001的后续的信 息。类似的,数据分组1005、 1026和1027携带其它数据分组的后续 数据。通过按照上述方式连接具有相同数据分组ID的数据分组的有 效负载的内容,能够连续地再现视频和音频。
参照图10。当CPU 514向TS解码器505指出数据分组ID "1" 以及作为输出目的地的"视频解码器508"时,TS解码器505从接收自POD 504的MPEG2传输流中提取具有数据分组ID " 1"的数据 分组,并将它们传送到所述视频解码器508。因此,在图10中,仅 将视频数据传送到视频解码器508。同时,当CPU514向TS解码器 505指出数据分组ID "2"以及"音频解码器506"时,TS解码器505 从接收自POD 504的MPEG2传输流中提取具有数据分组ID "2"的 数据分组,并将它们传送到所述音频解码器506。在图10中,仅音 频数据被传送到所述视频解码器508。
该根据数据分组ID仅提取必要的数据分组的处理对应于由TS 解码器505执行的过滤。TS解码器505能够按照来自CPU 514的指 令同时执行多于一个过滤处理。
参照图5,音频解码器506连接由TS解码器505提供的、嵌入 在MPEG2传输流的数据分组中的音频数据,对所连接的数据执行数 模转化,并向扬声器507输出结果。
扬声器507将由音频解码器506提供的信号作为音频输出。
视频解码器508连接由TS解码器505提供的、嵌入在MPEG2 传输流的数据分组中的视频数据,对所连接的数据执行数模转化,并 向显示器509输出结果。
显示器509,其具体的组成元件是CRT或液晶等等,输出由视频 解码器508提供的视频信号并显示由CPU 514指定的消息等等。
辅助存储单元510,其具体的组成元件是闪速存储器、硬盘等等, 存储并删除由CPU 514指定的数据和程序。由CPU 514访问所存储 的数据和程序。即使当终端设备500断电时,所存储的数据和程序也 能保存在存储器中。
主存储单元511,其具体组成元件是RAM等等,其临时地存储 由CPU 514指定的数据和程序以及删除它们。由CPU 514访问所存 储的数据和程序。当终端设备500断电时,存储的数据以及程序被删 除。
ROM 512是只读存储器装置,其具体的组成元件是ROM、 CD-ROM、 DVD等等。ROM512存储将由CPU514执行的程序。 输入单元513,其具体的组成元件是面板或遥控器,其接受来自
56用户的输入。图11显示当以面板的形式配置输入单元时的输入单元
的例子。IIOO是一面板,其对应于图6中显示的面板单元603。该面 板由七个按钮组成上指针按钮1101、指针下按钮1102、左指针按 钮1103、右指针按钮1104、 OK按钮1105、取消按钮1106以及EPG 按钮1107。当用户按下一按钮时,该被按下的按钮的识别符被通知 给CPU 514。
CPU 514执行存储在ROM 512中的程序。根据来自该待执行程 序的指令,CPU 514控制QAM解调单元501、 QPSK解调单元502、 QPSK调制单元503、 POD 504、 TS解码器505、显示器509、辅助 存储单元510、主存储单元511以及ROM 512。
图12是显示存储在ROM 512中并且由CPU 514执行的程序的 典型结构的示图。
程序1200由多个子程序组成。更具体地,程序1200由OS 1201、 EPG 1202、 Java (R)VM 1203(以下简称为VM 1203)、服务管理器1204、 以及Java(R)库1205(以下简称库1205)组成。
OS 1201是当终端设备500通电时将由CPU 514激活的子程序。 OS 1201是操作系统的縮写,它的例子是Linux等等。OS 1201是一 种公知技术的普通名称,其由内核1201a和库1201b组成,内核1201a 用于与另一个子程序并行地执行一个子程序,因此详细说明被省略。 在本实施例中,OS 1201的内核1201a执行作为子程序的EPG 1202 和VM 1203。同时,库1201b为这些子程序提供控制终端设备500 的组成元件所需的多个功能。
这里,调谐作为这种功能一个例子被介绍。使用调谐的功能,从 另一个子程序接收包括频率的调谐信息,然后传送至QAM解调单元 501。因此,QAM解调单元501能够根据所提供的调谐信息执行解 调,并将解调后的数据传送至POD504。因此,其它子程序可以经由 库1201b控制QAM解调单元。
所述EPG 1202由程序显示单元1202a以及再现单元1102b组成, 程序显示单元1202a用于向用户显示一列程序以及接受来自用户的 输入,再现单元1102b用于选择频道。这里,EPG是电子程序指南的
57縮写。当终端设备500通电时EPG 1202被激活。在激活的EPG 1202 中,程序显示单元1202a等待来自用户经由终端设备500的输入单元 513的输入。这里,当输入单元513采用图11中说明的面板的形式 时,当用户按下输入单元513上的EPG按钮1107时,向CPU 514 通知该EPG按钮的识别符。EPG 1202的程序显示单元1202a是运行 在CPU 514上的一子程序,其接受该识别符,并在显示器509上显 示程序信息。图13A和图13B显示了在显示器509上显示的程序表 的例子。参看图13A。以网格图形在显示器509上显示程序信息。列 1301描述时间信息。列1302描述频道名称"频道1"和将在对应于 列1301中描述的各个时间的时期内广播的程序。其表明,在"频道 1",从9:00至10:30广播"新闻9",从10:30至12力0广播"电影 AAA"。列1303描述频道名称"频道2"和将在对应于列1301中描 述的各个时间的时期内广播的程序,如同列1302的情况。从9:00至 ll:OO广播程序"电影BBB",从ll:OO至12:00广播"新闻11"。 1330 是光标。光标1330随着按下面板1100上的左指针1103或右指针1104 而移动。当在图13A的状态中按下右指针时,光标1330向右移动, 如图13B所示。当在图13B的状态中按下左指针时,光标1330向左 移动,如图13A所示。
当在图13A的状态中按下面板1100上的OK按钮1105时,程 序显示单元1202a向再现单元1102b通知"频道1"的识别符。同时, 当在图13B的状态中按下面板1100上的OK按钮1105时,程序显示 单元1202a向再现单元1102b通知"频道2"的识别符。
此外,程序显示单元1202a定期地将待显示的程序信息从头端 101经由POD504存储到主存储单元511中。通常,从头端获得程序 信息要花费时间。然而,在按下输入单元513的EPG按钮1107时, 通过显示被预先存储在主存储单元511中的程序信息,能够迅速显示 程序表。
再现单元1102b使用接收的频道的识别符再现频道。频道识别符 和频道之间的关系被辅助存储单元510作为频道信息预先存储。图 14显示存储在辅助存储单元510中的频道信息的例子。以表格形式存储所述频道信息。列1401描述频道的识别符。列1402描述频道名 称。列1403描述调谐信息。这里,调谐信息由将提供给QAM解调 单元501的值表示,例如频率、传输速率和编码比(coding ratio)。列 1404描述程序编号。程序编号是用于识别由MPEG2标准定义的PMT 的编号。随后给出关于PMT的描述。行1411 1414中的每一行指出 一组每个频道的识别符、频道名称和调谐信息。行1411描述一个组, 其中包含"1"作为识别符,"频道1"作为频道名称,"312MHz"的 频率作为调谐信息,以及"101"作为程序编号。再现单元1102b直 接将所接收的频道的识别符传送给服务管理器以便再现频道。
此外,如果用户当正在再现时按下面板1100上的上指针1101和 下指针1102,则再现单元1102b经由CPU 514从输入单元513接收 关于由用户进行的该按压的通知,并将正在被再现的频道切换到另一 个。首先,再现单元1102b在主存储单元511中存储当前再现的频道 的识别符。图15A、 15B、 15C显示了存储在主存储单元511中的频 道的识别符的例子。图15A显示识别符"3"被存储,并且通过参照 图14,表明具有频道名称"TV 3"的频道正在被再现。当用户在图 15A的状态中按下上指针1101时,再现单元1102b参考图14中显示 的频道信息,并且将具有频道名称"频道2"的频道的识别符"2" 传送给服务管理器,以便新再现具有频道名称"频道2"的频道,其 是所述表中的上一个频道。同时,再现单元1102b将识别符重写为存 储在主存储单元511中的频道识别符"2"。图15B显示该重写的频道 识别符。同样,当用户在图15A的状态中按下下指针1102时,再现 单元1102b参考图14中显示的频道信息,并且将具有频道名称"TV 曰本"的频道的识别符"4"传送给服务管理器,以便新再现具有频 道名称"TV日本"的频道,其是所述表中的下一个频道。同时,再 现单元1102b将识别符重写为存储在主存储单元511中的频道识别符 "4"。图15C显示该重写的频道识别符。
VM 1203是Java虚拟机,其连续地分析并执行以Java语言所写 的程序。以Java (TM)语言所写的程序被编译为称为字节代码的中间 码,其不依赖于硬件。Java虚拟机是执行该字节代码的解释器。 一些
59Java虚拟机将字节代码转化为一种可以由CPU 514理解的可执行的 形式,并将结果传送给CPU514, CPU514执行其。用由内核1201a 指定的待执行的Java程序激活VM 1203。在本实施例中,内核1201a 指定服务管理器1204作为待执行的Java程序。对Java语言的详细注 释在许多书中给出,包括"Java Language Specification" (ISBN 0-201-63451-1)。因此,这里省略关于其的详细说明。同样,对Java VM 本身的操作的详细注释在许多书中给出,包括"Java Virtual Machine Specification" (ISBN 0-201-6345l-X)。因此,这里省略关于其的详细 说明。
服务管理器1204是以Java语言写的Java程序,其由VM 1203 顺序地执行。通过JNI(Java本地接口),服务管理器1204能够调用另 一个未用Java语言写的子程序,并且能被另一个未用Java语言写的 子程序调用。关于JM的说明在许多书中给出,包括"Java本地接口"。 因此,这里省略关于其的详细说明。
服务管理器1204通过JNI从再现单元1102b接受频道的识别符。
首先,服务管理器1204将频道的识别符传送给库1205中的调谐 器1205c,以便请求调谐。调谐器1205c参考存储在辅助存储单元510 中的频道信息以获得调谐信息。假定服务管理器1204将频道的识别 符"2"传送给调谐器1205c,调谐器1205c参考图14中显示的行1412, 并获得对应于所述频道的调谐信息"156MHz"。调谐器1205c经由 OS 1201的库1201b将调谐信息传送给QAM解调单元501。 QAM解 调单元501根据发送给其的调谐信息解调发送自头端101的信号,并 将结果信号传送给POD 504。
然后,服务管理器1204请求库1205中的CA 1205b执行解扰。 CA 1205d通过OS 1201中的库1201b为POD 504提供解扰所需的信 息。根据所提供的信息,POD 504解扰由QAM解调单元501提供的 信号,并将结果信号传送给TS解码器505。
然后,服务管理器1204为库1205内的JMF 1205a提供频道的识 别符,以便请求再现视频和音频。
首先,JMF 1205a从PAT和PMT获得用于指定待再现的视频和音频的数据分组ID。 PAT和PMT是由MPEG-2标准定义的表,其显 示包括在MPEG2传输流中的程序行(program line-up)。在包含在 MPEG2传输流的数据分组中的有效负载中携带PAT和PMT以及音 频与视频。参照PAT和PMT的详细说明的规范。这里,仅给出PAT 和PMT的概要。PAT是程序关系表的縮写,在具有数据分组ID"O" 的数据分组中传送其。为了获得PAT, JMF 1205a通过OS1201的库 1201b,向TS解码器505指出数据分组ID "0"和CPU 514。然后, TS解码器505根据数据分组ID"O"执行过滤,并将结果传送给CPU 514。因此,JMF 1205a可以收集PAT数据分组。图16说明了示意性 地显示所收集的PAT信息的例子的表。列1601描述程序编号。列1602 描述数据分组ID。列1602中显示的数据分组ID用于获得PAT。行 1611 1613中的每一个包含一对频道的程序编号以及对应于其的数 据分组ID。这里,定义了三个频道。行1611定义了一对程序编号"101" 和数据分组ID "501"。假定提供给JMF 1205a的频道识别符是"2", 则JMF 1205a参考图14中的行1412,以便获得对应于该频道识别符 的程序编号"102",然后参考图16中显示的PAT中的行1612,以便 获得对应于程序编号"102"的数据分组ID "502"。 PMT是程序映射 表的縮写,其在具有PAT中指定的数据分组ID的数据分组中被传送。 为了获得PMT, JMF 1205a通过OS 1201的库1201b,向TS解码器 505指出数据分组ID和CPU 514。这里,将指定的数据分组ID是 "502"。然后,TS解码器505根据数据分组ID "502"执行过滤, 并将结果传送给CPU 514。因此,JMF 1205a可以收集PMT数据分 组。图17说明了示意性地显示所收集的PMT信息的例子的表。列 1701描述流类型。列1702描述数据分组ID。在各个流类型中指定的 信息在具有列1702中指定的数据分组ID的数据分组的有效负载中被 传送。列1703描述附加信息。1711 1714中的每一行是一对数据分 组ID和被传送的信息的类型,其被称为基本流(elementary stream)。 行1711是一对流类型"音频"和数据分组ID "5011",其指示音频 数据被存储在具有数据分组ID"5011"的数据分组的有效负载中。JMF 1205a从PMT获得将再现的视频和音频的数据分组ID。参照图17,JMF 1205a从行1711获得音频数据分组ID "5011",并从行1712获 得视频数据分组ID "5012"。
然后,JMF 1205a经由OS 1201的库1201b为TS解码器505提 供一对所获得的音频数据分组ID和作为输出目的地的音频解码器 506,并提供一对视频数据分组ID和作为tr出目的地的视频解码器 508。 TS解码器505根据所提供的数据分组ID和输出目的地执行过 滤。这里,将具有数据分组ID "5011"的数据分组传送给音频解码 器506,并将具有数据分组ID "5012"的数据分组传送给视频解码器 508。音频解码器506对所提供的数据分组执行数模转化,以便经由 扬声器507再现音频。视频解码器508对所提供的数据分组执行数模 转化,以便在显示器509上显示视频。
最后,服务管理器1204将频道识别符提供给库1205中的AM 1205b,以便请求数据广播再现。这里,数据广播再现的意思是提取 包含在MPEG2传输流中的Java程序并使VM 1203执行其。作为一 种用于将Java程序嵌入MPEG2传输流的技术,使用称为DSMCC的 方法,其在MPEG规范ISO/IEC 138181-6中描述。这里省略对DSMCC 的详细说明。DSMCC规范定义了一种方法,用于将包含由计算机使 用的目录和文件的文件系统编码到MPEG2传输流内的数据分组中。 在MPEG2传输流内的数据分组中以AIT的形式传送关于待执行的 Java程序的信息。AIT是应用程序信息表的縮写,其定义在DVB-MHP 规范(正式称为ETSI TS 101 812 DVB-MHP规范V1.0.2)的第十章中 给出。
首先,为了获得AIT,与JMF 1205a的情况中一样,AM 1205b 获得PAT和PMT,以便获得存储AIT的数据分组的数据分组ID。假 定"2"是所提供的频道识别符而且图16中 显示的PAT和图17中显 示的PMT正在被传送,根据与JMF 1205a所遵循的过程相同的过程, AM 1205b获得图17中显示的PMT。随后,AM 1205b从PMT提取 基本流的数据分组ID,该基本流的流类型是"数据"并且其具有作 为附加信息的"AIT"。如图17所示,行1713内的基本流对应于这 种基本流,因此AM 1205b从其获得数据分组ID "5013"。AM 1205b通过OS 1201的库1201b为TS解码器505提供AIT 的数据分组ID和作为输出目的地的CPU514。然后,TS解码器505 根据提供的数据分组ID执行过滤,并将结果传送给CPU514。因此, AM 1205b可以收集AIT的数据分组。图18是示意性地显示所收集 的AIT信息的例子的表。列1801描述Java程序的识别符。根据MHP 规范,这些识别符被定义为应用程序ID,其识别一个Java程序是否 是应该被终端设备500的安全管理器1205f认证的程序。当识别符的 值在0x0至lj0x3fff范围之内时,不需要进行认证,而当识别符的值在 0x4000到0x7fff的范围之内时,需要进行认证。识别符的值在前一 个范围之内的Java程序被称为"未签名程序",而识别符的值在后一 个范围之内的Java程序被称为"签名程序"。列1802描述用于控制 Java程序的控制信息。所述控制信息包含"自动起动"、"呈现"和"杀 死"。"自动起动"的意思是终端设备500自动地迅速执行程序。"呈 现"的意思是不自动执行所述程序。"杀死"的意思是将终止所述程 序。列1803描述用于提取包括DSMCC格式的Java程序的数据分组 ID的DSMCC识别符。列1804描述所述Java程序的程序名。1811 1812中的每一行都是一组关于Java程序的信息。在行1811中定义的 Java程序是一组识别符"301"、控制信息"自动起动"、DSMCC识 别符"1"以及程序名"a/TopXlet"。在行1812中定义的Java程序是 一组识别符"302"、控制信息"呈现"、DSMCC识别符"1"以及程 序名"b/GameXlet"。这里,这两个Java程序具有相同的DSMCC识 别符。这表示文件系统中包含两个Java程序,该文件系统已被根据 相同的DSMCC方法编码。这里,仅为各个Java程序指定四条信息, 而实际中指定更多的信息。详细内容请参考DVB-MHP规范。AM 1205b从AIT找到"自动起动"Java程序,并提取对应的 DSMCC识别符和Java程序名。参照图18, AM 1205b提取行1811 中的Java程序,并获取DSMCC识别符"1 "和Java程序名"a/TopXlet"。然后,AM 1205b使用从AIT获取的DSMCC识别符,从PMT 获取以DSMCC格式存储Java程序的数据分组的数据分组ID。更具 体地,AM 1205b从PMT获取包含在基本流中的数据分组ID,该基63本流的流类型是"数据"并且在附加信息中的DSMCC识别符是匹配的。这里,假定该DSMCC识别符为"1 ",并且PMT如图17所示, 行1714中的基本流满足上述条件。因此,将提取数据分组ID"5014"。AM 1205b通过OS 1201的库1201b,向TS解码器505指出其 中以DSMCC格式嵌入数据的数据分组的数据分组ID,以及作为输 出目的地的CPU 514。这里,提供数据分组ID "5014"。然后,TS 解码器505根据所提供的数据分组ID执行过滤,并将结果传送给CPU 514。因此,AM 1205b可以收集需要的数据分组。AM 1205b根据 DSMCC方法,基于所收集的数据分组重建文件系统,并且将重建的 文件系统存储到主存储单元511。用于从MPEG2传输流的数据分组 中提取数据(例如文件系统),以及将所提取的数据存储到存储单元(例 如主存储单元511)的处理以下被称为下载。图19显示了下载的文件系统的例子。在图中,圆圈表示目录, 方框表示文件,其中,1901是根目录,1902是目录"a", 1903是目 录"b", 1904是文件"TopXet.class"并且1905是文件"GameXletclass"。随后,AM 1205b将一 Java程序传送到VM 1203,所述Java程 序将在下载到主存储单元511中的文件系统之外执行。这里,假定将 执行的Java程序的程序名是"a/TopXlet",通过将".class"附加到上 述Java程序名得到的文件"a/T叩Xletxlass"是将被执行的文件。"/" 是目录和文件名之间的分界符,并且如图19所示,文件1904是将执 行的Java程序。然后,AM 1205b将文件1904传送到VM 1203,这 是因为描述Java程序的识别符的列1801指示未签名的程序,这意谓 着不必请求安全管理器1205f对该Java程序执行认证。VM 1203执行所接收的Java程序。在接收到另一个频道的识别符后,服务管理器1204通过包含在 相同库1205中的每个库,终止视频和音频的再现,并终止执行正在 通过包含在库1205中的每个库执行的Java程序,然后根据新接收的 频道识别符对视频和音频进行再现,并且执行Java程序。Java库1205是存储在ROM 512中的多个Java库的集合。在本实施例中,Java库1205包含JMF 1205a、 AM 1205b、调谐器1205c、 CA 1205d、 PODLibl205e、安全管理器1205f、下载模块1206等等。服务管理器1204和下载模块1206经由包含在库1205中的POD Lib 1205e与头端101执行双向通信。可以通过PODLib 1205e使用 QPSK解调单元502和QPSK调制单元503,经由OS 1201的库1201b 和POD 504来实现双向通信。下载模块1206可以通过该通信从头端101接收代码数据。代码 数据是指包含X.509证书和/或终端设备500的固件的二进制数据。 图50是显示仅描述与本发明有关的一部分的代码数据的概要图。当 接收到代码数据5000时,如果其包含根证书,则下载模块1206提取 该根证书,并将其传送到安全管理器1205f。 5002指示其它数据,例 如固件。AM 1205b从头端101接收关于将被终端设备500存储在辅助存 储单元510中的Java程序的信息。该信息被称为XAIT信息信息。 在头端101和POD 504之间以任意形式传送XAIT信息。只要包含所 需的如XAIT—样的信息,就可以实施本发明,而不管传送格式。图43说明了示意性地显示从头端101获得的XAIT信息的例子 的表。列4301描述Java程序的识别符。列4302描述用于控制Java程 序的控制信息。控制信息包含"自动起动"和"呈现"。"自动起动" 的意思是当终端设备500通电时,自动地执行所述程序,"呈现"的 意思是不自动地执行程序。列4303描述用于提取包括DSMCC格式 的Java(R)程序的数据分组ID的DSMCC识别符。列4304描述Java程 序的程序名。列4305描述Java程序的优先级。行4311和4312中的 每一行是一组关于相应的Java程序的信息。定义在行4311中的Java(R) 程序是一组识别符"0x7001"、控制信息"自动起动"、DSMCC识别 符"1"和程序名"a/PPVlxlet"。可以根据它的Java程序应用程序ID 知道该Java程序是签名程序。这里,仅为各个Java程序指定了五条 信息,但是即使当定义更多条信息时,也可以实现本发明。当接收到XAIT信息时,AM 1205b根据与用于根据AIT信息下 载Java(R)程序的过程相同的过程,将来自MPEG2传输流的文件系统存储到主存储单元511中。之后,AM 1205b在其将所述文件系统存 储入辅助存储单元510之前,向安全管理器105f发送预存储通知。 这时,由根据本发明的安全管理器1205f启动认证操作,但是稍后描 述它的详细内容。当由安全管理器1205f通知允许激活时,AM 1205b 将文件系统存储入辅助存储单元510。然后,AM 1205b把将XAIT 信息与下载的文件系统的存储位置相关联而得到的结果存储到辅助 存储单元510中。图44显示了彼此关联地存储在辅助存储单元510 中的XAIT信息和下载的文件系统的例子。这里,将在OCAP规范中 定义的文件描述为例子。图44中的元素与图43中的相应元素彼此相 同,因此省略对这些元素的说明。列4401存储下载的文件系统的存 储位置。在附图中,由箭头指示这些存储位置。4410是下载的文件 系统,其中包含顶层目录4411、目录"a"4412、目录"b" 4413、文 件"PPVlXletclass " 4414、文件"PPV2Xlet.class " 4415、文件"ocap.hashfile" 4416 4418,文件"ocap .certificate .1" 4419以及文 件"ocap.signaturefile,l" 4420。文件4416 4418是散列文件,其中包含文件名或目录名以及对 应的散列值。图45A、 45B以及45C是显示"ocap.hashfiles"的详细 内容。图45A中的451显示"ocap .hashfile" 4416,图45B中的452 显示"ocap .hashfile" 4417,图45C中的453显示"ocap .hashfile" 4418。 451的"ocap.hashfile"存在于"/" 目录44U中,在列4511 中包含存在于相同目录4411中的"ocap.certificate.l"文件4419、"ocap.signaturefile.l"文件4420、 "a"目录4412以及"b"目录4413。 列4512指示使用哪种散列算法来计算在列4513中描述的每个值。列 4513与列4511中的文件或目录有关,列4513包含通过利用列4512 中指定的散列算法而计算的散列值。当前主要使用的散列算法是 SHA1(安全散列算法l)和MD5(消息摘要5)。这些是用于将具有任意长度的数据转换为固定长度字节值的公知算法,它们具有以下特征 在原始数据被转换之后,不能推算出原始数据;以及它们被用于检查 文件是否已被破坏或篡改。散列值是通过使用散列算法而产生的伪随 机数。当散列算法是SHA1时,散列值的长度是20字节,而当散列66算法是MD5时,散列值的长度变为16字节。关于SHA1和MD5的 详细介绍可以分别参考"FIPS-PUB 186-2 Secure Hash Standard"和 "正TFRFC1321"。这里,在列4511中描述的对应于相应的目录"a" 和"b"的散列值是SHA 1散列值,它们是分别对存在于"a"目录中 的"ocap.hashfile"文件4417和存在于"b"目录中的文件4418进行 计算而得到的。与在451中的"ocap,hashfile"的情况相同,452中的"ocap.hashfile" 包含文件名、散列算法以及存在于相同目录4412中的 "PPVlXlet.dass"文件4414的散列值。类似的,在453中包含文件 名、散列算法以及存在于相同目录4413中的"PPV2Xletclass"文件 4415的散列值。这里,仅描述与本发明有关的属性,因此,关于"ocap.hashfile" 的详细内容,应该参考OCAP规范"OpenCable(TM) Application Platform specification OCAP 1.0 Profile(OC-SP-OCAP1 .O画IF-109-031121)"。文件4419是证书链。图23是显示"ocap.certificate.l"文件4419 的详细结构的示图。231描述"ocap.certificate.x" (x是正整数)的典型 结构,其包含根证书2311、中间证书2312和叶证书2313。它们具有 链关系,例如其中,根证书2311的持有者发行中间证书2312,并且 中间证书2312的持有者发行叶证书2313。注意,根据OCAP规范, 与签名文件"oc叩.signaturefile.x"有关的证书链是具有相同值"x" 的"ocap.certificate.x"。在图44的例子中,对应于"ocap.signaturefile.l" 的证书链是"ocap.certificate.l"。同样,根证书2311、中间证书2312、 叶证书2313被配置为相同的X.509证书格式。作为ITU-T的推荐标 准,X.509证书被广泛用于信息和通信行业中的各个领域,作为一种 证书表现格式的事实上的标准。在图23中,仅说明了三个证书,但 是可以有存在多个中间证书的情况。然而,在这种情况下,这些中间 证书必须处于链状态中,其中它们彼此相关。图24是显示X.509证书的结构的示图。这里,仅说明了说明本 发明所需的属性。关于X.509的详细内容,请参考正TF RFC3280"Internet X.509 Public Key Infrastructure Certificate and CRL Profile,,。 241指示X.509证书的属性区域,242指示X.509证书的签名值。序 列号2411指示识别证书的编号,签名算法2412指示用于确定签名值 242的算法,本次更新日期和时间2413指示当该X.509证书变为有 效时的日期和时间,下次更新日期和时间2414指示当X.509证书期 满时的日期和时间,发行人名称2415指示发行该X.509证书的管理 机构的名称,主体名称2416指示该X.509证书的持有者,公钥2417 指示主体名称2416的公钥,签名值242指示已使用该X.509证书的 发行人的私钥签名(加密)的值。在本实施例中,本次更新日期和时间 2413和下次更新日期和时间2414需要日期和时间的信息,但是,本 次更新日期和时间2413和下次更新日期和时间2414并不总是需要时 间信息。作为使用公钥和私钥的系统,公钥密码系统被广泛用于电子 商务等。在公钥密码系统中,使用不同于加密明文所用的密钥的密钥 来解密密文。由于加密密钥和解密密钥不同,所以不能根据解密密钥 推断出加密密钥。加密密钥对应于私钥,而解密密钥对应于公钥。公 钥密码系统的典型例子包括RSA(Rivest-Shamir-Adleman)和 DSA(Digital Signature Standard)。文件4420是签名文件。图25是显示"ocap. signaturefile. 1"文件 4420的示意图。251指示用于识别关联哪个1509证书的证书识别符, 252指示散列签名算法,253指示通过使用在252中指示的散列签名 算法根据"ocap.hashfik" 4416所计算的签名值。一旦将Java程序存储到辅助存储单元510中,即使当由于频道 改变和终端设备500断电等原因,将Java程序从主存储单元511删 除时,只要AM 1205b己接收到图20中所示的XAIT,就能够在不需 要等待下载的情况下激活该Java程序。也就是说,在图43中,程序"/a/PPVlXlet"的控制信息4302是"自动起动"。因此,在图44的 4311中,当对文件系统的对应于"/a/PPVlXlet"的存储位置4401进 行搜索,然后文件4414被传送到VM 1203时,存储在该文件系统中 的Java程序"PPVlXlet"被激活。接下来,给出安全管理器1205f的描述,其是本发明的主要功能68部件。
安全管理器1205f从服务管理器1204接收指示即将存储图43中 的4304指示的"/a/PPVlXlet"和"/b/PPV2Xlet "的预存储通知。 当接收到该通知时,安全管理器1205f检查Java程序识别符4301的 值以判断其是未签名程序还是签名程序。这里,因为Java程序是签 名程序,所以安全管理器1205f对"/"目录以下的文件系统执行认证。 为了检验文件系统,通过使用图44中说明的ocap.hashfiles (4416 4418)、 ocap.certificate, 1 (4419)和ocap.signaturefile. 1 (4420)来执行认i正。
图26显示用于执行文件系统的认证的安全管理器1205f的组成 部分。
通知接收单元261用于在AM 1205b即将存储文件系统之前接收 预存储通知,以及用于将该事实通知给判断单元262。
判断单元262判断认证结果,其请求散列计算单元263对文件系 统进行散列计算以接收散列值。判断单元262从存在于"ocap.hashfile" 文件中的散列值45.13、 4523和4533提取将比较的值,并检查其与所 接收的散列值是否相配。如果它们不匹配,则判断单元262判断已发 生篡改,并且认证以失败结束。
此外,判断单元262使用证书提取单元265提取每个X.509证书, 并且判断当前时间是否不在每个X.509证书的本次更新日期与时间 2413之前,并且不在每个X,509证书的下次更新日期与时间2414之 后(也就是说,当前时间在每个X.509证书的本次更新日期与时间 2413和下次更新日期与时间2414之间)。从OS 1201的库1201b获得 当前日期和时间。如果有效期不满足"本次更新日期和时间<当前日 期和时间<下次更新日期和时间",则判断单元262判断认证失败。
此外,为了认证证书链,判断单元262请求散列计算单元263对 每个X.509证书的属性区域241进行散列计算。然后,其请求签名值 解密单元264执行用于解密每个X.509证书中包含的签名值242的计 算,并将得到的解密值与通过散列值计算单元263获得的散列值进行 比较,以便检查证书链的状态。如果它们不匹配,则意味着证书不处 于链关系中,并且因此判断认证失败。同时,当值匹配并且已证实证说明书第59/70页
书处于链关系中时,检查所述证书链中的根证书是否包含在终端设备
500的辅助存储单元510中。如果不包含,则判断单元262判断认证 失败,也就是说不能执行比较。
当满足下列所有条件时,判断单元262判断认证成功,所述条件
为(l)没有篡改;(2)处于有效期;(3)证书处于链关系中;(4)根证书匹配。
当被判断单元262请求计算每个文件的散列值时,散列计算单元 263从OS 1201的库1201b中提取每个文件,以对它们执行散列计算, 并将结果值传送给判断单元262。此外,散列计算单元263从证书提 取单元265获得证书链231中的每个X.509证书,并对它们中的每一 个的属性区域241执行散列计算。
由判断单元262请求签名值解密单元264执行用于解密每个 X,509证书或"ocap.signaturefile.x"的签名值的计算。当执行计算以 解密每个X.509证书的签名时,签名值解密单元264从证书提取单元 265获得证书链231中的每个X,509证书,然后执行用于解密它们中 的每一个的签名的计算,并返回结果给判断单元262。
由判断单元262、散列计算单元263、签名值解密单元264请求 证书提取单元265提取证书链231中的每个X.509证书,并且提取并 返回X.509证书。
图27是概述当执行文件系统的认证时,由安全管理器1205f执 行的操作的流程图。基于该流程图,给出当文件系统具有图44中显 示的结构时执行的操作的说明。当从AM 1205b接收到文件系统的预 存储通知时(步骤S271),安全管理器1205f对文件系统的顶层"/"目 录以下的文件系统执行篡改检查(步骤S272)。在篡改检查中,通过比 较散列值,证实在存在于文件系统的每个目录中的文件中未发生破坏 或更改。
图46和图30是步骤S272的详细流程图。首先,如步骤S461 所示,分别为各个文件"ocap,certificate.l"和"ocap.signaturefile, 1" 以及存在于"/"目录中的各个目录"a"和"b"计算散列值。注意, 目录"a"和"b"的散列值是分别根据"/a/ocap,hashfile"文件452和"/b/ocap.hashfile"文件453计算的。在步骤S463,将在步骤S462 计算的散列值与在"/ocap.hashfile"中的4513中描述的每个散列值进 行比较。在步骤S464,如果所计算的散列值中的任何一个与4513中 的散列值不同,则判断已发生篡改(步骤S467)。同时,当所有所计算 的散列值都与4513中的散列值匹配时,安全管理器1205f转移到步 骤S465。在步骤S465,检查是否存在还未完成篡改检查的任何子目 录。在当前阶段,目录"a"和"b"作为"/"目录的子目录而存在, 并且还没有对它们进行篡改检查。因此,需要为这些目录"a"和"b" 执行篡改检査。首先,在步骤S466聚焦于"a"目录,在其中,执行 与为"/"目录执行的处理相同的处理。在为"a"目录完成篡改检查 之后,为"b"目录执行篡改检查。当已经为目录"a"和"b"完成 篡改检查时,聚焦于"/"目录,执行图30中的步骤S301的处理。 在步骤S301中,从作为证书链231的"/ocap.certificates.l"文件4419 提取叶证书2313。然后,在步骤S302,从所提取的叶证书2313中取 出公钥2417。随后,在步骤S303,为"/ocap,hashfile"文件451计算 散列值。同时,在步骤S304,使用存在于"/ocap.certificatefile,l"文 件4419中的叶证书2313中的公钥2417对"/ocap ,signaturefile .1"文 件4420中的签名值242执行解密。在步骤S305,检查在步骤S303 计算的散列值是否等于在步骤S304通过解密签名值而获得的值。如 果这些所计算的值匹配,则能够断定"/"目录以下的文件系统未被 篡改(步骤S306)。如果这些所计算的值不匹配,则能够断定"/"目 录以下的文件系统己被篡改(步骤S307)。注意,已给出了一个例子的 描述,其中,以降序从顶层"/"目录开始向子目录依次执行篡改检 查,但是,本发明并不局限于此。因此,可以以升序,从最低层目录 开始向顶层目录依次执行处理。通过以上处理,获得图27中的步骤 S272的结果。
在步骤S273,当步骤S272中的结果是"已发生篡改"时,判断 认证失败,并且发送关于该事实的通知(步骤S279),之后结束处理。 当步骤S272的结果是"没有篡改"时,执行步骤S274的处理。
接下来,参照图31至图33,给出证书链认证的详细说明(步骤S274)。假定首先对中间证书2312和叶证书2313执行检査,图31中 显示了其流程图。首先,从证书链231中提取中间证书2312和叶证 书2313(步骤S311)。从该提取的叶证书2313中提取本次更新日期与 时间2413、下次更新日期与时间2414以及发行人名称2415(步骤 S312)。对于它们,判断当前日期和时间是否在所述本次更新日期与 时间2413和下次更新日期与时间2414之间,在这期间,证书保持有 效(步骤S313)。如果其超出了证书可以保持有效的时期,则证书链的 认证以失败结束(步骤S319)。同时,当判断其在证书的有效期内时, 提取中间证书2312中的主体名称2416和公钥2417(步骤S314),并 且将中间证书2312的主体名称2416与叶证书2313的发行人名称 2415进行比较,以判断所述中间证书2312和所述叶证书2313是否 处于链关系中(步骤S315)。如果这些证书不处于链关系中,则证书链 的认证失败。同时,当在它们之间存在链关系时,为叶证书2313的 属性区域241计算散列值(步骤S316)。此外,用中间证书2312的公 钥2417来解密叶证书2313中的签名值242(步骤S317)。当完成步骤 S316和步骤S317时,检查在各个步骤中获得的散列值和解密的签名 值是否匹配(步骤S318)。如果它们不匹配,则证书链的认证以失败结 束(步骤S319)。
接下来,在根证书2311和中间证书2312之间执行检査。图32 是显示该处理的流程图。从证书链231提取根证书2311和中间证书 2312(步骤S321),并且为根证书2311和中间证书2312执行与为中间 证书2312和叶证书2313执行的检査相同的处理(步骤S322 步骤 S328)。
当在步骤S328中判断所述值匹配时,单独对根证书2311执行检 査。图33是显示将单独为根证书2311执行的检查的流程图。从在步 骤S321中提取的根证书2311中提取本次更新日期与时间2413、下 次更新日期与时间2414以及发行人名称2415(步骤S331)。对于它们, 判断当前日期和时间是否在所述本次更新日期与时间2413和下次更 新日期与时间2414之间,在这期间,证书保持有效(步骤S332)。如 果其超出了证书可以保持有效的时期,则证书链的认证以失败结束。
72同时,当判断其在证书的有效期内时,为根证书2311的属性区域241 计算散列值(步骤S334)。此外,用根证书2311的公钥2417来解密根 证书2311中的签名值242(步骤S335)。当完成步骤S334和步骤S335 时,检査在相应步骤中获得的散列值和解密的签名值是否匹配(步骤 S336)。如果它们匹配,则证书链的认证成功(S337),而如果它们不匹 配,则证书链的认证以失败结束(步骤S338)。在该点,步骤S274的 处理结束。
根据步骤S274的结果,在步骤S275中执行的处理是不同的。当 步骤4的结果是"证书链的认证失败"时,判断认证已失败并且发送 关于其的通知(步骤S279),然后,结束对所述文件系统的认证。同时, 当"证书链的认证成功时,执行歩骤S276的处理。
接下来,在终端设备500的辅助存储单元510中搜索与 "/ocap.certificate. 1 "文件2119的根证书2311相同的证书(步骤S276)。 当在辅助存储单元510中不存在相同的证书时,在步骤S277判断证 书链231的认证失败,并且发送关于该认证失败的通知(步骤S279), 之后结束处理。同时,当包含根证书2311时,判断文件系统的认证 成功,并且将关于该认证成功的通知发送给AM 1205b(步骤S278)。 参照图28,即使在那之后接收到Java程序的预激活通知(步骤S281), 也结束处理而不执行处理。
在第二实施例中,如果在一定时间之后激活所存储的Java程序, 则不必在激活时再一次执行认证,这是因为在其被存储之前已经对文 件系统执行了认证。
这里,给出了一个例子的描述,其中,图47中显示的"应用程 序描述文件"存在于文件系统中,并且仅仅将存储其中描述的文件。 根据OCAP规范,例如,"应用程序描述文件"是以XML(可扩展标 记语言)格式描述的。图47显示了 "应用程序描述文件"的一个例子。 在图47中,没有图44中显示的"PPV2Xletclass" 4415的描述。因 此,在这种情况下,不包含"PPV2xletxlass" 4415作为存储对象。 在这种情况下,在S462中不为"PPV2xlet,class" 4415计算散列值, 并且因此在S463中,不与"ocap.hashfile"文件4418中描述的4533中的散列值进行比较。在步骤S464,通过约定未作为存储对象包括 在内的文件是在应用程序之外来向S465的处理进行转变。 第三实施例
当包含在文件系统中的Java程序(PPVlXlet.class 4414或PPV 2Xlet.class 4415)在该文件系统被存储之后的某一时段将被激活时,包 含在"/ocap.certificate.l"文件4419中的X.509证书之一的有效期有 可能期满(即,Java程序的激活日期与时间>下次更新日期与时间 2414)。然而,即使在证书链231中包含已经期满的X.509证书,第 二实施例也允许激活Java程序。
因此,通过向第二实施例增加检验功能来实现本实施例,所述检 验功能用于在激活Java程序的时候,检验包含在证书链231中的每 个证书2311、 2312和2313未期满。图26显示了本实施例中的组成 部分。已经在第二实施例中描述了本实施例所需的组成部分261 265,因此这里不再给出其描述。
图27的流程图被图48的流程图所替代,并且增加了图49的流 程图,作为本实施例的流程图。
参照图48,在存储文件系统之前执行的处理(步骤S481到步骤 S487)与在第二实施例中说明的处理(步骤S271到步骤S277)相同,因 此省略对其的说明。如果认证未失败,则处理进入图49中显示的流 程图。当在一定时间之后,通知将激活Java程序PPVlXlet.class 4414 时(步骤S491),从"ocap.certificate.l"文件4419提取每个X.509证 书,即,根证书2311、中间证书2312、叶证书2313(步骤S492)。然 后,按照从叶证书开始到根证书的顺序依次选择所提取的X.509证书 (步骤S493),并且检查当前日期和时间是否在每个所选择的X.509证 书的本次更新日期与时间2413和下次更新日期与时间2414之间(步 骤S494)。如果当前日期和时间不在本次更新日期与时间2413和下次 更新日期与时间2414之间,则判断认证失败,并且发送关于该事实 的通知(步骤S497)。在其它情况中,检查是否已经为所有的兄509证 书执行检查(步骤S495)。如果未对所有的X.509证书完成检查,则处 理返回S493,并且重复后续的处理。同时,当在步骤S495中已经对所有的X.509证书进行了检查,则判断认证成功,并且发送关于该认 证成功的通知(步骤S496),之后结束处理。通过增加图49的流程图 中显示的处理,能够向AM 1205b通知认证失败,从而使得不会激活 有效期已经期满的Java程序。当被安全管理器1205f通知认证失败时, AM 1205b在不将该Java程序传送到JavaVM1203的情况下终止激活。 第四实施例
如第二实施例所述,辅助存储单元510包含作为根证书的X.509 证书,将其与证书链231中的根证书2311进行比较。用新的X.509 证书(以下称为证书替换)替换存储在辅助存储单元510中的根证书, 以防由于黑客(hacking)和其它原因导致证书可靠性降低。从头端101 将新X. 509证书传送到终端设备500,以经由下载模块106将其传送 给安全管理器1205f。
图51A、 51B和51C是示图,每一个显示正在通过安全管理器 1205f替换(证书替换)的辅助存储单元510中的根证书。在本例中, 证书A5101是将被替换的旧的证书,而证书B5102是新证书。图51A 中的51-1显示在执行证书替换之前存储在辅助存储单元510中的证 书,图51B中的51-2显示正在被替换的过程中的证书,图51C中的 51-3显示在执行证书替换之后存储在辅助存储单元510中的证书,
在第二实施例和第三实施例中,即使当在存储Java程序之后执 行证书替换,在激活Java程序时也不考虑新证书。例如考虑以下情 况,当安全管理器1205f响应于预存储通知认证Java程序时,证书链 231中的根证书2311与证书A5101相匹配,并且在用证书B5102替 换证书A5101之后,安全管理器1205f接收到对Java程序的预激活 通知。这时,辅助存储单元510不包括任何与证书链231中的根证书 2311匹配的证书,这意味着该证书不可靠的。然而在第二实施例和 第三实施例中,因为在激活Java程序之前不在根证书之间进行比较, (即,不将证书链231中的根证书2311与证书B5102进行比较),所 以,不对AM 1205b发送关于认证失败的通知。因此,AM 1205b使 得Java程序能够被激活。
因此,在本实施例中,由于证书替换,在激活Java程序时增加比较根证书的功能。
图26显示了本实施例中的组成部分。已经描述过组成部分261
265,因此省略对其的描述。增加证书替换单元266、证书替换指定 单元267和证书接收单元268。
当证书替换指定单元267判断在辅助存储单元510中存储着比所 接收的证书旧的证书时,证书替换单元266用新证书替换该旧证书。 同时,当证书替换指定单元267判断未存储更旧的证书时,证书替换 单元266将新证书存储入辅助存储单元510。
证书替换指定单元267接收由证书接收单元268接收的证书。然 后,通过使用OS 1201的库1201b,其检查存储辅助存储单元510中 的证书,以査看是否存在发行人相同并且比所接收的证书旧的证书。
当下载模块1206从头端101接收到新证书时,证书接收单元268 接收该新证书。当接收到所述证书时,证书接收单元268将其传送到 证书替换单元266和证书替换指定单元267。
另外,在图48的流程图之后增加图52和图53。
图52是执行证书替换时的流程图,而图53是在执行证书替换之 后激活Java程序时的流程图。参照图52,当接收到证书替换请求时(步 骤S521),提取所接收的证书的发行人名称(步骤S522)。检查在终端 设备500的辅助存储单元510中是否存在需要被替换的旧的证书(步 骤S523),并且仅当存在旧的证书时,删除该证书。然后,将所接收 的证书存储入辅助存储单元510(步骤S525)。当在一定时间之后接收 到激活Java程序的通知时(步骤S531),在辅助存储单元510中搜索 与证书链231中的根证书2311匹配的证书(步骤S532),如果存在(步 骤S533),判断认证成功并且发送关于该事实的通知(步骤S534)。如 果不存在(步骤S533),则判断认证失败并且发送关于该事实的通知 (步骤S535)。注意,在步骤S534判断认证成功之前,还能够在检验 证书链中的每个X.509证书满足"本次更新日期与时间<当前日期和 时间<下次更新日期与时间"之后,推断出认证成功。
此外,除检査根证书是否匹配之外,在S532之前,还能够在执 行图31 图33中显示的检查以查看证书链中的证书是否处于链关系之后,判断认证是成功的/不成功的。
此外,以上描述了一种情况,其中,基于发行人名称指定应该替 换的证书,但是还可以基于另一个属性值(例如主体名称)来指定证 书。
第五实施例
当包含在文件系统中的Java程序(PPVlXletclass 4414或PPV 2Xletxlass 4415)在该文件系统被存储之后的某一时段将被激活时,存 在一种情况,其中,由于除了包含在"/ocap.certificate.l"文件4419 中的任何X.509证书的有效期期满以及根证书被替换以外的其它原 因证书被撤销。本配置允许即使当存在撤销证书时也可以激活Java 程序。
这里,CRL(证书撤销列表)是公知的证书的撤销者。图54是显示 CRL的结构的示图。这里,仅说明用于说明本发明所需的属性。关 于CRL的详细内容,请参考正TF RFC 3280"Internet X. 509 Public Key Infrastructure Certificate and CRLProfile"。 541指示CRL的属性区域, 542指示签名值543的签名算法,543指示CRL的签名值。发行人名 称5411指示该CRL的发行人,本次更新日期与时间5412指示CRL 变得有效时的日期与时间,下次更新日期和时间5413指示当CRL的 有效期期满时的日期与时间,撤销证书列表5414指示关于撤销的 X.509证书的信息。图55是显示撤销证书列表5414的结构的示图。 这里,也仅说明用于说明本发明所需的属性。关于多个撤销的X.509 证书的信息被存储在撤销证书列表5414中。在图55的例子中,包含 用于唯一识别证书的序列号5511以及当"证书A" 551被撤销时的 曰期与时间5512,作为关于撤销的"证书A" 551的信息。其它撤销 的证书与551相同。
图56是包含CRL的文件系统的典型结构。"〃'目录561、 "a" 目录562、 "SimpleXlet.class "文件563、 "ocap.hashfile"文件564 565、 "ocap.certiflcate.l"文件566、 "ocap.signaturefile.l"文件567、 "ocap.crl.2"文件568以及"ocap.certificate.2"文件569被存储在其 中。不包含CRL的文件系统的认证如第一实施例所述。因此,在本
77实施例中,聚焦于以crl格式构造的"ocap.crl.2"文件568以及作为 该文件的证书链的"ocap.certificate,2"文件569。注意,根据OCAP 规范,"OCAP.crl.x"的证书链是"OCAP.certificate.x"。在图56的例 子中,"ocap.crl.2"的证书链是"ocap.certificate.2"。
图59是显示"ocap.hashfile"文件564的概要图。591显示 ocap.hashfile 564的详细内容。591中的ocap .hashfile存在于"/"目 录561中,其包含与存在于相同目录561中的"ocap,certificate.l"文 件566、 "ocap.signatrefile.l"文件567、 "a"目录562、 "ocap.crl.2" 文件568以及"ocap.certificate.2"文件569中每一个有关的散列值。
图57是用于说明CRL的认证的流程图。以下对一个例子进行描 述,其中,文件系统具有图56中显示的结构。首先,从CRL提取本 次更新日期与时间5412和下次更新日期与时间5413(步骤S571),并 且检查当前日期和时间是否在所述本次更新日期与时间5412和下次 更新日期与时间5413之间(步骤S572)。如果不在之间,则判断该CRL 无效(步骤S577)。如果当前日期和时间在它们之间,则计算属性区域 541的散列值,以便检验"ocap.crl.2"文件568的签名值(步骤S573)。 同时,从"ocap.certificate,2"文件569提取叶证书2313的公钥2417, "ocap.certificate.2"文件569是证书链(步骤S574),并且用所提取的 公钥2417解密"ocap.crl.2"文件568的签名值543(步骤S575)。然 后,检査在步骤S573获得的散列值是否等于在步骤S575获得的解密 值(步骤S576)。如果它们不相等,则判断CRL无效(步骤S577)。如 果它们相等,参照图58,对作为证书链的"ocap.certificate.2"文件 569执行认证(步骤S581)。用于认证证书链的方法与图31至图33所 示的方法相同,因此这里不再描述。随后,判断证书链的认证是否成 功(步骤S582),如果认证失败,则判断该CRL无效(步骤S586)。同 时,如果认证成功,则在辅助存储单元510中搜索与根证书相同的证 书(步骤S583)。这里,如果没有匹配的根证书,则判断认证失败并且 该CRL无效(步骤S586),而如果包含匹配的根证书,则判断认证成 功并且CRL有效(步骤S585)。
下面描述对以下问题的解决方案,所述问题为,尽管根据CRL证
78书被撤销,但是还激活Java程序。为了支持该方案,为本实施例增 加功能,所述功能用于当发出激活该Java程序的通知时,判断用于 认证Java程序的证书是否为CRL中的撤销证书。
图26显示了本实施例中的组成部分。除了增加了功能的262和 未描述过的269之外,不再描述已在上面描述的组成部分。
判断单元262还能够认证CRL,其请求证书撤销指定单元269 指定将通过CRL撤销的证书。然后,当通知接收单元261接收到与 由证书撤销指定单元269指定的撤销证书有关的Java程序的预激活 通知时,判断单元262判断认证失败。同时,当在判断单元262认证 CRL失败并且因此判断该CRL无效的状态中,通知接收单元261 接收到Java程序的预激活通知时,判断单元262判断认证成功。
当判断单元262判断CRL的认证成功时,证书撤销指定单元269 指定由证书提取单元265提取的哪一个X.509证书是撤销证书。
增加图60和图61作为流程图。根据这些流程图给出下列描述。 假定发出了对图44所示的文件系统的预存储通知,开始图48的流程 图中显示的处理,并且在适当的时候完成步骤S487的处理。假定然 后接受到对图56中显示的另一个文件系统的预存储通知,在完成图 57的流程图中显示的处理之后,执行步骤S6001至步骤S6007。步骤 S6001至步骤S6007的处理与步骤S481至步骤S487的处理相同。当 达到步骤S6008并且如果"ocap.crl.2"文件563的认证(图57和图58 的流程图)成功时,关于包含在该文件中的撤销证书的信息被写入撤 销证书的数据库。图62是显示撤销证书的数据库的概要图。发行人 名称存储在列621,证书序列号存储在列622,撤销的日期和时间存 储在列623。这里,当接收到"PPVlXletxlass" 4414的预激活通知 时(步骤S611),检査在撤销证书的数据库中是否包含 "ocap.certificate.l"文件4419的证书链231中包含的任何X.509证 书(步骤S613)。如果存在任何证书,则判断认证失败并且发送关于此 的通知(步骤S616)。同时,当没有可应用的证书时,对整个证书链执 行检查(步骤S614),并且发送判断认证成功的通知(步骤S615)。通过 以上处理,对于所述文件系统,通过判断文件的认证是失败的,能够解决激活不应被激活的Java程序的问题,其中,所述文件系统是指 其证书在检验时是有效的,而在激活Java程序时已通过CRL转变为 已撤销的文件系统。
注意,在第一至第五实施例中,当接收到Java程序的预激活通 知时,还能够通过使用每个目录中的"ocap.hashfile"执行检验以査 看文件系统的树结构是否正确。
此外,为了简化说明,在证书链中仅存在一个中间证书,但是有 可能存在多个中间证书。然而,当对它的证书链执行认证时,所有的 中间证书都必需处于链关系中。
此外,以所述的顺序描述了下列处理,但是本发明并不局限于该 次顺检查存在/没有篡改;认证证书链;检査以查看辅助存储单元 是否包含与证书链中的根证书相同的根证书。
此外,对于文件系统的存储,安全管理器1205f可以使用OS的 库1201b存储其。同样,第一至第五实施例还可应用于以下情况,其 中,在文件系统的顶层目录"/"提供"应用程序描述文件",并且作 为其内容,仅指示文件系统的一部分作为将存储的文件。因此,如果 仅处理将存储的文件也没问题。
此外,以上将程序描述为存储对象,但是,除程序以外的数据也 可以作为存储对象,这意味着第一至第五实施例同样适用于数据。
此外,存在一种可能性,其中,多于一个"ocapxertificate.x"对 应于"ocap.signaturefile.x ",在这种情况下,需要至少 一 个 "ocap.certificate,x"文件的认证成功。
同样,"ocap.certificate.x "已被作为典型的证书链来表示, "ocap.hashfile"已被作为典型的具有散列值的文件来表示,并且 "ocap.signaturefile.x"已被作为用于检査"/"目录中的"ocap .hashfile" 是否已被篡改的典型文件来表示,但是本发明并不局限于这些文件 名。
此外,当认证失败时,可以在重下载之后再次执行认证。 此外,当认证失败时,可以删除存储的程序以及用于认证的证书 链、签名文件、散列文件,以便保留足够的存储区域。这里,给出了一个例子的描述,其中,组成程序的文件系统具有
图63中显示的结构,并且没有用于认证的文件的描述,如同在图64 中显示的"应用程序描述文件"的情况。图63中显示的6311至6320 相当于图44中显示的4411至4420。 6321表示描述将被存储的文件 的"应用程序描述文件"。在图64中的"应用程序描述文件"中,没 有认证所需的"ocap.certificate.l" 6319、 "ocap.signaturefile.l" 6320 以及"ocap.hashfile" 6317的描述。在本例中,如果仅仅如图64所示 存储文^^,则不会存储执行认证所需的文件。因此,在第三、第四以 及第五实施例中提出的认证不能在激活的时候执行。当将激活存储的 程序,并且图63中显示的文件(其显示存储该程序之前的文件)准备 好下载时,存储的文件可以被用作构成程序的文件并且用于认证的文 件可以被再次下载以用于认证。
然而,可以出现以下情况,其中,图63中显示的文件(其显示存 储程序之前的文件)不能被下载。因此,可以存储用于在程序激活时 执行的认证的认证所需的文件,即使它们不在"应用程序描述文件" 中被描述。
尽管以上描述了本发明的一些典型实施例,但是,本领域的技术 人员将容易地意识到,在实质上不脱离本发明的新的教义和优点的情 况下,可以对典型实施例实施各种变形。因此,所有这些变形都应包 含在本发明的范围内。
工业实用性
根据本发明的程序数据文件存储方法和认证程序执行方法适用 于程序执行设备,例如数字电视接收器和移动电话,其下载并执行程序。
8权利要求
1.一种程序数据文件存储方法,包括第一步骤,用于认证包含在第一传输流中的第一程序的数据文件中的每一个,以及根据与所述第一程序的数据文件中的每一个的存储有关的信息,将所述第一程序的已认证的数据文件中的每一个存储到广播接收器中;第二步骤,用于接收与包含在第二传输流中的第二程序的数据文件中的每一个的存储有关的信息;以及当所述第二程序的数据文件包含不同于在存储所述第一程序时已认证的、所述第一程序的数据文件中的任何一个的数据文件时执行下列步骤第三步骤,用于检验第一散列值和第二散列值是否一致,该第一散列值是根据包含在所述第二程序中的所述不同的数据文件而计算的,该第二散列值存储在对应于包含在所述第二程序中的所述不同的数据文件的散列文件中;第四步骤,用于检验包含在所述第二程序中的证书文件是否有效;第五步骤,用于检验解密值与第三散列值是否一致,所述解密值是通过使用所述第二程序的证书文件中的叶证书的公钥,来解密包含在所述第二程序中的签名文件的签名值而获得的,而所述第三散列值是根据位于所述第二程序的顶层目录中的散列文件计算的;以及第六步骤,当满足下列条件时,认证所述第二程序,并根据与所述第二程序的数据文件中的每一个的存储有关的信息存储所述已认证的第二程序,所述条件为在所述第三步骤中,检验到所述第一散列值和所述第二散列值一致;在所述第四步骤中,检验到包含在所述第二程序中的证书文件有效;以及在所述第五步骤中,检验到通过解密包含在所述第二程序中的签名文件的签名值而获得的所述解密值和根据位于所述第二程序的顶层目录中的散列文件计算的所述第三散列值一致,其中,当所述第二程序具有目录结构时,包含在所述第二程序的每个目录中的每个数据文件与对应于所述每个数据文件的散列文件位于相同的目录中,以及对包含所述包含在所述第二程序中的所述不同的数据文件的每个目录执行所述第三步骤。
2. —种程序数据文件存储方法,包括第一步骤,用于认证包含在第一传输流中的第一程序的数据文件 中的每一个,以及根据与所述第一程序的数据文件中的每一个的存储 有关的信息,将所述第一程序的已认证的数据文件中的每一个存储到 广播接收器中;第二步骤,用于接收与包含在第二传输流中的第二程序的数据文件中的每一个的存储有关的信息;以及当所述第二程序的数据文件包含不同于在存储所述第一程序时 已认证的、所述第一程序的数据文件中的任何一个的数据文件时执行下列步骤第三步骤,用于检验第一散列值和第二散列值是否一致,该第一 散列值是根据包含在所述第二程序中的所述不同的数据文件而计算 的,该第二散列值存储在对应于包含在所述第二程序中的所述不同的 数据文件的散列文件中;第四步骤,用于检验包含在所述第二程序中的证书文件是否有效;第五步骤,用于检验解密值与第三散列值是否一致,所述解密值 是通过使用所述第二程序的证书文件中的叶证书的公钥,来解密包含 在所述第二程序中的签名文件的签名值而获得的,而所述第三散列值 是根据位于所述第二程序的顶层目录中的散列文件计算的;以及第六步骤,当满足下列条件时,认证所述第二程序,并根据与所 述第二程序的数据文件中的每一个的存储有关的信息存储所述已认 证的第二程序,所述条件为在所述第三步骤中,检验到所述第一散 列值和所述第二散列值一致;在所述第四步骤中,检验到包含在所述第二程序中的证书文件有效;以及在所述第五步骤中,检验到通过解 密包含在所述第二程序中的签名文件的签名值而获得的所述解密值 和根据位于所述第二程序的顶层目录中的散列文件计算的所述第三 散列值一致,其中,在所述第六步骤中,当满足下列条件中的至少一个时,不 存储所述第二程序,所述条件为在所述第三步骤中,未检验到所述 第一散列值和所述第二散列值一致;在所述第四步骤中,未检验到包 含在所述第二程序中的证书文件有效;以及在所述第五步骤中,未检 验到通过解密包含在所述第二程序中的签名文件的签名值而获得的 所述解密值和根据位于所述第二程序的顶层目录中的散列文件计算 的所述第三散列值一致。
3. —种程序数据文件存储方法,包括第一步骤,用于认证包含在第一传输流中的第一程序的数据文件 中的每一个,以及根据与所述第一程序的数据文件中的每一个的存储 有关的信息,将所述第一程序的已认证的数据文件中的每一个存储到 广播接收器中;第二步骤,用于接收与包含在第二传输流中的第二程序的数据文 件中的每一个的存储有关的信息;以及当所述第二程序的数据文件包含不同于在存储所述第一程序时 己认证的、所述第一程序的数据文件中的任何一个的数据文件时执行 下列步骤第三步骤,用于检验第一散列值和第二散列值是否一致,该第一 散列值是根据包含在所述第二程序中的所述不同的数据文件而计算 的,该第二散列值存储在对应于包含在所述第二程序中的所述不同的 数据文件的散列文件中;第四步骤,用于检验包含在所述第二程序中的证书文件是否有效;第五步骤,用于检验解密值与第三散列值是否一致,所述解密值 是通过使用所述第二程序的证书文件中的叶证书的公钥,来解密包含在所述第二程序中的签名文件的签名值而获得的,而所述第三散列值 是根据位于所述第二程序的顶层目录中的散列文件计算的;以及第六步骤,当满足下列条件时,认证所述第二程序,并根据与所 述第二程序的数据文件中的每一个的存储有关的信息存储所述已认 证的第二程序,所述条件为在所述第三步骤中,检验到所述第一散 列值和所述第二散列值一致;在所述第四步骤中,检验到包含在所述 第二程序中的证书文件有效;以及在所述第五步骤中,检验到通过解 密包含在所述第二程序中的签名文件的签名值而获得的所述解密值 和根据位于所述第二程序的顶层目录中的散列文件计算的所述第三 散列值一致,其中,在所述第六步骤中,当所述第二程序的数据文件包括与所 述第一程序的数据文件中的任意一个相同的数据文件时,不将包含在 所述第二程序中的所述相同的数据文件存储到所述广播接收器中。
4. 一种程序数据文件存储方法,包括第一步骤,用于认证包含在第一传输流中的第一程序的数据文件 中的每一个,以及根据与所述第一程序的数据文件中的每一个的存储 有关的信息,将所述第一程序的已认证的数据文件中的每一个存储到 广播接收器中;第二步骤,用于接收与包含在第二传输流中的第二程序的数据文 件中的每一个的存储有关的信息;以及当所述第二程序的数据文件包含不同于在存储所述第一程序时 已认证的、所述第一程序的数据文件中的任何一个的数据文件时执行 下列步骤第三步骤,用于检验第一散列值和第二散列值是否一致,该第一 散列值是根据包含在所述第二程序中的所述不同的数据文件而计算 的,该第二散列值存储在对应于包含在所述第二程序中的所述不同的 数据文件的散列文件中;第四步骤,用于检验包含在所述第二程序中的证书文件是否有效;第五步骤,用于检验解密值与第三散列值是否一致,所述解密值 是通过使用所述第二程序的证书文件中的叶证书的公钥,来解密包含 在所述第二程序中的签名文件的签名值而获得的,而所述第三散列值 是根据位于所述第二程序的顶层目录中的散列文件计算的;以及第六步骤,当满足下列条件时,认证所述第二程序,并根据与所 述第二程序的数据文件中的每一个的存储有关的信息存储所述已认 证的第二程序,所述条件为在所述第三步骤中,检验到所述第一散 列值和所述第二散列值一致;在所述第四步骤中,检验到包含在所述 第二程序中的证书文件有效;以及在所述第五步骤中,检验到通过解 密包含在所述第二程序中的签名文件的签名值而获得的所述解密值 和根据位于所述第二程序的顶层目录中的散列文件计算的所述第三 散列值一致,其中,在所述第六步骤中,当所述第二程序的数据文件包括与所 述第一程序的数据文件中的任意一个相同的数据文件时,用包含在所 述第二程序中的所述相同的数据文件重写所述第一程序的所述数据 文件并将其存储到所述广播接收器中。
5. —种程序存储设备,包括第一存储单元,用于认证包含在第一传输流中的第一程序的数据文件中的每一个,以及根据与所述第一程序的数据文件中的每一个的存储有关的信息,存储所述第一程序的已认证的数据文件中的每一 个.存储信息接收单元,用于接收与包含在第二传输流中的第二程序 的数据文件中的每一个的存储有关的信息;以及下列单元,当所述第二程序的数据文件包含不同于在存储所述第 一程序时已认证的、所述第一程序的数据文件中的任何一个的数据文 件时执行其操作第一检验单元,用于检验第一散列值和第二散列值是否一致,该 第一散列值是根据包含在所述第二程序中的所述不同的数据文件而 计算的,该第二散列值存储在对应于包含在所述第二程序中的所述不同的数据文件的散列文件中;第二检验单元,用于检验包含在所述第二程序中的证书文件是否有效;第三检验单元,用于检验解密值与第三散列值是否一致,所述解 密值是通过使用所述第二程序的证书文件中的叶证书的公钥,来解密 包含在所述第二程序中的签名文件的签名值而获得的,而所述第三散 列值是根据位于所述第二程序的顶层目录中的散列文件计算的;以及第二存储单元,当满足下列条件时,认证所述第二程序,并根据 与所述第二程序的数据文件中的每一个的存储有关的信息存储所述 已认证的第二程序,所述条件为所述第一检验单元检验到所述第一 散列值和所述第二散列值一致;所述第二检验单元检验到包含在所述 第二程序中的证书文件有效;以及,所述第三检验单元检验到通过解密包含在所述第二程序中的签名文件的签名值而获得的所述解密值 和根据位于所述第二程序的顶层目录中的散列文件计算的所述第三 散列值一致,其中,当所述第二程序具有目录结构时,包含在所述第二程序的每个目录中的每个数据文件与对应于所 述每个数据文件的散列文件位于相同的目录中,以及所述第一检验单元用于对包含所述包含在所述第二程序中的所 述不同的数据文件的每个目录执行检验。
6. —种程序存储设备,包括第一存储单元,用于认证包含在第一传输流中的第一程序的数据文件中的每一个,以及根据与所述第一程序的数据文件中的每一个的存储有关的信息,存储所述第一程序的已认证的数据文件中的每一 个.存储信息接收单元,用于接收与包含在第二传输流中的第二程序 的数据文件中的每一个的存储有关的信息;以及下列单元,当所述第二程序的数据文件包含不同于在存储所述第 一程序时已认证的、所述第一程序的数据文件中的任何一个的数据文件时执行其操作第一检验单元,用于检验第一散列值和第二散列值是否一致,该 第一散列值是根据包含在所述第二程序中的所述不同的数据文件而 计算的,该第二散列值存储在对应于包含在所述第二程序中的所述不 同的数据文件的散列文件中;第二检验单元,用于检验包含在所述第二程序中的证书文件是否 有效;第三检验单元,用于检验解密值与第三散列值是否一致,所述解 密值是通过使用所述第二程序的证书文件中的叶证书的公钥,来解密 包含在所述第二程序中的签名文件的签名值而获得的,而所述第三散列值是根据位于所述第二程序的顶层目录中的散列文件计算的;以及 第二存储单元,当满足下列条件时,认证所述第二程序,并根据 与所述第二程序的数据文件中的每一个的存储有关的信息存储所述 已认证的第二程序,所述条件为所述第一检验单元检验到所述第一 散列值和所述第二散列值一致;所述第二检验单元检验到包含在所述 第二程序中的证书文件有效;以及,所述第三检验单元检验到通过解 密包含在所述第二程序中的签名文件的签名值而获得的所述解密值 和根据位于所述第二程序的顶层目录中的散列文件计算的所述第三 散列值一致,,其中,当满足下列条件中的至少一个时,所述第二存储单元不存 储所述第二程序,所述条件为在所述第一检验单元中,未检验到所 述第一散列值和所述第二散列值一致;所述第二检验单元未检验到包 含在所述第二程序中的证书文件有效;以及,所述第三检验单元未检 验到通过解密包含在所述第二程序中的签名文件的签名值而获得的 所述解密值和根据位于所述第二程序的顶层目录中的散列文件计算 的所述第三散列值一致。
7. —种程序存储设备,包括第一存储单元,用于认证包含在第一传输流中的第一程序的数据 文件中的每一个,以及根据与所述第一程序的数据文件中的每一个的存储有关的信息,存储所述第一程序的已认证的数据文件中的每一 个.存储信息接收单元,用于接收与包含在第二传输流中的第二程序 的数据文件中的每一个的存储有关的信息;以及下列单元,当所述第二程序的数据文件包含不同于在存储所述第 一程序时已认证的、所述第一程序的数据文件中的任何一个的数据文 件时执行其操作第一检验单元,用于检验第一散列值和第二散列值是否一致,该 第一散列值是根据包含在所述第二程序中的所述不同的数据文件而 计算的,该第二散列值存储在对应于包含在所述第二程序中的所述不 同的数据文件的散列文件中; -第二检验单元,用于检验包含在所述第二程序中的证书文件是否 有效;第三检验单元,用于检验解密值与第三散列值是否一致,所述解 密值是通过使用所述第二程序的证书文件中的叶证书的公钥,来解密 包含在所述第二程序中的签名文件的签名值而获得的,而所述第三散 列值是根据位于所述第二程序的顶层目录中的散列文件计算的;以及第二存储单元,当满足下列条件时,认证所述第二程序,并根据 与所述第二程序的数据文件中的每一个的存储有关的信息存储所述 已认证的第二程序,所述条件为所述第一检验单元检验到所述第一 散列值和所述第二散列值一致;所述第二检验单元检验到包含在所述 第二程序中的证书文件有效;以及,所述第三检验单元检验到通过解 密包含在所述第二程序中的签名文件的签名值而获得的所述解密值 和根据位于所述第二程序的顶层目录中的散列文件计算的所述第三 散列值一致,其中,当所述第二程序的数据文件包括与所述第一程序的数据文 件中的任意一个相同的数据文件时,所述第二存储单元不将包含在所 述第二程序中的所述相同的数据文件存储到所述广播接收器中。
8. —种程序存储设备,包括第一存储单元,用于认证包含在第一传输流中的第一程序的数据文件中的每一个,以及根据与所述第一程序的数据文件中的每一个的存储有关的信息,存储所述第一程序的已认证的数据文件中的每一 个.存储信息接收单元,用于接收与包含在第二传输流中的第二程序 的数据文件中的每一个的存储有关的信息;以及下列单元,当所述第二程序的数据文件包含不同于在存储所述第 一程序时已认证的、所述第一程序的数据文件中的任何一个的数据文 件时执行其操作第一检验单元,用于检验第一散列值和第二散列值是否一致,该 第一散列值是根据包含在所述第二程序中的所述不同的数据文件而 计算的,该第二散列值存储在对应于包含在所述第二程序中的所述不 同的数据文件的散列文件中;第二检验单元,用于检验包含在所述第二程序中的证书文件是否 有效;第三检验单元,用于检验解密值与第三散列值是否一致,所述解 密值是通过使用所述第二程序的证书文件中的叶证书的公钥,来解密 包含在所述第二程序中的签名文件的签名值而获得的,而所述第三散 列值是根据位于所述第二程序的顶层目录中的散列文件计算的;以及第二存储单元,当满足下列条件时,认证所述第二程序,并根据 与所述第二程序的数据文件中的每一个的存储有关的信息存储所述 已认证的第二程序,所述条件为所述第一检验单元检验到所述第一 散列值和所述第二散列值一致;所述第二检验单元检验到包含在所述 第二程序中的证书文件有效;以及,所述第三检验单元检验到通过解 密包含在所述第二程序中的签名文件的签名值而获得的所述解密值 和根据位于所述第二程序的顶层目录中的散列文件计算的所述第三 散列值一致,其中,当所述第二程序的数据文件包括与所述第一程序的数据文 件中的任意一个相同的数据文件时,所述第二存储单元用包含在所述 第二程序中的所述相同的数据文件重写所述第一程序的所述数据文件并将在所述第二程序中包括的所述相同的数据文件存储到所述广 播接收器中。
全文摘要
传统上,当已升级程序的版本时,当前存储的程序的整体需要被删除,以便被新程序替换,并且当激活该新程序时,需要再次对该新程序进行认证。然而,由于即使当仅仅改变一部分该程序时,也需要存储并认证整个程序,这会消耗时间并导致响应速度下降。为了解决该问题,当存储新程序时,本发明提取新程序和当前存储的旧程序之间的差别,并且在仅对这些差别执行认证后存储新程序。
文档编号G06F9/445GK101668166SQ20091017329
公开日2010年3月10日 申请日期2004年12月15日 优先权日2003年12月18日
发明者寺尾聪, 楠堂忠夫, 盐见隆一 申请人:松下电器产业株式会社