CN111656345B - 启用容器文件中加密的软件模块 - Google Patents

启用容器文件中加密的软件模块 Download PDF

Info

Publication number
CN111656345B
CN111656345B CN201980010571.4A CN201980010571A CN111656345B CN 111656345 B CN111656345 B CN 111656345B CN 201980010571 A CN201980010571 A CN 201980010571A CN 111656345 B CN111656345 B CN 111656345B
Authority
CN
China
Prior art keywords
module
key
encrypted
software module
software
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.)
Active
Application number
CN201980010571.4A
Other languages
English (en)
Other versions
CN111656345A (zh
Inventor
约纳什·克努特松
奥洛夫·桑德伯格
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.)
Assa Abloy AB
Original Assignee
Assa Abloy AB
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 Assa Abloy AB filed Critical Assa Abloy AB
Publication of CN111656345A publication Critical patent/CN111656345A/zh
Application granted granted Critical
Publication of CN111656345B publication Critical patent/CN111656345B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/12Protecting executable software
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

提供了一种用于启用软件应用的容器文件中的加密的软件模块的方法。该方法在模块提供器中被执行并且包括以下步骤:获取软件模块;基于软件模块的标识符和主密钥来获取模块密钥,该主密钥被用来与软件模块的相应标识符相结合而生成多个模块密钥;使用模块密钥对软件模块进行加密,从而产生加密的软件模块;以及将加密的软件模块包括在容器文件中,同时从容器文件中删除模块密钥并且从容器文件中删除可以用来生成模块密钥的信息。

Description

启用容器文件中加密的软件模块
技术领域
本发明涉及用于在软件应用的容器文件中启用加密的软件模块的方法、模块提供器、计算机装置、计算机程序和计算机程序产品。
背景技术
当软件应用——也被称为应用——被分发到谷歌安卓(Google Android)环境中时,该软件应用形成了安卓程序软件包(APK)的一部分。APK是包含多个文件的容器文件,包括Java.class文件。APK被分发以允许应用被安装,因此APK可供大量的人使用。由于Java结构,Java.class文件可以被反编译成source.java文件,从而揭示应用的逻辑和算法。
这种source.java文件的公共可用性有时是不方便的并且有时是完全不可接受的,例如,泄露商业秘密。
混淆是可以用来使例如Java.class文件的反编译复杂化的技术。通过混淆器来传递原始的源文件,该混淆器创建了复杂且难以理解的java源文件的结构。混淆的文件然后被编译成字节码。然而,尽管混淆可以被用于使基于反编译的.class文件来理解source.java文件的逻辑更加困难,但是仍然可以花费时间和努力来学习很多关于source.java文件如何工作的知识。
EP 3 057 019 A1公开了如下应用,该应用包含在包括如下处理器的装置中受保护的代码部分,所述处理器执行以下操作:使用加密密钥来加密要保护的代码部分以获得受保护的部分;用与要保护的代码部分不同的有效指令来代替要保护的代码部分;存储用于解密受保护部分所需的信息,使得信息可以由无保护函数检索;存储无保护函数,使得该无保护函数可以被调用函数调用;并且在对应用中要保护的代码部分的调用周围插入对无保护函数和保护函数的调用,该保护函数被配置成保护代码部分。当被执行时,对无保护函数的调用对受保护的部分进行解密,该受保护的部分被写在其被执行的有效指令上。然而,在这个解决方案中,所得到的DEX文件包含加密的模块、用于解密的本机库(nativelibrary)二者以及对加密的模块进行解密的信息和凭证种子。因为攻击者拥有DEX文件中的所有数据和方法,并且只需要找出DEX文件的内容的结构就可以对加密的模块进行解密,因此这具有安全风险。
发明内容
目的是提供以比现有技术更安全的方式将经编译的java文件包括在容器文件例如APK中的方式。
根据第一方面,提供了一种用于启用软件应用的容器文件中的加密的软件模块的方法。所述方法在模块提供器中被执行并且包括以下步骤:获取软件模块;基于软件模块的标识符和主密钥来获取模块密钥,所述主密钥被用来与软件模块的相应标识符相结合而生成多个模块密钥;使用模块密钥对软件模块进行加密,从而产生加密的软件模块;以及将加密的软件模块包括在容器文件中,同时从容器文件中删除模块密钥,并且从容器文件中删除可以用来生成模块密钥的信息。
软件模块可以包括java.class文件。
软件模块的标识符可以基于软件应用的标识符和软件应用的版本指示符。
获取模块密钥的步骤可以包括:基于软件模块的标识符和主密钥来生成模块密钥。
根据第二方面,提供了一种用于启用软件应用的容器文件中的加密的软件模块的模块提供器。所述模块提供器包括:处理器;以及存储器,所述存储器存储当由处理器执行时使模块提供器进行以下操作的指令:获取软件模块;基于软件模块的标识符和主密钥来获取模块密钥,所述主密钥被用来与软件模块的相应标识符相结合而生成多个模块密钥;使用模块密钥对软件模块进行加密,从而产生加密的软件模块;并且将加密的软件模块包括在容器文件中,同时从容器文件中删除模块密钥,并且从容器文件中删除可以用来生成模块密钥的信息。
软件模块可以包括java.class文件。
软件模块的标识符可以基于软件应用的标识符和软件应用的版本指示符。
获取模块密钥的指令可以包括当由处理器执行时使模块提供器进行以下操作的指令:基于软件模块的标识符和主密钥来生成模块密钥。
根据第三方面,提供了一种用于启用软件应用的容器文件中的加密的软件模块的计算机程序。所述计算机程序包括当在模块提供器上运行时使模块提供器进行以下操作的计算机程序代码:获取软件模块;基于软件模块的标识符和主密钥来获取模块密钥,所述主密钥被用来与软件模块的相应标识符相结合而生成多个模块密钥;使用模块密钥对软件模块进行加密,从而产生加密的软件模块;以及将加密的软件模块包括在容器文件中,同时从容器文件中删除模块密钥并且从容器文件中删除可以用来生成模块密钥的信息。
根据第四方面,提供了一种计算机程序产品,所述计算机程序产品包括根据第三方面所述的计算机程序和其上存储有所述计算机程序的计算机可读装置。
根据第五方面,提供了一种用于启用软件应用的容器文件中的加密的软件模块的方法。所述方法在计算机装置中被执行并且包括以下步骤:从容器文件获取加密的软件模块;向密钥提供器发送密钥请求,所述密钥请求包括加密的软件模块的标识符;从密钥提供器接收模块密钥;对加密的软件模块进行解密,从而产生解密的软件模块;以及从计算机装置的受限访问存储器加载解密的软件模块,以使得所述解密的软件模块能够被执行。
所述方法还可以包括以下步骤:使用启动序列对模块密钥进行加密,从而产生加密的模块密钥;以及存储加密的模块密钥和启动序列。在这样的情况下,对加密的软件模块进行解密的步骤包括:对加密的模块密钥进行解密。
根据第六方面,提供了一种用于启用软件应用的容器文件中的加密的软件模块的计算机装置。所述计算机装置包括:处理器;以及存储器,所述存储器存储当由处理器执行时使计算机装置进行以下操作的指令:从容器文件获取加密的软件模块;向密钥提供器发送密钥请求,所述密钥请求包括加密的软件模块的标识符;从密钥提供器接收模块密钥;对加密的软件模块进行解密,从而产生解密的软件模块;以及从计算机装置的受限访问存储器中加载解密的软件模块,以使得所述解密的软件模块能够被执行。
计算机装置还可以包括当由处理器执行时使计算机装置进行以下操作的指令:使用启动序列对模块密钥进行加密,从而产生加密的模块密钥;以及存储加密的模块密钥和启动序列。在这样的情况下,要解密的指令包括当由处理器执行时使计算机装置进行以下操作的指令:对加密的模块密钥进行解密。
根据第七方面,提供了一种用于启用软件应用的容器文件中的加密的软件模块的计算机程序。所述计算机程序包括当在计算机装置上运行时使计算机装置进行以下操作的计算机程序代码:从容器文件获取加密的软件模块;向密钥提供器发送密钥请求,所述密钥请求包括加密的软件模块的标识符;从密钥提供器接收模块密钥;对加密的软件模块进行解密,从而产生解密的软件模块;以及从计算机装置的受限访问存储器中加载解密的软件模块,以使得所述解密的软件模块能够被执行。
根据第八方面,提供了一种计算机程序产品,所述计算机程序产品包括根据第七方面所述的计算机程序和其上存储有所述计算机程序的计算机可读装置。
通常,除非本文中另外明确地定义,否则权利要求中使用的所有术语将根据其在技术领域中的普通含义来解释。除非另有明确地说明,否则对“一/一个/该元件、设备、部件、装置、步骤等”的所有提及应该被开放式地解释成指代元件、设备、部件、装置、步骤等的至少一个示例。除非明确地说明,否则本文中公开的任何方法的步骤不必以所公开的确切顺序来执行。
附图说明
现在参照附图通过示例的方式来描述本发明,在附图中:
图1是示出如何使用加密的软件模块来填充软件应用的容器文件的示意图;
图2是示出如何使用应用的容器文件以及如何对容器文件的加密的软件模块进行解密的示意图;
图3是示出用于将加密的模块包括在软件应用的容器文件中的方法的流程图;
图4是示出用于启用软件应用的容器文件的软件模块的执行的方法的流程图;
图5是示出形成图1至图2的计算机装置和模块提供器二者的一部分的部件的示意图;以及
图6示出了包括计算机可读装置的计算机程序产品90的一个示例。
具体实施方式
现在将在下文中参照附图更全面地描述本发明,在附图中示出了本发明的特定实施方式。然而,本发明可以以许多不同的形式来体现,并且不应该被解释为限于本文中阐述的实施方式;相反,这些实施方式通过示例的方式被提供,使得本公开内容将是全面且完整的,并且将向本领域技术人员充分地传达本发明的范围。在整个描述中,相同的附图标记指代相同的要素。
本文中提出的实施方式基于利用单独密钥分发的加密。软件模块在构建时被加密,并且加密的软件模块被包括在容器文件中。在运行时,由执行计算机装置获取密钥,以从而对软件模块进行解密。解密的软件模块然后可以被加载以用于执行。以这种方式,容器文件是安全的,该容器文件只包含以加密形式的软件模块而没有密钥。此外,可以防止解密的软件模块被存储在计算机装置的受限访问存储器之外,以使攻击者对软件模块进行反编译更加复杂。换言之,本文中呈现的实施方式基于加密的软件模块的密码术和运行时解密。
要注意的是,尽管本文中提出的实施方式被示出为用于谷歌安卓的java架构的一部分,但是所述实施方式同样可以很好地应用于其他软件架构。
图1是示出如何使用加密的软件模块5b来填充软件应用(也被称为应用)的容器文件10的示意图。图1示出了在容器文件10的分发之前在构建时即当容器文件被生成时的动作。软件模块5a包含期望被保密的代码。例如,软件模块5a可能包含形成商业秘密的一部分的逻辑。软件模块5a包含编译的计算机可执行代码,所述计算机可执行代码可以是诸如一个或更多个java.class文件的机器代码或字节码。
密钥生成器1生成要被用于对软件模块5a进行加密的模块密钥4。模块密钥4是基于主密钥2和标识符3生成的。标识符3与软件模块5a相关联,由此模块密钥4也与软件模块5a相关联。例如,标识符可以基于应用的名称及其版本指示符。可替选地,标识符可以基于软件模块5a的名称及其版本指示符。主密钥用于结合软件模块的相应标识符来生成多个模块密钥。使用密钥生成器1来生成模块密钥4避免了必须将主密钥2分发给模块提供器20或执行容器文件10的后续计算机装置。这提高了主密钥2的安全性。
模块提供器20将软件模块5a和模块密钥4作为输入,并且在加密器6中对软件模块5a进行加密,以产生加密的软件模块5b。加密器是模块提供器20内的软件模块和/或硬件模块。模块提供器20将其他容器文件7作为输入,并且生成包括加密的软件模块5b和其他容器文件7二者的容器文件10。显著地,容器文件10不包含模块密钥4。
其他容器文件7是本领域本身已知以形成容器文件10的一部分的文件。例如,其他容器文件7可以包含非加密的软件模块、清单文件、媒体文件(图像、声音等)。在这个示例中,容器文件10是APK(安卓程序软件包)。
容器文件10现在仅包含作为加密的软件模块5b的软件模块(该软件模块被期望保密),因此容器文件10安全地被分发。如果攻击者获取容器文件10并尝试对加密的软件模块5b进行解密,则这将是极其困难的。
要注意的是,模块提供器20可以形成诸如部署服务器或构建服务器的较大装置的一部分,该较大装置可选地还包括密钥生成器1以及生成其他容器文件7的能力。
图2是示出如何使用应用的容器文件以及如何对容器文件的加密的软件模块5b进行解密的示意图。图2示出了在运行时即当容器文件10被用于执行应用时的动作。
计算机装置12能够执行应用。计算机装置12例如可以是运行谷歌安卓操作系统的智能电话、平板计算机、智能手表等的形式。计算机装置12例如通过用户在计算机装置12上安装容器文件10来访问容器文件10。
当容器文件10被执行时,其他容器文件7包含如下(没有加密的)软件,所述软件使得计算机装置12向服务器15发送对模块密钥4的请求。该请求包括标识符3,该标识符3与用于在构建时生成模块密钥4的标识符相同,该模块密钥4用于对软件模块进行加密。
服务器15访问主密钥2,该主密钥2与密钥生成器1在构建时使用的主密钥2相同。服务器15以与密钥生成器1在构建时生成模块密钥4的方式相同的方式生成模块密钥4。因此,由服务器15生成的模块密钥4与构建时用于加密的模块密钥4相同。服务器15然后向请求模块密钥4的计算机装置12发送该模块密钥4。
一旦计算机装置12已经接收到模块密钥4,该模块密钥4就对加密的软件模块5b进行解密,以产生解密的软件模块5a。解密的软件模块5a仅被存储在受限访问存储器17中,以降低攻击者获得对解密的软件模块5a的访问的风险。一旦软件模块5b被解密,计算机装置12就可以动态地加载解密的软件模块5a(或者更具体地,解密的软件模块5a的类文件),以使得能够执行解密的软件模块5a。
图1和图2中的不同实体之间的通信可以例如通过无线连接或有线连接使用互联网协议(IP)——例如,IEEE 802.11x标准或以太网中的任何一种——发生。
图3是示出用于将加密的模块包括在软件应用即应用的容器文件中的方法的流程图。该方法在图1的模块提供器20中被执行,以从而在用于应用的容器文件中启用加密的软件模块。如以上所说明的,软件模块可以包括一个或更多个java.class文件。
在获取软件模块步骤40中,模块提供器获取如下软件模块,所述软件模块是要被加密的软件模块。软件模块包含经编译的可执行代码。
在获取模块密钥步骤42中,模块提供器基于软件模块的标识符和主密钥来获取模块密钥。主密钥用于与软件模块的相应标识符相结合来生成多个模块密钥。该步骤可以包括:基于软件模块的标识符和主密钥来生成模块密钥。软件模块的标识符可以例如基于应用的标识符和应用的版本指示符。可替选地,标识符可以基于软件模块5a的名称及其版本指示符。基于标识符和主密钥生成模块密钥。这种生成可以发生在模块提供器或外部密钥生成器中(参见例如图1和上面的相应描述)。
在加密软件模块步骤44中,模块提供器使用模块密钥对软件模块进行加密。该加密产生加密的软件模块。该加密可以基于对称密钥密码术。
在包括加密的软件模块步骤46中,模块提供器将加密的软件模块包括在容器文件中,同时从容器文件中删除模块密钥。此外,从容器文件中删除可以用来生成模块密钥的信息。换言之,加密的软件模块而不是模块密钥(也不是用于生成模块密钥的信息)被包括在容器文件中。容器文件可以包括本领域本身已知的其他没有加密的和/或加密的类文件以及其他文件(诸如清单文件和媒体文件)。
所得到的容器文件因此包含加密形式的软件模块,由此攻击者极难对软件模块进行解密。
图4是示出用于启用应用的容器文件的软件模块的执行的方法的流程图。该方法在图2的计算机装置中被执行,以从而启用应用的容器文件中的加密的软件模块。计算机装置可以基于谷歌安卓架构。下面的方法步骤可以由形成容器文件的一部分的没有加密的软件来执行。
在获取加密的软件模块步骤50中,计算机装置从容器文件中获取加密的软件模块。容器文件可以是安装在计算机装置上的APK。
在请求模块密钥步骤52中,计算机装置通过网络连接向远程密钥提供器例如图2的服务器15发送密钥请求。显著地,密钥请求不是对计算机装置本身的本地请求,但是这将要求解密数据被本地存储,这将是重大的安全风险。网络连接可以是基于无线的连接和/或基于有线的连接,例如WiFi(IEEE 802.11x)、蓝牙、蜂窝连接(2G、3G、4G、5G)、以太网、光纤连接等中的一种或更多种的任意组合,通过这些网络连接,可以在计算机装置和远程密钥提供器之间建立IP(互联网协议)连接。术语远程在此被解释为处于与计算机装置不同的位置,例如10米以上远。密钥请求包括加密的软件模块的标识符。该标识符与步骤42中使用的以及上面说明的标识符相同。可选地,在服务器自身已经认证之后,该请求仅被发送给密钥提供器,以防止未经授权方接收到或检测到密钥请求。
在接收模块密钥步骤54中,计算机装置从密钥提供器接收模块密钥。
在可选的加密模块密钥步骤55中,计算机装置使用启动序列对模块密钥进行加密,从而产生加密的模块密钥。该步骤可以例如使用安卓密钥库。
在可选的存储模块密钥步骤56中,计算机装置存储加密的模块密钥和启动序列。
在解密软件模块步骤57中,计算机装置对加密的软件模块进行解密,从而产生解密的软件模块。当模块密钥被加密时,该步骤包括:例如使用安卓密钥库首先对加密的模块密钥进行解密。对于解密,加密的模块密钥与启动序列一起被提供。一旦解密的软件模块被获取,该解密的软件模块就可以在受限访问存储器中被存储在文件上或者作为字节阵列被保存在RAM中。
在加载软件模块步骤58中,计算机装置从该计算机装置的受限访问存储器——例如从文件或从作为字节阵列的RAM——加载解密的软件模块,以使得解密的软件模块能够被执行。解密的软件模块仅被存储在受限访问存储器中。以这种方式,攻击者明显更难获得对解密的软件模块的访问。
所提供的解决方案允许包含加密的软件模块的容器文件的分发。软件模块仅在运行时才被解密,由此攻击者极难弄清软件模块的逻辑和功能。
图5是示出形成图1至图2的计算机装置12和模块提供器20二者的一部分的部件的示意图。使用能够执行存储在存储器64中的软件指令67的适当的中央处理单元(CPU)、多处理器、微控制器、数字信号处理器(DSP)等中的一种或更多种的任意组合来提供处理器60,因此存储器64可以是计算机程序产品。可替选地,可以使用专用集成电路(ASIC)、现场可编程门阵列(FPGA)等来实现处理器60。处理器60可以被配置成执行上面参照图3和图4描述的方法。
存储器64可以是随机存取存储器(RAM)和可选的只读存储器(ROM)的任意组合。存储器64还包括如下持久性存储装置,所述持久性存储装置例如可以是磁性存储器、光学存储器、固态存储器或甚至远程安装的存储器中的任何单独的一种或磁性存储器、光学存储器、固态存储器或甚至远程安装的存储器的组合。存储器中的一部分是受限访问存储器。例如,受限访问存储器可以是只对应用可用的沙箱(sandbox)。受限访问存储器用于存储解密的软件模块。受限存储器也可以形成RAM的一部分。
还设置了用于在处理器60中执行软件指令期间读取和/或存储数据的数据存储器66。数据存储器66可以例如使用RAM来实现。
计算机装置12和模块提供器20还包括用于与其他外部实体进行通信的I/O接口62。
删除了计算机装置12和模块提供器20的其他部件,以免混淆本文中提出的构思。
图6示出了包括计算机可读装置的计算机程序产品90的一个示例。在该计算机可读装置上,可以存储计算机程序91,该计算机程序可以使处理器执行根据本文中描述的实施方式的方法。在该示例中,计算机程序产品是光盘,例如CD(致密光盘)或DVD(数字多功能光盘)或蓝光光盘。如上面所说明的,计算机程序产品也可以以装置的存储器例如图5的计算机程序产品64来体现。虽然在此将计算机程序91示意性地示出为所描绘的光盘上的轨道,但是可以以适合于诸如可移除固态存储器的计算机程序产品例如通用串行总线(USB)驱动的任何方式来存储计算机程序。
现在在此以下是用罗马数字列举的从另一个角度的实施方式的列表。
i.一种用于启用软件应用的容器文件中的加密的软件模块的方法,所述方法在模块提供器中被执行并且包括以下步骤:
获取软件模块;
基于所述软件模块的标识符和主密钥来获取模块密钥;
使用所述模块密钥对所述软件模块进行加密,从而产生加密的软件模块;以及
将所述加密的软件模块包括在容器文件中,同时从所述容器文件中删除所述模块密钥。
ii.根据实施方式i所述的方法,其中,所述软件模块包括java.class文件。
iii.根据实施方式i或ii所述的方法,其中,所述软件模块的标识符基于所述软件应用的标识符和所述软件应用的版本指示符。
iv.一种用于启用软件应用的容器文件中的加密的软件模块的模块提供器,所述模块提供器包括:
处理器;以及
存储器,所述存储器存储当由所述处理器执行时使所述模块提供器进行以下操作的指令:
获取软件模块;
基于所述软件模块的标识符和主密钥来获取模块密钥;
使用所述模块密钥对所述软件模块进行加密,从而产生加密的软件模块;以及
将所述加密的软件模块包括在容器文件中,同时从所述容器文件中删除所述模块密钥。
v.根据实施方式iv所述的模块提供器,其中,所述软件模块包括java.class文件。
vi.根据实施方式iv或v所述的模块提供器,其中,所述软件模块的标识符基于所述软件应用的标识符和所述软件应用的版本指示符。
vii.一种用于启用软件应用的容器文件中的加密的软件模块的计算机程序,所述计算机程序包括当在模块提供器上运行时使所述模块提供器进行以下操作的计算机程序代码:
获取软件模块;
基于所述软件模块的标识符和主密钥来获取模块密钥;
使用所述模块密钥对所述软件模块进行加密,从而产生加密的软件模块;以及
将所述加密的软件模块包括在容器文件中,同时从所述容器文件中删除所述模块密钥。
viii.一种计算机程序产品,所述计算机程序产品包括根据实施方式vii所述的计算机程序和其上存储有所述计算机程序的计算机可读装置。
ix.一种用于启用软件应用的容器文件中的加密的软件模块的方法,所述方法在计算机装置中被执行并且包括以下步骤:
从容器文件中获取加密的软件模块;
向密钥提供器发送密钥请求,所述密钥请求包括所述加密的软件模块的标识符;
从所述密钥提供器接收模块密钥;
对所述加密的软件模块进行解密,从而产生解密的软件模块;以及
从所述计算机装置的受限访问存储器中加载所述解密的软件模块,以使得所述解密的软件模块能够被执行。
x.根据实施方式ix所述的方法,还包括以下步骤:
使用启动序列对所述模块密钥进行加密,从而产生加密的模块密钥;以及
存储所述加密的模块密钥和所述启动序列;
其中,对所述加密的软件模块进行解密的步骤包括:对所述加密的模块密钥进行解密。
xi.一种用于启用软件应用的容器文件中的加密的软件模块的计算机装置,所述计算机装置包括:
处理器;以及
存储器,所述存储器存储当由所述处理器执行时使所述计算机装置进行以下操作的指令:
从容器文件中获取加密的软件模块;
向密钥提供器发送密钥请求,所述密钥请求包括所述加密的软件模块的标识符;
从所述密钥提供器接收模块密钥;
对所述加密的软件模块进行解密,从而产生解密的软件模块;以及
从所述计算机装置的受限访问存储器中加载所述解密的软件模块,以使得所述解密的软件模块能够被执行。
xii.根据实施方式xi所述的计算机装置,还包括当由所述处理器执行时使所述计算机装置进行以下操作的指令:
使用启动序列对所述模块密钥进行加密,从而产生加密的模块密钥;以及
存储所述加密的模块密钥和所述启动序列;
其中,要解密的指令包括当由所述处理器执行时使所述计算机装置进行以下操作的指令:对所述加密的模块密钥进行解密。
xiii.一种用于启用软件应用的容器文件中的加密的软件模块的计算机程序,所述计算机程序包括当在计算机装置上运行时使所述计算机装置进行以下操作的计算机程序代码:
从容器文件中获取加密的软件模块;
向密钥提供器发送密钥请求,所述密钥请求包括所述加密的软件模块的标识符;
从所述密钥提供器接收模块密钥;
对所述加密的软件模块进行解密,从而产生解密的软件模块;以及
从所述计算机装置的受限访问存储器中加载所述解密的软件模块,以使得所述解密的软件模块能够被执行。
xiv.一种计算机程序产品,所述计算机程序产品包括根据实施方式xiii所述的计算机程序和其上存储有所述计算机程序的计算机可读装置。
上面主要参照几个实施方式描述了本发明。然而,如本领域技术人员容易理解的,如在由所附专利权利要求限定的本发明的范围内,除了以上公开的实施方式之外的其他实施方式同样是可能的。

Claims (3)

1.一种用于启用软件应用的容器文件中的加密的软件模块的方法,所述方法在计算机装置(12)中被执行并且包括以下步骤:
从容器文件(10)获取(50)加密的软件模块(5b);
通过网络连接向远程密钥提供器(15)发送(52)密钥请求,所述密钥请求包括所述加密的软件模块(5b)的标识符(3);
从所述远程密钥提供器(15)接收(54)模块密钥(4);
对所述加密的软件模块(5b)进行解密(57),从而产生解密的软件模块(5a);
从所述计算机装置(12)的受限访问存储器加载(58)所述解密的软件模块(5a),以使得所述解密的软件模块(5a)能够被执行,
使用启动序列对所述模块密钥进行加密(55),从而产生加密的模块密钥;以及
存储(56)所述加密的模块密钥和所述启动序列;
其中,对所述加密的软件模块进行解密(57)的步骤包括:对所述加密的模块密钥进行解密。
2.一种用于启用软件应用的容器文件中的加密的软件模块的计算机装置(12),所述计算机装置(12)包括:
处理器(60);以及
存储器(64),所述存储器(64)存储在由所述处理器执行时使所述计算机装置(12)进行以下操作的指令(67):
从容器文件(10)获取加密的软件模块(5b);
通过网络连接向远程密钥提供器(15)发送密钥请求,所述密钥请求包括所述加密的软件模块(5b)的标识符(3);
从所述远程密钥提供器(15)接收模块密钥(4);
对所述加密的软件模块(5b)进行解密,从而产生解密的软件模块(5a);
从所述计算机装置(12)的受限访问存储器加载所述解密的软件模块(5a),以使得所述解密的软件模块(5a)能够被执行,
使用启动序列对所述模块密钥进行加密,从而产生加密的模块密钥;以及
存储所述加密的模块密钥和所述启动序列;
其中,要解密的指令包括在由所述处理器执行时使所述计算机装置(12)进行以下操作的指令(67):对所述加密的模块密钥进行解密。
3.一种计算机可读介质,其上存储有用于启用软件应用的容器文件中的加密的软件模块的计算机程序(91),所述计算机程序包括当在计算机装置(12)上运行时使所述计算机装置(12)进行以下操作的计算机程序代码:
从容器文件(10)获取加密的软件模块(5b);
通过网络连接向远程密钥提供器(15)发送密钥请求,所述密钥请求包括所述加密的软件模块(5b)的标识符(3);
从所述远程密钥提供器(15)接收模块密钥(4);
对所述加密的软件模块(5b)进行解密,从而产生解密的软件模块(5a);
从所述计算机装置(12)的受限访问存储器加载所述解密的软件模块(5a),以使得所述解密的软件模块(5a)能够被执行,
使用启动序列对所述模块密钥进行加密,从而产生加密的模块密钥;以及
存储所述加密的模块密钥和所述启动序列;
其中,要解密的指令包括在由处理器执行时使所述计算机装置(12)进行以下操作的指令(67):对所述加密的模块密钥进行解密。
CN201980010571.4A 2018-01-31 2019-01-31 启用容器文件中加密的软件模块 Active CN111656345B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP18154425.5 2018-01-31
EP18154425 2018-01-31
PCT/EP2019/052323 WO2019149797A1 (en) 2018-01-31 2019-01-31 Enabling an encrypted software module in a container file

Publications (2)

Publication Number Publication Date
CN111656345A CN111656345A (zh) 2020-09-11
CN111656345B true CN111656345B (zh) 2024-01-02

Family

ID=61157012

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980010571.4A Active CN111656345B (zh) 2018-01-31 2019-01-31 启用容器文件中加密的软件模块

Country Status (4)

Country Link
US (1) US20200356642A1 (zh)
EP (1) EP3746920A1 (zh)
CN (1) CN111656345B (zh)
WO (1) WO2019149797A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11595201B2 (en) * 2020-02-21 2023-02-28 Cyber Armor Ltd. System and method for generation of a disposable software module for cryptographic material protection
US11455405B2 (en) 2020-08-07 2022-09-27 EMC IP Holding Company LLC Optimizing docker image encryption—tradeoff between performance and protection level
US11675913B2 (en) 2020-09-18 2023-06-13 EMC IP Holding Company LLC Optimizing container image encryption
CN112732403B (zh) * 2021-01-04 2022-09-30 烽火通信科技股份有限公司 一种基于容器的文件管理方法和电子设备
CN113221077B (zh) * 2021-05-31 2023-11-14 平安科技(深圳)有限公司 基于spring容器的class文件加密方法及设备
JP2023108954A (ja) * 2022-01-26 2023-08-07 東芝テック株式会社 監視装置及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101086705A (zh) * 2006-06-09 2007-12-12 国际商业机器公司 用于对硬件启动序列进行掩码的系统和方法
CN101971186A (zh) * 2008-04-10 2011-02-09 日本电气株式会社 信息泄露防止装置和方法及其程序
EP3057019A1 (en) * 2015-02-13 2016-08-17 Thomson Licensing Method and device for protecting an application and method and device for executing a protected application thus protected
CN105993018A (zh) * 2014-02-09 2016-10-05 微软技术许可有限责任公司 移动设备上的内容项加密

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060178997A1 (en) * 1996-01-11 2006-08-10 General Dynamics Advanced Information Systems, Inc. Systems and methods for authoring and protecting digital property
US7136838B1 (en) * 1999-03-27 2006-11-14 Microsoft Corporation Digital license and method for obtaining/providing a digital license
US20060211490A1 (en) * 2005-03-17 2006-09-21 Falvey Grahame M Security for gaming devices
US8539543B2 (en) * 2007-04-12 2013-09-17 Microsoft Corporation Managing digital rights for multiple assets in an envelope
KR101478337B1 (ko) * 2007-11-08 2015-01-02 삼성전자 주식회사 호스트 장치의 drm 유형을 기초로한 암호화 키를제공하는 방법 및 장치
US8726010B2 (en) * 2010-10-21 2014-05-13 Qumu Corporation Secure content distribution
US20160063223A1 (en) * 2014-08-27 2016-03-03 Contentguard Holdings, Inc. Distributing protected content
US11234105B2 (en) * 2014-09-29 2022-01-25 Visa International Service Association Methods and systems for asset obfuscation
WO2016139078A1 (en) * 2015-03-02 2016-09-09 Inventio Ag Protecting a computer program against reverse engineering
US10339323B2 (en) * 2015-09-15 2019-07-02 Google Llc Group license encryption and decryption

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101086705A (zh) * 2006-06-09 2007-12-12 国际商业机器公司 用于对硬件启动序列进行掩码的系统和方法
CN101971186A (zh) * 2008-04-10 2011-02-09 日本电气株式会社 信息泄露防止装置和方法及其程序
CN105993018A (zh) * 2014-02-09 2016-10-05 微软技术许可有限责任公司 移动设备上的内容项加密
EP3057019A1 (en) * 2015-02-13 2016-08-17 Thomson Licensing Method and device for protecting an application and method and device for executing a protected application thus protected

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
sear drimer.Authentication of FPGA bitstreams why and now.ARC 2007 LNCS 4419.2007,第73-84页. *
巫红丁群周平.Logistic混沌序列设计及其在数据加密中的应用.2009中国仪器仪表与测控技术大会论文集.2009,(第undefined期),第1-4页. *

Also Published As

Publication number Publication date
EP3746920A1 (en) 2020-12-09
CN111656345A (zh) 2020-09-11
WO2019149797A1 (en) 2019-08-08
US20200356642A1 (en) 2020-11-12

Similar Documents

Publication Publication Date Title
CN111656345B (zh) 启用容器文件中加密的软件模块
JP6949972B2 (ja) ブロックチェーンに基づくデジタル権利管理
US10395012B2 (en) Media client device authentication using hardware root of trust
US9767317B1 (en) System to provide cryptographic functions to a markup language application
TWI420339B (zh) 軟體授權系統及方法
CN101957903A (zh) 一种保护类文件的方法和装置
JP6146476B2 (ja) 情報処理装置及び情報処理方法
JP2009075720A (ja) 情報処理装置及び情報処理プログラム
US8774407B2 (en) System and method for executing encrypted binaries in a cryptographic processor
JP2013175179A (ja) 少なくとも1つの暗号化された命令を備えるソフトウェアアプリケーションの協調実行のためのシステム、デバイスおよび方法
CN103971034A (zh) 一种保护Java软件的方法及装置
US9292708B2 (en) Protection of interpreted source code in virtual appliances
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
JP2000347566A (ja) コンテンツ管理装置、コンテンツ利用者端末及びプログラムを記録したコンピュータ読み取り可能な記録媒体
CN114788221A (zh) 带访问控制谓词的包装密钥
CN117313046A (zh) 一种代码加固方法、代码加载方法、设备及介质
US9166783B2 (en) Protection method, decryption method, player, storage medium, and encryption apparatus of digital content
CN103605927A (zh) 一种基于嵌入式Linux系统实现加密和解密方法
JP2013045277A (ja) プログラム難読化方法およびリモートデバッグシステム
CN114297589A (zh) 应用程序的资源保护方法、资源读取方法及装置
CN114629633A (zh) 密钥块增强封装
CN107682147B (zh) 用于智能卡芯片操作系统文件的安全管理方法及系统
KR102326100B1 (ko) 안전한 안드로이드 앱 생성 및 안드로이드 플랫폼에서의 앱 설치/실행을 위한 시스템 및 방법
CN111291389B (zh) 一种计算机核心程序全生命周期的保护方法及系统
CN116248279B (zh) 一种基于区块链的数据计算容器化可信执行方法

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
GR01 Patent grant
GR01 Patent grant