对内容实行许可的系统和方法 本发明一般涉及用于控制和监视计算机程序和其他数字内容的使用的系统和方法,更具体地涉及分布式计算机环境中用于处理计算机程序和其他数字内容的埋嵌式许可信息和用于控制对其访问的系统和方法。
因特网,尤其是因特网内的万维网(“网络”或“WWW”),已经成为一种用于广泛传播几乎任意类型内容的大众化载体,这些内容包括格式化文本、图形、音频、视频和交互式编程内容。与不同类型的内容相关联的是当存作文件或在网上传递时,用于将其表示为位串或字符串的约定、格式或语言。已经知道许多内容的表示,当今流行的表示包括用于格式化文本的HTML,用于图像的JPEG和用于程序的JAVA。还在继续开发附加的内容表示。在麻省理工学院开发的CURL语言(M.Hostetter,D.Kranz,C.Seed,C.Terman,S.Ward所写“Curl:一种网络用缓和倾斜语言”,MIT Laboratory for Computer Science World WideWeb Journal,Volume 11.II,Issue 2,Spring 1997)设计为在单个语言中表示不同类型的内容。
通常必须在将内容呈现给用户之前将内容处理。这类处理操作要求用户的计算机(“客户”)上的软件(a)或者自本地存储媒体(即CD-ROM或硬盘)或者自远程计算机(“服务器”)中拾取以某些可辨识语言表示的内容以及(b)适当地“执行”、“解释”或“处理”所拾取地内容。应该指出,执行、操作和解释都是处理内容的所有形式并且可在此处交替地使用。
一般而言,可以容易地按照准备处理的内容类型来确定合适的处理操作类型。这可以根据与该内容相关联的文件名称或者根据内容本身来加以确定。例如,以“jpg”结尾的文件名称习惯上表明该内容是一个JPEG图像以及合适的处理操作可能包括在计算机监视器上显示该图像以供用户观看。类似地,以“midi”MIME类型传递的内容可理解为准备播放给用户听的音频内容。当然注意到可以完成其他类型的处理,例如使用合适的标记系统来显示音频内容以便将它编辑。
在网上,通常由称为“浏览器”的客户应用程序完成拾取和处理内容的操作,该浏览器例如是可分别从Redmond,WA的MicrosoftCorporation和Mountain View,CA的Netscape CommunicationsCorporation买到的Microsoft Internet Explorer和NetscapeCommunicator。这些浏览器包括处理包括HTML文本、JPEG图像和Java程序在内的数种普通类型内容的能力。这些浏览器还通过通常称为插入小程序的可装载软件模块来容纳新类型内容,例如CURL语言。
当一个浏览器试图拾取或装载一个非本机类型的内容时,该浏览器将一个与该内容类型相关联的插入小程序加以装载。然后由该插入小程序进行控制以便处理该内容。如果在客户计算机上没有浏览器可用的合适的插入小程序,则可以从通常用作因特网上的服务器的其他来源获取并装载合适的插入小程序。
例如,当浏览器拾取包含CURL程序的内容时,该浏览器找到并装载一个相应的设计为处理CURL语言的CURL“插入小程序”。这可以包括将CURL源码编译和执行所得代码。此后,当浏览器拾取随后的CURL语言内容时,即由CURL语言插入小程序进行控制而无需重新装载该插入小程序。
网络成就的一个原因是它能促进无阻塞通信。通常为能访问内容所需要的全部信息是一个明确的信息识别符(例如统一资源定位符或URL),这是一个已经促进网络飞速发展成为相互关联内容的丰富纽带的特征。虽然对信息的无约束访问对于网络和电子经济的成长是可贵的,但它与传统的许可模型是背道而驰的。对有用内容的免费和容易的访问对于那些享受能够恰当地使用许可和向内容供应商付税的优点的人们的积极性是一个打击,因为难于控制访问和对信息和服务收费。因此,有价值内容例如计算机程序、研究报告、定期体育报导、证券交易信息和类似内容的典型获利出版商可能会人为地造成一个它们所供应的商品的短缺而放弃严格许可操作和鼓励税收。在供应商提供编码的内容同时提供解释该内容所需客户软件或插入小程序的例子中,可能对于内容本身、对于插入小程序或者对于两者都施加访问限制。
通常当今使用中的访问限制措施意在阻止进行作为网络标志的开放式无约束通信。这类限制包括针对用户的或者针对附属于具体计算机的硬件识别号的用于将软件或内容解锁的密码。密码机制可以将软件的使用有效地限制于具体个人和/或具体机器,但同时又阻止网络的无约束通信并停止进一步推广使用。每个用户或内容供应商必须配备一个密码以便将软件或内容解锁。
其他机制包括通常称为“dongle”的包含独一的许可密钥的可拆卸硬件设备。这些设备适合于连至客户计算机的通用通信端口或特定接口。每当软件程序被激励以便判断该软件是否可以运行时,该软件内的子程序寻找包含于可拆卸设备内的具体代码。再次,这类机制能够将软件的使用有效地限制于具体个人和/或具体机器,但由于需要散发硬件设备,因而停止进一步推广使用并阻止无约束通信。
联网计算机环境提供进一步的许可挑战。传统的单计算机软件许可的项目可能无法恰当地覆盖网络上的软件使用,或者可能非故意地允许这类使用而不对许可颁发者提供附加补偿。例如,当一台客户计算机上的用户使用在第二台客户计算机上运行的软件时,应该使用何种形式的许可?一个解决方法是授予一种可以在连至网络上的任何计算机上使用软件的许可。这已知为无限制网站许可。选代地,每台在其上准备运行软件的机器可能需要一种称为有限制网站许可的许可。虽然这能够增加许可颁发者收集到的费用,但它可能要求被许可者支付比实际需要更多的许可费用。此外,由于将附加节点加于网络上,此机制要求被许可者合作以便接触许可颁发者。可能要求附加的非自动化机制来监视程序用途和证实许可的符合情况。例如,许可颁发者可能要求被许可者保持使用的正确记录并且可能要求有权周期地检查被许可者的网站以便审查程序用途;很清楚,这是一个低效和侵犯人的过程。
在被许可者使用由许可颁发者开发的工具为终端用户建立程序和内容的情况下,存在另一个紧张状况。许可颁发者可能要求使用被许可的工具的正确使用记录,而最终的终端用户则要求对该内容进行无约束访问而无需密码和加锁。因此被许可者被夹于下述两种情况之间:向许可颁发者提供一个正确记录以便确定许可费用,与此同时向终端用户提供容易的访问。能满足许可颁发者的当今机制对于终端用户是不利的,以及反之亦然。
此外,内容的开发商可能希望鼓励对终端用户采取多级许可。许可的级别可以从免费访问产品用于某些用途例如进行估价或非商业用途开始,一直变化至用于商业用途的基于费用访问,其中根据被许可产品的用途来要求付费。
传统的访问限制阻止用户免费访问,因为这类用户通常必须向访问控制机制“登记”或者与电子官僚主义打交道。由于对许可的符合情况进行监视会产生开销,这也阻止实行基于费用的访问。因此,现有许可技术并不提供能够覆盖这类分散的许可目标的广泛机制。
本发明提供一种新的和改进的用于对内容实行许可和用于对功能访问实行许可的方法和系统,这些功能由插入小程序、应用程序、小应用程序或其他软件提供以便处理该内容。因此本发明便于在因特网上散发付税和不付税两种生成内容。
这是通过在内容中埋嵌此处称为许可表格的许可数据而实现的。该许可表格本身涉及允许提供内容的许可的类型。设计为处理内容的软件包括用于识别和确认埋嵌于内容中的许可有效并且根据许可的有效性或项目来限制对内容的处理或访问的子程序。
因此,本发明的一个优点是支持一种许可机制,在网络内容的解释中利用的软件的供应商可以使用它来对该软件的商业用途要求许可而不控制或者对软件或者对内容的访问。
本发明的另一个优点包括有能力允许软件的非商业或其他特定用途,以及软件的无特色使用。
本发明的又一个优点允许许可颁发者监视被许可的用途,需要时撤消许可和根据被许可内容的软件用途来要求付费。
此外,本发明的还有一个优点是利用一个埋嵌于内容中的普通文本肯定来表明该内容是用于非商业用途的。
本发明还有一个优点是可供多个许可颁发者使用,他们中每一个分别管理属于互相独立的模块的许可。
参照本发明实施例的附图和详细说明,熟悉技术的人能更好地了解本发明的其他优点。
结合附图参照以下说明,将能更容易地理解本发明的上述优点,附图中:
图1是用于阐述具有根据本发明的用于接收被许可内容的一个插入小程序或应用程序的计算机系统的框图;
图2是用于阐述具有根据本发明的用于接收被许可内容的一个插入小程序或应用程序和用于提供这类内容的一个服务器的的计算机系统的框图;
图3是用于阐述根据本发明的{License...}表格的组成的框图;
图4是用于阐述根据本发明的具有用于接收被许可内容的插入小程序或应用程序的计算机系统、用于提供被许可内容的服务器以及许可服务器之间的交互作用的框图;
图5是用于阐述当根据本发明原理确定被处理内容中埋嵌的许可类型时由插入小程序完成的步骤的简化流程图;
图6是用于阐述当确认隐式许可有效时由本发明的插入小程序完成的步骤的简化流程图;
图7是用于阐述当确认包含内容证实器的隐式许可有效时由本发明的插入小程序完成的步骤的简化流程图;
图8是用于阐述当确认包含内容证实器的隐式许可有效和进一步确定访问策略时由本发明的插入小程序完成的步骤的简化流程图;
图9是用于阐述当确认包含内容证实器的显式许可有效和进一步将有效许可结果的高速缓存的使用和优惠期间相组合时由本发明的插入小程序完成的步骤的简化流程图;
图10是用于阐述当确认包含内容证实器的显式许可有效和进一步将有效许可结果的高速缓存的使用和优惠期间相组合时由根据本发明原理的服务器完成的步骤的简化流程图;
图11是根据本发明的具有用于接收被许可内容的插入小程序或应用程序的计算机系统、用于提供被许可内容的服务器以及两个许可服务器之间的交互作用的框图;及
图12是用于阐述在多级别许可期间所建立的环境的框图。
以下的说明用于阐述本发明的优选实施例,并且只反映为阐述目的而进行的具体选择。许多本发明的选代实施例对于熟悉技术的人是明显的。
本发明能够方便于计算机程序的广泛使用和散发,但仍然向这些计算机程序的开发商提供一种机制,用于获得经济回报。这通过对程序的运行保持控制从而控制对要求这些程序的内容的访问而完成的。因此,例如,程序的非商业用户可以免费地访问(在可能的限制下),而商业用户则必须支付一笔许可费用才能运行计算机程序。
在第一实施例中,本发明包括计算机上用于处理数字内容的一个免费地散发的软件模块、程序或插入小程序。当处理这些内容时,该模块如下所述地搜索包括具体许可表格的数据。为处理被授权的数字内容,该许可表格必须存在于该内容中。
该模块将许可表格进行解释并且根据许可表格中的信息例如内容的特性是非商业还是商业而授权处理该内容。该模块具有对非商业许可表格的内附理解,并且能够同意运行计算机程序。该模块还识别具有商业特性的许可表格,并且能够在运行计算机程序之前执行进一步的许可确认有效步骤(以便保证为商业用途支付许可费用)。因此,该模块具有对不同类型的许可表格的内附理解,并且能够同意立即运行非商业内容的计算机程序,同时保留对运行商业内容的计算机程序的控制。这鼓励开发内容,允许免费运行非商业用途的计算机程序,与此同时为计算机程序开发商提供一种机制,通过要求商业用途的许可费用而接受经济回报。
图1(a)和图1(b)是用于阐述实施本发明的计算机系统的实施例的框图。该系统利用运行操作系统101的计算机100。计算机100可以是一个传统的个人计算机,例如Compaq Computer Corporation,IBM和Apple所售计算机。计算机100也可是另一种设备例如游戏终端、机顶盒或因特网家用电器。操作系统101是任何与底层计算机相兼容的操作系统,例如Microsoft Windows 98,Microsoft Windows NT,Linux,Apple OS等。
参照图1(a),本发明的第一实施例使用浏览器102作为插入小程序103的基底。图1(b)阐述本发明的选代实施例,其中提供应用程序104以取代浏览器102和插入小程序103。在图1(b)的实施例中,用于对计算机程序运行进行控制的机制包括于计算机程序本身内;然而熟悉技术的人知道运行控制部分可以与底层计算机程序分开。
浏览器-插入小程序的组合或者相应的应用程序104设计为解释、执行或否则处理由计算机100接收的内容。具体地,他们设计为识别由本发明的原理所规定的许可机制,并且相应地处理内容。虽然余下的说明一般涉及与浏览器102一起运行的插入小程序103,但熟悉技术的人知道也可将它们替换而运行应用程序104。
现在转向图2描述插入小程序103的一般操作,它把使用标准通信技术从服务器200接收的内容201进行处理。内容201以一种插入小程序103能够最终处理的语言或表示(例如CURL语言)来编码,并且可能包括单个部分或者一组相关部分,例如网页或程序模块。根据本发明的原理,多个部分可以作为一个整体,也可个别地,也可按组或者按它们的某些组合来颁发许可。
在本发明中,获得许可在插入小程序103之下运行的内容由内容中的一个具体许可表格或构造加以区别。最好将许可表格编码以便与用于将内容本身编码的表示相兼容。
为简化起见,此处使用非加密普通文本CURL语言源代码描述本发明。CURL语言构造通常由CURL括弧隔开。例如,9的平方可以使用一个CURL构造例如
{square 9.0}
来进行计算。相应地使用CURL句法习惯的合适的许可表格可能包括一个CURL语言构造例如
{ Licensed...},其中省略号标志下面还有更多参数进行描述。
不同选代的表示(例如HTML、Java、XML)、数据表格(例如文本、图形、可执行代码)和编码(例如文本、二进制或加密编码)可以用于本发明。可以使用任何方便的选代的句法将这类表示和编码加以扩展以便支持本发明。这类扩展操作通常是使用语言或表示的现有句法习惯以类似于CURL源代码中所用许可表格扩展为CURL语言的方式来实现的。
HTML或XML中的相应的许可表格例如可能使用以下句法:
<LICENSED> ... </LICENSED>,而在C或Java中它可能采取一种语言构造的形式,例如:
Licensed...;
类似地,二进制表示(例如编译的类文件、ActiveX控制和动态地装载的库)的扩展能够容纳表示的现有结构以使附加的信息可与剩余的内容明确地区别开。这类扩展对于熟悉技术的人是明显的。
无论表示是什麽,插入小程序103都适合于检测每个送给它以便执行的文件中的这类合适的{Licensed...}表格,以及拒绝执行任何没有一个有效{Licensed...}表格的文件。这种拒绝可以报告给客户计算机的用户、内容的来源或插入小程序的供应商。选代地,可以根据省却的或受限制的特性来处理缺乏一个有效{Licensed...}表格的文件。例如,可以限制插入小程序的功能或者只允许在规定的时间内运行插入小程序。此外,本发明可以通过在{Licensed...}表格内包括不同或附加信息来提供不同许可方案。
根据本发明的原理,插入小程序103将内容201的有用处理操作推迟,直至它遇到包含于内容201中的{Licensed...}表格。通常这种{Licensed...}表格处于每个内容文件的首端以便在确认{Licensed...}表格有效之后增量地处理剩余的内容。选代地,在检测和确认{Licensed...}表格有效的同时可以平行地处理内容的某些部分。
插入小程序103使用{Licensed...}表格来控制对内容201的访问,对插入小程序103本身的访问或对两者的访问。换言之,{Licensed...}表格203由插入小程序103处理以便确定将内容201处理至何种范围。取决于{Licensed...}表格230中的信息,可以控制内容201的最后处理操作和插入小程序103的功能。因此,当内容201由客户100解释时,它的内容被传送至插入小程序103,{Licensed...}表格203被提取和处理,以及插入小程序103按照{Licensed...}表格203所允许的范围来执行或解释内容201。
图3是根据本发明原理的许可的阐述性实施例。{Licensed...}表格300可能包含不同信息,包括:
许可的识别码301-此信息用于识别许可。在本发明的一个实施例中,此信息包括普通文本,但在另一个实施例中它可以是加密的。许可颁发者是提供内容201以供插入小程序103处理的一方,例如内容建立者。
合法性肯定302-这用于识别许可的合法形式。在第一种类型的许可表格中此域标示在非商业用途的许可下可以将被许可内容散发而不必支付报酬。在其他类型的许可表格中此域规定许可类型。肯定的形式应该是适合于内容的预期用途,以及最好是一个包含对许可特性的合法性肯定的普通文本串。预料肯定操作对于许可颁发者的司法权是合适的并且遵循管理许可的法律,因此它可用于在司法上加强许可颁发者的权利。
编码的/加密的数据303-许可表格300的这部分包括不同数据,并且可能以加密形式加以提供。可以使用已知技术例如uuencode将这些数据编码为普通文本字符序列。在用于CURL源代码的示例性许可表格中,这些数据被放入引号内以使它成为语言中一个在句法上合法的单元(即带引号的串)。编码的二进制数据所提供的主要功能为:
1.许可的安全性识别和属于许可的具体合同安排;
2.对内容的证实以便检测内容和/或许可表格的篡改或修改;及
3.记忆应用于内容的许可的内容。
以下是可以编码的/加密的数据的例子。
被许可者304-表示被许可者的识别码。这可用于确认被许可者的身份,以及可以是一个文本串或数字识别码。例如,一个属于感兴趣的许可颁发者/被许可者的具体合同可以被赋予一个独一的识别码C。{Licensed...}表格300中识别码C的可靠编码然后用于识别被许可者和合同的安排-所标示功能中的第一个。
超时周期305-许可有效的周期。可用作许可的证实阶段的最优化。
优惠周期306-允许使用内容而不必确认许可有效的时间周期。可用作许可的证实阶段的最优化。
被许可的模块307-许可的范围。此数据可用作机制的一部分,用于在逐个模块的基础上控制对插入小程序功能的访问。这允许只对插入小程序103的一部分功能颁发许可。
证实网站308-可以在其上找到内容许可的授权和证实服务器的一个或多个网站,下面将进一步解释。
独一的ID 309-用于识别确实将内容下载的一方的终端用户的识别码。这允许一种机制跟踪该内容的实际终端用户的用途。
证实代码310-用于证实附属于许可的代码没有被破坏或篡改的信息。使用已知技术(例如密码组链接)从文件的剩余部分中计算出的消息证实代码或MAC用于实施该功能,从而提供第二个所标示功能。
许可证实代码311-用于识别对数字内容实行许可的项目的信息。这可能包括例如从可能用作许可项目的见证的许可证文本中计算出的加密散列函数或MAC。可选地,该散列函数可以是在时间上数字地加标记并且由所涉及的各方签字的。
熟悉技术的人知道可在{Licensed...}表格300内提供附加数据域。
根据本发明原理,{Licensed...}表格300允许许可颁发者为内容实施不同类型的许可方案或策略。例如,插入小程序建立者可以选择一种许可策略以便鼓励将插入小程序用于一定目的,例如用于非商业用途或用于产品估价。为支持这类许可策略,插入小程序103可能接受{Licensed...}表格300的一定变动方案而无需进一步确认有效。这种类型的{Licensed...}表格称为隐式许可,因为该插入小程序具有足够的内附信息来同意访问。
一个示例性隐式{Licensed...}表格可以包括:
{Licensed for non-commercial use under the terms of CurlCorporation contract number C00001.}此表格只包含一个普通文本,它合法地包括适用于预期用途的肯定操作-该预期用途即该内容用于非商业用途,Curl Corporation不要求进一步的许可安排。在此方案中,许可颁发者依赖于{Licensed...}表格本身内的普通文本合法性肯定操作,其中明确地声明内容许可的非商业特性。任何人观看内容就可容易地看出合法性的肯定,该合法性肯定明确地声明内容的预期的非商业特性。选代地,当处理内容时,可以显示一个上拉会话框或斑驳状屏幕,以便将它的非商业特性通知用户。
替而代之,插入小程序建立者可以选择一个用于鼓励将插入小程序用于一定受控散发目的(例如商业用途或安全访问)的许可策略。因此,在本发明的另一个实施例中,插入小程序103适合于要求进一步证实{Licensed...}表格300的一定变动方案。{Licensed...}表格的这种类型称为显式许可,因为插入小程序103不具备足够的内附信息来同意访问,因此必须求助于外部信息来确认许可表格有效。
一个示例性显式{Licensed...}表格可能包括:
{Licensed by XYZ Computer Corporation
|“101010111001...001010100100001001001”|.}其中XYZ Computer Corporation识别该许可以及二进制数字序列表示图3的附加加密信息303。此{Licensed...}表格可以通过许可表格本身的内容来与先前的表格区别开。例如,两个示例性{Licensed...}表格的第二词或项目不同,即‘for’和‘by’。很清楚,其他用于区别{Licensed...}表格的手段对于熟悉技术的人是明显的。
当遇到显式许可表格时,插入小程序103将加密信息303解密并且完成附加操作以便证实该许可。插入小程序103还可证实该内容并未被编辑过或者否则已被篡改过。由{Licensed...}表格访问的许可当今状态可通过与由许可颁发者保持的许可服务器简单地交换消息而加以证实。
图4阐述根据本发明原理的客户计算机100、许可服务器403和内容服务器200之间的信息流。客户计算机100在网上例如因特网上向内容服务器200发送对内容201的请求401。内容服务器200向客户计算机100发送回包含所请求内容201的响应402。插入小程序103然后扫描内容201,寻找内容201的实际执行操作、解释操作或处理操作之前的{Licensed...}表格。如果找到{Licensed...}表格,则由插入小程序103以取决于{Licensed...}表格内容的方式来将它解释和证实。
对于显式地被许可的内容,{Licensed...}表格300包含至少一个在一定程度上被编码的信息,如图3的编码信息所示。为证实此许可表格,插入小程序103部分地根据{Licensed...}表格300和包含于其中的编码信息303来建立许可确认有效请求404。许可确认有效请求404被送至授权服务器403。
授权服务器403可以是与内容服务器200相同的服务器,但在现有例子中授权服务器403是一个单独的计算机。授权服务器403自客户100接收许可确认有效请求404以及生成取决于许可确认有效请求404和许可数据库406内容的响应405,这将在下面进一步讨论。
图5-10的流程图阐述当确认{Licensed...}表格有效时,插入小程序103的实施例所完成步骤的示例性序列。先参照图5,插入小程序103完成初始步骤序列以便检索和确定由{Licensed...}表格指定的许可类型。在步骤500,插入小程序103处于初始状态中,准备检索位于服务器上的内容。在步骤501中,插入小程序103自服务器中检索内容。可以由用户启动或者在先前装载的内容的控制下来启动检索操作。例如,用户可以在超文本链接上点击,或者先前装载的内容可以访问准备检索的附加内容。在本发明的典型实施例中,由底层浏览器和操作系统提供用于自服务器中检索内容的实际传输机制,但预料在本发明的其他实施例中插入小程序可能包括检索机制。例如,用于控制独立的因特网家用电器或消费者机顶盒的程序可能包含用于直接实施检索机制的代码。
在步骤502,插入小程序扫描该内容以寻找{Licensed...}表格。通常该表格位于文件顶部以便使扫描该内容所需时间最少。如果在内容中没有{Licensed...}表格,则步骤504将它标志为误差,以及在步骤505处插入小程序退出此子程序。
假设找到至少一个{Licensed...}表格,即将它解码以便确定许可类型,步骤506。取决于在内容中找到的{Licensed...}表格的类型,插入小程序在步骤507处跳转。如此处所述,有两种基本类型的许可,隐式和显式;然而,预料可以建立其他类型的许可。如果许可是隐式的,则它跳转至自步骤508处开始的各步骤,否则它跳转至步骤509。
现在转向图6,如果{Licensed...}表格规定一个隐式许可,则进而检查许可的有效性。在步骤510,通过例如将包含合法性肯定的{Licensed...}表格中的文本串与由插入小程序保留的文本串进行匹配而检查隐式许可。检查隐式许可的选代的方法可以包括将施加于合法性肯定的散列函数或其他函数所得结果与插入小程序所存的值进行比较。
在步骤511,如果许可检查操作失败,则插入小程序执行任何必要的误差操作,步骤512,并且在步骤513处退出该功能。如果通过了许可检查操作,则插入小程序在许可项目允许的范围内使用插入小程序提供的功能对内容进行操作。一旦允许插入小程序对内容进行操作,在步骤515处即退出此功能。
图7阐述一个用于对其中由MAC保证该内容安全的隐式许可进行操作的本发明选代实施例。在步骤516,如上所述地检查隐式许可。如果在步骤517处匹配失败,则插入小程序执行必要的误差操作,步骤518,并且在步骤519处退出此功能。然而如果许可检查成功,则插入小程序从内容中计算一个MAC,并且将它与在{Licensed...}表格中找到的MAC进行比较,步骤520。如果在步骤521处的比较操作失败,这标示该内容已经被破坏,因此不应再使用,则在步骤522处发出一个误差情况信号,并且在步骤523处退出该功能。如果在步骤521处比较操作成功,则插入小程序在所允许的范围内对内容进行操作,步骤525,并且在步骤515处退出该功能。熟悉技术的人知道可由{Licensed...}表格以类似方式提供不同其他功能。
现在参照图8,其中描述优选实施例的附加扩展。图8中描述的各步骤与图7中的是相同的,只是增加了步骤524,其中插入小程序确定一个适用于许可的访问策略。该访问策略可以将插入小程序限制于一组许可的功能中。例如,对于非商业用途的许可可以提供一组基本的功能,而与此同时阻止对先进特征的访问,除非它们在显式许可体制下被许可,这在下面将进行描述。
图9阐述当判断许可是显式许可时由插入小程序完成的各步骤。在显式地许可的内容中,{Licensed...}表格始终具有一个编码部分,例如图3的编码部分303,它包含为证实许可所必需的附加信息。在步骤550,将编码信息解码。取决于编码操作,可以提供围绕对编码信息的访问的不同安全级别。例如,编码操作包括一个简单的二进制编码,或者选代地可能包括使用公共的或私有的密钥基础结构以便既将数据加密又将数据编码的加密技术。
在步骤551,将该内容的MAC计算并且与{Licensed...}表格300的MAC 310进行比较以便判断是该内容被破坏了还是{Licensed...}表格被非法地生成或复制过。如果计算的MAC不被接受,步骤553,则发出误差情况的信号,步骤553,并且子程序退出554。如果计算的MAC被证实,则在步骤555检查高速缓存以便了解先前批准的{Licensed...}表格是否应用于被审查的内容。如果在步骤556测试发现一个应用于内容的高速缓存入口,则在步骤557将高速缓存更新(以便允许通过访问计数、用途限制或其他老化机制将入口老化)。
如果没有有效的高速缓存入口,则需要在步骤560接触一个许可服务器。许可服务器的识别码可以植入插入小程序、可由编码信息所规定(图3的303)、可由另一个服务器所规定或者植入该内容。插入小程序试图接触许可服务器并且将必要的消息从插入小程序发送至许可服务器以供确认许可有效的需要。该必要信息可以包括以下一个或所有项目:被许可者、内容识别码、用户识别码、机器识别码、合同识别码、使用计数等。如同技术中熟知的,最好通过安全通信线路发送信息至许可服务器以便保护通信不被截听。
本发明的一个重要方面是图3的某些编码信息303可以存于许可服务器上,以及对存于{Licensed...}表格中的数据进行访问。例如,许可服务器可以规定一个与具体内容相关联的高速缓存入口的超时周期、一个附加证实网站、另一个应用许可的模块、或者可应用于该内容的优惠周期等。因此,通过在许可服务器上存储某些信息,可以在所有内容访问中改变各值而不必要求改变内容中的{Licensed...}表格。此外,使用用户识别码或机器识别码,可以在每个机器或每个用户的基础上建立一个剪裁的访问策略。最后,即使编码信息(图3的303)包括一定信息,该信息仍然可被许可服务器上发现的信息所改写。
如果许可服务器并不响应,同时如果不止一个许可服务器的位置提供于图3的确认网站域308中,则可以查询附加许可服务器。否则在步骤561可以应用优惠周期,步骤562,即使既无高速缓存入口也无来自服务器的响应也如此。优惠周期是一种优化操作,允许中断的操作恢复。例如,内容可存于用户的机器上以备以后访问。如果用户未连至包含许可服务器的网络,则在没有来自先前访问的高速缓存入口的情况下,将会拒绝内容的操作。优惠周期允许在一定次数内或在一定时间周期内使用内容而不必要求访问许可服务器。如果超过优惠周期,步骤563,则发出误差信号,步骤564,并且在子程序退出时对内容不进行操作,步骤565。如果优惠周期可用和有效,则在许可允许的范围内对内容进行操作,步骤566,同时退出子程序。
图10阐述本发明的一个实施例中接触服务器中的各步骤。如果服务器进行响应,我们进入步骤568。如同早已指出的,来自服务器的响应通常包括附加信息。收到的信息用于使许可成为有效或无效。如果该响应使许可成为无效,步骤570,则发出误差信号,步骤571,以及退出子程序,步骤572。如果该响应使许可成为有效,则在内容的高速缓存中建立一个入口,步骤573,并且在许可所允许的范围内对内容进行操作,步骤574,以及退出子程序,步骤575。
图5-10只是意在用作许可机制的不同实施例的例子。熟悉技术的人能够知道附加扩展和修改是可能的。例如,包含于{Licensed...}表格中的信息可以被增强、存于服务器上的信息可以被增强、加密和编码算法可以改变、通信方法可以变化以及所有这些都处于本发明的范围之内。
虽然用户计算机-授权服务器的交换可以做得很简单,但它还是给被许可内容的每次执行增加小的开销。如同早已知道的,可以通过将服务器响应在客户计算机上进行高速缓存(例如处于“小甜饼”或类似的客户状态内)以及具有规定的超时周期用于控制其生命周期,从而减少此开销。然后将高速缓存的结果应用于未来检索相关内容。当被请求执行被许可的文件时,插入小程序将检查其相关记录的本地高速缓存以便确认{Licensed...}表格的有效性。因此,如果没有这类高速缓存入口或者该高速缓存入口已经超时,则该插入小程序只需与许可服务器交换消息。
将先前的许可批准实行高速缓存也能减少必需送至许可服务器的许可确认有效请求的数量。甚至可以允许将一个高速缓存入口应用于多个{Licensed...}表格而进一步减少许可确认有效请求的数量。例如,一个高速缓存入口可以使具有规定内容的、命名一个规定的许可的或来源于规定领域的所有{Licensed...}表格成为有效。
有可能实施不同超时机制。例如,高速缓存的响应的实际超时周期可以是固定的(植入插入小程序中)、在{Licensed...}表格内规定的或由许可颁发者的服务器在其对确认有效请求的响应中规定的。超时周期可以是以度过的时间、访问次数或它们的组合为依据。
此外,可以对高速缓存的服务器响应与由用户检索的未来内容的关系实行配置。例如,如果该内容被组织于一个阶层中,则具体节点的高速缓存的响应可应用于该节点和阶层中的所有较低节点或限制数量的较低节点。因此,网页的高速缓存的响应可以应用于相同领域内的所有网页。选代地,{Licensed...}表格或来自服务器的响应能够规定它所应用于其上的内容。因此,高速缓存的响应是灵活的,并且能够适用于支持被许可者的具体内容。
上述图5-10中阐述的确认有效步骤的选代的例子是把与许可服务器的接触进行修改以便在背景中发生。这将允许实行许可的“懒惰证实”,其中只在需要时才确认许可有效,而且这是与内容的操作平行的。从用户的观点看,这有可能消除或减少在内容的确认有效以及操作之前的由用户计算机与许可计算机之间的交互操作所引起的任何延迟。
为节省客户计算机的存储器以及使{Licensed...}表格的尺寸最小,可以通过加密散列函数例如MD5、SHA1或其他散列函数(AppliedCryptography,Second Edition,By Bruce Schneier,John Wiley & Sons,1996)将它的一部分消化成为小于所存数值的表格。选代地,插入小程序通过与许可服务器接触、发送一个包含表格的简短加密散列函数的确认有效请求以及然后将该结果进行高速缓存以便避免未来确认有效的必要性,从而与所有{Licensed...}表格打交道。此方案允许隐式{Licensed...}表格集在许可颁发者通过许可服务器实行的控制下动态地生长。此外,使用高速缓存超时周期可以允许许可证颁发者撤消许可证,因为高速缓存过的确认有效性事实上将期满。
{Licensed...}表格300的图3的编码信息303可以从文件内容的C、MAC和其他数据中以不同方式加以构造。编码信息303的示例性计算显示如下:
Encode(
Encrypt(
Append(
Hash(Append(C,MAC(remainder of file))),
C,
MAC(remainder of file)
),
SecretKey
)
)
其中Append只是将表示其参量的位串衔接起来,Hash将其参量的不可逆加密散列函数进行计算,Encrypt(bits,key)是一个标准加密方案例如DES,以及Encode是一个字符编码函数例如encode。SecretKey是一个只有许可颁发者知道的对称密钥。散列函数计算和加密步骤阻止将编码二进制数据的C和MAC部分分离以及将它们重新组合成假造的{Licensed...}表格的尝试。
由于需要不时地对每个显式许可(及隐式许可的某些版本)重新确认有效,许可服务器可能收集和在数据库中存储对应于各许可的数据。这类许可记录可以在统计上进行分析以便产生每个许可所应用的实际用户数据库的粗糙模型。许可颁发者可能例如每周向每个被许可者发送有关实际用户数量的报告,并且如果该数量超过现有许可的项目时可能要求被许可者重新协商一个许可。选代地,插入小程序可以具有从许可服务器中检索许可记录的能力以使用户能够处理这些信息。
此外,许可颁发者可以规定高速缓存超时值,高速缓存入口的范围,以及以下列方式组织内容以使许可颁发者可能通过内容服务器上的内容来生成对访问的序列或流的报告,因而能够对那些过度利用的或利用不足的内容区域进行识别。
在此处描述的本发明实施例中,本发明设计为全部在服务器上对编码二进制数据进行实际的处理而不需客户软件包括完善的加密子程序。然而,根据本发明的原理,可以在需要时使用具有标准安全措施的网络通信来在插入小程序与许可颁发者的服务器之间按照需要重新分配这些和其他功能。许可证生成
对于为了建立用于插入小程序的被许可内容的被许可者而言,被许可者必须能够将加密的{Licensed...}表格粘贴至所建立的内容上。为此目的,许可颁发者向被许可者提供一个确认工具,即一个专用于合适的合同(因此专用于该被许可者)的程序,该程序将未被许可的文件用作输入,并且将合适的{Licensed...}表格粘贴至它上面。最好将该许可工具与用于初始地建立该内容的程序和子程序组合在一起,例如具有动态地可装载库或其他模块的形式。选代地该工具可以是一个独立的程序。
很清楚,该确认工具只是准备提供给具体被许可者使用,因而不应该广泛地散发。在工具的安全性发生泄漏的情况下,许可颁发者可以进行反应,撤消它所产生的许可,并且向被许可者颁发一个用于实施崭新(未被泄漏的)许可的新工具。该工具在必要时删除任何先前的{Licensed...}表格,并且根据现有许可项目和所提供的源文件的剩余内容来生成一个崭新副本。选代地,{Licensed...}表格可以包括一个时间标记以使许可服务器只确认具有在工具泄漏之前的时间标记的许可的有效性。
该工具可以是完全自包容而依赖于内部的编码和加密机制,或者可以与由具体许可颁发者保持的服务器一起操作。极端而言,在后一种方案中,可以将内容文件(或文件的MAC)通过一条安全线路传送至许可建立服务器而建立{Licensed...}表格。许可建立服务器然后生成必要的信息以及作为响应将它发送回去。此方案的一个优点是包含许可颁发者的加密信息的工具处于许可颁发者的控制之下。
多级被许可软件
{Licensed...}表格可以扩展以支持多个许可颁发者-被许可者的关系。例如,该系统能支持如图11中所示关系。在此例中,插入小程序可以被许可给内容供应商以便开发和部署其应用。在此情况下,许可颁发者是插入小程序的建立者以及被许可者是内容建立者/供应商。依次而言,内容供应商能够向用户许可该内容。在此情况下,许可颁发者是内容建立者/供应商以及被许可者是用户。
这些操作与先前描述的例子是平行的,但现在扩展以便处理两个许可颁发者-被许可者关系。客户100发送对内容201的请求601至内容服务器200。内容服务器200通过发送包含内容201的回答而作出响应。插入小程序103扫描内容201以便寻找{Licensed...}表格,而在此情况下遇到两个许可表格,例如:
{Licensed by Alpha Company under contract A23}
{Licensed by Bravo Company under contract B99}选代地,可以将多个许可表格合并或嵌套。
一个{Licensed...}表格与插入小程序供应商和内容供应商之间的一个许可有关。插入小程序103接触603插入小程序许可服务器403(a)以便确认相关的{Licensed...}表格有效。许可服务器403(a)从许可数据库406(a)中检索合适的信息并且发送响应604至插入小程序103。
另一个{Licensed...}表格与内容供应商和终端用户之间的一个关系有关。再次,插入小程序103发送消息605至内容许可服务器403(b)以便确认相关的{Licensed...}表格有效。许可服务器403(b)从许可数据库406(b)中检索合适的信息并且发送响应606至插入小程序103。
取决于收到的响应,插入小程序103对内容作相应的操作。两个{Licensed...}表格中的每一个可以具有不同设置,例如不同的确认有效服务器和不同优惠或高速缓存超时周期,因而允许对许可的交互操作进行相应的剪裁。例如,插入小程序供应商可能为此具体的被许可者提供长的高速缓存超时周期以便使对插入小程序供应商的许可服务器的通信最少。
在本发明的附加实施例中,此一般方案可进一步扩展以使被许可的模块能够互相访问。例如,来自不同来源的内容和软件模块能够互相访问。在CURL中,以下表格:
{require<file locator>...}规定包含该{require...}表格的模块的执行取决于对另一个由规定的文件定位符(通常是统一资源定位符(“URL”))所识别的模块的访问。当插入小程序遇到这一依赖关系时,它拾取和输入该规定的或“要求的”模块。被要求的和发出要求的模块两者都包含可用于规定相同或不同的许可、许可颁发者和被许可者的{Licensed...}表格。在最一般和最有意义的情况下,这些模块来自不同开发商。
例如,公司B可能提供其他Curl开发商感兴趣的高性能Curl音频软件B.curl,而公司A可能生产一个需要B.curl的Curl应用程序A.curl。A和B两者都是Curl Corporation的被许可者;而向A提供附加支持以使它也成为B的被许可者是有用的。为此目的,我们提供的系统能提供一种机制,用于允许第三方软件卖方利用我们发明的各方面来管理他们的软件许可。
以下出现于文件中的表格
{Licensor<name of licensor>
<encoded binary data>)}用于建立以下关系:即包含内容的模块经受在涉及插入小程序本身的约束之外的许可约束。许可颁发者部分的名称是普通文本,以及以人们可以阅读的方式识别许可颁发者(以及可选地其他相关细节)。编码二进制数据可能以加密形式包括一个URL或管理所标示许可的一个或多个服务器的其他识别符。在以上例子中,表格
{Licensor B Corporation
<encoded binary data>}将出现于文件B.curl内以便标示其用途经受由B Corporation所施加的许可约束。
用于标示对外部内容的依赖关系的{require...}表格可能包括一个可选的{Licensed...}表格,作为一个词组恰当地嵌套于{require...}表格之内的。该{Licensed...}词组具有一个与早已描述过的{Licensed...}表格类似的结构和功能,其不同处只是它埋嵌于{require...}表格内以及标示它属于一个由许可颁发者在所需模块中声明的许可。
在一个例子中,文件A.curl可能包括以下表格:
{require“http://www.B.com/B.curl”
{Licensed by A
<encoded binary data>}
...}其中http://www.B.com/B.curl是一个URL或其他对A.curl所需要的模块的访问,以及其中{Licensed...}词组在其编码二进制数据内包含先前描述的B的许可服务器为确认A的许可状态有效而所需的部分。在遇到A.curl内的以上各表格中的一个时,插入小程序将首先装载B.curl以便按照需要合适地满足所有其{require...}表格以及确认各许可有效。然后如前所述地,插入小程序确认A对B.curl的使用有效即在{require...}表格中使用来自{Licensed by A...}表格中的数据以及一起使用在B.curl内找到的{Licensed...}表格中识别的服务器。B可以提供隐式许可,如前所述地使用B的服务器来动态地确认每个{Licensed...}词组有效。
作为A与B的许可安排的一部分,A从B接收一个确认工具,它允许A将{Licensed...}词组加至由A所建立的模块的{require...}表格中。此工具一般与以上描述的确认工具具有相同方式,其不同点在于它生成一个词组而不是一个最高级{Licensed...}表格。
使用此方案,B能够许可A使用B.curl,而不是简单地许可所有A的客户对B.curl的每次使用。如图12中所述,B能够阻止未被许可的D.curl使用B.curl,即使当A.curl正在对给定的客户有收益地使用B.curl时也如此。B.curl依赖于插入小程序的集合功能模块的能力以便只能获得批准的交互操作和相互依赖关系。许多现代操作系统提供对它的支持,犹如通常系统对现代代码那样,例如Java(Sun Microsystems,inc.Inc.,PaloAlto,CA)和Safe-TCL(The Safe-Tcl Security Model,Jacob Y.Levy andLaurent Demailly,Sun Microsystems Laboratories;John K.Ousterhoutand Brent B.Welch,Scriptics Inc.USENIX Annual Technical Conference(NO 98),1998,June 15-19,1998,New Orleans,Louisiana,USA)。此外,B.curl能够类似地在各单独地保持的许可的情况下向附加卖方要求被许可软件。事实上,插入小程序的供应商能够扩展其许可、优点至任意软件卖方。
所描述实施例的许多变动方案对于熟悉技术的人是明显的。例如,某些或全部内容可以用二进制编码,或者作为一台实际或虚拟机器的指令,或者作为需要进一步解释或翻译的中间表示形式。
不同附加数据域可以包括于与由客户插入小程序所提供的附加特征相关的{Licensed...}表格中。例如,许可颁发者可以提供附加用户证实特征,例如要求插入小程序向用户请求识别码和密码信息,并且可选地证实被许可者的服务器。
在本发明的附加实施例中,插入小程序可以初始地只包含那些为解释{Licensed...}表格所需要的指令和为装载处理该内容可能需要的附加的模块或插入小程序所需要的指令。在此情况下,插入小程序或{Licensed...}表格将识别至少一个能够提供附加的模块或插入小程序的服务器。这些附加模块被下载和存于客户计算机上以供需要时用。可选地,客户可以根据上一次访问的时间或这类替换量度来动态地释放无用模块。这提供一个非常小的插入小程序,而当需要处理内容和任何包括于其中的{Licensed...}表格时,随后自服务器中下载所有其他模块。释放的模块所占空间然后可以重新声明为提供重新使用,从而允许建立具有最小模块存储区域的客户计算机。
本发明的机制包括证实操作和确认操作的各单元,它们可能会发挥与本发明目的无关的有用作用,例如遵循私有性或安全性目标。在分享这些附加目标的本发明应用中,{Licensed...}表格内信息的编码可以有利地与服务于这些附加目的的其他信息和机制合并。许可操作和安全性机制的合并可以用熟悉技术的人明显地知道的各种方式来进行优化,从合并的实施中消除冗余的信息和机制。
客户执行机构不必是如此处所述的浏览器插入小程序。它可以是一个应用程序、小应用程序、动态地链接的库(DLL)、ActiveX控制或任何其他形式的可执行代码。