提供安全控制软件或固件代码下载和接收下 载代码的计算装置的安全操作的方法和装置 【发明领域】
本发明涉及向接收计算装置、例如机顶终端,发送软件或固件编程代码的领域。本发明还涉及以一种安全方式控制向接收计算装置下载此类代码、使得代码中不允许有任何的病毒或更动、而且该代码不能自由地转发给其它的计算装置的领域。本发明还涉及执行下载程序代码的计算装置的安全操作、以防止计算装置被用来越权接入一些服务的领域。本发明还涉及安全操作计算装置、以便防止执行可能损害计算装置或导致其以越权方式工作的病毒或其它代码的领域。发明背景
在当今社会中,由于数据网络,例如公众电话网、万维网以及有线和卫星电视的出现,通信业有了极大的进展。特别是有了万维网和其他计算机网络,消息以及甚至可执行的软件都可容易地发送到远处。软件的电子传送可用来进行这种软件的商业分销、或者用来将购买人的或连接到网络地数据终端的现有软件升级。
虽然这种容易的接入软件和其他信息非常有价值,也很有优势,但对安全的关注也日益增强。计算网络主要是互联网的普遍问题就是会破坏数据以及损害计算机系统工作的计算机病毒的传播。
另一个问题就是软件的越权共享和复制。这种复制对于投入了重大资源来创建该软件的版权所有人来说可真是代价昂贵。
在有线电视系统方面,这种关注也日益增强。在有线电视系统中,机顶终端或机顶盒通常是由有线电视公司提供给它的用户的。机顶终端连接在例如有线系统的输出端和用户的电视机或电脑之间。这样机顶终端就可接收来自有线系统运营商的前端设备的有线电视信号。
机顶终端可实现各种功能。例如,机顶终端可控制用户对有线网络一些特殊频道的接入。如果用户没有预定“收费频道”,机顶终端可限制用户接入那些频道。另一方面,机顶终端允许用户接入他已预定了的那些收费频道。
另外,当前还有一种趋势是将各种可用的数据网络结合在一起,这样每个家庭或办公室只需对信息高速公路有单一的连接即可。这种趋势的一个实例就是有线电视网络在不断发展其提供接入互联网的能力。在这种系统中,机顶终端可以是一个带调制解调器的增强终端,既可连接到互联网,又可连接到有线电视信号。
机顶终端通常包括由其中央处理器执行的软件和固件,在执行时使终端能够完成所调用的各种功能。关于机顶终端的软件和固件,有至少四个主要的关注方面。
首先,需要防止用户改变机顶盒中的软件和固件,以免用户越权接入他未付费的有线网络提供的服务。有线系统运营商的商业生存能力取决于能否防止对系统服务的越权和未付费的接入。这类服务实际上可包括任何电子数据服务,例如,多个电视频道,付费频道,按画面计费的节目,视频点播节目,互联网接入,电子邮件,电话等。
有关的一个问题还在于:改变机顶装置中的软件和固件的越权试图可能会损坏终端或使其失效。这是有线系统运营商特别关注的问题,如果机顶盒的所有权由有线系统运营商保留的话,而现在常常就是这种情况。另外,也会对机顶盒制造商的信誉造成损坏,特别是如果机顶盒的失效原因、即违法对机顶盒作改动、被成功地隐瞒的话。
对机顶盒的软件和固件作非法改动也会对有线系统本身产生不利的影响。这种不利的影响甚至会扩大到致使部分或全部有线系统失效。这一后果可能是有意的或无意的。不论那种情况,有线系统的运营商都会由于有线系统的损坏或客户的不满意而受到严重伤害。
第二,应保护机顶盒的软件和固件,使之不能有意和恶意引入会损害机顶终端功能的计算机病毒。在机顶终端用来连接到互联网时,这一点特别重要。
第三,由于有线系统的发展、或者由于用户要求附加的服务或取消不再需要的服务,需要对机顶盒的软件和固件进行定期升级或更改。对机顶终端作这种更改的优选装置就是通过有线网络本身下载已升级或更改的软件或固件。这就不需要技术员去拜访机顶终端的所在位置。但这就需要在新的软件或固件被下载时提供某种安全性,使其在被接收和存储在机顶终端中时不被更改。
第四,机顶终端的软件和固件通常是专有的并且代表了大笔投资。因此,应防止机顶终端的软件和固件被非法复制,例如,用在另一个机顶终端上。
因此,技术上需要一种方法和系统、它能安全下载软件和固件、特别是对有线电视系统的机顶终端,以确保软件或固件是在授权的、没有更改或引入病毒的情况下被发送的。技术上还需要一种方法和系统、它防止由终端存储和执行的软件或固件被更改从而越权接入一些服务。技术上还需要一种方法和系统、它防止非法复制软件或固件供越权使用,特别是从机顶终端非法复制软件或固件。发明概述
本发明的一个目的就是满足上述和其他需要。具体的说,本发明的一个目的就是提供一种方法和系统、用以安全下载软件和固件、特别是对有线电视系统的机顶终端、以防止在传输时对所述软件和固件的越权更改或将计算机病毒引入所述软件和固件。本发明的另一目的是提供一种方法和系统、用于防止越权复制软件和固件,特别是对有线电视系统的机顶终端中的软件和固件的越权复制。
在本说明书中将阐述本发明的其他目的,优点和新颖的特征,本专业的技术人员通过阅读这些材料或实践本发明可以领会或了解这些目的、优点和特征。本发明的目的和优点可以通过所附权利要求阐述的装置达到。
为了达到上述和其他目的,可以将本发明描述为向计算装置安全传送编程代码的系统。在主要的实施例中,本发明的系统包括:连接到输入数据线的主处理器,用来接收编程代码块,每个块都与从代码块的内容中导出的验证签名相关联;存储编程代码块的存储单元;以及安全处理器,用以独立地为每个编程代码块计算验证签名并将计算的验证签名与同所述代码块一起传送的验证签名对比。如果计算的验证签名不能与传送的验证签名一致,安全处理器就采取适当的行动,例如从存储器中清除未验证的代码块,或禁用计算装置。
可以提供连接到安全处理器的第二个隔离的存储单元来存储安全处理器计算验证签名所需的数据。安全处理器可连续地再验证存储单元存储的编程代码块以确保它们的连续合法性。
主处理器,存储单元和安全处理器都由存储器总线互连。为了避免主处理器和安全处理器之间的冲突,安全处理器最好只在主处理器不用存储器总线的总线周期时访问存储单元。提供一个存储器总线控制器来控制这种安排并控制主处理器和安全处理器接入到存储器总线。
存储单元最好包括中间存储器和静态存储器。主处理器最初将下载的代码块写入中间存储器。在安全处理器验证了代码块后,代码块再被输送到静态存储器。
在优选实施例中,计算装置是包含有主处理器、存储单元和安全处理器的机顶终端。输入数据线是连接到有线电视系统的连线。
在这样的实施例中,可以把权利管理消息与编程代码块相关联。除非该权利管理消息与存储在安全处理器中的预定权利管理消息相匹配,安全处理器将制止进一步存储、使用或执行这些编程代码块。这允许通过不加区别地向系统中向所有机顶终端广播新的编程代码来对有选择的机顶终端重新编程。
作为附加的安全措施,代码块在被主处理器接收时可以加密。此时安全处理器最好包括解密程序,例如可执行的解密软件,以便将被加密的代码块解密。
本发明还包括一种方法,用于对计算装置作编程代码安全传输、更重要的是、用于监控和确保存储在计算装置中的编程代码的连续完整性。利用上述系统的固有原理,该方法还包括以下主要步骤:用一种算法对接收到的或存储在存储单元中的一个或多个编程代码块中每一个代码块计算验证签名,根据该编程代码块的数值内容来计算验证签名;以及将计算的验证签名与同所述编程的块相关联地传输或存储的传输的验证签名相比较,所述传输的验证签名是利用同一算法产生的。
本发明还包括用于将编程代码安全传输到计算装置的第二系统。该第二系统包括:连接到输入数据线的主处理器,用来接收编程代码块,每个块都与从代码块的内容中导出的验证签名相关联;存储编程代码块的存储单元;以及靠主处理器运行的后台软件任务,用于利用与合法发送端相同的方法独立地对每个编程代码块计算验证签名、并将该计算的验证签名与同该代码块一起传输的验证签名对比。如前所述,如果计算的验证签名不能与传送的验证签名相匹配,则该后台软件就可禁用该计算装置。
如果存储单元包括中间存储器和静态存储器,那么,当后台软件任务验证了代码块后,那些代码块就可被输送到静态存储器中。如果把权利管理消息与编程代码块相关联,那么,除非该权利管理消息与存储在计算装置中的预定权利管理消息相匹配,后台软件任务可制止进一步存储、使用或执行这些编程代码块。附图简要说明
附图举例说明本发明并且是本说明书的一部分。附图与以下的描述一起展示并解释了本发明的原理。
图1是根据本发明的计算装置、例如有线电视系统的机顶终端的第一实施例。
图2是根据本发明的计算装置的第二实施例。优选实施例的详细说明
现利用附图,对本发明的优选实施例作解释。图1示出根据本发明的一种计算装置(100)。计算装置(100)可以是通过数据线(106)从远处的(数据)源下载软件和固件并将它们存储备以后执行的任何装置。在优选实施例中,计算装置(100)是有线电视系统中的机顶终端,而数据线(106)是连接到有线信号提供商的外部连线。但是,另一方面,数据线(106)也可以连接到计算机装置的任何外部端口、或者是计算装置(100)的内部数据线、通过该数据线可将编程代码引入到装置(100)、具体地说、引入到主处理器(101)中。此处所用的编程“代码”包括(但不限于):引导程序代码;BIOS(基本输入/输出软件)代码;操作系统软件或固件;装置驱动程序软件或固件;应用软件(例如,web浏览器,电子程序引导,电子邮件,聊天室等);网页;以及图形图像。
根据本发明的原理,计算装置(100)包括两个不同的处理器。第一个是主处理器(101),它可以是例如中央处理单元。主处理器(101)是执行目标代码实现计算装置(100)的功能的处理器。第二处理器是安全处理器,用来验证通过数据线(106)下载的代码,以便防止引入病毒或在传输中已被更改的代码或越权代码对象。安全处理器(102)可连续再验证存储单元(103)以前接收和存储的代码块,以防止对驻留在机顶终端(100)的可执行代码或数据作越权窜改或添加。
根据本发明的原理,当软件或固件是要被下载到计算装置(100)时,合法发送端会将正发送的代码分为块或分组。然后采用一种需要一个或多个密钥的算法,利用代码数据的每个块或分组的内容来计算验证签名,正如本专业的技术人员所了解的那样。
该数据块与计算的验证签名相关联地通过外部数据线(106)传送到主处理器(101)。主处理器(101)使用存储器总线(104)把下载的代码写入存储单元(103)。存储单元(103)可以是任何形式的非易失性的长期的电子数据存储装置,例如包括:电子存储装置、硬磁盘驱动器、或光盘或磁-光盘驱动器。
存储单元(103)分成存储块(块1到块N)。这些块可对应于存储单元(103)中存储数据的物理分区。存储块最好还可以对应于下载时软件或固件被分割成的数据块或分组。
安全处理器(102)具有连接到存储器总线(104)、再连接到存储单元(103)的连线(105)。在软件或固件下载到存储单元(103)以后,安全处理器(102)将访问每个存储块。将安全处理器(102)编程、以便复制合法代码发送端使用的算法、产生每个代码块的验证签名。
这样,安全处理器(102)就可验证由主处理器(101)接收并存储在存储单元(103)中的代码。另一种方案是,代码块最初由安全处理器(102)接收,而不由主处理器(101)接收。此时,安全处理器(102)验证代码块,然后将它们存储到存储器(103)中。可以使用单独的中间存储器或存储单元(103)的指定部分来存储安全处理器(102)已验证的代码块,然后清除这些代码块,把它们存储到存储单元(103)的长期存储器中。
现在更详细地说明验证过程。安全处理器(102)利用每个存储块的代码作为输入,根据代码块的数值内容和合法发送端使用的任何密钥,重新计算验证签名。安全处理器(102)计算出的验证签名与同该代码块相关联地传送的验证签名由安全处理器(102)进行比较。
如果签名匹配,该存储块的代码就被验证为是由授权发送端发送的,没有更改,也没有引入危险的病毒。另一方面,如果验证签名不匹配、或者所述数据块完全不包含验证签名,则安全处理器(102)确定该代码在传输时已被更改、也许包括了病毒、或该代码是由无权对计算装置(100)进行再编程的越权发送端所发送。于是安全处理器(102)可以擦除或禁用该(这些)掺假的存储块。
或者,安全处理器(102)可禁用整个计算装置(100),需要技术人员的干预或系统操作员的信号来重新初始化装置(100)。这可帮助服务提供商识别试图越权改变计算装置(100)中的软件或固件的个人。如果计算装置(100)是有线电视系统中的机顶终端时、如在本优选实施例中那样,则该特征特别重要。
可以对安全处理器(102)进行硬布线或固定布线来计算数据块的验证签名。更灵活一些,安全处理器(102)可以通过执行内部存储装置或外部存储单元(110)的指令来工作。
由于对越权或掺假的编程响应来自于相对隔离的安全处理器(102)而不是主处理器(101),本身就更难于预期和消除。因此,本发明的这种包括两个不同处理器的系统本身就比以前的系统更为安全。
除了验证计算装置(100)新接收到的代码块外,安全处理器(102)最好对存储单元(103)中的代码块进行定期扫描,重新验证这些代码块,以确保存储单元(103)中的代码未被越权方更改。重要的是要保护已存储在存储单元(103)中的可执行代码的连续完整性、以便防止引入新的、越权的、或掺假的代码。
可以使安全处理器不干扰计算装置(100)的工作或减慢其工作速度,方法是要求安全处理器(102)在“窃取的”总线周期中存储访问单元(103)的存储块。这意味着只允许安全处理器(102)在主处理器(101)忙于内部处理、没有访问存储器总线(104)的总线周期中才可访问存储单元(103)。
为此,最好设置存储器总线控制器(109)。存储器总线控制器(109)控制这两个处理器(101)和(102)对总线的访问。存储器总线控制器(109)也可直接监控总线(104)的活动。最好,存储器总线控制器(109)对主处理器(101)作出响应,当主处理器(101)不用存储器总线(104)时,存储器总线控制器(109)就允许安全处理器(102)访问存储器总线(104)。
由于安全处理器(102)“偷偷地使用”总线周期,安全处理器(102)就可用来不断地验证和重新验证存储单元(103)中的代码块以防窜改。而主处理器的速度不会受损,工作也不会受干扰。
作为附加的安全措施,也可以将安全处理器(102)编程为监测任意时段内它所接收到的总线周期数。如果安全处理器(102)可用的总线周期数下降到低于某一预定阈值,那么,可以将安全处理器(102)编程为认为机顶盒已被窜改。于是,安全处理器(102)可以起动适当的响应,例如关断机顶盒的工作和/或发信号给系统操作员通知此问题并请求授权技术员的服务呼叫。
本发明也可用来防止为了用于另一台计算装置而对计算装置(100)中的代码进行越权复制。如果复制该代码的第二台计算装置也有安全处理器(102),则该处理器(102)没有原来的安全处理器所持有的算法和/或密钥就不能验证非法复制的代码。
或者,如果复制该代码的第二台计算装置不验证代码块,那么,正如本专业的技术人员所知道的嵌入代码中的验证签名就可用来破坏未编程为识别、提取和利用该验证签名的计算机对所述代码的正常执行。
为了更加安全,可以将通过数据线(106)下载的代码加密。于是,安全处理器(102)还可用来对存储单元(103)中的代码逐块解密。这种加密可进一步防止越权复制代码用于它处。
在本发明用于有线电视系统的机顶终端时,会发生一个问题,即有些接收付费服务的用户的机顶终端需要接收升级的软件,而另一些接收其他服务或较少服务的用户却不需要编程的修改。本发明也可解决此问题,方法是在传送的代码块上附加权利管理消息。该权利管理消息可以附在或嵌入在验证签名中,或可以是完全单独的字符串。
权利管理消息会指明那一类机顶终端要接收并执行下载的代码。然后安全处理器(102)将下载代码中的权利管理消息与安全处理器(102)所在的终端(100)所特有的补充消息进行比较。该补充权利管理消息可存储在存储单元(113)中。
如果安全处理器(102)的该补充权利管理消息与同下载代码关联的权利管理消息相匹配,则安全处理器(102)继续进行验证并允许以后存储、使用或执行下载的代码。这样,代码可以通过有线网络广播到系统中所有的机顶终端,但只有选择的一些机顶终端接收和执行新的代码。
安全处理器(102)还可以在代码被执行时确保存储在存储单元(103)中的编程代码的完整性方面起作用。例如,在主处理器(101)执行存储的编程代码之前,代码要从长期存储器、例如FLASH存储器转存到RAM(随机存取存储器)中。安全处理器(102)可用来将代码从长期存储器转存到RAM中并能重新验证该次转存的每个代码块。
图2示出本发明的第二实施例。该实施例的原理是设置了用以存储下载的代码的第二存储单元。利用两个存储单元存储代码,其中一个存储单元用作临时的或中间存储区,最初将下载的数据写入并存储其中直到数据被安全处理器(102)验证。在安全处理器(102)验证了下载的代码后,该代码就从临时存储区转存到长期、静态存储器中,需要时主处理器(101)访问该静态存储器并执行此代码。
如图2所示,第二存储单元(200)被连接(201)到存储器总线(104)。第二存储单元(200)可以是硬盘驱动器或某种其他存储装置、也可外接到计算装置(100)。根据具体的应用,存储单元(200)或(103)都可用作临时存储器、也都可用作长期存储器。
不采用两个单独的存储单元的本发明的另一途径是要具有安全软件或作为后台任务运行在主处理器(101)上的固件任务。这种安全任务可以完成安全处理器(102)的上述全部功能,包括:(a)不断扫描被保护的存储器,确认验证签名;(b)验证存储块失败后,禁止计算装置的功能;(c)作为后台验证过程的一部分,检查权利消息,从而启用应用程序的存取控制;(d)可能的地址分辨和下载代码的链接。
如果安全任务能精心设计成不能被窃取或破坏,则使用后台软件任务提供了一种简单的途径来获得本发明的许多优点,不需要用上述具有两个处理器(101和102)的装置来更换现有的计算装置。
后台任务也可用一个如果不能由后台任务定期提醒就会超时的“监视器”任务作备份。这样,如果后台任务由于某种原因被消除或去激活,监视器任务就不再被提醒,于是采取适当的行动,例如停用该机顶终端和/或通过前端设备发信号给系统操作员。
上述描述只是为了说明本发明。这不是详尽无遗的,也不是想将本发明限制在任何准确描述的形式。根据上述说明有可能作许多更改和变动。
对优选实施例的选择和说明是为了最好地解释本发明的原理及其实际应用。上述说明是为了使本专业的技术人员能最好地在各种实施例中利用本发明,并设想适合于具体使用的各种改动。本发明的范围应由以下的权利要求书来定义。