FIPS 140-3 Configuration

The YubiKey 5 Cryptographic Module is a single-chip installed within the YubiKey 5. To configure the YubiKey 5 Cryptographic Module for FIPS 140-3 approved use, follow the instructions below.

PIV, OpenPGP, OATH, FIDO, Security Domain (SD) and HSMAuth functional units must be in FIPS Approved mode for operational use.

To initialize the module in Approved mode, use ykman CLI.

Note

  • All CLI examples provided below assume either a new or freshly reset device.
  • All access codes and keys used are the default values.
  • All examples are run from the command line.

Initializing the Approved Mode

The following topics describe how to set the supported protocols into FIPS approved mode.

FIDO Initializing Approved Mode

Requirements

Putting a FIDO2 application in FIPS Approved Mode, requires that you:

  • Set the FIDO2 PIN
  • Set the FIDO1 PIN to at least 8 characters

Set a PIN

ykman fido access change-pin --new-pin <PIN>

Example

ykman fido access change-pin --new-pin 32145699

HSMAuth Initializing Approved Mode

Requirements

Putting a YubiHSM Auth application in FIPS Approved Mode, requires that you:

  • Change the default admin code.

Change the default management key

ykman hsmauth access change-management-key -m <MGMT-KEY> -n <new-MGMT-KEY>

Example

ykman hsmauth access change-management-key -m "00000000000000000000000000000000" -n "59e48ecde5a5aeeb3dd2be861ee198a8"

OATH Initializing Approved Mode

Requirements

Putting an OATH application in FIPS Approved Mode, requires that you:

  • Set the access code
  • Set the access code to at least 14 bytes.

Set an authentication key

ykman oath access change -n <Authentication-Key>

Example

ykman oath access change -n 32145699

OpenPGP Initializing Approved Mode

Requirements

Putting an OpenPGP application in FIPS Approved Mode, requires that you:

  • Change the default user PIN to a minimum 8 character value.
  • Change the default admin PIN to a minimum 8 character value.
  • If the Reset Code is set, ensure it is at least 8 characters.

Change the default user PIN

ykman openpgp access change-pin -P <PIN> -n <new-PIN>

Example

ykman openpgp access change-pin -P 123456 -n 32145699

Change the default admin PIN

ykman openpgp access change-admin-pin -a <admin-PIN> -n <new-admin-PIN>

Example

ykman openpgp access change-admin-pin -a 12345678 -n 32145699

PIV Initializing Approved Mode

Requirements

Putting a PIV application in FIPS Approved Mode, requires that you:

  • Change the default PIN to an 8 character value.
  • Change the default PUK and ensure it is an 8 character value.
  • Change the default Management Key to an AES key.

Change the default PIN

ykman piv access change-pin -P <PIN> -n <new-PIN>

Example

ykman piv access change-pin -P 123456 -n 32145699

Change the default PUK

ykman piv access change-puk -p <PUK> -n <new-PUK>

Example

ykman piv access change-puk -p 12345678 -n 32145699

Change the default management key

ykman piv access change-management-key -m <MGMT> -n <new-MGMT> -a AES192

Example

ykman piv access change-management-key -m 010203040506070801020304050607080102030405060708 -n b0bba5c8f76297f680a4731b200fcb6afb8052c34a42fbf1 -a AES192

Security Domain Initializing Approved Mode

The following applies to Security Domains: SCP03 and SCP11.

Requirements

Putting a Security Domain application in FIPS Approved Mode, requires that you:

  • Change the default key set.

Change the default key set

ykman --scp <KEY1:KEY2:KEY3> sd keys import 0x01 2 <new-KEY1:new-KEY2:new-KEY3>

Example

ykman --scp 404142434445464748494a4b4c4d4e4f:404142434445464748494a4b4c4d4e4f:404142434445464748494a4b4c4d4e4f sd keys import 0x01 2 f4e4d4c4b4a494847464544434241404:f4e4d4c4b4a494847464544434241404:f4e4d4c4b4a494847464544434241404

Zeroisation Procedure

To zeroise the module, use the following commands.

FIDO Zeroisation

ykman fido reset --force

Note

When using the --force flag, the command must be run immediately after inserting the YubiKey.

HSMAuth Zeroisation

ykman hsmauth reset --force

OATH Zeroisation

ykman oath reset --force

OpenPGP Zeroisation

ykman openpgp reset --force

PIV Zeroisation

ykman piv reset --force

Security Domain Zeroisation

ykman sd reset --force