用于安全对象操作的密钥界面的制作方法

文档序号:6430325阅读:124来源:国知局
专利名称:用于安全对象操作的密钥界面的制作方法
技术领域
本发明一般涉及例如通过应用编程界面(APIs),有选择地向可靠伙伴提供对诸如功能模块等的代码的访问权的领域。
背景技术
软件开发者和/或销售商经常为客户提供升级,增强,增加,修改等服务,例如通过网络传输,邮件或信使递送,以及其他相似的方法。提供给客户或潜在客户的软件视付款或某一较早的付款或者协议而定,如购买以及某一软件应用许可证的协议。提供的软件可能包括该软件的升级,增强,增加等,或者该提供的软件可能是用于增补该核心软件的性能或能力的附加功能模块或类似模块(这里被统称为该核心软件的“修改”)。另外,当源代码具有所有权特性时,经常希望将该软件以二进制形式而非源代码提供给用户。通过提供的应用编程界面(API),这就允许用户以所提供的二进制代码为基础开发附加软件和功能,而不用像使用源代码可能遇到的那样仔细检查该软件的底层操作。
在很多情况下,软件的不同版本可能包括功能的不同子集或“等级(tier)”来满足不同的用户。举例说明,一个软件可能有基本版和包含超出所述基本版的附加功能的增强版。限制对功能等级进行访问的典型方法是对不同的客户提供该二进制代码的不同版本,每个版本都只执行指定用户有权访问的功能等级。因此,对任何给定的软件产品可能都有由软件开发者/销售商维持的多种不同的许可证和被许可人的分类。由于必须测试和支持多种变体以及给希望添加新功能等级的客户所带来的困难,在添加新功能等级时要求客户将可递送的新的二进制代码集成以便改变他们的功能等级,所以提供代码的多种变体是很昂贵的。其后果是开发者/销售商经常必须花费大量的资源用于开发,验证,编译,维护,储存和/或服务该核心软件的经常是大量的版本。
因此,一种用于限制对软件中功能等级的访问的改进的系统和方法是有利的。

发明内容
本发明减轻或解决了上述在已知解决方案中的限制,以及已知解决方案中其他未指明的缺陷。对于本领域的技术人员来说与本发明有关的大量优点是显而易见的,包括设计和资源的经济性,较大系统的性能,灵活性,节省费用等。
本发明提供了一种使软件提供商或销售商能够以可靠,可控的方式发布升级,修改,增强等,以及完整的软件包的方法和系统。本发明使软件提供商能够基于通过API或浏览器和其他图形用户界面(GUIs)进行的密钥验证来限定软件的客户或潜在客户对该软件的访问。
当源代码具有所有权特性时提供商经常希望向客户提供二进制形式的代码而非源代码。这样做的一个希望的优点是使该提供商的客户能够,通过给定的API,以提供的二进制代码为基础开发附加的软件和功能,该附加软件应该被称为“客户添加服务等级(CustomerAdded Service Tier)”。相似的,提供商可以在提供的二进制代码中建立功能等级并且例如通过付费或根据协定条款来限定分别对每个等级的访问。这种提供商配给的功能等级应该被称为“二进制服务等级(Binary Service Tiers)”。基于客户是否已经购买了进行这种扩展的权力,客户用客户添加服务等级来在二进制代码中添加他们自己定制的等级。而基于例如客户购买了对一个或多个功能等级的访问权,提供商用二进制服务等级向其客户配给对附加内置功能的访问。另外,所述客户添加服务等级可以实现由所述二进制服务等级提供的功能。
经常希望阻止那些还没有为功能等级付费或相反未被授权的客户访问每个功能等级(客户添加服务等级和二进制服务等级二者)。提供商用二进制服务等级提供相同核心软件的不同版本,每个版本只执行特定客户可能访问的功能等级。以这种方式,提供商能够用二进制服务等级来限制客户创建客户添加服务等级的能力,因此有选择性的允许或不允许客户扩展。
这里描述的本发明的步骤和方法提供了用于控制对功能等级访问的可靠方法。它可以通过字符串和密钥对来实现。作为用于等级操作的API(包含在二进制代码中)的一部分,客户提供等级标识符和密钥。该二进制代码将在该等级标识符上进行验证处理,生成验证密钥。如果客户提供的密钥与该验证密钥不匹配,则该操作失败。
用于控制访问的进程,程序或模块最好只包含在二进制代码中,这样就阻止了客户开发新的等级并计算相关的密钥。客户能够获得他们已付费或以其他方式被授权获得的功能等级的密钥。尽管功能等级可以由客户添加,但是如果客户还没有为这种能力付费或在其他情况下被禁止则会被限制使用这个新等级。
在一个实施例中,提供了一种用于控制对一个第一软件的一个特定功能进行访问的方法。所述方法包括以下步骤在所述第一软件中接收与所述第一软件的至少一个所需的功能相关的密钥,其中该密钥由一个第二软件提供,验证该密钥,并且当该密钥被验证后允许所述第二软件访问所述至少一个所需的功能。
在另一个实施例中,给出了一种用于控制对一个第一软件的至少一个功能进行访问的系统。所述系统包括用于对一个第二软件提供的密钥进行验证的密钥验证模块,所述密钥与将被所述第二软件使用的该第一软件的至少一个期望的功能相关,以及用于连接所述第二软件并向该第二软件提供至少一个期望的功能的等级功能应用编程界面(API)。所述系统还包括等级访问控制模块,该模块可操作地与所述密钥验证模块及所述等级功能API连接并且用于当密钥被所述密钥验证模块验证时指示所述等级功能API允许该第二软件访问所述第一软件的所述至少一个期望的功能。
在另一个实施例中,给出了一种用来控制对一个第一软件的至少一个功能进行访问的计算机可读媒介。所述计算机可读媒介包括一个指令集,该指令集用于操纵处理器从一个第二软件中接收与所述第一软件的至少一个期望的功能相关的密钥。所述的指令集还用于操纵该处理器验证密钥并且当该密钥被验证时允许所述第二软件访问所述第一软件的所述至少一个期望的功能。
根据一个附加的实施例,给出了在分布式通信网络的网关中的一种用于控制对所述网关的一个第一软件的至少一个功能进行访问的系统。所述系统包括用于验证由一个第二软件提供的密钥的密钥验证模块,该密钥与将被所述第二软件使用的第一软件的至少一个期望的功能相关,以及用于连接所述第二软件并向所述第二软件提供所述第一软件的所述至少一个期望的功能的等级功能应用编程界面(API)。所述系统还包括等级访问控制模块,该模块可操作地与所述密钥验证模块及所述等级功能API连接,并且用于在密钥被密钥验证模块验证时指示等级功能API允许所述第二软件访问所述至少一个期望的功能。
在另一个实施例中给出了一种操作系统。所述操作系统包括用于验证由所述操作系统外的软件所提供的密钥的密钥验证模块,该密钥与将被所述外部软件使用的该操作系统的至少一个期望的功能相关,以及用于连接所述外部软件并向所述外部软件提供该操作系统的所述至少一个期望的功能的等级功能应用编程界面(API)。所述操作系统还包括等级访问控制模块,该模块可操作地与密钥验证模块及等级功能API连接,并且用于当该密钥被密钥验证模块验证时指示所述等级功能API允许该外部软件访问所述操作系统的所述至少一个期望的功能。
在另一个实施例中给出了一种网络协议堆栈。所述网络协议堆栈包括用于验证由所述网络协议堆栈外部的组件提供的密钥的密钥验证模块,该密钥与将被所述外部组件使用的所述网络协议堆栈的至少一个期望的功能相关,以及用于连接所述外部组件并向所述外部组件提供所述协议堆栈的所述至少一个期望的功能的等级功能应用编程界面(API)。所述网络协议堆栈还包括等级访问控制模块,该模块可操作地与密钥验证模块及等级功能API相连,并且用于当密钥被所述密钥验证模块验证时指示所述等级功能API允许所述外部组件访问所述网络协议堆栈的所述至少一个期望的功能。
本发明的一个目的是提供一种用于控制对单个或多组功能等级进行访问的可靠方法,客户可以用该方法在已存在的基本软件中或作为其附属物开发所需的功能。
本发明的另一个目的是为了控制客户利用提供商提供的二进制代码能够访问哪些功能等级。
本发明的另一个目的是使提供商用可靠可控的方式向他们的客户发布软件变得更简单。
本发明还有另一个目的是允许客户以键控的方式访问提供商的二进制代码并在可访问的二进制服务等级的基础上生成客户添加服务等级。
本发明可以在图形用户界面(GUI)开发组件中被实现,如被包括在嵌入式万维网服务器中,也可以被加入到包括基于万维网的界面的产品中。本发明可以被包含在为了使用户能够生成基于万维网的界面而设计的软件包中。它本身可以被包含在硅技术中的集成设计服务软件中,如使用由GlobespanVirata Incorporated of Red Bank,NewJersey提供的ISOSTM软件或者任何软件系统的辅助部分。
本发明的其他特征和优点参考下面的附图在随后的描述中阐述。


从下边的详细描述及附图中,本发明的目的和优点对本领域中的技术人员是显而易见的,附图中相同附图标记用来指示相同单元,其中图1示出了根据本发明至少一个实施例说明用于限制访问二进制目标代码单一构造的不同功能的示意性方法的流程图。
图2示出了说明网关的万维网服务器的原理图,所述万维网服务器根据本发明的至少一个实施例实现了图1的示意性方法。
图3示出了说明网关的网络协议堆栈的原理图,所述网络协议堆栈根据本发明的至少一个实施例实现了图1的示意性方法。
具体实施例方式
下边的描述是为了通过提供一些特殊实施例以及与有选择性的允许通过APIs访问二进制代码以及它的功能等级有关的细节,如通过使用密钥获取特定功能的访问权,来给出对本发明的全面的理解。但是可以理解的是本发明并不局限在这些仅作为示意的特殊实施例和细节中。还可以理解的是根据已知系统和方法,一个本领域的普通技术人员将因为本发明在大量可选实施例中的目的和优点而理解本发明的应用,这些目的和优点依赖于特定的设计和其他需要。本发明可以与众多API和编程语言,包括但不局限于Java,C和C++,一起使用。
现在参考图1,图1示出了说明控制对二进制代码单一结构的不同功能的访问的示意性进程的流程图。在所述被说明的示意性实施例中,客户开发出软件(客户开发软件130)来实现由软件开发商/销售商提供的核心软件110的功能子集。所述核心软件110可以以二进制代码或其他优选格式提供给客户,由此限制客户辨别核心软件110所执行的所有权处理的能力。在后面用术语“核心软件“和“客户开发软件”来区分两种软件,“核心软件”包括具有一个或多个功能的受限访问等级的软件,而“客户开发软件”包括使用一个或多个这些等级的软件。举例说明,所述核心软件110可以包括操作系统(OS)而客户开发软件可以包括操作系统之外的软件应用,该软件应用用于使用操作系统的一个或多个功能来实现一个或多个任务。
正如上面所讨论的那样,功能等级可以包括客户添加服务等级(即由客户开发和添加的作为客户开发软件130的一部分的功能)和二进制服务等级(即在原核心软件110中开发的功能等级)。在图1的例子中,核心软件110提供两个二进制服务等级二进制等级122和二进制等级124。同样的,在该例子中,客户开发软件130包括两个客户添加服务等级客户等级126和客户等级128。每个功能等级包括由核心软件110和/或客户开发软件130提供的全部功能的子集。
与各个等级相关的功能子集可以相互不被计入其他等级的功能中;等级的功能可以重叠;一个等级的功能可以是另一个等级功能的子集;或他们的组合。例如,假设核心软件110有20个客户开发软件130可以通过一个或多个API访问的功能。在这种情况下,例如二进制等级122可以包括其中10个功能,二进制等级124可以包括其余10个功能。同样,二进制等级122也可以包括例如12个功能而二进制等级124除了包括6个包含在二进制等级122中的功能外还可以包括其余8个功能。另外,二进制等级124可以包括所有20个功能而二进制等级122可以只包括其中5个功能,因此二进制等级122是二进制等级124的子集。
通过联合在不同功能等级中的全部功能的不同子集,核心软件110的开发者/销售商可以向不同的客户提供不同的功能子集。在一个实施例中,密钥验证被用来限制只有这样的客户能访问功能等级,这些客户被授权,如通过购买或许可证协议,访问相应的功能等级。图1示出了访问由等级122,124,126和/或128提供的功能的示意性进程,在后续段落中有详细的描述。
最初,核心软件110的开发者/提供商向客户提供一个或多个用于由客户购买的或相反分配给客户的功能等级的密钥(例如密钥104)。利用对由相应密钥给出的功能等级的访问,客户于是可以开发软件(客户开发软件130)来与由核心软件110提供的公共API相连。
因此,在至少一个实施例中,该客户开发软件130包括密钥登记模块132,该模块用于向使用密钥API112的核心软件110提供与期望的功能等级相关的标识符102和相应密钥104。在一个实施例中,该标识符102包括客户要访问的功能等级的参考,如名称,号码,或其他与所述期望的等级相关的标识符。
举例说明,所述二进制等级122可以包括包含关于功能的输入/输出(I/O)基本集的被视为“基本I/O”的功能等级,而所述二进制等级124可以包括包含I/O功能基本集和附加I/O功能的被视为“增强I/O”的功能等级。在这种情况下,该密钥登记模块132可以把作为标识符102的字符串“基本I/O”以及由开发者提供的相关密钥104传给密钥API112以便访问由所述二进制等级122提供的功能,或者该密钥登记模块132可以传递作为标识符102的字符串“增强I/O”以及相关密钥104以便访问二进制等级124的功能。所述与给定功能等级相关的密钥104可以包括被本领域的技术人员熟知的密钥的任何不同代表,如字符串,数串,二进制序列,或他们的组合。正如下面详细讨论的那样,该密钥104可以用随机数产生,该随机数从与该功能等级相关的标识符中产生,或者可以用其他可接受的技术产生。
在本例中,所述密钥API112向密钥验证模块114提供了标识符/密钥,其中该密钥验证模块114使用客户提供的标识符/密钥来执行密钥验证进程,以验证提供的密钥是否与关于被要求的功能等级的实际密钥匹配。在一个实施例中,该密钥验证进程包括基于在所述被提供的标识符102上进行的运算来生成验证密钥,然后比较该被验证密钥与被传递的密钥104来确定其是否匹配。在另一个实施例中,所述验证模块114包括例如一列或一表格与不同功能等级相关的验证密钥。当标识符102和密钥104被客户开发软件130提供时,所述密钥验证模块114,在这种情况下,利用标识符102作为索引从该列中访问验证密钥。然后比较从该列中得到的验证密钥与提供的密钥104以便确定匹配。在这两种情况下,如果提供的密钥104与产生的密钥/存储的密钥匹配,该密钥104被认为通过验证。否则该密钥104被认为未通过验证。
由于对所述底层密钥验证进程的了解可能导致对由核心软件110提供的功能等级的未授权的访问,所以希望阻止客户或其他第三方了解由所述密钥验证模块114执行的密钥验证进程。因此,在至少一个实施例中,被所述密钥验证模块114使用的密钥验证进程完全在核心软件110中实现。该密钥验证模块114,在这种情况下,对客户而言是“黑盒子”,其中客户开发软件130输入标识符102和/或密钥104,而该模块输出提供的密钥的有效性(即通过验证或未通过验证),而客户不需了解被执行的验证进程。
如果提供的密钥104成功的被所述密钥验证模块114验证,那么该密钥验证模块114就通知所述等级访问控制模块118,该等级访问控制模块然后允许访问由提供的标识符102和被验证密钥104代表的功能等级。在一个实施例中,该等级访问控制模块118用于通过向所述等级功能API120提供信号来允许访问功能等级。该信号表明,一旦实现了对适当的二进制等级的授权访问,则该客户开发软件130被授权实现被认可等级的功能。
所述等级功能API120可以通过不同的方式被实现。例如,在一个实施例中,对每个功能等级实现了不同的等级功能API120。在这种情况下,所述等级访问控制模块118能够使客户开发软件130能够使用一个给定功能等级的等级功能API120,例如通过修改能够访问等级功能API120和等级访问控制模块118二者的变量的值(例如把变量“使能”的值从“否”改为“是”)。在另一个实施例中,该核心软件110包括大量等级功能API120,每个API120可以与给定等级的功能子集相关。在这种情况下,每个功能等级被一个或多个等级功能API120的组合代表。该等级访问控制模块118能够通过实现每个与给定等级的功能相关的API120来实现访问该给定的功能等级。在另一个实施例中,所述等级功能API120可以用来访问多于一个的功能等级的功能。在这种情况下,所述等级访问控制模块118能够通过指示API120允许客户开发软件130访问通过该API120连接的功能子集来使访问给定的功能等级成为可能,该功能子集是期望的等级的功能的代表。
在该等级访问控制模块118已经指示所述等级功能API120允许客户开发软件130访问期望的功能等级后,该客户开发软件130就能够利用作为客户开发软件130和核心软件110的界面的等级功能API120来使用核心软件110的被允许的功能。
正如上边讨论的那样,所述密钥验证模块114用于使用一个或多个密钥验证进程来验证由客户开发软件130的密钥登记模块132提供的密钥104。任何不同的密钥验证进程可以被实现。例如,在一个实施例中,核心软件110的开发者/销售商能够利用例如随机数产生器生成密钥并把每个随机数密钥分配给不同的功能等级。在这种情况下,开发者能够向客户提供与特定功能等级相关的随机数密钥。该客户然后可以修改客户开发软件130的密钥登记模块132来向密钥API112提供该随机数密钥(密钥104),以便获得对相应功能等级的访问。该密钥验证模块114然后比较被提供的密钥和他的密钥版本来确定匹配。然而,要注意的是,使用存储的密钥的密钥验证进程可能需要额外数目的存储器来存储核心软件110,特别是通过二进制代码实现相对大量的功能等级的情况下。
在另一个实施例中,所述密钥验证进程是基于密钥的,该密钥是从使用与期望的功能等级相关的被提供的标识符102执行的计算或其他操作中发展来的。下边的伪代码函数“CompareKey”说明了一个使用被提供的标识符的示意性密钥验证进程<pre listing-type="program-listing">bool CompareKey(string Name,int ProvidedKey){ int CalculatedKey=y1;//initialize CalculatedKey //to arbitrary value y1 int Index; int RNum[8]={x0,x1,x2,x3,x4,x5,x6,x7} for(i=0;i<strlen(Name);i++) { //Mask off 3 bits to get index into RNum Index=Name[i]&amp;amp;0x07; CalculatedKey=CalculatedKey+(Name[i]*RNum[Index]); } if(ProvidedKey==CalculatedKey)return True else return False;}//End CompareKey</pre>
在上述函数“CompareKey”中,用由所述密钥登记模块132提供的所述标识符102(字符串“Name”)和具有八个随机数x0至x7的阵列“RNum”生成所述验证密钥(整数“CalculatedKey”)。CalculatedKey的初始值被设置为任意数y1。然后CalculatedKey的结果值与由所述密钥登记模块132提供的密钥104(整数“ProvidedKey”)的值相比较。如果CalculatedKey的值等于ProvidedKey的值(即提供的密钥104与生成的验证密钥匹配),则函数CompareKey返回布尔值“真”,证明提供的密钥104与验证密钥匹配并因此允许访问相应功能等级。否则,函数CompareKey返回布尔值“假”,说明提供的密钥104与所述验证密钥不匹配并拒绝客户开发软件130访问所述功能等级。
利用相同的进程和y1的值以及被用于使用与特定等级相关的标识符102(字符串“Name”)生成所述CalculatedKey的阵列RNum能够生成提供给客户的使其获得对特定功能等级访问权的密钥。因此,能够使用所述函数CompareKey来验证提供给客户的针对所述核心软件110实现的部分或全部功能等级的密钥而不用为每个功能等级存储不同的验证密钥。尽管已经讨论了大量示意性密钥验证进程,但是也可以实现其他密钥验证进程而并不违背本发明的精神和范围。
本发明可以在任何不同的软件环境中被实现,其中基于由核心软件的用户/客户/开发者获得的授权来限制访问该核心软件的特定功能。举例说明,上面描述的示意性密钥验证进程和系统可以作为例如通信网络中的客户住宅设备(CPE),例如DSL调制解调器或光网络终端(ONT),的操作系统(OS)的一部分被实现。该OS的开发者能够产生与该OS的一个或多个受限访问功能相关的一个或多个密钥。希望设计扩展该OS功能(如通过添加图形用户界面或实现所述CPE的扩展特征)的“外部”软件(即并非所提供OS软件的一部分的软件)的其他开发者能够获得与被用于所述外部软件中的所述一个或多个所需的受限访问功能相关的密钥。于是开发者就可以修改软件来向该OS提供这些一个或多个密钥以访问被所述外部软件使用的所述期望的功能或功能组。图1系统和方法的其他示意性实现在下面参考图2和3说明。
现在参考图2,图2根据本发明的至少一个实施例示出了实现被限制功能访问的示意性分布式网络200。所述网络200包括一个或多个通过网关230与外部网络250(如广域网)连接的一个或多个网络设备202-206。所述网络设备202-206可以包括用于通过通信网络进行通信的任何不同用户设备,如台式计算机,笔记本计算机,无线个人数字助理,手机和类似设备。所述网关230用于促进所述网络设备202-206与所述外部网络250上设备之间的通信并且可以包括用来实现连接一个网络上的设备与另一个网络上的设备的任何不同网关设备,如数字用户线(DSL)调制解调器,电缆调制解调器,拨号调制解调器,路由器,交换机,集线器和相似设备。所述网关230可以包括位于所述网络的最终用户处的CPE设备,如DSL调制解调器,或位于所述最终用户与所述外部网络250上的相应设备间的中间设备,如路由器。
所述网关230包括用于促进与所述外部网络250连接的网络界面240(如理想界面)和与一个或多个所述网络设备202-206连接的网络界面212,214之间的数据传递的网络处理器220(如由GlobespanVirata Incorporated of Red Bank,New Jersey提供的HELIUMTM200网络处理器)。所述网络处理器220(或所述网关230的其他处理器)还用于支持嵌入式万维网服务器210的执行(图1的核心软件110的一个实施例)。
所述嵌入式万维网服务器210,在一个实施例中,被用于生成并向管理员或其他用户和提供一个或多个网页260,如超文本标记语言(HTML)网页,可扩展标记语言(XML)网页和其他类似网页。所述网页260包括代表所述网关230的一个或多个组件的状态和/或操作的信息,并可以包括一个或多个客户可配置特征,如操作参数/指示符,网页标识和类似特征。例如,所述网页260可以包括所述网络处理器220的状态指示符,本地界面212-214,外部界面240和类似特征。因此,管理员或其他用户能够用由所述万维网服务器210提供的网页260来监控所述网关230的操作,改变不同的操作参数等。
正如将被了解的那样,所述嵌入式万维网服务器210和所述网络处理器230可以在具有不同设置的不同网关230中被实现。因此,所述嵌入式万维网服务器210的软件开发者/销售商特别希望减少用于为不同客户开发,维护,验证和提供所述嵌入式万维网服务器210的不同版本所需的工作和花费。因此,开发者/销售商能够实现本发明来为嵌入式万维网服务器210提供核心软件产品,该产品具有支持所述多种不同的可能网关设置的全部功能,并同时将所述网关的开发者(即所述嵌入式万维网服务器210的客户)限制在那些所述网关开发者被授权访问的功能子集/等级中,这种授权可以是来自许可证协议或向该嵌入式万维网服务器开发者付费。
用以下例子来说明。在这个例子中,假设所述嵌入式万维网服务器210的开发者已经合并了两个功能等级,“标准”等级和“增强”等级。例如所述标准等级包括对单一本地界面(在本例中的界面212,如以太网界面)的功能支持,其中允许该界面212的设备驱动(图1客户开发软件130的一个实施例)用一个与所述嵌入式万维网服务器210相关的类寄存器222记录不同的类,这些类代表该界面212的操作的不同方面。例如,一个所述类可以包括用于说明所述界面的物理层的连接状态的“物理层”类。另外,功能的标准等级允许界面212的设备驱动将不同的类值写入类寄存器222中,其中所述类值代表界面212的相应方面的状态或其他指示符。所述嵌入式万维网服务器210用所述类和在类寄存器222中的类值来生成网页260,该网页260说明所述网关230的不同组件的操作/状态。例如,利用由界面212的设备驱动提供的信息,该网页260能够生成用于显示关于所述界面212的信息的网页260的界面状态段(section)262。
虽然对所述网关230的某些应用而言,单一本地界面212的使用就足够了,但在其他应用中网关开发者可能希望给所述网关230添加附加的本地界面214,如通用串行总线(USB)界面,以供网络设备202使用。因此,在本例中,被嵌入式万维网服务器210实现的增强功能等级包括第二本地界面(界面214)的功能支持。以与所述标准功能等级相似的方式,所述增强功能等级允许所述界面214的设备驱动记录下与所述类寄存器222的界面214相关的不同类并且写下/更新与所述被记录类相关的值。然后所述嵌入式万维网服务器210能够用由所述类寄存器222的界面214的设备驱动提供的信息来生成用于显示关于所述界面214的信息的界面状态段264。
由于种种原因,所述嵌入式万维网服务器210的开发者可能希望对选定的部分客户限制访问所述增强功能等级。因此,该万维网服务器开发者能够为所述增强功能等级生成标识符和密钥并把所述标识符和/或密钥提供给每个授权客户。然后该授权客户就能够在所述本地界面214的设备驱动(所述客户开发软件130的一个实施例,图1)中实现所述密钥登记模块132(图1)。所述设备驱动的密钥登记模块132通过由所述嵌入式万维网服务器210实现的密钥API112(图1)向所述嵌入式万维网服务器210的密钥验证模块114(图1)提供所述标识符和密钥。所述密钥验证模块114使用上边描述的一个或多个密钥验证进程验证该密钥并且如果该密钥得到验证则通知等级访问控制模块118(图1)允许访问。然后所述等级访问控制模块118命令与所述增强功能等级相关的等级功能API120(图1)允许界面214的设备驱动访问所述类寄存器222。
然而,如果未被授权客户想通过提供错误密钥或不提供密钥使用所述增强等级的功能,则所述密钥验证模块114检测到所述错误/不存在密钥并且向所述等级访问控制模块118指出该密钥的未验证状态。所述等级访问控制模块118注意到所述密钥未验证,就能够或者继续在缺省状态下运行,其中禁止访问所述增强功能等级,或者所述等级访问控制模块118甚至可以进一步指示所述等级功能API120禁止访问在其他情况下可访问的功能等级。
在所述本地界面114的设备驱动被允许访问所述类寄存器222后,该设备驱动能够记录与所述本地界面114相关的类并且更新与所述类相关的值。因此,当嵌入式万维网服务器210产生网页260时,所述嵌入式万维网服务器210能够用由所述类和界面114的设备驱动记录的类值来生成界面状态段264供管理员或其他用户检查。
通过使用具有能被不同种类的客户访问的多重功能等级的核心软件(所述嵌入式万维网服务器210),所述嵌入式万维网服务器210的开发者能够不管客户的访问权情况给每一个客户提供相同的软件。但是,那些被授权访问所述增强功能等级的客户可以修改所述附加界面114的设备驱动来向核心软件提供与所述增强等级相关的密钥和标识符,以获得对所述增强等级的功能的访问权。其结果是,所述嵌入式万维网服务器210的开发者就只需维护所述软件的一个版本。另外,如上面讨论的那样,在一个实施例中,所述与功能等级相关的密钥是基于对与所述功能等级相关的标识符进行的运算来生成和验证的。在这种情况下,所述嵌入式万维网服务器210的开发者并不需要维持提供给客户的密钥名单。
图3根据本发明的至少一个实施例示出了实现图1的示意性方法和系统的网络协议堆栈。在这个说明例子中,所述网络协议堆栈314作为网关330的网络处理器320的操作系统310的一部分而被实现,其中所述网关330用于促进通过界面212,240进行的界于网络设备202和外部网络250之间的双向通信。但是,所述网络协议堆栈314可以在任何不同的应用中被实现而不违背本发明的精神和范围。
所述网络协议堆栈314能够包括一个网络协议堆栈或其组合,如远程通信协议/网际协议(TCP/IP),IP上的语音(VoIP),简单网络时间协议(SNTP),Utopia和相似协议。在至少一个实施例中,所述网络协议堆栈314包括提供给基本客户的标准功能等级,以及一个或多个提供给授权客户的受限访问功能。因此,开发者能够维持所述OS310的单一版本而又能对不同的客户提供所述OS310的不同功能级别。
在接受到被所述网络处理器320使用的所述OS310的结构后,授权客户能够开发外部软件312以便与所述OS310一起运行来实现所述网络协议堆栈314的被选择的受限访问功能。然后所述OS310和外部软件312就能够被装入所述网络处理器320中并在所述网关330运行时被使用。
举例说明,所述网络协议堆栈314除了包括用于过滤界于所述外部网络250和所述网络设备202之间的分组的防火墙功能316外,还可以包括具有典型TCP/IP堆栈功能的TCP/IP堆栈。那些希望不仅使用所述基本TCP/IP功能还使用所述防火墙功能316的客户能够要求所述OS310的开发者提供密钥/标识符对。获得所述密钥/标识符对以后,被授权的客户就能够修改他们的外部软件312来向所述网络协议堆栈314的密钥验证模块114(图1)提供所述密钥/标识符对,以便使其能够访问/操作所述防火墙功能316。如果该密钥得到验证,所述密钥验证模块114命令所述网络协议堆栈314的等级访问控制模块118(图1)允许所述协议堆栈314和/或所述外部软件312通过,例如,所述等级功能API120(图1)来使用所述防火墙功能316。或者,所述防火墙功能316还可以作为使用所述网络协议堆栈314的功能的客户开发软件来实现,其中所述客户开发软件用于向所述网络协议堆栈314提供所述密钥/ID对以获得对所述数据流(即所需功能)的访问权,该数据流能够被过滤和/或进行其他处理以提供所述防火墙功能316。
根据在此公开的本发明说明和实践,本发明的其他实施例、应用和优点对本领域的技术人员而言是显而易见的。所述说明书和附图应该仅被视为示意性的,因此本发明的范围只由后面的权利要求和及其等同物限定。
权利要求
1.一种用于控制对于第一软件的某一功能进行访问的方法,所述方法包括以下步骤在所述第一软件中接收与所述第一软件的至少一个期望的功能相关的密钥,其中所述密钥由第二软件提供;验证所述密钥;以及当所述密钥通过验证时,允许所述第二软件访问所述至少一个期望的功能。
2.根据权利要求1的方法,还包括步骤当所述密钥未通过验证时,禁止所述第二软件访问所述至少一个期望的功能。
3.根据权利要求1的方法,其中所述至少一个期望的功能包括二进制服务等级。
4.根据权利要求3的方法,其中所述至少一个期望的功能包括二进制服务等级和客户添加服务等级。
5.根据权利要求1的方法,其中所述至少一个期望的功能包括客户添加服务等级。
6.根据权利要求1的方法,还包括步骤在所述第一软件中接收来自所述第二软件的代表所述至少一个期望的功能的标识符。
7.根据权利要求6的方法,其中所述密钥和所述标识符在所述第一软件中通过应用编程界面接收。
8.根据权利要求6的方法,其中所述验证密钥的步骤包括至少部分地基于所述标识符生成验证密钥;比较所述密钥和所述验证密钥;以及其中所述密钥基于所述比较而得到验证。
9.根据权利要求8的方法,其中当所述密钥与所述验证密钥匹配时,所述密钥通过验证,当所述密钥不同于所述验证密钥时,所述密钥未通过验证。
10.根据权利要求1的方法,其中所述第一软件包括二进制代码。
11.根据权利要求1的方法,还包括以下步骤生成与所述期望的功能等级相关的密钥;以及将所述密钥提供给所述第二软件的开发者以供所述第二软件使用。
12.根据权利要求11的方法,其中所述密钥至少部分地基于代表所述至少一个期望的功能的标识符而生成。
13.一种用于控制对于第一软件的至少一种功能进行访问的系统,所述系统包括用于验证由第二软件提供的密钥的密钥验证模块,所述密钥与被所述第二软件使用的所述第一软件的至少一个期望的功能相关;用于接口所述第二软件并向所述第二软件提供所述至少一个期望的功能的等级功能应用编程界面(API);以及可操作地与所述密钥验证模块和所述等级功能API相连的等级访问控制模块,所述等级访问控制模块用于当所述密钥被所述密钥验证模块验证时,指示所述等级功能API允许所述第二软件访问所述第一软件的所述至少一个期望的功能。
14.根据权利要求13的系统,其中所述等级访问控制模块还用于当所述密钥未通过所述密钥验证模块的验证时,指示所述等级功能API禁止所述第二软件访问所述至少一个期望的功能。
15.根据权利要求13的系统,其中所述至少一个期望的功能包括二进制服务等级。
16.根据权利要求15的系统,其中所述至少一个期望的功能包括二进制服务等级和客户添加服务等级。
17.根据权利要求13的系统,其中所述至少一个期望的功能包括客户添加服务等级。
18.根据权利要求13的系统,其中所述密钥验证模块用于至少部分地基于由所述第二软件提供的标识符来验证所述密钥,所述标识符与所述至少一个期望的功能相关。
19.根据权利要求18的系统,其中所述密钥验证模块用于通过以下方式验证所述密钥至少部分地基于所述标识符来生成验证密钥;比较所述密钥与所述验证密钥;以及其中当所述密钥基于所述比较时所述密钥被验证。
20.根据权利要求19的系统,其中当所述密钥与所述验证密钥匹配时,所述密钥通过验证,当所述密钥不同于所述验证密钥时,所述密钥未通过验证。
21.根据权利要求13的系统,其中所述第一软件包括二进制代码。
22.一种用于控制对第一软件至少一个功能进行访问的计算机可读媒介,所述计算机可读媒介包括指令集,所述指令集用于操作处理器从第二软件中接收与所述第一软件的至少一个期望的功能相关的密钥;验证所述密钥;以及当所述密钥通过验证时,允许所述第二软件访问所述第一软件的所述至少一个期望的功能。
23.根据权利要求22的计算机可读媒介,还包括当所述密钥未通过验证时操作所述处理器阻止所述第二软件访问所述第一软件的所述至少一个期望的功能的指令。
24.根据权利要求22的计算机可读媒介,其中所述至少一个期望的功能包括二进制服务等级。
25.根据权利要求24的计算机可读媒介,其中所述至少一个期望的功能包括二进制服务等级和客户添加服务等级。
26.根据权利要求22的计算机可读媒介,其中所述至少一个期望的功能包括客户添加服务等级。
27.根据权利要求22的计算机可读媒介,其中所述指令集还包括用于操作所述处理器从所述第二软件中接收与所述至少一个期望的功能相关的标识符的指令。
28.根据权利要求27的计算机可读媒介,其中所述用于操作处理器验证所述密钥的指令包括操作所述处理器进行以下工作的指令至少部分地基于所述标识符生成验证密钥;比较所述密钥和所述验证密钥;以及其中所述密钥基于所述比较被验证。
29.根据权利要求28的计算机可读媒介,其中当所述密钥与所述验证密钥匹配时,所述密钥通过验证,当所述密钥不同于所述验证密钥时,所述密钥未通过验证。
30.根据权利要求22的计算机可读媒介,其中所述第一软件包括二进制代码。
31.根据权利要求22的计算机可读媒介,其中所述指令集还包括操作所述处理器进行以下操作的指令生成与所述至少一个期望的功能相关的密钥;以及将所述密钥提供给所述第二软件的开发者以供所述第二软件使用。
32.根据权利要求31的计算机可读媒介,其中所述密钥至少部分地基于与所述至少一个期望的功能相关的标识符而生成。
33.一种在分布式通信网络的网关中控制对于所述网关的第一软件的至少一种功能进行访问的系统,所述系统包括用于验证由第二软件提供的密钥的密钥验证模块,所述密钥与被所述第二软件使用的所述第一软件的至少一个期望的功能相关;用于接口所述第二软件并向所述第二软件提供所述第一软件的所述至少一个期望的功能的等级功能应用编程界面(API);以及可操作地连接所述密钥验证模块和所述等级功能API,并且当所述密钥通过所述密钥验证模块验证时,指示所述等级功能API允许所述第二软件访问所述至少一个期望的功能的等级访问控制模块。
34.根据权利要求33的系统,其中所述等级访问控制模块还用于当所述密钥未通过所述密钥验证模块的验证时,指示所述等级功能API禁止所述第二软件访问所述至少一个期望的功能。
35.根据权利要求33的系统,其中所述密钥验证模块至少部分地基于由所述第二软件提供的标识符来验证所述密钥,所述标识符与所述至少一个期望的功能相关。
36.根据权利要求35的系统,其中所述密钥验证模块用于通过以下方式验证所述密钥至少部分地基于所述标识符生成验证密钥;比较所述密钥与所述验证密钥;以及其中所述密钥基于所述比较被验证。
37.根据权利要求36的系统,其中当所述密钥与所述验证密钥匹配时,所述密钥被验证,当所述密钥不同于所述验证密钥时,所述密钥未被验证。
38.根据权利要求33的系统,其中所述第一软件包括由以下要素构成的组合中的一个嵌入式万维网服务器,操作系统,以及网络协议堆栈。
39.根据权利要求33的系统,其中所述第一软件包括二进制代码。
40.一种操作系统,包括用于验证由所述操作系统外的软件提供的密钥的密钥验证模块,所述密钥与将被所述外部软件使用的所述操作系统的至少一种期望的功能相关;用于接口所述外部软件并向所述外部软件提供所述操作系统的所述至少一种期望的功能的等级功能应用编程界面(API);可操作地连接所述密钥验证模块和所述等级功能API,并且用于当所述密钥通过所述密钥验证模块的验证时,指示所述等级功能API允许所述外部软件访问所述操作系统的所述至少一种期望的功能的等级访问控制模块。
41.根据权利要求40的操作系统,其中所述等级访问控制模块还用于当所述密钥未通过所述密钥验证模块的验证时,指示所述等级功能API禁止所述外部软件访问所述操作系统的所述至少一种期望的功能。
42.根据权利要求40的操作系统,其中所述密钥验证模块至少部分地基于由所述外部软件提供的标识符来验证所述密钥,所述标识符与所述至少一个期望的功能相关。
43.根据权利要求42的操作系统,其中所述密钥验证模块用于通过以下方式验证密钥至少部分地基于所述标识符来生成验证密钥;比较所述密钥和所述验证密钥;以及其中所述密钥基于所述比较被验证。
44.根据权利要求43的操作系统,其中当所述密钥与所述验证密钥匹配时,所述密钥通过验证,当所述密钥不同于所述验证密钥时,所述密钥未通过验证。
45.根据权利要求40的操作系统,其中所述操作系统在通信网络中的客户住宅设备中被实现。
46.一种网络协议堆栈,包括用于验证由所述网络协议堆栈外部的组件提供的密钥的密钥验证模块,所述密钥与被所述外部组件使用的所述网络协议堆栈的至少一种期望的功能相关;用于接口所述外部组件并向所述外部组件提供所述网络协议堆栈的所述至少一个期望的功能的等级功能应用编程界面(API);以及可操作地连接所述密钥验证模块和所述等级功能API,并且用于当所述密钥被所述密钥验证模块验证时,指示所述等级功能API允许所述外部组件访问所述网络协议堆栈的所述至少一个期望的功能的等级访问控制模块。
47.根据权利要求46的网络协议堆栈,其中所述等级访问控制模块还用于当所述密钥未通过所述密钥验证模块的验证时,指示所述等级功能API禁止所述外部组件访问所述网络协议堆栈的所述至少一个期望的功能。
48.根据权利要求46的网络协议堆栈,其中所述密钥验证模块至少部分地基于由所述外部组件提供的标识符来验证所述密钥,所述标识符与所述至少一个期望的功能相关。
49.根据权利要求48的网络协议堆栈,其中所述密钥验证模块用于通过以下方式验证所述密钥至少部分地基于所述标识符来生成验证密钥;比较所述密钥与所述验证密钥;以及其中所述密钥基于所述比较被验证。
50.根据权利要求49的网络协议堆栈,其中当所述密钥与所述验证密钥匹配时,所述密钥通过验证,当所述密钥不同于所述验证密钥时,所述密钥未通过验证。
51.根据权利要求46的网络协议堆栈,其中所述网络协议堆栈在通信网络的客户住宅设备中被实现。
全文摘要
本发明提供了一种用于控制对核心软件功能的不同等级进行访问的方法与系统。软件开发者/销售商可以开发具有一个或多个限制访问功能的软件单一版本并将该软件单一版本提供给不同类型的客户。每个客户可以利用所述核心软件的该单一版本开发附加的软件,该附加软件使用由该软件的开发者/销售商授权的该核心软件的一个或多个功能。通过修改客户开发软件来通过例如该核心软件的应用编程界面(API)向该核心软件提交由该软件开发者/销售商提供的密钥来使该用户开发软件获得对特定功能或功能组的访问。所述核心软件用于验证所提供的密钥并且,如果所提供的密钥正确,则允许客户开发软件访问该核心软件的相应一个或多个功能。
文档编号G06F1/00GK1578939SQ02821522
公开日2005年2月9日 申请日期2002年8月29日 优先权日2001年8月29日
发明者詹姆斯·E·巴德, 杰克·沃特斯二世, 埃里克·R·博宾 申请人:格鲁斯番 维拉塔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1