6 Cryptographic Algorithm Specifications
The following describes the controlling documents for the cryptographic algorithms implemented within the TA101 device.
- The RNG function is comprised of an NRBG and a DRBG component combined according to the rules of NIST SP800-90C specified in the following documents:
- Cryptographic digests using SHA-256,
SHA-384, SHA-512:
- NIST FIPS Publication 180-4 – Secure Hash Standard (SHS)
- HMAC calculations are performed with
key sizes varying from 16 to 128 bytes. The underlying algorithm is SHA-256, SHA-384
or SHA-512:
- NIST FIPS Publication 198-1 – The Keyed-Hash Message Authentication Code (HMAC)
- Authorization session establishment
uses the HMAC-SHA256 – The counter key derivation function (KDF HMAC-Counter)
specified in the following documents:
- KDF HMAC-Counter according to
specification:
NIST Special Publication 800-108 – Recommendation for Key Derivation Using Pseudorandom Functions
- Support for SHA-256 one-step
KDF composed of a single SHA-256 iteration used in other protocols, as
specified in the following document:
NIST Special Publication 800-56Cr2 – Recommendation for Key-Derivation Methods in Key Establishment Schemes
- KDF HMAC-Counter according to
specification:
- Support for the TLS 1.2 KDF (PRF), as
specified in:
- IETF RFC5246 – The Transport Layer Security (TLS) Protocol Version 1.2
- NIST Special Publication 800-135 – Recommendation for Existing Application-Specific Key Derivation Functions
- Support for the TLS 1.3 KDF (HKDF),
as specified in:
- IETF RFC5869 – HMAC-Based Extract-and-Expand Key Derivation Function (HKDF)
- IETF RFC8446 – The TLS Protocol Version 1.3
- Symmetric encryption/decryption
AES-128 and AES-256 implemented according to:
- ECB: NIST FIPS Publication 197 – Advanced Encryption Standard (AES)
- The AES-CMAC algorithm is implemented
according to:
- NIST Special Publication 800-38B – Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication
- AES encryption/decryption for
authorization sessions uses the GCM AEAD mode according to:
- NIST Special Publication 800-38D – Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC
- RSA key generation and signatures are
generated and/or verified using the RSASSA-PKCS1-V1_5 scheme according to the
specified PKCS#1 procedures. The supported key sizes are 2048, 3072 and 4096. The
exponent is fixed at
0x10001
, except for the 3072-bit verify, which optionally supports e = 3 (support of the HDCP protocol).- IETF RFC8017 – PKCS #1 RSA Cryptography Specifications Version 2.2
- NIST FIPS Publication 186-5 – Digital Signature Standard (DSS)
- RSA key generation and signatures are
generated and/or verified using the RSASSA-PSS schemes according to the specified
PKCS#1 procedures. The supported key sizes are 2048, 3072 and 4096.
- IETF RFC8017 – PKCS #1 RSA Cryptography Specifications Version 2.2
- NIST FIPS Publication 186-5 – DSS
- RSA (RSAES-OAEP) encryption and
decryption with an exponent of
0x10001
are supported using the specified RSAES_OAEP PKCS#1 V2.2 scheme. The supported key sizes are 1024, 2048, 3072 and 4096.- IETF RFC8017 – PKCS #1 RSA Cryptography Specifications Version 2.2
- Elliptic Curve ECDSA key generation
and signatures using the NIST curves P-224, P-256, P-384 and P-521 are
generated/verified according to the following specifications. Keys for all curves can
be generated using the internal RNG.
- ANSI X9.62-2005, Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA): www.ansi.org/
- NIST FIPS Publication 186-5 – DSS
- ECDH key agreement. All ECDH public
and private keys are treated as ephemeral keys with the corresponding key validation.
Ephemeral Unified C (2e, 0s, ECC CDH) scheme (56Ar3 6.1.2.2).
- P-224, P-256, P-384 and P-521
curves are supported according to this specification:
NIST Special Publication 800-56Ar3 – Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography
- P-224, P-256, P-384 and P-521
curves are supported according to this specification:
- Edwards Curve Support:
Ed25519/EdDSA key generation and signatures (128-bit security strength) are generated/verified according to the following document.
- Ed25519/EdDSA is supported
according to this specification:
IETF RFC8032 – Edwards-Curve Digital Signature Algorithm (EdDSA)
ECDH X25519 key generation and key agreement (128-bit security strength) are supported according to the following document.
- X25519/ECDH is supported
according to this specification:
IETF RFC7748 Elliptic Curves for Security, Section 5 and 6
- Ed25519/EdDSA is supported
according to this specification:
- Elliptic curve computations for the
256-bit Brainpool (ECC-256_R1) curve are supported according to the following
document. Sign, verify, key generation and ECDH key agreement are all supported. The
device does not support Brainpool curves for X.509 certificate parsing.
- IETF RFC7027 Elliptic Curve Cryptography (ECC) Brainpool Curves for Transport Layer Security (TLS)
- ECDSA sign, verify and key generation
operations are supported for the secp256k1 (Bitcoin) curve, often used in block chain
applications. ECDH is not supported for this curve. It is specified in
document:
- SECG SEC 2: Recommended Elliptic Curve Domain Parameters v2.0
- The TA101 device can execute the Burmester-Desmedt protocol variation of ECDH (ECBD) described at Eurocrypt ’94. Contact Microchip for more technical details. A version of that paper is available here:
- The TA101 device is designed to support the HDCP cryptographic protocols, as specified in:
- Qi Standard Point Expansion based
upon the compression protocols specified in document:
- https://tools.ietf.org/id/draft-jivsov-ecc-compact-00.xml – Compact representation of an elliptic curve point
-
Contact Microchip for CAVP certification status of the appropriate cryptographic algorithms.