Cryptography introduction

Cryptography introduction

You can employ encryption for protecting network traffic, secrets, and ordinary data at rest. Consider the following recommendations stated in the NIST standard for choosing appropriate cipher suites and key management techniques:

  • For storing passwords, always use a salt. A salt should be unique for every stored password and randomly generated.

  • For symmetric encryption with passphrases, use a passphrase with appropriate entropy valid for particular cipher key strength and expected brute-force durability. For example, a valid passphrase for 128 bit cipher (CAST-5, AES-128) should contain at least 128 bits of entropy.

  • Whenever possible, use ephemeral keys to maintain forward secrecy. Use Diffie-Hellman for exchanging keys.

  • Whenever possible, use Elliptic Curve Cryptography (ECC) as it requires less computational power than RSA or DSA.

  • To protect sensitive data (encrypting and digitally signing) in a long perspective (2031 year and beyond), use cipher suites and key length with security strength 128 or more (192, 256).

    Note

    The finite-field cryptography (FFC) and integer-factorization cryptography (IFC) algorithms with higher security strength of 192 and 256 bits are not currently included in the NIST standards for interoperability and efficiency reasons.

  • Use the algorithms that have security strength of 128 bits that are secure and efficient at the same time. To protect data until 2030, you can use cipher suites and key length with the security strength of 112 bits.

Encryption requirements

Until 2030 (key strength = 112 bits)

After 2030 (key strength = 128 bits)

Hashing and digital signatures

SHA-224, SHA-512/224, SHA3-224

SHA-256, SHA-512/256, SHA3-256

Symmetric

3TDEA

AES-128

FFC

DSA and Diffie-Hellman(DH) L=2048, N=224

DSA and Diffie-Hellman(DH) L=3072, N=256

IFC

RSA-2048

RSA-3072

Elliptic-curve (ECC)

ECDSA with the key size f=224-255

ECDSA with the key size f=256-383

where L - is the size of the public key, N - is the size of the private key.