All modules
CMVP Validated Module · FIPS 140-3 Security Policy

Apple corecrypto Module v13.0 [Intel, User, Software, SL1]

Certificate#4948StandardFIPS 140-3Level1TypeSoftwareEmbodimentMulti-Chip Stand AloneStatusHistoricalVendorApple Inc.
Medium review priority  ·  no TCB surface named  ·  last validated 18 months ago. How this is derived →

Certificate

StandardFIPS 140-3
Overall level1
Module typeSoftware
EmbodimentMulti-Chip Stand Alone
StatusHistorical
CaveatInterim validation. When operated in approved mode
VendorApple Inc.

Approved Algorithms (158)

AlgorithmACVP Cert
AES-CBCA3501
AES-CBCA3502
AES-CBCA3503
AES-CBCA3504
AES-CBCA3508
AES-CBCA3509
AES-CCMA3503
AES-CCMA3504
AES-CCMA3509
AES-CCMA3510
AES-CCMA3511
AES-CFB128A3503
AES-CFB128A3504
AES-CFB128A3509
AES-CFB8A3503
AES-CFB8A3504
AES-CFB8A3509
AES-CMACA3509
AES-CTRA3503
AES-CTRA3504
AES-CTRA3509
AES-CTRA3510
AES-CTRA3511
AES-ECBA3501
AES-ECBA3502
AES-ECBA3503
AES-ECBA3504
AES-ECBA3509
AES-ECBA3510
AES-ECBA3511
AES-GCMA3503
AES-GCMA3504
AES-GCMA3509
AES-GCMA3510
AES-GCMA3511
AES-KWA3503
AES-KWA3504
AES-KWA3509
AES-OFBA3503
AES-OFBA3504
AES-OFBA3509
AES-XTS Testing Revision 2.0A3501
AES-XTS Testing Revision 2.0A3502
AES-XTS Testing Revision 2.0A3503
AES-XTS Testing Revision 2.0A3504
AES-XTS Testing Revision 2.0A3509
Counter DRBGA3503
Counter DRBGA3504
Counter DRBGA3509
Counter DRBGA3510
Counter DRBGA3511
ECDSA KeyGen (FIPS186-4)A3505
ECDSA KeyGen (FIPS186-4)A3506
ECDSA KeyGen (FIPS186-4)A3507
ECDSA KeyGen (FIPS186-4)A3509
ECDSA KeyVer (FIPS186-4)A3505
ECDSA KeyVer (FIPS186-4)A3506
ECDSA KeyVer (FIPS186-4)A3507
ECDSA KeyVer (FIPS186-4)A3509
ECDSA SigGen (FIPS186-4)A3505
ECDSA SigGen (FIPS186-4)A3506
ECDSA SigGen (FIPS186-4)A3507
ECDSA SigGen (FIPS186-4)A3509
ECDSA SigVer (FIPS186-4)A3505
ECDSA SigVer (FIPS186-4)A3506
ECDSA SigVer (FIPS186-4)A3507
ECDSA SigVer (FIPS186-4)A3509
HMAC DRBGA3505
HMAC DRBGA3506
HMAC DRBGA3507
HMAC DRBGA3509
HMAC-SHA-1A3505
HMAC-SHA-1A3506
HMAC-SHA-1A3507
HMAC-SHA-1A3509
HMAC-SHA-1A3512
HMAC-SHA2-224A3505
HMAC-SHA2-224A3506
HMAC-SHA2-224A3507
HMAC-SHA2-224A3509
HMAC-SHA2-224A3512
HMAC-SHA2-256A3505
HMAC-SHA2-256A3506
HMAC-SHA2-256A3507
HMAC-SHA2-256A3509
HMAC-SHA2-256A3512
HMAC-SHA2-384A3505
HMAC-SHA2-384A3506
HMAC-SHA2-384A3507
HMAC-SHA2-384A3509
HMAC-SHA2-384A3512
HMAC-SHA2-512A3505
HMAC-SHA2-512A3506
HMAC-SHA2-512A3507
HMAC-SHA2-512A3509
HMAC-SHA2-512A3512
HMAC-SHA2-512/256A3505
HMAC-SHA2-512/256A3506
HMAC-SHA2-512/256A3507
HMAC-SHA2-512/256A3509
KAS-ECC-SSC Sp800-56Ar3A3509
KAS-FFC-SSC Sp800-56Ar3A3509
KDF SP800-108A3505
KDF SP800-108A3505
KDF SP800-108A3506
KDF SP800-108A3506
KDF SP800-108A3507
KDF SP800-108A3507
KDF SP800-108A3509
KDF SP800-108A3509
KDF SP800-108A3509
PBKDFA3505
PBKDFA3506
PBKDFA3507
PBKDFA3509
RSA KeyGen (FIPS186-4)A3505
RSA KeyGen (FIPS186-4)A3506
RSA KeyGen (FIPS186-4)A3507
RSA KeyGen (FIPS186-4)A3509
RSA SigGen (FIPS186-4)A3505
RSA SigGen (FIPS186-4)A3506
RSA SigGen (FIPS186-4)A3507
RSA SigGen (FIPS186-4)A3509
RSA SigVer (FIPS186-4)A3505
RSA SigVer (FIPS186-4)A3506
RSA SigVer (FIPS186-4)A3507
RSA SigVer (FIPS186-4)A3509
Safe Primes Key GenerationA3509
SHA-1A3505
SHA-1A3506
SHA-1A3507
SHA-1A3509
SHA-1A3512
SHA2-224A3505
SHA2-224A3506
SHA2-224A3507
SHA2-224A3509
SHA2-224A3512
SHA2-256A3505
SHA2-256A3506
SHA2-256A3507
SHA2-256A3509
SHA2-256A3512
SHA2-384A3505
SHA2-384A3506
SHA2-384A3507
SHA2-384A3509
SHA2-384A3512
SHA2-512A3505
SHA2-512A3506
SHA2-512A3507
SHA2-512A3509
SHA2-512A3512
SHA2-512/256A3505
SHA2-512/256A3506
SHA2-512/256A3507
SHA2-512/256A3509
TDES-ECBA3509

Derived Review-Risk Graph (review prompts, not findings)

flowchart LR
  %% Deterministic review-risk graph for Apple corecrypto Module v13.0 [Intel, User, 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>Firmware Load</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>TLS<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;
Underlying clues
flowchart LR
  %% Deterministic clue tier for Apple corecrypto Module v13.0 [Intel, User, 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>Firmware Load</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>TLS<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;

Security Policy, page by page

Page 1

Apple Inc. Apple corecrypto Module v13.0 [Intel, User, Software, SL1] Document Version 2.0 January 2025 Prepared by: Lightship Security Inc. 1101-150 Isabella Street, Ottawa, ON, K1S 1V7 www.lightshipsec.com This document may be reproduced and distributed only in its original entirety without revision.

Page 2

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 entirety without revision.

Page 3

Contents This document may be reproduced and distributed only in its original entirety without revision.

Page 4

Tables Table 5 – Non-Approved Algorithms Allowed in the Approved Mode of Operation with No Security Claimed 10 This document may be reproduced and distributed only in its original entirety without revision.

Page 5
SectionFIPS 140-3 Section TitleSecurity Level
1General1
2Cryptographic module specification1
3Cryptographic module interfaces1
4Roles, services, and authentication1
5Software/Firmware security1
6Operational environment1
7Physical securityN/A
8Non-invasive securityN/A
9Sensitive security parameter management1
10Self-tests1
11Life-cycle assurance1
12Mitigation of other attacksN/A

This document is the non-proprietary FIPS 140-3 Security Policy for Apple corecrypto Module v13.0 [Intel, User, 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 The Module has an overall security level of 1. This document may be reproduced and distributed only in its original entirety without revision.

Page 6
#Operating SystemHardware PlatformProcessorPAA/Acceleration
1macOS Ventura v13MacBook Air (2022)Intel i5-8210Y (Amber Lake)PAA
2macOS Ventura v13MacBook Air (2022)Intel i7-1060NG7 (Ice Lake)PAA
3macOS Ventura v13MacBook Pro (2022)Intel i7-8700B (Coffee Lake)PAA
4macOS Ventura v13iMac (2022)Intel i7-10700K (Comet Lake)PAA
5macOS Ventura v13MacBook Pro (2022)Intel i9-9880H (Coffee Lake)PAA
6macOS Ventura v13iMac Pro (2022)Xeon W-2140B (SkyLake)PAA
7macOS Ventura v13Mac Pro (2022)Xeon W-3223 (Cascade Lake)PAA
8macOS Ventura v13Mac Pro (2022)Intel i5-8257U (Coffee Lake)PAA
9macOS Ventura v13MacBook Air (2022)Intel i5-8210Y (Amber Lake)No
10macOS Ventura v13MacBook Air (2022)Intel i7-1060NG7 (Ice Lake)No
11macOS Ventura v13MacBook Pro (2022)Intel i7-8700B (Coffee Lake)No
12macOS Ventura v13iMac (2022)Intel i7-10700K (Comet Lake)No
13macOS Ventura v13MacBook Pro (2022)Intel i9-9880H (Coffee Lake)No
14macOS Ventura v13iMac Pro (2022)Xeon W-2140B (SkyLake)No
15macOS Ventura v13Mac Pro (2022)Xeon W-3223 (Cascade Lake)No
16macOS Ventura v13Mac Pro (2022)Intel i5-8257U (Coffee Lake)No
#Operating SystemHardware Platform
1macOS Ventura v13MacBook Pro - i5 (Ice Lake), 2021, 2020
2macOS Ventura v13MacBook Pro - i5 (Coffee Lake), 2021, 2020, 2019, 2018
3macOS Ventura v13MacBook Pro - i7 (Amber Lake), 2021, 2019, 2018
4macOS Ventura v13MacBook Pro - i7 (Coffee Lake), 2021, 2020, 2019, 2018
5macOS Ventura v13MacBook Pro - i7 (Ice Lake), 2021, 2020
6macOS Ventura v13MacBook Pro - i9 (Coffee Lake), 2021, 2019, 2018
7macOS Ventura v13MacBook Air - i5 (Ice Lake), 2021, 2020
8macOS Ventura v13MacBook Air - i7 (Ice Lake), 2021, 2020
9macOS Ventura v13MacBook Air - i5 (Amber Lake), 2021, 2019, 2018
10macOS Ventura v13MacBook Air - i7 (Amber Lake), 2021, 2018
11macOS Ventura v13Mac mini - i5 (Coffee Lake), 2021, 2018

2. Cryptographic Module Specification The Apple corecrypto Module v13.0 [Intel, User, 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 13 written as v13.0. The module provides implementations of low-level cryptographic primitives to the Host OS's (macOS Ventura v13) Security Framework and Common Crypto. The module has been tested by Lightship Security, Inc. CST lab on the following platforms with and without Table 2 – Tested operational environments. In addition to the platforms listed above, Apple Inc. has also tested the module on the following platforms and claims vendor affirmation on them: This document may be reproduced and distributed only in its original entirety without revision.

Page 7
12macOS Ventura v13Mac mini - i7 (Coffee Lake), 2021, 2018
13macOS Ventura v13iMac - i5 (Comet Lake), 2021, 2020
14macOS Ventura v13iMac - i7 (Comet Lake), 2021, 2020
15macOS Ventura v13iMac - i9 (Comet Lake), 2021, 2020
16macOS Ventura v13iMac - i5 (Coffee Lake), 2021, 2019
17macOS Ventura v13iMac - i7 (Coffee Lake), 2021, 2019
18macOS Ventura v13iMac - i9 (Coffee Lake), 2021, 2019
19macOS Ventura v13iMac - i9 (Comet Lake), 2022
CAVP CertAlgorithm and StandardMode / MethodDescription / Key Size / Key StrengthUse / Function
A3501 (asm_aesni) A3502 (asm_x86) A3503 (c_aesni) A3504 (c_asm) A3508 (c_glad) A3509 (c_ltc)AES [FIPS 197] [SP 800-38A]CBC128, 192, 256Symmetric encryption and decryption
A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc)AES [FIPS 197] [SP 800-38A]CFB8, CFB128128, 192, 256Symmetric encryption and decryption
A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc) A3510 (vng_asm) A3511 (vng_aesni)AES [FIPS 197] [SP 800-38C]CCM128, 192, 256Authenticated encryption and decryption
A3509 (c_ltc)AES [FIPS 197] [SP 800-38C]CMAC128, 192, 256Message authentication
A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc) A3510 (vng_asm) A3511 (vng_aesni)AES [FIPS 197] [SP 800-38A]CTR128, 192, 256Symmetric encryption and decryption
A3501 (asm_aesni) A3502 (asm_x86) A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc)AES [FIPS 197] [SP 800-38A]ECB128, 192, 256Symmetric encryption and decryption

Table 3

Page 8
A3510 (vng_asm) A3511 (vng_aesni)
A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc) A3510 (vng_asm) A3511 (vng_aesni)AES [FIPS 197] [SP 800-38D]GCM128, 192, 256Authenticated encryption and decryption
A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc)AES [FIPS 197] [SP 800-38F]KW128, 192, 256Key wrapping
A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc)AES [FIPS 197] [SP 800-38A]OFB128, 192, 256Symmetric encryption and decryption
A3501 (asm_aesni) A3502 (asm_x86) A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc)XTS-AES [FIPS 197] [SP 800-38E]XTS128, 256Symmetric encryption and decryption on storage devices
A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc) A3510 (vng_asm) A3511 (vng_aesni)CTR_DRBG [SP 800-90Ar1]AES-CTRKey Length/ Key Strength: 128, 256 Derivation Function Enabled: YesRandom Number Generation
A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)ECDSA [FIPS 186-4]KeyGen, KeyVer, SigGen, SigVerCurves: P-224, P-256, P-384, P-521 Key Strength: from 112 to 256Digital signatures and asymmetric key generation and verification
Vendor AffirmedCKGKey Pair Generation (CKG) using method in Sections 4 and 5.1 in [SP 800-133r2]-Cryptographic key generation
A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc) A3512 (vng_intel)HMAC [FIPS 198-1]HMAC-SHA-1 HMAC-SHA2-224 HMAC-SHA2-256 HMAC-SHA2-384 HMAC-SHA2-512112 bits or greaterMessage authentication
A3505 (c_avx) A3506 (c_avx2) A3509 (c_ltc) A3507 (c_sse3)HMAC [FIPS 198-1]HMAC-SHA2-512/256512Message authentication
A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)HMAC_DRBG [SP 800-90Ar1]SHA-1 SHA2-224 SHA2-256 SHA2-384 SHA2-512112 bits or greaterRandom Number Generation
A3509 (c_ltc)KAS-FFC-SSC [SP 800-56Ar3]1Scheme: dhEphem KAS Role: initiator, responderDomain Parameter Generation Methods: MODP-2048, MODP- 3072, MODP-4096, MODP-6144, MODP- 8192 Key Strength: from 112 to 200Shared Secret Computation
A3509 (c_ltc)KAS-ECC-SSC [SP 800-56Ar3]2Scheme: ephemeral UnifiedDomain Parameter Generation Methods:Shared Secret Computation

The TLS and IPSec/IKE protocols have not been reviewed or tested by the CAVP and CMVP. The TLS and IPSec/IKE protocols have not been reviewed or tested by the CAVP and CMVP. This document may be reproduced and distributed only in its original entirety without revision.

Page 9
KAS Role: initiator, responderP-224, P-256, P-384, P-521 Key Strength: from 112 to 256
A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)KBKDF [SP 800-108]Counter Feedback HMAC-SHA-1 HMAC-SHA2-224 HMAC-SHA2-256 HMAC-SHA2-384 HMAC-SHA2-512Supported Lengths: 8-4096 Increment 8 Fixed Data Order: Before Fixed Data Counter Length: 32Key Derivation
A3509 (c_ltc)KBKDF [SP 800-108]Counter CMAC-AES128 CMAC-AES192 CMAC-AES256Supported Lengths: 8-4096 Increment 8 Fixed Data Order: Before Fixed Data Counter Length: 8, 16, 24, 32Key Derivation
A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)PBKDF [SP 800-132]HMAC with: SHA-1, SHA- 224, SHA-256, SHA-384, SHA-512Password length: 8- 128 bytes Increment 1 Salt Length: 128- 4096 Increment 8 Iteration Count: 10- 1000 Increment 1Key Derivation
A3509 (c_ltc)Safe Primes Key GenerationKeyGen for DHSafe Prime Groups: MODP-2048, MODP- 3072, MODP-4096, MODP-6144, MODP- 8192 Key Strength: from 112 to 200Key Generation
A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)RSA [FIPS 186-4]KeyGen (ANSI X9.31) SigGen (PKCS#1 v1.5) and (PKCS PSS) SigVer (PKCS#1 v1.5) and (PKCS PSS)KeyGen: 2048, 3072, 4096 SigGen: 2048, 3072, 4096 SigVer: 1024 (legacy use), 2048, 3072, 4096Digital signatures and asymmetric key generation and verification
A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc) A3512 (vng_intel)SHS [FIPS 180-4]SHA-1 SHA2-224 SHA2-256 SHA2-384 SHA2-512160 224 256 384 512Message digest
A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)SHS [FIPS 180-4]SHA2-512/256512Message digest
A3509 (c_ltc)Triple-DESECBKeying Option: 1Symmetric decryption
AlgorithmCaveatUse/Function
MD5Allowed in Approved mode with no security claimed per IG 2.4.A Digest Size: 128-bitMessage Digest (used as part of the TLS v1.0, v1.1 key establishment scheme only)

Table 4 – Approved algorithms The table below list non-Approved but Allowed algorithm in Approved mode of operation when used as part of an approved key transport scheme where no security is provided by the algorithm. This document may be reproduced and distributed only in its original entirety without revision.

Page 10
AlgorithmUse / Function
RSAANSI X9.31 Key Pair Generation Key Size < 2048 PKCS#1 v1.5 and PSS Signature Generation Key Size < 2048 PKCS#1 v1.5 and PSS Signature Verification Key Size< 1024
RSAKey Encapsulation: OAEP, PKCS#1 v1.5 and PSS schemes
Diffie HellmanShared Secret Computation using key size < 2048
EC Diffie HellmanShared Secret Computation using curves < P-224
X25519Key Agreement Key Generation
Ed25519Key Generation Signature Generation Signature Verification
ANSI X9.63 KDFHash based Key Derivation Function
RFC6637Key Derivation Function
HKDF [SP 800-56C]Key Derivation Function
DESEncryption / Decryption, Key Size: 56-bits
CAST5Encryption / Decryption, Key Sizes: 40 to 128-bits in 8-bit increments
RC4Encryption / Decryption, Key Sizes: 8 to 4096-bits
RC2Encryption / Decryption Key Sizes 8 to 1024-bits
MD2Message Digest, Digest size 128-bit
MD4Message Digest, Digest size 128-bit
RIPEMDMessage Digest, Digest size 160-bits
ECDSAKey-pair generation: Curve P-192 Public key validation: 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)Encryption / Decryption
BlowfishEncryption / Decryption
OMAC (One-Key CBC MAC)MAC generation
Triple-DES [SP 800-67r2]3CBC, ECB: Encryption/Decryption Note: The module does not enforce the limit of 216 encryptions with the same Triple-DES key, as required by FIPS 140-3 IG C.G.

Table 5

Page 11

The Apple corecrypto Module v13.0 [Inter, User, Software, SL1] executes within the user space of the computing platforms and operating systems listed in Table 2

Page 12
Physical portLogical interfaceData that passes over port / interface
N/AData InputData inputs are provided in the variables passed in the API and callable service invocations, generally through caller-supplied buffers.
N/AData OutputData outputs are provided in the variables passed in the API and callable service invocations, generally through caller-supplied buffers.
N/AControl InputControl inputs which control the mode of the module are provided through dedicated parameters.
N/AControl OutputNot Applicable4
N/AStatus OutputStatus output is provided in return codes and through messages. Documentation for each API 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.

3. Cryptographic Module Interfaces As a software-only module, the module does not have physical ports. For the purpose of the FIPS 140-3 validation, the physical ports are interpreted to be the physical ports of the hardware platform on which it runs. (APIs). In detail these interfaces are described in the table below. Table 7 – Ports and interfaces The module is optimized for library use within the macOS user space and does not contain any terminating assertions or exceptions. It is implemented as a macOS dynamically loadable library. After the dynamically loadable library is loaded, its cryptographic functions are made available to the macOS application. Any internal error detected by the module is reflected back to the caller with an appropriate return code. The calling macOS application must examine the return code and act accordingly. The module communicates any error status synchronously using its documented return codes, thus indicating the module's status. It is the responsibility of the caller to handle exceptional conditions in a FIPS 140-3 appropriate manner. Caller-induced or internal errors do not reveal any sensitive material to callers. Cryptographic bypass The Module does not output control information, and thus has no specified control output interface. This document may be reproduced and distributed only in its original entirety without revision.

Page 13
RoleServiceInputOutput
Crypto-Officer (CO)Symmetric encryptionAES Key Plain text dataCipher text
Crypto-Officer (CO)Symmetric decryptionAES Key Cipher text dataPlain text
Crypto-Officer (CO)Key wrappingKey-encryption-key Key to be wrappedWrapped key
Crypto-Officer (CO)Key unwrappingKey-encryption-key Wrapped keyUnwrapped key
Crypto-Officer (CO)Secure HashingMessageMessage digest
Crypto-Officer (CO)MD5 (non-approved but allowed for TLS 1.0/1.1) Hash GenerationMessageMessage digest
Crypto-Officer (CO)Message Authentication Code (MAC) GenerationMessage, MAC key, MAC algorithmMessage Authentication Code
Crypto-Officer (CO)Message Authentication Code (MAC) VerificationMAC, message, HMAC key, MAC algorithmpass/fail result
Crypto-Officer (CO)Generate asymmetric key pairRandom numbers, domain parametersPublic/private key pair
Crypto-Officer (CO)Generate digital signatureprivate key, message, hash functionDigital signature
Crypto-Officer (CO)Verify digital signaturepublic keyTrue or False
Crypto-Officer (CO)Generate random numberentropy, seed, V and key valuesrandom bit-string
Crypto-Officer (CO)Shared Secret ComputationDomain parameters Possessed key pair Imported public keyShared Secret
Crypto-Officer (CO)Derive key via KBKDFKey Derivation KeyDerived key
Crypto-Officer (CO)Derive key via PBKDFPasswordDerived key
Crypto-Officer (CO)Zeroise symmetric keysHandler of symmetric crypto function contextReleased memory space
Crypto-Officer (CO)Zeroise asymmetric keysHandler of asymmetric crypto function contextReleased memory space
Crypto-Officer (CO)Zeroise context for key agreement shared secretsHandler of key agreement crypto function contextReleased memory space
Crypto-Officer (CO)Zeroise hashHandler of hash contextReleased memory space
Crypto-Officer (CO)Self-testInstantiationStatus
Crypto-Officer (CO)Show statusAPI invocationOperational / error status
Crypto-Officer (CO)Show module infoAPI invocationModule base name Module version

The Module supports a single instance of one authorized role, designated as the Crypto-Officer. No support is provided for multiple concurrent operators or a Maintenance Operator The table below lists the services available to the Crypto Officer: This document may be reproduced and distributed only in its original entirety without revision.

Page 14
ServiceDescriptionApproved Security FunctionsKeys and/or SSPsRolesAccess rights to Keys and/or SSPsIndicator
ECDSA key pair generationGenerate a public/private key pairECDSA5 CKGECDSA key pairCOGR1
ECDSA signature generationGenerate a digital signatureECDSAECDSA private keyCORE1
ECDSA signature verificationVerify a digital signatureECDSAECDSA public keyCORWE1
Derive key via KBKDFDerive keysKBKDFKBKDF Key derivation key KBKDF Derived keyCOWE GRE1
Key wrappingPerform key wrappingAES-KWAES Key wrapping keyCOWE1
Key unwrappingPerform key unwrappingAES-KWAES Key wrapping keyCOWE1
HashingCompute a message digestSHA-1 SHA2-224 SHA2-256 SHA2-384 SHA2-512 SHA2-512/256N/ACON/A1
MD5 (non- approved but allowed for TLSUsed in the context of TLS in conjunctionMessage Digest: MD5N/ACON/A1

Table 8 – Roles, Services, Input and Output

4.1 Authentication

FIPS 140-3 does not require an authentication mechanism for level 1 modules. Therefore, the module does not implement an authentication mechanism for Crypto Officer. The Crypto Officer role is authorized to access all services provided by the module (see Table 9

4.2 Services

The module implements a dedicated API function to indicate if a requested service utilizes an approved security function. For services listed in Table 9 – Approved services, the indicator function returns

  1. For services listed in Table 10 – Non-approved services, the indicator function returns
  2. The table below lists all approved services that can be used in the approved mode of operation. The 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 In accordance with Section 4 and 5.1 of NIST [SP 800-133r2] (CKG), the module uses its approved DRBG to generate random bits and seeds used to generate asymmetric keys. Each generated seed is an unmodified output from the DRBG. This document may be reproduced and distributed only in its original entirety without revision.
Page 15
1.0/1.1) Hash Generationwith the approved algorithm SHA-1
Symmetric encryptionEncrypt plaintext dataAES-CBC, AES-ECB, AES-CFB128, AES- CFB8, AES-OFB, AES-CTR, AES-XTS, AES-GCM, AES-CCMAES KeyCOWE1
Symmetric decryptionDecrypt ciphertext dataAES-CBC, AES-ECB, AES-CFB128, AES- CFB8, AES-OFB, AES-CTR, AES-XTS, AES-GCM, AES-CCMAES KeyCOWE1
MAC GenerationCompute a message authentication codeHMACHMAC keyCOWE1
MAC VerificationVerify a message authentication codeHMACHMAC keyCOWE1
RSA key pair generationGenerate a public/private key pairRSA6 CKGRSA key pairCOGR1
RSA signature generationGenerate a digital signatureRSARSA private keyCORE1
RSA signature verificationVerify a digital signatureRSARSA public keyCORWE1
Random number generationGenerate a random numberCTR_DRBGDRBG entropy input DRBG seed DRBG 'V' value DRBG 'Key' valueCOInput: WE Seed: GE V: GE Key: GE1
Derive Key via PBKDFDerive key from passwordKey Derivation: PBKDFPBKDF password PBKDF derived keyCOWE GRE1
Safe primes key generationGenerate a keypair for a requested 'safe' domain parameterKey Pair GenerationAsymmetric Diffie Hellman key pairCOGRW1
Diffie-Hellman Shared Secret Computationgenerate a shared secretKAS-FFC-SSCAsymmetric keys (DH key pair) and shared secretCOGRWE1
EC Diffie-Hellman Shared Secret Computationgenerate a shared secretKAS-ECC-SSCAsymmetric keys (EC key pair) and shared secretCOGRWE1
Zeroise symmetric keysRelease all resources of symmetric crypto function contextN/AAES Key KBKDF Key derivation key KBKDF Derived key PBKDF password PBKDF derived keyCOZ1
Zeroise hashRelease all resources of hash contextN/AHMAC keyCOZ1
Zeroise context for Diffie- Hellman and EC Diffie-HellmanRelease of all resources of key agreement crypto function contextN/AAsymmetric keys (ECDH/DH) and shared secretCOZ1
Zeroise asymmetric keysRelease of all resources ofN/ARSA key pair ECDSA key pairCOZ1

In accordance with Section 4 and 5.1 of NIST [SP 800-133r2] (CKG), the module uses its approved DRBG to generate random bits and seeds used to generate asymmetric keys. Each generated seed is an unmodified output from the DRBG. This document may be reproduced and distributed only in its original entirety without revision.

Page 16
asymmetric crypto function context
Self-testPerform pre- operational and algorithm self-testN/ACON/A1
Show statusReturn module statusN/ACON/AN/A
Show module infoReturn module name and versioning informationN/ACON/AN/A
ServiceDescriptionAlgorithms AccessedRoleIndicator
Triple-DES encryption / decryptionModule does not meet FIPS 140-3 IG C.G. Input for Encryption: key and plain text Output for Encryption: cipher text Input for Decryption: key and cipher text Output for Decryption: plain textTriple-DESCO0
RSA Key EncapsulationRSA encrypt/decrypt. Input (RSA encrypt): RSA public key, key to be wrapped Output (RSA encrypt): wrapped key Input (RSA decrypt): RSA private key, key to be unwrapped Output (RSA encrypt): plaintext keyRSA encrypt/decryptCO0
RSA Key-pair GenerationANSI X9.31 Key-pair Generation Key Size < 2048 Input: key size Output: generated key pairRSA KeyGenCO0
RSA Signature GenerationPKCS#1 v1.5 and PSS Signature Generation Key Size < 2048 Input: RSA private key, message Output: signatureRSA Signature GenerationCO0
RSA Signature VerificationPKCS#1 v1.5 and PSS Signature Verification Key Size < 1024 Input: RSA public key, signature Output: true or falseRSA Signature VerificationCO0
Diffie Hellman Shared Secret ComputationFor key sizes < 2048 Input: peer public key and own private key Output: shared secretKAS-FFC SSCCO0
EC Diffie Hellman Shared Secret ComputationFor curve sizes < P-224 Input: peer public key and own private key Output: shared secretKAS-ECC SSCCO0
ECDSA Key-pair Generation (PKG) and ECDSA Key Validation (PKV)ECDSA PKG and PKV using curve P-192 Input for PKG: curve size (P-192) Output: generated (P-192) private and public key pair Input for PKV: public key Output: True or FalseECDSA Key Generation, ECDSA Key ValidationCO0
ECDSA Signature GenerationECDSA Signature Generation using curve P-192 Input: (P-192) private key and message Output: signatureECDSA Signature GenerationCO0

Table 9 – Approved services The table below lists all non-Approved services that can only be used in the non-Approved mode of operation. This document may be reproduced and distributed only in its original entirety without revision.

Page 17
ECDSA Signature VerificationECDSA Signature Verification using curve P-192 Input: (P-192) public key and signature Output: True or FalseECDSA Signature VerificationCO0
ECDSA Key Pair Generation for compact point representation of pointsKey Pair Generation for compact point representation of points Input: key size Output: generated private and public key pairECDSA Key GenerationCO0
Ed25519/X25519 Key GenerationEd25519 Key Generation Input: none Output: generated Ed25519/Curve25519 private and public key pairEd25519 Key Generation X25519 Key GenerationCO0
Ed25519 Signature GenerationEd25519 Signature Generation over Curve25519 Input: (Ed25519) private key and message Output: signatureEd25519 Signature GenerationCO0
Ed25519 Signature VerificationEdDSA Signature Verification over Ed25519 Input: (Ed25519) public key and signature Output: True or FalseEd25519 Signature VerificationCO0
X25519 Key AgreementX25519 Key Agreement Input: peer public key and own private key Output: shared secretX25519 Key AgreementCO0
ECIESElliptic Curve encrypt/ decrypt Input for encryption: peer public key, plaintext Output for encryption: public key, ciphertext (with authentication tag) Input for decryption: authentication tag, ciphertext, own private key Output for decryption: plaintext message or errorECIES Encrypt/DecryptCO0
ANSI X9.63 Key DerivationSHA-1 hash-based Input: key derivation key Output: derived keySHA-1CO0
SP 800-56C Key Derivation (HKDF)SHA-256 hash-based Input: key derivation key Output: derived keySHA-256CO0
RFC6637 Key DerivationSHA hash based Input: key derivation key Output: derived keySHA-256, SHA-512, AES-128, AES-256CO0
OMAC Message Authentication Code Generation and VerificationOne-Key CBC-MAC using 128-bit key For Message Authentication Code Generation Input: message and key Output: message authentication code (MAC) For Message Authentication Code Verification Input: message, key, and MAC Output: True or FalseOMACCO0
Message digest generationMessage digest generation using non-approved algorithms Input: message Output: message digestMD2, MD4, RIPEMDCO0
(other) symmetric encryption / decryptionSymmetric encryption / decryption using non- approved algorithms Input for Encryption: key and plain text Output for Encryption: cipher textBlowfish, CAST5, DES, RC2, RC4CO0

This document may be reproduced and distributed only in its original entirety without revision.

Page 18

Input for Decryption: key and cipher text Output for Decryption: plain text

Table 10 – Non-approved services This document may be reproduced and distributed only in its original entirety without revision.

Page 19
5.1 Integrity Techniques

The Apple corecrypto Module v13.0 [Intel, User, 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-SHA2-256 implemented in the module is used as an 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. In this state the module is not operational.

5.2 On-demand Integrity Test

Integrity tests are performed as part of the Pre-Operational Self-Tests. The software integrity test is automatically executed at power-on. It can also be invoked by self-test service or powering-off and reloading the module. This document may be reproduced and distributed only in its original entirety without revision.

Page 20
6.1 Applicability

The Apple corecrypto Module v13.0 [Intel, User, Software, SL1] operates in a modifiable operational environment per FIPS 140-3 level 1 specifications. The module is supplied as part of macOS, 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 entirety without revision.

Page 21

7. Physical Security The FIPS 140-3 physical security requirements do not apply to the Apple corecrypto Module v13.0 [Intel, User, Software, SL1] since it is a software module. This document may be reproduced and distributed only in its original entirety without revision.

Page 22

8. Non-invasive Security Currently, the ISO/IEC 19790:2012 non-invasive security area is not required by FIPS 140-3 (see NIST SP 800-140F). The requirements of this area are not applicable to the module. This document may be reproduced and distributed only in its original entirety without revision.

Page 23
Key/SSP Name/ TypeStrengthSecurity Function and Cert. NumberGenerati onImport /ExportEstablish- mentStorageZeroisationUse & related keys
AES key128 to 256 bitsAES (CBC, CCM, CFB, CTR, ECB, GCM, OFB, XTS modes) A3501 (asm_aesni) A3502 (asm_x86) A3503 (c_aesni) A3504 (c_asm) A3508 (c_glad) A3509 (c_ltc) A3510 (vng_asm) A3511 (vng_aesni)N/AImported from calling application No exportN/AN/A. The module does not provide persistent keys/SSPs storage.Automatic zeroisation when structure is deallocated or when the system is powered downSymmetric Encryption and Decryption
AES Key wrapping key128 to 256 bitsAES-KW A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc)N/AImported from calling application No exportN/AKey Wrapping and Unwrapping (KTS)
DH public key112 to 200 bitsKAS-FFC-SSC A3509 (c_ltc)The key pairs are generated conformant to [SP 800- 133r2] Section 4 (CKG) using Safe-prime groups MODP groups belonging to (RFC 3526)Imported from or exported to calling applicationN/AKey Agreement
DH private keyExported to calling application. Intermediate keygen values are not outputN/A
DH shared secret112 to 200 bitsInternally generated using [SP 800-56Ar3] DH SSCN/AShared Secret Computation
EC DH public key112 to 256 bitsKAS-ECC-SSC A3509 (c_ltc)The key pairs are generated conformant to [SP 800- 133r2] Section 4 (CKG) using FIPS186-4 Key Generation method, and the random value used in the key generation is generated using [SP 800-90Ar1] DRBGImported from or exported to calling applicationN/AKey Agreement
EC DH private keyExported to calling application. Intermediate keygen values are not outputN/A
ECC CDH shared secret112 to 256 bitsInternally generated via [SP 800- 56Ar3] ECC CDH sharedN/AShared secret computation

9. Sensitive Security Parameter Management 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 entirety without revision.

Page 24
secret computatio n
DRBG entropy input256 bitsRandom Number GenerationN/AImported from entropy sourceN/ARandom Number Generation
DRBG seed, DRBG V, DRBG key256 bitsCTR_DRBG A3503 (c_aesni) A3504 (c_asm) A3509 (c_ltc) A3510 (vng_asm) A3511 (vng_aesni)Internally generated as defined by [SP 800- 90Ar1]N/AN/ARandom Number Generation
ECDSA public key112 – 256 bitsECDSA A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)The key pairs are generated conformant to [SP 800- 133r2] Section 4 (CKG) using FIPS186-4 Key Generation method, and the random value used in the key generation is generated using [SP 800-90Ar1] DRBGImported from or exported to calling applicationN/ASignature verification
ECDSA private keyExported to calling application. Intermediate keygen values are not outputN/ASignature generation
HMAC key>=112 bitsHMAC-SHA-1 HMAC-SHA-2 A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc) A3512 (vng_intel)N/AImported from calling application No exportN/AGenerate and Verify MAC
KBKDF Key derivation keyMin: 112 bitsKBKDF A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)N/AImported from calling application No exportN/AKey Derivation
KBKDF Derived keyMin: 112 bitsKBKDF A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)Generated via KBKDFNo import Exported to calling applicationN/AKey Derivation
RSA public key112 - 150 bitsRSA A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)The key pairs are generated conformant to [SP 800- 133r2] Section 4 (CKG) using FIPS186-4 Key Generation method, and the random value used in the key generation is generated using [SPImported from or exported to calling applicationN/ASignature verification
RSA private keyExported to calling application. Intermediate keygen values are not outputN/ASignature generation

n This document may be reproduced and distributed only in its original entirety without revision.

Page 25
800-90Ar1] DRBG
PBKDF PasswordN/APBKDF A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)N/AImported from calling application No exportN/AKey Derivation
PBKDF derived keyMin: 112 bitsPBKDF A3505 (c_avx) A3506 (c_avx2) A3507 (c_sse3) A3509 (c_ltc)Generated via [SP 800- 132] PBKDFNo Import Export to calling applicationN/AKey Derivation
Entropy sourceMinimum number of bits of entropyDetails
ESV Cert #E14 (physical source) ESV Cert #E110 (non-physical source)256The seed is provided by post-processed entropy data from two entropy sources. The entropy sources are located within the physical perimeter of the module but outside the cryptographic boundary of the module.
9.1 Random Number Generation

A NIST approved deterministic random bit generator based on a block cipher as specified in NIST [SP 80090Ar1] is used. The default Approved DRBG used for random number generation 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-90Ar1], the internal state of CTR_DRBG is the value V and Key. The deterministic random bit generators are seeded by /dev/random. The /dev/random is the User Space interface that extracts random bits from the entropy pool. Two entropy sources (one non-physical entropy source and one physical entropy source) residing within the TOEPP provide the random bits. The output of (seed) and reseeding (reseed). The module also employs a HMAC_DRBG for random number generation. The HMAC_DRBG is only used at the early boot time of macOS kernel for memory randomization. The output of HMAC_DRBG is not used for key generation. Per section 10.1.2.1 of [SP 800-90Ar1], the internal state of HMAC_DRBG is the value V, Key. For both Apple Entropy sources tested in the OEs listed in Table 2, the customer does not have the ability to modify the ES configuration settings (see details in Public Use Document referenced in 3 and 4). The module also performs DRBG health tests according to section 11.3 of [SP 800-90Ar1]. Table 12 – Non-Deterministic Random Number Generation Specification

9.2 Key / SSP Generation

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 keys as per [SP 800-133r2] Section 4 (vendor affirmed), compliant with [FIPS186-4], and using DRBG compliant with [SP 800-90Ar1]. A seed (the random value) used in asymmetric key generation is obtained from [SP 800-90Ar1] DRBG. The key generation service for RSA, Diffie-Hellman and EC key pairs as well as the [SP 800-90Ar1] DRBG have been ACVT tested with algorithm certificates found in Table 4. This document may be reproduced and distributed only in its original entirety without revision.

Page 26

The module also implements the following key derivation functions:

KBKDF key derivation according to [SP 800-108r1] to derive symmetric keys. The module supports both Counter and Feedback modes with HMAC-SHA-1, HMAC-SHA2-224, HMAC-SHA2-256, HMAC-SHA2-384, or HMAC-SHA2-512 as the pseudo-random function (PRF).
PBKDF Key Derivation according to [SP 800-132]. The service returns the key derived from the provided password to the caller. The length of the password used as input to PBKDFv2 shall be at least 8 characters and the worst-case probability of guessing the value is 108 assuming all characters are digits only. The user shall choose the password length and the iteration count in such a way that the combination will make the key derivation computationally intensive. PBKDFv2 is implemented to support the option 1a specified in section 5.4 of [SP 800-132]. The keys derived from [SP 800-132] map to section 4.1 of [SP 800-133r2] as indirect generation from DRBG. The derived keys may only be used in storage applications.
9.3Key / SSP Establishment

The module provides the following SSP establishment related services in the Approved mode:

AES Key Wrapping The module implements a Key Transport Scheme (KTS) using AES-KW compliant to [SP 800-38F]. The SSP establishment methodology provides 128, 192 or 256 bits of encryption strength.
Diffie-Hellman Shared Secret Computation The module provides [SP 800-56Ar3] compliant key establishment according to FIPS 140-3 IG D.F scenario 2 path (1) with DH shared secret computation. The shared secret computation provides between 112 and 200 bits of encryption strength. EC Diffie-Hellman Shared Secret Computation The module provides [SP 800-56Ar3] compliant key establishment according to FIPS 140-3 IG D.F scenario 2 path (1) with ECDH shared secret computation. The shared secret computation provides between 112 and 256 bits of encryption strength.
9.4Key / SSP Import/Export

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. Keys/SSPs are output from the module in plain text form if required by the calling application. The module allows the output of plaintext CSPs (for example: EC/DH/RSA Key Pairs). To prevent inadvertent output of sensitive information, the module performs the following two independent internal actions:

  1. The module will internally request the random number generation service to obtain the random numbers and verify that the service completed without errors.
  2. Once the keys are generated the module will perform the pairwise consistency test and verify that the test is completed without errors. Only after successful completion of both actions, are the generated CSPs output via the API output parameter in plaintext.
9.5 Key / SSP Storage

The Module stores keys/SSPs in volatile memory only. They are received for use or generated by the module only at the command of the calling application. The module does not provide persistent keys/SSPs storage. The module protects all keys/SSPs through the memory separation and protection mechanisms provided by the operating system. No process other than the module itself can access the keys/SSPs in its process memory. This document may be reproduced and distributed only in its original entirety without revision.

Page 27
9.6 Key / SSP Zeroisation

Keys and SSPs are 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 entirety without revision.

Page 28
Algorithm(s)Notes
HMAC-SHA256CAST (KAT) performed prior to module’s integrity test during POSTs
AES implementations selected by the module for the corresponding environment AES-CCM, AES-GCM, AES- XTS, AES-CBC, AES-ECB, AES-KW using 128-bit keySeparate encryption / decryption operations CAST (KAT) are performed
CTR_DRBG and HMAC_DRBGEach DRBG mode tested separately

10. Self-tests This section specifies the pre-operational and conditional self-tests performed by the module. The preoperational and conditional self-tests ensure that the module is not corrupted and that the cryptographic algorithms work as expected. The module does not implement a bypass mode nor security functions critical to the secure operation of the cryptographic module and thus, does not implement either a pre-operational bypass test or pre-operational critical functions test. While the module is executing the self-tests, services are not available and input and output are inhibited. If any pre-operational or conditional self-tests fail, 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 preoperational or conditional self-tests on demand for periodic testing of the module by rebooting the system (i.e., power-cycling).

10.1 Pre-operational Software Integrity Test

The module performs a pre-operational software integrity automatically when the module is loaded into memory (i.e., at power on) before the module transitions to the operational state. A software integrity test is performed on the runtime image of the Apple corecrypto Module v13.0 [Intel, User, Software, SL1] with HMAC-SHA2-256 used to perform the approved integrity technique. Prior to using HMAC-SHA2-256, Conditional Cryptographic Algorithm Self-Test (CAST) is performed. If the CAST on the HMAC-SHA2-256 is successful, the HMAC value of the runtime image is recalculated and compared with the stored HMAC value pre-computed at compilation time.

10.2 Conditional Self-Tests

Conditional self-tests are performed by a cryptographic module when the conditions specified for the following tests occur: Cryptographic Algorithm Self-Test, Pair-Wise Consistency Test. The module does not implement any functions requiring a Software/Firmware Load Test, Manual Entry Test, Conditional Bypass Test nor Conditional Critical Functions Test; therefore, these tests are not performed by The following sub-sections describe the conditional tests supported by the Apple corecrypto Module v13.0 [Intel, User, Software, SL1]. 10.2.1. Conditional Cryptographic Algorithm Self-Tests In addition to the pre-operational software integrity test described in Section 10.1, the Apple corecrypto Module v13.0 [Intel, User, Software, SL1] also runs the Conditional Cryptographic Algorithm Self-Tests (CAST) for all cryptographic functions of each approved cryptographic algorithm implemented by the module during power-up as well. All CASTs are performed prior to the first operational use of the cryptographic algorithm. These tests are detailed in Table 13 – Conditional Cryptographic Algorithm Self-tests below. This document may be reproduced and distributed only in its original entirety without revision.

Page 29
KAT and Health test per NIST [SP 800-90Ar1] Section 11.3
HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-512, AES- CMACCAST (KAT)
SHA-1, SHA-256, SHA-512Covered by high level HMAC CAST
RSA, 2048-bit modulus with SHA-256Separate Signature generation/ verification CAST (KAT) are performed
ECDSA, P-256 curve with SHA-256Separate Signature generation/ verification CAST (KAT) are performed
Diffie-Hellman “Z” computationCAST (KAT))
EC Diffie-Hellman “Z” computationCAST (KAT)
PBKDFCAST (KAT)
KBKDF (counter and feedback modes)CAST (KAT)
Cause of ErrorError indicator
Failed Pre-operational Software Integrity Testprint statement “FAILED: fipspost_post_integrity” to stdout
Failed Conditional CASTprint statement “FAILED:<event>” to stdout (<event> refers to any of the cryptographic functions listed in Table 13 – Conditional Cryptographic Algorithm Self-tests)
Failed Conditional PCTError code “CCEC_GENERATE_KEY_CONSISTENCY” returned for ECDSA and EC DH Error code “CCRSA_GENERATE_KEY_CONSISTENCY” returned for RSA Error code “CCDH_GENERATE_KEY_CONSISTENCY” returned for DH

The Apple corecrypto Module v13.0 [Intel, User, Software, SL1] does generate RSA, DH and EC keys and performs the required pair-wise consistency tests on the newly generated key pairs.

10.3 Error Handling

If any of the above-mentioned 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 software integrity test and the Conditional CASTs. The module will only enter into the operational state after successfully passing the preoperational software integrity test and the Conditional CASTs. The table below shows the different causes that lead to the Error State and the status indicators reported. Table 14 – Error Indicators This document may be reproduced and distributed only in its original entirety without revision.

Page 30
11.1 Delivery and Operation

The module is built into macOS Ventura v13 and delivered with the respective device. 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 macOS version. For additional assurance, the module is digitally signed by vendor and it is verified during the integration into macOS. This digital signature-based integrity protection during the delivery/integration process is not to be confused with the HMAC-SHA2-256 based integrity check performed by the module itself as part of its pre-operational self-tests.

11.2 Crypto Officer Guidance

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 10 – 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/E110_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:

AES-GCM IV is constructed in compliance with IG C.H scenario 1 (TLS 1.2) and scenario 2 (IPsec-v3). Users should consult IG C.H specific scenario, for all the details and requirements of using AES-GCM mode.
The GCM IV generation follows RFC 5288 and shall only be used for the TLS protocol version 1.2. The counter portion of the IV is set by the module within its cryptographic boundary. The module does not implement the TLS protocol. The module’s implementation of AES-GCM is used together with an application that runs outside the module’s cryptographic boundary. The design of the TLS protocol implicitly ensures that the nonce_explicit, or counter portion of the IV will not exhaust all of its possible values.
The GCM IV generation follows RFC 4106 and shall only be used for the IPsec-v3 protocol version 3. The counter portion of the IV is set by the module within its cryptographic boundary. The module does not implement the IPsec protocol. The module’s implementation of AES-GCM is used together with an application that runs outside the module’s cryptographic boundary. The design of the IPsec protocol implicitly ensures that the nonce_explicit, or counter portion of the IV will not exhaust all of its possible values.
In both protocols in case the module’s power is lost and then restored, the key used for the AES GCM encryption/decryption shall be re-distributed. This condition is not enforced by the module; however, it This document may be reproduced and distributed only in its original entirety without revision.
Page 31

is met implicitly. The module does not retain any state when power is lost. As indicated in Table 11, column Storage, the module exclusively uses volatile storage. This means that AES-GCM key/IVs are not persistently stored during power off: therefore, there is no re-connection possible when the power is back on with re-generation of the key used for GCM. After restoration of the power, the user of the module (e.g., TLS, IKE) along with User application that implements the protocol, must perform a complete new key establishment operation using new random numbers (Entropy input string, DRBG seed, DRBG internal state V and Key, shared secret values that are not retained during power cycle, see table 11) with subsequent KDF operations to establish a new GCM key/IV pair on either side of the network communication channel. These protocols have not been reviewed or tested by the CAVP and CMVP. • AES-XTS mode is only approved for hardware storage applications. The length of the AES-XTS data unit does not exceed 220 blocks. The module checks explicitly that Key_1 ≠ Key_2 before using the keys in the XTS-Algorithm to process data with them compliant with IG C.I. This document may be reproduced and distributed only in its original entirety without revision.

Page 32

12. Mitigation of Attacks The module does not claim mitigation of other attacks. This document may be reproduced and distributed only in its original entirety without revision.

Page 33
Table, extracted as text (did not parse into structured rows)
Appendix A.                    Glossary and Abbreviations AES             Advanced Encryption Standard AES-NI          Advanced Encryption Standard New Instructions CAVP            Cryptographic Algorithm Validation Program CAST            Cryptographic Algorithm Self-Test CBC             Cipher Block Chaining CCM             Counter with Cipher Block Chaining-Message Authentication Code CFB             Cipher Feedback CMAC            Cipher-based Message Authentication Code CMVP            Cryptographic Module Validation Program CSP             Critical Security Parameter CTR             Counter Mode DRBG            Deterministic Random Bit Generator ECB             Electronic Code Book ENT             NIST SP 800-90B Compliant Entropy Source FFC             Finite Field Cryptography FIPS            Federal Information Processing Standards Publication GCM             Galois Counter Mode HMAC            Hash Message Authentication Code KAS             Key Agreement Scheme KAT             Known Answer Test KBKDF           Key Based Key Derivation Function KDF             Key Derivation Function KW              AES Key Wrap MAC             Message Authentication Code NIST            National Institute of Science and Technology OAEP            Optimal Asymmetric Encryption Padding OFB             Output Feedback PAA             Processor Algorithm Acceleration PBKDF           Password Based Key Derivation Function PKG             Key-Pair Generation PKV             Public Key Validation PRF             Pseudo-Random Function PSS             Probabilistic Signature Scheme RSA             Rivest, Shamir, Addleman SHA             Secure Hash Algorithm SHS             Secure Hash Standard SSC             Shared Secret Computation TOEPP           Tested Operational Environment Physical Perimeter XTS             XEX Tweakable Block Ciphertext Stealing This document may be reproduced and distributed only in its original entirety without revision.
Page 34
Appendix B.References
FIPS140-3FIPS PUB 140-3 - Security Requirements for Cryptographic Modules March 2019 https://doi.org/10.6028/NIST.FIPS.140-3
SP 800-140xCMVP FIPS 140-3 Related Reference https://csrc.nist.gov/Projects/cryptographic-module-validation-program/fips-140-3- standards
FIPS140-3_IGImplementation Guidance for FIPS PUB 140-3 and the Cryptographic Module Validation Program https://csrc.nist.gov/Projects/cryptographic-module-validation-program/fips-140-3-ig- announcements
FIPS140-3_MMCMVP 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%20v1.2%20%5BDec%2023%202022%5D.pdf
SP 800-140FIPS 140-3 Derived Test Requirements (DTR) https://csrc.nist.gov/publications/detail/sp/800-140/final
SP 800-140ACMVP Documentation Requirements https://csrc.nist.gov/publications/detail/sp/800-140a/final
SP 800-140BCMVP Security Policy Requirements https://csrc.nist.gov/publications/detail/sp/800-140b/final
SP 800-140CCMVP Approved Security Functions https://csrc.nist.gov/publications/detail/sp/800-140c/final
SP 800-140DCMVP Approved Sensitive Security Parameter Generation and Establishment Methods https://csrc.nist.gov/publications/detail/sp/800-140d/final
SP 800-140ECMVP Approved Authentication Mechanisms https://csrc.nist.gov/publications/detail/sp/800-140e/final
SP 800-140FCMVP Approved Non-Invasive Attack Mitigation Test Metrics https://csrc.nist.gov/publications/detail/sp/800-140f/final
FIPS180-4Secure Hash Standard (SHS) March 2012 http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf This document may be reproduced and distributed only in its original entirety without revision.
Page 35
FIPS186-4Digital Signature Standard (DSS) July 2013 http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf
FIPS197Advanced Encryption Standard November 2001 http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
FIPS198-1The Keyed Hash Message Authentication Code (HMAC) July 2008 http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf
PKCS#1Public Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1 February 2003 http://www.ietf.org/rfc/rfc3447.txt
RFC3394Advanced Encryption Standard (AES) Key Wrap Algorithm September 2002 http://www.ietf.org/rfc/rfc3394.txt
RFC5649Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm September 2009 http://www.ietf.org/rfc/rfc5649.txt
SP 800-38ANIST 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
SP 800-38CNIST 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
SP 800-38DNIST 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
SP 800-38ENIST 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
SP 800-38FNIST 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 entirety without revision.
Page 36
SP 800-56Cr2Recommendation for Key-Derivation Methods in Key-Establishment Schemes August 2020 https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf
SP 800-57NIST 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
SP 800-67r1NIST 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
SP 800-90Ar1NIST 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
SP 800-90BNIST 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
SP 800-108NIST Special Publication 800-108 - Recommendation for Key Derivation Using Pseudorandom Functions (Revised) October 2009 http://csrc.nist.gov/publications/nistpubs/800-108/sp800-108.pdf
SP 800-131Ar2NIST Special Publication 800-131A - Transitioning the Use of Cryptographic Algorithms and Key Lengths March 2019 https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-131Ar2.pdf
SP 800-132NIST Special Publication 800-132 - Recommendation for Password-Based Key Derivation - Part 1: Storage Applications December 2010 http://csrc.nist.gov/publications/nistpubs/800-132/nist-sp800-132.pdf
SP 800-133r2Recommendation for Cryptographic Key Generation June 2020 https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-133r2.pdf
SP 800-135r1NIST 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 This document may be reproduced and distributed only in its original entirety without revision.
Page 37
MACOSmacOS Technical Overview https://developer.apple.com/macos/
SECApple Platform Security Guide https://support.apple.com/guide/security/welcome/web
macOSProduct security certifications for macOS https://support.apple.com/HT201159 This document may be reproduced and distributed only in its original entirety without revision.