CN104871165A - 固件实现的软件许可 - Google Patents
固件实现的软件许可 Download PDFInfo
- Publication number
- CN104871165A CN104871165A CN201380065960.XA CN201380065960A CN104871165A CN 104871165 A CN104871165 A CN 104871165A CN 201380065960 A CN201380065960 A CN 201380065960A CN 104871165 A CN104871165 A CN 104871165A
- Authority
- CN
- China
- Prior art keywords
- licence
- software program
- license
- designator
- secret key
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 72
- 238000011156 evaluation Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 21
- 238000005516 engineering process Methods 0.000 description 15
- 238000009434 installation Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 230000000712 assembly Effects 0.000 description 6
- 238000000429 assembly Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Storage Device Security (AREA)
Abstract
一种设备接收使用软件程序的请求,基于接收所述请求确定比较指示符,并基于存储在安全环境中的许可证有效性指示符和所述比较指示符来确定所述软件程序的许可证是否有效。所述设备在所述许可证被确定为有效时允许执行存储在所述安全环境中的安全代码,且在所述许可证被确定为无效时阻止执行存储在所述安全环境中的安全代码。
Description
技术领域
所公开的实施方案总体上涉及软件许可。具体来说,所公开的实施方案涉及使用固件来实现软件许可技术。
发明背景
软件许可证是管理受版权保护的软件的使用或重新分配的法律文书。典型的软件许可证授权最终用户使用软件的一个或多个副本,否则这种使用在版权法下将可能构成对软件所有人的专有权的侵犯。软件许可证可以使用计算设备来执行。
发明概要
根据一些实施方案,一种设备接收使用软件程序的请求,基于接收所述请求确定比较指示符,并基于存储在安全环境中的许可证有效性指示符和比较指示符来确定所述软件程序的许可证是否有效。所述设备在许可证被确定为有效时允许执行存储在安全环境中的安全代码,并在许可证被确定为无效时阻止执行存储在安全环境中的安全代码。
附图简述
图1A和图1B是根据一些实施方案的软件许可过程的概述图;
图2是根据一些实施方案的可以实现软件许可过程的例示性计算设备的图;
图3是根据一些实施方案的相当于图2的一个或多个组件和/或设备的设备的例示性组件的图;
图4是根据一些实施方案的相当于图2的一个或多个组件和/或设备的例示性功能组件的图;
图5是根据一些实施方案的用于评估和实施软件许可证的例示性过程的流程图;以及
图6至9是关于图5中所示的例示性过程的例示性实施方案的图。
具体实施方式
例示性实施方案的以下详细描述参照附图。不同图示中的相同参考数字可以表示相同或类似的元件。
软件许可证管理软件(例如专利受保护的软件和/或版权受保护的软件)的使用或重新分配。软件许可证实施技术包括软件实现实施技术、硬件实现实施技术和服务器实现实施技术。软件实现实施技术消耗大量的计算机资源,降低软件性能,且容易被黑客规避。硬件实现实施技术需要附加硬件,其可能昂贵和不方便。服务器实现实施技术需要互联网连接,其可能不可用。
本文所描述的实施方案提供了一种固件实现许可证实施技术,这种技术消除了许多与软件实现技术、硬件实现技术和服务器实现技术相关的问题。例如,固件实现实施技术提供高水平安全性、不容易被规避、不需要附加硬件,而且不需要互联网连接。
图1A和图1B是根据一些实施方案的软件许可过程100的概述图。如图1A中所示,软件许可过程100包括许可程序、计算设备和包括许可证评估器和许可证实施器的安全环境。在软件许可过程100中,许可程序是软件程序,计算设备是计算机,安全环境包括包括在所述计算设备中的固件,且许可证评估器和许可证实施器是安全环境的组件。
在一些实施方案中,所述计算设备包括片上系统(SoC),该片上系统包括一个或多个处理器核心(例如,中央处理单元核心、图形处理单元核心等)和专用硬件(例如,专用安全处理器),用于实现安全环境。在一些实施方案中,计算设备包括片上系统(SoC),该片上系统包括一个或多个处理器核心(例如,中央处理单元核心、图形处理单元核心等)和基于硬件的访问控制机制。在这些实施方案中,SoC实现两个或更多个虚拟处理器,所述虚拟处理器包括实现安全环境的至少一个虚拟安全处理器和不实现安全环境的至少一个虚拟标准处理器(在本文中被称为“非安全环境”)。基于硬件的访问控制机制管理(或另外控制)访问所述虚拟安全处理器(例如所述安全环境)。例如,基于硬件的访问控制机制可以在全局切换到安全环境和从安全环境的全局切换已经发生时通知应用程序、外围设备等,且可以在安全环境或非安全环境中实施安全政策。所述的两个或更多个虚拟处理器利用所述SoC的资源(例如,中央处理单元核心、图形处理单元核心等)。换句话说,在这些实施方案中,SoC不包括实现安全环境的专用硬件(例如,专用安全处理器)。
如图1A中所示,许可程序被安装在计算设备上。计算设备生成许可证有效性指示符,其被发送到许可证评估器并存储在安全环境中(例如,在安全存储器例如非易失性存储器中)。在一些实施方案中,许可证有效性指示符是基于用于安装/执行许可程序的许可证密钥和与计算设备相关的系统识别符。在一些实施方案中,许可证有效性指示符是基于当许可程序被安装在计算设备上时所确定的系统时间。系统时间是指时间推移的计算机(例如,计算设备210)指示。例如,系统时间可以由计算设备210的系统时钟来测量,该系统时钟计数自从特定日期/时间以来已经经过的时间计数。系统时间还可以指系统时间至标准日历时间的转换。
如图1B中所示,计算设备的用户请求使用许可程序。计算设备基于被许可证评估器存储在安全环境中的许可证有效性指示符来确定许可程序的许可证是否有效。在确定许可证有效之后,许可证评估器向许可证实施器发送有效性通知。基于确定许可证有效(例如经由有效性通知),许可证实施器执行安全代码(例如,被计算设备安装在安全环境中和/或在安全环境中执行),或者解密安全代码和/或信息(例如,使用在安全环境中存储和/或执行的解密算法)。所述执行和/或解密允许计算设备执行许可程序的基本功能。
图2是根据一些实施方案的可以实现软件许可过程的例示性计算设备210的图。如图2中所示,计算设备210包括许可程序220和安全环境230。
计算设备210包括能够执行软件程序和在存储器中存储信息的计算设备。例如,计算设备210可以包括台式计算机、膝上型计算机、平板计算机、服务器计算机、移动电话或能够执行软件和存储信息的另一种计算设备。
许可程序220包括能够被计算设备例如计算设备210执行的计算机程序。例如,许可程序220可以包括软件程序和/或应用程序,例如照片/视频编辑器、照片/视频浏览器、文件存档器、音乐播放器、游戏、商业应用程序(例如,文字处理器、电子数据表程序等)等。许可程序220与许可证相关联,该许可证在许可程序220可以被计算设备210执行之前必须被验证。在一些实施方案中,许可程序220被计算设备210安装并存储在非易失性存储器(例如,存储设备例如硬盘驱动器、固态磁盘驱动器等)中。
安全环境230包括存储供计算设备210用的信息和/或指令的存储器。在一些实施方案中,安全环境230包括在未通电时(例如当安全环境230和/或计算设备210未通电时)保留存储信息的非易失性存储器,例如只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、快闪存储器、硬盘驱动器等。安全环境230还可以包括固件,例如非易失性存储器和存储在非易失性存储器中的程序代码和/或信息的组合。另外或替代地,安全环境230包括在专用安全处理器上运行的固件。在一些实施方案中,安全环境230被整合到安全执行环境中,例如整合到处理器中的安全资产管理单元(SAMU)环境。在一些实施方案中,安全环境230是作为如本文所述的至少一个虚拟安全处理器而被实现。
图2中示出的设备/组件的数量是为了解释目的而提供。实际上,相比于图2中示出的设备/组件,可以有额外的设备/组件、更少的设备/组件、不同的设备/组件或不同配置的设备/组件。此外,图2中示出的两个或更多个设备/组件可以在单一设备/组件内实现,或图2中示出的单一设备/组件可以被实现成多个分散式设备/组件。另外,图2中示出的设备/组件中的一个或多个可以执行被描述为由图2中示出的另外一个或多个设备/组件执行的一个或多个功能。图2中示出的设备/组件可以经由有线连接、无线连接或有线和无线连接的组合而互连。
图3是相当于图2的一个或多个组件和/或设备的设备300的例示性组件的图。如图3中所示,设备300包括总线310、处理器320、主存储器330、非易失性存储器340、存储组件350、输入组件360、输出组件370和通信接口380。
总线310包括允许在设备300的组件之间通信的路径。处理器320包括解释和/或执行指令的处理设备(例如,一个或多个中央处理单元核心、一个或多个图形处理单元核心、一个或多个加速处理单元、专用集成电路、数字信号处理器等)。在一些实施方案中,处理器320包括一个或多个处理器核心。另外或替代地,处理器320可以包括处理单元的组合(例如,一个或多个中央处理单元核心和一个或多个图形处理单元核心等)。
主存储器330包括一个或多个随机存取存储器(RAM)或其它类型的动态和/或易失性存储设备,所述设备存储用于被处理器320执行的信息和指令。非易失性存储器340包括一个或多个ROM组件或其它类型的静态和/或非易失性存储设备,所述设备存储供处理器320使用的静态信息和/或指令。在一些实施方案中,非易失性存储器340被包括在安全环境230中。存储组件350包括磁性和/或光学记录介质和相应的存储驱动器。
输入组件360包括允许用户输入信息至设备300(例如,键盘、键板、鼠标、按钮、开关等)的组件。输出组件370包括从设备300输出信息的组件(例如,显示器、扬声器、一个或多个发光二极管(“LED”)等)。
通信接口380包括类收发器组件,例如收发器和/或分开的接收器和发送器,这些组件使得设备300能够例如经由有线连接、无线连接或有线和无线连接的组合与其它设备通信。例如,通信接口380可以包括以太网接口、光接口、同轴接口、红外接口、无线电频率(“RF”)接口、通用串行总线(“USB”)接口等。
设备300在本文中被描述为执行各种操作。设备300可以响应于处理器320执行包括在计算机可读介质例如主存储器330、非易失性存储器340和/或存储组件350中的软件指令而执行这些操作。计算机可读介质可以被定义为非暂时性存储设备。存储设备包括单一存储设备内的空间或遍布多个存储设备的空间。
在一些实施方案中,软件指令是经由通信接口380从另一个计算机可读介质或从另一个设备被读取到主存储器330和/或非易失性存储器340中。当存储在主存储器330和/或非易失性存储器340中的软件指令被执行时,其促成处理器320执行本文所描述的一个或多个过程。另外或替代地,硬连接电路可以用来代替或结合软件指令以执行本文所描述的一个或多个过程。因此,本文所描述的实施方案不限于硬件电路和软件的任何特定组合。
图3中示出的组件的数量是为了解释目的而提供。实际上,相比于图3中示出的组件,设备300可以包括额外的组件、更少的组件、不同的组件或不同配置的组件。另外或替代地,计算设备210可以包括一个或多个设备300和/或设备300的一个或多个组件。
图4是相当于图2的一个或多个组件和/或设备的例示性功能组件400的图。在一些实施方案中,功能组件400被包括在计算设备210和/或安全环境230中。在一些实施方案中,功能组件被包括在与计算设备210分离或包括计算设备210的一个或多个设备中。如图4中所示,功能组件400包括许可证评估器410和许可证实施器420。
许可证评估器410执行与评估软件许可证有关的操作,以确定软件许可证是否有效。在一些实施方案中,当许可程序220被计算设备210安装时,许可证评估器410生成、接收和/或存储许可证有效性指示符。另外或替代地,当计算设备210接收使用许可程序220的请求时,许可证评估器410基于许可证有效性指示符确定软件许可证是否有效。许可证评估器410可以向许可证实施器420发送指示许可证是否有效的有效性通知。在一些实施方案中,许可证评估器410包括专用硬件(例如,专用安全处理器的至少一部分)。在一些实施方案中,许可证评估器410包括在安全环境中执行的指令(例如软件、固件等)(例如,由专用安全处理器执行的指令、由虚拟安全处理器执行的指令等)。
许可证实施器420执行与实施软件许可证有关的操作。在一些实施方案中,许可证实施器420可以从许可证评估器410接收指示许可证有效的有效性通知。如果有效性通知指示许可证有效,则许可证实施器420执行安全代码(例如,被计算设备安装在安全环境中),或者解密安全代码和/或信息(例如,使用存储在安全环境中的解密算法)。所述执行和/或解密允许计算设备210执行许可程序220的基本功能。如果有效性通知指示许可证无效,则许可证实施器420不执行安全代码或不解密安全代码和/或信息。在一些实施方案中,许可证实施器420包括专用硬件(例如,专用安全处理器的至少一部分)。在一些实施方案中,许可证实施器420包括在安全环境中执行的指令(例如软件、固件等)(例如,由专用安全处理器执行的指令、由虚拟安全处理器执行的指令等)。
图4中示出的功能组件的数量是为了解释目的而提供。实际上,相比于图4中示出的功能组件,功能组件400可以包括额外的功能组件、更少的功能组件、不同的功能组件或不同配置的功能组件。
图5是用于评估和实施软件许可证的例示性过程500的流程图。在一些实施方案中,图5的一个或多个过程块由计算设备210来执行。另外或替代地,图5的一个或多个过程块由与计算设备210分离或包括计算设备210的另一个设备或一组设备来执行。
如图5中所示,过程500包括生成许可程序的许可证有效性指示符(区块510)。在一些实施方案中,许可证有效性指示符是在许可程序220被计算设备210安装时生成。许可证有效性指示符可以包括安全密匙和/或当许可程序220在被安装于计算设备210上和/或已经在计算设备210上完成安装时所确定的系统时间。
在一些实施方案中,计算设备210基于许可程序220的安装生成安全密匙。计算设备210可以基于收到用户已经购买允许使用许可程序220的许可证密钥的指示而生成安全密匙。计算设备210使用许可证密钥以及与计算设备210相关的系统识别符生成安全密匙。在一些实施方案中,计算设备210根据密匙生成算法使许可证密钥和系统识别符结合来生成安全密匙。计算设备210将安全密匙存储在安全环境230中(例如许可证评估器410中)。在一些实施方案中,计算设备210将安全密匙存储在与专用安全处理器和/或虚拟安全处理器相关的安全环境中。或者,计算设备210将安全密匙存储在安全环境230以外(例如在存储组件350的非安全存储区中)。在这个实施方案中,计算设备210可以将安全密匙标记为安全,且可以只允许专用安全处理器和/或虚拟安全处理器访问安全密匙。
许可证密钥在一些实施方案中包括允许访问和/或使用许可程序220(和/或许可程序220的部分或功能)的字符(例如,字母、数字、符号等)的组合。系统识别符在一些实施方案中包括与计算设备210相关的唯一识别符,例如识别计算设备210和/或计算设备210的组件的序列号或另一唯一识别符(例如,处理器序列号、主板序列号、计算设备210的另一组件例如图2或3中所描绘的组件的序列号等)。在一些实施方案中,系统识别符可以包括与计算设备210相关的多个识别符的组合。
在一些实施方案中,计算设备210将在许可程序220被安装在计算设备210上时所确定的系统时间存储在安全环境230中(例如许可证评估器410中)。在一些实施方案中,计算设备210将系统时间存储在与专用安全处理器和/或虚拟安全处理器相关的安全环境中。或者,计算设备210将系统时间存储在安全环境230以外(例如在存储组件350的非安全存储区中)。在这个实施方案中,计算设备210可以将系统时间标记为安全,且可以只允许专用安全处理器和/或虚拟安全处理器访问系统时间。计算设备210可以基于接收到使用许可程序220的许可证在经过一段特定时间(例如,30天试用期)后到期的指示而存储系统时间。
如图5中进一步所示,过程500包括接收使用许可程序的请求(区块520)、确定比较指示符(区块530)以及基于许可证有效性指示符和比较指示符确定许可程序的许可证是否有效(区块540)。在一些实施方案中,计算设备210从计算设备210的用户接收到所述请求。例如,用户可以经由计算设备210的输入组件指示执行许可程序220和/或许可程序220的特定功能的要求。计算设备210还确定比较指示符,并通过将比较指示符与许可证有效性指示符作比较来确定许可程序220的许可证是否有效。计算设备210可以伴随使用许可程序220的请求接收比较指示符,或可以基于接收请求检索和/或生成比较指示符。
在一些实施方案中,当许可证有效性指示符是安全密匙时,比较指示符是比较密匙。在一些实施方案中,计算设备210接收和/或检索比较密匙(例如,从用户和/或从存储器)。在一些实施方案中,计算设备210接收比较许可证密钥(例如,从用户和/或从存储器),并通过使用密匙生成算法合并比较许可证密钥和系统识别符来生成比较密匙。计算设备210基于比较所述比较密匙和所述安全密匙来确定许可证是否有效。如果比较密匙和安全密匙匹配,则计算设备210确定许可证有效。如果比较密匙和安全密匙不匹配,则计算设备210确定许可证无效。
在一些实施方案中,当许可证有效性指示符是许可程序220被安装在计算设备210上时所确定的系统时间(“安装时系统时间”)时,比较指示符是在收到使用许可程序220的请求时所确定的比较系统时间(“请求时系统时间”)。计算设备210通过比较安装时系统时间和请求时系统时间来确定许可证是否有效。如果安装时系统时间和请求时系统时间之间的时间差小于阈值(例如,小于试用期阈值例如30天试用),则计算设备210确定许可证有效。如果安装时系统时间和请求时系统时间之间的时间差大于阈值,则计算设备210确定许可证无效。在一些实施方案中,计算设备210从许可程序220(例如在安装期间)确定阈值时间周期(例如试用期)。
如果计算设备210确定许可证有效(区块540-是),则过程500包括允许执行存储在安全环境中的安全代码(区块550)。在一些实施方案中,安全代码是用于运行许可程序220的程序代码的一部分。当计算设备210安装许可程序220时,许可程序220的程序代码的一部分可以安装在安全环境230中。或者,计算设备210可以将程序代码的部分存储在安全环境230以外(例如在存储组件350的非安全存储区中)。在这个实施方案中,计算设备210可以将被安装部分标记为安全,且可以只允许专用安全处理器和/或虚拟安全处理器访问和/或执行被安装部分。安装在安全环境230中的部分代码执行许可程序220的基本功能,以使得除非许可证有效,否则不能执行该基本功能。例如,所述基本功能可以是产生大量数据的算法、解析存档文件的报头以确定关于存储在该存档文件中的文件的信息的算法等。当计算设备210确定许可证有效时,存储在安全环境230中的部分代码被执行或允许被执行(例如被许可证实施器420执行)。
作为一个实例,将文件压缩和存档的软件程序可以将程序代码安装在安全环境230中。程序代码可以解析安全环境230中的存档文件的报头,且可以基于被解析的报头将关于存档文件中所包括的文件的信息发回给软件程序。
作为另一个实例,用于编辑图像和/或视频的软件程序可以将程序代码安装在安全环境230中,该程序代码执行产生大量信息的图片/视频编辑算法。安全环境230生成信息并将其发送给软件程序,用于编辑图片/视频。在安全环境230中生成大量信息确保了简单的黑客程序无法规避安全环境230的实施机制。此外,在安全环境230中执行软件功能允许提高嵌入软件程序中的秘密信息的机密性。
在一些实施方案中,安全代码是存储在安全环境230中的解密算法(例如,共享密匙对、公共密匙对、私人密匙对等)。当计算设备210安装许可程序220时,许可程序220的一部分程序代码和/或使用许可程序220所需要的信息被加密。当计算设备210确定许可证有效时,该加密代码和/或信息通过或允许通过存储(或另外执行)在安全环境230中的解密算法被解密(例如被许可证实施器420解密)。
如果计算设备210确定许可证无效(区块540-否),则过程500包括阻止执行存储在安全环境中的安全代码(区块560)。在一些实施方案中,当计算设备210确定许可证无效时,许可证实施器420阻止计算设备210执行存储在安全环境230中的部分代码。在一些实施方案中,当计算设备210确定许可证无效时,许可证实施器420阻止计算设备210使用存储在安全环境230中的解密算法解密代码和/或信息。
虽然已经参照图5描述了一系列区块,但是在一些实施方案中,可以修改所述区块和/或区块的顺序。另外或替代地,可以并行执行独立的区块。
图6是关于图5中所示的例示性过程的例示性实施方案600的图。图6描绘例示性实施方案600,其中许可证评估器410使用安全密匙和比较密匙评估软件许可证,以确定软件许可证是否有效。
如参考数字610所示,例示性实施方案600包括接收允许在计算设备210上使用和/或安装许可程序220的许可证密钥。如参考数字620所示,计算设备210合并许可证密钥和系统识别符(例如,计算设备210的组件例如处理器320的序列号或其它系统识别符)以生成安全密匙。计算设备210通过应用密匙生成算法来合并许可证密钥和系统识别符而生成安全密匙。例如,许可证密钥“123”和系统识别符“ABC”可以合并生成安全密匙“1A2B3C”。安全密匙被存储在安全环境230中(例如在许可证评估器410中)。
如参考数字630所示,计算设备210接收使用许可程序220的请求。所述请求可以包括执行(例如运行)许可程序220的请求和/或执行许可程序220的特定功能的请求。在一些实施方案中,由计算设备210的用户生成请求。在一些实施方案中,由设备和/或设备的组件(例如在计算设备210和/或另一设备上运行的应用程序)生成请求。
如参考数字640所示,计算设备210确定比较密匙。例如,计算设备210可以基于接收请求接收、检索和/或生成比较密匙。在一些实施方案中,计算设备210基于使用许可程序220的请求接收比较许可证密钥(例如,从用户、许可程序220和/或存储器)。计算设备210通过将密匙生成算法应用于比较许可证密钥和系统识别符来生成比较密匙。
如参考数字650所示,计算设备210比较所述比较密匙和所述安全密匙以确定许可程序220的许可证是否有效。如参考数字660所示,计算设备210(例如许可证评估器410)基于所述比较生成有效性通知。该有效性通知指示许可证是有效还是无效,且可以发送给许可证实施器420。例如,如果比较密匙和安全密匙都是“1A2B3C”,则有效性通知指示许可证有效。
图7是关于图5中所示的例示性过程的例示性实施方案700的图。图7描绘例示性实施方案700,其中许可证评估器410使用安装时系统时间和请求时系统时间来评估软件许可证,以确定软件许可证是否有效。
如参考数字710所示,例示性实施方案700包括在计算设备210上安装许可程序220。如参考数字720所示,在许可程序220被安装于计算设备210上时所确定的系统时间被存储在安全环境230中(例如许可证评估器410中)。例如,安装许可程序220时的系统时间可以是2012年10月1日9:00am。当安装许可程序220时,计算设备210还可以接收阈值时间值,在此期间使用许可程序220的许可证有效(例如,30天或直到2012年10月31日9:00am)。
如参考数字730所示,计算设备210如针对图6所述接收使用许可程序220的请求。如参考数字740所示,计算设备210确定在收到使用许可程序220的请求时所确定的系统时间。如参考数字750所示,计算设备210比较请求时系统时间和安装时系统时间(例如存储在安全环境230中)。
计算设备210(例如许可证评估器410)确定请求时系统时间和安装时系统时间之间的差是否满足阈值,且如参考数字760所示基于满足阈值(例如在安装期间接收的阈值时间值)的差生成有效性通知。例如,如果差小于阈值(例如,对于30天试用来说,如果请求时系统时间在2012年10月31日9:00am之前),则有效性通知指示许可证有效。如果差大于或等于阈值(例如,如果请求时系统时间在2012年10月31日9:00am之时或之后),则有效性通知指示许可证无效。许可证评估器410可以将有效性通知发送给许可证实施器420。
图8是关于图5中所示的例示性过程的例示性实施方案800的图。图8描绘例示性实施方案800,其中许可证实施器420基于有效性通知允许或阻止执行许可程序220的一部分代码。
如参考数字810所示,计算设备210将许可程序220的程序代码的一部分安装在安全环境230中(例如许可证实施器420中)。在一些实施方案中,这部分代码执行许可程序220的基本功能。如图8中进一步所示,许可证实施器420接收有效性通知660/760(例如,从许可证评估器410)。
如参考数字820所示,如果有效性通知指示许可程序220的许可证有效,则许可证实施器420执行被安装的代码部分。如参考数字830所示,如果有效性通知指示许可程序220的许可证无效,则许可证实施器420不执行被安装的代码部分。
图9是关于图5中所示的例示性过程的例示性实施方案900的图。图9描绘例示性实施方案900,其中许可证实施器420基于有效性通知允许或阻止执行解密算法。
如参考数字910所示,许可证实施器420从计算设备210接收使用许可程序220所需要的加密程序代码和/或加密信息。在一些实施方案中,计算设备210基于使用许可程序220的用户请求将加密代码/信息发送给许可证实施器420。如图9中进一步所示,许可证实施器420接收有效性通知660/760(例如,从许可证评估器410)。
如参考数字920所示,如果有效性通知指示许可程序220的许可证有效,则许可证实施器420使用解密算法解密加密代码/信息。如参考数字930所示,如果有效性通知指示许可程序220的许可证无效,则许可证实施器420不解密加密代码/信息。在一些实施方案中,当许可程序220被安装在计算设备210上时,计算设备210将解密算法发送给许可证实施器420,且许可证实施器420存储解密算法。
本文所描述的实施方案提供了固件实现的许可技术,该许可技术使用安全环境来改进软件许可证评估、验证和实施。例如,固件实现的许可技术提供高水平安全性,不容易被规避,不需要附加硬件,而且不需要互联网连接。
上述公开内容提供了说明和描述,但是无意为详尽性或将实施方案限于公开的精确形式。改动和变化根据以上公开内容是可能的或者可以从实施方案的实践获得。
如本文中所使用,术语“组件”意图被广泛地视为硬件、固件或硬件和软件的组合。
一些实施方案是连同阈值被描述在本文中。在本文中用来描述值和阈值的关系的术语“大于”(或类似术语)可以与术语“大于或等于”(或类似术语)互换地使用。类似地,在本文中用来描述值和阈值的关系的术语“小于”(或类似术语)可以与术语“小于或等于”(或类似术语)互换地使用。如本文中所使用,“满足”阈值(或类似术语)可以与“大于阈值”、“大于或等于阈值”、“小于阈值”、“小于或等于阈值”或其它类似术语互换地使用。
应该明白,本文所描述的系统和/或方法可以以图中所说明的实施方案中的软件、固件和硬件的许多不同形式来实现。用于实现这些系统和/或方法的实际软件代码或专用控制硬件不限制所述实施方案。因此,系统和/或方法的操作和行为是在不参照具体软件代码的情况下被描述—应该理解,软件和控制硬件可以被设计成基于本文的描述来实现系统和/或方法。
尽管特定的特征组合被叙述在权利要求书中和/或被公开在本说明书中,但是这些组合无意限制可能的实施方案的公开内容。实际上,这些特征中的许多可以以没有明确地在权利要求书中叙述和/或在本说明书中公开的方式组合。尽管下文所列出的每个从属权利要求可以直接依赖于仅一个权利要求,但是可能的实施方案的公开内容包括每个从属权利要求和权利要求组中所有其它权利要求的组合。
本文所使用的元件、动作或指令不应该视为是关键或必要的,除非被明确描述成这样。另外,如本文中所使用,冠词“一”意图包括一个或多个项目,且可以与“一个或多个”互换地使用。当只想指示一个项目时,使用术语“一个”或类似语言。另外,除非另外明确说明,否则短语“基于”意指“至少部分基于”。
Claims (20)
1.一种方法,其包括:
通过所述处理器接收使用软件程序的请求;
通过所述处理器并基于接收所述请求确定比较指示符;
通过所述处理器并基于存储在安全环境中的许可证有效性指示符和所述比较指示符来确定所述软件程序的许可证是否有效;
通过所述处理器并在所述许可证被确定为有效时允许执行存储在所述安全环境中的安全代码;以及
通过所述处理器并在所述许可证被确定为无效时阻止执行存储在所述安全环境中的所述安全代码。
2.根据权利要求1所述的方法,其中所述许可证有效性指示符包括通过将密匙生成算法应用于下列项而生成的安全密匙:
用于访问所述软件程序的许可证密钥,和
识别用于运行所述软件程序的设备的至少一个组件的系统识别符。
3.根据权利要求2所述的方法,其中所述比较指示符包括通过将所述密匙生成算法应用于下列项而生成的比较密匙:
比较许可证密钥,和
所述系统识别符;且
其中所述的确定所述许可证是否有效进一步包括:
通过确定所述比较密匙和所述安全密匙是否匹配来确定所述许可证是否有效。
4.根据权利要求1所述的方法,其中所述许可证有效性指示符指示当所述软件程序被安装在计算设备上时所确定的第一系统时间。
5.根据权利要求4所述的方法,其中所述比较指示符指示当所述的使用所述软件程序的请求被所述计算设备接收时所确定的第二系统时间;且
其中所述的确定所述许可证是否有效进一步包括:
通过确定所述第一系统时间与所述第二系统时间之间的差是否满足阈值来确定所述许可证是否有效。
6.根据权利要求1所述的方法,其中所述安全代码包括用于运行所述软件程序的程序代码的一部分。
7.根据权利要求1所述的方法,其中所述安全代码包括用于解密用来运行所述软件程序的程序代码或信息的解密算法。
8.一种设备,其包括:
一个或多个处理器,其用于:
接收使用软件程序的请求;
基于接收所述请求来确定比较指示符;
基于存储在安全环境中的许可证有效性指示符和所述比较指示符来确定所述软件程序的许可证是否有效;
当所述许可证被确定为有效时,允许执行存储在所述安全环境中的安全代码;以及
当所述许可证被确定为无效时,阻止执行存储在所述安全环境中的所述安全代码。
9.根据权利要求8所述的设备,其中所述许可证有效性指示符包括通过将密匙生成算法应用于下列项而生成的安全密匙:
用于访问所述软件程序的许可证密钥,和
识别用于运行所述软件程序的设备的至少一个组件的系统识别符。
10.根据权利要求9所述的设备,其中所述比较指示符包括通过将所述密匙生成算法应用于下列各项而生成的比较密匙:
比较许可证密钥,和
所述系统识别符;且
其中当确定所述许可证是否有效时,所述一个或多个处理器还用于:
通过确定所述比较密匙和所述安全密匙是否匹配来确定所述许可证是否有效。
11.根据权利要求8所述的设备,其中所述许可证有效性指示符指示当所述软件程序被安装在计算设备上时所确定的第一系统时间。
12.根据权利要求11所述的设备,其中所述比较指示符指示当使用所述软件程序的所述请求被所述计算设备接收时所确定的第二系统时间;且
其中当确定所述许可证是否有效时,所述一个或多个处理器还用于:
通过确定所述第一系统时间与所述第二系统时间之间的差是否满足阈值来确定所述许可证是否有效。
13.根据权利要求8所述的设备,其中所述安全代码包括用于运行所述软件程序的程序代码的一部分。
14.根据权利要求8所述的设备,其中所述安全代码包括用于解密用来运行所述软件程序的程序代码或信息的解密算法。
15.一种存储指令的非临时性计算机可读介质,所述指令包括:
一个或多个指令,其在被处理器执行时促使所述处理器:
接收使用软件程序的请求;
基于接收所述请求来确定比较指示符;
基于存储在非易失性存储器中的许可证有效性指示符和所述比较指示符来确定所述软件程序的许可证是否有效;
当所述许可证被确定为有效时,允许执行存储在所述非易失性存
储器中的安全代码;以及
当所述许可证被确定为无效时,阻止执行存储在所述非易失性存储器中的所述安全代码。
16.根据权利要求15所述的计算机可读介质,其中所述许可证有效性指示符包括通过将所述密匙生成算法应用于下列各项而生成的安全密匙:
用于访问所述软件程序的许可证密钥,和
识别用于运行所述软件程序的设备的至少一个组件的系统识别符。
17.根据权利要求16所述的计算机可读介质,其中所述比较指示符包括通过将所述密匙生成算法应用于下列各项而生成的比较密匙:
比较许可证密钥,和
所述系统识别符;且
其中促使所述处理器确定所述许可证是否有效的所述一个或多个指令还促使所述处理器:
通过确定所述比较密匙和所述安全密匙是否匹配来确定所述许可证是否有效。
18.根据权利要求15所述的计算机可读介质,其中所述许可证有效性指示符指示当所述软件程序被安装在计算设备上时所确定的第一系统时间。
19.根据权利要求18所述的计算机可读介质,其中所述比较指示符指示当使用所述软件程序的所述请求被所述计算设备接收时所确定的第二系统时间;且
其中促使所述处理器确定所述许可证是否有效的所述一个或多个指令还促使所述处理器:
通过确定所述第一系统时间与所述第二系统时间之间的差是否满足阈值来确定所述许可证是否有效。20.根据权利要求15所述的计算机可读介质,其中所述安全代码包括下列各项中的至少一个:
用于运行所述软件程序的程序代码的部分;或
用于解密程序代码的解密算法或用于运行所述软件程序的信息。
20.根据权利要求15所述的计算机可读介质,其中所述安全代码包括下列各项中的至少一个:
用于运行所述软件程序的程序代码的部分;或
用于解密程序代码的解密算法或用于运行所述软件程序的信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/681,861 US20140143885A1 (en) | 2012-11-20 | 2012-11-20 | Firmware-implemented software licensing |
US13/681,861 | 2012-11-20 | ||
PCT/CA2013/000968 WO2014078934A1 (en) | 2012-11-20 | 2013-11-19 | Firmware-implemented software licensing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104871165A true CN104871165A (zh) | 2015-08-26 |
Family
ID=50729270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380065960.XA Pending CN104871165A (zh) | 2012-11-20 | 2013-11-19 | 固件实现的软件许可 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20140143885A1 (zh) |
EP (1) | EP2923294A1 (zh) |
JP (1) | JP2015535113A (zh) |
KR (1) | KR20150087363A (zh) |
CN (1) | CN104871165A (zh) |
IN (1) | IN2015DN04005A (zh) |
WO (1) | WO2014078934A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140304833A1 (en) * | 2013-04-04 | 2014-10-09 | Xerox Corporation | Method and system for providing access to crowdsourcing tasks |
US9215067B2 (en) * | 2013-04-05 | 2015-12-15 | International Business Machines Corporation | Achieving storage efficiency in presence of end-to-end encryption using downstream decrypters |
WO2015116855A1 (en) * | 2014-01-29 | 2015-08-06 | Intertrust Technologies Corporation | Secure application processing systems and methods |
US20160073217A1 (en) * | 2014-09-10 | 2016-03-10 | General Electric Company | Methods and systems for secure activation of software licenses and features |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10147948A1 (de) * | 2001-09-28 | 2003-04-24 | Siemens Ag | Verfahren zur Lizenzierung und Delizenzierung von Software |
US20080022127A1 (en) * | 2002-01-30 | 2008-01-24 | Mckenney Paul E | Security Module |
US20110055589A1 (en) * | 2009-09-01 | 2011-03-03 | Hsieh Tieh-Chin | Information certification system |
CN102385671A (zh) * | 2010-09-02 | 2012-03-21 | 研祥智能科技股份有限公司 | 软件加密方法及系统 |
CN102739659A (zh) * | 2012-06-16 | 2012-10-17 | 华南师范大学 | 一种防重放攻击的认证方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004086404A (ja) * | 2002-08-26 | 2004-03-18 | Yokogawa Electric Corp | ソフトウェアライセンス認証システム |
JP2005227995A (ja) * | 2004-02-12 | 2005-08-25 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
JP2005259082A (ja) * | 2004-03-15 | 2005-09-22 | Hiroyuki Naruto | 簡易ソフトウェアライセンス管理方法、プログラム及び記憶媒体 |
US8271390B2 (en) * | 2004-06-14 | 2012-09-18 | Nokia Corporation | Digital rights management (DRM) license manager |
US20070078957A1 (en) * | 2005-08-24 | 2007-04-05 | Nokia Corporation | Firmware-licensing system for binding terminal software to a specific terminal unit |
EP1983458A1 (en) * | 2007-04-19 | 2008-10-22 | THOMSON Licensing | Media package, system comprising a media package and method of using stored data |
JP4585594B2 (ja) * | 2008-03-27 | 2010-11-24 | 技研商事インターナショナル株式会社 | ライセンス外部メモリ |
US20090327741A1 (en) * | 2008-06-30 | 2009-12-31 | Zimmer Vincent J | System and method to secure boot uefi firmware and uefi-aware operating systems on a mobile internet device (mid) |
JP5206263B2 (ja) * | 2008-09-12 | 2013-06-12 | 株式会社リコー | 情報処理装置、ライセンス判定方法、及びプログラム |
WO2011031129A1 (en) * | 2009-09-11 | 2011-03-17 | Mimos Bhd. | Software license registration management system |
US8332631B2 (en) * | 2010-11-22 | 2012-12-11 | Intel Corporation | Secure software licensing and provisioning using hardware based security engine |
-
2012
- 2012-11-20 US US13/681,861 patent/US20140143885A1/en not_active Abandoned
-
2013
- 2013-11-19 IN IN4005DEN2015 patent/IN2015DN04005A/en unknown
- 2013-11-19 JP JP2015542123A patent/JP2015535113A/ja active Pending
- 2013-11-19 EP EP13856094.1A patent/EP2923294A1/en not_active Withdrawn
- 2013-11-19 WO PCT/CA2013/000968 patent/WO2014078934A1/en active Application Filing
- 2013-11-19 KR KR1020157016313A patent/KR20150087363A/ko not_active Application Discontinuation
- 2013-11-19 CN CN201380065960.XA patent/CN104871165A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10147948A1 (de) * | 2001-09-28 | 2003-04-24 | Siemens Ag | Verfahren zur Lizenzierung und Delizenzierung von Software |
US20080022127A1 (en) * | 2002-01-30 | 2008-01-24 | Mckenney Paul E | Security Module |
US20110055589A1 (en) * | 2009-09-01 | 2011-03-03 | Hsieh Tieh-Chin | Information certification system |
CN102385671A (zh) * | 2010-09-02 | 2012-03-21 | 研祥智能科技股份有限公司 | 软件加密方法及系统 |
CN102739659A (zh) * | 2012-06-16 | 2012-10-17 | 华南师范大学 | 一种防重放攻击的认证方法 |
Also Published As
Publication number | Publication date |
---|---|
US20140143885A1 (en) | 2014-05-22 |
KR20150087363A (ko) | 2015-07-29 |
JP2015535113A (ja) | 2015-12-07 |
IN2015DN04005A (zh) | 2015-10-02 |
WO2014078934A1 (en) | 2014-05-30 |
EP2923294A1 (en) | 2015-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3387782B1 (en) | Device using secure storage and retrieval of data | |
CN103210396B (zh) | 包括用于保护敏感代码和数据的架构的方法和装置 | |
US11487852B2 (en) | Blockchain-based license management | |
US8844049B2 (en) | Method for generating a cryptographic key for a protected digital data object on the basis of current components of a computer | |
US20190026442A1 (en) | Offline activation for application(s) installed on a computing device | |
CN100587699C (zh) | 基于访问权限为项目生成使用权限的方法和计算机可读介质 | |
CN103400068B (zh) | 使用多级验证控制用户对受保护资源的访问的系统和方法 | |
CN101199159A (zh) | 安全引导 | |
US20090259591A1 (en) | Information Rights Management | |
CN102945355A (zh) | 基于扇区映射的快速数据加密策略遵从 | |
CN103763313A (zh) | 一种文档保护方法和系统 | |
US20070234073A1 (en) | Random password automatically generated by bios for securing a data storage device | |
CN103038775A (zh) | 电子证书管理 | |
KR20080037048A (ko) | 라이센스에 따른 생산 작용 변경 | |
CN105453102A (zh) | 用于识别已泄漏的私有密钥的系统和方法 | |
US8776258B2 (en) | Providing access rights to portions of a software application | |
GB2522032A (en) | Controlling the configuration of computer systems | |
CN112001376B (zh) | 基于开源组件的指纹识别方法、装置、设备及存储介质 | |
EP1837789A2 (en) | Method and apparatus for temporarily accessing content using temporary license | |
CN112104627A (zh) | 基于区块链的数据传输方法、装置、电子设备及存储介质 | |
CN104871165A (zh) | 固件实现的软件许可 | |
US20060259978A1 (en) | Secure exchange of information in electronic design automation with license-related key generation | |
JP6523581B2 (ja) | 情報提供装置、情報提供システム、情報提供方法および情報提供プログラム | |
US20230245102A1 (en) | Non Fungible Token (NFT) Based Licensing and Digital Rights Management (DRM) for Software and Other Digital Assets | |
CN101192263A (zh) | 信息处理系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150826 |
|
WD01 | Invention patent application deemed withdrawn after publication |