Protecting software through a fake cryptographic layer

    公开(公告)号:US09639673B2

    公开(公告)日:2017-05-02

    申请号:US14306713

    申请日:2014-06-17

    Applicant: Apple Inc.

    CPC classification number: G06F21/14 G06F2221/0748

    Abstract: The fake cryptographic layer obfuscation technique can be used to lure an attacker into expending reverse engineering efforts on sections of code the attacker would normally ignore. To do this the obfuscation technique can identify sections of code that are likely to be of lesser interest to the attacker and disguise them as higher value sections. This can be achieved by transforming a lower value section of code to include code patterns, constants, or other characteristics known to exist in sections of code of higher value, such as cryptographic routines. To transform a code section, the obfuscation technique can use one or more program modifications including control flow modifications, constant value adjustments to simulate well-known cryptographic scalars, buffer extensions, fake characteristic table insertion, debug-like information insertion, derivation function-code generation linking, and/or cryptographic algorithm specific instruction insertion.

    PRECOMPUTING INTERNAL AES STATES IN COUNTER MODE TO PROTECT KEYS USED IN AES COMPUTATIONS
    3.
    发明申请
    PRECOMPUTING INTERNAL AES STATES IN COUNTER MODE TO PROTECT KEYS USED IN AES COMPUTATIONS 审中-公开
    在计算机模式下预处理内部AES状态以保护AES计算中使用的密钥

    公开(公告)号:US20160211972A1

    公开(公告)日:2016-07-21

    申请号:US15000223

    申请日:2016-01-19

    Applicant: Apple Inc.

    CPC classification number: H04L9/0637 H04L9/0631 H04L9/30 H04L2209/24

    Abstract: Methods, media, and systems for, in one embodiment, protecting one or more keys in an encryption and/or decryption process can use precomputed values in the process such that at least a portion of the one or more keys is not used or exposed in the process. In one example of a method, internal states of an AES encryption process are saved for use in a counter mode stream cipher operation in which the key used in the AES encryption process is not exposed or used.

    Abstract translation: 在一个实施例中,在加密和/或解密过程中保护一个或多个密钥的方法,介质和系统可以使用该过程中的预计算值,使得一个或多个密钥的至少一部分不被使用或暴露在 的过程。 在一种方法的一个示例中,AES加密处理的内部状态被保存以用于其中AES加密处理中使用的密钥未被暴露或使用的计数器模式流密码操作。

    Precomputing internal AES states in counter mode to protect keys used in AES computations
    4.
    发明授权
    Precomputing internal AES states in counter mode to protect keys used in AES computations 有权
    在计数器模式下预先计算内部AES状态,以保护AES计算中使用的密钥

    公开(公告)号:US09264222B2

    公开(公告)日:2016-02-16

    申请号:US14015523

    申请日:2013-08-30

    Applicant: Apple Inc.

    CPC classification number: H04L9/0637 H04L9/0631 H04L9/30 H04L2209/24

    Abstract: Methods, media, and systems for, in one embodiment, protecting one or more keys in an encryption and/or decryption process can use precomputed values in the process such that at least a portion of the one or more keys is not used or exposed in the process. In one example of a method, internal states of an AES encryption process are saved for use in a counter mode stream cipher operation in which the key used in the AES encryption process is not exposed or used.

    Abstract translation: 在一个实施例中,在加密和/或解密过程中保护一个或多个密钥的方法,介质和系统可以使用该过程中的预计算值,使得一个或多个密钥的至少一部分不被使用或暴露在 的过程。 在一种方法的一个示例中,AES加密处理的内部状态被保存以用于其中AES加密处理中使用的密钥未被暴露或使用的计数器模式流密码操作。

    Systems, methods, and computer-readable media for fertilizing machine-executable code
    5.
    发明授权
    Systems, methods, and computer-readable media for fertilizing machine-executable code 有权
    用于施肥机器可执行代码的系统,方法和计算机可读介质

    公开(公告)号:US09128722B2

    公开(公告)日:2015-09-08

    申请号:US13851581

    申请日:2013-03-27

    Applicant: Apple Inc.

    CPC classification number: G06F8/33 G06F8/423 G06F21/14

    Abstract: Disclosed herein are systems, computer-implemented methods, and non-transitory computer-readable storage media for obfuscating code, such as instructions and data structures. Also disclosed are non-transitory computer-readable media containing obfuscated code. In one aspect, a preprocessing tool (i.e. before compilation) identifies in a source program code a routine for replacement. The tool can be a software program running on a computer or an embedded device. The tool then selects a function equivalent to the identified routine from a pool of functions to replace the identified routine. A compiler can then compile computer instructions based on the source program code utilizing the selected function in place of the identified routine. In another aspect, the tool replaces data structures with fertilized data structures. These approaches can be applied to various portions of source program code based on various factors. A software developer can flexibly configure how and where to fertilize the source code.

    Abstract translation: 这里公开的是系统,计算机实现的方法和用于模糊代码的非暂时计算机可读存储介质,诸如指令和数据结构。 还公开了包含混淆代码的非暂时性计算机可读介质。 在一个方面,预处理工具(即,在编译之前)在源程序代码中标识用于替换的例程。 该工具可以是在计算机或嵌入式设备上运行的软件程序。 然后,该工具从一个函数库中选择一个等同于识别的例程的功能来替换识别的例程。 然后,编译器可以使用所选择的功能代替所识别的例程来编译基于源程序代码的计算机指令。 另一方面,该工具用受精数据结构取代数据结构。 这些方法可以基于各种因素应用于源程序代码的各个部分。 软件开发人员可以灵活地配置如何以及在何处施肥源代码。

    METHOD AND APPARATUS FOR DYNAMIC OBFUSCATION OF STATIC DATA
    6.
    发明申请
    METHOD AND APPARATUS FOR DYNAMIC OBFUSCATION OF STATIC DATA 有权
    静态数据动态障碍的方法和装置

    公开(公告)号:US20140165208A1

    公开(公告)日:2014-06-12

    申请号:US13707444

    申请日:2012-12-06

    Applicant: APPLE INC.

    CPC classification number: G06F21/14 G06F8/30

    Abstract: A method and an apparatus that provide rewriting code to dynamically mask program data statically embedded in a first code are described. The program data can be used in multiple instructions in the first code. A code location (e.g. an optimal code location) in the first code can be determined for injecting the rewriting code. The code location may be included in two or more execution paths of first code. Each execution path can have at least one of the instructions using the program data. A second code may be generated based on the first code inserted with the rewriting code at the optimal code location. The second code can include instructions using the program data dynamically masked by the rewriting code. When executed by a processor, the first code and the second code can generate identical results.

    Abstract translation: 描述提供重写代码来动态地屏蔽静态嵌入在第一代码中的程序数据的方法和装置。 程序数据可以在第一个代码中的多个指令中使用。 可以确定第一代码中的代码位置(例如,最佳代码位置)用于注入重写代码。 代码位置可以被包括在第一代码的两个或多个执行路径中。 每个执行路径可以具有使用程序数据的指令中的至少一个。 可以基于在最佳代码位置插入重写代码的第一代码来生成第二代码。 第二代码可以包括使用由重写代码动态屏蔽的程序数据的指令。 当由处理器执行时,第一代码和第二代码可以产生相同的结果。

    Media storage structures for storing content, devices for using such structures, systems for distributing such structures

    公开(公告)号:US10574458B2

    公开(公告)日:2020-02-25

    申请号:US15074914

    申请日:2016-03-18

    Applicant: Apple Inc.

    Abstract: Some embodiments of the invention provide a content-distribution system for distributing content under a variety of different basis. For instance, in some embodiments, the content-distribution system distributes device-restricted content and device-unrestricted content. Device-restricted content is content that can only be played on devices that the system associates with the particular user. Device-unrestricted content is content that can be played on any device without any restrictions. However, for at least one operation or service other than playback, device-unrestricted content has to be authenticated before this operation or service can be performed on the content. In some embodiments, the system facilitates this authentication by specifying a verification parameter for a piece of device-unrestricted content. The content-distribution system of some embodiments has a set of servers that supply (1) media storage structures that store content, (2) cryptographic keys that are needed to decrypt device-restricted content, and (3) verification parameters that are needed to verify device-unrestricted content. In some embodiments, the device that receives the media storage structure inserts the received cryptographic key or verification parameter in the received media storage structure. In some embodiments, the set of servers also supply cryptographic content keys for the device-unrestricted content. These keys are used to decrypt the content upon arrival, upon first playback, or at some other time. However, some embodiments do not store these cryptographic keys in the media storage structures for the device-unrestricted content.

    Permutation composition based hash function

    公开(公告)号:US10164772B2

    公开(公告)日:2018-12-25

    申请号:US14291581

    申请日:2014-05-30

    Applicant: Apple Inc.

    Abstract: The disclosed hash and message padding functions are based on the permutation composition problem. To compute a hash of a message using permutation composition based hashing, the message is split into equal size blocks. For each block, a permutation composition value is computed. The block permutation composition values are then combined through composition to generate an overall permutation composition value. The hash of the message is then based on the overall permutation composition value. To pad a message using permutation composition based padding, the message is split into equal size blocks. For each block, a permutation composition value is computed and the permutation composition value is added to the block. The padded blocks are then recombined to generate the padded message.

Patent Agency Ranking