4.1.1 Client Application Steps
All changes in this version
Title changed
Before · SP 800-73-4
Client Application Steps
After · SP 800-73-5
Client Application Steps
Control changed
Before · SP 800-73-4
Step # Description Comment H1 Set CB H to 0x00 The client application’s control byte is set to 0x00 to indicate the client application does not support persistent binding. H2 Generate an ephemeral key pair (d eH ; Q eH ) Generate an ephemeral ECC key pair for the client application using an approved method [FIPS186, Appendix B] and perform partial public-key validation [SP800-56A , Section 5.6.2.3.2], either as part of the key generation process or as a separate process. If the 0xAC tag of the application property template (APT) includes '27', then generate an ephemeral key pair over Curve P-256. If the 0xAC tag of the APT includes '2E', then generate an ephemeral key pair over Curve P-384. H3 Send CB H || ID sH || Q eH Wait for response from PIV Card Application: CB ICC || N ICC || AuthCryptogram ICC || C ICC H4 Check that CB ICC is 0x00 Verify that the card executed the protocol in accordance with the parameters specified in Step H1. Return an authentication error if check fails. Step # Description Comment H5 Verify C ICC signature and subject public key Verify signature on C ICC and, using standards-compliant PKI path validation, validate the content signing certificate needed to verify the signature on C ICC . 14 , 15 Verify that the domain parameters of the subject public key in C ICC are the same as the domain parameters for Q eH by checking the Algorithm OID in the CardHolderPublicKey Data Object (see Table 15 ). Return an authentication error if either verification fails. H6 ID sICC = T 8 (SHA256(C ICC )) ID sICC , the left-most 8 bytes of the SHA- 256 hash of C ICC , is used as an input for session key derivation. H7 Extract Q sICC from C ICC H8 Z = ECC_CDH (d eH , Q sICC ) Compute the shared secret, Z, using the ECC CDH primitive [SP800-56A , Section 5.7.1.2]. H9 Zeroize d eH Destroy the ephemeral private key generated in Step H2. H10 SK CFRM || SK MAC || SK ENC || SK RMAC = KDF(Z, len , OtherInfo ) Compute the key confirmation key and the session keys. See Section 4.1.6 . H11 Zeroize Z Destroy the shared secret generated in Step H8. H12 Check that AuthCryptogram ICC equals CMAC(SK CFRM , "KC_1_V" || ID sICC || ID sH || Q eH ) Perform key confirmation by verifying the authentication cryptogram as described in Section 4.1.7 . Return an authentication error if verification fails. H13 Zeroize SK CFRM Destroy the key confirmation key derived in Step H10.
After · SP 800-73-5
Step # Description Comment H1 Set CB H to 0x00 The client application’s control byte is set to 0x00 to indicate the client application does not support persistent binding. H2 Generate an ephemeral key pair (d eH ; Q eH ) Generate an ephemeral ECC key pair for the client application using an approved method [FIPS186, Appendix B] and perform partial public-key validation [SP800-56A , Section 5.6.2.3.2], either as part of the key generation process or as a separate process. If the 0xAC tag of the application property template (APT) includes '27', then generate an ephemeral key pair over Curve P-256. If the 0xAC tag of the APT includes '2E', then generate an ephemeral key pair over Curve P-384. H3 Send CB H || ID sH || Q eH Wait for response from PIV Card Application: CB ICC || N ICC || AuthCryptogram ICC || C ICC H4 Check that CB ICC is 0x00 Verify that the card executed the protocol in accordance with the parameters specified in Step H1. Return an authentication error if check fails. Step # Description Comment H5 Verify C ICC signature and subject public key Verify signature on C ICC and, using standards-compliant PKI path validation, validate the content signing certificate needed to verify the signature on C ICC . 14 , 15 Verify that the domain parameters of the subject public key in C ICC are the same as the domain parameters for Q eH by checking the Algorithm OID in the CardHolderPublicKey Data Object (see Table 15 ). Return an authentication error if either verification fails. H6 ID sICC = T 8 (SHA256(C ICC )) ID sICC , the left-most 8 bytes of the SHA- 256 hash of C ICC , is used as an input for session key derivation. H7 Extract Q sICC from C ICC H8 Z = ECC_CDH (d eH , Q sICC ) Compute the shared secret, Z, using the ECC CDH primitive [SP800-56A , Section 5.7.1.2]. H9 Zeroize d eH Destroy the ephemeral private key generated in Step H2. H10 SK CFRM || SK MAC || SK ENC || SK RMAC = KDF(Z, len , OtherInfo ) Compute the key confirmation key and the session keys. See Section 4.1.6 . H11 Zeroize Z Destroy the shared secret generated in Step H8. H12 Check that AuthCryptogram ICC equals CMAC(SK CFRM , "KC_1_V" || ID sICC || ID sH || Q eH ) Perform key confirmation by verifying the authentication cryptogram as described in Section 4.1.7 . Return an authentication error if verification fails. H13 Zeroize SK CFRM Destroy the key confirmation key derived in Step H10.