Preventing unauthorized calls to a protected function

    公开(公告)号:US09721120B2

    公开(公告)日:2017-08-01

    申请号:US13893463

    申请日:2013-05-14

    Applicant: Apple Inc.

    CPC classification number: G06F21/629 G06F21/125

    Abstract: An obfuscated program can be configured to resist attacks in which an attacker directly calls a non-entry function by verifying that an execution path to the function is an authorized execution path. To detect an unauthorized execution order, a secret value is embedded in each function along an authorized execution path. At runtime, the secrets are combined to generate a runtime representation of the execution path, and the runtime representation is verified against an expected value. To perform the verification, a verification polynomial is evaluated using the runtime representation as input. A verification value result of zero means the execution path is an authorized execution path.

    Obfuscating function resources while reducing stack consumption
    14.
    发明授权
    Obfuscating function resources while reducing stack consumption 有权
    模糊功能资源,同时减少堆栈消耗

    公开(公告)号:US09069656B2

    公开(公告)日:2015-06-30

    申请号:US13631851

    申请日:2012-09-28

    Applicant: Apple Inc.

    Abstract: In one embodiment, a system wide static global stack pool in a contiguous range of random access memory is generated, a block of memory in the system global pool is assigned to a thread of a running process, and the thread stores local variable information in static global stack pool, such that the local variable is hidden from a stack frame back-trace. In one embodiment, a dynamically allocated data structure in system heap memory is generated, the data structure is locked to ensure atomic access, a block of memory in the data structure is assigned to a thread of a process, the data structure is unlocked, and the thread stores local variable information in static global stack pool, such that the local variable is hidden from a stack frame back-trace.

    Abstract translation: 在一个实施例中,生成在随机访问存储器的连续范围内的系统范围的静态全局堆栈池,系统全局池中的存储器块被分配给运行进程的线程,并且线程将局部变量信息存储在静态 全局堆栈池,使局部变量从堆栈框架的后跟踪中隐藏。 在一个实施例中,生成系统堆存储器中的动态分配的数据结构,数据结构被锁定以确保原子访问,数据结构中的存储器块被分配给进程的线程,数据结构被解锁,以及 该线程将局部变量信息存储在静态全局堆栈池中,从而使局部变量从堆栈帧后跟中隐藏起来。

    BRANCH AUDITING IN A COMPUTER PROGRAM
    15.
    发明申请
    BRANCH AUDITING IN A COMPUTER PROGRAM 有权
    分行在计算机程序中进行审核

    公开(公告)号:US20140201720A1

    公开(公告)日:2014-07-17

    申请号:US13741227

    申请日:2013-01-14

    Applicant: APPLE, INC.

    Abstract: A branch auditing system can be automatically injected into a computer program, in one embodiment, in response to a programming call provided in source code by a programmer who has selected a particular branch, in a set of possible branches, for auditing. The branch auditing system can record, in an obfuscated data structure, a path taken at the particular branch and the parameters associated with the branch and later an auditor can determine whether the path taken was valid, and if the path taken was invalid, operations can be performed to protect the program, system and/or user.

    Abstract translation: 在一个实施例中,分支审计系统可以自动地注入到计算机程序中,以响应于在一组可能的分支中选择了特定分支以用于审计的程序员在源代码中提供的编程调用。 分支审计系统可以在模糊数据结构中记录在特定分支处采取的路径和与分支相关联的参数,随后审核员可以确定所采用的路径是否有效,并且如果所采用的路径无效,则操作可以 执行以保护程序,系统和/或用户。

    OBFUSCATING FUNCTION RESOURCES WHILE REDUCING STACK CONSUMPTION
    16.
    发明申请
    OBFUSCATING FUNCTION RESOURCES WHILE REDUCING STACK CONSUMPTION 有权
    减少堆叠消耗时的功能资源

    公开(公告)号:US20140095812A1

    公开(公告)日:2014-04-03

    申请号:US13631851

    申请日:2012-09-28

    Applicant: APPLE INC.

    Abstract: In one embodiment, a system wide static global stack pool in a contiguous range of random access memory is generated, a block of memory in the system global pool is assigned to a thread of a running process, and the thread stores local variable information in static global stack pool, such that the local variable is hidden from a stack frame back-trace. In one embodiment, a dynamically allocated data structure in system heap memory is generated, the data structure is locked to ensure atomic access, a block of memory in the data structure is assigned to a thread of a process, the data structure is unlocked, and the thread stores local variable information in static global stack pool, such that the local variable is hidden from a stack frame back-trace.

    Abstract translation: 在一个实施例中,生成在随机访问存储器的连续范围内的系统范围的静态全局堆栈池,系统全局池中的存储器块被分配给运行进程的线程,并且线程将局部变量信息存储在静态 全局堆栈池,使局部变量从堆栈框架的后跟踪中隐藏。 在一个实施例中,生成系统堆存储器中的动态分配的数据结构,数据结构被锁定以确保原子访问,数据结构中的存储器块被分配给进程的线程,数据结构被解锁,以及 该线程将局部变量信息存储在静态全局堆栈池中,从而使局部变量从堆栈帧后跟中隐藏起来。

    Obfuscation of control flow of software
    19.
    发明授权
    Obfuscation of control flow of software 有权
    软件控制流的混淆

    公开(公告)号:US08756435B2

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

    申请号:US13656379

    申请日:2012-10-19

    Applicant: Apple Inc

    CPC classification number: G06F21/14 G06F21/54

    Abstract: Methods, media and systems that obfuscate control flow in software programs. The obfuscation can impede or prevent static flow analysis of a software program's control flow. In one embodiment, a method, performed by a data processing system, identifies each branch point in a set of branch points in a first version of software and replaces, in each branch point in the set, a representation of a target of the branch point with a computed value that depends upon at least one prior computed value in a stream of instructions in the first version of software. Other embodiments are also described.

    Abstract translation: 在软件程序中混淆控制流的方法,媒体和系统。 混淆可能阻碍或防止软件程序控制流的静态流分析。 在一个实施例中,由数据处理系统执行的方法识别软件的第一版本中的一组分支点中的每个分支点,并在组中的每个分支点中替换分支点的目标的表示 具有取决于软件的第一版本中的指令流中的至少一个先前计算值的计算值。 还描述了其它实施例。

    Authentication using a secure circuit

    公开(公告)号:US11593797B2

    公开(公告)日:2023-02-28

    申请号:US15275281

    申请日:2016-09-23

    Applicant: Apple Inc.

    Abstract: Techniques are disclosed relating to authentication using public key encryption. In one embodiment, a computing device includes a secure circuit, a processor, and memory. The secure circuit is configured to generate a public key pair usable to authenticate a user of the computing device. The memory has program instructions stored therein that are executable by the processor to cause the computing device to perform operations including authenticating the user with a server system by sending authentication information supplied by the user. The operations further include, in response to the server system verifying the authentication information, receiving a first token usable to register the public key pair with the server system and sending, to the server system, a request to register the public key pair for authenticating the user. In such an embodiment, the request includes the first token and identifies a public key of the public key pair.

Patent Agency Ranking