| Standard | FIPS 140-3 |
|---|---|
| Overall level | 1 |
| Module type | Software |
| Embodiment | Multi-Chip Stand Alone |
| Status | Historical |
| Caveat | Interim validation. When operated in approved mode. No assurance of the minimum strength of generated SSPs (e.g., keys) |
| Vendor | DigiCert, Inc. |
flowchart LR
%% Deterministic review-risk graph for Mocana Cryptographic Loadable Kernel Module
%% 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<br/>status output<br/>Show status</i>"]
C5["[low] Protocol / secure-channel<br/>references (may be KDF<br/>names, not a live channel)<br/><i>TLS<br/>no library/version identified</i>"]
C6["[low] Operating system / runtime<br/>referenced (boundary<br/>membership not asserted)<br/><i>operating system<br/>linux<br/>kernel</i>"]
end
subgraph Inference["Derived inference"]
I2["Possible only, trusted<br/>code is reachable through<br/>update and recovery paths."]
I3["Possible only, some<br/>services may process input<br/>before, or without,<br/>operator authentication."]
I5["Possible only, a protocol<br/>is referenced, but whether<br/>it is a live channel or<br/>only a KDF/algorithm name<br/>is unconfirmed."]
I6["Possible only, a<br/>runtime/OS is referenced,<br/>but its membership in the<br/>cryptographic boundary is<br/>not established."]
end
subgraph Risk["Reviewer question"]
R2["Are update images<br/>authenticated before<br/>parsing, and are<br/>downgrade/rollback paths<br/>constrained?"]
R3["Can unauthenticated<br/>services leak state,<br/>consume resources, or<br/>transition security state?"]
R5["If a live TLS/SSH/IKE<br/>channel exists, could<br/>library CVEs apply, or is<br/>this only a<br/>KDF/documentation name?"]
R6["If the OS/runtime is<br/>in-boundary, could its<br/>CVEs be hidden by<br/>firmware-only versioning?"]
end
subgraph Evidence["Evidence needed to close"]
E2["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>update image format ·<br/>signature-before-parse<br/>proof · anti-rollback /<br/>downgrade policy"]
E3["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>pre-auth reachability<br/>matrix · rate limits and<br/>output redaction ·<br/>abuse-case tests"]
E5["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>library identity and<br/>version ·<br/>certificate-validation<br/>behaviour · protocol-CVE<br/>disposition"]
E6["confirm the disclosure<br/>itself (keyword hit,<br/>context unverified) ·<br/>runtime identity and<br/>config · kernel/runtime<br/>hardening profile ·<br/>patch/backport manifest"]
end
C2 --> I2 --> R2 --> E2
C3 --> I3 --> R3 --> E3
C5 --> I5 --> R5 --> E5
C6 --> I6 --> R6 --> E6
classDef clue fill:#eef3f9,stroke:#6f7f91,color:#1f3a5f;
classDef infer fill:#fff7e6,stroke:#b98500,color:#6b4e00;
classDef risk fill:#fbe9e9,stroke:#b02a2a,color:#7a1f1f;
classDef evidence fill:#e6f4ea,stroke:#1e7d34,color:#14532d;
class C2,C3,C5,C6 clue;
class I2,I3,I5,I6 infer;
class R2,R3,R5,R6 risk;
class E2,E3,E5,E6 evidence;flowchart LR
%% Deterministic clue tier for Mocana Cryptographic Loadable Kernel Module
%% 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<br/>status output<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/>no library/version identified</i><br/>src: text:keyword"]
C6["[low] Operating system / runtime referenced (boundary membership not asserted)<br/><i>operating system<br/>linux<br/>kernel</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;Mocana Cryptographic Loadable Kernel Module Version 7.0.0f Non-Proprietary FIPS 140-3 Security Policy Document Version: 1.1 Date: August 01, 2024 DigiCert, Inc.
| # | Section | Page |
|---|
| Item | Page |
|---|---|
| Table 1 – Security Level of Security Requirements | 4 |
| Table 2 – Tested Operational Environments - Software | 5 |
| Table 3 – Vendor Affirmed Operational Environment | 5 |
| Table 4 – Approved Algorithms | 8 |
| Table 5 – Non-Approved Algorithms Not Allowed in the Approved Mode of Operation | 10 |
| Table 6 – Ports and Interfaces | 13 |
| Table 7 – Roles, Service Commands, Input and Output | 14 |
| Table 8 – Approved Services | 15 |
| Table 9– Non-Approved Services | 16 |
| Table 10 – SSP Management Methods | 19 |
| Table 11– SSPs | 20 |
| Table 12 – Non-Deterministic Random Number Generation Specification | 21 |
| Table 13 – Pre-Operational Self-Test | 21 |
| Table 14 – Conditional Self-Tests | 22 |
| Table 15 – Error States and Indicators | 23 |
| Table 16 – References | 24 |
| Table 17 – Acronyms and Definitions | 25 |
| Figure 1 – Cryptographic Module Interface Design | 6 |
| Figure 2 – Logical Object | 7 |
| Figure 3 - Code Example for Self-Test | 18 |
| ISO/IEC 24759 section | Security Requirement | Security Level |
|---|---|---|
| 1 | General | 1 |
| 2 | Cryptographic Module Specification | 1 |
| 3 | Cryptographic Module Interfaces | 1 |
| 4 | Roles, Services and, Authentication | 1 |
| 5 | Software/Firmware Security | 1 |
| 6 | Operational Environment | 1 |
| 7 | Physical Security | N/A |
| 8 | Non-Invasive Security | N/A |
| 9 | Sensitive Security Parameter Management | 1 |
| 10 | Self-Tests | 1 |
| 11 | Life-Cycle Assurance | 1 |
| 12 | Mitigation of Other Attacks | N/A |
| Overall | 1 |
Module version 7.0.0f hereafter denoted the Module. It contains the security rules under which the module must operate and describes how this module meets the requirements specified in FIPS 140-3 for a Security The Module design corresponds to the Module security rules. The security rules enforced by the Module are described in this document.
| # | Operating System | Hardware Platform | Processor | PAA/PAI | Hypervisor and Host OS |
|---|---|---|---|---|---|
| 1 | Yocto Linux 3.1 (64-bit) | Xerox Explorer 6.5 | Intel Atom E3950 | without PAA | NA |
| 2 | Yocto Linux 3.1 (64-bit) | Xerox Explorer 8.0 | Intel Atom x6413E | without PAA | NA |
| 3 | Yocto Linux 3.1 (64-bit) | Xerox Alexandra Platform | ARM Cortex A53 | without PAA | NA |
| # | Operating System | Hardware Platform | |||
|---|---|---|---|---|---|
| 1 | Ubuntu Linux 4.15 (64-bit) | Intel NUC with processor: i7-8650U with and without PAA |
The primary purpose of this module is to provide approved cryptographic routines to consuming applications via an Application Programming Interface (API). The Module conforms to [ISO/IEC 19790:2012] Section 7.2 Cryptographic Module Specification. The Module is a software only, multi-chip standalone cryptographic module that runs on a general-purpose computer which is the Tested Operational Environment’s Physical Perimeter (TOEPP). The cryptographic boundary of the Module is the single kernel object (KO), moc_crypto.ko and associated signature file. No components are excluded from the [ISO/IEC 19790:2012] A.2.2 requirements. The Module supports the normal mode of operation under which all of the algorithms, security functions, and services are available; degraded operation is not supported. The Module is intended for use by US Federal agencies or other markets that require FIPS 140-3 validated Security Level 1 software modules. The Module is intended to be used in dedicated purpose IOT (Internet of Things) devices and general-purpose computer systems.
The Cryptographic Module is tested on the following operational environment(s): Table 2
The software block diagram in Figure 1 shows the module, interfaces with the Tested Operational Environment, and the delimitation of its cryptographic boundary, shown shaded in blue. The Cryptographic Boundary is shown in Figure 1 and is comprised of the kernel module, (moc_crypto.ko) and the integrity check signature file (moc_crypto.ko.sig). The dashed line in Figure 2 indicates the Logical Object. The Module's operations occur via API calls from calling applications running within the same process as the Module. Figure 1 – Cryptographic Module Interface Design
The module supports approved and non-approved modes of normal operation:
| CAVP Cert | Algorithm and Standard | Mode/Method | Description / Key Size(s) / Key Strength(s) | Use / Function |
|---|---|---|---|---|
| A845 | AES [197] | CBC [38A] | Key Sizes: 128, 192, 256 | Encrypt, Decrypt |
| A845 | AES [197] | CCM [38C] | Key Sizes: 128, 192, 256 Tag Len: 32, 48, 64, 80, 96, 112, 128 | Authenticated Encrypt, Authenticated Decrypt |
| A845 | AES [197] | CFB128 [38A] | Key Sizes: 128, 192, 256 | Encrypt, Decrypt |
| A845 | AES [197] | CMAC [38B] | Key Sizes: 128, 192, 256 MAC Len: 32-128 Increment 8; Message Len: 0-65536 Increment 8 | Message Authentication |
| A845 | AES [197] | CTR [38A] | Key Sizes: 128, 192, 256 | Encrypt, Decrypt |
| A845 | AES [197] | ECB [38A] | Key Sizes: 128, 192, 256 | Encrypt, Decrypt |
| A845 | AES [197] | OFB [38A] | Key Sizes: 128, 192, 256 | Encrypt, Decrypt |
| A845 | AES [197] | XTS1 [38E] | Key Sizes: 128, 256 | Encrypt, Decrypt |
| A846 A847 | AES [197] | GCM/GMAC [38D] | Key Sizes: 128, 192, 256 Tag Len: 32, 64, 96, 104, 112, 120, 128 | Authenticated Encrypt, Authenticated Decrypt |
| A845 | CTR_DRBG [90A] | CTR | Use_df (default), No_df AES-128, AES-192, AES-256 | Deterministic Random Number Generation |
| A845 | HMAC [198] | SHA-1 | Key Sizes: Key Length = 112-65536 increment 8 MAC = 32–160 increment 8 | Message Authentication, KDF |
Keys and CSPs shall not be shared between the approved and non-approved mode of operation.
The approved mode of operation is configured at instantiation of the Module by the Cryptographic Officer role by execution of an application or protocol operating system process that uses the Module’s cryptographic functions.
The Module transitions to the non-approved mode of operation when one of the non-approved security functions is utilized. The Module can transition back to the approved mode of operation by utilizing an approved security function.
The Module implements the approved and non-approved but allowed cryptographic functions listed in the table(s) below. Table 4 – Approved Algorithms The XTS algorithm implementation includes a check to ensure Key_1 ≠ Key_2
| CAVP Cert | Algorithm and Standard | Mode/Method | Description / Key Size(s) / Key Strength(s) | Use / Function |
|---|---|---|---|---|
| A845 | HMAC [198] | SHA-224 | Key Sizes: Key Length = 112-65536 increment 8 MAC = 32–224 increment 8 | Message Authentication, KDF |
| A845 | HMAC [198] | SHA-256 | Key Sizes: Key Length = 112-65536 increment 8 MAC = 32–256 increment 8 | Message Authentication, KDF |
| A845 | HMAC [198] | SHA-384 | Key Sizes: Key Length = 112-65536 increment 8 MAC = 32–384 increment 8 | Message Authentication, KDF |
| A845 | HMAC [198] | SHA-512 | Key Sizes: Key Length = 112-65536 increment 8 MAC = 32–512 increment 8 | Message Authentication, KDF |
| A845 | HMAC [198] | SHA3-224 | Key Sizes: Key Length = 112-65536 increment 8 MAC = 32–224 increment 8 | Message Authentication, KDF |
| A845 | HMAC [198] | SHA3-256 | Key Sizes: Key Length = 112-65536 increment 8 MAC = 32–256 increment 8 | Message Authentication, KDF |
| A845 | HMAC [198] | SHA3-384 | Key Sizes: Key Length = 112-65536 increment 8 MAC = 32–384 increment 8 | Message Authentication, KDF |
| A845 | HMAC [198] | SHA3-512 | Key Sizes: Key Length = 112-65536 increment 8 MAC = 32–512 increment 8 | Message Authentication, KDF |
| A845 | KBKDF [108] | Feedback | HMAC-SHA-1, SHA2-(224, 256, 384, 512, SHA3-(224, 256, 384, 512) 8-bit counter after fixed input data | Key Based Key Derivation |
| A845 | SHS [180] | SHA-1, SHA2- 224, SHA-256, SHA-384, SHA-512 | Message Digest Generation |
| CAVP Cert | Algorithm and Standard | Mode/Method | Description / Key Size(s) / Key Strength(s) | Use / Function | ||
|---|---|---|---|---|---|---|
| A845 | SHA-3 [202] | SHA3-224 SHA3-256 SHA3-384 SHA3-512 SHAKE 128 SHAKE 256 | Hash Function |
| Algorithm | Use/Function |
|---|---|
| AES EAX | Authentication/Encryption, non-approved algorithm |
| AES GCM/GMAC 4K AES GCM/GMAC 64K | 256-bit decryption for 256k implementation |
| AES XCBC | Message Authentication, non-approved algorithm |
| DES | Encryption/Decryption, non-approved algorithm |
| HMAC | HMAC generation with key size less than 112 bits; non-compliant |
| HMAC-MD5 | Non-approved algorithm |
| MD2, MD4, MD5 | Message Digest, non-approved algorithm |
| RNG | FIPS 186-2 Random Number Generation |
| Triple-DES 2-key | Encryption/Decryption, non-approved algorithm |
| Triple-DES 3-key | Encryption/Decryption, Disallowed after 2023 |
Note: Other algorithms were tested but not implemented by this module. Note: The module does not have any vendor affirmed algorithms allowed in the approved mode of operation. Note: The module does not have any non-approved but allowed algorithms. Note: The module does not have any non-approved algorithms with no security claimed. Table 5 – Non-Approved Algorithms Not Allowed in the Approved Mode of Operation Note: All the various AES mode (e.g., EAX, XCBC, XTS, etc.) use the same underlying AES
The Module shall be installed within the operating system confines and structures consistent with Digicert’s operating environment specific documentation. For example: on most linux systems, this means that the moc_crypto.ko kernel module will be installed in the file system in “/lib” or “/lib64”, or it may be specified in the operating environment specific documentation to be installed in “/usr/local/lib” as appropriate for the target platform. The Module is automatically started when linked and loaded with an application using the cryptographic functions of the Module.
To update or replace the module, all SSPs shall first be zeroized and the calling application shall be closed. SSP zeroization is performed through the Key Destruction service that is described below. API calls will overwrite the memory occupied by the key information with zeros before that memory is de-allocated. If the calling application is terminated prior to zeroization, the Linux kernel overwrites the keys in physical memory before the physical memory is allocated to another process. The key zeroization process is performed in a sufficient time to prevent compromise of SSPs, taking only a few milliseconds. The previous existing module files shall be removed prior to following the installation directions above, for the new module version. (Random Number Generation) The Module implements a CTR-based DRBG per SP800-90A for creation of symmetric and asymmetric keys. The Module accepts input from entropy sources external to the cryptographic boundary for use as seed material for the Module's approved DRBGs. External entropy can be added via several APIs available to the cryptographic module client application. The calling application of the Module shall use entropy sources that meet the security strength required for the random bit generation mechanism as shown in NIST SP 800-90A Table 3 (CTR_DRBG). A minimum of 384 bits of entropy must be provided by the calling application. The calling application shall provide full entropy for 256-bit keys. Due to the entropy being provided by an external source, the following caveat applies: When operated in approved mode. No assurance of the minimum strength of generated SSPs (e.g., keys). The Module performs DRBG health tests (Instantiate, Generate, Reseed) as defined in section 11.3 of SP800-90A. (Key Management) The application that uses the module is responsible for appropriate destruction and zeroization of the keys. The Module provides API calls for key allocation and destruction. These API calls overwrite the memory occupied by the key information with zeros before that memory is de-allocated. See Key Destruction Service below. (Key/CSP Authorized Access and Use) An authorized application has access to all key data generated during the operation of the Module. (Key/CSP Storage) Private and public keys are provided to the module by the calling process and are destroyed when released by the appropriate API function calls. The module does not perform persistent storage of keys. (Key/CSP Zeroization) The application is responsible for calling the appropriate destruction functions from the API. These functions overwrite the memory with zeros and de-allocate the memory. In case of abnormal termination, the Linux kernel overwrites the keys in physical memory before the physical memory is allocated to another process.
| Physical Port | Logical Interface | Data that passes over port/interface |
|---|---|---|
| General Purpose Computer | Data Input | Input parameters of API function calls |
| General Purpose Computer | Data Output | Output parameters of API function calls |
| General Purpose Computer | Control Input | API Function Calls |
| General Purpose Computer | Control Output | API Function Calls |
| General Purpose Computer | Status Output | For approved mode, function calls returning status information and return codes provided by API function calls |
| General Purpose Computer | Power | None |
(Key Destruction Service) A context structure is associated with every cryptographic algorithm available in the Module. Context structures hold sensitive information such as cryptographic keys. These context structures must be destroyed via respective API calls when the application software no longer needs to use a specific algorithm. This API call will zeroize all sensitive information before freeing the dynamically allocated memory. This will occur while the application process is still in memory, but no longer needs the specific algorithm, which protects the sensitive information from compromise. See the Mocana Cryptographic API Reference for additional information.
The Module’s ports and associated FIPS defined logical interface categories are listed in Table 6
The module is Level 1 and does not implement any Authentication techniques. The Module supports one operator role, Cryptographic Officer (CO). The cryptographic module does not support multiple concurrent users, bypass capability, or a maintenance role. The Cryptographic Officer role is implicitly identified by the service that is requested.
| Roles | Service | Input | Output |
|---|---|---|---|
| CO | Event Logging | Install callback function | Return status of algorithm is Approved or non-Approved |
| CO | Integrity Status | Integrity Command to perform Integrity Check with no input parameter | Return OK or error condition |
| CO | Message Authentication | Authenticate command with input of a message, None, and AAD using CMAC, GMAC, and HMAC algorithm | Return MAC and status of OK or error condition |
| CO | Message Digest | Hash command with input data of a message using a SHA-2 or SHA-3 algorithm | Return hash with status of OK or error condition |
| CO | Random Number Generation | Generate command with input of entropy | Return random number with OK or error condition |
| CO | Self-tests | Execute command with input of list CAST tests to be performed | Return OK or error condition |
| CO | Show module’s versioning information | Version command with no input parameter | SW Version: xxx and Git repository name |
| CO | Show status | Status command with no input parameter | Overall status of tests run - either OK or error condition |
| CO | Symmetric Encryption | Encrypt command with AES, input data, input size, key, key size, mode of operation | Return the ciphertext and status of OK or error condition |
| CO | Symmetric Decryption | Decrypt command with AES, input data, input size, key, key size, mode of operation | Return the plaintext and status of OK or error condition |
| CO | Zeroize | Zeroize command, no input parameter | Return OK or an error condition |
All services implemented by the Module are listed in Table 8 and Table 9 below. The SSPs modes of access shown in Table 8 are defined as:
| Service | Description | Approved Security Functions | Keys and/or SSPs | Roles | Access rights to Keys and/or SSPs | Indicator |
|---|---|---|---|---|---|---|
| Integrity Status | Perform integrity test and return the status | N/A | N/A | CO | E | N/A |
| Key Derivation (HMAC) | Extract input key material and expand into additional keys | HMAC-SHA-1 HMAC-SHA2- 224, -256, -384, - 512 HMAC-SHA3- 224, -256, -384, - 512, Shake128, Shake256 | HMAC- KDF psuedor andom Key | CO | W, E | Approved |
| Keyed Message Digest (CMAC) | Generate a keyed-hash message authentication code | AES-CMAC | AES Keys | CO | W, E | Approved |
| Keyed Message Digest (GMAC) | Generate a keyed-hash message authentication code | AES-GMAC | AES Keys | CO | W, E | Approved |
| Keyed Message Digest (HMAC) | Generate a keyed-hash message authentication code | HMAC-SHA-1, HMAC-SHA2- 224, -256, -384, - 512 HMAC-SHA3- 224, -256, -384, - 512, Shake128, Shake256 | HMAC Key | CO | W, E | Approved |
| Message Hash | Generate a SHA-1, SHA-2, or SHA-3 message digest | SHA-1, SHA2- 224, SHA2-256, SHA2-384, SHA2-512, SHA3-224, SHA3-256, SHA3-384, SHA3-512 | N/A | CO | N/A | Approved |
| Random Number Generation | Generate and Re-seed random numbers. | AES-CTR DRBG Generation | Seed, Nonce and DRBG Values | CO | R | Approved |
| AES-CTR DRBG Re-seed | DRBG Entropy Input | CO | W | Approved |
| Service | Description | Approved Security Functions | Keys and/or SSPs | Roles | Access rights to Keys and/or SSPs | Indicator |
|---|---|---|---|---|---|---|
| Self-tests | Initiate self-tests (Software Integrity Check, DRBG KAT, SHA-256 KAT, HMAC-SHA-256 KAT) | N/A | N/A | CO | R, E | Approved |
| Show Status | Return status of the module state, exit codes, kernel log (dmesg). | N/A | N/A | CO | E | N/A |
| Show Version | Return module version information | N/A | N/A | CO | E | N/A |
| Symmetric Encryption/ Decryption | Perform encryption and decryption on a block of data using the shared key | AES-CBC, AES- CTR, AES-ECB, AES-CFB, AES- OFB, AES-XTS, Encryption | AES Keys | CO | W, E | Approved |
| AES-CBC, AES- CTR, AES-ECB, AES-CFB, AES- OFB, AES-XTS, Decryption | AES Keys | CO | W, E | |||
| Symmetric Encryption/ Decryption with Message Digest (CCM) | Perform encryption and decryption on a block of data using shared key and message authentication code | AES-CCM | AES Keys | CO | W, E | Approved |
| Symmetric Encryption/ Decryption with Message Digest (GCM) | Perform encryption and decryption on a block of data using shared key and message authentication code | AES-GCM | AES Keys | CO | W, E | Approved |
| Zeroize | Destroys all SSPs | N/A | All SSPs | CO | Z | Approved |
| Service | Description | Algorithm Accessed | Roles | Indicator | |||||
|---|---|---|---|---|---|---|---|---|---|
| Key Derivation (HMAC) | Extract input key material and expand into additional keys | HMAC-KDF-SHA1 | CO | Non-Approved |
Table 9– Non-Approved Services
| Service | Description | Algorithm Accessed | Roles | Indicator |
|---|---|---|---|---|
| Keyed Message Digest | HMAC generation with key size less than 112 bit; non- compliant | HMAC-SHA1, HMAC-MD5 | CO | Non-Approved |
| Message Digest | Generate an MD2, MD4, or MD5 message digest | MD2, MD4, MD5 | CO | Non-Approved |
| Message Digest | Generate a SHA-1 message digest | SHA-1 | CO | Non-Approved |
| Random Number Generation | FIPS 186-2 Random Number Generation | RNG | CO | Non-Approved |
| Symmetric Encryption/ Decryption | Non-approved algorithm | AES-EAX, AES-XCBC, DES | CO | Non-Approved |
| Symmetric Encryption/ Decryption | AES GCM encryption/decryption for 256 implementation | AES-GCM 64k/GMAC 64k | CO | Non-Approved |
| Symmetric Encryption/ Decryption | Non-approved algorithm | Triple-DES | CO | Non-Approved |
The Module is composed of the following single software component packaged as a kernel object.
Figure 3 - Code Example for Self-Test The operator can also explicitly initiate the integrity test on demand by calling the API function: FIPS_StartupSelftestIntegrity(void). Pre-Integrity Check Power up Self Tests: To fulfill the Implementation Guidance 10.3.A, the algorithms used to perform the integrity check are executed before the module integrity check. These are lists in more detail in Table 18 Pre-Operational Self-Test. The following algorithm KAT tests are performed in the FIPS_powerupSelfTest implementation before the integrity check:
| Method | Description |
|---|---|
| G1 | Generated external (logical) to the Module and input from calling application |
| G2 | Derived from the DRBG input per SP800-90Ar1 |
| S1 | Only stored in volatile memory (RAM). |
| E1 | Input in plaintext (client key) |
| E2 | Output in plaintext |
| Z1 | Zeroized by the Key destruction service by overwriting with a fixed pattern of zeros. |
Post-Integrity Check Algorithm Self Tests: As a startup optimization, the self-tests for all other approved algorithms are implemented as Conditional Self-Tests (see Table Table 16). These KAT Self-Tests are performed on-demand. This means that the first time an approved algorithm is used, the CAST test for that algorithm is tested before the approved algorithm processing is done.
The Module has a modifiable operational environment under the FIPS 140-3 definitions. The tested operational environments are listed in Table 2 above. In addition, Digicert claims that the Module can be ported on the Operational Environment(s) listed in Table 3; no statement is made regarding the correct operation of the Module on the Vendor Affirmed Operational Environments.
The FIPS 140-3 Physical Security requirements are not applicable because the Cryptographic Module is software only.
The Module does not implement any mitigation method against non-invasive attack.
The SSPs access methods are described in Table 10 below: Table 10 – SSP Management Methods All SSPs used by the Module are described in this section. All usage of these SSPs by the Module is described in the services detailed in Section 4.2.
| CSP | Strengt h (in bits) | Security Functio n / Cert. | Generation | Import /Export | Establish -ment | Storage | Zeroiza- tion | Use / Related SSPs | ||
|---|---|---|---|---|---|---|---|---|---|---|
| DRBG Entropy Input | 384 bits for 384 entropy bits | 384 bits | CTR DRBG | CTR | N/A | E1 | N/A | S1 | Z1 | Used to |
| for 384 | DRBG | seed the | ||||||||
| entropy | DRBG for | |||||||||
| bits | key generation | |||||||||
| Seed, Nonce and DRBG values | 384 bits for 384 entropy bits | CTR DRBG | G2 | N/A | N/A | S1 | Z1 | Used by the DRBG to generate random bits | ||
| AES Keys | 128 to 256 bits | AES | N/A | E1 | N/A | S1 | Z1 | Used during AES encryption , decryption , CMAC and GMAC operations | ||
| HMAC Key | 112 to 256 bits | HMAC | N/A | E1 | N/A | S1 | Z1 | Used during HMAC- SHA-1, HMAC- SHA-224, 256, 384, 512, HMAC- SHA3- 224, 256, 384, 512 operations | ||
| HMAC- KDF Psuedora ndom Key | 112 to 256 bits | HMAC- KDF | N/A | E1 | N/A | S1 | Z1 | Used in deriving other keys per SP 800-108 with HMAC- SHA2- 224, 256, 384, 512, HMAC- |
CSP
Strengt h (in bits)
Security Functio n / Cert.
Generation
Import /Export
Establish -ment
Storage
Zeroiza- tion
Zeroiza- tion
Use / Related SSPs SHA3- 224, 256, 384, 512 operations
| Entropy Source | Minimum number of bits of entropy | Details | |
|---|---|---|---|
| External Entropy Source (API) | 384 | The calling application of the Module shall use entropy sources that meet the security strength required for the random bit generation mechanism. A minimum of 384 bits of entropy must be provided by the calling application. The module does not exercise control over the amount or quality of the entropy that is provided to it. |
| Security Function | Method | Description | Error state | |
|---|---|---|---|---|
| DRBG AES-256 CTR-DRBG | DRBG AES-256 CTR-DRBG | KAT | Critical Function Test (Instantiation, Generation, Reseed): This CAST is performed before the Software Integrity Check. This is the first KAT performed | ES2 |
| HMAC-SHA-256 (Cert. A845) | KAT | Software Integrity on shared lib .so file, result is compared against the hash value in the signature .sig file. | ES1 |
Note: The module does not have PSPs. Table 12 – Non-Deterministic Random Number Generation Specification
The Module performs self-tests to ensure the proper operation of the Module. Per FIPS 140-3 these are categorized as either pre-operational self-tests or conditional self-tests.
Security Level 1 - Pre-operational self–tests are available on demand by power cycling or reloading the Module into memory. The Module is available to perform services only after successfully completing the pre-operational self-tests. The Module performs the following pre-operational self-tests: Table 13 – Pre-Operational Self-Test Note: The module does not perform pre-operational bypass tests. Bypass is not implemented.
The Module performs the following conditional self-tests:
| Security Function | Method | Description | Error state | |
|---|---|---|---|---|
| AES-ECB, CBC, | KAT | AES encryption and decryption KAT – Inclusive to AES | ES2 | |
| OFB, CFB, CTR | CBC, CFB, CTR, ECB, OFB with 256-bit key | |||
| AES-XTS | KAT | AES encryption and decryption KAT with 128-bit key | ES2 | |
| AES-CCM, | KAT | AES encryption and decryption with CBC-MAC | ES2 | |
| CMAC | authentication with 128-bit key | |||
| AES-GCM, | KAT | AES encryption and decryption with GMAC | ES2 | |
| GMAC | authentication with 128-bit key – for 4k version | |||
| AES-GCM, | KAT | AES encryption and decryption with GMAC | ES2 | |
| GMAC | authentication with 128-bit key – for 64k version | |||
| DRBG: AES-256 CTR-DRBG | DRBG: AES-256 | KAT | Critical Function Test (Instantiation, Generation, | ES2 |
| CTR-DRBG | Reseed): This CAST is performed before the Software Integrity Check. This is the first KAT performed. This test also runs when Self-Tests are called or conditionally when DRBG is called. | |||
| HMAC-SHA2 | KAT | Calculate a cryptographic hash-based authentication on data for SHA-1, SHA-224, SHA-256*, SHA-384, SHA- 512 * HMAC-SHA-256 instantiation: This CAST is performed before the Software Integrity Check. This is the third KAT performed. | ES2 | |
| HMAC-SHA3 | KAT | Calculate a cryptographic hash-based authentication on data for SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE-128, SHAKE-256 | ES2 | |
| HMAC-KDF- | KAT | Extract and expand the input key into additional keys | ES2 | |
| SHA | using SHA-1, SHA-224, -256, -384, -512 | |||
| HMAC-KDF- SHA3 | HMAC-KDF- | KAT | Extract and expand the input key into additional keys | ES2 |
| SHA3 | using SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE-128, SHAKE-256 | |||
| SHA | KAT | Calculate a cryptographic hash function on the data for SHA-1, SHA-224, SHA-256*, SHA-384, SHA-512 * SHA-256 instantiation: This CAST is performed before the Software Integrity Check. This is the second KAT performed. | ES2 | |
| SHA3 | KAT | Calculate a cryptographic hash function on the data for SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE- 128, SHAKE-256 | ES2 | |
| Triple-DES CBC | KAT | 3-key Triple-DES encryption and decryption tested using a 192-bit key | ES2 |
Table 14 – Conditional Self-Tests
| Error state | Description | Indicator |
|---|---|---|
| ES1 | The Module fails the software integrity pre- operational self-test. | The Module enters the disable Crypto Module error state and outputs status of ERR_FIPS_INTEGRITY_FAIL, otherwise it indicates successful completion by outputting the OK status. |
| ES2 | The Module fails the software CAST test with a specified error number. | The Module enters the disable Crypto Module error state and outputs a specific error status; otherwise, it indicates successful completion by enable Crypto Module with OK status. |
The self-tests error states and status indicator are described in table below: Table 15 – Error States and Indicators
Installation is performed by placing the module in the target file system during the OEM or ISV’s manufacturing process. The module initialization is performed automatically by the operating system’s loader when a calling application is loaded into memory. Operation of the module is controlled by the calling application’s use of the module’s API functions. There is no specific guidance for Administrator or non-Administrators.
The Cryptographic Officer will install the Module and associated signature of the Module into the proper location within the computer system. For example, the kernel module and signature file may be installed in the /usr/local/lib directory, which is protected by Linux access control mechanisms. The Module is protected from modification by the integrity self-test performed during start-up. The Module is initialized by the operating system upon loading the Module into memory for use by calling applications. The Module must be operated in approved mode to ensure that FIPS 140-3 validated cryptographic algorithms and security functions are used.
The Module does not implement any mitigation method against other attacks beyond the requirements for FIPS 140-3 Level 1 cryptographic modules.
The following standards are referred to in this Security Policy.
| Abbreviation | Full Specification Name |
|---|---|
| [FIPS140-3] | Security Requirements for Cryptographic Modules, March 22, 2019 |
| [ISO19790] | International Standard, ISO/IEC 19790, Information technology — Security techniques — Test requirements for cryptographic modules, Third edition, March 2017 |
| [ISO24759] | International Standard, ISO/IEC 24759, Information technology — Security techniques — Test requirements for cryptographic modules, Second and Corrected version, 15 December 2015 |
| [IG] | Implementation Guidance for FIPS PUB 140-3 and the Cryptographic Module Validation Program, 10/07/22 |
| [108] | NIST Special Publication 800-108, Recommendation for Key Derivation Using Pseudorandom Functions (Revised), October 2009 |
| [131A] | Transitions: Recommendation for Transitioning the Use of Cryptographic Algorithms and Key Lengths, Revision 2, March 2019 |
| [132] | NIST Special Publication 800-132, Recommendation for Password-Based Key Derivation, Part 1: Storage Applications, December 2010 |
| [133] | NIST Special Publication 800-133, Recommendation for Cryptographic Key Generation, Revision 2, June 2020 |
| [135] | National Institute of Standards and Technology, Recommendation for Existing Application-Specific Key Derivation Functions, Special Publication 800-135rev1, December 2011. |
| [186] | National Institute of Standards and Technology, Digital Signature Standard (DSS), Federal Information Processing Standards Publication 186-4, July 2013. |
| [197] | National Institute of Standards and Technology, Advanced Encryption Standard (AES), Federal Information Processing Standards Publication 197, November 26, 2001 |
| [198] | National Institute of Standards and Technology, The Keyed-Hash Message Authentication Code (HMAC), Federal Information Processing Standards Publication 198-1, July, 2008 |
| [180] | National Institute of Standards and Technology, Secure Hash Standard, Federal Information Processing Standards Publication 180-4, August, 2015 |
| [202] | FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions, FIPS PUB 202, August 2015 |
| [38A] | National Institute of Standards and Technology, Recommendation for Block Cipher Modes of Operation, Methods and Techniques, Special Publication 800-38A, December 2001 |
| [38B] | National Institute of Standards and Technology, Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication, Special Publication 800- 38B, May 2005 |
| Abbreviation | Full Specification Name |
|---|---|
| [38C] | National Institute of Standards and Technology, Recommendation for Block Cipher Modes of Operation: The CCM Mode for Authentication and Confidentiality, Special Publication 800-38C, May 2004 |
| [38D] | National Institute of Standards and Technology, Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC, Special Publication 800-38D, November 2007 |
| [38E] | National Institute of Standards and Technology, Recommendation for Block Cipher Modes of Operation: The XTS-AES Mode for Confidentiality on Storage Devices, Special Publication 800-38E, January 2010 |
| [38F] | National Institute of Standards and Technology, Recommendation for Block Cipher Modes of Operation: Methods for Key Wrapping, Special Publication 800-38F, December 2012 |
| [56Ar3] | NIST Special Publication 800-56A Revision 3, Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography, April 2018 |
| [56Br2] | NIST Special Publication 800-56B Revision 2, Recommendation for Pair-Wise Key Establishment Schemes Using Finite Field Cryptography, March 2019 |
| [56Cr2] | NIST Special Publication 800-56C Revision 2, Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography, August 2020 |
| [67] | National Institute of Standards and Technology, Recommendation for the Triple Data Encryption Algorithm (TDEA) Block Cipher, Special Publication 800-67, May 2004 |
| [90A] | National Institute of Standards and Technology, Recommendation for Random Number Generation Using Deterministic Random Bit Generators, Special Publication 800-90A, Revision 1, June 2015. |
| [90B] | National Institute of Standards and Technology, Recommendation for the Entropy Sources Used for Random Bit Generation, Special Publication 800-90B, January 2018. |
| Acronym | Definition |
|---|---|
| AES | Advanced Encryption Standard |
| AES-NI | Advanced Encryption Standard New Instructions |
| API | Application Program Interface |
| CBC | Cipher Block Chaining |
| CCM | Counter with Cipher Block Chaining-Message Authentication Code |
| CMAC | Cipher-based Message Authentication Code |
| CMVP | Cryptographic Module Validation Program |
| CSP | Critical Security Parameter |
Table 17 – Acronyms and Definitions
| Acronym | Definition |
|---|---|
| CTR | Counter Mode |
| DES | Data Encryption Standard |
| DH | Diffie-Hellman |
| DRBG | Deterministic Random Bit Generator |
| DSA | Digital Signature Algorithm |
| ECC CDH | Elliptic Curve Cryptography Cofactor Diffie-Hellman |
| ECDSA | Elliptic Curve Digital Signature Algorithm |
| EMC | Electromagnetic Compatibility |
| EMI | Electromagnetic Interference |
| FIPS | Federal Information Processing Standard |
| GCM | Galois Counter Mode |
| HMAC | Hash Message Authentication Code |
| IG | Implementation Guidance |
| KAT | Known Answer Test |
| KDF | Key Derivation Function |
| KO | Kernel Object |
| KVM | Kernel-based Virtual Machine |
| PAA | Processor Algorithm Acceleration |
| PCT | Pair-wise Consistency Test |
| RNG | Random Number Generator |
| RSA | Rivest, Shamir and Adleman Algorithm |
| SHA | Secure Hash Algorithm |
| SHS | Secure Hash Standard |
| TDES | Triple-DES |
| XTS | XEX-based Tweaked-codebook mode with ciphertext Stealing |