target = "https://tools.ietf.org/rfc/rfc8446#appendix-D.5"

# D.5.  Security Restrictions Related to Backward Compatibility
#
# Implementations negotiating the use of older versions of TLS SHOULD
# prefer forward secret and AEAD cipher suites, when available.
# 
# The security of RC4 cipher suites is considered insufficient for the
# reasons cited in [RFC7465].  Implementations MUST NOT offer or
# negotiate RC4 cipher suites for any version of TLS for any reason.
# 
# Old versions of TLS permitted the use of very low strength ciphers.
# Ciphers with a strength less than 112 bits MUST NOT be offered or
# negotiated for any version of TLS for any reason.
# 
# The security of SSL 3.0 [RFC6101] is considered insufficient for the
# reasons enumerated in [RFC7568], and it MUST NOT be negotiated for
# any reason.
# 
# The security of SSL 2.0 [SSL2] is considered insufficient for the
# reasons enumerated in [RFC6176], and it MUST NOT be negotiated for
# any reason.
# 
# Implementations MUST NOT send an SSL version 2.0 compatible
# CLIENT-HELLO.  Implementations MUST NOT negotiate TLS 1.3 or later
# using an SSL version 2.0 compatible CLIENT-HELLO.  Implementations
# are NOT RECOMMENDED to accept an SSL version 2.0 compatible
# CLIENT-HELLO in order to negotiate older versions of TLS.
# 
# Implementations MUST NOT send a ClientHello.legacy_version or
# ServerHello.legacy_version set to 0x0300 or less.  Any endpoint
# receiving a Hello message with ClientHello.legacy_version or
# ServerHello.legacy_version set to 0x0300 MUST abort the handshake
# with a "protocol_version" alert.
# 
# Implementations MUST NOT send any records with a version less than
# 0x0300.  Implementations SHOULD NOT accept any records with a version
# less than 0x0300 (but may inadvertently do so if the record version
# number is ignored completely).
# 
# Implementations MUST NOT use the Truncated HMAC extension, defined in
# Section 7 of [RFC6066], as it is not applicable to AEAD algorithms
# and has been shown to be insecure in some scenarios.

[[spec]]
level = "SHOULD"
quote = '''
Implementations negotiating the use of older versions of TLS SHOULD
prefer forward secret and AEAD cipher suites, when available.
'''

[[spec]]
level = "MUST"
quote = '''
Implementations MUST NOT offer or
negotiate RC4 cipher suites for any version of TLS for any reason.
'''

[[spec]]
level = "MUST"
quote = '''
Ciphers with a strength less than 112 bits MUST NOT be offered or
negotiated for any version of TLS for any reason.
'''

[[spec]]
level = "MUST"
quote = '''
The security of SSL 3.0 [RFC6101] is considered insufficient for the
reasons enumerated in [RFC7568], and it MUST NOT be negotiated for
any reason.
'''

[[spec]]
level = "MUST"
quote = '''
The security of SSL 2.0 [SSL2] is considered insufficient for the
reasons enumerated in [RFC6176], and it MUST NOT be negotiated for
any reason.
'''

[[spec]]
level = "MUST"
quote = '''
Implementations MUST NOT send an SSL version 2.0 compatible
CLIENT-HELLO.
'''

[[spec]]
level = "MUST"
quote = '''
Implementations MUST NOT negotiate TLS 1.3 or later
using an SSL version 2.0 compatible CLIENT-HELLO.
'''

[[spec]]
level = "SHOULD"
quote = '''
Implementations
are NOT RECOMMENDED to accept an SSL version 2.0 compatible
CLIENT-HELLO in order to negotiate older versions of TLS.
'''

[[spec]]
level = "MUST"
quote = '''
Implementations MUST NOT send a ClientHello.legacy_version or
ServerHello.legacy_version set to 0x0300 or less.
'''

[[spec]]
level = "MUST"
quote = '''
Any endpoint
receiving a Hello message with ClientHello.legacy_version or
ServerHello.legacy_version set to 0x0300 MUST abort the handshake
with a "protocol_version" alert.
'''

[[spec]]
level = "MUST"
quote = '''
Implementations MUST NOT send any records with a version less than
0x0300.
'''

[[spec]]
level = "SHOULD"
quote = '''
Implementations SHOULD NOT accept any records with a version
less than 0x0300 (but may inadvertently do so if the record version
number is ignored completely).
'''

[[spec]]
level = "MUST"
quote = '''
Implementations MUST NOT use the Truncated HMAC extension, defined in
Section 7 of [RFC6066], as it is not applicable to AEAD algorithms
and has been shown to be insecure in some scenarios.
'''

