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

Linux OpenSSL FIPS Provider

Certificate#4729StandardFIPS 140-3Level1TypeSoftwareEmbodimentMulti-Chip Stand AloneStatusHistoricalVendorKAYTUS SYSTEM PTE. LTD.
High review priority  ·  no TCB surface named  ·  OpenSSL upstream has published 40 CVEs since this module's initial validation  ·  last validated 24 months ago. How this is derived →

Certificate

StandardFIPS 140-3
Overall level1
Module typeSoftware
EmbodimentMulti-Chip Stand Alone
StatusHistorical
CaveatInterim validation. No assurance of the minimum strength of generated SSPs.
VendorKAYTUS SYSTEM PTE. LTD.

Approved Algorithms (76)

AlgorithmACVP Cert
AES-CBCA4198
AES-CBC-CS1A4198
AES-CBC-CS2A4198
AES-CBC-CS3A4198
AES-CCMA4198
AES-CFB1A4198
AES-CFB128A4198
AES-CFB8A4198
AES-CMACA4198
AES-CTRA4198
AES-ECBA4198
AES-GCMA4198
AES-GMACA4198
AES-KWA4198
AES-KWPA4198
AES-OFBA4198
AES-XTS Testing Revision 2.0A4198
Counter DRBGA4198
DSA KeyGen (FIPS186-4)A4198
DSA PQGGen (FIPS186-4)A4198
DSA PQGVer (FIPS186-4)A4198
DSA SigGen (FIPS186-4)A4198
DSA SigVer (FIPS186-4)A4198
ECDSA KeyGen (FIPS186-4)A4198
ECDSA KeyVer (FIPS186-4)A4198
ECDSA SigGen (FIPS186-4)A4198
ECDSA SigVer (FIPS186-4)A4198
Hash DRBGA4198
HMAC DRBGA4198
HMAC-SHA-1A4198
HMAC-SHA2-224A4198
HMAC-SHA2-256A4198
HMAC-SHA2-384A4198
HMAC-SHA2-512A4198
HMAC-SHA2-512/224A4198
HMAC-SHA2-512/256A4198
HMAC-SHA3-224A4198
HMAC-SHA3-256A4198
HMAC-SHA3-384A4198
HMAC-SHA3-512A4198
KAS-ECC CDH-Component SP800-56Ar3A4198
KAS-ECC-SSC Sp800-56Ar3A4198
KAS-FFC-SSC Sp800-56Ar3A4198
KAS-IFC-SSCA4198
KDA HKDF SP800-56Cr2A4198
KDA OneStep SP800-56Cr2A4198
KDA TwoStep SP800-56Cr2A4198
KDF ANS 9.42A4198
KDF ANS 9.63A4198
KDF SP800-108A4198
KDF SSHA4198
KMAC-128A4198
KMAC-256A4198
KTS-IFCA4198
PBKDFA4198
RSA KeyGen (FIPS186-4)A4198
RSA SigGen (FIPS186-4)A4198
RSA Signature PrimitiveA4198
RSA SigVer (FIPS186-4)A4198
Safe Primes Key GenerationA4198
Safe Primes Key VerificationA4198
SHA-1A4198
SHA2-224A4198
SHA2-256A4198
SHA2-384A4198
SHA2-512A4198
SHA2-512/224A4198
SHA2-512/256A4198
SHA3-224A4198
SHA3-256A4198
SHA3-384A4198
SHA3-512A4198
SHAKE-128A4198
SHAKE-256A4198
TLS v1.2 KDF RFC7627A4198
TLS v1.3 KDFA4198

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

flowchart LR
  %% Deterministic review-risk graph for Linux OpenSSL FIPS Provider
  %% 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<br/>Recovery</i>"]
    C3["[low] Self-test / status surface<br/>(referenced in text)<br/><i>Status Output<br/>Show Status<br/>Self-test</i>"]
    C5["[low] Protocol / secure-channel<br/>references (may be KDF<br/>names, not a live channel)<br/><i>TLS<br/>SSH<br/>HTTPS</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;
Underlying clues
flowchart LR
  %% Deterministic clue tier for Linux OpenSSL FIPS Provider
  %% 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<br/>Recovery</i><br/>src: text:keyword"]
    C3["[low] Self-test / status surface (referenced in text)<br/><i>Status Output<br/>Show Status<br/>Self-test</i><br/>src: text:keyword"]
    C5["[low] Protocol / secure-channel references (may be KDF names, not a live channel)<br/><i>TLS<br/>SSH<br/>HTTPS</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;

Security Policy, page by page

Page 1

Linux OpenSSL FIPS Provider v3.1 Non-Proprietary Cryptographic Module FIPS 140-3 Security Policy FIPS 140-3 Security Level: 1 Document version: 1.3 Date: June 29, 2024

Page 2

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. Table of Contents

Page 3

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 4

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. List of Tables List of Figures

Page 5

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

0 Introduction
0.1 Purpose

This is a non-proprietary Cryptographic Module Security Policy for the Linux OpenSSL FIPS Provider from KAYTUS SYSTEM PTE. LTD.. This Security Policy describes how the Linux OpenSSL FIPS Provider meets the security requirements of Federal Information Processing Standards (FIPS) Publication 140-3, which details the U.S. and Canadian Government requirements for cryptographic modules. More information about the FIPS 140-3 standard and validation program is available on the National Institute of Standards and Technology (NIST) and the Canadian Centre for Cyber Security (CCCS) Cryptographic Module Validation Program (CMVP) website at https://csrc.nist.gov/projects/cryptographic-module-validation-program. This document also describes how to run the Linux OpenSSL FIPS Provider in a secure Approved mode of operation. This policy was prepared as part of the Level 1 FIPS 140-3 validation. The Linux OpenSSL FIPS Provider is referred to in this document as the provider, cryptographic module, or the module.

0.2 References

This document deals only with operations and capabilities of the module in the technical terms of a FIPS 140-3 cryptographic module security policy. More information is available on the module from the following sources: • The search page on the CMVP website (https://csrc.nist.gov/Projects/cryptographic-modulevalidation-program/Validated-Modules/Search) can be used to locate and obtain vendor contact information for technical or sales-related questions about the module.

Page 6
SectionFIPS 140-3 SectionSecurity 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 attacks1

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

1 General Overview

This document is the non-proprietary FIPS 140-3 Security Policy of the Linux OpenSSL FIPS Provider cryptographic module. For the purpose of the FIPS 140-3 validation, the module is a software cryptographic module validated at overall security level 1. The following table shows the claimed security level for each of the twelve sections that comprise the FIPS 140-3 standard.

Page 7
ComponentDescription
fips.soShared library for the provider implementation v3.1
fipsmodule.cnfFile with HMAC authentication code for integrity

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

2 Cryptographic Module Specification
2.1 Module Specification

Linux OpenSSL FIPS Provider is a software library that provides a C-language Application Program Interface (API) for use by application that require cryptographic functionality. In the OpenSSL, providers are containers for algorithm implementations. Whenever a cryptographic algorithm is used via the OpenSSL high level APIs a provider is selected. It is that provider implementation that actually does the required work. Based on the OpenSSL new approach, the Linux OpenSSL FIPS Provider is a provider that can be used with any OpenSSL version from 3.0.4. The cryptographic boundary of the Module is the provider itself, a dynamically loadable library. The module performs no communication other than with the calling application via APIs that are invoked by the module. Based on that, the cryptographic boundary consists of the following shared library and the integrity check file used for the integrity test. The following table enumerates the files that comprise the module (surrounded with red lines in Figure 1

Page 8

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. Figure 1

Page 9
#Operating systemHardware PlatformProcessorPAA/Acceleration
1Linux 5.4.85KR2280V2 Rack ServerAST2600 (ARM Cortex A7)N/A
2Linux 5.15.50KR2280V2 Rack ServerAST2600 (ARM Cortex A7)N/A
CAVP CertAlgorithm and StandardMode / MethodDescription / Key Size / Key StrengthUse / Function
A4198AES [SP 800-38D] [SP 800-38C]GCM, CCMKey Length: 128, 192, 256Authenticated Symmetric Encryption and Decryption
A4198AES [SP 800-38B] [SP 800-38D]CMAC, GMACKey Length: 128, 192, 256Generation and Verification of Message authentication
A4198AES [SP 800-38A]ECB, CBC, CBC-CS1, CBC-CS2, CBC-CS3, OFB, CFB1, CFB8, CFB128, CTRKey Length: 128, 192, 256Symmetric Encryption and Decryption
A4198AES [SP 800-38F]KW, KWPKey Length: 128, 192, 256Key Wrapping and Unwrapping
A4198AES [SP 800-38E]XTSKey Length: 128, 256Symmetric Encryption and Decryption
A4198SHA-3, SHAKE [FIPS 202]SHA3-224, SHA3- 256, SHA3-384, SHA3-512 SHAKE-128, SHAKE- 256N/AMessage Digest
A4198SHS [FIPS 180-4]SHA-1 SHA2-224, SHA2- 256, SHA2-384, SHA2-512, SHA2- 512/224, SHA2- 512/256N/AMessage Digest
A4198HMAC [FIPS 198-1]SHA-1N/AMessage Authentication

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. Table 3 – Software Tested Operational Environments Note: The operational environments include OpenSSL version 3.0.4. There is no additional vendor affirmed operating environments.

2.2 Algorithms Implementation

The module supports the following Approved Algorithms listed in Table 4 below: Table 4 – Approved Algorithms

Page 10
SHA2-224, SHA2- 256, SHA2-384, SHA2-512, SHA2- 512/224, SHA2- 512/256 SHA3-224, SHA3- 256, SHA3-384, SHA3-512
A4198KMAC [SP 800-185]KMAC-128, KMAC- 256KMAC-128, KMAC-256Message Authentication
A4198KAS-ECC-SSC [SP 800-56Arev3]Ephemeral Unified Domain Parameter Generation Domain Parameter Validation Key Pair Generation Full Public Key ValidationP-224, P-256, P-384, P-521, K- 233, K-283, K-409, K-571, B- 233, B-283, B-409, B-571Shared Secret Computation for Key Agreement
A4198KAS-FFC-SSC [SP 800- 56Arev3]dhEphem Domain Parameter Generation Domain Parameter Validation Key Pair Generation Full Public Key Validationffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192 safe prime groups per SP 800-56Ar3Shared Secret Computation for Key Agreement
A4198KAS-RSA-SSC [SP 800- 56Brev2]KAS1, KAS2 Key Generation Methods: rsakpg1-crt, rsakpg2-crt, rsakpg1-basic, rsakpg2-basic, rsakpg1-prime- factor, rsakpg2-prime- factorModulus: 2048, 3072, 4096, 6144, 8192Shared Secret Computation for Key Agreement
A4198CVL [SP 800-56Arev3] KAS-ECC-CDHP-224, P-256, P-384, P-521 , K- K-233, K-283, K-409, K-571, B- 233, B-283, B-409, B-571ECC CDH Primitive in Shared Secret Computation
A4198Safe PrimesKey Generation for DHSafe Prime Groups: ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192Asymmetric Key Generation
Key Verification for DHSafe Prime Groups: ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192Asymmetric Key Verification

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 11
A4198DSA [FIPS 186-4]Key Pair Generation Signature Generation Signature Verification PQG Generation PQG VerificationL = 2048, N = 224 L = 2048, N = 256 L = 3072, N = 256 L = 2048, N = 224 L = 2048, N = 256 L = 3072, N = 256 With all SHA-2 sizes L = 1024, N = 160 L = 2048, N = 224 L = 2048, N = 256 L = 3072, N = 256 With all SHA sizes L = 2048, N = 224 L = 2048, N = 256 L = 3072, N = 256 With all SHA-2 sizes L = 1024, N = 160 L = 2048, N = 224 L = 2048, N = 256 L = 3072, N = 256 With all SHA sizesAsymmetric Key Generation Digital Signature Generation Digital Signature Verification Primitive Generation Primitive Verification
A4198RSA [FIPS 186-4]Key Pair Generation ANSI X9.31Modulus: 2048, 3072, 4096Asymmetric Key Generation
Signature Generation (PKCS#1 v1.5)Modulus: 2048, 3072, 4096 With SHA-224, SHA-256, SHA- 384 and SHA-512Digital Signature Generation
Signature Generation (ANSI X9.31)Modulus: 2048, 3072 and 4096 With SHA-256, SHA-384 and SHA-512Digital Signature Generation
Signature Generation (PKCS PSS)Modulus: 2048, 3072 With SHA-224, SHA-256, SHA- 384, SHA-512, SHA-512/224 and SHA-512/256 Modulus: 4096 With SHA-224, SHA-256, SHA- 384 and SHA-512Digital Signature Generation
Signature Verification (PKCS PSS and PKCS#1 v1.5)Modulus: 1024, 2048, 3072, 4096 With SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA- 512/224 and SHA-512/256Digital Signature Verification

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 12
Signature Verification (ANSI X9.31)Modulus: 1024, 2048, 3072, 4096 With SHA-1, SHA-256, SHA-384 and SHA-512Digital Signature Verification
A4198CVL [FIPS 186-4]RSA Signature Generation PrimitiveModulus: 2048Digital Signature Generation Primitive
A4198ECDSA [FIPS 186-4]Key Pair GenerationCurves: P-224, P-256, P-384, P-521 K-233, K-283, K-409, K-571 B-233. B-283, B-409, B-571 Testing CandidatesAsymmetric Key Generation
Key Pair VerificationCurves: P-192, P-224, P-256, P-384, P- 521 K-163, K-233, K-283, K-409, K- 571 B-163, B-233. B-283, B-409, B- 571Asymmetric Key Verification
Signature GenerationCurves: P-224, P-256, P-384, P-521 K-233, K-283, K-409, K-571 B-233. B-283, B-409, B-571 With all SHA-2 sizesDigital Signature Generation
Signature VerificationCurves: P-192, P-224, P-256, P-384, P- 521 K-163, K-233, K-283, K-409, K- 571 B-163, B-233. B-283, B-409, B- 571 With SHA-1 and all SHA-2 sizesDigital Signature Verification
A4198DRBG [SP 800-90Arev1]Hash DRBGSHA-1 SHA2-224, SHA2-256, SHA2- 384, SHA2-512, SHA2-512/224, SHA2-512/256Deterministic Random Number Generation
HMAC DRBGSHA-1 SHA2-224, SHA2-256, SHA2- 384, SHA2-512, SHA2-512/224, SHA2-512/256
CTR DRBGAES-128, AES-192, AES-256
N/AKTS [SP 800-38F]AES KW, KWPAES KW, KWPKey Transport

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 13
AES CCM AES GCM (AES Cert #A4198; key establishment methodology provides between 128 and 256 bits of encryption strength)AES CCM AES GCM
AES and HMAC (AES Cert #A4198 and HMAC Cert #A4198; key establishment methodology provides between 128 and 256 bits of encryption strength)AES (any mode) and HMAC
AES and CMAC, GMAC (AES Cert #A4198 and AES Cert #A4198; key establishment methodology provides between 128 and 256 bits of encryption strength)AES (any mode) and CMAC, GMAC
A4198KTS-RSA [SP 800-56Brev2]Key encapsulation with RSA-OAEP, RSADP, RSAEP (Cert #A4198; key establishment methodology provides between 112 and 176 bits of encryption strength)Modulus: 2048, 3072, 4096, 6144Key Transport
A4198KDA [SP 800-56Crev2]One-Step KDF (Section 4), Two Step KDF (Section 5)N/AKey Derivation Function
A4198HKDF [SP 800- 56Crev2]HMAC-based Extracted-and- Expand Key Derivation FunctionN/AKey Derivation Function
A4198PBKDF2 [SP 800-132]Option 1aHMAC-SHA-1, SHA2-224, 256, 384, 512, 512/224, 512/256Password-Based Key Derivation

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 14
(C = 1 - 10.000, sLen = 16 – 512 bytes)
A4198KBKDF [SP 800- 108rev1]Counter, FeedbackCMAC AES128, CMAC AES192, CMAC AES256, HMAC-SHA-1, HMAC-SHA2-224, 256, 384, 512Key-Based Key Derivation Function
A4198CVL [SP 800-135rev1]TLS 1.2 KDF RFC 7627 (SHA2-256, 384, 512), SSHv2 KDF (SHA-1, SHA2-224, 256, 384, 512), ANSI X9.63-2001 KDF (SHA2-224, 256, 384, 512), ANSI X9.42-2001 KDF (SHA- 1, SHA2-224, 256, 384, 512, 512/224, 512/256, SHA3- 224, 256, 384, 512).Key Derivation Function No parts of these protocols, other than the KDFs, have been tested by the CAVP or CMVP.
A4198CVL [RFC 8446] (Section 7.1)TLS 1.3 KDF (SHA2-256, 384)Key Derivation Function No parts of these protocols, other than the KDFs, have been tested by the CAVP or CMVP.
Algorithm and StandardCaveatUse / Function
CKG [SP 800 133rev2]N/AKey Generation Section 4 (Using the unmodified Output of a RBG) Section 6.1 (Direct Generation of Symmetric Keys) Section 6.2 (Derivation of Symmetric Keys)
NameTypeDescriptionSF Properties [O]Algorithms / CAVP Cert
KTS1KTSKey Transport scheme using AES KW or AES KWPPer IG D.G, approved key transport method. Provides between 128 and 256 bits of encryption strength.AES-KW/A4198 AES-KWP/A4198
KTS2KTSKey Transport scheme using AES CCM or AES GCMPer IG D.G, approved key transport method. Provides between 128 and 256 bits of encryption strength.AES-CCM/A4198 AES-GCM/A4198

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. NOTE: Per [IG] 9.3.A, scenario 2b, no assurances of minimum strength of generated SSP are declared. The minimum entropy strength expected is 112 bits. Note: The PBKDF algorithm is only used for internal pins and keys storage according FIPS SP 800-132. The module includes the following vendor-affirmed security method in the next table: Table 5

Page 15
KTS3KTSKey Transport scheme using any mode of AES with HMACPer IG D.G, approved key transport method. Provides between 128 and 256 bits of encryption strength.AES-CBC/A4198 AES-CBC-CS1/A4198 AES-CBC-CS2/A4198 AES-CBC-CS3/A4198 AES-CFB1/A4198 AES-CFB128/A4198 AES-CFB8/A4198 AES-CTR/A4198 AES-ECB/A4198 AES-OFB/A4198 HMAC-SHA-1/A4198 HMAC-SHA2-224/A4198 HMAC-SHA2-256/A4198 HMAC-SHA2-384/A4198 HMAC-SHA2-512/A4198 HMAC-SHA2- 512/224/A4198 HMAC-SHA2- 512/256/A4198 HMAC-SHA3-224/A4198 HMAC-SHA3-256/A4198 HMAC-SHA3-384/A4198 HMAC-SHA3-512/A4198
KTS4KTSKey Transport scheme using any mode of AES with AES CMAC or AES GMACPer IG D.G, approved key transport method. Provides between 128 and 256 bits of encryption strength.AES-CBC/A4198 AES-CBC-CS1/A4198 AES-CBC-CS2/A4198 AES-CBC-CS3/A4198 AES-CFB1/A4198 AES-CFB128/A4198 AES-CFB8/A4198 AES-CMAC/A4198 AES-CTR/A4198 AES-ECB/A4198 AES-GMAC/A4198 AES-OFB/A4198
KTS5KTSKey Transport scheme using RSAPer IG D.G, approved key transport method. Provides between 128 and 176 bits of encryption strength.KTS-IFC/A4198

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 16
KAS-ECCKASUses the KAS_ECC_SSC shared secret computation which is then fed into one of the module's SP 800-135 compliant KDFs (TLS 1.2 and 1.3, SSHv2, ANSI X9.63-2001 and ANSI X9.42-2001) to derive keys for their respective industry standard protocolsD.F scenario 2, path (1), no key confirmation, key derivation per IG 2.4.BKAS-ECC-SSC Sp800- 56Ar3/A4198 KDF TLS 1.2 RFC7627/A4198 KDF SSHv2/A4198 KDF ANSI X9.63/A4198 KDF ANSI X9.42/A4198 TLS v1.3 KDF/A4198
KAS-FFCKASUses the KAS_FFC_SSC shared secret computation which is then fed into one of the module's SP 800-135 compliant KDFs (TLS 1.2 and 1.3, SSHv2, ANSI X9.63-2001 and ANSI X9.42-2001) to derive keys for their respective industry standard protocolsD.F scenario 2, path (1), no key confirmation, key derivation per IG 2.4.BKAS-FFC-SSC Sp800- 56Ar3/A4198 KDF TLS 1.2 RFC7627/A4198 KDF SSHv2/A4198 KDF ANSI X9.63/A4198 KDF ANSI X9.42/A4198 TLS v1.3 KDF/A4198
KAS-RSAKASUses the KAS_RSA_SSC shared secret computation which is then fed into one of the module's SP 800-135 compliant KDFs (TLS 1.2 and 1.3, SSHv2, ANSI X9.63-2001 and ANSI X9.42-2001) to derive keys for their respective industry standard protocolsD.F scenario 1, path (1), no key confirmation, key derivation per IG 2.4.BKAS-IFC-SSC Sp800- 56Br2/A4198 KDF TLS 1.2 RFC7627/A4198 KDF SSHv2/A4198 KDF ANSI X9.63/A4198 KDF ANSI X9.42/A4198 TLS v1.3 KDF/A4198

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

2.3 Modes of Operation

The module supports only one mode of operation: Approved. The module will be in Approved mode when all pre-operational self-tests have been completed successfully, and only Approved security functions can be invoked (see Table 4 and Table 5 above). The module does not support degraded operation.

Page 17
Physical PortLogical InterfaceData that passes over port/interface
Keyboard, Serial port, Ethernet port, NetworkControl InputAPI function calls, API input parameters for control.
Ethernet ports, KeyboardData InputAPI input parameters, kernel I/O files on file system.
Ethernet ports, DisplayData OutputAPI output parameters, kernel I/O files on file system.
Serial port, Ethernet port, Network, DisplayStatus OutputAPI return codes.

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

3 Cryptographic Module Interfaces

As a software module, the provider does not have physical ports. For the purpose of the FIPS 140-3 validation, the module interfaces are defined as Software or Firmware Module Interfaces (SMFI), and the physical ports are interpreted to be the physical ports of the hardware platform on which the module runs. The logical interface is a C language Application Program Interface (API) through which calling application request services. In addition, data output interface is inhibited when the module is performing pre-operational and conditional tests, zeroisation or when the module is in the error state. The following table summarizes the FIPS 140-3 logical interfaces: Table 7 – Ports and Interfaces The module does not implement either control output interface or power interface (it is not required since the cryptographic module is a software module).

Page 18
NameTypeOperator TypeAuthentication Methods
UserRoleOtherN/A
Crypto OfficerRoleCON/A

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

4 Roles, Services and Authentication

The sections below describe the module's authorized roles, services, and operator authentication method employed.

4.1 Authorized Roles and Authentication

The module supports the following roles: Crypto Officer role, which performs the module installation and configuration; and User role, which performs all services with the exception of module installation and configuration. Table 8 – Roles The module does not support authentication mechanisms. The operator implicitly assumes the set of roles consisting of the CO and User when accessing the module services. The module does not support concurrent operators.

4.2 Module Services

All services implemented by the module are listed in tables below. The approved services are shown in Table 9. Please note that the Sensitive Security Parameters (SSPs) listed below indicate the type of access required using the following notation:

Page 19
NameRolesDescriptionInputOutputSSP and Type of AccessApproved Security FunctionIndicator
InitializationCOPerform initialization of the moduleModule Default Entry PointNoneNoneNoneNone
Show StatusUserReturn the status of the moduleAPI call parametersModule StatusNoneNoneNone
Show version informationUserDisplay the module name and versionAPI call parametersModule Name and VersionN/AN/ANone
Self-test on demandUserPerform pre- operational and conditional self-testsPower cycle and/or API call parametersStatusNoneMessage Digest, Digital Signature Generation and Verification, Symmetric Encryption and Decryption, Random Number Generation, Key Derivation, Symmetric Digest, Keyed Hash, Key Agreement.Return code from function call
ZeroizationUserZeroize and de- allocate memory containing sensitive dataPower cycle or using provided free APIsStatusAll SSP's - ZN/ANone

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. Table 9 – Approved Services

Page 20

Symmetric Encryption/Decryption

User

Encrypt/Decrypt plaintext/ciphertext using supplied key

API call parameters: key, IV, plaintext/ciphertext

Status, ciphertext/plaintext

AES ECB key

Symmetric Encryption and Decryption

Return code from function call

Linux OpenSSL FIPS Provider v3.1 Cryptographic Module KAYTUS SYSTEM PTE. LTD. W, X X W, X X W, X X W, X X

Page 21
NameRolesDescriptionInputOutputSSP and Type of AccessApproved Security FunctionIndicator
AES CTR IV – W, X
Message Authentication CodeUserGenerate or verify data integrity with CMAC and GMAC.API call parameters: key, data, authenticated message digest to verify.Status, authenticated message digestAES CMAC key – R, X AES GMAC key – R, XMessage Authentication CodeReturn code from function call
Asymmetric Key GenerationUserGenerate RSA, DSA, ECDSA, ECDH, DH keys.API call parameters: Curve, modulus, group, key length (N, L) Key pair to be verifiedStatus, Generated private and public key pairRSA key pair – G, R, X DSA key pair – G, R, X ECDSA key pair – G, R, X DH key pair – G, R, XAsymmetric Key Generation Asymmetric Key Verification Primitive Generation Primitive VerificationReturn code from function call
Digital SignatureUserGenerate or verify RSA, DSA, ECDSA digital signatures.API call parameters: private key, message, signature (for verification)Status, signatureRSA key pair – R, X DSA key pair – R, X ECDSA key pair – R, XDigital Signature Generation, Digital Signature VerificationReturn code from function call
Key AgreementUserPerform key agreement primitives on behalf of the calling application (does not establish keys into the module)API call parameters: private key, counter public keyStatus, key components, keyECDH Key Pair – R, X DH Key Pair – R, X RSA Key Pair – R, X Shared Secret – GShared Secret Computation for Key AgreementReturn code from function call
Message digestUserCompute and return a message digest using SHS and SHA-3 algorithmsAPI call parameters: messageStatus, hashNoneMessage DigestReturn code from function call
Keyed HashUserGenerate or verify data integrity with HMAC or KMAC.API call parameters: HMAC/KMAC key, message, keyed hash value (for verification)Status Keyed Hash value (Generation) True or false (Verification)HMAC key – R, X KMAC key – R, XMessage Authentication CodeReturn code from function call

Linux OpenSSL FIPS Provider v3.1 Cryptographic Module KAYTUS SYSTEM PTE. LTD.

Page 22
NameRolesDescriptionInputOutputSSP and Type of AccessApproved Security FunctionIndicator
Key DerivationUserDerive keying material using KBKDF, PBKDF, HKDF, SP 800-56Crev2 One-Step KDF (KDA), SP 800-135rev1 TLS 1.2, SSHv2, ANSI X9.6- 2001, ANSI X9.42-2001 KDFs and TLS 1.3 KDF.API call parameters: Shared Secret, salt, additional info depending on the algorithm used.Status and derived keying materialShared Secret – R, X Keying material – G HKDF salt – R, X PBKDF2 salt – R, X PBKDF2 password – R, XKey Derivation Function Password-Based Key Derivation Function Key-Based Key Derivation FunctionReturn code from function call
Key TransportUserEncrypt or Decrypt a key value on behalf of the calling application (does not establish keys into de module)API call parameters: Key-encryption key, Key to be encapsulated or wrappedStatus and Encapsulated keyRSA key pair – R, X AES key – R, X HMAC key – R, XKey Wrapping Key EncapsulatingReturn code from function call
Random Number GenerationUserUsed for random number and symmetric key generation using HMAC, HASH or CTR DRBGAPI call parameters: number of bytes to be generatedStatus and random bitstringDRBG Entropy Input String – R, X DRBG Seed – W, X DRBG “C” value (HASH DRBG) – W, X DRBG “Key” value (HMAC and CTR) – W, XRandom Number GenerationReturn code from function call

Linux OpenSSL FIPS Provider v3.1 Cryptographic Module KAYTUS SYSTEM PTE. LTD. R, X W, X

Page 23

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

5 Software/Firmware security

The cryptographic module is composed of a software shared library as well as file where the a precomputed HMAC-SHA-256 signature is stored. The integrity of the software module is achieved by comparing the pre-computed HMAC value to the one calculated at run time. The module also provides on-demand integrity test. The integrity test is performed by the Self-Test On demand service by invoking the SELF_TEST_post() function or rebooting the cryptographic module. This test is performed as part of the pre-operational self-tests as well.

Page 24

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

6 Operational Environment

The module operates in a modifiable operational environment per FIPS 140-3 level 1 specifications. The module runs on a commercially available general-purpose operating system. The operating system is restricted to a single operator. Concurrent operators are explicitly excluded. The application that requests cryptographic services is the single user of the module. All SSPs are under the control of the OS, which protects its CSPs against unauthorized disclosure, modification, and substitution and PSPs against unauthorized modification and substitution. Additionally, the OS provides dedicated process space to each executing process, and the module operates entirely within the calling application’s process space. The module only allows access to SSPs through its well-defined API. The module does not have the ability of spawning new processes.

Page 25

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

7 Physical security

The module is a software module and this section does not apply.

Page 26

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

8 Non-invasive security

The module does not implement any non-invasive attack mitigation technique to protect itself and the module’s unprotected SSPs from non-invasive attacks.

Page 27
KeyStrengthSecurity Function Cert NumberGenerationImport/ExportEstablishmentStorageZeroizationUse & Related Keys
AES ECB, CBC, CBC-CS1, CBC- CS2, CBC-CS3, CFB1, CFB8, CFB128, OFB, CTR Keys128, 192, 256- bit keyA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Symmetric Encryption and Decryption
AES CBC, CBC- CS1, CBC-CS2, CBC-CS3, CFB1, CFB8, CFB128, OFB, CTR IVs128 bitsA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Initialization Vector
AES XTS Key128, 256-bit keyA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Symmetric Encryption and Decryption
AES XTS IV128 bitsA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Initialization Vector for AES_XTS
AES KW/KWP Key128, 192, 256- bit keyA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Key Wrapping
AES CCM Key128, 192, 256- bit keyA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Symmetric Encryption and Decryption

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

9 Sensitive Security Parameter Management

The following section includes all the information related to the Sensitive Security Parameters (SSPs) and its management. Table 10 below identifies all the SSPs handled by the cryptographic module as well as its purpose, generation method, input and output method, where they are stored and how they are zeroized. Table 10 – Sensitive Security Parameters Definition

Page 28
KeyStrengthSecurity Function Cert NumberGenerationImport/ExportEstablishmentStorageZeroizationUse & Related Keys
AES CCM IV56, 64, 72, 80, 88, 96, 104 bitsA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Initialization Vector for AES_CCM
AES GCM Key128, 192, 256- bit keyA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Authenticated encryption and decryption
AES GCM IV96-bits valueA4198External or internally generatedPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Initialization vector for AES_GCM
AES CMAC Key128, 192, 256- bit keyA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Message Authentication
AES GMAC Key128, 192, 256- bit keyA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Message Authentication
HMAC Key112-bits or greaterA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Message Authentication
KMAC Key128-bits or greaterA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Message Authentication
DSA Public Key1024, 2048, 3072-bit keyA4198External or internally generatedPlaintext / PlaintextN/ANot persistently storedPower cycle or EVP_PKEY_free()Signature verification
DSA Private Key224 and 256- bit keyA4198External or internally generatedPlaintext / PlaintextN/ANot persistently storedPower cycle or EVP_PKEY_free()Signature generation

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 29
KeyStrengthSecurity Function Cert NumberGenerationImport/ExportEstablishmentStorageZeroizationUse & Related Keys
ECDSA Public KeyFrom 192-576 bitsA4198External or internally generatedPlaintext / PlaintextN/ANot persistently storedPower cycle or EVP_PKEY_free()Signature verification
ECDSA Private KeyFrom 224-576 bitsA4198External or internally generatedPlaintext / PlaintextN/ANot persistently storedPower cycle or EVP_PKEY_free()Signature generation
RSA Private Key2048, 3072, 4096, 6144-bit keyA4198External or internally generatedPlaintext / PlaintextN/ANot persistently storedPower cycle or EVP_PKEY_free()Signature Generation OAEP Decryption
RSA Public Key1024, 2048, 3072, 4096, 6144-bit keyA4198External or internally generatedPlaintext / PlaintextN/ANot persistently storedPower cycle or EVP_PKEY_free()Signature Verification OAEP Encryption
Diffie-Hellman Public KeyFrom 2048-bit to 8192-bit keyA4198External or internally generatedPlaintext / PlaintextN/ANot persistently storedPower cycle or EVP_PKEY_free()Derive Shared Secret
Diffie-Hellman Private KeyFrom 2048-bit to 8192-bit keyA4198External or internally generatedPlaintext / PlaintextN/ANot persistently storedPower cycle or EVP_PKEY_free()Derive Shared Secret
ECDH Public KeyFrom 224-576 bitsA4198External or internally generatedPlaintext / PlaintextN/ANot persistently storedPower cycle or EVP_PKEY_free()Derive Shared Secret
ECDH Private KeyFrom 224-576 bitsA4198External or internally generatedPlaintext / PlaintextN/ANot persistently storedPower cycle or EVP_PKEY_free()Derive Shared Secret
Shared SecretShared secret bitstringA4198Internally derivedNA / PlaintextN/ANot persistently storedPower cycle or OPENSSL_cleanse()Shared Secret for deriving keying material

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 30
KeyStrengthSecurity Function Cert NumberGenerationImport/ExportEstablishmentStorageZeroizationUse & Related Keys
HKDF saltSalt bitstringA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Key Derivation Function
Keying materialKeying material bitstringA4198Internally derivedNA / PlaintextN/ANot persistently storedPower cycle or OPENSSL_cleanse()Keying material derived from key derivation function (SP 800-108rev1 KBKDF, SP 800- 132 PBKDF, HKDF, KDA, SP 800-135rev1 KDFs, TLS 1.3 KDF)
PBKDF2 passwordFrom 8 to 128 characters (bytes) with increment of 8 characters.A4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or EVP_KDF_free()PBKDF2 Key derivation function
PBKDF2 saltFrom 128 to 4096-bit salt bitstring with increment of 8- bitsA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or EVP_KDF_free()PBKDF2 Key derivation function

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 31

Entropy input string

For CTR_DRBG: 128, 256-bits for AES-128 DF 256, 384, 512- bits for AES- 192/256 DF 256-bits for AES-128 NODF 320-bits for AES-192 NODF 384-bits for AES-256 NODF For HASH DRBG: 128, 192, 256- bits for SHA-1 192, 256-bits for SHA-224 256, 320-bits for SHA-256, SHA-384, SHA- 512, SHA- 512/224, SHA- 512/256 For HMAC DRBG: 160-256 bits in increment of 32 bits for HMAC-SHA-1 192, 256-bits for HMAC-SHA- 224

A4198

External

Plaintext / Never exits the module

N/A

Not persistently stored

Power cycle or OPENSSL_cleanse()

Entropy material for HASH DRBG/HMAC DRBG/CTR DRBG

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 32

Key

Strength 256, 384, 448, 512-bits for HMAC-SHA- 256 384, 448, 512- bits for HMAC- SHA-384 512-1024-bits in increment of 64 bits for HMAC-SHA- 512

Security Function Cert Number

Generation

Import/Export

Establishment

Storage

Zeroization

Use & Related Keys

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 33
KeyStrengthSecurity Function Cert NumberGenerationImport/ExportEstablishmentStorageZeroizationUse & Related Keys
DRBG seedFor HASH DRBG and HMAC DRBG: 440-bits random data for SHA-1, SHA- 224 and SHA- 256; 888-bits random data for SHA-384, SHA-512. For CTR DRBG: 256-bits random data for CTR-128- DF/CTR-128- NODF 320-bits random data for CTR-192- DF/ CTR-192- NODF 384-bits random data for CTR-256- DF/ CTR-256- NODFA4198ExternalPlaintext / Never exits the moduleN/ANot persistently storedPower cycle or OPENSSL_cleanse()Seeding material for HASH DRBG/HMAC DRBG/CTR DRBG
DRBG ‘C’ valueInternal state valueA4198Internally generatedNA / Never exits the moduleN/ANot persistently storedPower cycle or EVP_RAND_CTX_free()Used for HASH DRBG

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 34
KeyStrengthSecurity Function Cert NumberGenerationImport/ExportEstablishmentStorageZeroizationUse & Related Keys
DRBG ‘V’ valueInternal state valueA4198Internally generatedNA / Never exits the moduleN/ANot persistently storedPower cycle or EVP_RAND_CTX_free()Used for CTR DRBG/HASH DRBG/HMAC DRBG
DRBG ‘Key’ value128, 192, 256- bit key for CTR- DRBG 160, 224, 256, 384, 512 for HMAC-DRBGA4198Internally generatedNA / Never exits the moduleN/ANot persistently storedPower cycle or EVP_RAND_CTX_free()Used for CTR DRBG/HMAC DRBG

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

Page 35

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

9.1 Random Number Generation

The module employs a Deterministic Random Bit Generator (DRBG) for the creation cryptographic key material. The module contains the following Deterministic Random Bit Generator (DRBG) compliant with the [SP 800-90Arev1]: - HMAC-DRBG - HASH-DRBG - CTR-DRBG The module does not implement Non-Determinist Random Bit Generator or entropy source. A minimum of 112-bits of entropy must be supplied. This entropy is supplied by means of callback functions. Those functions must return an error if the minimum entropy strength cannot be met.

9.2 SSP Generation

For generation of RSA, DSA and ECDSA key pairs, the module implements approved key generation services compliant with [FIPS 186-4] where the key material is directly obtained from approved [SP 80090Arev1] DRBGs according to the [SP 800-133rev2]. The public and private key pairs used in the Diffie-Hellman and EC Diffie-Hellman KAS are generated internally. They are compliant with NIST [SP 800-56Arev3]. Cryptographic Key Generation: the module uses an Approved Hash, CTR or/and HMAC DRBG specified in NIST SP 800-90Arev1 to generate random cryptographic material. The resulting generated material are unmodified outputs from the DRBG. According to FIPS 140-3 Implementation Guidance D.H. a component key generation (CKG) using the unmodified output of an approved DRBG can be used to generate cryptographic material for:

9.3 SSP Agreement

The module provides Diffie-Hellman, EC Diffie-Hellman and RSA key agreement shared secret computation to obtain “shared secret” values. The security strength of the preceding algorithms is as follows:

  1. Diffie-Hellman key agreement provides between 112 and 200 bits of encryption strength.
  2. EC Diffie-Hellman key agreement provides between 112 and 256 bits of encryption strength.
  3. RSA key agreement provides between 112 bits and 200 bits of encryption strength. The Diffie-Hellman and EC Diffie-Hellman are under scenario 2 of [IG] D.F, and the RSA key agreement method is under scenario 1 of the same [IG]. Moreover, the module provides SSP derivation and SSP transport methods which are described in the following sections.
Page 36

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

9.4 SSP Derivation

The module provides the following SSP Derivation methods: - Key-Based Key Derivation (KDKDF algorithm) - Password-Based Key Derivation (PBKDF2 algorithm) - Protocol-Suite Key Derivation: TLS 1.2 KDF, TLS 1.3 KDF, ANSI X9.42, ANSI X9.63 and SSHv2 KDF as key derivation functions. - Key Derivation based on SP 800-56Crev2: HKDF and KDA.

9.5 SSP Transport

The module provides approved key transport methods according to [IG] D.G. The key transport methods are provided either by:

  1. Key wrapping. The module implements three different options: a. Using an approved key wrapping algorithm (e.g., AES in KW/KWP mode). b. An approved authenticated symmetric encryption mode (for example, AES GCM, AES CCM). c. An approved symmetric encryption mode (e.g., AES ECB/CBC ...) together with an approved authentication method (e.g., HMAC or AES CMAC).
  2. Key Encapsulation: For this method, the module implements an approved RSA-based key transport scheme (KTS-RSA based on SP 800-56Brev2). According to Table 2: Comparable strengths in [SP 800-57 Part 1 Rev5], the key sizes of AES and RSA provides the following security strength: • AES key wrapping provides between 128 and 256 bits of encryption strength. • Approved authenticated encryption mode (AES-GCM, AES-CCM) provides between 128 and 256 bits of encryption strength. • Combination of any approved AES encryption mode with HMAC/AES CMAC authentication provides between 128 and 256 bits of encryption strength. • RSA key encapsulation provides between 112 and 176 bits of encryption strength.
9.6 SSP Entry/Output

The keys and SSPs to be entered or exited are provided to the module via API input/output parameters in plaintext form and output via API output parameters in plaintext form. This is allowed per section 7.9.5 of the ISO/IEC 19790:2012 since all CSPs or key components are maintained within the environment and the requirements from section 7.6.3 are met. The module does not support either manual key entry or intermediate key generation values. The module does not output intermediate key generation values. Additionally, the module implements two independent internal actions in order to prevent the inadvertent output of any plaintext SSPs. The mechanism implemented by the module is described below:

  1. Memory allocation of the necessary context to request the service.
  2. Process the service request which outputs CSPs using the created context.
Page 37
NameDescriptionType
RAMSystem MemoryDynamic

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. When these two actions are completed without errors, the Key/SSP exits the module in plaintext. Information for the input and output for each SSP, if applicable, is provided under columns "Input" and "Output" of Table 10.

9.7 SSP Storage

Symmetric keys, HMAC keys, public and private keys are provided to the module by the calling application via API input parameters and are destroyed by the module when invoking the appropriate API function calls. No physical storage is offered within the cryptographic boundary, and therefore the module does not store any SSPs persistently beyond the lifetime of the API call. Any persistent key storage occurs outside the module’s cryptographic boundary but within the physical perimeter and the management of these keys is responsibility of the calling application. Table 11 - Storage Areas Information for storage of each SSP, is provided under column "Storage" of Table 10.

9.8 SSP Zeroisation

SSP zeroisation functions are implemented in the fips.so library, and they depend on the SSP to be zeroized. Information for zeroising each SSP is provided under column “Zeroization” of Table 10. The zeroization functions overwrite the memory occupied by SSP with ‘zeros’ and deallocate the memory with the regular memory deallocation operating system call. In case of abnormal termination, or swap in/out of a physical memory page of a process, the keys in physical memory are overwritten by the Linux kernel before the physical memory is allocated to another process. The zeroization of the SSPs starts just after the invocation of the zeroization command. Once invoked, these techniques take effect immediately and do not allow sufficient time to compromise any plaintext secret, private keys and CSPs. During the zeroization process, services are not available and input and output are inhibited.

Page 38
AlgorithmOETest PropertiesTypeDetails
HMAC-SHA- 256Both128-bit hardcoded keyKATIntegrity self-test perform at the initialization of the module in order to verify its integrity.

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

10 Self-Tests

FIPS 140-3 requires that the module performs a set of self-test in order to provide the operator assurance that faults have not been introduced that would prevent the module's correct operation. The module performs the pre-operational self-test and conditional cryptographic algorithms self-tests during the initialization of the module. In addition, some functions require continuous testing of the cryptographic functionality, such as the asymmetric key generation. The following sections list the self-tests performed by the module, their expected error status and error resolutions.

10.1 Pre-operational Self-Tests

The module executes the following pre-operational self-tests when it is loaded into memory, without operator intervention. These pre-operational self-tests ensure that the module is not corrupted: • Integrity test: Using a HMAC-SHA2-256 for fips.so library, as it is described in section 5. The following cryptographic algorithms are self-tested as part of the pre-operational self-tests: Table 12 - Pre-operational Self-Tests During compilation, the module compiles the HMAC key into fips.so. Once compiled, during the installation, the module calculates the HMAC-SHA2-256 for fips.so and stores in fipsmodule.cnf file. At runtime and prior to using HMAC-SHA-256, a Conditional Cryptographic Algorithm Self-Test (CAST) is performed. If the CAST of the HMAC-SHA-256 is successful, the module computes the HMAC of fips.so. This value is compared with the one stored in fipsmodule.cnf file, and if they are the same value, the test is passed. Otherwise, the test fails and the module enters in Critical Error state. In this state, an internal flag is set to prevent subsequent invocation of any cryptographic calls. While the module is executing the pre-operational self-tests, services are not available, and input and output are inhibited. The module is not available for use by the calling application until the pre-operational tests are completed successfully. The verify_integrity() API function is in charge of performing the pre-operational self-tests. This API function is called from the SELF_TEST_post() API function, which also performs the KAT tests for each algorithm. The API function returns a ‘1’ if all pre-operational and KAT self-tests succeed, and a ‘0’ otherwise.

Page 39
AlgorithmOETest PropertiesTypeDetailsConditions
HMAC- SHA256BothKATUsed for module integrity testPower-Up and On-demand
SHSBothSHA-1, SHA2-512 and SHA3-256KATGenerationPower-Up and On-demand
AESBothECB mode with 128-bit keyKATDecryptPower-Up and On-demand
AES GCMBoth256 bits key sizeKATEncrypt and DecryptPower-Up and On-demand
RSABoth2048 bits key size with SHA2-256 and mode PKCS#1v1.5.KATSign and VerifyPower-Up and On-demand
DSABoth2048, 224 bits key size with SHA2-256KATSign and VerifyPower-Up and On-demand
ECDSABothP-224 and K-233 curves with SHA2-256KATSign and VerifyPower-Up and On-demand
DRBGBothCTR_DRBG: AES 128-bit key with derivation function. HASH_DRBG: SHA2-256. HMAC_DRBG: SHA-1KATRandom Bit GenerationPower-Up and On-demand
KBKDFBothCounter Mode (HMAC-SHA2-256).KATKey DerivationPower-Up and On-demand

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

10.2 Conditional Self-Tests

Conditional self-tests are performed by the cryptographic module when conditions specified for the following tests occur: Cryptographic Algorithm Self-Test, Pair-Wise Consistency Test and Critical Function Tests. The module does not implement any functions requiring a Software/Firmware Load Test, Manual Entry Tests nor Conditional Bypass Test; therefore, these tests are not performed by the module. While the module is executing the conditional self-tests, services are not available, and input and output are inhibited. The module is not available for use by the calling application until these tests are completed successfully. If any of this tests fails, the module enters in Critical Error state.

10.2.1 Conditional Cryptographic Algorithms Self-Tests

In addition to the pre-operational self-tests, the module also performs the Conditional Cryptographic Algorithm Self-Tests (CASTs) for all cryptographic functions of each approved cryptographic algorithm implemented by the module during the module initialization. Therefore, all CASTs are performed prior to the first operational use of the cryptographic algorithm. These tests are detailed in the table below: Table 13 - Conditional Cryptographic Algorithm Self-Tests

Page 40
AlgorithmOETest PropertiesTypeDetailsConditions
PBKDF2BothKATDerivation of the Master Key (MK) (per Section 5.3 of SP 800- 132).Power-Up and On-demand
SP 800- 135rev1 KDFsBothTLS 1.2, SSHv2, ANSI X9.63-2001 and ANSI X9.42-2001 KDFs.KATKey DerivationPower-Up and On-demand
TLS v1.3 KDFBothTLS v1.3 KDF (per Section 7.1 of RFC 8446).KATKey DerivationPower-Up and On-demand
KAS-FFC- SSCBothffdhe2048 safe prime group with dhEphem schemeKATShared Secret Computation (per Section 6 of SP 800- 56Arev3).Power-Up and On-demand
KAS-ECC- SSCBothP-256 curve with Ephemeral Unified schemeKATShared Secret Computation (per Section 6 of SP 800- 56Arev3).Power-Up and On-demand
KAS-RSA- SSCBoth2048 bits key sizeKATRSA Primitive Computation (per Scenario 1 of IG D.F and Section 8.2.2 in SP 800-56Brev2) as part of KTS-RSA Encryption KAT.Power-Up and On-demand
KDABothKATOne-step KDF (per Section 4 of SP 800- 56Crev2) and Two-Step KDF (per Section 5 of SP 800-56Crev2).Power-Up and On-demand
KTS-RSABoth2048 bits key sizeKATEncrypt and Decrypt for Basic and Decrypt for CRT (per IG D.G and SP 800-56Brev2).Power-Up and On-demand

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. The SELF_TEST_kats() API function is in charge of performing all the KAT self-tests for each algorithm prior to their first use, without any operator intervention. This function is called from the SELF_TEST_post() API function, called during the initialization of the module. The API function returns a ‘1’ if all pre-operational and KAT self-tests succeed, and a ‘0’ otherwise.

10.2.2 Conditional Pairwise Consistency Test

The Pairwise Conditional Self-tests are run when an asymmetric key pair is generated. In case of failure the module enters in Critical Error state and needs to be reloaded to clear the error.

Page 41
AlgorithmOETest PropertiesTypeDetailsConditions
DSABothGenerated Key size.PCTPairwise Consistency Test on Generation of a DSA Key Pair.Key Generation.
ECDSABothGenerated curve.PCTPairwise Consistency Test on Generation of an ECDSA Key Pair.Key Generation.
RSABothGenerated Key size.PCTPairwise Consistency Test on Generation of an RSA Key Pair.Key Generation.
StandardAssurances
SP 800-56Arev3Per Section 5.6.2 of SP 800-56Arev3, required per [IG] D.F
SP 800-56Brev2Per Section 6.4 of SP 800-56Brev2, required per [IG] D.F

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. Table 14 - Conditional Pair-wise Consistency Tests

10.2.3 Conditional Critical Function Tests

The module obtains the following assurances per SP 800-56Arev3 and SP 800-56Brev2: Table 15 - Assurances The module performs the following DRBG health checks when initializing the DRBG for the first time during the power-up of the module:

10.3 On-Demand Self-Tests

Pre-operational self-tests and Conditional Cryptographic Algorithms self-test performed by the module during its initialization, are available on demand by resetting the module or by calling the SELF_TEST_post() API function. During the execution of the on-demand self-tests, services are not available and no data output or input is possible.

10.4 Error Handling

If any of the self-tests described in sections 10.1, 10.2 and 10.3 fails, the module enters in Critical Error state and needs to be reloaded to exercise any cryptographic service. In the Critical Error State, no cryptographic services are provided, and data output is prohibited. In this state, an internal flag is set to prevent subsequent invocation of any cryptographic calls. The only method to recover from the Critical Error state is to power cycle the device which results in the module being reloaded into memory and performing the pre-operational software integrity test and the

Page 42
NameDescriptionConditionsRecovery MethodIndicator
Critical ErrorFailure of pre- operational self- tests, cryptographic algorithm self-tests, pairwise consistency test, critical security functions tests.Failure of pre- operational self- tests, cryptographic algorithm self-tests, pairwise consistency test, critical security functions tests.Restart the moduleverify_integrity() = 0 SELF_TEST_kats() = 0 rsa_keygen_pairwise_test() = 0 ecdsa_keygen_pairwise_test() = 0 dsa_keygen_pairwise_test() = 0 ossl_ec_key_public_check() = 0 DH_check_pub_key() = 0 self_test_drbg ()= 0
Soft ErrorAES XTS check failure.AES XTS check failure.The module clears the error automaticallyaes_xts_check_keys_differ() = 0

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. Conditional CASTs. The module will only enter the operational state after successfully passing the preoperational software integrity test and the Conditional CASTs. In addition, if the AES XTS check fails during the CSP entry, the module will flow to Soft Error state, not allowing any cryptographic service and no data output or input is allowed, until the error is cleared. The table below shows the different causes that lead to the error states and the status indicators reported. Table 16 – Error Codes

Page 43

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

11 Life-cycle assurance
11.1 Delivery and Operation

The module is delivered already compiled and in the binary form for the following operational environments:

11.2 Crypto Officer and User Guidance

Crypto Officer The Crypto Officer shall run the following command in order to generate the fipsmodule.cnf file: $ openssl fipsinstall –out fipsmodule.cnf -module fips.so -self_test_onload After this step, the module is ready to use. In order to check that the installation has been successfully performed, the Crypto Officer can execute the following command: $ openssl list –providers And the Linux provider should be indicated. User Guidance The module only supports one mode of operation: Approved. The module will be in Approved mode when all pre-operational self-tests have been completed successfully, and only Approved security functions are invoked. There are no additional installation, configuration, or usage instructions for operators intending to use the Linux OpenSSL FIPS Module. For ensure the correct SSP Zeroization, the user shall ensure that all the contexts that use that SSP shall also be zeroized.

11.2.1 Installation

The operator shall follow the Crypto Officer instructions in section 11.2.

11.2.2 AES-GCM Usage

The module does not implement the TLS protocol itself, however, it provides the cryptographic functions required for implementing the protocol. AES GCM encryption is used in the context of the TLS protocol versions 1.2 and 1.3 (per Scenario 1 and Scenario 5 in [IG] C.H, respectively). For TLS v1.2, the mechanism for IV generation is compliant with RFC 5288. The counter portion of the IV is strictly increasing. When the IV exhausts the maximum number of possible values for a given session key, this results in a failure in

Page 44

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD. encryption and a handshake to establish a new encryption key will be required. It is the responsibility of the user of the module i.e., the first party, client or server, to encounter this condition, to trigger this handshake in accordance with RFC 5246. For TLS v1.3, the mechanism for IV generation is compliant with RFC 8446. The module also supports internal IV generation using the module’s Approved DRBG. The IV is at least 96bits in length per NIST SP 800-38D, Section 8.2.1. Per [IG] C.H Scenario 2 and NIST SP 800-38D, the approved DRBG generates outputs such that the (key, IV) pair collision probability is less than 2-32. In the event that the module power is lost and restored, the user must ensure that the AES-GCM encryption/decryption keys are re-distributed.

11.2.3 AES-XTS

The AES algorithm in XTS mode can be used for the cryptographic protection of data on storage devices, as specified in [SP800-38E]. The length of a single data unit encrypted with the AES-XTS shall not exceed

220 AES blocks that is 16 MB of data.

The module implements a check to ensure that the two AES keys used in AES-XTS algorithm are not identical. Based on the previous information, the module AES XTS implementation is compliant with FIPS 140-3 IG C.I.

11.2.4 SHA-3 Family

The module is compliant to the FIPS 140-3 IG C.C regarding the SHA-3 family algorithms. All the SHA-3 and SHAKE functions have been tested and validated with the CAVP tool (#A4198), as it is indicated in Table 4. In addition, every higher-level algorithm that uses a SHA-3 family algorithm, are also validated with the CAVP, together in the same CAVP certificate (#A4198).

11.2.5 RSA Digital Signature

The module provides different algorithms for digital signature. Among them is the RSA FIPS 186-4, which is compliant with FIPS 140-3 IG C.F. RSA digital signature generation can be performed with 2048-, 3072- or 4096-bits modulus length. As it is indicated in Table 4, all the RSA signature algorithm implementations are tested with the CAVP (#A4198). In the CAVP Certificate, it is indicated that the modulus used by the RSA signature generation are 2048,

3072 and 4096. Therefore, all different modulus length used by the RSA signature generation are tested

by the CAVP. Regarding the Miller-Rabin tests round, the module performs 128 rounds when the modulus is higher than 2048 bits. For the signature verification, the module has tested and validated all the different RSA modulus length implemented by the module: 1024, 2048, 3072 and 4096. This is also indicated in CAVP Cert. #A4198.

Page 45

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

11.2.6 PBKDF

Regarding PBKDF, in line with the requirements for SP 800-132, keys generated using the approved PBKDF must only be used for storage applications. Any other use of the approved PBKDF is non-conformant. As the module is a general purpose software module, it is not possible to anticipate all the levels of use for the PBKDF, however a user of the module should also note that a password should at least contain enough security strength to be unguessable and also contain enough strength to reflect the security strength required for the key being generated. The password length should be between 8 and 128 bytes with an increment of 8 bytes. For the iteration count, as the functionality of the module relies on the usage that a user performs with the module, it is recommended a minimum of 1.000 bits. In addition, users are referred to Appendix A, “Security Considerations” in SP 800-132 for further information on password, salt, and iteration count selection.

Page 46

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

12 Mitigation of Other Attacks

The module implements two mitigations against timing-based side-channel attacks, namely Constanttime Implementations and Blinding. Constant-time Implementations protect cryptographic implementations in the Module against timing analysis since such attacks exploit differences in execution time depending on the cryptographic operation, and constant-time implementations ensure that the variations in execution time cannot be traced back to the key, CSP or secret data. Numeric Blinding protects the RSA, DSA and ECDSA algorithms from timing attacks. These algorithms are vulnerable to such attacks since attackers can measure the time of signature operations or RSA decryption. To mitigate this the Module generates a random blinding factor which is provided as an input to the decryption/signature operation and is discarded once the operation has completed and resulted in an output. This makes it difficult for attackers to attempt timing attacks on such operations without the knowledge of the blinding factor and therefore the execution time cannot be correlated to the RSA/DSA/ECDSA key.

Page 47

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

13 Appendix I
Table, extracted as text (did not parse into structured rows)
The module implements TLS versions 1.2 and 1.3. The AES GCM supported ciphersuites for each version are listed below: Supported AES GCM ciphersuites for TLS v1.2: •   TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 •   TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 •   TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 •   TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 •   TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 •   TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 •   TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 •   TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 Supported AES GCM ciphersuites for TLS v1.3: •   TLS_AES_128_GCM_SHA256 •   TLS_AES_256_GCM_SHA384
Page 48
AbbreviationFull Specification Name
FIPS 140-3FIPS 140-3 Security Requirements for Cryptographic modules
NIST SP 800-140FIPS 140-3 Derived Test Requirements (DTR): CMVP Validation Authority Updates to ISO/IEC 24759
ISO 19790ISO/IEC 19790:2012/Cor.1:2015(E), Information technology — Security techniques — Security requirements for cryptographic modules
ISO 24759ISO/IEC 24759:2017(E), Information technology — Security techniques — Test requirements for cryptographic modules
IGImplementation Guidance for FIPS 140-3 and the Cryptographic Module Validation Program
FIPS PUB 197FIPS 197 Advanced Encryption Standard
FIPS PUB 180-4FIPS 180-4 Secure Hash Standard
FIPS PUB 198-1FIPS 198-1 The Keyed-Hash Message Authentication Code (HMAC)
FIPS PUB 186-4FIPS 186-4 Digital Signature Standard (DSS)
FIPS PUB 202FIPS 202 SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions
NIST SP 800-38ANIST SP 800-38A, Recommendation for Block Cipher Modes of Operation Methods and Techniques
NIST SP 800-38BNIST SP 800-38B, Recommendation for Block Cipher Modes of Operation: the CMAC Mode for Authentication
NIST SP 800-38CNIST SP 800-38C, Recommendation for Block Cipher Modes of Operation: the CCM Mode for Authentication and Confidentiality
NIST SP 800-38DNIST SP 800-38D, Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC
NIST SP 800-38ENIST SP 800-38E, Recommendation for Block Cipher Modes of Operation: the XTS-AES Mode for Confidentiality on Storage Devices
NIST SP 800-38FNIST SP 800-38F, Recommendation for Block Cipher Modes of Operation: Methods for Key Wrapping
NIST SP 800-56Arev3NIST SP 800-56Arev3, Recommendation for Pair-Wise Key Establishment Schemes using Discrete Logarithm Cryptography
NIST SP 800-56Brev2NIST SP 800-56Brev2, Recommendation for Pair-Wise Key-Establishment Using Integer Factorization Cryptography
NIST SP 800-56Crev2NIST SP 800-56Crev2, Recommendation for Key-Derivation Methods in Key-Establishment Schemes

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

14 References and Acronyms
14.1 References
Page 49
AbbreviationFull Specification Name
NIST SP 800-57 Part 1 Rev5NIST SP 800-57 Part 1, Rev5, Recommendation for Key Management: Part 1 – General
NIST SP 800-90Arev1NIST SP 800-90Arev1, Recommendation for Random Number Generation Using Deterministic Random Bit Generators
NIST SP 800-108rev1NIST SP 800-108rev1, Recommendation for Key Derivation Using Pseudorandom Functions
NIST SP 800-131Arev2NIST SP 800-131Arev2, Transitioning the Use of Cryptographic Algorithms and Key Lengths
NIST SP 800-132NIST SP 800-132, Recommendation for Password-Based Key Derivation: Part 1: Storage Applications
NIST SP 800-133rev2NIST SP 800-133rev2, Recommendation for Cryptographic Key Generation
NIST SP 800-135rev1NIST SP 800-135rev1, Recommendation for Existing Application-Specific Key Derivation Functions
NIST SP 800-185NIST SP 800-185, SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash, and ParallelHash
RFC 7627Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension
AcronymDefinition
AESAdvanced Encryption Standard
APIApplication Program Interface
CAVPCryptographic Algorithm Validation Program
CBCCipher Block Chaining
CKGCryptographic Key Generation
CMVPCryptographic Module Validation Program
CTRCounter Mode
CVLComponent Validation List
DHDiffie-Hellman
DSADigital Signature Algorithm
DRGBDeterministic Random Bit Generator
ECCElliptic Curve Cryptography
ECDSAElliptic Curve Digital Signature Algorithm
FFCFinite Field Cryptographic
FIPSFederal Information Processing Standards Publication
GCMGalois Counter Mode

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.

14.2 Acronyms
Page 50
AcronymDefinition
GPCGeneral Purpose Computer
HMACHash Message Authentication Code
KASKey Agreement Scheme
KATKnown Answer Test
KDFKey Derivation Function
MACMessage Authentication Code
NISTNational Institute of Science and Technology
PCTPair-wise Consistency Test
RSARivest, Shamir, Adleman
SHASecure Hash Algorithm
SHSSecure Hash Standard
SSCShared Secret Computation
TLSTransport Layer Security

Linux OpenSSL FIPS Provider v3.1 KAYTUS SYSTEM PTE. LTD.