CN1971578A - 安全许可密钥方法和*** - Google Patents

安全许可密钥方法和*** Download PDF

Info

Publication number
CN1971578A
CN1971578A CN200610172398.2A CN200610172398A CN1971578A CN 1971578 A CN1971578 A CN 1971578A CN 200610172398 A CN200610172398 A CN 200610172398A CN 1971578 A CN1971578 A CN 1971578A
Authority
CN
China
Prior art keywords
key
software
license key
license
licensee
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200610172398.2A
Other languages
English (en)
Other versions
CN100517357C (zh
Inventor
罗忠海
布赖恩·R·戈林
迈克尔·申菲尔德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maliki Innovation Co ltd
BlackBerry Ltd
Original Assignee
Research in Motion Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Research in Motion Ltd filed Critical Research in Motion Ltd
Publication of CN1971578A publication Critical patent/CN1971578A/zh
Application granted granted Critical
Publication of CN100517357C publication Critical patent/CN100517357C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

一种安全许可密钥解决方案为授权和/或追踪软件的使用提供软件许可密钥,其中许可密钥包括由私钥加密的消息和根据非对称加密技术验证该消息的公钥。该消息和公钥可以由软件授权者(如安装向导)使用,以授权软件和/或生成与软件输出结合的安全标签,从而唯一确定产生该输出的软件的许可。一种许可密钥管理***可以为各个软件被许可方生成许可密钥,并包括用于存储各个软件被许可方及其许可密钥之间的关联的数据库,以识别与所获得的输出相关联的许可。

Description

安全许可密钥方法和***
技术领域
本发明一般涉及计算机软件分布,并且特别涉及安全许可密钥方法和***。
背景技术
软件,特别是商业软件,典型地依照一软件许可从一个实体到另一个实体分布。该许可授予软件用户特定的权限。一种依照许可条件来控制软件使用的方式是使用许可密钥,当其适当地与被许可软件相关联时可对软件的安装、执行和/或其它方面进行授权。例如,要安装的被许可软件被捆绑到一个自动软件安装程序或向导以及一许可密钥验证器。在安装期间,验证许可密钥的真实性且作为响应来安装许可软件。许可密钥验证器也可以在启动或尝试使用被许可软件时验证许可密钥。
需要一种安全许可密钥解决方案,以防止他人生成或验证未授权但却在算法上正确的许可密钥。经常地,同样的算法被用于许可密钥生成器和对应的验证器。因为一般验证器被捆绑于软件安装器,恶意的程序员或黑客可轻易地通过逆向工程来确定该算法,并利用该算法建立他/她自己的生成器以创建尽可能多的密钥去模仿正确的许可。
进一步,需要一种灵活的许可密钥解决方案,这样许可密钥管理员(与被许可软件的分布相关联的人,其负责管理许可密钥解决方案)可以轻易地改变许可密钥生成和验证算法所必需的设置,以对不同用途的许可密钥进行分类或分组。
还需要一种易于管理和统计并且可同样访问其它细节的许可密钥解决方案。例如,许可密钥管理员可以要求许可密钥相关的发行报告,诸如多少许可密钥已被发行,多少被许可方已被许可,许可密钥何时生成、被许可方何时注册等等。
被许可软件可包括开发工具和应用程序,可用于定义和/或发布其它人使用的其它软件或输出。还需要确定哪一个被许可软件产生了特定的输出。
因此,作为结果,需要一种解决这些问题中的一个或多个的方法和装置。
发明内容
本发明涉及一种安全许可密钥解决方案,用于在分布式计算机***中分布和/或追踪软件的使用。
一种安全许可密钥解决方案为授权和/或追踪软件的使用提供软件许可密钥,这里许可密钥包括由私钥加密的消息部分和根据非对称加密技术验证该消息的公钥部分。该消息和公钥可以由软件授权者(如安装向导)使用,以授权软件和/或生成与软件输出结合的安全标签,从而识别产生该输出的软件许可。一种许可密钥管理***可以生成许可密钥,并包括用于存储各个软件被许可方及其许可密钥之间的关联的数据库,以对产生所获得输出的软件的特定许可追踪其起源。例如,将被许可的软件可包括编程和输出其它软件的综合开发环境。其它软件的输出可以捆绑于安全标签并为他人使用而发布。这种输出可使用安全标签获得并被追踪其起源(如识别关联许可)。
许可密钥管理***可适合于生成管理报告等并依照所需加密技术配置许可密钥的产生。
本领域普通技术人员将从说明和描述的实施例中理解本发明的计算机***、方法、计算机程序产品以及其它方面。
依照一方面,优选地提供一种为控制软件使用提供安全许可密钥的方法,包括:为许可生成一许可密钥,所述许可密钥包括由私钥签名并可由公钥验证的消息,该私钥和公钥遵照非对称加密技术;和为软件授权者提供许可密钥和公钥,以接收许可密钥并对其进行验证,以授权与该软件授权者相关联的被许可软件的使用。
该方法可包括为被许可使用软件的被许可方存储与被许可方信息相关联的公钥和私钥。
所述方法可包括提供软件授权者,所述授权者包括捆绑于所述被授权软件的软件安装器。
该软件授权者可使用公钥和许可密钥生成安全标签,所述安全标签与所述被许可软件的输出相结合,用于识别被许可软件的许可。同样,该方法可包括使用安全标签识别与该输出相关联的许可。例如,该方法可包括为被许可使用被许可软件的被许可方存储与被许可方信息相关联的公钥和私钥,并使用与被许可方相关联的私钥解密该安全标签。
该被许可软件可包括适于编程组件应用程序的综合开发环境(IDE)。
该方法可包括对于将要被授权使用软件的被许可方接收被许可方信息,并使用至少部分该被许可方信息来定义消息。
依照另一方面,提供一种管理被许可方对软件的使用的许可密钥管理***,包括:
许可密钥生成器,用于:
为许可生成许可密钥以管理被许可软件的使用,许可密钥包括由私钥签名并可由公钥验证的消息,该私钥和公钥遵照非对称加密技术;和
将许可密钥和公钥一起提供给软件授权者,以接收许可密钥并对其进行验证,从而授权被许可方对与该软件授权者相关联的软件的使用;和
数据库,用于存储许可密钥和与各个被许可使用被许可软件的被许可方信息相关联的各个私钥/公钥对。
根据另一方面,提供一种计算机程序产品,包括计算机可读介质,具体实现了可由计算机执行以进行以下操作的指令和数据:
为许可生成许可密钥,所述许可密钥包括由私钥签名并可由公钥验证的消息,该私钥和公钥遵照非对称加密技术;和
将许可密钥和公钥一起提供给软件授权者,以接收许可密钥并对其进行验证,以授权与该软件授权者相关联的被许可软件的使用。
附图说明
现在将参考附图,作为示例,对实施例进行描述,其中:
图1为说明包括无线和有线通信网络的分布式计算机***的一个实施例的方框图;
图2为更详细地表示图1所选择组件和包括用于图1的分布式计算机***中的外部许可密钥的实施例的方框图;
图3A和3B为根据生成外部许可密钥(如图2所示的密钥)的实施例的操作流程图;
图4和图5为根据一实施例的操作流程图,该实施例示出了外部许可密钥如何用于分布计算机软件以及如何在如图1所示的分布式计算机***中追踪其使用。
具体实施方式
图1为表示分布式计算机***100的方框图,其包括通过无线和有线通信网络101和103连接通信的多个计算设备。***100包括无线移动设备102(如智能电话、PDA等类似装置)、无线网络设备104,组件应用知识库106、无线应用程序网关***108、多个数据源112、116、120、软件开发站110、114和118、以及包括安全数据存储124的许可密钥生成和验证***122。
连同参考图2并简要说明,计算机***100使用软件开发站(如110、114、118)所开发并发布到知识库106的组件应用程序(如218)方便数据在移动设备102和数据源112、116以及120之间通信。软件开发站110、114、118包括软件开发工具,例如综合开发环境(IDE)(如站110中的216),其为程序员而配置为产生包括安全IDE标签218的组件应用程序。该安全IDE标签用于为用作创建组件应用程序的软件确定其许可。IDE(如216)的实例由提供于需要开发组件的其他人(即“被许可方”)的实体分布或代表该实体。IDE的授权处于许可密钥(如206)生成和验证***122所生成的各个安全许可密钥的控制之下。该安全许可密钥(如206)是依照非对成加密技术(如RSA算法)由公钥和密钥对生成的,其基于各个被许可方信息而安全存储于许可密钥数据库204,以使安全许可密钥生成并进一步确认与组件应用程序相关联的许可。
移动设备102在无线网络设备104中并通过无线网络设备104进行通信。在图1实施例的示例中,无线网络104是基于码分多址(CDMA)技术的第三代(3G)支持网络。特别地,无线网络104是CDMA2000网络,其包括如图1所示的方式进行连接的固定网络组件。CDMA2000类型的无线网络104可包括无线电网络(RN)、移动交换中心(MSC)、7号信令(SS7)网络、归属地位置寄存器/鉴权中心(HLR/AC)、分组数据服务节点(PDSN)、IP网络、以及远程验证用户拨入服务(RADIUS)服务器(未全部示出)。SS7网络通信连接于诸如公共交换电话网(PSTN)的网络以进行语音通信,而IP网络通信连接于诸如互联网的网络以进行特定数据通信。无线网络104为示例性且本领域普通技术人员将意识到其它无线网络结构和标准也可使用。
图1的通信***100中所示的无线连接表示一个或多个不同的信道,典型地为不同的射频(RF)信道,以及用于无线网络104和移动设备102之间的相关协议。本领域技术人员将意识到实际使用的无线网络可根据所需全部网络覆盖区域包括数百个发射区。所有相关组件可以被多个交换机和路由器(未示出)连接,并由多个网络控制器所控制。
本领域技术人员将意识到无线网络104可连接于其它***,可能包括其它网络,其未在图1中明确示出。尽管需要CDMA无线网络104,然而网络104可遵照包括蜂窝网、广域网络、GSM、GPRS、CDMA、iDENTM、MobitexTM等在内的任何无线网络技术和协议。
移动设备102典型地为多任务无线通信设备,其被配置为发送和接收诸如电子邮件、即时消息、SMS消息以及其它数据消息的数据,并至少部分地被配置为发起或接收语音呼叫。为了提供用户友好的环境以控制移动设备102的操作,驻留在设备102上的操作***(未示出)提供一用户界面,例如具有主屏幕和多个可从主屏幕导航的子屏幕的图形用户界面(GUI)。
同样在当前实施例中,移动设备包括一运行时间环境,用于为与诸如数据源112、116和120的数据源通信提供服务和运行组件应用程序。
数据源可包括具有外露程序界面的应用程序,该外露程序界面用于依照面向服务的结构(如网络服务协议)与其它应用程序通信。这种服务典型地但不是必须地为基于订阅的。
无线组件应用程序网关***108便利了移动设备102和数据源之间的通信。虽然没有示出,但网关***108包括组件应用程序网关、组件应用程序供应服务器以及组件应用程序发现服务器。该组件应用程序网关用于代理由数据源提供给移动设备的服务,例如映射无线和有线协议之间的通信。
发现服务器能够使移动设备定位新的或升级的服务并通过供应服务器从组件知识库106获得相关组件应用程序。
应用程序以包或束的集合的形式存储在组件知识库106中。包典型地由应用程序开发者使用开发环境所提供的设计工具生成,该开发环境有时被称为IDE。IDE典型地为拖放图形方法提供支持用于包括屏幕、数据元素、消息和应用程序工作流逻辑的应用程序组件的可视设计,其接下来被进一步定义。应用程序包优选地由结构化数据(XML)表示,该结构化数据可由IDE通过一自动代码生成过程自动生成。设计工具进一步能够使自动生成代码包括产业标准脚本语言(如JavaScript)或本领域所知的其它脚本/编程语言,或者以另外的方式由该产业标准脚本语言或本领域所知的其它脚本/编程语言进行增补。知识库106中的应用程序包的可用性通过由发现服务器提供的发现服务发布于一注册记录中。可以认识到,该网关服务器可以使用多于一个的知识库106以及与其关联的注册记录。
程序员可以通过与所描述的IDE相适应的站110、114和118编程组件应用程序从而将服务扩张到移动设备。在一个实施例中,这样的IDEs可由一组针对一般综合设计环境的插件程序构成,例如可以是EclipseTM构架。EclipseTM构架是众所周知的开发环境,且这些和其它特征在www.Eclipse.org被详尽描述。作为代替,工具可被配置为不使用插件程序结构的完全设计构架。仅为了示例性用途,工具在此被描述为一使用EclipseTM构架的插件程序设计环境。
参考图2,主要描述了设计组件应用程序的IDE 216。在当前实施例中,设计者工具使用EclipseTM实现。EclipseTM被设计为支持多种用于应用程序环境的工具的构造。进一步,EclipseTM支持一组不受限的工具提供者,包括独立软件卖方(ISV)以及用于操作随机内容类型的工具(例如HTML、Java、C、JSP、EJB、XML和GIF)。EclipseTM支持基于GUI和非GUI的应用程序开发环境。如接下来进一步描述的,IDE适于包括安全标签插件,以包括发布的应用程序中的安全标签。
在当前实施例中,IDE 216用于使开发者定义一组件应用程序。组件应用程序一般是由一组结构化组件所定义的,结构化组件包括数据组件、消息组件、表示组件和工作流组件。组件使用结构化语言定义,并由智能运行时间容器在客户设备上执行。
数据组件定义由组件应用程序使用的数据实体。数据实体的例子包括订单、用户和金融交易。数据组件定义描述数据实体所需的信息以及信息表达的格式。例如,数据组件可定义一订单,其包括数字格式的唯一的订单标识符、串格式的一列项目、具有日期-时间格式的订单建立时间、串格式的订单状态以及根据另一个数据组件定义而格式化的发出订单的用户。由于数据元素通常经消息传递,故此数据组件经常存留在数据库中。数据组件可由应用程序设计者动态生成或定义。
消息组件定义消息的格式,组件应用程序使用该消息与诸如网络服务的外部***进行通信。例如,一个消息组件可描述一个发出订单的消息,其包括唯一的订单标识符、订单状态以及与订单相关的注释。
表示组件在组件应用程序通过用户界面显示给用户时定义其外观和行为。表示组件能够指定图形用户界面(GUI)屏幕,并且用户与组件应用程序互动时可执行其控制和动作。例如,表示组件可定义屏幕、标签、编辑框、按钮和菜单以及当用户在编辑框中键入或按动按钮时所执行的动作。
组件应用程序的工作流组件定义当一个动作将要被执行时所发生的处理,这样的动作由上述表示组件指定,或者定义当消息到达时所要执行的动作。表示工作流和消息处理由工作流组件定义。工作流组件以结构化数据、编程语言或脚本语言被写为一系列指令。工作流组件支持消息组件间的相关性,并将应用程序流定义为在其它组件上操作的一组规则。
关于组件应用程序更多的细节可见专利合作条约申请号为PCT/CA2003/001976的、题目为“System and Method for Building andExecution of Platform-Neutral Generic Services ClientApplications”的专利申请,其公开号为WO2004059938;专利合作条约申请号为PCT/CA2003/001980的、题目为“System and Method ofBuilding Wireless Component Applications”的专利申请,其公开号为WO2004059957;专利合作条约申请号为PCT/CA2003/001981的、题目为“System and Method of Creating and Communicating withComponent Based Wireless Applications”的专利申请,其公开号为WO2004059939,其中每个申请都属于本申请的申请人。
面向服务的协议主要针对有线网络通信而定义,基于组件应用程序的体系结构提供了许多功效,其中组件应用程序网关***代理代表移动设备的数据源。服务经常处理敏感的通信(商业交易、私人信息等)。这样,迫切需要一种识别软件许可的机制以用于生成组件应用程序的编程,其可进一步用于识别特定的被许可方以及在***100内交换信任。
图3A描述了诸如使用许可密钥生成器/验证器202和数据库204生成外部许可密钥206的操作300的流程。许可密钥生成器/验证器采用包括秘密私钥和对应公钥对来加密数据的非对称加密技术。这样的加密技术是本领域所知的并且其商业实施例可从RSA安全有限公司和其它地方得到。密钥对关联于被许可方,用于生成唯一的且因此可追踪的许可密钥,就如进一步需要的那样。如果需要,一个特定的被许可方可与多于一个的密钥对相关联。
在步骤302,接收被许可方信息(如由许可密钥管理员输入生成器/验证器)。该信息典型地包括被许可方的名称(如公司和联系人)、地址、所需许可数目等。在步骤304,确定是否为被许可方建立了一个加密密钥对。数据库204可用于对这些信息的查询。如果没有密钥对,通过分支到达步骤306,生成一个密钥对。可理解为一组预先生成的密钥对为可用的,从而生成包括从该组中选择一个密钥对。否则,可使用生成算法创建一个新的密钥对。密钥对与被许可方相关联地存储在数据库204。在步骤308,从安全存储(数据库204)中选择一个密钥对。该安全存储或数据库可作为一组密钥对使用,管理员能够选择一个密钥对为被许可方定义一个许可密钥。如果需要,不同的被许可方可关联于相同的密钥对。
基于在步骤308选择的密钥对,在步骤310,创建一个内部许可密钥212(即一个数据组件),并且在步骤312,创建一个外部许可密钥206。外部许可密钥记录在数据库中并被分配给被许可方,用于在许可密钥验证器214的控制下将IDE(如216)安装在被许可方的编程站(如110)上。
根据一个实施例,外部许可密钥206包括内部许可密钥212、被许可方的私钥/公钥对中的公钥组件210和用于为数据组件206划定界限的公钥长度模块208(见图2)。根据一个实施例,内部许可密钥包括由许可密钥生成器/验证器进行数字签名的唯一识别数据。
图3B描述了用于生成内部和外部许可密钥的操作310和312的一个实施例。在步骤320,选择被许可方信息定义一消息,用于采用散列函数(诸如MD5或SHA-1)进行编码以生成唯一(为了所有实用的目的)对应于该消息的数据输出。该散列输出根据本领域普通技术人员所知的技术使用密钥对中的私钥进行签名。因此,该签名的散列输出唯一对应于消息和用于创建其的私钥。
该签名的散列输出可定义内部许可密钥212,与私钥相对应的公钥210和公钥数据长度208相结合(如相级联),用以生成外部许可密钥206。为了容易电存储或分配,外部许可密钥206优选地被编码,例如使用诸如Base64等本领域熟知的编码方法编码为字符串。
外部许可密钥206可与被许可软件一起(即同时)或分别被分布,进而被安装或解锁(如IDE 216)。分布(由图1中的虚线表示)可以为电的,例如通过载波信号上的网络传输;或分布在物理介质上,例如CD/DVD、固件、软件保护器(dongle)或其它产品。可理解为分布是指点对点的,由此被许可方可接收它的并仅为它的预期许可密钥。
图4描述了验证许可密钥和生成安全的IDE标签的操作400。在步骤402,外部许可密钥被解码(如根据Base64)。公钥和内部许可密钥被分别提取(步骤404)。在步骤406,使用公知的公钥验证内部许可密钥的真实性。例如,公钥被应用于内部许可密钥以确定由许可密钥提供者(典型地为软件许可颁发者)生成的消息散列。验证器214也能够对相同的被许可方信息进行散列,并比较两个散列以确定任何篡改。所选择的被许可方信息或消息可在发送给被许可方时捆绑于被许可软件,或者由被许可方在注册期间进入,这样反过来电子地使被许可方信息进入***122以及之前参考图3A和3B描述的接收并使用该信息生成许可密钥的密钥生成器/验证器202。
作为选择,尽管没有示出,如本领域已知的那样,一个可信赖第三方可以验证公钥。
在步骤408,使用公钥生成一个安全的IDE标签。使用公钥加密消息散列以定义标签。为了追踪的目的,该标签被***被许可软件的输出中。
在图1和2的实施例中,被许可软件为用于编程(即定义和表达诸如我所写的代码和/或数据)其它软件的IDE 216。其输出包括组件应用程序制造物(如组件定义、数据、脚本、用户界面等),这些被捆绑以发布给知识库106。组件应用程序包可由此包括IDE标签,其专门且安全地识别生成包的IDE。
图5描述了用于追踪已发布应用程序的操作500。在步骤502,由许可密钥生成器/验证器202获得已发布应用程序,例如从知识库106获取。安全的IDE标签在步骤504被提取用于验证。验证/确定可如接下来描述的那样完成。在步骤506,使用发布应用程序或其关联程序(如知识库)中存在的被许可方信息(该信息可能不完全相同地对应于之前描述的用于生成消息的被许可方信息),获得数据库204中的与被许可方关联的一个或多私钥。对于每个候选私钥,利用私钥解密安全IDE标签以获取信息散列。这个信息散列被与从数据库204中获取的被许可方信息散列相比较,或与之前,例如在许可密钥生成时,生成并存储于数据库204中的散列相比较;该消息散列为了上述用途而被实时的生成。尽管不是完全理想的有效,但如果可能的候选者私钥不能由被许可方或其它信息而确定,步骤506~510可基于安全数据存储中的所有可能的已知私钥而重复。
如果许可不能由诸如通过操作500的输出的安全标签而确定,该输出可被认为是恶意的并被采取适当的行动。例如,被认为是恶意的已发布应用程序可被隔离和重新检查。
许可密钥管理功能203可以通过软件提供用于管理数据库204,并生成各种使用报告和其它统计或存储于其中的特定获取信息。这种功能还可配置许可密钥生成器/验证器202以使许可密钥管理员将许可密钥分类或分组。
尽管图2仅描述了客户信息与私钥/公钥对相关联的存储于数据库204,但其它信息也可以被存储。例如,散列算法参考目录可相对于每个客户密钥对被存储,其用于指示哪一个算法被用于生成特定许可密钥。已生成消息的散列或内部许可密钥和/或外部许可密钥也可以被存储。私钥/公钥对生成/验证算法以及密钥和注册的时间和日期信息等也可以被存储。
尽管被作为明确区分的组件而进行描述,本领域普通技术人员将意识到各个操作可在不同软件部件中共享或交迭,并且这样的部件区分可以是人为的。
尽管参考为***100生成组件应用程序而进行描述,本领域普通技术人员将意识到其中的教导使他们轻易地将其用于其它IDE软件、工具或应用程序(如单词处理、图形CAD/CAM、发布等),由此可以为了追踪能力而为这些其它软件输出中的包含物生成安全标签。在此描述的安全许可密钥的生成和验证特征和/或许可密钥管理特征也可被引入不需要安全标签用于追踪的情形。
由于同样的算法被用于许可生成器和验证器代码,而这代表着安全威胁,所以对称加密方法具有严重的缺陷。在非对称方法中,使用非对称加密算法(如RSA)生成公钥和私钥对。私钥由软件认可证颁发者保存在安全场所。该私钥被用于为被许可方生成许可密钥,而公钥则依附于已许可软件的安装器并用于在安装期间验证被许可方的许可密钥。这样,即使黑客知晓如何生成和验证许可密钥,由于他/她没有私钥,他/她仍然不能破坏我们的软件保护。
所描述的许可密钥解决方案同样促进了其灵活性。如果公钥是硬编码于安装器中而不是随许可密钥提供,由于将来难以改变私钥和公钥对,则一个旧的安装器不能验证由新的私钥所生成的新的许可密钥。根据该许可密钥解决方案的实施例,一种创新的解决方案能够针对这一问题。许可密钥(在此作为“内部许可密钥”被提及)结合于与其对应的公钥,与公钥配对的私钥用于生成该许可密钥,以形成以Base64格式编码的“外部许可密钥”。因此,公钥/私钥对和被许可方之间的关系被记录在许可密钥管理***的数据库中。外部许可密钥接着被提供给被许可方。在安装期间,软件安装器从外部许可密钥中提取公钥和内部许可密钥,并验证该许可密钥。这种灵活的方法使许可颁发者能够选择不同的公钥/私钥对为不同的终端用户或不同的被许可方组生成许可密钥。
在被许可软件产生的输出可被获取以重新检查的特定情形,追踪能力使得许可颁发者能够将输出追回产生它的被许可软件(追回到一个或一组已知的软件拷贝)。一种直接的方法为将外部许可密钥包括于已许可软件的输出中。但是这种解决方案是有问题的。外部密钥的流通可使得恶意开发者使用不能被适当追踪的其他开发者的信息生成输出。这样可能为攻击者提供可利用的机会,攻击者可从已发布的应用程序获得被许可方的外部许可密钥并猜测被许可方的用户名称和公司名称等,以假冒被许可方安装被许可软件的拷贝并使用其产生诸如发布部件应用程序的输出。
在所提出的许可密钥解决方案的实施例中,在以许可软件的安装期间,被提取的公钥被用于由内部许可密钥加密数据,而作为结果的字节流,在此成为“安全IDE标签”或更一般的称为“安全标签”,被存储供已许可软件使用。当被许可方产生输出,特别是用于向他人发送或由他人使用的输出,例如通过经由IDE发布一组件应用程序,该安全标签被嵌入所发布应用程序输出。通过使用许可颁发者持有的对应私钥解密安全标签,并将其与内部许可密钥的消息数据相比较,许可颁发者可轻易获知是谁创建并发布了应用程序。
通过许可密钥管理***的综合管理功能,许可颁发者能够轻易创建报告,诸如多少许可密钥已被发行,数据库中存有多少被许可方,许可密钥何时生成、被许可方何时注册等等。
本申请的上述实施例仅用于举例。在不背离本发明的范围的前提下,本领域技术人员可以对特定实施例的进行改造、修正和变化。所附权利要求中所描述的主题内容倾向于覆盖和包含所有适当的技术改动。

Claims (17)

1.一种为控制软件使用的许可提供安全许可密钥的方法,包括:
为许可生成许可密钥,所述许可密钥包括由私钥签名并可由公钥验证的消息,该私钥和公钥遵照非对称加密技术;
为软件授权者提供许可密钥和公钥,以接收许可密钥并对其进行验证,以授权与该软件授权者相关联的被许可软件的使用。
2.如权利要求1所述的方法,包括为被许可使用软件的被许可方存储与被许可方信息相关联的公钥和私钥。
3.如权利要求1或2所述的方法,包括提供软件授权者,所述授权者包括捆绑于所述被授权软件的软件安装器。
4.如权利要求3所述的方法,包括分别从私钥和许可密钥提供软件授权者。
5.如权利要求1至4中任何一个所述的方法,其中软件授权者使用公钥和许可密钥生成安全标签,所述安全标签与所述被许可软件的输出相结合,用于识别被许可软件的许可。
6.如权利要求5所述的方法,包括使用所述安全标签识别与输出相关联的许可。
7.如权利要求6所述的方法,包括为被许可使用被许可软件的被许可方存储与被许可方信息相关联的公钥和私钥,并且其中的识别包括使用与被许可方相关联的私钥解密该安全标签。
8.如权利要求5所述的方法,其中被许可软件包括用于编程组件应用程序的软件。
9.如之前权利要求中的任何一个所述的方法,包括对于将要被授权使用被许可软件的被许可方接收被许可方信息,并使用至少部分该被许可方信息来定义消息。
10.一种管理被许可方对软件的使用的许可密钥管理***,包括:
许可密钥生成器,用于:
为许可生成许可密钥以管理被许可软件的使用,许可密钥包括由私钥签名并可由公钥验证的消息,该私钥和公钥遵照非对称加密技术;和
将许可密钥和公钥一起提供给软件授权者,以接收许可密钥并对其进行验证,从而授权被许可方对与该软件授权者相关联的软件的使用;和
数据库,用于存储许可密钥和与各个被许可使用被许可软件的被许可方信息相关联的各个私钥/公钥对。
11.如权利要求10所述的***,包括用于生成有关***使用的管理报告的管理组件。
12.如权利要求10或11所述的***,包括许可密钥验证器,用于接收来自软件的输出并使用与输出结合的安全标签来识别许可,该安全标签由许可密钥和为授权被许可软件而提供的公钥生成。
13.如权利要求10至12中任何一个所述的***,其中许可密钥生成器从一组密钥对中选择私钥和公钥对,为特定许可生成许可密钥。
14.一种为控制软件使用的许可提供安全许可密钥的计算机程序产品,该计算机程序产品包括计算机可读介质,具体实现了可由计算机执行以实施如权利要求1至9中任何一个所述的方法的指令和数据。
15.如权利要求14所述的计算机程序产品,其中所述指令和数据可由计算机执行以从一组密钥对中选择私钥和公钥对,为特定许可生成许可密钥。
16.如权利要求14或15所述的计算机程序产品,其中被许可软件包括用于编程组件应用程序的软件。
17.如权利要求14至16中任何一个所述的计算机程序产品,其中所述指令和数据可由计算机执行以提供许可密钥管理报告。
CN200610172398.2A 2005-10-31 2006-10-31 安全许可密钥方法和*** Active CN100517357C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP05110218.4 2005-10-31
EP05110218A EP1785901B1 (en) 2005-10-31 2005-10-31 Secure License Key Method and System

Publications (2)

Publication Number Publication Date
CN1971578A true CN1971578A (zh) 2007-05-30
CN100517357C CN100517357C (zh) 2009-07-22

Family

ID=35514198

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200610172398.2A Active CN100517357C (zh) 2005-10-31 2006-10-31 安全许可密钥方法和***

Country Status (5)

Country Link
EP (1) EP1785901B1 (zh)
CN (1) CN100517357C (zh)
AT (1) ATE548703T1 (zh)
CA (1) CA2565508C (zh)
SG (2) SG131907A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156835A (zh) * 2010-04-16 2011-08-17 微软公司 内容管理软件的***部更新
CN105144626A (zh) * 2013-04-23 2015-12-09 高通股份有限公司 基于安全参数的工作安全密钥的产生
CN105681039A (zh) * 2016-04-15 2016-06-15 上海上讯信息技术股份有限公司 用于生成密钥及对应解密的方法和设备
CN106778084A (zh) * 2016-11-18 2017-05-31 畅捷通信息技术股份有限公司 软件激活方法及装置和软件激活***
CN109922076A (zh) * 2019-03-27 2019-06-21 北京深思数盾科技股份有限公司 一种软锁许可过程中的安全通信方法和授权平台
CN111106939A (zh) * 2019-11-14 2020-05-05 杉数科技(北京)有限公司 软件授权方法、获取软件权限的方法及装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10333704B2 (en) 2016-01-15 2019-06-25 International Business Machines Corporation Encryption generation for multiple inserted devices with graphical user interface interaction
BR112018072965A2 (pt) * 2016-05-13 2019-02-19 nChain Holdings Limited método e sistema para verificar a propriedade de um ativo digital usando uma tabela de dispersão distribuída e um livro-razão distribuído através de peer-to-peer
US10554525B2 (en) 2017-11-28 2020-02-04 International Business Machines Corporation Tracking usage of computing resources

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6898706B1 (en) * 1999-05-20 2005-05-24 Microsoft Corporation License-based cryptographic technique, particularly suited for use in a digital rights management system, for controlling access and use of bore resistant software objects in a client computer
JP2004206435A (ja) * 2002-12-25 2004-07-22 Victor Co Of Japan Ltd ライセンス管理方法、およびライセンス管理システム
US7409674B2 (en) 2002-12-26 2008-08-05 Research In Motion Limited System and method of creating and communicating with component based wireless applications
US20040220998A1 (en) 2002-12-26 2004-11-04 Michael Shenfield System and method of building wireless component applications
US7555538B2 (en) 2002-12-26 2009-06-30 Research In Motion Limited System and method for building and execution of platform-neutral generic services' client applications

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156835A (zh) * 2010-04-16 2011-08-17 微软公司 内容管理软件的***部更新
CN102156835B (zh) * 2010-04-16 2014-06-25 微软公司 内容管理软件的***部更新
CN105144626A (zh) * 2013-04-23 2015-12-09 高通股份有限公司 基于安全参数的工作安全密钥的产生
CN105681039A (zh) * 2016-04-15 2016-06-15 上海上讯信息技术股份有限公司 用于生成密钥及对应解密的方法和设备
CN106778084A (zh) * 2016-11-18 2017-05-31 畅捷通信息技术股份有限公司 软件激活方法及装置和软件激活***
CN109922076A (zh) * 2019-03-27 2019-06-21 北京深思数盾科技股份有限公司 一种软锁许可过程中的安全通信方法和授权平台
CN111106939A (zh) * 2019-11-14 2020-05-05 杉数科技(北京)有限公司 软件授权方法、获取软件权限的方法及装置

Also Published As

Publication number Publication date
CA2565508A1 (en) 2007-04-30
CN100517357C (zh) 2009-07-22
SG152272A1 (en) 2009-05-29
ATE548703T1 (de) 2012-03-15
SG131907A1 (en) 2007-05-28
EP1785901B1 (en) 2012-03-07
EP1785901A1 (en) 2007-05-16
CA2565508C (en) 2013-05-28

Similar Documents

Publication Publication Date Title
CN100517357C (zh) 安全许可密钥方法和***
CN108197891B (zh) 一种基于区块链的电子签约装置及方法
CN101527633B (zh) 智能密钥设备获取数字证书的方法
CN101300808B (zh) 安全认证的方法和设置
US8417640B2 (en) Secure license key method and system
CN102682506B (zh) 基于对称密码技术的智能蓝牙门禁控制方法及装置
CN109740384A (zh) 基于区块链的数据存证方法和装置
CN103235906B (zh) 一种应用程序加密、解密方法及加密、解密装置
CN111080295A (zh) 一种基于区块链的电子合同处理方法以及设备
CN101627390B (zh) 用于程序状态数据在电子设备中的安全存储的方法
CN104868998B (zh) 一种向电子设备供应加密数据的***、设备和方法
CN110035058B (zh) 资源请求方法、设备及存储介质
CN112422287B (zh) 基于密码学的多层级角色权限控制方法和装置
CN108199847A (zh) 数字安全处理方法、计算机设备及存储介质
CN104125230A (zh) 一种短信认证服务***以及认证方法
CN111262852B (zh) 基于区块链实现的名片签发方法及***
JP2007206961A (ja) 認証システムおよび同システムにおける認証情報委譲方法ならびにセキュリティデバイス
CN114139114A (zh) 一种基于前端低代码开发维护***及方法
CN112364335B (zh) 标识身份鉴别方法、装置及电子设备和存储介质
CN104702566A (zh) 一种虚拟设备的授权使用方法及装置
CN106487505A (zh) 密钥管理、获取方法及相关装置和***
CN102158856A (zh) 移动终端识别码的鉴权***和方法、及服务器和终端
CN107968764A (zh) 一种认证方法及装置
CN111586125A (zh) 一种物联网***
CN106778334A (zh) 账号信息的保护方法及移动终端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: Voight, Ontario, Canada

Patentee after: BlackBerry Ltd.

Country or region after: Canada

Address before: Voight, Ontario, Canada

Patentee before: RESEARCH IN MOTION Ltd.

Country or region before: Canada

TR01 Transfer of patent right

Effective date of registration: 20240602

Address after: Ai Erlandubailin

Patentee after: Maliki Innovation Co.,Ltd.

Country or region after: Ireland

Address before: Voight, Ontario, Canada

Patentee before: BlackBerry Ltd.

Country or region before: Canada