ietf-corpus

rfc-2595

Using TLS with IMAP, POP3 and ACAP

C. Newman
date1999-06 streamLegacy statusPROPOSED STANDARD pages15 canonicalhttps://www.rfc-editor.org/rfc/rfc2595 doi10.17487/RFC2595 errataview
Recognizing that such sites will desire simple password authentication in combination with TLS encryption, this specification defines the PLAIN SASL mechanism for use with protocols which lack a simple password authentication command such as ACAP and SMTP. [STANDARDS-TRACK]

updated by

Extracted elements (26)

design-rationale §7

Separate 'imaps' and 'pop3s' ports (use of SSL on dedicated ports) are discouraged in favor of STARTTLS/STLS. Problems with separate ports include: separate URL schemes that intrude on the UI, a false binary 'secure vs. not secure' model that misleads users and firewall admins, and limited port number space.

tls, security

design-rationale §1

The PLAIN SASL mechanism is defined because many sites have high investment in clear-text password authentication infrastructure, and a TLS privacy layer not tightly bound to authentication can protect against network eavesdropping without requiring new authentication infrastructure or forcing password changes.

tls, security

interoperability-note §3.2

Servers advertising LOGINDISABLED will fail to interoperate with many existing compliant IMAP clients and will be unable to prevent those clients from disclosing the user's password. LOGINDISABLED has no impact against active attacks as a man-in-the-middle attacker can remove this capability.

tls, security

normative-requirement §5.1 MUST

After the TLS layer is established in ACAP, the server MUST re-issue an untagged ACAP greeting and the client MUST discard cached capability information and replace it with the information from the new ACAP greeting.

tls, security

normative-requirement §3.2 MUST

An IMAP server which implements STARTTLS MUST implement support for the LOGINDISABLED capability on unencrypted connections. An IMAP client compliant with this specification MUST NOT issue the LOGIN command if LOGINDISABLED is present.

tls, security

normative-requirement §2.5 MUST

Both client and server MUST check the result of the STARTTLS command and subsequent TLS negotiation to verify whether acceptable authentication or privacy was achieved. Ignoring this step completely invalidates using TLS for security.

tls, security

normative-requirement §2.2 SHOULD

Both clients and servers SHOULD have a privacy operational mode which refuses authentication unless successful activation of an encryption layer occurs prior to or at the time of authentication, and which will terminate the connection if that encryption layer is deactivated.

tls, security

normative-requirement §2.3 MUST

Clients and servers MUST be configurable to refuse all clear-text login commands or mechanisms unless an encryption layer of adequate strength is active. Servers which allow unencrypted clear-text logins SHOULD be configurable to refuse them on both a server-wide and per-user basis.

tls, security

normative-requirement §2.4 MUST

During TLS negotiation, the client MUST check its understanding of the server hostname against the server's identity as presented in the server Certificate message to prevent man-in-the-middle attacks. The client MUST use the hostname it used to open the connection and MUST NOT use any form derived from an insecure remote source.

tls, security, pkix

normative-requirement §2.4 SHOULD

If a subjectAltName extension of type dNSName is present in the certificate, it SHOULD be used as the source of the server's identity. A '*' wildcard MAY be used as the left-most name component; matching is case-insensitive.

tls, pkix, security

normative-requirement §4 MUST

If the POP3 STLS command is implemented, the POP3 extension mechanism MUST also be implemented to avoid the need for client probing of multiple commands. The capability name 'STLS' indicates this command is present and permitted in the current state.

tls

normative-requirement §2.1 REQUIRED

Implementation of the TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA cipher suite is REQUIRED to ensure any two compliant implementations can be configured to interoperate. All other cipher suites are OPTIONAL.

tls, security

normative-requirement §3.1 MUST NOT

Once a client issues a STARTTLS command (IMAP), it MUST NOT issue further commands until a server response is seen and the TLS negotiation is complete. The STARTTLS command is only valid in non-authenticated state.

tls, http

normative-requirement §4 MUST NOT

Once a POP3 client issues a STLS command, it MUST NOT issue further commands until a server response is seen and the TLS negotiation is complete. The STLS command is only permitted in AUTHORIZATION state.

tls, security

normative-requirement §3.1 MUST

Once TLS has been started in IMAP, the client MUST discard cached information about server capabilities and SHOULD re-issue the CAPABILITY command, to protect against man-in-the-middle attacks which alter the capabilities list prior to STARTTLS.

tls, security

normative-requirement §6 MUST NOT

The PLAIN SASL mechanism MUST NOT be advertised or used unless a strong encryption layer (such as that provided by TLS) is active or backwards compatibility dictates otherwise.

tls, security

protocol-element §3.2

The IMAP LOGINDISABLED capability signals that the LOGIN command is disabled; a server MUST respond with a tagged NO to any attempt to use LOGIN when this capability is present. This capability prevents compliant clients from sending unencrypted passwords but provides no protection against active attacks.

tls, security

protocol-element §3

The IMAP STARTTLS extension adds the 'STARTTLS' command, advertised in the CAPABILITY response. TLS negotiation begins immediately after the CRLF at the end of the tagged OK response. The SASL EXTERNAL mechanism MAY be used to authenticate once TLS client credentials are successfully exchanged.

tls

protocol-element §6

The PLAIN SASL mechanism uses a single client-to-server message. The client may leave the authorization identity empty to indicate it is the same as the authentication identity. Non-US-ASCII characters are permitted when represented in UTF-8.

tls

protocol-element §4

The POP3 STLS command initiates TLS negotiation. It is only valid in AUTHORIZATION state; a -ERR response MAY result if a security layer is already active. After STLS, the client SHOULD re-issue the CAPA command.

tls

registry §8

This document registers the 'STARTTLS' and 'LOGINDISABLED' IMAP capabilities, the POP3 'STLS' capability (CAPA tag, AUTHORIZATION state only), the ACAP 'STARTTLS' capability, and the 'PLAIN' SASL mechanism (intended usage: COMMON).

registry, tls

security-consideration §9 SHOULD

A man-in-the-middle attacker can always cause a down-negotiation to the weakest authentication mechanism or cipher suite available; implementations SHOULD be configurable to refuse weak mechanisms or cipher suites.

tls, security, crypto

security-consideration §9

A man-in-the-middle attacker can remove STARTTLS from the capability list or generate a failure response to the STARTTLS command. Clients SHOULD warn users when session privacy is not active and/or be configurable to refuse to proceed without an acceptable level of security. Clients MUST discard cached capabilities advertised prior to the start of the TLS handshake.

tls, security

security-consideration §9

TLS only provides protection for data sent over a network connection; messages transferred over IMAP or POP3 remain available to server administrators and subject to eavesdropping when transmitted through SMTP or NNTP. TLS is not a substitute for end-to-end message security using MIME security multiparts.

tls, security, privacy

security-consideration §9

When the PLAIN mechanism is used, the server gains the ability to impersonate the user to all services with the same password, regardless of TLS encryption. Clients are encouraged to have an operational mode where all mechanisms likely to reveal the user's password to the server are disabled.

tls, security

wire-format §6

The PLAIN SASL client message consists of: optional authorization-id, NUL (%x00), authentication-id, NUL, password. Each of authenticate-id, authorize-id, and password MUST accept up to 255 octets and are encoded as UTF8-SAFE characters.

tls, security