CN116249980A - 通过异构加密的软件访问 - Google Patents

通过异构加密的软件访问 Download PDF

Info

Publication number
CN116249980A
CN116249980A CN202180066382.6A CN202180066382A CN116249980A CN 116249980 A CN116249980 A CN 116249980A CN 202180066382 A CN202180066382 A CN 202180066382A CN 116249980 A CN116249980 A CN 116249980A
Authority
CN
China
Prior art keywords
program
payload
components
encrypted
heterogeneous
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
Application number
CN202180066382.6A
Other languages
English (en)
Inventor
M·西苗尼
S·布拉格因
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN116249980A publication Critical patent/CN116249980A/zh
Pending legal-status Critical Current

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/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • 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/107License processing; Key processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

异构程序有效载荷的第一副本被提供给第一计算设备。异构程序有效载荷包含未加密组件和一个或多个加密组件的集合。所述加密组件的集合对应于一个或多个程序的集合。所述异构程序有效载荷的所述未加密组件包括被配置为接收第一许可密钥的加载器程序代码。所述加载程序代码被配置为,响应于接收到第一许可密钥,对所述异构程序有效载荷的所述加密组件的集合执行解密动作。

Description

通过异构加密的软件访问
背景技术
本公开涉及软件访问,并且更具体地,涉及通过加密提供对软件的各种程序的访问。
可以通过软件分发机制(如物理副本或对软件的网络访问)向一方或多方提供软件。控制仅授权方对软件的访问仍然是一个技术和安全问题。
发明内容
根据实施例,公开了一种方法、***和计算机程序。
异构程序有效载荷(heterogeneous program payload)的第一副本被提供给第一计算设备。异构程序有效载荷包含未加密组件和一个或多个加密组件的集合。所述加密组件的集合对应于一个或多个程序的集合。所述异构程序有效载荷的所述未加密组件包括被配置为接收第一许可密钥的加载器程序代码。所述加载器序代码被配置为,响应于接收到所述第一许可密钥,对所述异构程序有效载荷的所述加密组件的集合执行解密动作。
以上概述并不旨在描述本公开的每个示出的实施例或每个实现方式。
附图说明
包括在本申请中的附图被结合到说明书中并且形成说明书的一部分。它们示出了本公开的实施例,并且与描述一起用于解释本公开的原理。附图仅说明某些实施例,而并不限制本公开。
图1示出了根据本公开的一些实施例描述了可以使用的示例计算机***的代表性主要组件;
图2示出了根据本发明的一个实施例的云计算环境;
图3示出了根据本发明的一个实施例的抽象模型层;
图4示出了与本公开的一些实施例一致的用于保护软件有效载荷的一个或多个程序的异构加密软件(HES)安全(HESS)的***;
图5示出了根据本公开的一些实施例的由客户端***执行的HES的示例方法;以及
图6示出了与本公开的一些实施例一致的用于创建HES的组件以便提供给客户端***的示例方法。
虽然本发明服从不同修改和替代形式,但其细节已经通过举例在附图中示出并且将被详细描述。然而,应当理解,本发明并不局限于所描述的具体实施例。相反,本发明涵盖所有修改、等同物,以及落入本发明的范围内的替代方案。
具体实施方式
本公开的方面涉及软件访问;更具体的方面涉及通过加密提供对软件的不同程序的访问。虽然本公开不必限于这样的应用,但是可以通过使用该上下文对不同示例的讨论来理解本公开的各个方面。
软件是操作计算机的核心部分。软件可以是程序的集合。软件的每个程序可以被配置成为用户执行多个操作的可执行文件的形式出现。例如,文字处理器可以是一种被配置为从用户接收输入以生成文本文档的软件。软件可以是被配置成为用户执行各种程序或操作的可执行代码的不同配置的版本或变体的形式。例如,图像编辑器可包括具有1,110个特征的子集的第一配置。图像编辑器的第二配置可包括超过3000个特征的完整集合。软件可以以一套相关或不相关程序的形式出现。例如,生产力套件可以包括文字处理器和演示文稿创建器。文字处理器可以包括能够独立操作的第一多个特征。演示文稿创建器可包括能够独立操作的第二多个特征。文字处理器和演示文稿创建器都可包括附加的相互关联的特征,诸如在文字处理器和演示文稿创建器之间导出或导入附图、文本或其他元素的能力。
软件的创建是昂贵的,因为可能会雇用许多人来创建和维护软件。例如,开发者、工程师、测试者等可能集中于在一些情况下构成给定软件片段的数百或数千程序的创建和维护。以其不同形式实施软件对于软件创建者是持续的挑战。已经采取了若干方法来尝试保护软件并且提供对无数特征、组件、程序、变体以及其他形式的软件的访问。由于软件创建者试图创建高质量的软件并类似地向被授予软件访问权限的客户提供访问权限,因此挑战可能会很复杂。
进一步地,对软件的控制可能是重要的安全问题。例如,第三方可能篡改软件并且可能能够访问组成给定软件的不同程序。篡改可能是恶意的,因为可以采用病毒或信息采集技术。恶意篡改或其他对软件的访问可能成为巨大的技术问题。例如,软件的恶意篡改可能导致软件不再成功运行或可能导致数据丢失。
保护软件的一种方法是为软件的每个购买者生成唯一版本的二进制文件。具体地,软件提供商可以编译、构建或以其他方式生成可执行用于软件的第一客户端的第一软件。软件提供商可进一步生成可执行用于软件的第二客户端的第二软件。为每个用户生成软件的自定义版本可能具有缺点。例如,所创建的每个版本可以创建复杂度,因为每个版本可以包括重复的代码行或附加逻辑。增加的复杂性可进一步增加成功执行软件所需的存储器占用面积或处理周期。如果仅需要一个或两个不同的客户端来获得软件的版本,则可能创建软件的定制版本。然而,快速地,为每个用户创建软件的版本可能变得不切实际或不可能,因为软件的用户可能是数十或数百或更多。进一步,通过软件的定制和版本更新,维护软件可能很快变得相当费力。例如,一些客户端可能期望不同更新并且当发现错误时,软件的每个版本可能需要更新。代替更新软件的单个集合,可能需要维护每个客户端的软件的每个版本。另外,它可以消耗附加的存储器和处理功率以生成软件集合的每个版本并且成功地测试和调试软件的每个版本。
保护软件的另一种方法是基于许可字符串的软件分发。在基于许可字符串的软件分发中,软件的创建者针对软件的每个客户端生成未加密的字符串串(例如,密钥串;一系列字母、数字和符号;许可证文件)。具体地,软件可以与捆绑到有效载荷(例如,软件的可分发版本)中的每个版本、组件、特征或其他相关变体一起装运。软件还可以包括接受许可证串的能力,读取许可证串的值并确定允许客户端访问的软件的各种变体。例如,第一用户可以具有允许访问软件的第一变体(诸如十二个可能变体中的特征二、五和七)的第一许可字符串。在另一示例中,第二用户可以具有允许访问软件的第二变体(例如十二个可能变体中的特征一、二、三、五和七)的第二许可字符串。
每个许可字符串可以包括一个或多个嵌入式属性、字符、值或其他相关属性。嵌入的属性可对应于软件的各种变体。例如,许可字符串中的第一属性可对应于第一软件变体,许可字符串中的第二属性可对应于第二软件变体。软件可以包括被配置成接受许可字符串、读取和处理不同属性、以及响应地准许对软件的变体的访问的逻辑或代码。
基于许字符串的方法可以具有另外的缺点。软件可以受到调试或其他攻击,以确定许可字符串的属性。例如,恶意第三方可在调试器中执行软件,且在运行时期间可监视软件。软件中控制对软件的不同组件、特征、配置或程序的访问的逻辑可被监视以确定什么特定标志、密钥,属性、或值负责或对应于不同配置。例如,恶意第三方可以监控软件的程序执行并且确定许可字符串的第四位置中的属性对应于授予许可以执行软件的第一程序的能力。还可以反向设计基于许可字符串的方法。例如,恶意第三方可以反编译软件并且可以从经反编译的源代码确定软件中的访问控制程序的逻辑。在另一示例中,恶意第三方可以在由处理器执行时监视软件的存储器空间。当监视存储器空间时,恶意第三方可能能够确定对应于访问软件的不同程序的不同属性。一旦确定值的不同属性,向其他方共享或分发这些变型可能是微不足道的。例如,恶意第三方可以在互联网上共享具有值的许可字符串,所述值授权访问软件的每个程序。
另一个缺点是,通过反编译或其他恶意技术,可能能够识别正在被访问控制的不同组件或程序并且提取它们以供使用。例如,恶意第三方可执行解构技术来检索或访问构成软件的不同程序。一旦恶意第三方能够访问不同程序,第三方可以重新编译或创建不具有任何基于许可字符串的访问控制逻辑的软件的新版本。该软件的新版本在没有任何许可字符串或其他访问控制的情况下可由恶意第三方执行。
软件创建者可能试图使这些恶意技术更加困难。例如,软件创建者可能尝试创建更复杂的算法,其执行不同步骤以混淆或观察或拦截准许对访问软件的不同组件的程序。更复杂的算法可能仅在有限的环境下是成功的。例如,访问控制程序的更复杂的算法可以包括使用大量存储器或许多处理周期。这些可以仅在具有大量存储器的计算机(诸如大型机服务器或超级计算机)上是有益的。软件越来越多地在具有不能执行复杂算法的更多有限资源的计算机上执行。例如,由于缺乏随机存取存储器(RAM),智能电话可能不能够执行与软件的其他程序的访问控制相关联的复杂算法。在另一示例中,物联网(IoT)设备中的嵌入式处理器可能在处理数天或数周之后执行复杂的算法,从而使得安全性对于在IoT设备上使用是不切实际的。
软件安全的另一种方法可以是基于网络的软件安全技术。在基于网络的技术中,软件通过网络(例如,互联网)连接到中央服务器,用于验证客户端被允许操作软件。在基于网络的技术中,软件可以仅在其从中央服务器接收信号时进行操作。该基于网络的软件安全技术具有许多附加缺点。首先,该技术可被第三方错误地模仿。例如,恶意第三方可以在软件的副本在给定客户端上执行并与中央服务器通信时监控来自软件的副本的网络流量。可记录信号和其间的其他相关网络流量或可通过监测反向设计验证逻辑。恶意第三方可响应于软件生成类似信号,并可能错误地向软件指示它是中央服务器。其次,基于网络的技术可以是资源密集。例如,软件创建者可以在拥有和操作中央服务器的不同组件以及与使中央服务器对所有客户端可用相关联的网络带宽时花费大量资源。
第三,基于网络的技术可能是不可靠的。具体地,由于中央服务器中断或网络可用性问题,可以包括给定客户端进行认证的能力。例如,用户可以具有智能电话和软件的副本;软件的副本可以被配置成用于与中央服务器通信以便验证软件执行的安全性。如果智能电话失去网络连通性,甚至偶然地,因为接入控制不再可用,软件的副本可能不再执行。第四,在一些实际情况下,基于网络的技术在技术上是不可能的。具体地,软件的一些客户端可以操作具有隔离***的计算机。隔离***可以是不与任何其他计算机通信耦合的***。特定客户可能需要隔离***。例如,为了增加安全性,客户端可在具有安全或隐私要求的特定工业(例如,金融、健康、防御)操作***。为了安全操作,客户端可以不通信地连接到任何其他计算机,并且可以在没有网络连接的情况下执行处理。在没有网络连接的情况下,基于网络的技术可能不能成功地验证一个或多个程序,并且软件可能不可操作。
异构加密软件安全(HESS)与其他形式的安全软件相比可以具有一个或多个优点和特征来执行。HESS可以部分地通过将构成软件的一个或多个程序加密成一个或多个加密组件集来操作;该一个或多个加密组件集可以与未加密组件组合以形成异构程序有效载荷。例如,程序可以是布置在一个或多个文件夹中并且压缩成程序包(例如,JAR文件中的Java程序代码)的诸如来自解释型语言的一个或多个程序代码文件。在另一示例中,可将例如来自经编译语言的一或多个源代码文件一起编译成可执行程序的一系列二进制值。再例如,构成有效载荷的程序的一部分可用第一加密过程进行加密。例如,可利用对称加密算法(例如,AES-128或更高密钥长度)或利用非对称加密算法(例如,RSA-2048或ECDSA-224或更高密钥长度)或具有基于属性的加密方案(例如基于密钥策略属性的加密方案(KP-ABE)或具有恒定大小密文的KP-ABE)对有效载荷的部分进行加密。
当加密时,异构程序有效载荷可以具有对应于该一个或多个程序的一个或多个加密组件的集合。加密过程可仅针对组件的一部分(例如,一个或多个程序的集合)。具体地,另一程序或多个程序可以在异构程序有效载荷中保持未加密。在一些实施例中,诸如加载器程序之类的程序可以保持为异构程序有效载荷的未加密组件。例如,程序和任何相关或支持的库或运行时间可以在二进制可执行文件中保持一系列未加密位;可执行文件还可以包括一系列加密位,其包括该加密组件的集合。在另一示例中,可分发的程序(诸如JAR文件)可以具有对应于异构程序有效载荷的未加密部分的一个或多个代码文件和文件夹。
HESS的异构程序有效载荷可以结合密钥(如许可密钥)进行操作。具体地,可以将异构程序有效载荷与密钥一起或分开地分发到一个或多个计算***。在一些实施例中,HESS可以是异构程序有效载荷和多个密钥的形式。具体地,可以为被配置为操作异构程序有效载荷的副本的每个潜在客户端机器生成密钥。每个密钥可以包括对应异构程序有效载荷中的各个程序的一个或多个加密的程序属性。例如,第一密钥可包括三十个字母数字字符,其是属性的加密形式。加密的程序属性可以是一个或多个字母、字符、符号等,其表示给予许可访问在加密组件的集合中加密的程序集合的子集的程序属性的加密形式。
每个密钥可以不同于任何其他密钥。具体而言,HESS的每个密钥可按以下方式来构造:一个或多个经加密的程序属性的集合对于每个密钥是不同的。换言之,向异构程序有效载荷授予相同许可的两个密钥不共享加密的程序属性。例如,第一密钥可以包括一个或多个程序属性,所述程序属性仅允许运行构程序有效载荷的程序集合中的第一程序。第二密钥可包括相同的一个或多个程序属性,所述程序属性同样仅允许运行第一程序。第一密钥可被加密,使得一个或多个程序属性具有一个或多个加密程序属性的第一集合的形式。第二密钥还可以被加密,使得一个或多个程序属性也是加密的程序属性的形式,但是以一个或多个加密的程序属性的第二集合的形式。通过检查,确定程序属性可能不是可确定的、可认识的或以其他方式可确定的,因为只有经加密的程序属性可为可观测的。
异构程序有效载荷的未加密组件集可以包含被配置为与形成该有效载荷的其余部分的加密部件一起操作并提供对加密组件集的访问的代码。具体地,异构程序有效载荷的未加密组件可以被配置为加载器程序代码(“加载器”)。HESS的异构程序有效载荷的加载器可被配置成接收密钥并执行一个或多个解密技术。异构程序有效载荷的解密技术可以是自解密技术。具体地,异构程序有效载荷的加载器程序可以被配置为接受指向加密组件集的一个或多个命令。例如,用户可以发起请求以执行在一个或多个组件中的第一加密组件中加密的第一程序。用户可通过向加载器提供用于执行程序的操作的输入来进行操作。例如,HESS可被配置成保护以软件的形式出现的生产力套件,该软件包括加密组件集,该加密组件集包括文本编辑器程序和图像编辑器程序。用户可通过向加载器发送执行文本编辑器程序的命令来开始HESS的操作。
加载器程序代码可以被配置为接收密钥并且执行对所述第一加密组件的解密动作。详细地,加载器可以被配置为接收密钥,对所述密钥执行解密动作并且确定所述密钥的有效性以访问存储在异构程序有效载荷的加密组件中的程序。例如,如果密钥包含加密的程序属性,在加载器解密时,所述加密的程序属性包含与所请求的程序相对应的程序属性,则加载可以被配置为解密所述程序并且将所述程序加载到主存储器中以供执行。在另一示例中,如果密钥包含加密的程序属性,该加密的程序属性在被加载器解密时不包含对应于所请求的程序的程序属性,则加载器可以被配置成拒绝执行包含该程序的加密组件。
异构程序有效载荷可能在技术上有利于其他形式的密钥和可执行分布。具体地,HESS的密钥的值可以抵抗恶意攻击。首先,HESS可以仅对包括加密的程序属性的密钥进行操作,而基于许可字符串的技术可以对未加密的值进行操作。恶意第三方可能不能够读取在密钥的加密的程序属性中加密的一个或多个程序属性。所述加载器可以只用于对与加密的程序属性对应的特定程序进行解密,不专门生成未加密的程序属性。例如,加载器可以仅通过将密钥和用于执行第一程序的请求以第一程序的程序执行指令的形式作为编程输入来操作。加载器的输出可以仅是第一程序的执行,而不包括与第一程序相对应的未加密的程序属性。
第二,与其他技术相比,加载器程序可以用减少的资源进行操作。具体地,可以由加载器执行比其他技术(例如基于许可证字符串安全技术)更简单形式的计算和解密算法。例如,解密技术可依赖于复杂的过程集合或电路的专用集合或加密元素。其他技术的专门解密过程可以是仅限于智能电话或具有专用硬件或显著处理能力的其他便携式计算设备。相反,加载器的解密过程可以是以相对低的资源使用率操作的过程,诸如仅使用几千字节的主存储器并且仅使用几十个处理周期执行的计算机过程。
第三,HESS可以在对恶意第三方观察或调试有弹性的同时执行解密。例如,加载器程序代码可以被反编译或调试,但是加载器的解密技术可以是不公开程序属性的技术。加载器可以通过执行无法观察到的解密动作来操作。例如,由加载器程序解密的代码仍然可以是加密代码的形式,类似于描述为“安全”或“秘密”代码执行的技术。在一些实施例中,可以使用同态加密技术,使得加密的有效载荷仍然可以被执行,同时仍然防止攻击者观察代码。在一些实施例中,可以能够观察到有限的操作,但是由加载器执行的操作可以不在任何点处存在、公开或以其他方式允许访问未加密程序属性。例如,加载器程序步骤可以仅公开加密组件集的区段或部分的指针、引用或其他指示,但是可以不参考、公开或以其他方式揭示存储在加密组件中的实际程序。在一些实施例中,加载器代码可以不包括任何访问控制逻辑。加载器代码可以不包括指示或选择应当被解密的特定组件的任何程序代码。在一些实施例中,许可密钥可以以诸如加密程序属性的加密形式存储方向、指针或对特定程序的其他相关引用。解密操作可以对特定程序产生从许可密钥的加密的程序属性未加密的指针或引用。
因此,异构程序有效载荷的加载器可能永远不会泄露或以其他方式以明文形式存储所有未加密程序或任何访问控制或对存储在加密组件中的程序授予许可的程序属性的副本。此外,加载器可以仅对加密的组件的一部分解密。例如,第一异构程序有效载荷包括三个加密组件的集合和包括用于该集合的加载器程序代码的未加密组件。在接收到授权访问第一加密组件的第一许可密钥时,只有第一加密组件可以被解密到主存储器的***分中。第二加密和第三加密部件可以不是未加密的;并且在仅接收到第一许可密钥时,加载器可能永远不会被解密。细粒度解密方法可以防止其他加密组件的未授权访问或修改。因此,由于软件的其他组件从未被解密或者任何访问控制逻辑不存在,所以不存在反编译、反向工程或以其他方式查看观察或获得未被解密的程序的可能性。
第四,HESS可以在隔离机器上操作。异构程序有效载荷可以是部分自解密的。具体地,异构程序有效载荷的加载器程序代码可以在不需要网络连接的情况下操作。异构程序有效载荷的加载器可在不与其他计算机通信的情况下操作。加载器可以仅访问关于哪些程序(存储在该组加密组件中)的输入和访问许可密钥来操作。
第五,HESS的维持可以相对简单。具体地,异构程序有效载荷可以包含所有组件、特征、以及其他各种配置的程序,以便在单个有效载荷中分发。例如,第一许可密钥可以包括仅允许第一加密组件被解密和执行的加密程序属性。在另一示例中,第二许可密钥可以包括允许多个加密组件被解密和执行多个加密程序属性。如果要创建新版本,则软件创建者可能仅需要为每个特定客户端维护单个异构程序有效载荷,并且各种特征或变体可以仅由许可密钥和存储在未加密组件中的所述加载器程序代码的组合来实现控制。
图1示出了根据本公开的一些实施例的可以使用的示例计算机***100(可替代地,计算机)的代表性主要组件。应当理解,各个组件可以在复杂性、数量、类型和/或配置方面变化。所公开的特定示例仅用于示例目的,并且不一定是仅有的这样的变化。计算机***100可以包括处理器110、存储器120、输入/输出接口(在此为I/O或I/O接口)130、以及主总线140。主总线140可以为计算机***100的其他部件提供通信路径。在一些实施例中,主总线140可连接到其他组件,诸如专用数字信号处理器(未示出)。
计算机***100的处理器110可以包括一个或多个核112A、112B、112C、112D(统称为112)。处理器110可附加地包括为核112提供指令和数据的临时存储的一个或多个存储缓冲器或高速缓存(未示出)。核112可对从高速缓存或存储器120提供的输入执行指令,并将结果输出至高速缓存或存储器。核112可以包括被配置成执行根据本公开的实施例的一个或多个方法的一个或多个电路。在一些实施例中,计算机***100可以包含多个处理器110。在一些实施例中,计算机***100可以是具有单个核112的单个处理器110。
计算机***100的存储器120可以包括存储器控制器122。在一些实施例中,存储器120可以包括用于存储数据和程序的随机存取半导体存储器、存储设备或存储介质(易失性或非易失性)。在一些实施例中,存储器可以是模块的形式(例如,双列直插式存储器模块)。这个存储器控制器122可与处理器110通信,便于存储和检索存储器120中的信息。存储器控制器122可以与I/O接口130通信,便于存储器120中的输入或输出的存储和检索。
I/O接口130可以包括I/O总线150、终端接口152、存储接口154、I/O设备接口156、以及网络接口158。I/O接口130可以将主总线140连接到I/O总线150。I/O接口130可以将指令和数据从处理器110和存储器120引导到I/O总线150的不同接口。I/O接口130还可将指令和数据从I/O总线150的不同接口引导到处理器110和存储器120。各种接口可以包括终端接口152、存储接口154、I/O设备接口156和网络接口158。在一些实施例中,不同接口可以包括前述接口的子集(例如,工业应用中的嵌入式计算机***可以不包括终端接口152和存储接口154)。
贯穿计算机***100的逻辑模块(包括但不限于存储器120、处理器110和I/O接口130)可以将对一个或多个组件的故障和改变传达至管理程序或操作***(未示出)。管理程序或操作***可以分配计算机***100中可用的不同资源,并且跟踪存储器120中的数据和分配给不同核112的进程的位置。组合或重新布置逻辑模块的元件、方面和能力的实施例可组合或重新分布。这些变化对于本领域技术人员而言将是显而易见的。
应当理解,虽然本公开包括关于云计算的详细描述,但是本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后的任何其他类型的计算环境来实现。云计算是服务交付的模型,用于使得能够方便地、按需地网络访问可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池,所述可配置计算资源可以以最小的管理努力或与服务的提供商的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特性如下:
按需自助服务:云消费者可以单方面地根据需要自动地提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者的人类交互。
广泛的网络接入:能力可通过网络获得并且通过标准机制接入,该标准机制促进异构瘦客户机平台或厚客户机平台(例如,移动电话、膝上型计算机和PDA)的使用。
资源池:提供者的计算资源被池化以使用多租户模型来服务于多个消费者,其中不同的物理和虚拟资源根据需要动态地指派和重新指派。存在位置独立性的感觉,因为消费者通常不具有对所提供的资源的确切位置的控制或了解,但可能能够以较高抽象级别(例如,国家、州或数据中心)指定位置。
快速弹性:能够快速和弹性地提供能力,在一些情况下
自动地快速缩小和快速释放以快速放大。对于消费者而言,可用于供应的能力通常显得不受限制并且可以在任何时间以任何数量购买。
测量的服务:云***通过在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某个抽象级别处利用计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用,为所利用的服务的提供者和消费者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。可通过诸如web浏览器(例如,基于web的电子邮件)之类的瘦客户端接口从不同客户端设备访问应用。消费者不管理或控制包括网络、服务器、操作***、存储或甚至单独的应用能力的底层云基础设施,可能的例外是有限的用户特定应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建的或获取的使用由提供商支持的编程语言和工具创建的应用部署到云基础设施上。消费者不管理或控制包括网络、服务器、操作***或存储的底层云基础设施,但是对所部署的应用和可能的应用托管环境配置具有控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其他基本计算资源,所述软件可以包括操作***和应用。消费者不管理或控制底层云基础设施,而是具有对操作***、存储、所部署的应用的控制以及对所选联网组件(例如,主机防火墙)的可能受限的控制。
部署模型如下:
私有云:云基础架构仅为组织运作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
社区云:云基础架构被若干组织共享并支持共享了关注(例如,任务、安全要求、策略、和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公共云:使云基础架构对公众或大型行业组可用,并且由出售云服务的组织拥有。
混合云:云基础架构是两个或更多个云(私有、社区或公共)的组合,这些云保持唯一实体但通过使数据和应用能够移植的标准化或专有技术(例如,云突发以用于云之间的负载平衡)绑定在一起。
云计算环境是面向服务的,集中于无状态、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础设施。
现在参考图2,示出了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,所述本地计算设备例如是移动和/或可穿戴电子设备54A、台式计算机54B、膝上型计算机54C和/或汽车计算机***54N。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图2中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以在任何类型的网络和/或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算设备通信。
现在参考图3,示出了由云计算环境50(图2)提供的一组功能抽象层。应当预先理解,图3中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储装置65;以及网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作***74;以及虚拟客户端75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价82在云计算环境内利用资源时提供成本跟踪,并为这些资源的消费开账单或***。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和***管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务水平。服务水平协议(SLA)规划和履行85提供根据SLA预期未来需求的云计算资源的预安排和采购。
工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负荷和功能的示例包括:地图和导航91;软件开发和生命周期管理92;虚拟课堂教育交付93;数据分析处理94;交易处理95;以及HESS96。
图4示出了与本公开的一些实施例一致的用于保护软件有效载荷的一个或多个程序的异构加密软件安全(HESS)的***400。***400可以是正执行安全软件执行的操作的计算设备的一个或多个组件。计算设备可以是客户端设备,诸如计算机100。***400可包括多个硬件,所述多个硬件包括以下:处理器410、辅助存储器420和主存储器430。***400还可以包括输入(未示出)以接收用于执行由处理器410执行的命令。例如,从第一程序或用户接收命令以执行其他程序或子例程。
辅助存储器420可以便于用于提供给处理器410和主存储器430的程序和可执行代码的存储或保持(临时或更永久地)。在第一示例中,辅助存储器420可以是存储设备,例如硬盘驱动器或固态存储设备或配置成存储一个或多个数据位的其他计算机组件。继续第一示例,主存储器430可以是随机存取存储器(RAM)并且可以从辅助存储器420接收数据。在第二示例中,辅助存储器420是RAM并且主存储器430可以是处理器410的一个或多个寄存器或缓存。
***400可以被配置成用于接收并执行安全软件。具体地,***400可以被配置为接收许可密钥(key)440和异构程序有效载荷(payload)450的副本。有效载荷450可以由单独的计算设备提供,诸如服务器或云计算环境50。有效载荷450可由在被提供给***400之前单独的计算设备生成。密钥440也可在被***400接收之前由单独的计算设备提供。密钥440和有效载荷450可存储在***400的辅助存储器420中。密钥440可以包括一个或多个加密的程序属性442-1和442-2(统称为442)的集合。加密的程序属性442的集合可以是包含一个或多个程序属性(未示出)集合的加密的字符序列。程序属性的集合可以是引用、指针或其他相关程序值。有效载荷450可包括未加密组件452和一个或多个加密组件454-1、454-2,直到454-N(统称为454)的集合。有效载荷450可以是可执行文件或档案。例如,有效载荷450可以是可由***400的处理器410执行的二进制文件。在另一示例中,有效载荷450可以是可执行档案,该可执行档案包括用于由处理器410执行的多个文件和文件夹(未示出)。
未加密组件452可以是可执行的并且响应于一个或多个命令、输入、请求等。详细地,未加密组件452可以被配置为被配置为接收程序执行请求的加载器程序代码(加载器)。加载器452可以被配置成执行有效载荷450的其他部分。加载器452可以加载例如未加密的其他运行时间、库、代码对象等。加载器452还可以被配置为有条件地操作有效载荷450的其他部分。具体地,加载器452可以仅间接加载或执行一个或多个加密组件454。具体地,加载器452可以仅对加密组件454的集合中的单个加密组件进行解密,并且在成功解密之后,加密组件454的集合中现在被解密的组件可以自动启动。进一步,并且为了增加的安全性,取决于密钥440,只有某些加密组件454可以永远被解密,并且一些加密组件454可以永远不被解密。例如,未指定要执行的任何程序、组件或特征(存储在给定加密组件454中)将不是由未加密组件452解密。在另一示例中,在给定密钥440中不具有对应的加密许可442的任何程序、组件或特征(存储在给定加密组件454中)永远不会被未加密组件452解密。在一些情况下,其他***或其他密钥(除了密钥440之外)可以被提供有不同的加密属性的集合。另一密钥的不同的加密属性的集合可包括将允许执行某些加密组件454的程序属性。例如,如果在稍后给***400提供包括附加加密属性的新密钥,则执行有效负载450的第一副本可以允许执行存储在加密组件454中的其他程序、组件或特征。
在操作的第一示例中,第一请求460可以被***400的处理器410接收到。处理器410可以接收第一请求460,并且作为响应可以执行有效载荷450的第一实例470。第一有效载荷实例470可以包括未加密组件472的第一实例和加密组件474-1、474-2,直到474-N(统称为474)的集合。第一请求460可指向加密组件474的集合中被加密的程序的集合中的第一程序。第一请求460可以是对第一程序的执行请求。第一有效载荷实例470还可以被配置成用于验证密钥440的有效性(例如,通过被提供密钥440作为执行时的自变量,或通过响应于第一请求460检索密钥440)。请求460可以是通过图形用户界面(例如,从菜单上的鼠标点击)或命令行指令的从用户输入的形式。例如,第一请求460可以指向有效载荷450,该有效载荷是命名为“mySoftware.jar”的JavaJAR文件,具有命名为“myLicense.key”的密钥440,并请求执行命名为“TextTyper”的程序474-1。在命令行中,第一请求460可以显示为“java-jar mySoftware.jar-1myLicense.key-t TextTyper”。
继续操作的第一示例,当接收到请求460时,处理器410可以执行第一有效载荷实例470,并且加载器472可以使用密钥440解密经加密的组件474-1。密钥440的加密属性442可包括加密的二进制值,所述加密的二进制值指定密钥可以解密哪些组件,以及表征受保护的功能的标签。程序474-1的执行可被确保不被***410的其余部分观察到。在第一示例中,可采用同态加密技术。在第二示例中,第一有效载荷实例470可以从在主存储430中执行的其他进程沙盒化。在另一个示例中,第一有效载荷实例470的加密组件474可以包括对称密钥的第一加密副本(未示出),并且密钥440还可以包括对称密钥的第二加密副本。没有接收到在密钥440中被加密的对称密钥的副本的任何加密组件474可以不执行。因此,在解密之后并且在存在于主存储430中时拦截程序474-1的第一实例的恶意程序可能不能够在还不拥有对称密钥的副本的情况下作出可执行的副本。
在操作的第二示例中,可以由处理器接收第二请求480。处理器410可接收第二请求480,并且作为响应可执行有效载荷450的第二实例490。第二有效载荷实例490可包括未加密组件492的第二实例和加密组件494-1、494-2,直到494-N(统称为494)的集合。第二请求480可指向在加密组件474的集合中被加密的程序的集合中的第二程序。具体地,第二程序可在加密组件494-2中被加密。第二请求480还可以伴随密钥440。密钥440可具有加密属性的集合,但可不具有对应于加密组件494-2的加密属性。
继续操作的第二示例,响应于该请求,未加密组件492可以尝试执行请求480中的第二程序的执行。未加密组件492代码可以不包括用于定位或执行访问控制或揭示关于加密组件494的任何信息的任何逻辑。例如,第二请求480可以指向名称为‘PicturePainter’的程序并且可以包括密钥440。加密的属性442可以对应于不是“PicturePainter”程序的程序。未加密组件492可仅含有使用所提供的密钥执行解密例程的代码。代码可以不揭示任何组件的未加密数据。所有加密组件494都可以基于第二示例保持加密。
图5示出了根据本公开的一些实施例的由客户端***执行的HESS的示例方法500。方法500可由诸如计算机***100的计算机执行。方法500可以响应于用户指示计算机执行提供给计算机的安全软件来执行。例如,记忆棒可包含异构程序有效载荷(有效载荷)的副本,例如有效载荷450。执行方法500的计算机可连接至诸如因特网的网络。在一些实施例中,方法500可以在隔离计算机上执行。例如,执行方法500的计算机可以与其他计算机、服务器等隔离,或者可以不直接(或通过网络间接)通信地耦合到任何其他处理设备。
方法500在505开始,当在510处执行有效载荷时。有效载荷可以通过接收开始执行程序的命令行自变量来执行。在510,可例如通过计算机上的批处理或脚本周期性地执行有效载荷。
在520,可以向有效载荷输入许可密钥。在一些实施例中,在510,密钥可以是输入作为有效载荷的执行的一部分。例如,许可密钥可以是作为有效载荷的执行的一部分提供的命令行自变量。在一些实施例中,在510处,可在有效载荷执行之后输入密钥。例如,许可密钥可以本地地位于存储设备上、位于逻辑文件夹中、或其他相关计算结构中。在执行有效载荷510时,未加密的组件(例如验证和加载程序)可以通过请求提供许可密钥而开始。在请求许可密钥时,用户或程序可以在520将许可密钥输入到有效载荷的未加密组件。
可以在530接收程序执行指令。程序执行指令可以由有效载荷510接收。例如,程序执行指令可以是来自脚本、用户或其他程序的选择,以开始第一程序的执行。可以在有效载荷510的执行时接收程序执行指令。例如,程序执行指令可以是在510执行时提供给有效载荷的自变量。程序执行指令可以指向有效载荷的一部分。具体地,程序执行指令可以通过程序名或其他相关标识符指代存储在有效载荷的加密组件的集合中的一个或多个程序。
在540,可以执行有效载荷的执行的有效性。执行的有效性可以是在520输入的密钥的有效性。有效载荷的未加密组件可以接收许可密钥,并且可以尝试用许可密钥执行解密过程(例如,使用诸如AES的对称算法,或诸如ABE的非对称算法)。执行的有效性可以响应于在530接收的程序执行指令。有效性可以基于许可密钥并且可以进一步基于在530接收的特定程序指令。具体地,基于在520输入的许可密钥,并结合在530接收的程序指令,有效载荷的未加密组件可以通过执行一个或多个解密操作来开始。可以对组件集合中的每个加密的组件执行解密操作。例如,整个许可密钥可以与对应于加密组件的集合的目标加密组件的明文标识符一起作为解密过程的自变量提供。有效性的确定可以执行解密处理的解密动作以尝试对存储在组件集合中的加密组件中的所识别的程序进行解密。解密过程可尝试使用许可密钥中的每个加密属性来执行解密动作。例如,给定的许可密钥可以是值的字符串,所述字符串表示对应于可由对应的异构程序有效载荷执行的45个程序的45个加密属性。对应的有效载荷可以包含存储在70个单独的加密组件中的70个程序。如果45个加密属性中的一个对应于加密匹配的加密组件,那么在530,解密过程可仅解密来自接收程序执行指令的请求程序。解密过程可以被配置为接收整个密钥而不揭示对应于存储在加密组件中的程序的任何特定程序属性。例如,解密过程可以不揭示加密属性的任何未加密版本,并且可以无法描绘、无法提供作为输出或作为可观察的中间(例如,在主存储器中、在存储器中、或在处理器的寄存器中)任何未加密形式的加密属性,所述加密属性形成许可密钥。
在550如果有效性被确定为有效:是(Y),则在560,可以加载解密的程序。解密的程序560可以是被加载的唯一程序。换言之,在560,不是请求的程序的任何加密组件没有被解密。解密的程序560可被安全地加载。例如,处理器可以分配RAM或高速缓存的安全(例如,沙箱化的、私有的)部分以用于在执行期间保存解密的程序。
在550如果有效性被确定为无效:否(N),则在570,拒绝所接收的程序执行指令。在570处的拒绝可以是指示、输出或其他描述拒绝的消息。例如,可以生成声明“不允许程序访问”的消息到文件。在另一个示例中,可以生成声明“无效输入”的消息到计算机的输出或屏幕缓冲器。570处的拒绝可包括异构程序有效载荷的未加密组件的程序终止,而没有程序终止的原因的任何通信。
在550将有效性确定为有效之后:是(Y),或在550将有效性确定为无效之后:否(N),方法500在595结束。
图6示出了与本公开的一些实施例一致的用于创建用于提供给客户端***的HESS的组件的示例方法600。方法600可由中央计算机(诸如计算机100)执行。方法600可由云提供者(诸如云计算环境50)执行。方法600可在分发或以其他方式提供软件之前由软件创建者执行。例如,方法600可以作为集成开发环境的一部分执行,以生成软件的新版本以校正漏洞,或扩展或创建新特征。
从605开始,可以在610接收请求。该请求可以是输入作为脚本的一部分,用于生成软件或生成对软件的许可。在610处的请求可以包括一个或多个参数,诸如构建信息、软件版本信息、许可证名称、客户端名称、许可证许可、或其他相关参数。610处的请求可以包括对不安全的软件的引用。例如,所述请求可包括指向未加密格式的一个或多个程序的集合的位置的指针,所述程序存储为二进制文件的一部分或存储为源代码功能或存储为软件档案文件的一个或多个文件和/或文件夹。
在620,如果请求是针对新的有效载荷,则在630可以分配一个或多个程序属性的集合。属性的分配可以包括为将作为有效载荷的一部分的软件的每个程序分配单个属性。具体地,如果给定软件片段具有135个不同的程序,则可以将135个程序属性分配给各个不同的程序。例如,如果开发人员正在生成包括四个不同程序的用于分发的新有效载荷,则可以将属性“F1”、“F2”、“F3”和“F4”分别分配给第一程序、第二程序、第三程序和第四程序。
在640,可生成异构程序有效载荷。可以基于第一加密处理生成程序。第一加密过程可包括执行生成异构程序有效载荷的加密算法。例如,可以通过对称加密算法(例如,AES128或更高密钥长度,或具有非对称加密算法(如RSA-2048或ECDSA-224)或更高密钥长度,或具有基于属性的加密方案(如KP-ABE或CP-ABE))对有效载荷进行加密。第一加密过程可以任何顺序采用三个输入。第一加密过程可以将作为(在610接收的)请求的一部分的不安全有效载荷作为第一输入。第一加密处理可以将分配的程序属性作为第二输入。第一加密过程可以将主密钥作为第三输入。主密钥可以是键、值、字符串、或具有足够长度(例如,1024位)的其他系列的字或字符。
如果一个或多个输入不完整或缺失,第一加密过程可能会出错或返回错误代码。例如,如果不安全有效载荷包含四个程序并且第一加密过程仅被给予三个程序属性,则第一加密过程可能返回错误。作为生成异构程序有效载荷的一部分,可以生成一个或多个加密组件的集合(例如,作为第一加密过程的结果或输出)。作为生成异构程序有效载荷的一部分,在640,不安全组件可以与加密组件组合(例如,与第一加密过程创建该组加密组件基本上同时、就在第一加密过程创建该组加密组件之前或就在第一加密过程创建该组加密组件之后)。未加密组件可以通过编译、分组、归档、嵌入或以其他方式组合未加密组件和加密组件的集合来与加密组件的集合组合。未加密组件可以是第一加密处理的输出。例如,作为第一加密过程的一个输出,可以生成解密过程。解密过程可以将诸如程序属性的子集(例如,以加密的形式)之类的一个或多个程序属性作为输入。
在620,如果该请求不是针对新有效载荷:否(N),并且在650,如果该请求是针对新密钥的:是(Y),则在660可以接收针对该密钥的一个或多个许可。对新密钥的(在610接收的)请求可包括一个或多个许可、引用、值或被允许由给定的异构程序有效载荷执行的程序的相关标识符,以及对给定的异构程序有效载荷的引用。所述一个或多个许可可以是程序属性的集合的实例或第一子集。例如,程序属性的全部集合可以包括与在异构程序有效载荷中存储(以加密的形式)的每个程序相对应的35个程序属性。继续该示例,接收到的许可可以包括程序属性的子集,包括第三程序属性,第十二程序属性和第三十程序属性。接下来,在670,可以获得随机值。随机值可以是随机的字符串。随机值可以是随机的字序列。随机值可以具有足够的长度或大小(例如,256位)。
在680,可以生成许可密钥。许可密钥可以由第二加密过程生成。第二加密过程可以是相关的加密过程。第二加密过程可包括三个输入。第一输入可以是程序属性的子集(例如,对应于要被允许访问由要生成的许可密钥执行的程序的程序属性)。第二输入可以是随机值。第三输入可以是主密钥。第二加密处理的输出可以是许可密钥。许可密钥可以是一系列值、字符串、或其他相关的密码输出。许可密钥可包括加密的程序属性集合,所述加密的程序属性集合对应于被允许解密以供执行的异构程序有效载荷的加密组件的子集。许可密钥可以不描绘、分离或以其他方式指示第一加密程序属性在何处结束以及第二加密程序属性在何处结束。随机值的使用可以确保通过比较两个密钥无法辨别加密的程序属性。例如,给定程序属性的第一子集、以及第一随机数以及主密钥,在680生成的许可密钥可以是具有“skZ|E"8'wBfbye-7[$$p7uNM2HLi>NZgOrAYFO&kjhlX{QQ=Oyrb#s<R-+8%h,Xh,X”值的字符串。继续该示例,给定相同的程序属性的第一子集、第二随机数和主密钥,在680生成的许可密钥可以是具有“HF,FQLb]46,x^/d?".QCd,=-?#sm.v:CT/xT(0o<4BxE&LfThZ8*^zP(C?__nPA”值的字符串。
在650如果该请求不是针对新密钥:否(N),或者在680生成许可密钥之后,方法600在695结束。
本发明可以是任何可能的技术细节集成水平的***、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储媒体可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储媒质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储媒质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储媒体不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输媒体传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储媒质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储媒质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储媒质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。
附图中的流程图和框图展示了根据本发明的不同实施例的***、方法和计算机程序产品的可能实现方式的架构、功能和操作。就这一点而言,流程图或框图中的每个框可表示模块、段或指令的部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些可选实现,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以作为一个步骤完成,以部分或完全时间上重叠的方式同时、基本上同时执行,或者这些框有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可以用执行指定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的***来实现。
已经出于说明的目的呈现了对本披露的不同实施例的描述,但并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。这里使用的术语被选择来解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。
已经出于说明的目的呈现了对本披露的不同实施例的描述,但并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。这里使用的术语被选择来解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。

Claims (20)

1.一种方法,包括:
向第一计算设备提供异构程序有效载荷的第一副本,
其中:
所述异构程序有效载荷包含未加密组件和一个或多个加密组件的集合,所述加密组件的集合对应于一个或多个程序的集合,所述异构程序有效载荷的所述未加密组件包括被配置为接收第一许可密钥的加载器程序代码,以及
所述加载器程序代码被配置为,响应于接收到所述第一许可密钥,对所述异构程序有效载荷的所述加密组件的集合执行解密动作。
2.根据权利要求1所述的方法,其中所述方法还包括:
由第二计算设备分配对应于所述程序的集合的一个或多个程序属性的集合,其中所述程序属性的集合中的每个程序属性识别所述程序的集合中的每个对应程序;以及
由所述第二计算设备从所述程序的集合并且基于使用主密钥和所述程序属性的集合的第一加密过程生成包括所述未加密组件和所述加密组件的集合的所述异构程序有效载荷,其中所述异构程序有效载荷在提供给所述第一计算设备之前被生成。
3.根据权利要求2所述的方法,其中所述方法还包括:
由所述第二计算设备并且基于使用所述主密钥和随机字符串以及所述程序属性的集合的第一子集的第二加密过程来生成所述第一许可密钥,其中所述第一许可密钥包含与所述加密组件的集合的第一子集对应的一个或多个加密程序属性的第一集合。
4.根据权利要求3所述的方法,其中:
所述程序属性的集合所述第一子集与所述程序属性的集合相同,以及
所述加密组件的所述集合的所述第一子集与所述加密组件的集合相同。
5.根据权利要求1所述的方法,其中所述加密组件中的第一加密组件是第一程序,并且其中所述加密组件中的第二加密组件是所述第一程序的特征。
6.根据权利要求1所述的方法,其中所述方法还包括:
向所述第一计算设备提供所述第一许可密钥,其中:
所述第一许可密钥包含与所述一个或多个加密组件的第一子集对应的一个或多个加密程序属性的第一集合。
7.根据权利要求6所述的方法,其中所述加载器程序代码进一步被配置为:
接收第一程序执行指令,所述第一程序执行指令指向所述加密组件的第一组件中加密的第一程序。
8.根据权利要求7所述的方法,其中所述解密动作包括:
由所述加载器程序代码确定所述第一许可密钥的无效性;以及
响应于所述无效性,由所述加载器程序代码拒绝所述第一程序执行指令。
9.根据权利要求7所述的方法,其中所述解密动作包括:
由所述加载器程序代码确定所述第一许可密钥的有效性;以及
响应于所述有效性,由所述加载器程序代码基于所述第一程序执行指令将所述第一程序加载到存储器中以供处理器执行。
10.根据权利要求9所述的方法,其中所述方法还包括:
向第二计算设备提供第二许可密钥,其中:
所述第二许可密钥包含对应于所述一个或多个加密组件的所述第一子集的一个或多个加密程序属性的第二集合,以及
所述一个或多个加密的程序属性的所述第二集合与所述一个或多个加密的程序属性的所述第一子集不同;以及
向所述第二计算设备提供所述异构程序有效载荷的第二副本。
11.根据权利要求10所述的方法,其中所述异构程序有效载荷的所述第二副本的所述加载器程序代码被配置为:
接收第二程序执行指令,所述第二程序执行指令指向在所述异构程序有效载荷的所述第二副本的所述加密组件的集合中的所述第一加密组件中加密的所述第一程序;
接收所述第二许可密钥;
确定所述第二许可密钥的第二无效性;以及
响应于所述第二无效性,拒绝所述第二程序执行指令。
12.根据权利要求10所述的方法,其中所述异构程序有效载荷的所述第二副本的所述第二副本的所述加载器程序代码被配置为:
接收第二程序执行指令,所述第二程序执行指令指向在所述异构程序有效载荷的所述第二副本的所述加密组件的集合中的所述第一加密组件中加密的所述第一程序;
接收所述第二许可密钥:
确定所述第二许可密钥的有效性;以及
响应于所述有效性且基于所述第二程序执行指令将所述第一程序加载到存储器中以供处理器执行。
13.一种***,所述***包括:
存储器,所述存储器包含一个或多个指令;以及
处理器,所述处理器通信地耦合到所述存储器,响应于读取所述一个或多个指令,所述处理器被配置为:
接收异构程序有效载荷的第一副本,其中:
所述异构程序有效载荷包含未加密组件和一个或多个加密组件的集合,所述加密组件的集合对应于一个或多个程序的集合,
所述异构程序有效载荷的所述未加密组件包括被配置为接收第一许可密钥的加载器程序代码,以及
响应于接收所述第一许可密钥,所述加载器程序代码被配置为对所述异构程序有效载荷的所述加密组件的集合执行解密动作。
14.根据权利要求13所述的***,其中所述处理器还被配置为:
接收所述第一许可密钥,其中:
所述第一许可密钥包含与所述一个或多个加密组件的第一子集对应的一个或多个加密程序属性的第一集合。
15.根据权利要求14所述的***,其中所述处理器进一步被配置为:
由所述加载器程序代码接收第一程序执行指令,所述第一程序执行指令指向在所述加密组件中的第一组件中加密的第一程序。
16.根据权利要求15所述的***,其中所述解密动作包括:
由所述加载器程序代码确定所述第一许可密钥的无效性;以及响应于所述无效性,由所述加载器程序代码拒绝所述第一程序执行指令。
17.一种计算机程序产品,所述计算机程序产品包括:
一个或多个计算机可读存储介质;以及
共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令被配置为:
向第一计算设备提供异构程序有效载荷的第一副本,其中:
所述异构程序有效载荷包含未加密组件和一个或多个加密组件的集合,所述加密组件的集合对应于一个或多个程序的集合,
所述异构程序有效载荷的所述未加密组件包括被配置为接收第一许可密钥的加载器程序代码,以及
所述加载器程序代码被配置为响应于接收所述第一许可密钥,对所述异构程序有效载荷的所述加密组件的集合执行解密动作。
18.根据权利要求17所述的计算机程序产品,其中所述程序指令还被配置为:
由第二计算设备分配对应于所述程序的集合的一个或多个程序属性的集合,其中所述程序属性的集合中的每个程序属性识别所述程序的集合中的每个对应程序;以及
由所述第二计算设备从所述程序的集合并且基于使用主密钥和所述程序属性的集合的第一加密过程生成包括所述未加密组件和所述加密组件的集合的所述异构程序有效载荷,其中所述异构程序有效载荷在提供给所述第一计算设备之前被生成。
19.根据权利要求18所述的计算机程序产品,其中所述程序指令还被配置为:
由所述第二计算设备并且基于使用所述主密钥和随机字符串以及所述程序属性的集合的第一子集的第二加密过程来生成第一许可密钥,其中所述第一许可密钥包含与所述加密组件的集合的第一子集对应的一个或多个加密程序属性的第一集合。
20.根据权利要求19所述的计算机程序产品,其中:
所述程序属性的集合所述第一子集与所述程序属性的集合相同,以及
所述加密组件的集合的所述第一子集与所述加密组件的集合相同。
CN202180066382.6A 2020-09-29 2021-07-16 通过异构加密的软件访问 Pending CN116249980A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/036,577 2020-09-29
US17/036,577 US12001523B2 (en) 2020-09-29 2020-09-29 Software access through heterogeneous encryption
PCT/CN2021/106794 WO2022068322A1 (en) 2020-09-29 2021-07-16 Software access through heterogeneous encryption

Publications (1)

Publication Number Publication Date
CN116249980A true CN116249980A (zh) 2023-06-09

Family

ID=80822505

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180066382.6A Pending CN116249980A (zh) 2020-09-29 2021-07-16 通过异构加密的软件访问

Country Status (6)

Country Link
US (1) US12001523B2 (zh)
JP (1) JP2023542527A (zh)
CN (1) CN116249980A (zh)
DE (1) DE112021005119T5 (zh)
GB (1) GB2614677A (zh)
WO (1) WO2022068322A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115664836B (zh) * 2022-11-07 2023-10-03 海光信息技术股份有限公司 数据传输方法、装置、计算机设备及存储介质
US12019778B1 (en) * 2023-11-22 2024-06-25 Verkada Inc. Systems and methods to perform end to end encryption

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5563946A (en) 1994-04-25 1996-10-08 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for passing encrypted files between data processing systems
US5598470A (en) 1994-04-25 1997-01-28 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: Method and apparatus for utilizing a decryption block
US6052780A (en) 1996-09-12 2000-04-18 Open Security Solutions, Llc Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
US6523119B2 (en) 1996-12-04 2003-02-18 Rainbow Technologies, Inc. Software protection device and method
US6006190A (en) 1997-04-28 1999-12-21 Tartaroukos Llc Computer implemented method and a computer system for enforcing software licenses
US6920567B1 (en) * 1999-04-07 2005-07-19 Viatech Technologies Inc. System and embedded license control mechanism for the creation and distribution of digital content files and enforcement of licensed use of the digital content files
AU6061300A (en) 1999-06-30 2001-01-31 Ac Properties B.V. A system, method and article of manufacture for an electronic software distribution, post-download payment scheme with encryption capabilities
US20080082446A1 (en) * 1999-10-01 2008-04-03 Hicks Christian B Remote Authorization for Unlocking Electronic Data System and Method
US6460140B1 (en) * 1999-12-30 2002-10-01 Starnet Communications Corporation System for controlling the use of licensed software
US20070271191A1 (en) * 2000-03-09 2007-11-22 Andres Torrubia-Saez Method and apparatus for secure distribution of software
AU7593601A (en) * 2000-07-14 2002-01-30 Atabok Inc Controlling and managing digital assets
JP4743984B2 (ja) * 2001-03-23 2011-08-10 三洋電機株式会社 データ記録装置
CN100354786C (zh) * 2002-07-09 2007-12-12 富士通株式会社 开放型通用抗攻击cpu及其应用***
US7734550B1 (en) * 2003-10-07 2010-06-08 Microsoft Corporation Method and system for identifying the controlling license for installed software
CN1863038B (zh) 2005-05-12 2010-10-13 中国电信股份有限公司 对终端设备中应用程序实施控制和管理的方法
US8745406B2 (en) * 2005-10-17 2014-06-03 Nytell Software LLC Program executable image encryption
JP5034498B2 (ja) 2006-02-20 2012-09-26 株式会社日立製作所 ディジタルコンテンツの暗号化,復号方法,及び,ディジタルコンテンツを利用した業務フローシステム
CN100446019C (zh) 2006-07-19 2008-12-24 北京飞天诚信科技有限公司 一种软件版权保护方法
US20080313743A1 (en) * 2007-06-13 2008-12-18 Brian Chan Network Software License Management and Piracy Protection
US20090080658A1 (en) 2007-07-13 2009-03-26 Brent Waters Method and apparatus for encrypting data for fine-grained access control
EP2513832A1 (en) 2009-12-18 2012-10-24 Koninklijke Philips Electronics N.V. Digital rights management using attribute-based encryption
CN102360412B (zh) * 2011-09-26 2014-07-02 飞天诚信科技股份有限公司 Java源代码的保护方法和***
US8725649B2 (en) * 2011-12-08 2014-05-13 Raytheon Company System and method to protect computer software from unauthorized use
US20150121073A1 (en) * 2012-03-23 2015-04-30 Irdeto B.V. Software fingerprinting
US9177121B2 (en) 2012-04-27 2015-11-03 Nvidia Corporation Code protection using online authentication and encrypted code execution
US20190026442A1 (en) 2017-07-24 2019-01-24 Microsoft Technology Licensing, Llc Offline activation for application(s) installed on a computing device
CN108388439A (zh) 2018-03-27 2018-08-10 深圳市路畅科技股份有限公司 一种车载软件的更新方法、***、装置及可读存储介质

Also Published As

Publication number Publication date
WO2022068322A1 (en) 2022-04-07
US12001523B2 (en) 2024-06-04
DE112021005119T5 (de) 2023-07-20
GB2614677A (en) 2023-07-12
JP2023542527A (ja) 2023-10-10
GB202305751D0 (en) 2023-05-31
US20220100822A1 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
US10614233B2 (en) Managing access to documents with a file monitor
US11372997B2 (en) Automatic audit logging of events in software applications performing regulatory workloads
US11500988B2 (en) Binding secure keys of secure guests to a hardware security module
US10042988B2 (en) Tiered code obfuscation in a development environment
US9887842B2 (en) Binding software application bundles to a physical execution medium
TWI786373B (zh) 用於安全介面控制之安全執行客體所有者控制之電腦實施方法、電腦系統及電腦程式產品
US20200295922A1 (en) Detection and protection of data in api calls
WO2022068322A1 (en) Software access through heterogeneous encryption
JP2023551527A (ja) 準同型暗号化を使用したセキュアなコンピューティング・リソース配置
CN115668860B (zh) 用于识别加密对象的创建者的方法和***
CN114595467A (zh) 针对数据中心对象的多阶段保护
CN114586032B (zh) 安全的工作负载配置
US9858423B2 (en) Application modification based on a security vulnerability
US12008363B1 (en) Delivering portions of source code based on a stacked-layer framework
US11645092B1 (en) Building and deploying an application
US20230088524A1 (en) Secrets swapping in code
US10929153B2 (en) Bidirectional protection of application package
US20230401328A1 (en) Protecting sensitive data dump information

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination