NIST SP 800-52 REV. 2 (2ND DRAFT) GUIDELINES FOR TLS IMPLEMENTATIONS
altered to treat a padding error as a bad message authentication code, rather than a decryption 286
failure. In addition, the TLS 1.1 RFC acknowledges attacks on CBC mode that rely on the time 287
to compute the message authentication code (MAC). The TLS 1.1 specification states that to 288
defend against such attacks, an implementation must process records in the same manner 289
regardless of whether padding errors exist. Further implementation considerations for CBC 290
modes (which were not included in RFC 4346 [23]) are discussed in Section 3.3.2. 291
TLS 1.2, specified in RFC 5246 [24], made several cryptographic enhancements, particularly in 292
the area of hash functions, with the ability to use or specify the SHA-2 family algorithms for 293
hash, MAC, and Pseudorandom Function (PRF) computations. TLS 1.2 also adds authenticated 294
encryption with associated data (AEAD) cipher suites. 295
TLS 1.3, specified in RFC 8446 [50], represents a significant change to TLS that aims to address 296
threats that have arisen over the years. Among the changes are a new handshake protocol, a new 297
key derivation process that uses the HMAC-based Extract-and-Expand Key Derivation Function 298
(HKDF) [36], and the removal of cipher suites that use static RSA or DH key exchanges, the 299
CBC mode of operation, or SHA-1. Many extensions defined for use with TLS 1.2 and below 300
cannot be used with TLS 1.3. 301
1.2 Scope 302
Security is not a single property possessed by a single protocol. Rather, security includes a 303
complex set of related properties that together provide the required information assurance 304
characteristics and information protection services. Security requirements are usually derived 305
from a risk assessment of the threats or attacks that an adversary is likely to mount against a 306
system. The adversary is likely to take advantage of implementation vulnerabilities found in 307
many system components, including computer operating systems, application software systems, 308
and the computer networks that interconnect them. Thus, in order to secure a system against a 309
myriad of threats, security must be judiciously placed in the various systems and network layers. 310
These guidelines focus only on network security, and they focus directly on the small portion of 311
the network communications stack that is referred to as the transport layer. Several other NIST 312
publications address security requirements in the other parts of the system and network layers. 313
Adherence to these guidelines only protects the data in transit. Other applicable NIST standards 314
and guidelines should be used to ensure protection of systems and stored data. 315
These guidelines focus on the common use cases where clients and servers must interoperate 316
with a wide variety of implementations, and authentication is performed using public-key 317
certificates. To promote interoperability, implementations often support a wide array of 318
cryptographic options. However, there are much more constrained TLS implementations where 319
security is needed but broad interoperability is not required, and the cost of implementing unused 320
features may be prohibitive. For example, minimal servers are often implemented in embedded 321
controllers and network infrastructure devices such as routers, and then used with browsers to 322
remotely configure and manage the devices. There are also cases where both the client and server 323
for an application’s TLS connection are under the control of the same entity, and therefore 324
allowing a variety of options for interoperability is not necessary. The use of an appropriate 325
subset of the capabilities specified in these guidelines may be acceptable in such cases. 326