Understanding FIPS Self-Tests
The cryptographic module enforces security rules to ensure that a device running the Juniper Networks Junos operating system (Junos OS) in FIPS mode of operation meets the security requirements of FIPS 140-3 Level 2. To validate the output of cryptographic algorithms approved for FIPS and test the integrity of some system modules, the device performs the following series of known answer test (KAT) self-tests:
-
kernel_kats
—KAT for kernel cryptographic routines -
md_kats
—KAT for libmd and libc -
openssl_kats
—KAT for OpenSSL cryptographic implementation -
openssl-102_kats
—KAT for OpenSSL v1.0.2 cryptographic implementation -
quicksec_7_0_kats
—KAT for Quicksec_7_0Toolkit cryptographic implementation -
srxpfe_kats
—KAT for SRX packet forwarding engine
The KAT self-tests are performed automatically at startup and reboot, when FIPS mode of operation is enabled on the device. Conditional self-tests are also performed automatically to verify digitally signed software packages, generated random numbers, RSA and ECDSA key pairs, and manually entered keys.
If the KATs are completed successfully, the system log (syslog) file is updated to display the tests that were executed.
If the device fails a KAT, the device writes the details to a system log file, enters FIPS error state (panic), and reboot.
The file show /var/log/messages
command displays the system log.
Proceed with normal operation after the reboot is complete. If an error occurs, please contact the Juniper Networks Technical Assistance Center (JTAC).
You must have administrative privileges to configure FIPS self-tests. The device must be running the evaluated version of Junos OS in FIPS mode software.
In this example, the FIPS self-test is executed at 9:00 AM in New York City, USA, every Wednesday.
Performing Power-On Self-Tests on the Device
Each time the cryptographic module is powered on, the module tests that the cryptographic algorithms still operate correctly and that sensitive data has not been damaged. Power-on self-tests are performed on demand by power cycling the module. On powering on or resetting the device, the module performs the following self-tests. All KATs must be completed successfully prior to any other use of cryptography by the module. If one of the KATs fail, the module enters the Critical Failure error state. The module displays the following status output for SRX1500 and SRX4XXX devices while running the power-on self-tests:Initializing Verified Exec: random: randomdev_wait_until_seeded unblock wait uhub1: 2 ports with 2 removable, self powered uhub0: 2 ports with 2 removable, self powered ugen1.2: <vendor 0x8087 product 0x8002> at usbus1 uhub2 on uhub0 uhub2: <vendor 0x8087 product 0x8002, class 9/0, rev 2.00/0.05, addr 2> on usbus1 uhub2: 8 ports with 8 removable, self powered random: Entropy start-up health tests performed on 1024 samples passed. random: unblocking device. FIPS veriexec ECDSA Verify Known Answer Test: Passed Verified os-kernel-prd-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Enforcing Verified Exec: Verified os-libs-12-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Mounting os-libs-12-x86-64-20220607.2c547a1_builder_stable_12_222 Verified os-runtime-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Mounting os-runtime-x86-64-20220607.2c547a1_builder_stable_12_222 ** /dev/gpt/config ** Last Mounted on /.mount/config ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 31 files, 30 used, 406089 free (9 frags, 50760 blocks, 0.0% fragmentation) ***** FILE SYSTEM IS CLEAN ***** ** /dev/gpt/var ** Last Mounted on /.mount/var ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 942 files, 1550816 used, 2103356 free (636 frags, 262840 blocks, 0.0% fragmentation) ***** FILE SYSTEM IS CLEAN ***** @ 1665143338 [2022-10-07 11:48:58 UTC] verify pending ... Verified fips-mode-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified jdocs-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified dsa-x86-64-22.9 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified jinsight-x86-32-22.9 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified jmrt-base-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified jphone-home-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified jsd-x86-32-22.9-jet-1 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-daemons-srx-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-daemons-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-dp-crypto-support-srx-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-l2-rsi-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-libs-compat32-srx-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-libs-compat32-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-libs-srx-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-libs-srxtvp-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-libs-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-modules-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-net-mtx-prd-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-openconfig-x86-32-22.9 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-platform-srx-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-platform-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-pppoe-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-probe-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-redis-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-routing-aggregated-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-routing-compat32-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-routing-controller-external-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-routing-mpls-oam-basic-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-routing-lsys-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-runtime-srx-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-runtime-srxtvp-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-runtime-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified junos-net-prd-x86-64-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified na-telemetry-x86-32-22.9 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified jweb-srxtvp-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified os-kernel-prd-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified os-compat32-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified os-crypto-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified os-boot-junos-ve-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified os-libs-12-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified os-runtime-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified os-libs-compat32-12-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified os-vmguest-x86-64-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified py-base-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified py-extensions-x86-32-20220617 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified os-zoneinfo-20220607 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 @ 1665143338 [2022-10-07 11:48:58 UTC] verify done @ 1665143338 [2022-10-07 11:48:58 UTC] activating Verified jail-runtime signed by PackageProductionECP256_2022 method ECDSA256+SHA256 kern.activate_pending_set: 0 -> 1 NOTE: 'pending' set now 'active' @ 1665143340 [2022-10-07 11:49:00 UTC] mount start @ 1665143340 [2022-10-07 11:49:00 UTC] junos 22.2R1.9 Mounting os-zoneinfo-20220607.2c547a1_builder_stable_12_222 Mounting os-libs-compat32-12-x86-64-20220607.2c547a1_builder_stable_12_222 Mounting os-compat32-x86-64-20220607.2c547a1_builder_stable_12_222 Mounting py-extensions-x86-32-20220617.153850_builder_junos_222_r1 Mounting py-base-x86-32-20220617.153850_builder_junos_222_r1 Mounting os-vmguest-x86-64-20220607.2c547a1_builder_stable_12_222 Mounting os-crypto-x86-64-20220607.2c547a1_builder_stable_12_222 Mounting junos-net-prd-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-libs-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-libs-compat32-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-runtime-x86-32-20220617.153850_builder_junos_222_r1 Starting watchdog daemon ... Mounting na-telemetry-x86-32-22.2R1.9 Mounting junos-libs-compat32-srx-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-runtime-srx-x86-32-20220617.153850_builder_junos_222_r1 Mounting junos-platform-srx-x86-32-20220617.153850_builder_junos_222_r1 Mounting junos-platform-x86-32-20220617.153850_builder_junos_222_r1 Mounting junos-runtime-srxtvp-x86-32-20220617.153850_builder_junos_222_r1 Mounting junos-routing-mpls-oam-basic-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-routing-lsys-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-routing-controller-external-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-routing-compat32-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-routing-aggregated-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-redis-x86-32-20220617.153850_builder_junos_222_r1 Mounting junos-probe-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-pppoe-x86-32-20220617.153850_builder_junos_222_r1 Mounting junos-openconfig-x86-32-22.2R1.9 Mounting junos-modules-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-libs-srxtvp-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-libs-srx-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-l2-rsi-20220617.153850_builder_junos_222_r1 Mounting junos-dp-crypto-support-srx-x86-32-20220617.153850_builder_junos_222_r1 Mounting junos-daemons-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-daemons-srx-x86-64-20220617.153850_builder_junos_222_r1 Mounting jsd-x86-32-22.2R1.9-jet-1 Mounting jphone-home-x86-32-20220617.153850_builder_junos_222_r1 Mounting jmrt-base-x86-64-20220617.153850_builder_junos_222_r1 Mounting jinsight-x86-32-22.2R1.9 Mounting jdocs-x86-32-20220617.153850_builder_junos_222_r1 Mounting fips-mode-x86-64-20220617.153850_builder_junos_222_r1 Mounting dsa-x86-64-22.2R1.9 @ 1665143423 [2022-10-07 11:50:23 UTC] mount done grep: /var/etc/jlaunchd.inc: No such file or directory grep: /var/etc/jlaunchd.inc: No such file or directory grep: /var/etc/jlaunchd.inc: No such file or directory grep: /var/etc/jlaunchd.inc: No such file or directory Removing /etc/malloc.conf Detected data disk Initialize /var subdirs... Mounting shared partition /var/host .. Detected swap drive Enable swap *** Creating PVIDb..\n 1371+0 records in 1371+0 records out 712920 bytes transferred in 0.010728 secs (66451475 bytes/sec) Copied libschema-filter-dd.tlv to /opt/lib/dd/filter\n Executing the Junos host files signature script Verified manifest signed by PackageDevelopmentECP256_2022 method ECDSA256+SHA256 mkdir: /mfs/var/run: File exists *** Mounting Host disks ... Verified fips-optest-x86-32-22.2R1 signed by PackageProductionECP256_2022 method ECDSA256+SHA256 /usr/sbin/pkg: package fips-mode-x86-64-20220617.153850_builder_junos_222_r1 is already installed @ 1665143426 [2022-10-07 11:50:26 UTC] vmguest: setup ... @ 1665143426 [2022-10-07 11:50:26 UTC] vmguest: mounted /dev/vtbd2 @ 1665143426 [2022-10-07 11:50:26 UTC] vmguest: no config found: total 0 usage: umount [-fNnv] special ... | node ... | fsid ... umount -a | -A [-F fstab] [-fnv] [-h host] [-t type] Cannot find: jsim-pfe usage: /usr/sbin/pkg add <pkg> ... where <pkg> is a compressed tar file /usr/sbin/pkg: package fips-mode-x86-64-20220617.153850_builder_junos_222_r1 is already installed Checking platform support for: srxtvp Attempting to add missing junos-modules-srxtvp Verified junos-modules-srxtvp signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified contents/contents.izo Verified contents/contents.symlinks Verified package.xml Adding junos-modules-srxtvp-x86-64-20220617.153850_builder_junos_222_r1 ... The package junos-modules-srxtvp-x86-64-20220617.153850_builder_junos_222_r1 is now active Attempting to add missing junos-appsecure-tvp Verified junos-appsecure-tvp signed by PackageProductionECP256_2022 method ECDSA256+SHA256 Verified contents/contents.izo Verified contents/contents.symlinks Verified package.xml Adding junos-appsecure-tvp-x86-32-20220617.153850_builder_junos_222_r1 ... The package junos-appsecure-tvp-x86-32-20220617.153850_builder_junos_222_r1 is now active Mounting junos-modules-srxtvp-x86-64-20220617.153850_builder_junos_222_r1 Mounting junos-appsecure-tvp-x86-32-20220617.153850_builder_junos_222_r1 @ 1665143430 [2022-10-07 11:50:30 UTC] mountlate start Mounting jweb-srxtvp-x86-32-20220617.153850_builder_junos_222_r1 Setup /packages/mnt/jweb-srxtvp-1860cb5b/jail/var/cache dir only for srxtvp mount_nullfs: /web-api: No such file or directory @ 1665143435 [2022-10-07 11:50:35 UTC] mountlate done kern.module_path: /packages/sets/pending/boot/os-vmguest/;/packages/sets/pending/boot/netstack/;/packages/sets/pending/boot/os-crypto/;/packages/sets/pending/boot/os-kernel/;/packages/sets/pending/boot/junos-net-platform/;/packages/sets/pending/boot/junos-modules/ -> /modules;/modules/ifpfe_drv;/modules/ifpfe_media;/modules/peertype;/modules/platform Loading JUNOS chassis module chassis_init_hw_chassis_startup_time: chassis startup time 0.000000, shared: 0x7ffffffff300, base: 0x7ffffffff000, offset: 0x300 IPsec: Initialized Security Association Processing. Loading the SLB driver Loading the Protobuf-C module hgcommdev0: <HGCOMMDEV For Host VM communication> mem 0xfebf3000-0xfebf3fff at device 22.0 on pci0 hgcommdev0: hgcommdev: registers at 0xfffff800febf3000 pci-hgcomdev module loaded bcmsdk_5_9_x kld Loading BCMSDK module..... Junosprocfs mounted on /junosproc. VirtIO PCI 9P Transport adapter is not present VirtIO PCI 9P Transport adapter is not present @ 1665143437 [2022-10-07 11:50:37 UTC] mgd start Creating initial configuration: ... mgd: Running FIPS Self-tests mgd: Testing kernel KATS: mgd: NIST 800-90 HMAC DRBG Known Answer Test: Passed mgd: DES3-CBC Known Answer Test: Passed mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: SHA-2-384 Known Answer Test: Passed mgd: SHA-2-512 Known Answer Test: Passed mgd: AES128-CMAC Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: Testing MACSec KATS: mgd: AES128-CMAC Known Answer Test: Passed mgd: AES256-CMAC Known Answer Test: Passed mgd: AES-ECB Known Answer Test: Passed mgd: AES-KEYWRAP Known Answer Test: Passed mgd: KBKDF Known Answer Test: Passed mgd: Testing libmd KATS: mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: SHA-2-512 Known Answer Test: Passed mgd: Testing OpenSSL v1.0.2 KATS: mgd: NIST 800-90 HMAC DRBG Known Answer Test: Passed mgd: FIPS ECDSA Known Answer Test: Passed mgd: FIPS ECDH Known Answer Test: Passed mgd: FIPS RSA Known Answer Test: Passed mgd: DES3-CBC Known Answer Test: Passed mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-224 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: HMAC-SHA2-384 Known Answer Test: Passed mgd: HMAC-SHA2-512 Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: AES-GCM Known Answer Test: Passed mgd: ECDSA-SIGN Known Answer Test: Passed mgd: KDF-IKE-V1 Known Answer Test: Passed mgd: KDF-SSH-SHA256 Known Answer Test: Passed mgd: KAS-ECC-EPHEM-UNIFIED-NOKC Known Answer Test: Passed mgd: KAS-FFC-EPHEM-NOKC Known Answer Test: Passed mgd: Testing OpenSSL KATS: mgd: NIST 800-90 HMAC DRBG Known Answer Test: Passed mgd: FIPS ECDSA Known Answer Test: Passed mgd: FIPS ECDH Known Answer Test: Passed mgd: FIPS RSA Known Answer Test: Passed mgd: DES3-CBC Known Answer Test: Passed mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-224 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: HMAC-SHA2-384 Known Answer Test: Passed mgd: HMAC-SHA2-512 Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: AES-GCM Known Answer Test: Passed mgd: ECDSA-SIGN Known Answer Test: Passed mgd: KDF-IKE-V1 Known Answer Test: Passed mgd: KDF-SSH-SHA256 Known Answer Test: Passed mgd: KAS-ECC-EPHEM-UNIFIED-NOKC Known Answer Test: Passed mgd: KAS-FFC-EPHEM-NOKC Known Answer Test: Passed mgd: Testing QuickSec 7.0 KATS: mgd: NIST 800-90 HMAC DRBG Known Answer Test: Passed mgd: DES3-CBC Known Answer Test: Passed mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-224 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: HMAC-SHA2-384 Known Answer Test: Passed mgd: HMAC-SHA2-512 Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: AES-GCM Known Answer Test: Passed mgd: SSH-RSA-ENC Known Answer Test: Passed mgd: SSH-RSA-SIGN Known Answer Test: Passed mgd: SSH-ECDSA-SIGN Known Answer Test: Passed mgd: KDF-IKE-V1 Known Answer Test: Passed mgd: KDF-IKE-V2 Known Answer Test: Passed mgd: Testing QuickSec KATS: mgd: NIST 800-90 HMAC DRBG Known Answer Test: Passed mgd: DES3-CBC Known Answer Test: Passed mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-224 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: HMAC-SHA2-384 Known Answer Test: Passed mgd: HMAC-SHA2-512 Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: AES-GCM Known Answer Test: Passed mgd: SSH-RSA-ENC Known Answer Test: Passed mgd: SSH-RSA-SIGN Known Answer Test: Passed mgd: KDF-IKE-V1 Known Answer Test: Passed mgd: KDF-IKE-V2 Known Answer Test: Passed mgd: Testing SSH IPsec KATS: mgd: NIST 800-90 HMAC DRBG Known Answer Test: Passed mgd: DES3-CBC Known Answer Test: Passed mgd: HMAC-SHA1 Known Answer Test: Passed mgd: HMAC-SHA2-256 Known Answer Test: Passed mgd: AES-CBC Known Answer Test: Passed mgd: SSH-RSA-ENC Known Answer Test: Passed mgd: SSH-RSA-SIGN Known Answer Test: Passed mgd: KDF-IKE-V1 Known Answer Test: Passed mgd: Testing file integrity: mgd: File integrity Known Answer Test: Passed mgd: Testing crypto integrity: mgd: Crypto integrity Known Answer Test: Passed mgd: Expect an exec Authentication error... MAC/veriexec: no fingerprint (file=/sbin/kats/cannot-exec fsid=209 fileid=49356 gen=1 uid=0 pid=24703 ppid=24670 gppid=24666)mgd: /sbin/kats/run-tests: /sbin/kats/cannot-exec: Authentication error mgd: FIPS Self-tests Passed