| Standard | FIPS 140-3 |
|---|---|
| Overall level | 1 |
| Module type | Software |
| Embodiment | Multi-Chip Stand Alone |
| Status | Active |
| Sunset date | 10/27/2026 |
| Caveat | Interim validation. When operated in approved mode |
| Vendor | Apple Inc. |
flowchart LR
%% Deterministic review-risk graph for Apple corecrypto Module v12.0 [Apple silicon, Kernel, Software, SL1]
%% 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<br/>update</i>"]
C3["[low] Self-test / status surface<br/>(referenced in text)<br/><i>Status Output<br/>Self-test<br/>Show Status</i>"]
C5["[low] Protocol / secure-channel<br/>references (may be KDF<br/>names, not a live channel)<br/><i>IKEV<br/>IPSEC<br/>HTTPS</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, Kernel, Software, SL1]
%% 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<br/>update</i><br/>src: text:keyword"]
C3["[low] Self-test / status surface (referenced in text)<br/><i>Status Output<br/>Self-test<br/>Show Status</i><br/>src: text:keyword"]
C5["[low] Protocol / secure-channel references (may be KDF names, not a live channel)<br/><i>IKEV<br/>IPSEC<br/>HTTPS</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, Kernel, Software, SL1] October 2024 Prepared for: Apple 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
Trademarks Apple’s trademarks applicable to this document are listed in https://www.apple.com/legal/intellectualproperty/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.
2 of 35
| # | Section | Page |
|---|
| Item | Page |
|---|---|
| Table 1 - Security Levels | 5 |
| Table 2 - Tested Operational Environments | 6 |
| Table 3 - Vendor Affirmed Operational Environments | 7 |
| Table 4 - Modes of Operation | 7 |
| Table 5 - Vendor Affirmed Algorithms | 7 |
| Table 6 - Approved Algorithms | 10 |
| Table 7 - Non-Approved Algorithms Not Allowed in the Approved Mode of Operation | 12 |
| Table 8 - Executable Code Sets | 12 |
| Table 9 - Ports and Interfaces | 13 |
| Table 10 - Roles | 14 |
| Table 11 - Security Function Implementations | 14 |
| Table 12 - Approved Services | 16 |
| Table 13 - Non-Approved Services | 17 |
| Table 14 - SSPs | 24 |
| Table 15 – Entropy Sources | 24 |
| Table 16 - Storage Areas | 25 |
| Table 17 – Pre-Operational Self-Tests | 26 |
| Table 18 - Self-Tests | 27 |
| Table 19- Error states | 28 |
| ISO/IEC 24759 Section 6.[Number Below] | FIPS 140-3 Section Title | Security Level |
|---|---|---|
| 1 | General | 1 |
| 2 | Cryptographic Module Specification | 1 |
| 3 | Cryptographic Module Interfaces | 1 |
| 4 | Roles, Services, and Authentication | 1 |
| 5 | Software/Firmware Security | 1 |
| 6 | Operational Environment | 1 |
| 7 | Physical Security | Not Applicable |
| 8 | Non-invasive Security | Not Applicable |
| 9 | Sensitive Security Parameter Management | 1 |
| 10 | Self-tests | 1 |
| 11 | Life-cycle Assurance | 1 |
| 12 | Mitigation of Other Attacks | Not Applicable |
This document is the non-proprietary FIPS 140-3 Security Policy for Apple corecrypto Module v12.0 [Apple silicon, Kernel, Software, SL1] 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 a Security Level 1 module. This document provides all tables and diagrams (when applicable) required by NIST SP 800-140B. The column names of the tables follow the template tables provided in NIST SP 800-140B. Table 1 describes the individual security areas of FIPS 140-3, as well as the Security Levels of those individual areas. Table 1 - Security Levels This document may be reproduced and distributed only in its original entirely without revision.
5 of 35
| # | Operating System | Hardware Platform | Processor | PAA/Acceleration |
|---|---|---|---|---|
| 1 | iPadOS 15 | iPad (5th generation) | Apple A Series A9 | With and without PAA |
| 2 | iPadOS 15 | iPad Pro 9.7-inch | Apple A Series A9X | With and without PAA |
| 3 | iPadOS 15 | iPad (7th generation) | Apple A Series A10 Fusion | With and without PAA |
| 4 | iPadOS 15 | iPad Pro 10.5 inch | Apple A Series A10X Fusion | With and without PAA |
| 5 | iPadOS 15 | iPad mini (5th generation) | Apple A Series A12 Bionic | With and without PAA |
| 6 | iPadOS 15 | iPad Pro 11-inch (1st generation) | Apple A Series A12X Bionic | With and without PAA |
| 7 | iPadOS 15 | iPad Pro 11-inch (2nd generation) | Apple A Series A12Z Bionic | With and without PAA |
| 8 | iPadOS 15 | iPad (9th generation) | Apple A Series A13 Bionic | With and without PAA |
| 9 | iPadOS 15 | iPad Air (4th generation) | Apple A Series A14 Bionic | With and without PAA |
| 10 | iPadOS 15 | iPad mini (6th generation) | Apple A Series A15 Bionic | With and without PAA |
| 11 | iPadOS 15 | iPad Pro 11-inch (3rd generation) | Apple M Series M1 | With and without PAA |
| 12 | iOS 15 | iPhone 6S | Apple A Series A9 | With and without PAA |
| 13 | iOS 15 | iPhone 7 Plus | Apple A Series A10 Fusion | With and without PAA |
| 14 | iOS 15 | iPhone X | Apple A Series A11 Bionic | With and without PAA |
| 15 | iOS 15 | iPhone XS Max | Apple A Series A12 Bionic | With and without PAA |
| 16 | iOS 15 | iPhone 11 Pro | Apple A Series A13 Bionic | With and without PAA |
| 17 | iOS 15 | iPhone 12 | Apple A Series A14 Bionic | With and without PAA |
| 18 | iOS 15 | iPhone 13 Pro Max | Apple A Series A15 Bionic | With and without PAA |
| 19 | watchOS 8 | Apple Watch Series S3 | Apple S Series S3 | With and without PAA |
| 20 | watchOS 8 | Apple Watch Series S4 | Apple S Series S4 | With and without PAA |
| 21 | watchOS 8 | Apple Watch Series S5 | Apple S Series S5 | With and without PAA |
| 22 | watchOS 8 | Apple Watch Series S6 | Apple S Series S6 | With and without PAA |
| 23 | watchOS 8 | Apple Watch Series S7 | Apple S Series S7 | With and without PAA |
| 24 | tvOS 15 | Apple TV 4K | Apple A Series A10X Fusion | With and without PAA |
| 25 | tvOS 15 | Apple TV 4K (2nd generation) | Apple A Series A12 Bionic | With and without PAA |
| 26 | T2OS 12 | Apple Security Chip T2 | Apple T Series T2 | With and without PAA |
| 27 | macOS 12 Monterey | MacBook Pro (13-inch, M1, 2020) | Apple M Series M1 | With and without PAA |
| 28 | macOS 12 Monterey | MacBook Pro 14-inch | Apple M Series M1 Pro | With and without PAA |
| 29 | macOS 12 Monterey | MacBook Pro 16-inch | Apple M Series M1 Max | With and without PAA |
| # | Operating System | Hardware Platform |
|---|---|---|
| 1 | iPadOS 15 | iPad Pro 12.9-inch |
| 2 | iPadOS 15 | iPad (6th generation) |
| 3 | iPadOS 15 | iPad Pro 12.9-inch (2nd generation) |
| 4 | iPadOS 15 | iPad Air (3rd generation) |
| 5 | iPadOS 15 | iPad (8th generation) |
The Apple corecrypto Module v12.0 [Apple silicon, Kernel, Software, SL1] cryptographic module (hereafter referred to as “the module”) is a Software module running on a multi-chip standalone general-purpose computing platform. The version of module is 12.0. The module provides implementations of low-level Monterey) Security Framework and Common Crypto.
Table 2 - Tested Operational Environments
This document may be reproduced and distributed only in its original entirely without revision.
6 of 35
| # | Operating System | Hardware Platform |
|---|---|---|
| 6 | iPadOS 15 | iPad Pro 12.9-inch (3rd generation) |
| 7 | iPadOS 15 | iPad Pro 12.9-inch (4th generation) |
| 8 | iPadOS 15 | iPad Pro 12.9-inch (5th generation) |
| 9 | iOS 15 | iPhone SE |
| 10 | iOS 15 | iPhone 6S Plus |
| 11 | iOS 15 | iPhone 7 |
| 12 | iOS 15 | iPhone 8 |
| 13 | iOS 15 | iPhone 8 Plus |
| 14 | iOS 15 | iPhone XS |
| 15 | iOS 15 | iPhone XR |
| 16 | iOS 15 | iPhone 11 |
| 17 | iOS 15 | iPhone 11 Pro Max |
| 18 | iOS 15 | iPhone SE (2nd generation) |
| 19 | iOS 15 | iPhone 12 mini |
| 20 | iOS 15 | iPhone 12 Pro |
| 21 | iOS 15 | iPhone 12 Pro Max |
| 22 | iOS 15 | iPhone 13 mini |
| 23 | iOS 15 | iPhone 13 |
| 24 | iOS 15 | iPhone 13 Pro |
| 25 | watchOS 8 | Apple Watch SE |
| 26 | macOS 12 Monterey | MacBook Air |
| 27 | macOS 12 Monterey | Mac mini |
| 28 | macOS 12 Monterey | iMac (24-inch) |
| 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 Table 5 and Table 6. | Approved mode | return a '1' from fips_allowed_mode() for block cipher functions and fips_allowed() for all other services to indicate the executed cryptographic algorithm was approved |
| Non- Approved mode | Non-Approved mode of operation is entered when the module utilizes non-approved security functions in Table 7. | Non- Approved mode | 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 non-approved |
| Algorithm | Algorithm Properties | Use / Function | |||
|---|---|---|---|---|---|
| CKG [SP800-133r2] (asymmetric) | Vendor affirmed | Cryptographic key Generation for ECDSA key pair; FIPS 140-3 IG D.H and SP800-133r2 section 4 example 1 |
The CMVP makes no statement as to the correct operation of the module or the security strengths of the generated keys when so ported if the specific operational environment is not listed on the validation certificate. the service utilized. The table below provides a summary of the implementation. This document may be reproduced and distributed only in its original entirely without revision.
7 of 35
| CAVP Cert. | Algorithm and Standard | Mode / Method | Description / Key Size(s) / Key Strength(s) | Use / Function |
|---|---|---|---|---|
| A2793, A2865 | AES | CBC | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| (asm_arm) | [FIPS 197] [SP 800-38A] | bits | and Decryption | |
| A2794, A2866 (c_asm) | AES | CBC | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| [FIPS 197] [SP 800-38A] | bits | and Decryption | ||
| A2796, A2868 | AES | CCM | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| (vng_asm) | [FIPS 197] [SP 800-38A] [SP 800-38C] [SP 800-38D] | bits | and Decryption | |
| A2793, A2865 | AES | CFB128 | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| (asm_arm) | [FIPS 197] [SP 800-38A] | bits | and Decryption | |
| A2794, A2866 (c_asm) | AES | CFB128 | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| [FIPS 197] [SP 800-38A] | bits | and Decryption | ||
| A2794, A2866 (c_asm) | AES | CFB8 | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| [FIPS 197] [SP 800-38A] | bits | and Decryption | ||
| A2794, A2866 (c_asm) | AES | CTR | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| [FIPS 197] [SP 800-38A] | bits | and Decryption | ||
| A2796, A2868 | AES | CTR | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| (vng_asm) | [FIPS 197] [SP 800-38A] [SP 800-38C] [SP 800-38D] | bits | and Decryption | |
| A2793, A2865 | AES | ECB | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| (asm_arm) | [FIPS 197] [SP 800-38A] | bits | and Decryption | |
| A2794, A2866 (c_asm) | AES | ECB | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| [FIPS 197] [SP 800-38A] | bits | and Decryption | ||
| A2796, A2868 | AES | ECB | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| (vng_asm) | [FIPS 197] [SP 800-38A] | bits | and Decryption |
The table below lists all Approved or Vendor-affirmed security functions of the module, including specific key size(s) employed for approved services, and implemented modes of operation. This document may be reproduced and distributed only in its original entirely without revision.
8 of 35
| CAVP Cert. | Algorithm and Standard | Mode / Method | Description / Key Size(s) / Key Strength(s) | Use / Function |
|---|---|---|---|---|
| A2796, A2868 | AES | GCM | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| (vng_asm) | [FIPS 197] [SP 800-38A] [SP 800-38C] [SP 800-38D] | bits | and Decryption | |
| A2793, A2865 | AES | OFB | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| (asm_arm) | [FIPS 197] [SP 800-38A] | bits | and Decryption | |
| A2794, A2866 (c_asm) | AES | OFB | Key Size / Key Strength: 128, 192, 256 | Symmetric Encryption |
| [FIPS 197] [SP 800-38A] | bits | and Decryption | ||
| A2793, A2865 | AES | XTS | Key Size / Key Strength: 128, 256 bits | Symmetric Encryption |
| (asm_arm) | [FIPS 197] [SP 800-38E] | and Decryption | ||
| A2794, A2866 (c_asm) | KTS (AES) | AES-KW | Key Size / Key Strength: 128, 192, 256 | Key Wrapping |
| [SP 800-38F] | bits | |||
| A2794, A2866 (c_asm) | DRBG | CTR_DRBG: AES-128, | Key Size / Key Strength: 128, 256 bits | Random Number |
| [SP800-90ARev1] | AES-256 | Derivation Function Enabled, No Prediction Resistance | Generation | |
| A2796, A2868 | DRBG | CTR_DRBG: AES-128, | Key Size / Key Strength: 128, 256 bits | Random Number |
| (vng_asm) | [SP800-90ARev1] | AES-256 | Derivation Function Enabled, No Prediction Resistance | Generation |
| A2797, A2869 (vng_ltc) | RSA | PKCS#1 v1.5 and PKCS | Key Size: 2048, 3072, 4096 bits | Digital Signature |
| [FIPS 186-4] | PSS | Key Strength: from 112 to 150 bits | Generation | |
| A2797, A2869 (vng_ltc) | RSA | PKCS#1 v1.5 and PKCS | Key Size: 1024 (legacy), 2048, 3072, | Digital Signature |
| [FIPS 186-4] | PSS | 4096 bits Key Strength: from 80 to 150 bits | Verification | |
| A2797, A2869 (vng_ltc) | ECDSA | Key Pair Generation | Curve: P-224, P-256, P-384, P-521 | Asymmetric Key |
| ANSI X9.62 | (CKG) using method in | Key Strength: from 112 to 256 bits | Generation | |
| [FIPS 186-4] | Section 4 example 1 of SP 800-133r2. [FIPS 186-4] Appendix B.4.2 Testing Candidates | |||
| A2797, A2869 (vng_ltc) | ECDSA | N/A | Curve: P-224, P-256, P-384, P-521 bits | Asymmetric Key |
| ANSI X9.62 [FIPS 186-4] | Key Strength: from 112 to 256 bits | Validation | ||
| A2797, A2869 (vng_ltc) | ECDSA | SHA2-224, SHA2-256, | Curve: P-224, P-256, P-384, P-521 bits | Digital Signature |
| ANSI X9.62 [FIPS 186-4] | SHA2-384, SHA2-512 | Key Strength: from 112 to 256 bits | Generation | |
| A2797, A2869 (vng_ltc) | ECDSA | SHA1 (legacy), SHA2- | Curve: P-224, P-256, P-384, P-521 bits | Digital Signature |
| ANSI X9.62 | 224, SHA2-256, SHA2- | Key Strength: from 112 to 256 bits | Verification | |
| [FIPS 186-4] | 384, SHA2-512 | |||
| A2797, A2869 (vng_ltc) | SHS [FIPS 180-4] | SHA-1 | N/A | Message Digest |
This document may be reproduced and distributed only in its original entirely without revision.
9 of 35
| CAVP Cert. | Algorithm and Standard | Mode / Method | Description / Key Size(s) / Key Strength(s) | Use / Function |
|---|---|---|---|---|
| A2797, A2869 (vng_ltc) | SHS [FIPS 180-4] | SHA-224 | N/A | Message Digest |
| A2797, A2869 (vng_ltc) | SHS [FIPS 180-4] | SHA-256 | N/A | Message Digest |
| A2797, A2869 (vng_ltc) | SHS [FIPS 180-4] | SHA-384 | N/A | Message Digest |
| A2797, A2869 (vng_ltc) | SHS [FIPS 180-4] | SHA-512 | N/A | Message Digest |
| A2797, A2869 (vng_ltc) | SHS [FIPS 180-4] | SHA-512/256 | N/A | Message Digest |
| A2795, A2867 (c_ltc) | SHS [FIPS 180-4] | SHA-384 | N/A | Message Digest |
| A2795, A2867 (c_ltc) | SHS [FIPS 180-4] | SHA-512 | N/A | Message Digest |
| A2795, A2867 (c_ltc) | SHS [FIPS 180-4] | SHA-512/256 | N/A | Message Digest |
| A2798, A2870 | SHS | SHA-256 for all CPUs in | N/A | Message Digest |
| (vng_neon) | [FIPS 180-4] | Table 2 except S3) | ||
| A2797, A2869 (vng_ltc) | HMAC | SHA-1 | Key Size: 128 - 262144 bits | Message |
| [FIPS 198] | Key Strength: 128 bits | authentication (MAC) | ||
| A2797, A2869 (vng_ltc) | HMAC | SHA-224 | Key Size: 224 - 262144 bits | Message |
| [FIPS 198] | Key Strength: 224 bits | authentication (MAC) | ||
| A2797, A2869 (vng_ltc) | HMAC | SHA-256 | Key Size: 256 - 262144 bits | Message |
| [FIPS 198] | Key Strength: 256 bits | authentication (MAC) | ||
| A2797, A2869 (vng_ltc) | HMAC | SHA-384 | Key Size: 384 - 262144 bits | Message |
| [FIPS 198] | Key Strength: 384 bits | authentication (MAC) | ||
| A2797, A2869 (vng_ltc) | HMAC | SHA-512 | Key Size: 512 - 262144 bits | Message |
| [FIPS 198] | Key Strength: 512 bits | authentication (MAC) | ||
| A2797, A2869 (vng_ltc) | HMAC | SHA-512/256 | Key Size: 512 - 262144 bits | Message |
| [FIPS 198] | Key Strength: 256 bits | authentication (MAC) | ||
| A2795, A2867 (c_ltc) | HMAC | SHA-384 | Key Size: 384 - 262144 bits | Message |
| [FIPS 198] | Key Strength: 384 bits | authentication (MAC) | ||
| A2795, A2867 (c_ltc) | HMAC | SHA-512 | Key Size: 512 - 262144 bits | Message |
| [FIPS 198] | Key Strength: 512 bits | authentication (MAC) | ||
| A2795, A2867 (c_ltc) | HMAC | SHA-512/256 | Key Size: 512 - 262144 bits | Message |
| [FIPS 198] | Key Strength: 256 bits | authentication (MAC) | ||
| A2798, A2870 | HMAC | SHA-256 (for all CPUs | Key Size: 256 - 262144 bits | Message |
| (vng_neon) | [FIPS 198] | in Table 2 except S3) | Key Strength: 256 bits | authentication (MAC) |
Table 6 - Approved Algorithms This document may be reproduced and distributed only in its original entirely without revision.
10 of 35
| Algorithm/Functions | Use / Function |
|---|---|
| RSA Signature Generation | PKCS#1 v1.5 and PSS Signature Generation Key Size < 2048 |
| RSA Signature Verification | PKCS#1 v1.5 and PSS Signature Verification Key Size < 1024 |
| RSA Key Wrapping | OAEP, PKCS#1 v1.5 and -PSS schemes |
| Ed25519 | Key Agreement Key Generation Signature Generation Signature Verification |
| ANSI X9.63 KDF | Hash based Key Derivation Function |
| RFC6637 | Key Derivation Function |
| HKDF [SP800-56C] | Key Derivation Function |
| DES | Encryption / Decryption Key Size 56-bits |
| CAST5 | Encryption / Decryption Key Sizes 40 to 128-bits in 8-bit increments |
| AES-GCM using external IV | Authenticated Encryption / Decryption |
| RC4 | Encryption / Decryption Key Sizes 8 to 4096-bits |
| RC2 | Encryption / Decryption Key Sizes 8 to 1024-bits |
| MD2 | Message Digest Digest size 128-bit |
| MD4 | Message Digest Digest size 128-bit |
| MD5 | Message Digest Digest size 128-bit |
| RIPEMD | Message Digest Digest size 160-bits |
| ECDSA | PKG: Curve P-192 with security strength of 96 bits PKV: Curve P-192 Signature Generation: Curve P-192 Signature Verification: Curve P-192 Key Pair Generation for compact point representation of points |
| Integrated Encryption Scheme on elliptic curves (ECIES) | Hybrid Encryption scheme |
| Blowfish | Encryption / Decryption |
| OMAC (One-Key CBC MAC) | MAC generation / verification |
2.6 Non-Approved Algorithms Allowed in the Approved Mode of Operation
There are no non-Approved but “Allowed functions” with security claimed algorithms in approved mode.
2.7 Non-Approved Algorithms Allowed in the Approved Mode of Operation with No
Security Claimed There are no non-Approved Allowed functions with no security claimed algorithms in approved mode.
2.8 Non-Approved Algorithms Not Allowed in the Approved Mode of Operation
The table below lists the non-Approved algorithms and security functions that are used in the non-Approved mode of operation: This document may be reproduced and distributed only in its original entirely without revision.
11 of 35
| Algorithm/Functions | Use / Function | ||
|---|---|---|---|
| Triple-DES [SP 800-67] | Encryption/Decryption with modes CBC, ECB |
| Package/File Names | Software Version | Integrity Test Implemented | |||
|---|---|---|---|---|---|
| corecrypto-1217.40.11 | 12.0 | HMAC-SHA-256 |
Table 7 - Non-Approved Algorithms Not Allowed in the Approved Mode of Operation
Table 8 - Executable Code Sets The module cryptographic boundary is delineated by the dotted green rectangle in the Figure
12 of 35
| Physical Ports | Logical Interface1 | Data that passes over port/interface |
|---|---|---|
| As a software-only module, the module does not have physical ports. Physical Ports are interpreted to be the physical ports of the hardware platform on which it runs | Data Input | Data inputs are provided in the variables passed in the KPI and callable service invocations, generally through caller-supplied buffers |
| Data Output | Data outputs are provided in the variables passed in the KPI and callable service invocations, generally through caller-supplied buffers | |
| Control Input | Control inputs which control the mode of the module are provided through dedicated parameters, namely the kernel module plist whose information is supplied to the module by the kernel module loader. | |
| Status Output | Status output is provided in return codes and through messages. Documentation for each KPI lists possible return codes. A complete list of all return codes returned by the C language KPIs within the module is provided in the header files and the KPI documentation. Messages are also documented in the KPI documentation. |
interfaces are described in (Table 9 ): Table 9 - Ports and Interfaces The module is optimized for library use within the Device OS kernel space and does not contain any terminating assertions or exceptions. It is implemented as a Device OS dynamically loadable library. The dynamically loadable library is loaded into the Device OS kernel and its cryptographic functions are made available to Device OS kernel services only. Any internal error detected by the module is returned to the caller with an appropriate return code. The calling Device OS kernel service must examine the return code and act accordingly. The module communicates any error status synchronously through the use of its documented return codes, thus Caller-induced or internal errors do not reveal any sensitive material to callers. This document may be reproduced and distributed only in its original entirely without revision.
13 of 35
| Name | Type | Operator Type | Authentication Method | ||||
|---|---|---|---|---|---|---|---|
| Crypto Officer | Role | CO | Implicit |
| Name | Type | Description | SF Properties | Algorithm Properties | |||||
|---|---|---|---|---|---|---|---|---|---|
| KTS | KTS | SP 800-38F, IG D.G. AES Key Wrapping and Unwrapping | 128, 192, and 256-bit AES keys providing 128, 192, or 256 bits of encryption strength | AES-KW/ A2794, A2866 |
| Name | Description | Indicator | Inputs | Outputs | Approved Security Functions | Roles | Access rights to Keys and/ or SSPs |
|---|---|---|---|---|---|---|---|
| Symmetric Encryption | Executes AES- mode encrypt operation | 1 | AES key, plaintext data | ciphertext data | AES-CBC, AES-CCM, AES-CFB128, AES- CFB8, AES-CTR, AES- ECB, AES-GCM, AES- OFB, AES-XTS | CO | W, E |
| Symmetric Decryption | Executes AES- mode decrypt operation | 1 | AES key, ciphertext data | plaintext data | AES-CBC, AES-CCM, AES-CFB128, AES- CFB8, AES-CTR, AES- ECB, AES-GCM, AES- OFB, AES-XTS | CO | W, E |
The module supports a single instance of one authorized role: The Crypto Officer. No support is provided for multiple concurrent operators. Table 10 - Roles FIPS 140-3 does not require an authentication mechanism for level 1 modules. Therefore, the module does not support an authentication mechanism for Crypto Officer. The Crypto Officer role is authorized to access all services provided by the module (see Table 12 - Approved Services and Table 13 - Non-Approved Services below).
Table 11 - Security Function Implementations The module implements a dedicated KPI function to indicate if a requested service utilizes an approved security function. For services listed in Table 12 - Approved Services, the indicator function returns 1 to indicate that the security function is approved. This document may be reproduced and distributed only in its original entirely without revision.
14 of 35
| Name | Description | Indicator | Inputs | Outputs | Approved Security Functions | Roles | Access rights to Keys and/ or SSPs | |
|---|---|---|---|---|---|---|---|---|
| AES Key Wrapping | Executes AES- key wrapping operation | 1 | AES key wrapping key, un | wrapped key | AES-KW | CO | W, E | |
| AES Key Unwrapping | Executes AES- key unwrapping operation | 1 | AES key wrapping key, | unwrapped key | AES-KW | CO | W, E | |
| Message Digest Generation | Generate a digest for the requested algorithm | 1 | Message | message digest | SHA-1, SHA-224, SHA- 256, SHA-384, SHA- 512, SHA-512/256 | CO | N/A | |
| Message Authentication Code (MAC) Generation | Generate a Message Authentication Code | 1 | HMAC key | , MA | MAC | HMAC-SHA-1, HMAC- SHA-224, HMAC-SHA- 256, HMAC-SHA-384, HMAC-SHA-512, HMAC-SHA-512/256 | CO | W, E |
| algorithm, | message | |||||||
| Signature generation (RSA) | Sign a message with a specified RSA private key | 1 | RSA private key algorithm | computed signature | RSA SigGen | CO | W, E | |
| Signature verification (RSA) | Verify the signature of a message with a specified RSA public key | 1 | RSA public key, digital | pass/fail result of | RSA SigVer | CO | W, E | |
| signature, message | digital signature | |||||||
| hash algorithm | verification | |||||||
| Signature generation (ECDSA) | Sign a message with a specified ECDSA private key | 1 | ECDSA private key, | computed signature | ECDSA SigGen | CO | W, E | |
| Signature verification (ECDSA) | Verify the signature of a message with a specified ECDSA public key | 1 | ECDSA public key, digital signature, message, hash algorithm | pass/fail result of digital signature verification | ECDSA SigVer | CO | W, E | |
| Random number generation | Generate Random number | 1 | Output length | Random bit-string | CTR_DRBG (Entropy Input, DRBG seed, Internal state V value and key) | CO | E/ G, W, E / G, W, E | |
| key pair generation (ECDSA) | Generate a keypair for a requested elliptic curve | 1 | key size | ECDSA Key Pair | ECDSA KeyGen, CKG | CO | G, R | |
| Public key validation (ECDSA) | Verify a public key for a requested elliptic curve | 1 | ECDSA public key | pass/fail result of key pair verification | ECDSA KeyVer | CO | E, W | |
| Zeroization | Release all resources of symmetric crypto function context | 1 | N/A | N/A | N/A | CO | Z |
This document may be reproduced and distributed only in its original entirely without revision.
15 of 35
| Name | Description Release all resources of hash context Release of all resources of asymmetric crypto function context | Indicator 1 1 | Inputs N/A N/A | Outputs N/A N/A | Approved Security Functions N/A N/A | Roles CO CO | Access rights to Keys and/ or SSPs Z Z |
|---|---|---|---|---|---|---|---|
| Self-test | Execute the CASTs | 1 | None | pass/fail results of self- tests | Algorithms listed in table Conditional self- test | CO | N/A |
| Show Status | Return the module status | None | None | status output | N/A | CO | N/A |
| Show Module Info | Return Module Base Name and Module Version Number | None | None | name and version information | N/A | CO | N/A |
| Service | Description | Algorithms Accessed | Role |
|---|---|---|---|
| Triple-DES encryption / decryption | TDES-CBC, TDES-ECB | Triple-DES | CO |
| RSA Key Wrapping | The CAST does not perform the full KTS, only the raw RSA encrypt/ decrypt. | RSA encrypt/decrypt | CO |
| RSA Signature Generation | PKCS#1 v1.5 and PSS Signature Generation Key Size < 2048 | RSA Signature Generation | CO |
| RSA Signature Verification | PKCS#1 v1.5 and PSS Signature Verification Key Size < 1024 | RSA Signature Verification | CO |
| ECDSA Key-pair Generation (PKG) and ECDSA Key Validation (PKV) | ECDSA PKG and PKV using curve P-192 | ECDSA Key Generation, ECDSA Key Validation | CO |
| ECDSA Signature Generation | ECDSA Signature Generation using curve P-192 | ECDSA Signature Generation | CO |
| ECDSA Signature Verification | ECDSA Signature Verification using curve P-192 | ECDSA Signature Verification | CO |
Table 12 - Approved Services 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.
16 of 35
| Service | Description | Algorithms Accessed | Role |
|---|---|---|---|
| ECDSA Key Pair Generation for compact point representation of points | Key Pair Generation for compact point representation of points | ECDSA Key Generation | CO |
| Ed25519 Key Generation | Ed25519 Key Generation | Ed25519 Key Generation | CO |
| Ed25519 Signature Generation | EdDSA Signature Generation over Curve25519 | Ed25519 Sig Generation | CO |
| Ed25519 Signature Verification | EdDSA Signature Verification over Curve25519 | Ed25519 Sig Verification | CO |
| Ed25519 Key Agreement | Ed25519 Key Agreement | Ed25519 Key Agreement | CO |
| ECIES | Elliptic Curve encrypt | ECIES Encrypt | CO |
| ANSI X9.63 Key Derivation | SHA-1 hash-based key derivation function | SHA-1 | CO |
| SP800-56C Key Derivation (HKDF) | SHA-256 hash-based key derivation function | SHA-256 | CO |
| RFC 6637 Key Derivation | SHA hash based key derivation function | SHA-256, SHA-512, AES-128, AES-256 | CO |
| OMAC Message Authentication Code Generation and Verification | One-Key CBC MAC using 128-bit key | OMAC | CO |
| Message digest generation. | Message digest generation using non-approved algorithms | MD2, MD4, MD5, RIPEMD | CO |
| Authenticated Encryption / decryption | Encrypt a plaintext / Decrypt a ciphertext | AES-GCM using external IV | CO |
| (other) symmetric encryption / decryption | symmetric encryption / decryption using non-approved algorithms | Blowfish, CAST5, DES, RC2, RC4 | CO |
Table 13 - Non-Approved Services This document may be reproduced and distributed only in its original entirely without revision.
17 of 35
The Apple corecrypto Module v12.0 [Apple silicon, Kernel, Software, SL1], which is made up of a single component, is provided in the form of binary executable code. A software 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.
Integrity test is performed as part of the Pre-Operational Self-Tests. It is automatically executed at power-on. Integrity test on demand is performed by power-cycling the computing platform . This document may be reproduced and distributed only in its original entirely without revision.
18 of 35
The Apple corecrypto Module v12.0 [Apple silicon, Kernel, Software, SL1] operates in a modifiable operational environment per FIPS 140-3 level 1 specifications. The module is supplied as part of Device OS, a commercially available general-purpose operating system executing on the computing platforms specified in section 2. This document may be reproduced and distributed only in its original entirely without revision.
19 of 35
The FIPS 140-3 physical security requirements do not apply to the Apple corecrypto Module v12.0 [Apple silicon, Kernel, Software, SL1], since it is a software module. This document may be reproduced and distributed only in its original entirely without revision.
20 of 35
Currently, the ISO/IEC 19790:2012 non-invasive security area is not required by FIPS 140-3 (see NIST SP 800140F). 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.
21 of 35
| Key/ SSP Name / Type | Strength | Security Function and Cert. Number | Generation | Impor t/ Export | Estab lishm ent | Storage | Zeroisation | Use and related keys |
|---|---|---|---|---|---|---|---|---|
| AES Key / CSP | 128 to 256 bits | AES-CBC (A2792, A2794, A2865, A2866) AES-CCM (A2796, A2868) AES-CFB128 (A2793, A2794, A2865, A2866) AES-CFB8 (A27494, A2866) AES-CTR (A2794, A2796, A2866, A2868) AES-ECB (A2793, A2794, A2796, A2865, A2866, A2868) AES-GCM (A2796, A2868) AES-OFB (A2794, A2866) AES-XTS (A2793, A2865) | N/A | Import from calling applicat ion No Export | N/A | RAM | Automatic zeroisation when structure is deallocated or when the system is powered down | Use: Symmetric Encryption and Decryption Related keys: N/A |
| AES Key- wrapping key / CSP | 128 to 256 bits | AES-KW (A2794, A2866) | N/A | Import from calling applicat ion No Export | N/A | RAM | Automatic zeroisation when structure is deallocated or when the system is powered down | Use: Key Wrapping Related keys: N/A |
| HMAC Key / CSP | 128-256 bits | HMAC-SHA-1, HMAC-SHA-224, HMAC-SHA-256, HMAC-SHA-384, HMAC-SHA-512, HMAC-SHA- 512/256 (A2797, A2869, A2795, A2867, A2798, A2870) | N/A | Import from calling applicat ion No Export | N/A | RAM | Automatic zeroisation when structure is deallocated or when the system is powered down | Use: Message authenticati on code generation (HMAC) Related keys: N/A |
| ECDSA public key (including intermediate keygen values) PSP | 112 to 256 bits | ECDSA KeyGen (A2797, A2869) | The key pairs are generated conformant to SP800-133r2 (CKG) using FIPS186-4 Key | Import and Export to calling applicat | N/A | RAM | Automatic zeroisation when structure is deallocated or when the system is powered | Use: Digital Signature verification Related keys: DRBG internal |
The following table summarizes the keys and Sensitive Security Parameters (SSPs) that are used by the cryptographic services implemented in the module: This document may be reproduced and distributed only in its original entirely without revision.
22 of 35
| Key/ SSP Name / Type | Strength | Security Function and Cert. Number | Generation | Impor t/ Export | Estab lishm ent | Storage | Zeroisation | Use and related keys | ||
|---|---|---|---|---|---|---|---|---|---|---|
| Generation method, and the random value used in the key generation is generated using SP800- 90ARev1 DRBG | ion. Interme diate keygen values are not output. | down. Intermediate keygen values are zeroized before the module returns from the key generation function. | state, ECDSA private key | |||||||
| ECDSA private key (including intermediate keygen values) CSP | Use: Digital Signature generation Related keys: DRBG internal state, ECDSA public key | |||||||||
| RSA public key / PSP | 112 to 150 bits | RSA SigGen, RSA SigVer (A2797, A2869) | N/A | Import from calling applicat ion No Export. | N/A | RAM | Automatic zeroisation when structure is deallocated or when the system is powered down. | Use: Digital Signature verification Related keys: DRBG internal state, RSA private key | ||
| RSA private key / CSP | Use: Digital Signature generation Related keys: DRBG internal state, RSA public key | |||||||||
| DRBG Entropy Input / CSP (IG D.L) | 256 bits | Random Number Generation E14, E15 (see PUD referenced in section 11.2) | Obtained from two entropy sources | N/A | N/A | RAM | When the system is powered down | Use Random Number Generation Related keys: DRBG seed | ||
| DRBG Seed / CSP (IG D.L) | 256 bits | CTR_DRBG (A2797, A2869, A2796, A2868, A2795, A2867, A2794, A2866) | Derived from entropy input string as defined by SP800- 90ARev1 | N/A | N/A | RAM | When the system is powered down | Use Random Number Generation Related keys: DRBG entropy input, DRBG internal state | ||
| DRBG internal state: V value and Key / CSP (IG D.L) | 256 bits | CTR_DRBG (A2797, A2869, A2796, A2868, A2795, A2867, A2794, A2866) | Derived from seed as defined by SP800- 90Arev1 | N/A | N/A | RAM | When the system is powered down | Use: Random Number Generation Related keys: DRBG seed |
This document may be reproduced and distributed only in its original entirely without revision.
23 of 35
| Name | Minimum number of bits of entropy | Conditioning Components (CAVP number if vetted) |
|---|---|---|
| ESV Cert #E14: Apple corecrypto physical entropy source | 256 bits | The entropy source consists of twenty-four Free Ring Oscillator (FROs) with a vetted conditioning function SHA- 256 (ACVP cert. # C1223) |
| ESV Cert #E15: Apple corecrypto non-physical entropy source | 256 bits | The non-physical entropy source is based upon interrupt timings with a vetted conditioning function SHA-256 (ACVP certs. # A2797, A2869 |
A NIST approved deterministic random bit generator based on a block cipher as specified in NIST [SP 80090ARev1] is used. The DRBG is a CTR_DRBG using AES-256 with derivation function and without prediction resistance. The random numbers used for key generation are all generated by CTR_DRBG in this module. Per section 10.2.1.1 of [SP 800-90ARev1], the internal state of CTR_DRBG is the value V and Key. The module performs DRBG health tests according to section 11.3 of [SP800-90Arev1]. The module also performs DRBG health tests according to section 11.3 of [SP800-90ARev1]. No non-DRBG functions or instances are able to access the DRBG internal state The deterministic random bit generators are seeded by “read_random”. The read_random is the kernel space interface. Two entropy sources (one non-physical entropy source and one physical entropy source) residing within the TOEPP provide the random bits. The output of entropy pool provides 256-bits of entropy to seed and reseed SP800-90ARev1 DRBG during initialization (seed) and reseeding (reseed). Table 15 – Entropy Sources
The module generates Keys and SSPs in accordance with FIPS 140-3 IG D.H. The cryptographic module performs Cryptographic Key Generation (CKG) for asymmetric (ECDSA) keys as per [SP800-133r2] section 4 example 1 (vendor affirmed), compliant with [FIPS186-4], and using DRBG compliant with [SP800-90ARev1]. A seed (i.e., the random value) used in asymmetric key generation is obtained from [SP800-90ARev1] DRBG. The key generation service for ECDSA as well as the [SP 800-90ARev1] DRBG have been ACVT tested with algorithm certificates found in Table 6.
The module provides the following key/SSP establishment services in the Approved mode: • AES-Key Wrapping: The module implements a Key Transport Scheme (KTS) using AES-KW compliant to [SP800-38F], IG D.G. The SSP establishment methodology provides between 128 and 256 bits of encryption strength.
All keys and SSPs that are entered from, or output to module, are entered from or output to the invoking application running on the same device. Keys/ SSPs entered into the module are electronically entered in plain text form. The module only outputs ECDSA keys in plain text form when key generation service is requested by the calling application. This document may be reproduced and distributed only in its original entirely without revision.
24 of 35
| Name | Description | Persistence Type | |||
|---|---|---|---|---|---|
| RAM | The module stores ephemeral keys/SSPs in RAM provided by the operational environment. They are received for use or generated by the module only at the command of the calling application. The operating system protects all keys/SSPs through the memory separation and protection mechanisms. No process other than the module itself can access the keys/SSPs in its process’ memory. | dynamic |
Table 16 - Storage Areas Keys and SSPs are explicitly zeroised when the appropriate context object is destroyed or when the system is powered down. Input and output interfaces are inhibited while zeroisation is performed. This document may be reproduced and distributed only in its original entirely without revision.
25 of 35
| Algorithm | Test Properties | Test Method | Type | Indicator | Details | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| HMAC-SHA-256 | 112-bit key | Message Authentication | Softwar e Integrity | Module successful execution | The HMAC value of the runtime image is recalculated and compared with the stored HMAC value pre-computed at compilation time |
| Algorithm | Test Properties | Test Method | Type | Indicator | Details | Condition |
|---|---|---|---|---|---|---|
| AES-CBC AES-XTS AES-ECB | 128-bit key | KAT | CAST | Module becomes operational | Encryption | Test runs at Power-on before the integrity test |
| AES-CBC AES-ECB | 128-bit key | KAT | CAST | Module becomes operational | Decryption | Test runs at Power-on before the integrity test |
| AES-CCM | 128-bit key | KAT | CAST | Module becomes operational | Authenticated encryption | Test runs at Power-on before the integrity test |
| AES-CCM AES-GCM | 128-bit key | KAT | CAST | Module becomes operational | Authenticated decryption | Test runs at Power-on before the integrity test |
| CTR_DRBG | AES 128-bit key | KAT | CAST | Module becomes | KAT and Health test per SP800-90Arev1 section | Test runs at Power-on before the integrity |
While the module is executing the self-tests, services are not available, and input and output are inhibited. If the test fails either pre-operational and conditional self-tests, the module reports an error message indicating the cause of the failure and enters the Error State (See section 10.3). The module permits operators to initiate the pre-operational and conditional self-tests on demand and periodic testing of the module by rebooting the system (i.e., power-cycling). The module performs a pre-operational software integrity test automatically when the module is loaded into performed on the runtime image of the Apple corecrypto Module v12.0 [Apple silicon, Kernel, Software, SL1] with HMAC-SHA256 which is an approved integrity technique. Prior to using HMAC-SHA-256, a Conditional Cryptographic Algorithm Self-Tests (CASTs) is performed. Table 17 – Pre-Operational Self-Tests
10.2.1Conditional Cryptographic Algorithm Self-Tests In addition to the pre-operational software integrity test described in Section 10.1, the module runs the CASTs for all cryptographic functions of each approved cryptographic algorithm implemented by the module each time This document may be reproduced and distributed only in its original entirely without revision.
26 of 35
| Algorithm | Test Properties | Test Method | Type | Indicator operational | Details 11.3 | Condition test |
|---|---|---|---|---|---|---|
| HMAC-SHA256 | SHA2-256 | KAT | CAST | Module becomes operational | CAST is performed prior to module’s pre-operational software integrity test | Test runs at Power-on before the integrity test |
| HMAC-SHA-1 | SHA-1 | KAT | CAST | Module becomes operational | MAC | Test runs at Power-on before the integrity test |
| HMAC-SHA-512 | SHA-512 | KAT | CAST | Module becomes operational | MAC | Test runs at Power-on before the integrity test |
| SHA-1 SHA-256 SHA-512 | CAST is covered by higher level HMAC KAT per IG 10.3.B | KAT | CAST | Module becomes operational | Message digest | Test runs at Power-on before the integrity test |
| RSA Signature Generation | 2048-bit modulus with SHA-256 | KAT | CAST | Module becomes operational | Sign | Test runs at Power-on before the integrity test |
| RSA Signature Verification | 2048-bit modulus with SHA-256 | KAT | CAST | Module becomes operational | Verify | Test runs at Power-on before the integrity test |
| ECDSA Signature Generation | P-224 curve with SHA- 224 | KAT | CAST | Module becomes operational | Sign | Test runs at Power-on before the integrity test |
| ECDSA Signature Verification | P-224 curve with SHA- 224 | KAT | CAST | Module becomes operational | Verify | Test runs at Power-on before the integrity test |
Table 18 - Self-Tests 10.2.2Conditional Pairwise Consistency Test The Apple corecrypto Module v12.0 [Apple silicon, Kernel, Software, SL1] generates ECDSA asymmetric key pairs and performs a pair-wise consistency tests on the newly generated key pairs.
If any of the self-tests described in Sections 10.1, 10.2.1 or 10.2.2 fail, the module reports the cause of the error and enters an error state. In the Error State, no cryptographic services are provided, and data output is prohibited. The only method to recover from the error state is to power cycle the device which results in the module being reloaded into memory and reperforming the pre-operational test and the Conditional algorithm self-tests. The module will only enter into the operational state after successfully passing the pre-operational self-test and the conditional self-tests. This document may be reproduced and distributed only in its original entirely without revision.
27 of 35
| State Name | Description | Conditions | Recovery Method | Indicator |
|---|---|---|---|---|
| Error State | The HMAC-SHA-256 value computed over the module did not match the pre-computed value | Pre-operational Software Integrity Test failure | module reset | Error message “FAILED: fipspost_post_integrity” is sent to the caller |
| Error State | The computed value in the invoked Conditional CAST did not match the known value | Conditional CAST failure | module reset | Error message “FAILED:<event>” is sent to the caller (<event> refers to any of the cryptographic functions listed in Table 18 - Self-Tests.) |
| Error State | The signature failed to verify successfully in the Conditional PCT. | Conditional PCT failure | module reset | Error message “CCEC_GENERATE_KEY_CONSISTENCY” returned for ECDSA Key Generation |
Table 19- Error states This document may be reproduced and distributed only in its original entirely without revision.
28 of 35
The module is built into DeviceOS defined in section 2 and delivered with Device OS. There is no standalone delivery of the module as a software library. 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 Device OS. This digital signature-based integrity protection 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 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 13 - 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/CSRC/media/projects/cryptographic-module-validationprogram/documents/entropy/E14_PublicUse.pdf The ESV Public Use Document (PUD) reference for non-physical entropy source is: https://csrc.nist.gov/CSRC/media/projects/cryptographic-module-validationprogram/documents/entropy/E15_PublicUse.pdf 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 Crypto Officer shall consider the following requirements and restrictions when using the module: o AES-GCM internal IV is constructed in compliance with IG C.H scenario
29 of 35
The module secure sanitization is accomplished by first powering the module down, which will zeroize all SSPs within volatile memory. Following the power-down, an uninstall by way of system wipe or system update will zeroize the binary file listed in section 2.9. This document may be reproduced and distributed only in its original entirely without revision.
30 of 35
The module does not claim mitigation of other attacks. This document may be reproduced and distributed only in its original entirely without revision.
31 of 35
Appendix A. Glossary and Abbreviations AES Advanced Encryption Standard CAVP Cryptographic Algorithm Validation Program CAST Cryptographic Algorithm Self-Test CAST5 A symmetric-key 64-bit block cipher with 128-bit key CBC Cipher Block Chaining CCM Counter with Cipher Block Chaining-Message Authentication Code CFB Cipher Feedback CMVP Cryptographic Module Validation Program CSP Critical Security Parameter CTR Counter Mode DRBG Deterministic Random Bit Generator ECB Electronic Code Book ESVP Entropy Source Validation Program FIPS Federal Information Processing Standards Publication GCM Galois Counter Mode HMAC Hash Message Authentication Code KAT Known Answer Test KDF Key Derivation Function KEXT Kernel Extension KW AES Key Wrap MAC Message Authentication Code KPI Kernel Programming Interface NIST National Institute of Science and Technology OFB Output Feedback PAA Processor Algorithm Acceleration PKG Key-Pair Generation PKV Public Key Validation PSS Probabilistic Signature Scheme PUD Public Use Document RSA Rivest, Shamir, Addleman SHA Secure Hash Algorithm SHS Secure Hash Standard TOEPP Tested Operational Environment Physical Perimeter XTS XEX-based Tweaked-codebook mode with cipher text Stealing This document may be reproduced and distributed only in its original entirely without revision.
32 of 35
| 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 August 2023 https://csrc.nist.gov/Projects/cryptographic-module-validation-program/fips-140-3-ig-announcements |
| FIPS140-3_MM | CMVP FIPS 140-3 Draft Management Manual https://csrc.nist.gov/CSRC/media/Projects/cryptographic-module-validation-program/documents/fips%20140- 3/Draft%20FIPS-140-3-CMVP%20Management%20Manual%2009-18-2020.pdf |
| SP 800-140 | FIPS 140-3 Derived Test Requirements (DTR) https://csrc.nist.gov/publications/detail/sp/800-140/final |
| SP 800-140A | CMVP Documentation Requirements https://csrc.nist.gov/publications/detail/sp/800-140a/final |
| SP 800-140B | CMVP Security Policy Requirements https://csrc.nist.gov/publications/detail/sp/800-140b/final |
| SP 800-140C | CMVP Approved Security Functions https://csrc.nist.gov/publications/detail/sp/800-140c/final |
| SP 800-140D | CMVP Approved Sensitive Security Parameter Generation and Establishment Methods https://csrc.nist.gov/publications/detail/sp/800-140d/final |
| SP 800-140E | CMVP Approved Authentication Mechanisms https://csrc.nist.gov/publications/detail/sp/800-140e/final |
| SP 800-140F | CMVP Approved Non-Invasive Attack Mitigation Test Metrics https://csrc.nist.gov/publications/detail/sp/800- 140f/final |
| FIPS180-4 | Secure Hash Standard (SHS) March 2012 http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf |
| FIPS186-4 | Digital Signature Standard (DSS) July 2013 http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf |
| 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 This document may be reproduced and distributed only in its original entirely without revision. 33 of 35 |
| 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 |
| SP800-56Cr2 | Recommendation for Key-Derivation Methods in Key-Establishment Schemes August 2020 https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf |
| SP800-57 | NIST Special Publication 800-57 Part 1 Revision 5 - Recommendation for Key Management Part 1: General May 2020 https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r5.pdf |
| SP800-67 | NIST Special Publication 800-67 Revision 1 - Recommendation for the Triple Data Encryption Algorithm (TDEA) Block Cipher January 2012 http://csrc.nist.gov/publications/nistpubs/800-67-Rev1/SP-800-67-Rev1.pdf |
| SP800-90Ar1 | NIST Special Publication 800-90A - Revision 1 - Recommendation for Random Number Generation Using Deterministic Random Bit Generators June 2015 http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90Ar1.pdf |
| SP800-90B | NIST Special Publication 800-90B - Recommendation for the Entropy Sources Used for Random Bit Generation January 2018 https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90B.pdf |
| SP800-108 | 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://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-131Ar2.pdf |
| SP800-133r2 | Recommendation for Cryptographic Key Generation June 2020 https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-133r2.pdf This document may be reproduced and distributed only in its original entirely without revision. 34 of 35 |
SP800-135 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 platform certifications Apple Platform Certifications https://support.apple.com/guide/certifications/welcome/web This document may be reproduced and distributed only in its original entirely without revision.
35 of 35