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

Eclypses Cryptographic Library

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

Certificate

StandardFIPS 140-3
Overall level1
Module typeSoftware
EmbodimentMulti-Chip Stand Alone
StatusActive
Sunset date4/4/2029
CaveatNo assurance of the minimum strength of generated SSPs (e.g., keys); No assurance of minimum security of SSPs (e.g., keys, bit strings) that are externally loaded, or of SSPs established with externally loaded SSPs
VendorEclypses, Inc.

Approved Algorithms (22)

AlgorithmACVP Cert
AES-CBCA1406
AES-CBCA1422
AES-CTRA1407
AES-CTRA1423
AES-ECBA1408
AES-ECBA1424
Counter DRBGA1413
Counter DRBGA1414
Counter DRBGA1425
Counter DRBGA1426
Hash DRBGA1412
Hash DRBGA1419
Hash DRBGA1427
Hash DRBGA1432
SHA-1A1409
SHA-1A1428
SHA-1A3926
SHA-1A3929
SHA2-256A3927
SHA2-256A3930
SHA2-512A3928
SHA2-512A3931

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

flowchart LR
  %% Deterministic review-risk graph for Eclypses Cryptographic Library
  %% 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>update</i>"]
    C3["[low] Self-test / status surface<br/>(referenced in text)<br/><i>Self-Test</i>"]
    C6["[low] Operating system / runtime<br/>referenced (boundary<br/>membership not asserted)<br/><i>operating system<br/>linux<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."]
    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?"]
    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"]
    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
  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,C6 clue;
  class I2,I3,I6 infer;
  class R2,R3,R6 risk;
  class E2,E3,E6 evidence;
Underlying clues
flowchart LR
  %% Deterministic clue tier for Eclypses Cryptographic Library
  %% 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>update</i><br/>src: text:keyword"]
    C3["[low] Self-test / status surface (referenced in text)<br/><i>Self-Test</i><br/>src: text:keyword"]
    C6["[low] Operating system / runtime referenced (boundary membership not asserted)<br/><i>operating system<br/>linux<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,C6 clueLow;

Security Policy, page by page

Page 1

Eclypses, Inc. Eclypses Cryptographic Library Library Version 1.0.0 FIPS 140-3 Security Policy Document Version 1.0

Page 2
Table of Contents
#SectionPage
Page 3

This document may be freely reproduced and distributed, but only in its entirety and without modification. iii

Page 4
ISO/IEC 24759 Section 6 SubsectionFIPS 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

The module meets the overall requirements of FIPS 140-3 Level 1. Table 1: Module Security Levels This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 5
2 Cryptographic Module Specification
2.1 Overview

The cryptographic boundary is defined as the ‘Eclypses Cryptographic Library’. The ‘Eclypses Cryptographic Library’ (hereafter referred to as the "Module") version 1.0.0 is a software library supporting FIPS 140-3 approved cryptographic algorithms. The Module is a Software Module with the ability to use PAA when present. The Module is a proprietary implementation, general- purpose cryptographic library with an API targeted toward high performance and minimal footprint. It was designed to have no dependencies or interactions with the operating system or any other libraries; the only interactions are to perform cryptographic algorithms when requested by application code. It was designed to support a wide range of operating environments with as much common code as possible. For this reason, the Software Module designation was chosen. Figure 1: Cryptographic Boundary and Physical Perimeter The Eclypses Cryptographic Library Module consists of the following files, depending on operational environment (refer to Table 2 for OE numbers in brackets):

Page 6
#Operating SystemHardware PlatformProcessorPAA / Acceleration
1Apple iOS 13.5 (64-bit)iPhone SEApple A9 (APL1022) with Cryptography Extensions (ARM v8)Yes
2Apple iOS 13.5 (64-bit)iPhone SEApple A9 (APL1022) (ARM v8)No
3Apple macOS Big Sur 11.3 (64-bit)MacBook ProIntel Core i9 (I9-9880H) with AES-NI, AVX, SSE2, and SSSE3Yes
4Apple macOS BigMacBookIntel Core i9 (I9-9880H)No
Sur 11.3 (64-bit)Pro
5Apple macOS Big Sur 11.3 (64-bit)Mac miniApple M1 (APL1102) with Cryptography Extensions (ARM v8)Yes
6Apple macOS Big Sur 11.3 (64-bit)Mac miniApple M1 (APL1102) (ARM v8)No
7Google Android 9 (32-bit)Oukitel C16MediaTek MT6580P (ARM v7)No
8Google Android 9SamsungQualcomm Snapdragon 835 withYes
(64-bit)Galaxy S8Cryptography Extensions (ARM v8)
9Google Android 9 (64-bit)Samsung Galaxy S8Qualcomm Snapdragon 835 (ARM v8)No
10Microsoft WindowsHP ZBookIntel Core i7 (i7-7500U) with AES-NI, AVX,Yes
10 Pro 20H2 (64- bit)SSE2, and SSSE3
11Microsoft Windows 10 Pro 20H2 (64- bit)HP ZBookIntel Core i7 (i7-7500U)No
12OpenWRT Linux 19.07 (32-bit)GL.iNet GL- AR750SQualcomm QCA9563 (MIPS 74Kc)No
Page 7
13Raspbian Linux 5.10 (32-bit)Raspberry Pi 4 Model B Rev 1.1Broadcom BCM2711 (ARM v8)No
14Ubuntu Linux 20.04 (64-bit)HP ZBookIntel Core i7 (i7-7500U) with AES-NI, AVX, SSE2, and SSSE3Yes
15Ubuntu Linux 20.04 (64-bit)HP ZBookIntel Core i7 (i7-7500U)No

B Refer to Table 1: Module Security Levels for the security rating of the Module and security levels of individual areas. The cryptographic boundary is defined by the library and API. All implementation is inside the boundary. The library contains only cryptographic functions, and the library performs all cryptographic functions itself without dependency on any other library, application, or operating system functionality.

2.2 Modes Of Operation

There is only one mode of operation: Normal Approved Mode. The software development kit (SDK) package clearly indicates the compliance mode by including "FIPS" in the package name to indicate the compliance. There is a service (Show Status) the library user can call to verify that Normal Approved Mode is enabled. The Module name may be validated by using the Show Module Name / Identifier service. An exact match to the below listed Module name validates the correctness. The approved Module name is: Eclypses Cryptographic Library The Module version may be validated by using the Versioning Information service. An exact match to the below listed Module version validates the correctness. The approved Module version is: 1.0.0 This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 8
CAVP Cert(s)AlgorithmStandardsModes / MethodsDescription / Key SizesUse / Function
A1406, A1422AESFIPS 197 [2] , NIST SP 800-38A [3]CBC128, 192, and 256 bitsData Encryption / Decryption
A1407,AESFIPS 197 [2] ,CTR128, 192, and 256 bitsData Encryption /
A1423NIST SP 800-38A [3]Decryption
A1408, A1424AESFIPS 197 [2] , NIST SP 800-38A [3]ECB128, 192, and 256 bitsData Encryption / Decryption
A1414,CTR_DRBGNIST SP 800-90A [4]AES-128-CTR_DRBG using AESDeterministic Random
A1425NODF AES-192- NODF AES-256- NODFwithout derivation functionBit Generation
A1413, A1426CTR_DRBGNIST SP 800-90A [4]AES-128-DF AES-192-DF AES-256-DFCTR_DRBG using AES with derivation functionDeterministic Random Bit Generation
A1412,Hash_DRBGSHA-1HASH_DRBGs using SHADeterministic Random
A1419,NIST SP 800-90A [4]SHA- 256Bit Generation
A1427, A1432SHA-512
A1409, A1428, A39261, A39292SHA-13FIPS 180-4 [1]SHA-1Message Digests Supports input message lengths from 1 byte to 8 GB depending on OEMessage Digest Creation
A1410, A1418, A39274, A39305SHA-256FIPS 180-4 [1]SHA-256Message Digests Supports input message lengths from 1 byte to 8 GB depending on OEMessage Digest Creation
A1411, A39286, A39317SHA-512FIPS 180-4 [1]SHA-512Message Digests Supports input message lengths from 1 byte to 8 GB depending on OEMessage Digest Creation
2.3 Security Functions
2.3.1 Approved Algorithms

The module supports the Approved algorithms listed in Table 3. Table 3: Approved Algorithms

1 SHA-1 Large Data Test (LDT) only applicable to OE #3, 5, 10, and 14 (w/ PAA enabled) from Table 2.

2 SHA-1 LDT only applicable to OE #4, 6, 11, and 15 from Table 2.

3 SHA-1 shall only be used for non-digital signature applications (ref: NIST SP 800-131r2, Section 9).

4 SHA-256 LDT only applicable to OE #3, 4, 6, 10, 11, 14, and 15 from Table 2.

5 SHA-256 LDT only applicable to OE #5 (w/ PAA enabled) from Table 2.

6 SHA-512 LDT only applicable to OE #3, 4, 6, 10, 11, 14, and 15 from Table 2.

7 SHA-512 LDT only applicable to OE #5 (w/ PAA enabled) from Table 2.

This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 9
2.4 Security Design and Rules of Operation

This section documents the security rules enforced by the cryptographic module to implement the security requirements of a FIPS 140-3 Level 1 Module.

2.4.1 CSP Protection

For AES, the CSP (key) is used by the Symmetric Encryption / Decryption service. The library user shall protect or zeroise their copy of the key after keying. The Zeroisation service is provided to zeroise the library's key, and the library user shall use this service when the AES module is no longer needed for encryption or decryption. For DRBGs, the CSP (entropy) is used by the Random Number Generation service. As soon as the entropy has been consumed as part of the Random Number Generation service, it is zeroised. The library user shall zeroise any additional copies of the entropy they may have. The Zeroisation service is provided to zeroise the library's CSP (the current state of the DRBG, including V, C, and/or Key, depending on the DRBG), and the library user shall use this service when the DRBG module is no longer needed to generate random bits.

2.4.2 Key Creation (N/A)

There is no assurance of minimum strength of generated random strings or SSPs. As such, the Module cannot create keys and can only import keys. There is also no assurance of minimum security of SSPs that are externally loaded (or of SSPs established with externally loaded SSPs). The DRBGs produce random strings, but the library cannot use them as keys. The library user may use the random strings as they choose. The AES services use keys provided by the library user. The library user shall protect the user provided cryptographic keys.

2.4.3 Indicators

All services return a status code to indicate to the library user the success or failure of the operation. The only exceptions to this rule are the Control PAA service and Show Module Name/Identifier and Versioning Information service, which indicate success by their completion. The library user shall check every status code and take appropriate action based on the result. This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 10
2.4.4 SHA-1

When utilizing the Message Digest service, the output for SHA-1 shall only be used for nondigital signature applications (ref: NIST SP 800-131r2, Section 9).

2.4.5 Inhibiting Output (Error State)

When the consuming application starts, the Module automatically commands the Perform Pre- Operational Self-Tests service, which includes the Perform Conditional Self-Tests service in addition to the library integrity test. The Perform Pre-Operational Self-Tests service will set the error state if the library integrity check or the Conditional Self-Tests fail. All output is inhibited while in an error state; therefore, all output is inhibited until the library integrity check and Conditional Self-Tests pass. For AES, if the Module is in an error state, encryption and decryption each return an error status. No encryption or decryption is performed while in the error state. For DRBGs, if the Module or instance is in an error state, instantiation and generation each return an error status. No random bits are created while in the error state. For SHA, if the Module is in an error state, feeding data to be digested returns an error status. No message digest update is performed while in the error state.

2.4.6 Inhibiting Output (Self-Test)

The Module has a self-test flag to indicate when self-tests are running. While this flag is set, all output is inhibited. All self-test results are zeroised and are not output.

2.4.7 Inhibiting Output (Zeroisation)

The Module is in an error state during zeroisation. Since output is inhibited while in an error state, output is inhibited during zeroisation.

2.5 Initialization Requirements

To use PAA on ARM64 platforms, the PAA availability must be known or probed by the library user in some way, and then communicated to the library using the Control PAA service. The Perform Conditional Self-Tests service must then be commanded for the PAA option to take effect (the PAA and non-PAA were self-tested during the Pre-Operational Self-Tests, which includes the Conditional Self-Tests in addition to the library integrity test; the self-test This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 11

requirement here is just part of the PAA enable/disable procedure). This applies to the following operational environments (refer to Table 2 for OE numbers in brackets):

Page 12
Physical PortLogical InterfaceDescription
N/AData Input, Data Output, Control Input, Status OutputThe logical interface is a C API. All data input, data output, control input, and status output are done via the C API. All SSPs are given to the API or requested by it via C callbacks. No SSPs are generated by the Module. All SSPs consumed by the module are passed in as parameters except DRBG entropy and nonce, which are loaded via callback functions that conform with the requirements in NIST SP 800- 90A [4] section 9.1. DRBG entropy and nonce cannot be provided as input parameters to the instantiate function. The Module accepts a C function pointer that implements the Get_entropy_input function defined in NIST SP 800-90A [4] Section 9 in order to request the entropy as required. The Module accepts a second C function pointer to acquire the nonce in a similar manner. Both callback function interfaces are described below. This is the Software Module Interface.
N/AData InputWhen a DRBG instantiates, it needs entropy. The C API invokes a callback function registered by the library user at the moment the entropy is needed. The callback function requires the library user to acquire the entropy and load it in to either a provided buffer or their own buffer for use by the instantiation procedure. Immediately after use by the instantiation procedure, the entropy buffer (either provided by the Module or by the user) is zeroised. The callback function is provided with the minimum number of bits of entropy required and the minimum/maximum length of the entropy bitstring that must contain the required number of bits of entropy for the desired security strength. The minimum number of bits of entropy provided is equal to the security strength for each Hash_DRBG and each CTR_DRBG with derivation function (i.e., 128, 192, or 256 bits), and equal to the sum of the block size and key length for each CTR_DRBG without derivation function (i.e., 256, 320, or 384 bits). The callback function must return the status and entropy bitstring. The callback function must return an error if the minimum number of entropy bits are not available. The instantiation procedure verifies the status and entropy bitstring size constraints and returns an error if the status is not success or the entropy bitstring is not a valid size. This is the DRBG Entropy Callback Function.
N/AData InputWhen a DRBG instantiates, it may need a nonce, depending on the DRBG algorithm. The API invokes a callback function registered by the library user at the moment the nonce is needed. The callback function must load the nonce in a provided buffer. The instantiation procedure verifies the nonce bitstring size constraints. This is the DRBG Nonce Callback Function.

This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 13

N/A

Data Input

Upon module initialization the module queries the CPU to determine if PAA is available. If PAA is available both non-PAA and PAA cryptographic algorithms are self-tested (refer to Section 10).

This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 14
Roles with Service AccessServiceInputOutput
COControl PAAN/AN/A
COMessage DigestData to be digestedMessage digest, status
COPerform Conditional Self-TestsN/ASelf-test status
COPerform Pre-Operational Self- TestsN/ASelf-test status
CORandom Number GenerationEntropy, nonce, and personalization stringRandom number, status
COShow Module Name / Identifier and Versioning InformationN/AModule name, version
COShow StatusN/AApproved service status
COSymmetric Encryption /Key, IC, IV, dataEncrypted / decrypted
Decryptiondata, status
COZeroisationN/AStatus
4 Roles, Services, and Authentication

There is one role for this Module: Cryptographic Officer (aka. Crypto Officer or CO).

4.1.1 Crypto Officer

The Crypto Officer role is supported for installation of the dynamic library. The Crypto Officer controls access to the dynamic library to ensure it is not tampered with before and after installation. The Crypto Officer can use all the cryptographic services of the Module.

4.2 Service Inputs and Outputs

The role names are abbreviated as: CO = Crypto Officer This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 15
RoleServiceDescriptionSecurity Functions UsedAccess Rights to Keys / SSPsApproved Service Indicator
COControl PAAControl the use of PAAN/AN/AService completion
COMessage DigestGenerate messageSHA-1 orN/AStatus indicating
digestSHA-256 or SHA-512success or failure
COPerform Conditional Self- TestsPerform KAT on algorithmsAES CBC & AES CTR & AES ECB & CTR_DRBG & Hash_DRBG & SHAN/AStatus indicating success or failure
COPerform Pre-Perform libraryAES CBC &N/AStatus indicating
Operational Self-integrity check andAES CTR &success or failure when
TestsKAT on algorithmsAES ECB &commanded or
CTR_DRBG &application abort on
Hash_DRBG & SHAstartup
CORandom Number GenerationGenerate random numbersCTR_DRBG or Hash_DRBGCTR_DRBG V: (G, E) CTR_DRBG Key: (G, E) Hash_DRBG V, C: (G, E) DRBG Entropy (W, E, Z)Status indicating success or failure
COShow ModuleRetrieve informationN/AN/AService completion
Name / Identifier and Versioning Informationabout the Module
COShow StatusRetrieve the approved service statusN/AN/ANon-zero if approved or zero if not approved
COSymmetricPerform symmetricAES CBC orAES Key: W, EStatus indicating
Encryption /encryption andAES CTR orsuccess or failure
DecryptiondecryptionAES ECB
4.3 Identification and Authentication

The module does not support authentication; all services are assigned to the CO role. There is only one role (CO), which does not require authentication to assume. The module is a level 1 software module that does not support authentication mechanisms.

4.4 Services
4.4.1 Approved Services

The module supports the following Approved Services described in Table 6. Table 6: Approved Services This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 16

CO

Zeroisation

Zeroise SSP

AES CBC & AES CTR & AES ECB & CTR_DRBG & Hash_DRBG

AES Key: Z DRBG Entropy: Z CTR_DRBG V: Z CTR_DRBG Key: Z Hash_DRBG V, C: Z

Status indicating success or failure for DRBGs; service completion for ciphers

SSP access rights are defined as follows: G = Generate: The module generates or derives the SSP. R = Read: The SSP is read from the module (e.g., the SSP is output). Read access is N/A for the Module. 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. This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 17
5 Software / Firmware Security

The executable code is provided as a dynamic library (ecl) along with an associated set of C header files used by consuming applications to interface to the library. The Eclypses Cryptographic Library Module consists of the following files, depending on operational environment (refer to Table 2 for OE numbers in brackets):

Page 18

their Conditional Self-Tests, and since those cannot pass, all algorithms inhibit output. The consuming application user can initiate the Pre-Operational Self-Test, which includes the Conditional Self-Tests in addition to the library integrity test, at any time using the Perform Pre- Operational Self-Tests service. This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 19
6 Operational Environment

The module is a software library and the physical embodiment is provided by the multiplechip standalone general purpose computing platform on which it is installed. All operational environments for the module are classified as modifiable. The tested operating systems and tested platforms are detailed in Table 2. All operational environments the Module is certified for support default entry points, which are required for the Pre-Operational Self-Test. Modifying the operational environment to disable the default entry point renders the Module in an error state so it cannot be used. The Module has no other interaction with the operational environment, so all requirements for Level 1 are satisfied by all operational environments the Module is certified for. There are no security rules, settings, or restrictions on the configuration of the operational environment imposed by the Module. The Module has no interaction with the operational environment beyond probing the hardware for PAA in certain cases and reading the library integrity hash file. Consuming applications may define security rules, settings, or restrictions on the configuration of the operational environment. All operational environments the Module is certified for segregate processes. Each process is logically separated from all other processes by the operating system and hardware. The Module functions entirely within a single process. The operational environment enforces process separation by the use of virtual memory. The virtual memory system uses the memory management unit (MMU) hardware to prevent processes from accessing the memory image of another process.

7 Physical Security

Not applicable because the Module is purely software.

8 Non-Invasive Security

The Module does not implement non-invasive mitigation techniques. This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 20
Key / SSP/ Name / TypeStrengthSecurity Function & Cert. NumberGenerationImport / ExportEstablishmentStorageZeroisationUse & Related Keys
AES Key128 bits, 192 bits, 256 bitsAES CBC (A1406, A1422) AES CTR (A1407, A1423) AES ECB (A1408, A1424)N/AImport: Plaintext; Export: N/A Method: ElectronicProvided by consuming applicationPlaintext in RAM (temporarily)Zeroisation serviceKey used to encrypt or decrypt data
DRBG≥112 bitsCTR_DRBGN/AImport: Plaintext;Provided byPlaintext in RAMZeroisedUsed to
Entropy(A1414, A1425)Export: N/Aconsuming(temporarily)implicitly ininstantiate the
Hash_DRBG (A1412, A1419, A1427, A1432)Method: Electronicapplicationinstantiation immediately upon useDRBG
CTR_DRBG V128 bitsCTR_DRBG (A1414, A1425)N/AImport: N/A; Export: N/ADerived from entropy, nonce, and personalization stringPlaintext in RAM (temporarily)Zeroisation serviceState of the DRBG
CTR_DRBG128 bits,CTR_DRBGN/AImport: N/A;Derived fromPlaintext in RAMZeroisationState of the
Key192 bits,(A1414, A1425)Export: N/Aentropy, nonce,(temporarily)serviceDRBG
256 bitsand personalization string
Hash_DRBG V, C440 bits, 888 bitsHash_DRBG (A1412, A1419, A1427, A1432)N/AImport: N/A; Export: N/ADerived from entropy, nonce, and personalization stringPlaintext in RAM (temporarily)Zeroisation serviceState of the DRBG
9 Sensitive Security Parameter Management

The Module does not permanently store SSPs. The only SSPs are the current state of any instance of any parts of the Module. The SSPs the Module creates are only kept in memory state structures. The Module provides zeroisation services to ensure all SSPs are zeroised when no longer needed. The SSPs created by the Module are for Module use only to perform cryptographic services.

9.1 SSPs

Table 7: SSPs V V, C RBG state information and intermediate generated values are CSPs. As noted in the table above, any entropy input is defined as a CSP. It is zeroised immediately after use. CSPs may be provided in plaintext form because they will be maintained within the This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 21

operational environment. The Module does not store or transmit any CSP entered. The DRBG entropy is loaded when needed during instantiation. The minimum number of bits of entropy required and the minimum/maximum entropy bitstring length are specified in the load request and the minimum number of bits of entropy is believed to have been provided if the load returns a successful status (refer to Table 4 for additional detail). Additionally, if the length of the bitstring loaded is less than the minimum bits of entropy required or the status is not success, the instantiation fails under the assumption that insufficient entropy was available; otherwise, the number of bits loaded is believed to contain the minimum required bits of entropy for the security strength desired. The minimum number of bits of entropy provided is equal to the security strength for each Hash DRBG and each CTR_DRBG with derivation function (i.e., 128, 192, or 256 bits), and equal to the sum of the block size and key length for each CTR_DRBG without derivation function (i.e., 256, 320, or 384 bits). FIPS caveat: no assurance of minimum strength of generated random strings. The DRBG SSPs (V, C, Key) are derived from SSPs entered into the module in an approved manner defined in the DRBG algorithm.

9.2 PSPs

The Module does not have any PSPs.

9.3 RBG

The Module does not incorporate any non-deterministic random number generators. Entropy provided to the (NIST SP 800-90A) DRBGs must be provided by an approved random source (NIST SP 800-90B).

9.4 Zeroisation

The Module provides zeroisation services that will zeroise all SSPs on demand. The zeroisation is optimized to run in the least number of processor instructions to complete as quickly as possible. The zeroisation is initiated by the library user and the indication of completion is the function call returning. This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 22
Tested FunctionSelf-TestConditions For Performing TestError Indicator
Library integritySHA-256 digest of the dynamic library file compared to the known digest computed at build timeLibrary loadFailure to load ecl_g_fips_error set to true
Tested FunctionSelf-TestConditions For Performing TestError Indicator
AES CBC (Certs A1406, A1422)AES-128-CBC Encrypt KAT AES-128-CBC Decrypt KAT AES-192-CBC Encrypt KAT AES-192-CBC Decrypt KAT AES-256-CBC Encrypt KAT AES-256-CBC Decrypt KATOn demand or when changing the PAA optionStatus output: ecl_status_cipher_tes t_failed
AES CTR (Certs A1407, A1423)AES-128-CTR Encrypt KAT AES-128-CTR Decrypt KAT AES-192-CTR Encrypt KAT AES-192-CTR Decrypt KAT AES-256-CTR Encrypt KAT AES-256-CTR Decrypt KATOn demand or when changing the PAA optionStatus output: ecl_status_cipher_tes t_failed
10 Self-Tests

All cryptographic operations are inhibited during error states and while self-tests are being performed. Any attempted cryptographic operation during an error state or while self-tests are being performed will result in an error status (i.e., ecl_status_output_inhibited) and/or zeroised output.

10.1 Pre-Operational Self-Tests

All Pre-Operational Self-Tests test the non-PAA implementation. If PAA is available, the PAA implementation is also tested. Table 8: Pre-Operational Self-Tests

10.2 Conditional Self-Tests

All Conditional Self-Tests test the non-PAA implementation. If PAA is available, the PAA implementation is also tested. Table 9: Conditional Self-Tests This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 23
AES ECB (Certs A1408, A1424)AES-128-ECB Encrypt KAT AES-128-ECB Decrypt KAT AES-192-ECB Encrypt KAT AES-192-ECB Decrypt KAT AES-256-ECB Encrypt KAT AES-256-ECB Decrypt KATOn demand or when changing the PAA optionStatus output: ecl_status_cipher_tes t_failed
CTR_DRBG NODF8 (Certs A1414, A1425)CTR-AES-128-NODF Instantiate KAT CTR-AES-128-NODF Generate KAT CTR-AES-192-NODF Instantiate KAT CTR-AES-192-NODF Generate KAT CTR-AES-256-NODF Instantiate KAT CTR-AES-256-NODF Generate KATOn demand or when changing the PAA optionStatus output: ecl_status_drbg_cata strophic
CTR_DRBG DF9 (Certs A1413, A1426)CTR-AES-128-DF Instantiate KAT CTR-AES-128-DF Generate KAT CTR-AES-192-DF Instantiate KAT CTR-AES-192-DF Generate KAT CTR-AES-256-DF Instantiate KAT CTR-AES-256-DF Generate KATOn demand or when changing the PAA optionStatus output: ecl_status_drbg_cata strophic
Hash_DRBG10 (Certs A1412, A1419, A1427, A1432)HASH-SHA-1 Instantiate KAT HASH-SHA-1 Generate KAT HASH-SHA-256 Instantiate KAT HASH-SHA-256 Generate KAT HASH-SHA-512 Instantiate KAT HASH-SHA-512 Generate KATOn demand or when changing the PAA optionStatus output: ecl_status_drbg_cata strophic
SHA-1 (Certs A1409, A1428)SHA-1 Digest KATOn demand or when changing the PAA optionStatus output: ecl_status_hash_test_ failed
SHA-256 (Certs A1410, A1418)SHA-256 Digest KATOn demand, when changing the PAA option, or prior to the library integrity checkStatus output: ecl_status_hash_test_ failed
SHA-512 (Certs A1411, A1433)SHA-512 Digest KATOn demand or when changing the PAA optionStatus output: ecl_status_hash_test_ failed
8 DRBG reseeding is not supported by the module.
9 DRBG reseeding is not supported by the module.
10 DRBG reseeding is not supported by the module.

This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 24

To resolve errors, restart the consuming application or command the Perform Pre-Operational Self- Tests service. The Module can be used if the Perform Pre-Operational Self-Tests service returns success.

10.3 Periodic Self-Tests

The Module's consuming application can use any of the Perform Pre-Operational Self-Tests or Perform Conditional Self-Test services at any time to perform a periodic self-test. If the on demand self-tests fail, the module will return ECL_FALSE. This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 25
11 Life-Cycle Assurance

Module code is stored and managed within private and secure configuration management systems, GIT and Azure DevOps. The Module documentation is stored in the same repository to maintain the history synchronized with the source code. Module code utilizes versioning along with release notes providing guidance in the use of each iteration of Module’s code. The Module has a semantic version number. The Git configuration management system assigned a message digest to each commit which uniquely identifies the version. Configuration management systems retaining Module code are periodically backed up using a solution that allows both full and incremental restoration. A comprehensive developer guide documenting the entire API is provided. The developer guide provides all Administrator guidance. The developer guide is versioned and managed within the same secure configuration management systems. The configuration management system is protected with user authentication measures to prevent unauthorized access. All changes can be made only by authorized individuals. An automated system is in place to notify other users when any change has been made to prevent unknown changes from being made. All changes are made on development branches in Git and are reviewed by separate people before releasing to production. The only maintenance required is to install new versions of the Module when they are made available to fix discrepancies or add features. The update procedure is the same as the installation procedure, with the new Module file(s) replacing the existing ones. Any new version of the Module is outside the scope of this validation and requires a separate FIPS 140-3 validation.

11.1 Installation
11.1.1 Linux, macOS, Windows

The Crypto Officer shall install the dynamic library and library integrity hash file in a standard location that is protected from modification by Users. The dynamic library path shall be restricted to protected paths to avoid library interposition. The library install location must be in a path that is MAX_PATH or PATH_MAX (depending on operating system) characters or less. The dynamic library and library integrity hash file must be collocated and shall be protected This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 26

against modification by Users.

11.1.2 iOS

The Crypto Officer shall configure their iOS app project according to instructions detailed in the SDK. This will ensure the proper embedded locations of the library and integrity hash file in the IPA.

11.1.3 Android

The Crypto Officer shall configure their Android app project according to instructions detailed in the SDK. This will ensure the proper embedded locations of the library and integrity hash file in the APK.

11.1.4 General

There is no authentication component to the Module, so no further setup is required. No zeroisation is required during installation.

11.2 Security Rules

All Pre-Operational Self-Tests and Conditional Self-Tests are performed at power-on. Where PAA is available, the PAA and non-PAA versions are tested as part of the Perform PreOperational Self-Tests service, which includes the Perform Conditional Self-Tests service in addition to the library integrity test. To set the PAA option for use after the Pre-Operational Self-Tests, the Module requires the conditional self-test services to be commanded again after setting the desired PAA options. All algorithms have self-tests to verify the algorithm is working correctly. The Perform PreOperational Self-Test service commands all algorithm self-tests after first verifying library integrity. A library user can command the Perform Conditional Self-Test service to run at any time. A library user can command the Perform Pre-Operational Self-Test service, which includes the Perform Conditional Self-Tests service in addition to the library integrity check, to run again at any time. This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 27
12 Mitigation Of Other Attacks

This module is not designed to mitigate other attacks beyond the scope of FIPS 140-3 requirements. This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 28
Reference NumberReference TitlePublishing EntityPublication Date
[1]FIPS 180-4NIST08/2015
[2]FIPS 197NIST11/26/2001
[3]NIST SP 800-38ANIST12/2001
[4]NIST SP 800-90ANIST06/2015
13 References

Table 10: References This document may be freely reproduced and distributed, but only in its entirety and without modification.

Page 29
TermDefinition
AESAdvanced Encryption Standard
CASTCryptographic Algorithm Self-Test
CBCCipher Block Chaining mode of operation
CSPCritical Security Parameters
CTRCounter mode of operation
DFDerivation Function
DRBGDeterministic Random Bit Generator
ECBElectronic Code Book mode of operation
ICInitial Count
IVInitialization Vector
KATKnown Answer Test
NODFNo Derivation Function
PAAProcessor Algorithm Acceleration
POSTPre-Operational Self-Test
PSPPublic Security Parameters
SDKSoftware Development Kit
SHASecure Hash Algorithm
SSPSensitive Security Parameters (CSP + PSP)
14 Abbreviations And Definitions

Table 11: Abbreviations and Definitions This document may be freely reproduced and distributed, but only in its entirety and without modification.