| Standard | FIPS 140-3 |
|---|---|
| Overall level | 2 |
| Module type | Hardware |
| Embodiment | Single Chip |
| Status | Active |
| Sunset date | 6/15/2030 |
| Caveat | When operated in approved mode |
| Vendor | Apple Inc. |
flowchart LR
%% Deterministic review-risk graph for Apple corecrypto Module v12.0 [Apple silicon, Secure Key Store, Hardware, SL2]
%% Review prompts and evidence gaps, NOT vulnerability findings.
subgraph CMVP["CMVP-disclosed clues"]
C2["[low] Firmware update / recovery<br/>/ rollback (referenced in<br/>text)<br/><i>Recovery</i>"]
C3["[low] Self-test / status surface<br/>(referenced in text)<br/><i>Self-Test<br/>Unauthenticated<br/>UnAuth</i>"]
C5["[low] Protocol / secure-channel<br/>references (may be KDF<br/>names, not a live channel)<br/><i>HTTPS<br/>no library/version identified</i>"]
C6["[low] Operating system / runtime<br/>referenced (boundary<br/>membership not asserted)<br/><i>operating system<br/>kernel<br/>application</i>"]
end
subgraph Inference["Derived inference"]
I2["Possible only, trusted<br/>code is reachable through<br/>update and recovery paths."]
I3["Possible only, some<br/>services may process input<br/>before, or without,<br/>operator authentication."]
I5["Possible only, a protocol<br/>is referenced, but whether<br/>it is a live channel or<br/>only a KDF/algorithm name<br/>is unconfirmed."]
I6["Possible only, a<br/>runtime/OS is referenced,<br/>but its membership in the<br/>cryptographic boundary is<br/>not established."]
end
subgraph Risk["Reviewer question"]
R2["Are update images<br/>authenticated before<br/>parsing, and are<br/>downgrade/rollback paths<br/>constrained?"]
R3["Can unauthenticated<br/>services leak state,<br/>consume resources, or<br/>transition security state?"]
R5["If a live TLS/SSH/IKE<br/>channel exists, could<br/>library CVEs apply, or is<br/>this only a<br/>KDF/documentation name?"]
R6["If the OS/runtime is<br/>in-boundary, could its<br/>CVEs be hidden by<br/>firmware-only versioning?"]
end
subgraph Evidence["Evidence needed to close"]
E2["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>update image format ·<br/>signature-before-parse<br/>proof · anti-rollback /<br/>downgrade policy"]
E3["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>pre-auth reachability<br/>matrix · rate limits and<br/>output redaction ·<br/>abuse-case tests"]
E5["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>library identity and<br/>version ·<br/>certificate-validation<br/>behaviour · protocol-CVE<br/>disposition"]
E6["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>runtime identity and<br/>config · kernel/runtime<br/>hardening profile ·<br/>patch/backport manifest"]
end
C2 --> I2 --> R2 --> E2
C3 --> I3 --> R3 --> E3
C5 --> I5 --> R5 --> E5
C6 --> I6 --> R6 --> E6
classDef clue fill:#eef3f9,stroke:#6f7f91,color:#1f3a5f;
classDef infer fill:#fff7e6,stroke:#b98500,color:#6b4e00;
classDef risk fill:#fbe9e9,stroke:#b02a2a,color:#7a1f1f;
classDef evidence fill:#e6f4ea,stroke:#1e7d34,color:#14532d;
class C2,C3,C5,C6 clue;
class I2,I3,I5,I6 infer;
class R2,R3,R5,R6 risk;
class E2,E3,E5,E6 evidence;flowchart LR
%% Deterministic clue tier for Apple corecrypto Module v12.0 [Apple silicon, Secure Key Store, Hardware, SL2]
%% confidence: high = structured record field; medium = structured but soft; low (dashed) = bare keyword hit, context unverified
subgraph CMVP["CMVP-disclosed clues (deterministic)"]
C2["[low] Firmware update / recovery / rollback (referenced in text)<br/><i>Recovery</i><br/>src: text:keyword"]
C3["[low] Self-test / status surface (referenced in text)<br/><i>Self-Test<br/>Unauthenticated<br/>UnAuth</i><br/>src: text:keyword"]
C5["[low] Protocol / secure-channel references (may be KDF names, not a live channel)<br/><i>HTTPS<br/>no library/version identified</i><br/>src: text:keyword"]
C6["[low] Operating system / runtime referenced (boundary membership not asserted)<br/><i>operating system<br/>kernel<br/>application</i><br/>src: text:keyword"]
end
classDef clueHigh fill:#eef3f9,stroke:#2f6fb0,stroke-width:2px,color:#1f3a5f;
classDef clueMedium fill:#eef3f9,stroke:#6f7f91,color:#1f3a5f;
classDef clueLow fill:#f7f7f7,stroke:#999,stroke-dasharray:4 4,color:#444;
class C2,C3,C5,C6 clueLow;Apple Inc. Apple corecrypto Module v12.0 [Apple silicon, Secure Key Store, Hardware, SL2] Prepared for: Apple Inc. One Apple Park Way Cupertino, CA 95014 Prepared by: atsec information security corporation
4516 Seton Center Parkway, Suite 250
Austin, TX 78759 www.atsec.com
This document may be reproduced and distributed only in its original entirely without revision.
| # | Section | Page |
|---|
This document may be reproduced and distributed only in its original entirely without revision.
List of Tables Table 3: Tested Module Identification – Software/Firmware/Hybrid (Executable Code Sets) .. Error! Bookmark not defined. defined. Bookmark not defined. defined. This document may be reproduced and distributed only in its original entirely without revision.
List of Figures This document may be reproduced and distributed only in its original entirely without revision.
Trademarks Apple’s trademarks applicable to this document are listed in https://www.apple.com/legal/intellectual-property/trademark/appletmlist.html. Other company, product, and service names may be trademarks or service marks of others. This document may be reproduced and distributed only in its original entirely without revision.
| Section | Title | Security Level |
|---|---|---|
| 1 | General | 2 |
| 2 | Cryptographic module specification | 2 |
| 3 | Cryptographic module interfaces | 2 |
| 4 | Roles, services, and authentication | 2 |
| 5 | Software/Firmware security | 2 |
| 6 | Operational environment | N/A |
| 7 | Physical security | 2 |
| 8 | Non-invasive security | N/A |
| 9 | Sensitive security parameter management | 2 |
| 10 | Self-tests | 2 |
| 11 | Life-cycle assurance | 2 |
| 12 | Mitigation of other attacks | N/A |
| Overall Level | 2 |
This document is the non-proprietary FIPS 140-3 Security Policy for Apple corecrypto Module v12.0 [Apple silicon, Secure Key Store, Hardware, SL2] cryptographic module. It contains the security rules under which the module must operate and describes how this module meets the requirements as specified in FIPS PUB 140-3 (Federal Information Processing Standards Publication 140-3) for an overall Security Level 2 module. This document provides all tables and diagrams (when applicable) required by NIST SP 800140Br1.
Table 1: Security Levels This document may be reproduced and distributed only in its original entirely without revision.
Purpose and Use: The Apple corecrypto Module v12.0 [Apple silicon, Secure Key Store, Hardware, SL2] cryptographic module (hereafter referred to as “the module”) consists of both firmware and hardware components. The Secure Key Store (SKS) application is the module’s firmware which operates within the sepOS execution environment which is separate from the Device OS’ (iPadOS 15, iOS 15, tvOS 15, watchOS 8) execution environment. The firmware interface is defined as the API offered by the module's mailbox interface to callers from the Device OS execution environment. SKS has an API layer that provides consistent interfaces to the supported services and therefore the supported cryptographic algorithms. In addition, the module provides Inter-Process Communication (IPC) interfaces to other applications executing within the sepOS execution environment. The sepOS execution environment is driven by its own CPU and operates from a dedicated region of the device’s memory. Both the Device’s and sepOS’ execution environments are physically separated on the SoC and thus execute independently of each other. Module Type: Hardware Module Embodiment: SingleChip Module Characteristics: SubChip Cryptographic Boundary: The module cryptographic boundary is delineated by the dotted blue rectangle in the Figure 1. The cryptographic module boundary includes the following hardware components:
| • | Hardware Random Number Generator composed of a SP800-90A Approved CTR_DRBG and a physical entropy source compliant to SP800-90B. |
| • | Hardware AES implementing AES-ECB and AES-CBC encryption and decryption. |
| • | Hardware Public Key Accelerator (PKA) used for generating asymmetric key pairs. |
| • | A volatile RAM for storing runtime SSPs. |
| • | A non-volatile Flash for storing an encrypted Class D key. |
The physical perimeter is represented by the most exterior black line in the block diagram Figure 1. This document may be reproduced and distributed only in its original entirely without revision.
Figure 1: Block Diagram Tested Operational Environment’s Physical Perimeter (TOEPP): A photograph of each hardware module is shown below: Figure 3: Apple Figure 4: Apple Figure 6: Apple Figure 2: Apple A9 Figure 5: Apple A9X A10 Fusion A11 Bionic A10X Fusion This document may be reproduced and distributed only in its original entirely without revision.
| Model and/or Part Number | Hardware Version | Firmware Version | Processors | Features |
|---|---|---|---|---|
| iPad (5th generation) running sepOS distributed with iPadOS 15 | 2.0 | 12.0 | Apple A Series A9 | N/A |
| iPad Pro 9.7-inch running sepOS distributed with iPadOS 15 | 2.0 | 12.0 | Apple A Series A9X | N/A |
| iPad (7th generation) running sepOS distributed with iPadOS 15 | 2.0 | 12.0 | Apple A Series A10 Fusion | N/A |
| iPad Pro 10.5 inch running sepOS distributed with iPadOS 15 | 2.0 | 12.0 | Apple A Series A10X Fusion | N/A |
| iPad mini (5th generation) running sepOS distributed with iPadOS 15 | 2.0 | 12.0 | Apple A Series A12 Bionic | N/A |
| iPad Pro 11-inch (1st generation) running sepOS distributed with iPadOS 15 | 2.0 | 12.0 | Apple A Series A12X Bionic | N/A |
| iPad Pro 11-inch (2nd generation) running sepOS distributed with iPadOS 15 | 2.0 | 12.0 | Apple A Series A12Z Bionic | N/A |
| iPhone 6S running sepOS distributed with iOS 15 | 2.0 | 12.0 | Apple A Series A9 | N/A |
Figure 12: Apple Figure 13: Apple Figure 14: Apple S5 S6 S7
Tested Module Identification – Hardware: This document may be reproduced and distributed only in its original entirely without revision.
| Model and/or Part Number | Hardware Version | Firmware Version | Processors | Features |
|---|---|---|---|---|
| iPhone 7 Plus running sepOS distributed with iOS 15 | 2.0 | 12.0 | Apple A Series A10 Fusion | N/A |
| iPhone X running sepOS distributed with iOS 15 | 2.0 | 12.0 | Apple A Series A11 Bionic | N/A |
| iPhone XS Max running sepOS distributed with iOS 15 | 2.0 | 12.0 | Apple A Series A12 Bionic | N/A |
| Apple Watch Series S3 running sepOS distributed with watchOS 8 | 2.0 | 12.0 | Apple S Series S3 | N/A |
| Apple Watch Series S4 running sepOS distributed with watchOS 8 | 2.0 | 12.0 | Apple S Series S4 | N/A |
| Apple Watch Series S5 running sepOS distributed with watchOS 8 | 2.0 | 12.0 | Apple S Series S5 | N/A |
| Apple Watch Series S6 running sepOS distributed with watchOS 8 | 2.0 | 12.0 | Apple S Series S6 | N/A |
| Apple Watch Series S7 running sepOS distributed with watchOS 8 | 2.0 | 12.0 | Apple S Series S7 | N/A |
| Apple TV 4K running sepOS distributed with tvOS 15 | 2.0 | 12.0 | Apple A Series A10X Fusion | N/A |
| Mode Name | Description | Type | Status Indicator | |
|---|---|---|---|---|
| Approved mode | Approved mode of operation is entered when the module utilizes the services that use the security functions listed in the Approved Algorithms Table and the Vendor Affirmed Algorithms Table. | Approved | return a '0' from fips_allowed_mode() for block cipher functions and fips_allowed() for all other services to indicate the executed cryptographic algorithm was approved |
None for this module Modes List and Description: This document may be reproduced and distributed only in its original entirely without revision.
| Mode Name | Description | Type | Status Indicator | |
|---|---|---|---|---|
| Non- Approved mode | Non-Approved mode of operation is entered when the module utilizes non- approved security functions in the Table Non-Approved Algorithms Not Allowed in the Approved Mode of Operation. | Non- Approved | return a non-zero value from fips_allowed_mode() for block cipher functions and fips_allowed() for all other services to indicate the executed cryptographic algorithm was non- approved |
| Algorithm | CAVP Cert | Properties | Reference |
|---|---|---|---|
| AES-CBC | A2842 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38A |
| AES-CBC | A2843 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38A |
| AES-CBC | A2844 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38A |
| AES-CBC | A2845 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38A |
| AES-CBC | A510 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38A |
| AES-CBC | C314 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-CBC | C315 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-CBC | C317 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-CBC | C318 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-CBC | C319 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
This document may be reproduced and distributed only in its original entirely without revision.
| Algorithm | CAVP Cert | Properties | Reference |
|---|---|---|---|
| AES-CBC | C320 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-CBC | C322 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-CBC | C326 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-CBC | C358 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| Algorithm | CAVP Cert | Properties | Reference |
|---|---|---|---|
| AES-ECB | A2842 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38A |
| AES-ECB | A2843 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38A |
| AES-ECB | A2845 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38A |
| AES-ECB | A2847 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38A |
| AES-ECB | A501 | Direction - Encrypt Key Length - 256 | SP 800-38A |
| AES-ECB | A510 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38A |
| AES-ECB | AES 5261 | Direction - Encrypt Key Length - 256 | SP 800-38A |
| AES-ECB | AES 5272 | Direction - Encrypt Key Length - 256 | SP 800-38A |
| AES-ECB | AES 5273 | Direction - Encrypt Key Length - 256 | SP 800-38A |
| AES-ECB | AES 5274 | Direction - Encrypt Key Length - 256 | SP 800-38A |
| AES-ECB | AES 5275 | Direction - Encrypt Key Length - 256 | SP 800-38A |
| AES-ECB | AES 5278 | Direction - Encrypt Key Length - 256 | SP 800-38A |
Table 4: Approved Algorithms - AES-CBC This document may be reproduced and distributed only in its original entirely without revision.
| Algorithm | CAVP Cert | Properties | Reference |
|---|---|---|---|
| AES-ECB | C314 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-ECB | C315 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-ECB | C317 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-ECB | C318 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-ECB | C319 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-ECB | C320 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-ECB | C322 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-ECB | C323 | Direction - Encrypt Key Length - 256 | SP 800-38A |
| AES-ECB | C324 | Direction - Encrypt Key Length - 256 | SP 800-38A |
| AES-ECB | C326 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| AES-ECB | C331 | Direction - Encrypt Key Length - 256 | SP 800-38A |
| AES-ECB | C358 | Direction - Decrypt, Encrypt Key Length - 128, 256 | SP 800-38A |
| Algorithm | CAVP Cert | Properties | Reference |
|---|---|---|---|
| AES-KW | A2843 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38F |
| AES-KW | A2845 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38F |
| AES-KW | A2846 | Direction - Decrypt, Encrypt Key Length - 128, 192, 256 | SP 800-38F |
Table 5: Approved Algorithms - AES-ECB Table 6: Approved Algorithms - AES-KW This document may be reproduced and distributed only in its original entirely without revision.
| Algorithm | CAVP Cert | Properties | Reference |
|---|---|---|---|
| Counter DRBG | A501 | Prediction Resistance - Yes Mode - AES-256 Derivation Function Enabled - No | SP 800-90A Rev. 1 |
| Counter DRBG | C323 | Prediction Resistance - Yes Mode - AES-256 Derivation Function Enabled - No | SP 800-90A Rev. 1 |
| Counter DRBG | C324 | Prediction Resistance - Yes Mode - AES-256 Derivation Function Enabled - No | SP 800-90A Rev. 1 |
| Counter DRBG | C331 | Prediction Resistance - Yes Mode - AES-256 Derivation Function Enabled - No | SP 800-90A Rev. 1 |
| Counter DRBG | DRBG 2014 | Prediction Resistance - Yes Mode - AES-256 Derivation Function Enabled - No | SP 800-90A Rev. 1 |
| Counter DRBG | DRBG 2022 | Prediction Resistance - Yes Mode - AES-256 Derivation Function Enabled - No | SP 800-90A Rev. 1 |
| Counter DRBG | DRBG 2023 | Prediction Resistance - Yes Mode - AES-256 Derivation Function Enabled - No | SP 800-90A Rev. 1 |
| Counter DRBG | DRBG 2024 | Prediction Resistance - Yes Mode - AES-256 Derivation Function Enabled - No | SP 800-90A Rev. 1 |
| Counter DRBG | DRBG 2025 | Prediction Resistance - Yes Mode - AES-256 Derivation Function Enabled - No | SP 800-90A Rev. 1 |
| Counter DRBG | DRBG 2028 | Prediction Resistance - Yes Mode - AES-256 Derivation Function Enabled - No | SP 800-90A Rev. 1 |
| Algorithm | CAVP Cert | Properties | Reference | ||||
|---|---|---|---|---|---|---|---|
| HMAC-SHA-1 | A2845 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
CTR_DRBG Table 7: Approved Algorithms - CTR_DRBG This document may be reproduced and distributed only in its original entirely without revision.
| Algorithm | CAVP Cert | Properties | Reference |
|---|---|---|---|
| HMAC-SHA-1 | A2848 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| HMAC-SHA2-224 | A2845 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| HMAC-SHA2-224 | A2848 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| HMAC-SHA2-256 | A2845 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| HMAC-SHA2-256 | A2848 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| HMAC-SHA2-256 | A2849 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| HMAC-SHA2-384 | A2845 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| HMAC-SHA2-384 | A2848 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| HMAC-SHA2-512 | A2845 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| HMAC-SHA2-512 | A2848 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| HMAC-SHA2- 512/256 | A2848 | Key Length - Key Length: 8-262144 Increment 8 | FIPS 198-1 |
| Algorithm | CAVP Cert | Properties | Reference |
|---|---|---|---|
| SHA-1 | A2845 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| SHA-1 | A2848 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| SHA2-224 | A2845 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| SHA2-224 | A2848 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| SHA2-256 | A2845 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
Table 8: Approved Algorithms - HMAC Message-Digest This document may be reproduced and distributed only in its original entirely without revision.
| Algorithm | CAVP Cert | Properties | Reference |
|---|---|---|---|
| SHA2-256 | A2848 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| SHA2-256 | A2849 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| SHA2-384 | A2845 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| SHA2-384 | A2848 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| SHA2-512 | A2845 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| SHA2-512 | A2848 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| SHA2- 512/256 | A2848 | Message Length - Message Length: 0-32768 Increment 8 | FIPS 180-4 |
| Name | Properties | Implementation | Reference | ||||
|---|---|---|---|---|---|---|---|
| CKG | Key Type:Symmetric | N/A | SP800-133 Rev2 Section 4, example 1 |
| Name | Use and Function |
|---|---|
| Ed25519 Key generation | EdDSA signature scheme |
| Ed25519 shared secret generation | EdDSA shared secret generation |
| Curve 25519 key generation | key generation |
| Curve 25519 shared secret generation | shared secret generation |
| ECDH Key Pair Generation | Elliptic Curve Integrated Encryption Scheme (ECIES) Key Generation |
| ECDH Shared Secret Computation | Elliptic Curve Integrated Encryption Scheme (ECIES) Encryption/Decryption |
| ANSI X9.63 KDF | Elliptic Curve Integrated Encryption Scheme (ECIES) Encryption/Decryption |
Table 9: Approved Algorithms - Message-Digest Vendor-Affirmed Algorithms: Table 10: Vendor-Affirmed Algorithms Non-Approved, Not Allowed Algorithms: This document may be reproduced and distributed only in its original entirely without revision.
| Name | Use and Function |
|---|---|
| AES-GCM | Elliptic Curve Integrated Encryption Scheme (ECIES) Encryption/Decryption |
| HKDF RFC5869 | HMAC based Key Derivation Function |
| PBKDF | Key Derivation |
| ECDSA implemented in FW | Key generation as part of Ref key generation service and validation, Signature generation and verification as part of Device keybag service |
| ECDSA implemented in HW PKA | Key generation as part of Ref key generation service Signature generation primitive |
| ECDH implemented in FW | Shared secret computation |
| ECDH implemented in HW PKA | Shared secret computation |
| AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Key wrapping and unwrapping |
| Name | Type | Description | Properties | Algorithms | |||||
|---|---|---|---|---|---|---|---|---|---|
| Unauthenticated Symmetric Encryption and Decryption | BC-UnAuth | AES Encrypt/Decrypt | AES-CBC:128-, 192-, 256-bit keys AES-ECB:128-, 192-, 256-bit keys | AES-CBC: (A2842, A2843, A2844, A2845, A510) Key Size/Strength: 128, 192, 256 AES-ECB: (A2842, A2843, A2845, A2847, A510) Key Size/Strength: 128, 192, 256 AES-ECB: (A501, AES 5261, AES 5272, AES 5273, AES 5274, AES 5275, AES 5278) |
Table 11: Non-Approved, Not Allowed Algorithms
This document may be reproduced and distributed only in its original entirely without revision.
| Name | Type | Description | Properties | Algorithms |
|---|---|---|---|---|
| Key Size/Strength: 256 AES-ECB: (C314, C315, C317, C318, C319, C320, C322, C323, C324, C326, C331, C358) Key Size/Strength: 128, 256 AES-CBC: (C315, C317, C318, C319, C320, C322, C326, C358, C314) Key Size/Strength: 128, 256 | ||||
| key wrapping / key unwrapping | KTS-Wrap | AES Key Wrapping | KTS (AES) [SP 800-38F]:AES- KW | AES-KW: (A2843, A2845, A2846) Key Size/Strength: 128, 192, 256 |
| Random Number Generation | DRBG | Random number generator using AES-256 | CTR_DRBG [SP800- 90ARev1]:AES- 256; No Derivation Function; Prediction Resistance Enabled | Counter DRBG: (DRBG 2014, DRBG 2022, DRBG 2023, DRBG 2024, DRBG 2025, DRBG 2028, A501, C323, C324, C331) Key Size/Strength: 256 |
| HMAC Message Authentication | MAC | Key Length 8 - 262144 bits/ Key | HMAC [FIPS 198]:SHA-1, | HMAC-SHA-1: (A2845, A2848) |
This document may be reproduced and distributed only in its original entirely without revision.
| Name | Type | Description | Properties | Algorithms | ||
|---|---|---|---|---|---|---|
| Strength: 112 to 256 bits | SHA-224, SHA- 256, SHA-384, SHA-512, SHA- 512/256 | HMAC-SHA2- 224: (A2845, A2848) HMAC-SHA2- 256: (A2845, A2848) HMAC-SHA2- 256: (A2849) SHA2-256: (for all SoCs but S3 that doesn't implement vng_neon) HMAC-SHA2- 384: (A2845, A2848) HMAC-SHA2- 512: (A2845, A2848) HMAC-SHA2- 512/256: (A2848) | ||||
| Message Digest | SHA | Hash function | SHS [FIPS 180- 4]:SHA-1, SHA- 224, SHA-256, SHA-384, SHA- 512, SHA- 512/256 | SHA-1: (A2845, A2848) SHA2-224: (A2845, A2848) SHA2-256: (A2845, A2848) SHA2-256: (A2849) SHA2-256: (for all SoCs but S3 that doesn't implement vng_neon) SHA2-384: (A2845, A2848) SHA2-512: (A2845, A2848) SHA2-512/256: (A2848) |
This document may be reproduced and distributed only in its original entirely without revision.
| Name | Type | Description | Properties | Algorithms | |||||
|---|---|---|---|---|---|---|---|---|---|
| Symmetric Key Generation | CKG | AES Key Generation | Key Length / Key Strength:256- bits | CKG: () AES key: Key Length/ Key Strength: 256 |
| Cert | Vendor | ||
|---|---|---|---|
| Number | Name | ||
| E113 | Apple |
| Name | Type | Operational Environment | Sample Size | Entropy per Sample | Conditioning Component |
|---|---|---|---|---|---|
| Apple corecrypto physical entropy source | Physical | See Tested Operational Environment Table | 256 bit | SHA-256 [ACVP cert. # C1223] |
Table 12: Security Function Implementations
The SHA-1 algorithm as implemented by the module will be non-approved for all purposes except signature verification, starting January 1, 2030.
Table 13: Entropy Certificates Table 14: Entropy Sources Entropy sources : The internal physical noise source consisting of ring oscillators. RBGs: The NIST [SP 800-90ARev1] approved deterministic random bit generators (DRBG) used for random number generation is a CTR_DRBG using AES-256 without derivation function and with prediction resistance. The module performs DRBG health tests according to [SP800-90ARev1 section 11.3]. The deterministic random bit generators are seeded by the physical noise source. RBG Output: The output of hardware entropy source provides 256-bits of security strength in instantiating and reseeding the module approved DRBGs. This document may be reproduced and distributed only in its original entirely without revision.
See vendor affirmed algorithms (CKG) in section 2.5.
The Module implements AES key wrapping and unwrapping as part of KTS in accordance with IG D.G method 2 and SP800-38F.
None for this module This document may be reproduced and distributed only in its original entirely without revision.
| Physical Port | Logical Interface(s) | Data That Passes |
|---|---|---|
| Mailbox Memory, IPC channel | Data Input Data Output | Data inputs/outputs are provided through the memory used for mailbox and IPC |
| Mailbox Memory, IPC channel | Control Input | Control input which controls the module's operation is provided through the mailbox by the Device OS' kernel and to applications located within the sepOS execution environment through IPC. |
| Mailbox Memory, IPC channel | Status Output | Status output is provided in return codes and through messages returned via the mailbox or the IPC. Documentation for each service invocation lists possible return codes. A complete list of all return codes returned by the C language APIs within the module is provided in the header files and the API documentation. Messages are also documented in the API documentation. |
Table 15: Ports and Interfaces This document may be reproduced and distributed only in its original entirely without revision.
| Method Name | Description | Security Mechanism | Strength Each Attempt | Strength per Minute |
|---|---|---|---|---|
| AES- KW | Unwrapping function | key wrapping / key unwrapping | 256-bits | 60,000,000 * 1 / 2^256 |
| Implicit | Implicit role assumption for non-crypto services | None | N/A | N/A |
Table 16: Authentication Methods Within the constraints of FIPS 140-3 overall security level 2 (with physical security at security level 3), the module implements a role-based authentication mechanism for authentication of the user role. The module implements authenticated encryption-based mechanism in the following way: to request an authenticated service from the module the user must provide the credential and a reference to the class C or A keys of the user keybag that is stored encrypted under SP800-38F AES Key Wrapping (AES-KW) within the module. The module performs obfuscation on the Operator provided credential. The resulting value -called REK (Root Encryption Key)- is used as the 256-bit AES key. Using this key, the module decrypts all the class C or A keys in the referenced user keybag with SP800-38F AES Key Unwrapping function (i.e., AES-KW-AD). As AES-KW is an authentication cipher, the decryption operation will only succeed if there is no authentication error. If the user keybag can be successfully decrypted, the user is authenticated to the module and the requested crypto service will then be proceeded with the decrypted user key. The failure of decrypting the user keybag is also a user authentication failure and the Operator will be denied access to the module. The User keybags are configured in the module during factory install. Each User keybag consists of set of class C, A and D keys. Specifically, class C keys include C key, CK key, CKU keys and the class A keys include A key, AK key, AKU key and APKU key. Only the class A or C keys are considered as approved. Any use of class D keys is considered as non-approved. The module maintains authenticated session from the time the User keybags are unwrapped until the power off. Upon power off, the unwrapped User keybags are zeroized and at the next power on the User credential needs to be provided again in order to unwrap the User keybag. All authentication data is provided electronically from the calling application/service and hence is not in visible form. The module does not support concurrent operators. This document may be reproduced and distributed only in its original entirely without revision.
| Name | Type | Operator Type | Authentication Methods |
|---|---|---|---|
| User | Role | Authenticated | AES-KW |
| Crypto Officer | Role | Non- authenticated | Implicit |
| Name | Description | Indicat or | Inputs | Outputs | Security Functions | SSP Access | |||
|---|---|---|---|---|---|---|---|---|---|
| User Keybag Services via Mailbox | Step 1: The module receives User credential and the reference to the class C or A key from the User keybag; Step 2. Obfuscation is performed on the User provided credential resulting into a value called REK.; Step 3. REK is used as a key for the AES KW operation to unwrap the referenced class A or C keys in the user keybag stored in the module; Step 4. Status of unwrapping operation of class keys is returned via | Success returne d from API listed in the custom er proprie tary guidan ce docum ent | User creden tial, referen ce to class C/A key from the user keybag | status (success/e rror) | Unauthenti cated Symmetric Encryption and Decryption key wrapping / key unwrappin g | User - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in User Keybag (AES keys): W,E - REK: W,E - Authentic ation Credential : W,E |
This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description mailbox interface and the REK is zeroized. | Indicat or | Inputs | Outputs | Security Functions | SSP Access |
|---|---|---|---|---|---|---|
| General Authentication service | The module invokes the User Keybag Services via Mailbox (i.e. #1 above) | Success returne d from API listed in the custom er proprie tary guidan ce docum ent | User creden tial, referen ce to class C/A key from the user keybag | status (success/e rror) | key wrapping / key unwrappin g | User - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in User Keybag (AES keys): W,E - REK: W,E - Authentic ation Credential : W,E |
| Generation of Data Encryption Key (DEK) | Step 1: The module receives the reference to the class C or A key from the user keybag; Step 2: The module generates a new DEK using the DRBG; Step 3: Referenced class C or A key is used to wrap the DEK using AES-KW; Step 4: Wrapped DEK is | Success returne d from API listed in the custom er proprie tary guidan ce docum ent | referen ce to class C/A key from the User keybag | wrapped DEK | Symmetric Key Generation | User - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in User Keybag (AES keys): W,E - Entropy input string: W,E - Data |
: W,E This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Indicat or | Inputs | Outputs | Security Functions | SSP Access |
|---|---|---|---|---|---|---|
| sent out of the module | Encryptio n Key (DEK) (AES key): G,W,E | |||||
| Keychain DEK service using AK/AKU/AKPU/ CK/CKU class key | Step 1. The module receives wrapped DEK (that was sent as part of service 3 above) and the pointer to class key AK/AKU/AKPU/ CK/CKU from the user keybag; Step 2. Using the referenced class key, the module unwraps the DEK using AES- KW. If the class key is not available, an error is returned; Step 3. plaintext DEK is sent out to the User. (AS09.16) | Success returne d from API listed in the custom er proprie tary guidan ce docum ent | pointer to AK/AK U/ AKPU/ CK/ CKU class key, wrapp ed DEK | unwrappe d DEK | key wrapping / key unwrappin g | User - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in User Keybag (AES keys): W,E - Data Encryptio n Key (DEK) (AES key): W,E |
| Backup keybag generation | The module generates new set of back up keybags using the DRBG | Success returne d from API listed in the custom er | N/A | status (success/e rror) | Random Number Generation | User - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU |
G,W,E This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Indicat or | Inputs | Outputs | Security Functions | SSP Access | |
|---|---|---|---|---|---|---|---|
| proprie tary guidan ce docum ent | in Backup Keybag (AES keys): G,E - Entropy input string: W,E - DRBG internal state: V vlaue, key, and seed material: W,E | ||||||
| Backup keybag service | Step 1. The module receives wrapped DEK and the class key reference for C and A from the user keybag; 2. Using the referenced class key, the module unwraps the DEK using AES- KW. If the class key is not available, an error is returned; 3. The module generates a set of back up keybag using DRBG; 4. Unwrapped DEK is re-wrapped | Success returne d from API listed in the custom er proprie tary guidan ce docum ent | wrapp ed DEK, referen ce to class C or A key from the user keybag | wrapped DEK | key wrapping / key unwrappin g | User - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in User Keybag (AES keys): W,E - Data Encryptio n Key (DEK) (AES key): W,E - Entropy input string: W,E - DRBG internal state: V |
W,E W,E This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Indicat or | Inputs | Outputs | Security Functions | SSP Access | ||
|---|---|---|---|---|---|---|---|---|
| with back up keybag using AES-KW; 5. Wrapped DEK is sent out. | vlaue, key, and seed material: W,E - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in Backup Keybag (AES keys): R,W,E | |||||||
| Escrow keybag creation | The module generates new set of escrow keybag using the DRBG | Success returne d from API listed in the custom er proprie tary guidan ce docum ent | N/A | status (success/e rror) | Random Number Generation | User - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in Escrow Keybag (AES keys): G,E - Entropy input string: W,E - DRBG internal state: V vlaue, key, and seed material: W,E |
R,W,E W,E W,E This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Indicat or | Inputs | Outputs | Security Functions | SSP Access |
|---|---|---|---|---|---|---|
| Export Keybag | Step 1. The module receives reference to a keybag; Step 2: A HMAC key is taken as input based on the hardware specific data for the SKS; Step 3: HMAC value is calculated on the entire referenced keybag that includes encrypted keys; Step 4: HMAC is appended at the end of the keybag; Step 5: keybag with the appended HMAC is output to the User | Success returne d from API listed in the custom er proprie tary guidan ce docum ent | referen ce to a keybag to be export ed | keybag with HMAC tag | HMAC Message Authenticat ion Message Digest | User - HMAC key: W,E - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in User Keybag (AES keys): R,E - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in Backup Keybag (AES keys): R,E - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in Escrow Keybag (AES keys): R,E |
| Device Wipe | Erase all content (Factory Reset) | Success returne d from | N/A | N/A | None | Crypto Officer - Class A, |
This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Indicat or | Inputs | Outputs | Security Functions | SSP Access | ||
|---|---|---|---|---|---|---|---|---|
| API listed in the custom er proprie tary guidan ce docum ent | Class C, Class AK, Class AKU, Class CK, Class CKU in User Keybag (AES keys): Z - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in Backup Keybag (AES keys): Z - Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in Escrow Keybag (AES keys): Z - Data Encryptio n Key (DEK) (AES key): Z - Entropy input |
Z This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Indicat or | Inputs | Outputs | Security Functions | SSP Access |
|---|---|---|---|---|---|---|
| string: Z - DRBG internal state: V vlaue, key, and seed material: Z - HMAC key: Z - Authentic ation Credential : Z - REK: Z | ||||||
| Perform self test | Initiate pre- operational self- test and CASTs by powering off/on | N/A | modul e power- off/on | results of self-test | Unauthenti cated Symmetric Encryption and Decryption key wrapping / key unwrappin g Random Number Generation HMAC Message Authenticat ion Message Digest | Crypto Officer |
| Show Status | N/A | N/A | N/A | status | None | Crypto Officer |
Z :Z g This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Indicat or | Inputs | Outputs | Security Functions | SSP Access | ||
|---|---|---|---|---|---|---|---|---|
| Show Module Version Information | N/A | N/A | Module name and version | None | Crypto Officer |
| Name | Description | Algorithms | Role |
|---|---|---|---|
| Class D key File System Services to wrap or unwrap DEK | Wrapping of provided plaintext DEK or unwrapping of provided wrapped DEK using class D key from Backup keybag or Flash in SEP | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| Class D key service to encrypt or decrypt data | Encryption of provided plaintext or decryption of provided ciphertext using class D key from Device or iCloud Keybag | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| Class DK/DKU File System Services to wrap or unwrap keychain | Wrapping of provided plaintext keychain or unwrapping of provided wrapped keychain using class DK/DKU key from Backup keybag or User keybag | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM | Crypto Officer |
Table 18: Approved Services The abbreviations of the access rights to SSPs have the following interpretation: G = Generate: The module generates or derives the SSP. R = Read: The SSP is read from the module (e.g., the SSP is output). W = Write: The SSP is updated, imported, or written to the module. E = Execute: The module uses the SSP in performing a cryptographic operation. Z = Zeroise: The module zeroises the SSP. N/A = The service does not access any SSP during its operation
This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Algorithms | Role |
|---|---|---|---|
| storage controller key | |||
| Class DK/DKU key service for data encrypt or decrypt | Encryption of provided plaintext or decryption of provided ciphertext using DK/DKU key from Device or iCloud keybag | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| Generate Ref-Key | Key Generation | Ed25519 Key generation Curve 25519 key generation ECDH Key Pair Generation | Crypto Officer |
| Sign and verify using Ref-key | Signature Generation and Verification | ECDSA implemented in FW ECDSA implemented in HW PKA | Crypto Officer |
| Encryption and decryption using Ref- key | shared secret is generated using user provided key and existing ref key followed by HKDF is applied to derived a key which is used to encrypt the provided plaintext or decrypt the provided ciphertext | AES-GCM HKDF RFC5869 ECDSA implemented in FW ECDSA implemented in HW PKA AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| Generate Shared Secret using Ref-key | Shared secret generation | Ed25519 shared secret | Crypto Officer |
This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Algorithms | Role |
|---|---|---|---|
| generation Curve 25519 shared secret generation ECDH Shared Secret Computation ECDH implemented in FW ECDH implemented in HW PKA | |||
| Device Keybag service for data encrypt or decrypt | Encryption of provided plaintext or decryption of provided ciphertext using any key from Device Keybag | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| iCloud Keybag service for data encrypt or decrypt | Encryption of provided plaintext or decryption of provided ciphertext using any key from iCloud Keybag | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| Escrow keybag service for key wrapping and unwrapping | Wrapping of provided plaintext key or unwrapping of provided wrapped key using any key from Escrow Keybag | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| Encrypt or Decrypt service using Class B | shared secret is computed by generating new ephemeral keypair and existing Curve25519 key followed by HKDF is | Curve 25519 key generation Curve 25519 | Crypto Officer |
This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Algorithms | Role |
|---|---|---|---|
| Curve 22519 key from any keybag | applied to derived a key which is used doe data encryption or decryption. During encryption operations, the wrapped key and the ephemeral public key is sent to the user | shared secret generation HKDF RFC5869 AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | |
| Wrap or unwrap service for DEK or keychain using any Curve 22519 key from asymmetric keybag | shared secret is computed by generating new ephemeral keypair and existing Curve25519 key followed by HKDF is applied to derived a key which is used to wrap and unwrap DEK or keychain. During wrapping operation, the wrapped key and the ephemeral public key is sent to the user | Curve 25519 key generation Curve 25519 shared secret generation HKDF RFC5869 AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| Asymmetric (Ed25519) backup keybag wrap and unwrap | Pointer to DK/DKU/CK/CKU/AK/AKU/AKPU key from asymmetric keybag, plaintext keychain during wrapping operation or wrapped keychain during unwrapping operation | Ed25519 Key generation Ed25519 shared secret generation HKDF RFC5869 AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Algorithms | Role |
|---|---|---|---|
| Wrap or unwrap service for keychain using DK/DKU/CK/ CKU/AK/AKU/AKPU Ed25519 key from asymmetric keybag | shared secret is computed by generating new ephemeral keypair and existing Curve25519 key followed by HKDF is applied to derived a key which is used to wrap and unwrap. The wrapped key and the ephemeral public key is sent to the user | Ed25519 Key generation Ed25519 shared secret generation HKDF RFC5869 AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| NVM Storage Controller Key Service | wrapping DEK using NVM storage controller key | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| Elliptic Curve Integrated Encryption Scheme (ECIES) Encryption | Encryption | ECDH Shared Secret Computation ANSI X9.63 KDF AES-GCM | Crypto Officer |
| Elliptic Curve Integrated Encryption Scheme (ECIES) Decryption | Decryption | ECDH Shared Secret Computation ANSI X9.63 KDF AES-GCM | Crypto Officer |
| PBKDF Key Derivation | Hash-based Key Derivation | PBKDF | Crypto Officer |
| File system DEK service | Unwrap the DEK using referenced class key and re-wrap using NVM storage controller key | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM | Crypto Officer |
This document may be reproduced and distributed only in its original entirely without revision.
| Name | Description | Algorithms | Role |
|---|---|---|---|
| storage controller key | |||
| Generation of DEK via IPC using class D key | Requesting generate DEK service via IPC Channel using class D keys | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
| Requesting backup keybag service via IPC using class D key | Requesting backup keybag service via IPC Channel using class D keys | AES KW using class D key, keys from Device keybag, keys from iCloud keybag or NVM storage controller key | Crypto Officer |
Table 19: Non-Approved Services
N/A This document may be reproduced and distributed only in its original entirely without revision.
The Apple corecrypto Module v12.0 [Apple silicon, Secure Key Store, Hardware SL2] is in the form of binary executable code. A firmware integrity test is performed on the runtime image of the module. The HMAC-SHA256 implemented in the module is used as the approved algorithm for the integrity test. If the test fails, the module enters an error state where no cryptographic services are provided, and data output is prohibited i.e. the module is not operational. As the module is delivered built with the Device OS, there is no standalone delivery of the module. The vendor’s internal development process guarantees that the correct version of module goes with its intended Device OS version
The module’s integrity test can be performed on demand by powering-off and reloading the module. The integrity test on demand is performed as part of the Pre-Operational Self-Tests, automatically executed at power-on. This document may be reproduced and distributed only in its original entirely without revision.
Type of Operational Environment: Non-Modifiable
The module operates within the sepOS execution environment which is separate from the Device OS execution environment. The SEP operating system provides memory isolation between all applications executing on it. The Device OS is unable to access the module's memory or observe the module's operation. This document may be reproduced and distributed only in its original entirely without revision.
| Mechanism | Inspection Frequency | Inspection Guidance |
|---|---|---|
| Production Grade Components that include standard passivation | No operator- performed testing is recommended | N/A |
| Tamper-Evident Coating or black hard coated material or metal coating, SoC is soldered in logic board from the Ball Grid Array (BGA) or SIP is embedded in hardened resin. The components listed above are opaque within the visible spectrum. | No operator- performed testing is recommended | N/A |
The defined physical boundary of the Apple corecrypto Module v12 [Apple silicon, Secure Key Store, Hardware, SL2] is the entire System-on-Chip (SoC) listed in the Tested Module Identification table. Consequently, the physical embodiment of each SoC is considered to be that of a single-chip cryptographic module. The hardware module conforms to the Level 2 requirements for physical security. The physical components that comprise the module are of production grade components with industry direct observation, probing, or manipulation of the single-chip as detailed in the Physical Security Mechanisms and Actions Required table.
Table 20: Mechanisms and Actions Required This document may be reproduced and distributed only in its original entirely without revision.
Per IG 12.A, until the requirements of NIST SP 800-140F are defined, non-invasive mechanisms fall under ISO/IEC 19790:2012 Section 7.12 Mitigation of other attacks. The requirements of this area are not applicable to the module. This document may be reproduced and distributed only in its original entirely without revision.
| Storage Area Name | Description | Persistence Type |
|---|---|---|
| Flash | Preloaded at factory | Static |
| RAM | Volatile memory | Dynamic |
| Name | From | To | Format Type | Distribution Type | Entry Type | SFI or Algorithm | |
|---|---|---|---|---|---|---|---|
| User Input | User | RAM | Plaintext | Manual | Direct | ||
| Export Keybag from Flash | Flash | Operating calling application (TOEPP) | Encrypted | Automated | Electronic | key wrapping / key unwrapping | |
| Export Keybag from RAM | RAM | Operating calling application (TOEPP) | Encrypted | Automated | Electronic | key wrapping / key unwrapping | |
| Obfuscation of User Input Authentication Credential | User | RAM | Plaintext | Manual | Direct | ||
| Obtained from ENT (P) | ENT (P) | RAM | Plaintext | Automated | Electronic | Random Number Generation | |
| Pre-loaded from Factory | Factory install | Flash | Plaintext | Automated | Electronic |
Table 22: SSP Input-Output Methods This document may be reproduced and distributed only in its original entirely without revision.
| Zeroization Method | Description | Rationale | Operator Initiation |
|---|---|---|---|
| Context object destruction | SSPs are zeroised when the appropriate context object is destroyed | Zeroization when structure is deallocated | N/A |
| Power Down | SSPs are zeroised when the system is powered down | Powering down forces context object destruction | Operator can initiate a power down |
| Device Wipe | Erase all content (factory reset) | Factory reset zeroizes all SSPs, including those stored in Flash | Operator can initiate a device wipe |
| Name | Descriptio n | Size - Strengt h | Type - Category | Generate d By | Establishe d By | Used By |
|---|---|---|---|---|---|---|
| Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in User Keybag (AES keys) | AES keys in user keybag | 256- bits - 256- bits | Symmetric - CSP | Unauthenticat ed Symmetric Encryption and Decryption key wrapping / key unwrapping | ||
| Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in Backup Keybag (AES keys) | AES keys in backup keybag | 256- bits - 256- bits | Symmetric - CSP | Symmetri c Key Generatio n | key wrapping / key unwrapping | |
| Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in | AES keys in escrow keybag | 256- bits - 256- bits | Symmetric - CSP | Symmetri c Key Generatio n | key wrapping / key unwrapping |
Table 23: SSP Zeroization Methods Data output interfaces are inhibited while zeroisation is performed. h This document may be reproduced and distributed only in its original entirely without revision.
| Name Escrow Keybag (AES keys) | Descriptio n | Size - Strengt h | Type - Category | Generate d By | Establishe d By | Used By |
|---|---|---|---|---|---|---|
| Data Encryption Key (DEK) (AES key) | AES keys in user keybag | 256- bits - 256- bits | Symmetric - CSP | Symmetri c Key Generatio n | key wrapping / key unwrapping Random Number Generation | |
| Entropy input string | Entropy input string | 256- bits - 256- bits | Entropy - CSP | Random Number Generatio n | Random Number Generation | |
| DRBG internal state: V vlaue, key, and seed material | Internal state values associate d with CTR_DRB G | 256- bits - 256- bits | DRBG - CSP | Random Number Generatio n | Random Number Generation | |
| HMAC key | HMAC key | 112- bits - 112- bits | Message Authenticatio n Key - CSP | Symmetri c Key Generatio n | Random Number Generation | |
| Authenticatio n Credential | User- provided credential s | N/A - N/A | User- generated - CSP | key wrapping / key unwrapping | ||
| REK | Root Encryptio n Key | 256- bits - 256- bits | Symmetric - CSP | key wrapping / key unwrapping |
h G s Table 24: SSP Table 1 This document may be reproduced and distributed only in its original entirely without revision.
| Name | Input - Output | Storage | Storage Duration | Zeroizatio n | Related SSPs |
|---|---|---|---|---|---|
| Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in User Keybag (AES keys) | Export Keybag from Flash Pre-loaded from Factory | Flash:Encrypte d | From factory install to device- wipe | Device Wipe | |
| Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in Backup Keybag (AES keys) | Export Keybag from RAM | RAM:Encrypte d | From service invocatio n to service completio n | Context object destructio n Power Down | |
| Class A, Class C, Class AK, Class AKU, Class CK, Class CKU in Escrow Keybag (AES keys) | Export Keybag from RAM | RAM:Encrypte d | From service invocatio n to service completio n | Context object destructio n Power Down | |
| Data Encryption Key (DEK) (AES key) | Export Keybag from RAM | RAM:Encrypte d | From service invocatio n to service completio n | Context object destructio n Power Down | |
| Entropy input string | Obtained from ENT (P) | RAM:Encrypte d | From service invocatio n to service completio n | Context object destructio n Power Down | DRBG internal state: V vlaue, key, and seed material:Used With |
n n This document may be reproduced and distributed only in its original entirely without revision.
| Name | Input - Output | Storage | Storage Duration | Zeroizatio n | Related SSPs | |
|---|---|---|---|---|---|---|
| DRBG internal state: V vlaue, key, and seed material | RAM:Encrypte d | From service invocatio n to service completio n | Context object destructio n Power Down | Entropy input string:Derived From | ||
| HMAC key | RAM:Encrypte d | From service invocatio n to service completio n | Context object destructio n Power Down | |||
| Authenticati on Credential | User Input | RAM:Obfuscat ed | From service invocatio n to service completio n | Context object destructio n Power Down | REK:Derives | |
| REK | Obfuscation of User Input Authenticati on Credential | RAM:Plaintext | From service invocatio n to service completio n | Context object destructio n Power Down | Authentication Credential:Obfuscati on from |
n n n n Table 25: SSP Table 2 This document may be reproduced and distributed only in its original entirely without revision.
| Algorithm or Test | Test Properties | Test Method | Test Type | Indicator | Details | |||
|---|---|---|---|---|---|---|---|---|
| HMAC- SHA2-256 (A2845) | 112-bit key | Message Authentication | SW/FW Integrity | If the test fails, then the module enters an Error State. | The HMAC value is pre- computed at build time and stored in the module. The HMAC value is recalculated during runtime and compared with the stored value. |
| Algorithm or Test | Test Properties | Test Method | Test Type | Indicator | Details | Condition s |
|---|---|---|---|---|---|---|
| HMAC- SHA2-512 (A2845) | SHA2-256 | KAT | CAS T | Module becomes operationa l | Message authentication | Test runs at Power- on before the integrity test |
| AES-CBC (A2842) | 128-bit key | KAT | CAS T | Module becomes operationa l | Encryption | Test runs at Power- on before the integrity test |
While the module is executing the self-tests, services are not available, and input and output are inhibited.
The module performs a pre-operational firmware integrity automatically when the module is loaded into memory (i.e., at power on) before the module transitions to the operational state. A HMAC-SHA256 is used as an approved integrity technique. Prior to using HMAC-SHA-256, a Conditional Cryptographic Algorithm Self-Tests (CAST) KAT is performed on the HMAC Table 26: Pre-Operational Self-Tests
This document may be reproduced and distributed only in its original entirely without revision.
| Algorithm or Test | Test Properties | Test Method | Test Type | Indicator | Details | Condition s |
|---|---|---|---|---|---|---|
| AES-ECB (A2842) | 128-bit key | KAT | CAS T | Module becomes operationa l | Decryption | Test runs at Power- on before the integrity test |
| AES-KW (A2843) | 128-bit key | KAT | CAS T | Module becomes operationa l | Wrapping/Unwrappin g | Test runs at Power- on before the integrity test |
| Counter DRBG (DRBG 2014) | AES 128- bit key | KAT | CAS T | Module becomes operationa l | Health test per SP800- 90ARev1 section 11.3 | Test runs at Power- on before the integrity test |
| ESV-RCT (Startup) | Repetition Count Test performe d at entropy source startup | fault- detectio n test | CAS T | successful seeding of SP 800- 90A DRBG | SP 800-90B 4.4.1 Repetition Count Test | upon startup of entropy source |
| ESV-RCT (Continuous ) | Repetition Count Test performe d every invocation of entropy source after startup | fault- detectio n test | CAS T | successful seeding of SP 800- 90A DRBG | SP 800-90B 4.4.1 Repetition Count Test | upon seeding or reseeding SP 800- 90A DRBG |
This document may be reproduced and distributed only in its original entirely without revision.
| Algorithm or Test | Test Properties | Test Method | Test Type | Indicator | Details | Condition s |
|---|---|---|---|---|---|---|
| ESV-APT (Startup) | Adaptive Proportio n Test performe d at etnropy source startup | fault- detectio n test | CAS T | successful seeding of SP 800- 90A DRBG | SP 800-90B 4.4.2 Adaptive Proportion Test | upon startup of entropy source |
| ESV-APT (Continuous ) | Adaptive Proportio n Test performe d at every invocation of entropy source every invocation after startup | fault- detectio n test | CAS T | successful seeding of SP 800- 90A DRBG | SP 800-90B 4.4.2 Adaptive Proportion Test | upon seeding or reseeding SP 800- 90A DRBG |
| Algorithm or Test | Test Method | Test Type | Period | Periodic Method | |
|---|---|---|---|---|---|
| HMAC-SHA2- 256 (A2845) | Message Authentication | SW/FW Integrity | Whenever module is powered on | Upon every power-on |
| Algorithm or Test | Test Method | Test Type | Period | Periodic Method | |
|---|---|---|---|---|---|
| HMAC-SHA2- 512 (A2845) | KAT | CAST | On Demand | Manually |
Table 27: Conditional Self-Tests
Table 28: Pre-Operational Periodic Information This document may be reproduced and distributed only in its original entirely without revision.
| Algorithm or Test | Test Method | Test Type | Period | Periodic Method |
|---|---|---|---|---|
| AES-CBC (A2842) | KAT | CAST | On Demand | Manually |
| AES-ECB (A2842) | KAT | CAST | On Demand | Manually |
| AES-KW (A2843) | KAT | CAST | On Demand | Manually |
| Counter DRBG (DRBG 2014) | KAT | CAST | On Demand | Manually |
| ESV-RCT (Startup) | fault-detection test | CAST | On demand | Manually |
| ESV-RCT (Continuous) | fault-detection test | CAST | On demand | Manually |
| ESV-APT (Startup) | fault-detection test | CAST | On demand | Manually |
| ESV-APT (Continuous) | fault-detection test | CAST | On demand | Manually |
| Name | Description | Conditions | Recovery Method | Indicator | |
|---|---|---|---|---|---|
| Error state | The HMAC-SHA-256 value computed over the module did not match the pre- computed value, OR the computed value in the invoked Conditional CAST did not match the known value. No cryptographic services are provided, and data output is prohibited | Pre- operational Firmware Integrity Test failure OR Conditional CAST failure | Power off/on | for Integrity: print statement "FAILED: fipspost_post_integrity" to stdout; for CAST: sprint statement "FAILED:<event>" to stdout (<event> refers to any of the cryptographic functions listed in the Conditional Self- test Table) |
Table 30: Error States This document may be reproduced and distributed only in its original entirely without revision.
The module permits operators to initiate the pre-operational or conditional self-tests on demand for periodic testing of the module by reloading the module. This document may be reproduced and distributed only in its original entirely without revision.
Startup Procedures: As the module is delivered built with the Device OS, there is no standalone delivery of the module. Installation Process and Authentication Mechanisms: The vendor’s internal development process guarantees that the correct version of module goes with its intended Device OS version. For additional assurance, the module is digitally signed by vendor, and it is verified during the integration into Host Device OS. This digital signature-based integrity protection used during the delivery/integration process is not to be confused with the HMAC-256 based integrity check performed by the module itself as part of its pre-operational self- tests.
The biometric authentication option provided by the underlying test platform shall be disabled in order to run the module in the FIPS validated manner. The Approved mode of operation is configured in the system by default and can only be transitioned into the non-Approved mode by calling one of the non-Approved services listed in Table - Non-Approved Services. If the device starts up successfully, then the module has passed all self-tests and is operating in the Approved mode. The ESV Public Use Document (PUD) reference for physical entropy source is: https://csrc.nist.gov/projects/cryptographic-module-validation-program/entropyvalidations/certificate/113 Apple Platform Certifications guide [platform certifications] and Apple Platform Security guide [SEC] are provided by Apple which offers IT System Administrators with the necessary technical information to ensure FIPS 140-3 Compliance of the deployed systems. This guide walks the reader through the system’s assertion of cryptographic module integrity and the steps necessary if module integrity requires remediation.
The User role is authenticated with the mechanism described in section 4. The User role can access the module via mailbox interface using the Device OS’s XNU kernel. The User role can perform subset of services from Table - Approved Algorithms. As stated in the Administrator Guidance section above, the Approved mode of operation is configured in the system by default and can only be transitioned into the non-Approved mode by calling one of the non-Approved services. This transition cannot be made by the User directly, as all non-approved services require an implicit transition into the Crypto-Officer role. Any calling of such services is therefore implicitly performed by the Crypto Officer. This document may be reproduced and distributed only in its original entirely without revision.
The Device Wipe service erases the module content. When performing a Device Wipe service to erase all content of the module, the procedure must be performed under the control of the Operator. This document may be reproduced and distributed only in its original entirely without revision.
The module does not claim mitigation of other attacks. This document may be reproduced and distributed only in its original entirely without revision.
Appendix A. Glossary and Abbreviations AES Advanced Encryption Standard API Application Programming Interfaces APT Adaptive Proportion Test (SP800-90B health test) BGA Ball Grid Array (Physical Security) CAVP Cryptographic Algorithm Validation Program CBC Cipher Block Chaining CCM Counter with Cipher Block Chaining-Message Authentication Code CMVP Cryptographic Module Validation Program CST Cryptographic and Security Testing CTR Counter Mode DEK Data Encryption Key DRBG Deterministic Random Bit Generator ECB Electronic Code Book ECDSA DSA (Digital Signature Algorithm) based on Elliptic Curve Cryptography (ECC) EMI Electromagnetic Interference (Physical Security) ESV NIST entropy source validation program providing SP 800-90B compliant entropy validation certificate FIPS Federal Information Processing Standards Publication GCM Galois Counter Mode HMAC Hash Message Authentication Code IPC Inter-Process Communication IHS Integrated Heat Spreader (Physical Security) KAT Known Answer Test KDF Key Derivation Function KEK Key Encryption Key KW AES Key Wrap MAC Message Authentication Code NIST National Institute of Science and Technology NVM Non-Volatile Memory OFB Output Feedback OS Operating System PBKDF Password Based Key Derivation Function RCT Repetition Count Test (SP800-90B health test) SEP Secure Enclave Processor SHA Secure Hash Algorithm This document may be reproduced and distributed only in its original entirely without revision.
| Appendix B. | References |
| FIPS140-3 | FIPS PUB 140-3 - Security Requirements for Cryptographic Modules March 2019 https://doi.org/10.6028/NIST.FIPS.140-3 |
| SP 800-140x | CMVP FIPS 140-3 Related Reference https://csrc.nist.gov/Projects/cryptographic-module-validation-program/fips-140-3-standards |
| FIPS140-3_IG | Implementation Guidance for FIPS PUB 140-3 and the Cryptographic Module Validation Program January 2024 https://csrc.nist.gov/csrc/media/Projects/cryptographic-module-validation- program/documents/fips%20140-3/FIPS%20140-3%20IG.pdf |
| FIPS140-3_MM | CMVP FIPS 140-3 Management Manual February 2024 https://csrc.nist.gov/csrc/media/Projects/cryptographic-module-validation- program/documents/fips%20140-3/FIPS-140-3-CMVP%20Management%20Manual%20v2.1%5B02-29- 2024%5D.pdf |
| SP 800-140 | FIPS 140-3 Derived Test Requirements (DTR) March 2020 https://csrc.nist.gov/publications/detail/sp/800-140/final |
| SP 800-140A | CMVP Documentation Requirements March 2020 https://csrc.nist.gov/publications/detail/sp/800-140a/final |
| SP 800-140Br1 | CMVP Security Policy Requirements November 2023 https://doi.org/10.6028/NIST.SP.800-140Br1 |
| SP 800-140C | CMVP Approved Security Functions July 2023 https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-140Cr2.pdf |
| SP 800-140D | CMVP Approved Sensitive Security Parameter Generation and Establishment Methods July 2023 https://doi.org/10.6028/NIST.SP.800-140Dr2 |
| SP 800-140E | CMVP Approved Authentication Mechanisms March 2020 https://csrc.nist.gov/publications/detail/sp/800-140e/final |
| SP 800-140F | CMVP Approved Non-Invasive Attack Mitigation Test Metrics March 2020 https://csrc.nist.gov/publications/detail/sp/800-140f/final This document may be reproduced and distributed only in its original entirely without revision. |
| FIPS180-4 | Secure Hash Standard (SHS) March 2012 http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf |
| FIPS186-5 | Digital Signature Standard (DSS) F3b 2023 https://doi.org/10.6028/NIST.FIPS.186-5 |
| FIPS197 | Advanced Encryption Standard November 2001 http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf |
| FIPS198-1 | The Keyed Hash Message Authentication Code (HMAC) July 2008 http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf |
| PKCS#1 | Public Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1 February 2003 http://www.ietf.org/rfc/rfc3447.txt |
| RFC3394 | Advanced Encryption Standard (AES) Key Wrap Algorithm September 2002 http://www.ietf.org/rfc/rfc3394.txt |
| RFC5649 | Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm September 2009 http://www.ietf.org/rfc/rfc5649.txt |
| SP800-38A | NIST Special Publication 800-38A - Recommendation for Block Cipher Modes of Operation Methods and Techniques December 2001 http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf |
| SP800-38C | NIST Special Publication 800-38C - Recommendation for Block Cipher Modes of Operation: the CCM Mode for Authentication and Confidentiality May 2004 http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38c.pdf |
| SP800-38D | NIST Special Publication 800-38D - Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC November 2007 http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf |
| SP800-38E | NIST Special Publication 800-38E - Recommendation for Block Cipher Modes of Operation: The XTS AES Mode for Confidentiality on Storage Devices January 2010 http://csrc.nist.gov/publications/nistpubs/800-38E/nist-sp-800-38E.pdf |
| SP800-38F | NIST Special Publication 800-38F - Recommendation for Block Cipher Modes of Operation: Methods for Key Wrapping December 2012 http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38F.pdf This document may be reproduced and distributed only in its original entirely without revision. |
| SP800-56Cr2 | Recommendation for Key-Derivation Methods in Key-Establishment Schemes August 2020 https://doi.org/10.6028/NIST.SP.800-56Cr2 |
| SP800-57 | NIST Special Publication 800-57 Part 1 Revision 5 - Recommendation for Key Management Part 1: General May 2020 https://doi.org/10.6028/NIST.SP.800-57pt1r5 |
| SP800-67r2 | NIST Special Publication 800-67 Revision 1 - Recommendation for the Triple Data Encryption Algorithm (TDEA) Block Cipher January 2012 (withdrawn January 2014) https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-67r2.pdf |
| SP800-90Ar1 | NIST Special Publication 800-90A - Revision 1 - Recommendation for Random Number Generation Using Deterministic Random Bit Generators June 2015 http://dx.doi.org/10.6028/NIST.SP.800-90Ar1 |
| SP800-90B | NIST Special Publication 800-90B - Recommendation for the Entropy Sources Used for Random Bit Generation January 2018 https://doi.org/10.6028/NIST.SP.800-90B |
| SP800-108r1 | NIST Special Publication 800-108r1 - Recommendation for Key Derivation Using Pseudorandom Functions Aug 2022 https://doi.org/10.6028/NIST.SP.800-108r1 |
| SP800-131Ar2 | Transitioning the Use of Cryptographic Algorithms and Key Lengths March 2019 https://doi.org/10.6028/NIST.SP.800-131Ar2 |
| SP800-133r2 | Recommendation for Cryptographic Key Generation June 2020 https://doi.org/10.6028/NIST.SP.800-133r2 |
| SP800-135r1 | NIST Special Publication 800-135 Revision 1 - Recommendation for Existing Application-Specific Key Derivation Functions December 2011 http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-135r1.pdf |
| SEC | Apple Platform Security https://support.apple.com/guide/security/welcome/web https://manuals.info.apple.com/MANUALS/1000/MA1902/en_US/apple-platform-security-guide.pdf |