.. yk5-fips-piv.rst .. _yk5-fips-piv-label: ==================================== PIV Configuration with FIPS ==================================== The YubiKey 5 FIPS Series provides a PIV-compatible smart card application. PIV or FIPS 201, is a US government standard that enables RSA or ECC sign and encrypt operations using a private key stored on a smart card through common interfaces like PKCS#11. On Windows, the smart card functionality can be extended with the YubiKey Minidriver. See `YubiKey Minidriver User Guide `_. The YubiKey Minidriver is not available for Android, Linux, macOS or iOS. Keys in the YubiKey 5 FIPS Series support extended APDUs, extended `Answer To Reset (ATR)`, and `Answer To Select` (ATS). Using the PIV APDUs on iOS requires the `Yubico iOS SDK `_. For YubiKey 5 FIPS Series, some exceptions apply: * Do not use non-NIST-approved curves * Do not use the following keys: * RSA 1,024-bit * 3,072-bit keys. This applies to Attestation as well. * PIN policy = ``none`` cannot be used. Select either ``once`` or ``always``. Default Values =============== * PIN: 123456 * PUK: 12345678 * Management Key (3DES): ``010203040506070801020304050607080102030405060708`` Supported Algorithms ======================= The YubiKey 5 FIPS Series supports the following algorithms on the PIV smart card application. * RSA 1024 * RSA 2048 * ECC P-256 * ECC P-384 Policies ========== PIN Policy ------------ To specify how often the PIN needs to be entered for access to the credential in a given slot, set a PIN policy for that slot. This policy must be set upon key generation or import; it cannot be changed later. Touch Policy --------------- In addition to requiring the PIN, the YubiKey can require a physical touch on the metal contact. Similar to the PIN policy, the touch policy must be set upon key generation or import. Slot Information ================== The keys and certificates for the smart card application are stored in slots. The PIN policies are the defaults, before they are overridden with a custom PIN policy. **These slots are separate from the programmable slots in the OTP application.** Slot 9a: PIV Authentication ---------------------------- This certificate and its associated private key is used to authenticate the card and the cardholder. This slot is used for system login, etc.. To perform any private key operations, the end user PIN is required. Once the correct PIN has been provided, multiple private key operations may be performed without additional cardholder consent. Slot 9c: Digital Signature ---------------------------- This certificate and its associated private key is used for digital signatures on documents, email, files, and executable signings. The end user PIN is required perform any private key operations. The PIN must be submitted immediately before each sign operation to ensure cardholder participation for every digital signature generated. Slot 9d: Key Management ------------------------ This certificate and its associated private key is used for encryption to assure confidentiality. This slot is used for encrypting emails or files. The end user PIN is required to perform any private key operations. Once the correct PIN has been provided, multiple private key operations may be performed without additional cardholder consent. Slot 9e: Card Authentication ------------------------------ This certificate and its associated private key is used to support additional physical access applications, such as providing physical access to buildings through PIV-enabled door locks. The end user PIN is NOT required to perform private key operations for this slot. Slots 82-95: Retired Key Management ------------------------------------ These slots are meant for previously used key management keys for decrypting earlier encrypted documents or emails. Slot f9: Attestation ---------------------- This slot is used only for attestation of other keys generated on device with instruction F9. This slot is not cleared on reset, but can be overwritten. Attestation ============= Attestation enables you to verify that a key on the smart card application was generated on the YubiKey rather than being imported. If the key was generated on the YubiKey, an X.509 certificate was created for the key. Included in the certificate are the following extensions that provide information about the YubiKey. Firmware ---------- ``1.3.6.1.4.1.41482.3.3``: Firmware version, encoded as three bytes. For example, 050100 indicates firmware version 5.1.0. Serial Number -------------- * ``1.3.6.1.4.1.41482.3.7``: Serial number of the YubiKey, encoded as an integer. * ``1.3.6.1.4.1.41482.3.8``: Two bytes, the first encoding the PIN policy and the second encoding the touch policy. PIN Policy ~~~~~~~~~~~ * 01 - never require PIN * 02 - require PIN once per session * 03 - always require PIN. Touch Policy ~~~~~~~~~~~~~~~ * 01 - never require touch * 02 - always require touch * 03 - cache touch for 15 seconds. Form Factor ~~~~~~~~~~~~~ ``1.3.6.1.4.1.41482.3.9``: YubiKey's form factor, encoded as a one-byte octet-string. * USB-A Keychain: 0x01 * USB-A Nano: 0x02 * USB-C Keychain: 0x03 * USB-C Nano: 0x04 * USB-C and Lightning®: 0x05 * Undefined: 0x00 PIV/Smart Card Deployment ========================== The YubiKey 5 FIPS Series PIV application implements a PIV-compatible standard as defined in the `NIST SP 800-73-4 `_ publication. Access to functions on the YubiKey 5 FIPS Series PIV application is restricted by the management key, the PIN, and the PUK. The management key is used for: * Importing or generating asymmetric key pairs * Importing x.509 certificates and associated information * Setting the retry counters for PIN (also requires PIN) and PUK The PIN is used to: * Perform cryptographic operations using private keys * Change the PIN The PUK is used to: * Unblock and set a new PIN for a blocked PIN * Change the PUK The YubiKey 5 FIPS Series PIV application has the default values: • Management Key ``(010203040506070801020304050607080102030405060708)`` • PIN ``(123456)`` • PUK ``(12345678)`` PIV FIPS-approved Mode with FIPS 140-2 Level 2 =============================================== To place the YubiKey 5 FIPS Series PIV application in the FIPS-approved mode of operation, change the default management key, PIN, and PUK. YubiKey 5 FIPS Series devices should be deployed using a credential management tool like Microsoft ADCS and the YubiKey Minidriver or a third party tool. The credential management tool replaces the default values by automatically setting a random value for the management key and PUK and allows the end user to define the PIN. See `YubiKey Minidriver User Guide `_. If the YubiKey 5 FIPS Series PIV application is not being managed with a credential management tool, the management key, PIN, and PUK must be changed by the crypto officer. To do so, use ykman CLI. .. include:: includes/ykman.rst To **change the management key**, use the command: .. code-block:: bash ykman piv access change-management-key -m010203040506070801020304050607080102030405060708 / -a -n where - ```` is the new management key ```` is the key type [Triple-DES, AES-128, AES-192 or AES-256]. To **change the PIN**, use the command: .. code-block:: bash ykman piv access change-pin -P123456 -n where ```` is the new PIN. To **change the PUK**, use the command: .. code-block:: bash ykman piv access change-puk -p12345678 -n where ```` is the new PUK. PIV Features as of YubiKey 5 FIPS Series ========================================== ATR and ATS ------------- The ATR has been changed from “Yubikey 4” to “YubiKey” and adds support for ATS. PIV Attestation Root CA ------------------------ There are no changes in PIV attestation between the YubiKey 5 Series and the YubiKey 5 FIPS Series. You can find the root certification authority on the `PIV attestation `_ page.