{"_type": "sec_certs.sample.fips.FIPSCertificate", "dgst": "be41b7f1fa56ba2b", "cert_id": 5566, "web_data": {"_type": "sec_certs.sample.fips.FIPSCertificate.WebData", "module_name": "TM400ENB", "validation_history": [{"_type": "sec_certs.sample.fips.FIPSCertificate.ValidationHistoryEntry", "date": "2026-10-30", "validation_type": "Initial", "lab": "DEKRA Cybersecurity Certification Laboratory"}], "vendor_url": "https://ribboncommunications.com/", "vendor": "ECI Telecom Ltd / Ribbon communications Operating company, Inc.", "certificate_pdf_url": null, "module_type": "Hardware", "standard": "FIPS 140-3", "status": "active", "level": 3, "caveat": "When installed, initialized and configured as specified in Section 11.1 of the Security Policy. No assurance of minimum security of SSPs (e.g., keys, bit strings) that are externally loaded, or of SSPs established with externally loaded SSPs.", "exceptions": ["Operational environment: N/A", "Non-invasive security: N/A", "Mitigation of other attacks: N/A"], "embodiment": "MultiChipEmbed", "description": "Ribbon Communications Encryption Module TM400ENB is a hardware cryptographic module implemented as a multiple chip embedded module that operates as a line card in Ribbon Communications 's Apollo product line. In the networking parlance it's a transponder with multiplexing and encryption capabilities.", "tested_conf": null, "hw_versions": null, "fw_versions": null, "sw_versions": null, "mentioned_certs": {}, "historical_reason": null, "date_sunset": "2031-10-29", "revoked_reason": null, "revoked_link": null}, "pdf_data": {"_type": "sec_certs.sample.fips.FIPSCertificate.PdfData", "keywords": {"fips_cert_id": {}, "fips_security_level": {"Level": {"Level 3": 2, "level 3": 1}}, "fips_certlike": {"Certlike": {"HMAC-SHA224": 2, "HMAC-SHA256": 6, "HMAC-SHA384": 2, "HMAC-SHA512": 2, "SHA2-224": 7, "SHA2-256": 13, "SHA2-384": 8, "SHA2-512": 10, "SHA2- 512": 1, "SHA2- 384": 2, "SHA-256": 2, "SHA256": 4, "SHA 256": 1, "PKCS 1": 2, "AES-256": 5, "AES-128": 1, "AES-192": 1}}, "vendor": {}, "eval_facility": {}, "symmetric_crypto": {"AES_competition": {"AES": {"AES-256": 5, "AES-128": 1, "AES-192": 1, "AES": 14, "AES-": 6}, "CAST": {"CAST": 58}}, "constructions": {"MAC": {"HMAC": 8}}}, "asymmetric_crypto": {"ECC": {"ECDH": {"ECDHE": 6, "ECDH": 11}, "ECDSA": {"ECDSA": 11}, "ECC": {"ECC": 1}}}, "pq_crypto": {}, "hash_function": {"SHA": {"SHA2": {"SHA-256": 2, "SHA256": 4}}}, "crypto_scheme": {"MAC": {"MAC": 2}, "KA": {"Key Agreement": 2}}, "crypto_protocol": {"SSH": {"SSH": 57, "SSHv2": 4}}, "randomness": {"TRNG": {"TRNG": 1}, "PRNG": {"DRBG": 32}, "RNG": {"RBG": 3}}, "cipher_mode": {"CBC": {"CBC": 3}, "CTR": {"CTR": 2}, "GCM": {"GCM": 3}}, "ecc_curve": {"NIST": {"P-256": 22, "P-384": 10, "P-521": 22}}, "crypto_engine": {}, "tls_cipher_suite": {}, "crypto_library": {"OpenSSL": {"OpenSSL": 3}}, "vulnerability": {}, "side_channel_analysis": {}, "device_model": {}, "tee_name": {"AMD": {"PSP": 6}}, "os_name": {}, "cplc_data": {}, "ic_data_group": {}, "standard_id": {"FIPS": {"FIPS 140-3": 90, "FIPS186-5": 17, "FIPS 186-5": 11, "FIPS 198-1": 10, "FIPS 180-4": 14, "FIPS 1403": 1}, "NIST": {"SP 800-38A": 3, "SP 800-38D": 2, "SP 800-90A": 1, "SP 800-56A": 1, "SP 800-108": 3, "SP 800-135": 1, "SP 800-133": 1, "SP 800-63B": 4, "SP 800-140F": 1, "NIST SP 800-131A": 1, "SP 800-131A": 1, "SP 800-90B": 7}, "PKCS": {"PKCS 1": 1}, "X509": {"X.509": 13}}, "javacard_version": {}, "javacard_api_const": {}, "javacard_packages": {}, "certification_process": {}}, "policy_metadata": {"pdf_file_size_bytes": 1982287, "pdf_is_encrypted": false, "pdf_number_of_pages": 76, "/Author": "Hawes, David J. (Fed)", "/CreationDate": "D:20261022122658-04'00'", "/Creator": "Microsoft\u00ae Word for Microsoft 365", "/MSIP_Label_4dd2c6e0-f1e3-4cf2-bd0b-256ab4cff3af_ActionId": "1c434341-d669-4d88-8da5-3e0134e21756", "/MSIP_Label_4dd2c6e0-f1e3-4cf2-bd0b-256ab4cff3af_ContentBits": "1", "/MSIP_Label_4dd2c6e0-f1e3-4cf2-bd0b-256ab4cff3af_Enabled": "true", "/MSIP_Label_4dd2c6e0-f1e3-4cf2-bd0b-256ab4cff3af_Method": "Privileged", "/MSIP_Label_4dd2c6e0-f1e3-4cf2-bd0b-256ab4cff3af_Name": "UNCLASSIFIED", "/MSIP_Label_4dd2c6e0-f1e3-4cf2-bd0b-256ab4cff3af_SetDate": "2026-10-22T16:22:47Z", "/MSIP_Label_4dd2c6e0-f1e3-4cf2-bd0b-256ab4cff3af_SiteId": "da9cbe40-ec1e-4997-afb3-17d87574571a", "/MSIP_Label_4dd2c6e0-f1e3-4cf2-bd0b-256ab4cff3af_Tag": "10, 0, 1, 1", "/ModDate": "D:20261022122659-04'00'", "/Producer": "Microsoft\u00ae Word for Microsoft 365", "pdf_hyperlinks": {"_type": "Set", "elements": ["http://www.jtsec.es/"]}}, "module_algorithms": {"_type": "Set", "elements": ["AES-CTRC1410", "Counter DRBGA7386", "SHA2-224A7386", "HMAC-SHA2-384A7386", "AES-GCMA7386", "HMAC-SHA2-512A7386", "AES-GMACC1410", "SHA2-384A7386", "AES-CBCA7386", "HMAC-SHA2-256A7386", "SHA2-256A7386", "KDF SSHA7386", "RSA SigGen (FIPS186-5)A7386", "KAS-ECC-SSC Sp800-56Ar3A7386", "ECDSA KeyGen (FIPS186-5)A7386", "RSA KeyGen (FIPS186-5)A7386", "RSA SigVer (FIPS186-5)A7386", "SHA2-512A7386", "HMAC-SHA2-224A7386", "KDF SP800-108A7384"]}, "policy_algorithms": {"_type": "Set", "elements": ["#A7386", "#A7384", "#C1410", "#A7385"]}, "is_br1_format": true, "br1_deviations": 0, "br1_tables": {"_type": "sec_certs.heuristics.br1.table_parsing.model.br1_tables.BR1Tables", "security_levels": {"section": 1, "subsection": 2, "found": true, "entries": [{"section": "1", "title": "General", "level": "3"}, {"section": "2", "title": "Cryptographic module specification", "level": "3"}, {"section": "3", "title": "Cryptographic module interfaces", "level": "3"}, {"section": "4", "title": "Roles, services, and authentication", "level": "3"}, {"section": "5", "title": "Software/Firmware security", "level": "3"}, {"section": "6", "title": "Operational environment", "level": "N/A"}, {"section": "7", "title": "Physical security", "level": "3"}, {"section": "8", "title": "Non-invasive security", "level": "N/A"}, {"section": "9", "title": "Sensitive security parameter management", "level": "3"}, {"section": "10", "title": "Self-tests", "level": "3"}, {"section": "11", "title": "Life-cycle assurance", "level": "3"}, {"section": "12", "title": "Mitigation of other attacks", "level": "N/A"}, {"section": "", "title": "Overall Level", "level": "3"}]}, "tested_module_id_hw": {"section": 2, "subsection": 2, "found": true, "entries": [{"modelPartNum": "TM400ENB", "hwVersion": "D.1", "fwVersion": "V13.5.1.0.+", "processors": "LS1026A(ARM64)", "features": "TM400ENB is a muxponder module with line side encryption capability. A client signal is encrypted before it's transmitted out of the line port."}, {"modelPartNum": "", "hwVersion": "", "fwVersion": "", "processors": "", "features": "Similarly, in the reverse direction the client signal retrieved from OTN frames is decrypted before it's forwarded to the client-side port. The only exception to this is bypass-mode configurable per- client signal. In the bypass mode client signals are directly mapped-to/ de-mapped-from line signal without encryption/ decryption."}]}, "tested_module_id_sw_fw_hy": {"section": 2, "subsection": 2, "found": false, "entries": []}, "tested_module_id_hw_hy": {"section": 2, "subsection": 2, "found": false, "entries": []}, "tested_op_env_sw_fw_hy": {"section": 2, "subsection": 2, "found": false, "entries": []}, "vendor_affirmed_op_env_sw_fw_hy": {"section": 2, "subsection": 2, "found": false, "entries": []}, "modes_of_operation": {"section": 2, "subsection": 4, "found": true, "entries": [{"name": "Approved Mode", "description": "The module only supports approved services", "type": "Approved", "statusIndicator": "The module only supports this mode of operation. Therefore, it works in this mode once it is correctly installed and initialized by the CO."}]}, "approved_algorithms": {"section": 2, "subsection": 5, "found": true, "entries": [{"algorithm": "AES-CBC", "cavpCertName": "A7386", "properties": "Direction - Decrypt, Encrypt Key Length - 128, 192, 256", "reference": "SP 800-38A"}, {"algorithm": "AES-CTR", "cavpCertName": "A7386", "properties": "Direction - Decrypt, Encrypt Key Length - 128, 192, 256", "reference": "SP 800-38A"}, {"algorithm": "AES-CTR", "cavpCertName": "C1410", "properties": "Direction - Encrypt Key Length - 256", "reference": "SP 800-38A"}, {"algorithm": "AES-GCM", "cavpCertName": "A7386", "properties": "Direction - Decrypt, Encrypt IV Generation - Internal IV Generation Mode - 8.2.2 Key Length - 128, 192, 256", "reference": "SP 800-38D"}, {"algorithm": "AES-GMAC", "cavpCertName": "C1410", "properties": "Direction - Decrypt, Encrypt IV Generation - External Key Length - 256", "reference": "SP 800-38D"}, {"algorithm": "Counter DRBG", "cavpCertName": "A7386", "properties": "Prediction Resistance - No, Yes Mode - AES-256 Derivation Function Enabled - No, Yes", "reference": "SP 800-90A Rev. 1"}, {"algorithm": "ECDSA KeyGen (FIPS186-5)", "cavpCertName": "A7386", "properties": "Curve - P-256, P-384, P-521 Secret Generation Mode - testing candidates", "reference": "FIPS 186-5"}, {"algorithm": "HMAC-SHA2-224", "cavpCertName": "A7386", "properties": "Key Length - Key Length: 8-524288 Increment 8", "reference": "FIPS 198-1"}, {"algorithm": "HMAC-SHA2-256", "cavpCertName": "A7386", "properties": "Key Length - Key Length: 8-524288 Increment 8", "reference": "FIPS 198-1"}, {"algorithm": "HMAC-SHA2-384", "cavpCertName": "A7386", "properties": "Key Length - Key Length: 8-524288 Increment 8", "reference": "FIPS 198-1"}, {"algorithm": "HMAC-SHA2-512", "cavpCertName": "A7386", "properties": "Key Length - Key Length: 8-524288 Increment 8", "reference": "FIPS 198-1"}, {"algorithm": "KAS-ECC-SSC Sp800- 56Ar3", "cavpCertName": "A7386", "properties": "Domain Parameter Generation Methods - P-256, P- 384, P-521 Scheme - ephemeralUnified - KAS Role - initiator, responder", "reference": "SP 800-56A Rev. 3"}, {"algorithm": "KDF SP800-108", "cavpCertName": "A7384", "properties": "KDF Mode - Counter Supported Lengths - Supported Lengths: 8-4096 Increment 8", "reference": "SP 800-108 Rev. 1"}, {"algorithm": "KDF SSH (CVL)", "cavpCertName": "A7386", "properties": "Cipher - AES-128, AES-192, AES-256 Hash Algorithm - SHA2-224, SHA2-256, SHA2-384, SHA2-512", "reference": "SP 800-135 Rev. 1"}, {"algorithm": "RSA KeyGen (FIPS186- 5)", "cavpCertName": "A7386", "properties": "Key Generation Mode - probableWithProbableAux Modulo - 2048, 3072, 4096, 8192 Primality Tests - 2powSecStr Private Key Format - standard", "reference": "FIPS 186-5"}, {"algorithm": "RSA SigGen (FIPS186- 5)", "cavpCertName": "A7386", "properties": "Modulo - 2048, 3072, 4096 Signature Type - pkcs1v1.5", "reference": "FIPS 186-5"}, {"algorithm": "RSA SigVer (FIPS186- 5)", "cavpCertName": "A7385", "properties": "Modulo - 2048, 4096 Signature Type - pkcs1v1.5", "reference": "FIPS 186-5"}, {"algorithm": "RSA SigVer (FIPS186- 5)", "cavpCertName": "A7386", "properties": "Modulo - 2048, 3072, 4096 Signature Type - pkcs1v1.5", "reference": "FIPS 186-5"}, {"algorithm": "SHA2-224", "cavpCertName": "A7386", "properties": "Message Length - Message Length: 0-51200 Increment 8", "reference": "FIPS 180-4"}, {"algorithm": "SHA2-256", "cavpCertName": "A7385", "properties": "Message Length - Message Length: 8-51200 Increment 8", "reference": "FIPS 180-4"}, {"algorithm": "SHA2-256", "cavpCertName": "A7386", "properties": "Message Length - Message Length: 0-51200 Increment 8", "reference": "FIPS 180-4"}, {"algorithm": "SHA2-384", "cavpCertName": "A7386", "properties": "Message Length - Message Length: 0-65536 Increment 8", "reference": "FIPS 180-4"}, {"algorithm": "SHA2-512", "cavpCertName": "A7386", "properties": "Message Length - Message Length: 0-65536 Increment 8", "reference": "FIPS 180-4"}]}, "vendor_affirmed_algos": {"section": 2, "subsection": 5, "found": true, "entries": [{"name": "CKG", "algoPropList": "Key Type:Symmetric and Asymmetric", "implName": "N/A", "reference": "According to SP800-133r2 Section 4, example 1"}]}, "non_approved_allowed_algos": {"section": 2, "subsection": 5, "found": false, "entries": []}, "non_approved_allowed_NSC": {"section": 2, "subsection": 5, "found": false, "entries": []}, "non_approved_not_allowed": {"section": 2, "subsection": 5, "found": false, "entries": []}, "ports_interfaces": {"section": 3, "subsection": 1, "found": true, "entries": [{"physicalPort": "Client Port 1-36. See the table below to consult the specific connectors", "logicalInterface": "Data Input Data Output", "data": "These ports are located on the front panel. Users may provision all or only a subset of client ports at a given time. Each provisioned client port runs data traffic to a customer's premises without encryption. Traffic from a client port is cross-connected to the line port of the module"}, {"physicalPort": "Line Port (0). Connector (J7101)", "logicalInterface": "Data Input Data Output", "data": "This port is located on the front panel. The port exchanges OTN data traffic with a remote-peer. This traffic is encrypted (except for the bypass mode) using AES-CTR in conjuction with AES-GMAC"}, {"physicalPort": "Serial. Connector (J10)", "logicalInterface": "Control Input", "data": "Used to configure the CO_pwd, CSPs, and certificates"}, {"physicalPort": "Backplane port - Ethernet /Logical Control Channel. Connector (J4)", "logicalInterface": "Control Input", "data": "This is a TCP/IP-based logical control messaging channel that uses the management Ethernet physical link between the system card and the module. It is used by the software application to control de module. There can be up to 2 System cards in a chassis (active & standby). Only one is active at a given time. There is a point-to-point Ethernet link between each system card and a given module. In other words, the module has 2 management Ethernet ports (one to each System card), only one of which can be active at any given time"}, {"physicalPort": "Backplane port - Control Signals. Connector (J4)", "logicalInterface": "Control Input Status Output", "data": "The system card can perform certain control operations on the module by exercising control signals such as reset and shutdown. In addition, there are few lines to connect to the adjacent TM400ENB module for 1:1 module protection signalling through which each module sends its failure status to the other module"}, {"physicalPort": "Serial. Connector (J10)", "logicalInterface": "Status Output", "data": "The serial port is utilized by the module for several purposes: - Indicate the state of the module every time it reaches a new state with the following format: \"STATE: State_name\"; - Provide the operator with additional information such as causes of error or indications"}, {"physicalPort": "IS LED. Connector (DS33(G))", "logicalInterface": "Status Output", "data": "This is a green-coloured LED on the front panel utilized by the module to indicate the kind of error according to the table of Error States. Moreover, this LED also blinks depending on the module's internal operativity"}, {"physicalPort": "SW-U LED. Connector (DS33(Y))", "logicalInterface": "Status Output", "data": "This is a yellow-coloured LED on the front panel utilized by the module to indicate the kind of error according to the table of Error States. Moreover, this LED also blinks depending on the module's internal operativity"}, {"physicalPort": "FAIL LED. Connector (DS33(R))", "logicalInterface": "Status Output", "data": "This is a multi-coloured LED on the front panel utilized by the module to indicate kind of error according to the table of Error States. Moreover, this LED also blinks depending on the module's internal operativity"}, {"physicalPort": "Security LED. Connector (CR6)", "logicalInterface": "Status Output", "data": "This is a multi-coloured LED on the front panel utilized by the module to indicate kind of error according to the table of Error States. Moreover, this LED also blinks depending on the module's internal operativity"}, {"physicalPort": "Tx (One LED per port). See the table below to consult the specific connectors", "logicalInterface": "Status Output", "data": "This is a software-controlled green-coloured LED. It is off until the associated port is configured and enabled."}, {"physicalPort": "F/L (One LED per port). See the table below to consult the specific connectors", "logicalInterface": "Status Output", "data": "This is a red-coloured LED. It's off during normal operation. When on, it indicates associated port failure conditions (voltage/temperature out-of- range, Loss-Of-Signal)."}, {"physicalPort": "Backplane port - Power input. Connector (J4))", "logicalInterface": "Power", "data": "Power supply voltage 48V DC"}, {"physicalPort": "Port number", "logicalInterface": "Port Connector Number", "data": "Port Tx LED"}, {"physicalPort": "0", "logicalInterface": "J7101", "data": "CR23"}, {"physicalPort": "1-4", "logicalInterface": "J7103", "data": "CR21"}, {"physicalPort": "5-8", "logicalInterface": "J7105", "data": "CR19"}, {"physicalPort": "9-12", "logicalInterface": "J7107", "data": "CR17"}, {"physicalPort": "13-16", "logicalInterface": "J7109", "data": "CR15"}, {"physicalPort": "17-20", "logicalInterface": "J7102", "data": "CR13"}, {"physicalPort": "21", "logicalInterface": "J7111-T", "data": "DS17"}, {"physicalPort": "22", "logicalInterface": "J7111-B", "data": "DS1"}, {"physicalPort": "23", "logicalInterface": "J7112-T", "data": "DS19"}, {"physicalPort": "24", "logicalInterface": "J7112-B", "data": "DS3"}, {"physicalPort": "25", "logicalInterface": "J7113-T", "data": "DS21"}, {"physicalPort": "26", "logicalInterface": "J7113-B", "data": "DS5"}, {"physicalPort": "27", "logicalInterface": "J7114-T", "data": "DS23"}, {"physicalPort": "28", "logicalInterface": "J7114-B", "data": "DS7"}, {"physicalPort": "29", "logicalInterface": "J7115-T", "data": "DS25"}, {"physicalPort": "30", "logicalInterface": "J7115-B", "data": "DS9"}, {"physicalPort": "31", "logicalInterface": "J7116-T", "data": "DS27"}, {"physicalPort": "32", "logicalInterface": "J7116-B", "data": "DS11"}, {"physicalPort": "33", "logicalInterface": "J7117-T", "data": "DS29"}, {"physicalPort": "34", "logicalInterface": "J7117-B", "data": "DS13"}, {"physicalPort": "35", "logicalInterface": "J7118-T", "data": "DS31"}, {"physicalPort": "36", "logicalInterface": "J7118-B", "data": "DS15"}]}, "authentication_methods": {"section": 4, "subsection": 1, "found": true, "entries": [{"name": "CO Authentication", "description": "Identity-based authentication for the CO role.", "mechanism": "The CO_pwd must be [8,20] characters in length, with at least 1 upper case, 1 lower case, and 1 number. With 102 possible values per character, it provides adequately low odds of a random match as per the FIPS specification.", "strength": "The crypto officer is authenticated by the module using a password of [8, 20] characters in length allowing to choose between 102 possible values for each character (26 upper-case, 26 lower- case, 10 numbers and 40 additional characters provided by 20 keys on the ASCII keyboard (with or without SHIFT) leads to 26+26+40+10 = 102) of the password, hence, the minimum and the maximum possibility that a random attempt succeeds or a false acceptance occurs is P_max=1/(102)^8 and P_min=1/(102)^20. This authentication method complies with the stated in the [SP 800-63B] document for memorized secret authentication.", "perMinute": "Moreover, for the CO, after the first authentication failure, the module will take 3 seconds after allowing the CO to perform a new authentication attempt. After the second authentication failure, the module will take 6 seconds after allowing the CO to perform the third authentication attempt. Finally, after the third authentication failure, the module will take 9 seconds to close the CO-Shell and open a new one. Taking into account that this process takes a total amount of 18 seconds (without considering the tipping time), the maximum number of authentication attempts within a minute is 9, therefore, the possibility that a random attempt succeeds or a false acceptance occurs P_max=9/(102)^8 and P_min=9/(102)^20."}, {"name": "System-Card Authentication", "description": "System-Card Authentication", "mechanism": "As the system card monitors the module's status and provisioned services, performs self-tests and firmware integrity tests, not executing any approved cryptographic algorithm nor managing any CSPs/SSPs - there is", "strength": "N/A", "perMinute": "N/A"}, {"name": "", "description": "", "mechanism": "no need for authentication as per FIPS 140-3 IG 4.1.A Resolution section bullet d) and e).", "strength": "", "perMinute": ""}, {"name": "Human Operator authentication", "description": "Identity-based authentication for the User role.", "mechanism": "The user password must be at least 8 characters in length, with at least 1 upper case, 1 lower case, and 1 number. With 102 possible values per character, it provides adequately low odds of a random match as per the FIPS specification.", "strength": "This user is authenticated by the module using a password with at least 8 characters in length allowing to choose between 102 possible values for each character (26 upper-case, 26 lower- case, 10 numbers and 40 additional characters provided by 20 keys on the ASCII keyboard (with or without SHIFT) leads to 26+26+40+10 = 102) of the password, hence, the possibility that a random attempt succeeds or a false acceptance occurs is P_max=1/(102)^8. This authentication method complies with the stated in the [SP 800-63B] document for memorized secret authentication.", "perMinute": "After configuring the lockout policy as indicated in section 11. The configuration for the authentication failures within a minute is the same as for the CO, therefore, during a minute, the maximum number of authentication attempts is 9, therefore, the possibility that a random attempt succeeds of false acceptance occurs in one minute period is P_max=9/102^8"}]}, "roles": {"section": 4, "subsection": 2, "found": true, "entries": [{"name": "Crypto Officer", "type": "Identity", "operatorType": "CO", "authMethodList": "CO Authentication"}, {"name": "System-Card", "type": "Identity", "operatorType": "System-Card (User Role)", "authMethodList": "System-Card Authentication"}, {"name": "User", "type": "Identity", "operatorType": "Human Operator", "authMethodList": "Human Operator authentication"}]}, "approved_services": {"section": 4, "subsection": 3, "found": true, "entries": [{"name": "Create new user", "description": "This service requires several steps: 1. It is necessary to create the user in the controller card. 2. The user shall log in to the controller card and establish a new password according to the authentication rules of the module. 3. Reset the module (This will make sure that once the app is running, it copies the shadow file from the controller card to the module). After that, the user can log in to the module either using SSH or a serial", "indicator": "Successful completion and possibility of user authentication", "inputs": "Username , password, and user class in the RCP and restart to copy the shadow file into the module", "outputs": "There is no output. The new user can log in and run his/her associate d services", "secFunImpl": "None", "rolesSspAccess": "User - User_pw d: W"}, {"name": "Show status", "description": "connection. Show the current status of the module according to FSM. It is automatically executed by the module depending on its current state according to the FSM.", "indicator": "Serial port and log file indicating the current status of the module", "inputs": "N/A", "outputs": "The module shows automatic ally without the user interventi on the current module status via the serial port and log file", "secFunImpl": "None", "rolesSspAccess": "User"}, {"name": "Show version", "description": "Show module hardware and firmware", "indicator": "The module outputs the following information through", "inputs": "Command to show the", "outputs": "Shows the module name and", "secFunImpl": "None", "rolesSspAccess": "User"}, {"name": "", "description": "version. The module version can be obtained from the module as detailed below: 1. Connecting to the module via SSH and using the \"ver\" command to obtain the module name and software version. 2. Using the \"run show chassis inventory slot- <slot_number>\" where <slot_number> indicates the slot chassis.", "indicator": "the shell for each case (additional information that is not included here is given): \"1. Application Version: V13.5.1.0.+; Inventory info for slot- <slot_number>: | Type: TM400ENB (34267) | Hardware Revision: D.1\"", "inputs": "module version", "outputs": "software and hardware versions among additional informati on", "secFunImpl": "", "rolesSspAccess": ""}, {"name": "Perform Self- Test", "description": "Execute pre- operational self-tests. Automatically performed by SW during power-up. The System-Card may initiate Reset using the \"run request chassis power reset\" command.", "indicator": "Response in shell detailing the following: \"Running FIPS POST (power-on self-tests) ... Successfully passed all FIPS self-tests\"", "inputs": "Command to cause the reset of the module", "outputs": "If the module executes the self- tests with success, it returns a message via the serial port, otherwise , the module indicates the error state and additional informati on related to via the serial port and log file", "secFunImpl": "None", "rolesSspAccess": "System- Card"}, {"name": "Configure period for", "description": "Configuration of the period in days to execute", "indicator": "This function returns a message (as shown in the example below)", "inputs": "Command indicating : - The", "outputs": "Confirmat ion message", "secFunImpl": "None", "rolesSspAccess": "User"}, {"name": "Periodic Self- Test", "description": "the periodic self-tests. The specific command is \"set chassis slot <slot_number> tm400enb-m self-test- options self- test-years X self-test-time YY:YY\", where <slot_number> indicates the slot to be configured, \"X\" indicates the years (between 1 and 5) and the \"YY:YY\" indicates the", "indicator": "via the serial port that indicates the remaining seconds for the following periodic self-test execution (\"self_test_remaining_ seconds\") among other data", "inputs": "period in days (between 1-5 years) - The time to execute it using two digits for hours and two digits for minutes", "outputs": "via serial port. Moreover , once the period ends, the software initiates a module power cycle, which ends up in a pre- operation al self- test", "secFunImpl": "", "rolesSspAccess": ""}, {"name": "AES key establishment", "description": "hour. Negotiation of the symmetric key with remote peer module, resultant from an ECDH key establishment. Upon the configuration of an end-to-end un-encrypted link by the Human Operator, the module performs this as part of link establishment. For this purpose, the following command shall be used: \"set chassis slot <slot_number> tm400enb-m port", "indicator": "When the peer is authenticated, the AES Key is established, and, the module starts sending and receiving encrypted traffic via the configured port, the TX LED associated with this port is on (with green color)", "inputs": "The establish ment of HEK and HDK requires to exchange the required informati on to authentic ate the peer module based on RSA signature authentic ation and to perform the key agreemen t based on ECDH", "outputs": "The establish ment of HEK and HDK requires to exchange the required informati on to authentic ate the peer module based on RSA signature authentic ation and to perform the key agreemen t based on ECDH", "secFunImpl": "KAS-ECC (KBKDF) CKG", "rolesSspAccess": "User - ECDH_Pri v_K: G,E - ECDH_Pu b_K: G,E - KBKDF_ MK: G,E - KH_Key: G,E - DRBG Seed: G,E - DRBG Internal Value: G,E - DRBG Key: G,E - HEK: G,W - HDK: G,W"}, {"name": "", "description": "<port_number> oduc 1 odu odu2-TPN1 encryption enabled\"", "indicator": "", "inputs": "", "outputs": "", "secFunImpl": "", "rolesSspAccess": ""}, {"name": "SSH key establisment", "description": "Negotiation of the symmetric key to establish an SSH session when an operator is accessing to the module via SSH", "indicator": "The operator is logged with success to the module via SSH", "inputs": "It requires operator to be logged using the serial port and SSH protocol", "outputs": "Successful access to the module", "secFunImpl": "KAS-ECC (SSH) CKG", "rolesSspAccess": "User - ECDH_Pri v_K: G,E - ECDH_Pu b_K: G,E - DRBG Seed: G,E - DRBG Internal Value: G,E - DRBG Key: G,E - SSH_KDF _K: G,E - SSH_K:"}, {"name": "Datapath Encryption", "description": "Encryption of incoming data on client ports. Upon the configuration of an end-to-end un-encrypted link, the module encrypts user data with the HEK AES key. For this purpose, the following command shall be sent: \"set chassis slot <slot_number> tm400enb-m port <port_number> oduc 1 odu odu2-TPN1 encryption enabled\".", "indicator": "When the peer is authenticated, the AES Key is established, and, the module starts sending and receiving encrypted traffic via the configured port, the TX LED associated with this port is on (with green color)", "inputs": "Client- side payloads received from the client ports", "outputs": "Client- side payloads are encrypted using AES- CTR and AES- GMAC algorithm and sent to the peer via the line ports", "secFunImpl": "Traffic Encryptio n and Decryptio n Traffic Authentic ation", "rolesSspAccess": "G User - HEK: R,E"}, {"name": "Datapath Decryption", "description": "Decryption of outgoing data on client ports. Upon the configuration of an end-to-end un-encrypted link, the module decrypts user data with the HDK AES key. For this purpose, the following command shall be sent: \"set chassis slot <slot_number> tm400enb-m port <port_number> oduc 1 odu odu2-TPN1 encryption enabled\".", "indicator": "When the peer is authenticated, the AES Key is established, and, the module starts sending and receiving encrypted traffic via the configured port, the TX LED associated with this port is on (with green color)", "inputs": "Line port traffic encrypted with AES- CTR and AES- GMAC", "outputs": "Decrypte d line port traffic is output via the required client port", "secFunImpl": "Traffic Encryptio n and Decryptio n Traffic Authentic ation", "rolesSspAccess": "User - HDK: R,E"}, {"name": "CO Password Configuration", "description": "Configuration of CO_pwd for authentication into the module. There are two possible methods of using the serial port: - During initial configuration, the module detects that CO user does not exist in the module and offers the possibility of creating one by pressing \"P\" when it is required by the module. - When the CO", "indicator": "In both situations the module outputs the following message via the serial port: \"Password configured. Please remember your password.\"", "inputs": "The CO_pwd to be configure d or modified", "outputs": "Confirmat ion via CO-Shell", "secFunImpl": "None", "rolesSspAccess": "Crypto Officer - CO_pwd: W"}, {"name": "", "description": "user already exists, the module offers the possibility of changing the current CO_pwd every time it is powered-on. This can be done by pressing \"P\" when it is required by the module. Note: Both cases require to be connected to the module via serial port.", "indicator": "", "inputs": "", "outputs": "", "secFunImpl": "", "rolesSspAccess": ""}, {"name": "Zeroization service", "description": "Zeroization of the SSPs stored within the module. This is done by using CO-Shell command via serial port. The specific command is \"zeroize\". Note: In addition, the module offers automatic zeroization when the HEK and HDK keys are rotated and in case of tamper detection as detailed in the \"9.3 SSP Zeroization Methods\" section.", "indicator": "During zeroization process, the security LEDs on the front panel blink in Red with the pattern 1 sec on/1 sec off and the following response via CO-Shell: \"Please wait !!!Zeroize command in process DeleteCaCert Successful. Delete RSA Key pair Successful. Format Flash Successful. Zeroize LED Set. passwd, shadow files removed. Line and Client port Laser off successfully. Zeroization command Successful.\" After completion of the zeroization process, the Security LED blink in Orange with the pattern 2.5 sec on/2.5 sec off.", "inputs": "Command to execute the zeroizatio n", "outputs": "While performin g the zeroizato n, the security LED blinks in Red with the 1 sec on/1 sec off pattern and the message specified in indicator column. After completin g the zeroizatio n, the security LED blinks in Orange with the 2.5 sec on/2.5", "secFunImpl": "None", "rolesSspAccess": "Crypto Officer - M_Privat e: Z - M_Public : Z - M_cert: Z - CA_cert: Z - KEK: Z - User_pw d: Z"}, {"name": "", "description": "", "indicator": "", "inputs": "", "outputs": "sec off pattern", "secFunImpl": "", "rolesSspAccess": ""}, {"name": "Selective Bypass", "description": "Enable/disable bypass on specific client ports upon the configuration of an end-to-end un-encrypted link by the Human Operator. For this purpose, the Human Operator sends the following command via the serial port: \"set chassis slot <slot_number> tm400enb-m port <port_number> oduc 1 odu odu2-TPN1 encryption", "indicator": "An indication for this service is recorded in the log file detailing \"<ChannelId port_id> Enable PassthruModencryptio n\". Moreover, the module will start sending traffic to the peer via the conjured link", "inputs": "Client- side payloads received from the client ports", "outputs": "Client- side payloads are sent without encryptio n via the line ports to the peer", "secFunImpl": "None", "rolesSspAccess": "User"}, {"name": "Firmware integrity check", "description": "disabled\". Perform SW & FW integrity and authenticity tests based on RSA signature verification based on 4096 modulus withs SHA-256 message digest. Automatically performed by the Boot-ROM during power- up. System- Card may initiate Reset using the \"run request chassis power reset\" command or resetting the", "indicator": "Considering that the firmware integrity check is successfully performed if the module executes the pre-operational self- tests, the output provided by the module via serial port is the same as for the \"Perform self-test\" service: \"Running FIPS POST (power-on self- tests) ... Successfully passed all FIPS self- tests\"", "inputs": "Same as performin g the self- test service", "outputs": "If the module executes the self- tests with success, it returns a message via the serial port, otherwise , the module enters in error state. Moreover , the current error state and additional", "secFunImpl": "Firmware integrity verificatio n", "rolesSspAccess": "System- Card - Boot_Pu blic: R,E"}, {"name": "", "description": "module, by which self-test is performed automatically.", "indicator": "", "inputs": "", "outputs": "informati on related to it are output via the serial port and log file", "secFunImpl": "", "rolesSspAccess": ""}, {"name": "Generate KEK", "description": "Generate Key Encryption Key and store it in memory- backed-up RAM. It is automatically executed by the module after performing \"Generate RSA keys\" or \"SSP external upload\" services to encrypt the generated/load ed key pair.", "indicator": "Successful completion and the fact that the module does not go either to \"General error state\" in RSA PCT fails or \"SSPs Entry or Generation\" state if an error occurs during the generation or loading of the RSA key pair", "inputs": "M_privat e, Mpublic, and M_Cert in the case they are loaded into the module instead of being generated", "outputs": "Same as Generate RSA Keys or SSP external upload services", "secFunImpl": "CKG", "rolesSspAccess": "Crypto Officer - DRBG Seed: G,E - DRBG Internal Value: G,E - DRBG Key: G,E - KEK: G,W"}, {"name": "Generate RSA keys", "description": "Generate RSA module key pair via the CO-Shell using the \"GenerateKeyP air\" command to generate the key pair.", "indicator": "Response in the CO- Shell showing the following message: \"Keys generated successfully\"", "inputs": "N/A", "outputs": "Response via the CO-shell", "secFunImpl": "RSA module's key pair generatio n CKG", "rolesSspAccess": "Crypto Officer - DRBG Seed: G,E - DRBG Internal Value: G,E - DRBG Key: G,E - M_Privat e: G,W - M_Public : G,W"}, {"name": "SSP external upload", "description": "Upload SSPs via the CO-Shell on the Serial port console via an SSH channel using the \"LoadCaCertific ate\" command to load the", "indicator": "Response in the CO- Shell for each specific command: CA Certificate loaded successfully Public Certificate loaded successfully Private Key successfully loaded", "inputs": "CA_Cert, M_privat e, M_Public, and M_Cert are loaded", "outputs": "Response via the CO-shell", "secFunImpl": "None", "rolesSspAccess": "Crypto Officer - CA_cert: W - M_cert: W - M_Privat"}, {"name": "", "description": "CA_Cert, the \"LoadPublicCert ificate\" command to load the M_Cert, and \"LoadPrivateKe y\" command to load the M_private key.", "indicator": "", "inputs": "into the module", "outputs": "", "secFunImpl": "", "rolesSspAccess": "e: W - M_Public : W"}, {"name": "Peer authentication", "description": "Peer authentication based on generating a challenge by performing digital signature generation and digital signature verification. It is an automated process that occurs in every key exchange as part of link establishment. For this purpose, the Human operator sends the following command: \"set chassis slot <slot_number> tm400enb-m port <port_number> oduc 1 odu odu2-TPN1 encryption enabled\".", "indicator": "When the peer is authenticated, the AES Key is established, and, the module starts sending and receiving encrypted traffic via the configured port, the TX LED associated with this port is on (with green color)", "inputs": "Peer M_Cert is received to perform the authentic ation", "outputs": "M_Cert is sent to the peer", "secFunImpl": "Peer module authentic ation", "rolesSspAccess": "User - M_Privat e: R,E - CA_cert: R,E"}, {"name": "SSH session encryption", "description": "Encryption of the SSH traffic when an operator is accessing to the module via SSH after performing the", "indicator": "The CO or Human Operator is logged with success to the module via SSH", "inputs": "It requires the CO or human user to be logged using the serial port and SSH protocol", "outputs": "Successful access to the module", "secFunImpl": "SSH traffic encryptio n", "rolesSspAccess": "User - SSH_K: R,E"}, {"name": "", "description": "key establishment", "indicator": "", "inputs": "", "outputs": "", "secFunImpl": "", "rolesSspAccess": ""}, {"name": "Symmetric Encryption/Dec ryption", "description": "This service is used to encrypt/decrypt the M_private key using KEK. By default, AES- CBC is used by default although AES- GCM could also be utilized. It occurs as part of the loading/generat ion of the M_private key. Once it is loaded using the \"LoadPrivateKe y\" command or generated using the \"GenerateKeyP air\" command the module encrypts it using the KEK.", "indicator": "Same as Generate RSA Keys and SSPs External Upload services because when the keys are either generated or uploaded, they are automatically encrypted and the output of both services means that the keys are stored in an encrypted form in the module", "inputs": "The M_privat e key to be encrypted", "outputs": "Same as Generate RSA Keys or SSP external upload services", "secFunImpl": "SSPs encryptio n SSPs Auth Encryptio n", "rolesSspAccess": "Crypto Officer - M_Privat e: R,E - KEK: R,E"}]}, "non_approved_services": {"section": 4, "subsection": 4, "found": false, "entries": []}, "mechanisms_actions": {"section": 7, "subsection": 1, "found": true, "entries": [{"mechanism": "Strong tamper cover", "inspectFreq": "Every month", "inspectGuidance": "The CO must perform a visual inspection of the metallic cover to ensure it has not been manipulated or damaged."}, {"mechanism": "Tamper seals", "inspectFreq": "Every month", "inspectGuidance": "The CO must perform a visual inspection of the tamper seals to ensure it has not been manipulated, damaged, or replaced (Verifying they are correctly encoded)."}, {"mechanism": "Tamper detection and zeroization circuitry", "inspectFreq": "Every month", "inspectGuidance": "The CO must check that the module is working under normal conditions. This will require the CO to authenticate into the module (ensuring the module has not been tampered with and that the battery has not lost power)."}]}, "storage_areas": {"section": 9, "subsection": 1, "found": true, "entries": [{"name": "RAM (from TCPM-2)", "description": "Most CSPs and PSPs are stored in plaintext here", "persistance": "Dynamic"}, {"name": "TOD-RAM", "description": "It is a battery Backed-Up RAM that is utilized by the module to store CSPs and to store a flag for tamper indication", "persistance": "Dynamic"}, {"name": "CPLD flash memory", "description": "Flash memory placed into the CPLD component", "persistance": "Static"}, {"name": "CPU_ROM", "description": "ROM memory placed into the TCPM-2 CPU", "persistance": "Static"}, {"name": "SPI boot flash", "description": "It is an SPI flash memory attached to the Digi-G5 module", "persistance": "Static"}, {"name": "SPI flash memory", "description": "Is an SPI flash memory controlled by the CPLD that incorporates several data protection methods", "persistance": "Static"}, {"name": "Shadow file", "description": "File that contains the user_pwds related to the user operators", "persistance": "Static"}]}, "ssp_io_methods": {"section": 9, "subsection": 2, "found": true, "entries": [{"name": "M_Private and M_Public (RSA private Key)", "source": "Loaded from the exterior by the CO in encrypted form via SSH session during the module installation and initialization. Note: No assurance of minimum security of SSPs (e.g., keys, bit strings) that are externally loaded, or of SSPs established with externally loaded SSPs", "dest": "CPLD flash memory", "format": "Encrypte d", "distribution": "Manual", "entry": "Electroni c", "sfiAlgo": "SSH traffic encryption"}, {"name": "M_cert (X.509 cert)", "source": "Loaded from the exterior by the CO in encrypted form via SSH session. Note: No assurance of minimum security of SSPs (e.g., keys, bit strings) that are externally loaded, or of SSPs established with externally loaded SSPs", "dest": "SPI flash memory", "format": "Encrypte d", "distribution": "Manual", "entry": "Electroni c", "sfiAlgo": "SSH traffic encryption"}, {"name": "CA_cert (X.509 cert)", "source": "Loaded from the exterior by the CO in encrypted form via SSH session. Note: No assurance of minimum security of SSPs (e.g., keys, bit strings) that are externally loaded, or of SSPs established with externally loaded SSPs", "dest": "SPI flash memory", "format": "Encrypte d", "distribution": "Manual", "entry": "Electroni c", "sfiAlgo": "SSH traffic encryption"}, {"name": "Boot_Public", "source": "Integrated to Boot code image that is burnt into CPU_ROM during the manufacturing process", "dest": "CPU_ROM", "format": "Plaintext", "distribution": "Manual", "entry": "Electroni c", "sfiAlgo": ""}, {"name": "CO_pwd", "source": "Entered by the CO during the installation/initializatio n of the module or updated anytime by the CO, via the serial port console", "dest": "CPLD flash memory", "format": "Plaintext", "distribution": "Manual", "entry": "Electroni c", "sfiAlgo": ""}, {"name": "User_pwd", "source": "From System Card (RCP)", "dest": "Shadow file", "format": "Plaintext", "distribution": "Automated", "entry": "Electroni c", "sfiAlgo": "SHA2-512 (A7386)"}, {"name": "Output to the peer module", "source": "CPLD flash memory", "dest": "Peer module as part of its associated module certificate M_Cert", "format": "Plaintext", "distribution": "Automated", "entry": "Electroni c", "sfiAlgo": "Peer module authenticatio n"}, {"name": "ECDH_Pub_ K", "source": "RAM (from TCPM-2)", "dest": "Either the peer module in case of key establishmen t for line- traffic encryption or the device", "format": "Plaintext", "distribution": "Automated", "entry": "Electroni c", "sfiAlgo": "KAS-ECC-SSC Sp800-56Ar3 (A7386)"}, {"name": "", "source": "", "dest": "from which SSH session is established", "format": "", "distribution": "", "entry": "", "sfiAlgo": ""}]}, "ssp_zeroization_methods": {"section": 9, "subsection": 3, "found": true, "entries": [{"method": "Zeroization service", "description": "AES-256-CBC Key Encryption Key (KEK) and IV are overwritten in the TOD-RAM with all '0's. Encrypted RSA private key \"M_Private\" in the CPLD flash memory is overwritten with all '1's. Certificates \"M_Cert\" (containing RSA public key \"M_Public\") and \"CA_Cert\" in the SPI flash memory are overwritten with all '1's. Shadow file containing the user passwords is deleted from the file system. During the execution of the service, the security LED blinks in red with the pattern 1 sec on/1 sec off, and, once completed the zeroization is completed, the operation is logged in the log file. The security LED blinks in orange with the 2.5 sec on/2.5 sec off pattern and the message specified in the table of Approved Services is output via the CO Shell", "rationale": "Zeroization of all the CSPs stored into the module except the CO_pwd because it will cause the module to result inoperable", "operatorId": "Zeroization request by the CO using the \"zeroize\" command"}, {"method": "Partial zeroization", "description": "In the case of reset/reboot, all the HEKs and HDKs (for all encrypted service channels) are removed from the SPI boot flash attached to the Digi-G5, and all temporary SSPs that might reside in RAM (potentially in the middle of channel establishments) are also wiped off. HEKs and HEKs", "rationale": "Traffic encryption keys are zeroized, requiring to be re-negotiated after to allow the module encrypting or", "operatorId": "Reset/Reboot"}, {"method": "", "description": "for the services are required to be re- renegotiated with peers to carry out the traffic encryption through the client and line ports", "rationale": "decrypting traffic via de line-port", "operatorId": ""}, {"method": "Tamper response", "description": "In case of tampering during operational time (not when the module is not powered), the KEK and CO_pwd are zeroized as detailed in the \"7 Physical Security\" section, and the event is reported in the error log. This causes the M_private and M_public to be permanently lost since they are encrypted with KEK. In this case, the security LED blinks according to the indicated in the table of Error States", "rationale": "Those CSPs are zeroized not to be available to any attacker. Moreover, the module results inoperable requiring to be repaired at Ribbon facilities", "operatorId": "Tamper Event"}, {"method": "Zeroization after use", "description": "The SSPs stored in RAM are zeorized after their usage", "rationale": "Zeroization of all CSPs stored in RAM", "operatorId": ""}]}, "self_tests": {"section": 10, "subsection": 1, "found": true, "entries": [{"algorithmOrTest": "Critical Functions Test - Tamper test", "testProps": "Checks if there was a tamper event prior to the ongoing initialization", "testMethod": "On-board tamper detection circuitry checks if a tamper event has occurred prior to initializing the module", "type": "Critical Functio n", "indicator": "If the test is passed with success the module executes the critical function tests called Power Failures or tampering test detailed in the row below. In case of failure, the module enters in tamper detection error state and the module's LEDs blink according to the table of Error States", "details": "Indicated below the table"}, {"algorithmOrTest": "Critical Functions Test - Power Failures or tampering test", "testProps": "Check for tamper event/low battery event", "testMethod": "Check for power failures or tamper while the module was powered-off", "type": "Critical Functio n", "indicator": "If the test is passed with success the module executes the critical function tests called CO_pwd test. In case of failure, the module enters in Low-Battery/PO-", "details": "Indicated below the table"}, {"algorithmOrTest": "", "testProps": "", "testMethod": "", "type": "", "indicator": "Tamper error state and the module's LEDs blink according to the table of Error States", "details": ""}, {"algorithmOrTest": "Critical Functions Test - CO password test", "testProps": "Check if the CO_pwd is missing", "testMethod": "The custom logic checks if there is a valid CO_pwd configured in the module", "type": "Critical Functio n", "indicator": "If the test is passed with success the module executes the Software/Firmware integrity test. In case of failure, the module enters in Missing CO- Password state and the module's LEDs blink according to the table of Error States", "details": "Indicated below the table"}, {"algorithmOrTest": "Software/Firmware integrity test", "testProps": "RSA PKCS v1.5 with 4096 modulus and SHA256 using Boot_Public key", "testMethod": "Firmware integrity test based on Signature Verification", "type": "SW/FW Integrity", "indicator": "If the test is passed with success the module executes the critical function tests called H/W Encryption/Decryptio n verification detailed below. In case of failure, the module enters in General Error state", "details": "Signature verificatio n to verify the firmware integrity. More details are provided below the table"}, {"algorithmOrTest": "Critical Functions Test - H/W Encryption/Decryptio n verification", "testProps": "Check the correct operativity of the encryption channels", "testMethod": "H/W Encryption/Decryptio n verification.", "type": "Critical Functio n", "indicator": "If the test is passed with success the module executes the bypass test detailed below. . In case of failure, the module enters in General Error state", "details": "Indicated below the table"}, {"algorithmOrTest": "Bypass Test", "testProps": "Check the correct functioning of the Bypass functionalit y", "testMethod": "Creating a bidirectional client channel with a local loopback in the line port", "type": "Bypass", "indicator": "If the test is passed with success the module starts the execution of the conditional self-tests. In case of failure, the module enters in General Error state", "details": "Indicated below the table"}]}, "cond_self_tests": {"section": 10, "subsection": 2, "found": true, "entries": [{"algorithmOrTest": "RSA SigVer (FIPS186-5) (A7385)", "testProps": "RSA with modulus 2048 and 4096 bits", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success the module executes the firmware integrity test. In case of failure, the module enters in General Error state", "details": "RSA signature verification", "condition": "Prior to executing the firmware integrity test, the Boot-ROM execute this KAT required to perform the firmware integrity signature verification"}, {"algorithmOrTest": "SHA2-256 (A7385)", "testProps": "SHA256", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "SHA 256 verification", "condition": "Prior to execute the firmware integrity test, the Boot-ROM execute this KAT required to perform the firmware integrity signature verification"}, {"algorithmOrTest": "HMAC-SHA2- 224 (A7386)", "testProps": "HMAC-SHA224", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "HMAC verification", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "HMAC-SHA2- 256 (A7386)", "testProps": "HMAC-SHA256", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "HMAC verification", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "HMAC-SHA2- 384 (A7386)", "testProps": "HMAC-SHA384", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module", "details": "HMAC verification", "condition": "This test is executed in a group of tests"}, {"algorithmOrTest": "", "testProps": "", "testMethod": "", "type": "", "indicator": "continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "", "condition": "after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "HMAC-SHA2- 512 (A7386)", "testProps": "HMAC-SHA512", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "HMAC verification", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "AES-GCM Encryption KAT", "testProps": "AES-256-GCM", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "AES GCM encryption KAT", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "AES-GCM Decryption KAT", "testProps": "AES-256-GCM", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "AES GCM decryption KAT", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "AES-CBC Encryption KAT", "testProps": "AES-256-CBC", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution", "details": "AES CBC encryption KAT", "condition": "This test is executed in a group of tests after the module"}, {"algorithmOrTest": "", "testProps": "", "testMethod": "", "type": "", "indicator": "of CAST. Otherwise, the module enters in General Error state", "details": "", "condition": "executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "AES-CBC Decryption KAT", "testProps": "AES-256-CBC", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "AES CBC decryption KAT", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "KAS-ECC-SSC Sp800-56Ar3 (A7386)", "testProps": "ECDH with the P-256 curve", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "ECDH verification", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "KDF SP800-108 (A7384)", "testProps": "KBKDF counter mode with HMAC-SHA256", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "KBKDF verification", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "RSA SigGen (FIPS186-5) (A7386)", "testProps": "RSA with modulus (2048, 3072, 4096, 8192)", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the", "details": "RSA signature generation", "condition": "This test is executed in a group of tests after the module executes all the pre-operational"}, {"algorithmOrTest": "Algorithm or Test", "testProps": "Test Properties", "testMethod": "Test Method", "type": "Test Type", "indicator": "Indicator module enters in General Error state", "details": "Details", "condition": "Conditions self-tests and enters in conditional self- tests for the"}, {"algorithmOrTest": "RSA SigVer (FIPS186-5) (A7386)", "testProps": "RSA with modulus (2048, 3072, 4096, 8192)", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "RSA signature verification", "condition": "first time This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the"}, {"algorithmOrTest": "SHA2-224 (A7386)", "testProps": "SHA2-224", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "SHA verification", "condition": "first time This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "SHA2-256 (A7386)", "testProps": "SHA2-256", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "SHA verification", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "SHA2-384 (A7386)", "testProps": "SHA2-384", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters", "details": "SHA verification", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in"}, {"algorithmOrTest": "Algorithm or Test", "testProps": "Test Properties", "testMethod": "Test Method", "type": "Test Type", "indicator": "Indicator in General Error state", "details": "Details", "condition": "Conditions conditional self- tests for the"}, {"algorithmOrTest": "SHA2-512 (A7386)", "testProps": "SHA2-512", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "SHA verification", "condition": "first time This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time"}, {"algorithmOrTest": "RCT", "testProps": "RCT", "testMethod": "SP 800-90B Health tests; start- up and conditional", "type": "Critical Functio n", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "The Repetition Count Test is performed as specified in section 4.4.1 of the [SP 800- 90B]", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time when the ENT is initialized for the first time"}, {"algorithmOrTest": "APT", "testProps": "APT", "testMethod": "SP 800-90B Health tests; start- up and conditional", "type": "Critical Functio n", "indicator": "In case of success, the module continues with the execution of CAST. Otherwise, the module enters in General Error state", "details": "The Adaptative Proportion Test is performed as specified in section 4.4.2 of the [SP 800- 90B]", "condition": "This test is executed in a group of tests after the module executes all the pre-operational self-tests and enters in conditional self- tests for the first time when the ENT is initialized for the first time"}, {"algorithmOrTest": "Counter DRBG (A7386)", "testProps": "CTR_DRBG", "testMethod": "KAT", "type": "CAST", "indicator": "In case of success, the module completes the execution of", "details": "Instantiate, generate, and reseed health tests for", "condition": "This test is executed in a group of tests after the module"}, {"algorithmOrTest": "", "testProps": "", "testMethod": "", "type": "", "indicator": "CAST. Otherwise, the module enters in General Error state", "details": "CTR_DRBG as stated in section 11.3 of the [SP 800- 90Arev1]", "condition": "executes all the pre-operational self-tests and enters in conditional self- tests for the first time when the CTR_DRBG is initialized for the first time"}, {"algorithmOrTest": "ECDSA KeyGen (FIPS186-5) (A7386)", "testProps": "P-256, P-384 and P-521", "testMethod": "PCT", "type": "PCT", "indicator": "If it is executed with success the module generates ECDSA key pair as part of the ECDHE key establishment. Otherwise, the module enters in General Error state", "details": "ECDSA key pair generation with P-256, P-384 and P-521 curves", "condition": "This test is executed when a new ECDSA key pair is generated as part of the ECDHE key establishment processes"}, {"algorithmOrTest": "RSA KeyGen (FIPS186-5) (A7386)", "testProps": "RSA with modulus (2048, 3072, 4096, 8192)", "testMethod": "PCT", "type": "PCT", "indicator": "If it is executed with success the module executes the M_Public and M_Private keys correspondenc e test. Otherwise, the module enters in General Error state", "details": "RSA key pair signature generation and verification with modulus (2048, 3072, 4096, 8192)", "condition": "This test is executed when a new RSA key pair is generated or loaded into the module"}, {"algorithmOrTest": "M_Public and M_Private keys correspondenc e test", "testProps": "The correspondenc e between M_private, M_public and M_cert is verified", "testMethod": "PCT", "type": "Critical Functio n", "indicator": "In case of success, the module executes the M_Cert verification test. Otherwise, the module enters in General Error state", "details": "Additional informatio n provided below the table", "condition": "This test is executed when a new RSA key pair is generated or loaded into the module (after the execution of the RSA PCT)"}, {"algorithmOrTest": "M_Cert verification test", "testProps": "The integrity of the module's X.509 certificate is verified", "testMethod": "Signature Verificatio n", "type": "Critical Functio n", "indicator": "In case of success, the module executes the CA_Cert", "details": "Additional informatio n provided below the table", "condition": "This test is executed when a new RSA key pair is generated or"}, {"algorithmOrTest": "", "testProps": "", "testMethod": "", "type": "", "indicator": "verification test. Otherwise, the module enters in General Error state", "details": "", "condition": "loaded into the module (after the execution of the M_Public and M_Private keys correspondenc e test)"}, {"algorithmOrTest": "CA_Cert verification test", "testProps": "The Cryptographic Authority's X.509 certificate CA_Cert is verified", "testMethod": "Signature Verificatio n", "type": "Critical Functio n", "indicator": "In case of success, the module goes to Ready state. Otherwise, the module enters in General Error state", "details": "Additional informatio n provided below the table", "condition": "This test is executed when a new RSA key pair is generated or loaded into the module (after the execution of the M_Cert verification test)"}]}, "error_states": {"section": 10, "subsection": 4, "found": true, "entries": [{"name": "General Error State", "description": "A general error is detected", "conditions": "An error is detecting during self-test execution.", "recoveryMethod": "Power-cycling and execution of the self-test", "indicator": "The module prints the following message \"STATE: GENERAL ERROR\" in the error log and the serial port and it is automatically reset."}, {"name": "Tamper Detection Error state", "description": "A tamper event is detected", "conditions": "A tamper event occurred on the module", "recoveryMethod": "Non-recoverable", "indicator": "The Security LED is on Red Colour. The SW-U LED, IS LED and FAIL LED are off. Moreover, the module prints the following message \"Main Tamper Cover Breach\" in the serial port"}, {"name": "Low- Battery/PO- Tamper error state", "description": "A low battery or tamper event is detected while the module is off", "conditions": "The battery of the module is close to running out", "recoveryMethod": "Power-cycling and execution of the self-test", "indicator": "The Security LED turns to red (2.5 seconds on/ 2.5 seconds off). The SW-U LED, IS LED and FAIL LED are off. Moreover, the module prints the following message \"System Halted - Low battery or tamper event suspected\" in the serial port"}, {"name": "Missing CO- Password State", "description": "The CO_pwd is missing.", "conditions": "No CO_pwd is detected in the module", "recoveryMethod": "The CO must perform the initial configuration process", "indicator": "The Security LED turns 1.5 second on in green and 2.5 seconds on in RED. The SW-U LED, the IS LED and FAIL LED are off. Moreover, the module prints the following message \"Firmware password invalid/missing\" in the serial port"}, {"name": "Env. Failure state", "description": "The module enters in this error when either the temperature and/or the input voltage are outside of the defined operation ranges", "conditions": "Temperature and/or voltage out of the operating rage", "recoveryMethod": "The module will keep on power cycling until the temperature and/or voltage are back to the values into the operating range", "indicator": "The module outputs the following message via the serial port:\"STATE: Env. Failure\". After that, it is automatically reset."}]}}}, "heuristics": {"_type": "sec_certs.sample.fips.FIPSCertificate.Heuristics", "algorithms": {"_type": "Set", "elements": ["#A7386", "AES-CTRC1410", "#A7384", "Counter DRBGA7386", "SHA2-224A7386", "HMAC-SHA2-384A7386", "#A7385", "AES-GCMA7386", "HMAC-SHA2-512A7386", "AES-GMACC1410", "SHA2-384A7386", "AES-CBCA7386", "HMAC-SHA2-256A7386", "#C1410", "SHA2-256A7386", "KDF SSHA7386", "RSA SigGen (FIPS186-5)A7386", "KAS-ECC-SSC Sp800-56Ar3A7386", "ECDSA KeyGen (FIPS186-5)A7386", "RSA KeyGen (FIPS186-5)A7386", "RSA SigVer (FIPS186-5)A7386", "SHA2-512A7386", "HMAC-SHA2-224A7386", "KDF SP800-108A7384"]}, "extracted_versions": {"_type": "Set", "elements": ["-"]}, "cpe_matches": null, "verified_cpe_matches": null, "related_cves": null, "policy_prunned_references": {"_type": "Set", "elements": []}, "module_prunned_references": {"_type": "Set", "elements": []}, "policy_processed_references": {"_type": "sec_certs.sample.certificate.References", "directly_referenced_by": null, "indirectly_referenced_by": null, "directly_referencing": null, "indirectly_referencing": null}, "module_processed_references": {"_type": "sec_certs.sample.certificate.References", "directly_referenced_by": null, "indirectly_referenced_by": null, "directly_referencing": null, "indirectly_referencing": null}, "direct_transitive_cves": null, "indirect_transitive_cves": null}, "state": {"_type": "sec_certs.sample.fips.InternalState", "module": {"_type": "sec_certs.sample.document_state.DocumentState", "download_ok": true, "convert_ok": true, "extract_ok": true, "source_hash": null, "txt_hash": null, "json_hash": null}, "policy": {"_type": "sec_certs.sample.document_state.DocumentState", "download_ok": true, "convert_ok": true, "extract_ok": true, "source_hash": "af6708f08b389e088929b3d87e2181b159b5e226dc0da4dc08f5a3c092618191", "txt_hash": "a60b892a8de63e1b91208bb7012d68ca8387f06eabf24715cf7c1943aba262a2", "json_hash": "c3b7b222f2d84c38f1373fd22bbc4030854f6e0f23dccbb0435a6835c9826c69"}}}