Application Archive Integrity Validation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software security measures are inadequate in protecting software applications from manipulation of resources other than machine code, such as auxiliary code, UI information, configuration files, and metadata, which can be modified to manipulate the software's execution.

Innovation Solution

The implementation of techniques for securely generating, distributing, executing, updating, and uninstalling software applications involves the use of application archive files that include a file system data structure and cryptographic information. This allows the operating system to validate the integrity of the application's files and data structures during execution, ensuring that only valid and unmodified resources are accessed.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If code signing techniques are implemented to verify machine code, then security against machine code manipulation is improved, but security against manipulation of other software resources (auxiliary code, UI information, configuration files, metadata) remains insufficient

Engineering Contradiction:
Improvesecurity against machine code manipulationVSAvoidmanipulation of non-machine-code resources
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent divides the software application into distinct resource types (machine code, auxiliary code, UI information, configuration files, metadata) and applies separate verification mechanisms to each segment. The file system data structure organizes these resources into separate entries, allowing individual verification of each resource type against its corresponding cryptographic hash value stored in the application archive file.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary verification of all software resources during application installation and before execution. The operating system reads the file system data structure and cryptographic information from the application archive file, computes hash values of all resources, and verifies them against stored expected values before allowing the application to run, preventing manipulation at the source rather than during execution.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If verification is performed only at installation and initialization, then verification speed is maintained, but the frequency of verification is insufficient to detect manipulations that occur during execution

Engineering Contradiction:
Improveverification speedVSAvoidfrequency of verification
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent implements continuous verification of software resources throughout the entire execution lifecycle of the application. The operating system maintains the file system data structure in memory and performs verification not only at installation and initialization but also during runtime when resources are accessed, ensuring uninterrupted security monitoring without significantly impacting performance.

Inventive Principle:
Principle #20Continuity of useful action

Solution Approach 2:

The patent implements periodic verification of software resources at multiple stages: during installation, at initialization, and at regular intervals during execution. This periodic approach ensures that manipulations are detected promptly while maintaining efficient system performance by not requiring constant verification of every resource access.

Inventive Principle:
Principle #19Periodic action

3Reliability

If all software resources are verified continuously, then security is improved, but system complexity and processing overhead increase

Engineering Contradiction:
Improvecomprehensive security coverageVSAvoidverification system complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent reduces complexity by segmenting resources into distinct types and verifying only relevant resources at each stage of execution. The file system data structure enables the operating system to identify and verify specific resource types based on their categories, avoiding unnecessary verification of all resources at all times, thus reducing processing overhead while maintaining comprehensive security.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies verification selectively rather than uniformly to all resources at all times. Critical resources such as machine code and configuration files are verified more frequently and rigorously, while less critical resources are verified at standard intervals. This partial verification approach maintains high security for essential components while reducing overall system complexity and processing overhead.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS12210612B2Techniques for managing software applications
Publication Date: 2025.01.28 APPLE INC
  • US12210612B2 patent drawing
  • US12210612B2 patent drawing
  • US12210612B2 patent drawing

AI summary

Enclosed herein are techniques for securely executing an application. A method can be implemented by an operating system of a computing device, where the computing device includes a file system volume that includes a first data structure, and the method includes the steps of (1) receiving a request to launch the application, where the request references an application archive file that includes a second data structure that: (i) defines an organization of a plurality of files associated with the application, and (ii) includes cryptographic information for verifying the plurality of files and the second data structure; (2) in response to receiving the request: determining whether the second data structure, the plurality of files, or both, are valid using the cryptographic information; and (3) in response to determining that the second data structure, the plurality of files, or both, are valid: associating the second data structure with the first data structure.