2377353cae
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
844 lines
32 KiB
Plaintext
844 lines
32 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
Network Working Group C. Newman
|
||
Request for Comments: 2595 Innosoft
|
||
Category: Standards Track June 1999
|
||
|
||
|
||
Using TLS with IMAP, POP3 and ACAP
|
||
|
||
|
||
Status of this Memo
|
||
|
||
This document specifies an Internet standards track protocol for the
|
||
Internet community, and requests discussion and suggestions for
|
||
improvements. Please refer to the current edition of the "Internet
|
||
Official Protocol Standards" (STD 1) for the standardization state
|
||
and status of this protocol. Distribution of this memo is unlimited.
|
||
|
||
Copyright Notice
|
||
|
||
Copyright (C) The Internet Society (1999). All Rights Reserved.
|
||
|
||
1. Motivation
|
||
|
||
The TLS protocol (formerly known as SSL) provides a way to secure an
|
||
application protocol from tampering and eavesdropping. The option of
|
||
using such security is desirable for IMAP, POP and ACAP due to common
|
||
connection eavesdropping and hijacking attacks [AUTH]. Although
|
||
advanced SASL authentication mechanisms can provide a lightweight
|
||
version of this service, TLS is complimentary to simple
|
||
authentication-only SASL mechanisms or deployed clear-text password
|
||
login commands.
|
||
|
||
Many sites have a high investment in authentication infrastructure
|
||
(e.g., a large database of a one-way-function applied to user
|
||
passwords), so a privacy layer which is not tightly bound to user
|
||
authentication can protect against network eavesdropping attacks
|
||
without requiring a new authentication infrastructure and/or forcing
|
||
all users to change their password. 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. (Note there is a separate RFC for the
|
||
STARTTLS command in SMTP [SMTPTLS].)
|
||
|
||
There is a strong desire in the IETF to eliminate the transmission of
|
||
clear-text passwords over unencrypted channels. While SASL can be
|
||
used for this purpose, TLS provides an additional tool with different
|
||
deployability characteristics. A server supporting both TLS with
|
||
|
||
|
||
|
||
|
||
Newman Standards Track [Page 1]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
simple passwords and a challenge/response SASL mechanism is likely to
|
||
interoperate with a wide variety of clients without resorting to
|
||
unencrypted clear-text passwords.
|
||
|
||
The STARTTLS command rectifies a number of the problems with using a
|
||
separate port for a "secure" protocol variant. Some of these are
|
||
mentioned in section 7.
|
||
|
||
1.1. Conventions Used in this Document
|
||
|
||
The key words "REQUIRED", "MUST", "MUST NOT", "SHOULD", "SHOULD NOT",
|
||
"MAY", and "OPTIONAL" in this document are to be interpreted as
|
||
described in "Key words for use in RFCs to Indicate Requirement
|
||
Levels" [KEYWORDS].
|
||
|
||
Terms related to authentication are defined in "On Internet
|
||
Authentication" [AUTH].
|
||
|
||
Formal syntax is defined using ABNF [ABNF].
|
||
|
||
In examples, "C:" and "S:" indicate lines sent by the client and
|
||
server respectively.
|
||
|
||
2. Basic Interoperability and Security Requirements
|
||
|
||
The following requirements apply to all implementations of the
|
||
STARTTLS extension for IMAP, POP3 and ACAP.
|
||
|
||
2.1. Cipher Suite Requirements
|
||
|
||
Implementation of the TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA [TLS] cipher
|
||
suite is REQUIRED. This is important as it assures that any two
|
||
compliant implementations can be configured to interoperate.
|
||
|
||
All other cipher suites are OPTIONAL.
|
||
|
||
2.2. Privacy Operational Mode Security Requirements
|
||
|
||
Both clients and servers SHOULD have a privacy operational mode which
|
||
refuses authentication unless successful activation of an encryption
|
||
layer (such as that provided by TLS) occurs prior to or at the time
|
||
of authentication and which will terminate the connection if that
|
||
encryption layer is deactivated. Implementations are encouraged to
|
||
have flexability with respect to the minimal encryption strength or
|
||
cipher suites permitted. A minimalist approach to this
|
||
recommendation would be an operational mode where the
|
||
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA cipher suite is mandatory prior to
|
||
permitting authentication.
|
||
|
||
|
||
|
||
Newman Standards Track [Page 2]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
Clients MAY have an operational mode which uses encryption only when
|
||
it is advertised by the server, but authentication continues
|
||
regardless. For backwards compatibility, servers SHOULD have an
|
||
operational mode where only the authentication mechanisms required by
|
||
the relevant base protocol specification are needed to successfully
|
||
authenticate.
|
||
|
||
2.3. Clear-Text Password Requirements
|
||
|
||
Clients and servers which implement STARTTLS MUST be configurable to
|
||
refuse all clear-text login commands or mechanisms (including both
|
||
standards-track and nonstandard mechanisms) unless an encryption
|
||
layer of adequate strength is active. Servers which allow
|
||
unencrypted clear-text logins SHOULD be configurable to refuse
|
||
clear-text logins both for the entire server, and on a per-user
|
||
basis.
|
||
|
||
2.4. Server Identity Check
|
||
|
||
During the TLS negotiation, the client MUST check its understanding
|
||
of the server hostname against the server's identity as presented in
|
||
the server Certificate message, in order to prevent man-in-the-middle
|
||
attacks. Matching is performed according to these rules:
|
||
|
||
- The client MUST use the server hostname it used to open the
|
||
connection as the value to compare against the server name as
|
||
expressed in the server certificate. The client MUST NOT use any
|
||
form of the server hostname derived from an insecure remote source
|
||
(e.g., insecure DNS lookup). CNAME canonicalization is not done.
|
||
|
||
- If a subjectAltName extension of type dNSName is present in the
|
||
certificate, it SHOULD be used as the source of the server's
|
||
identity.
|
||
|
||
- Matching is case-insensitive.
|
||
|
||
- A "*" wildcard character MAY be used as the left-most name
|
||
component in the certificate. For example, *.example.com would
|
||
match a.example.com, foo.example.com, etc. but would not match
|
||
example.com.
|
||
|
||
- If the certificate contains multiple names (e.g. more than one
|
||
dNSName field), then a match with any one of the fields is
|
||
considered acceptable.
|
||
|
||
If the match fails, the client SHOULD either ask for explicit user
|
||
confirmation, or terminate the connection and indicate the server's
|
||
identity is suspect.
|
||
|
||
|
||
|
||
Newman Standards Track [Page 3]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
2.5. TLS Security Policy Check
|
||
|
||
Both the client and server MUST check the result of the STARTTLS
|
||
command and subsequent TLS negotiation to see whether acceptable
|
||
authentication or privacy was achieved. Ignoring this step
|
||
completely invalidates using TLS for security. The decision about
|
||
whether acceptable authentication or privacy was achieved is made
|
||
locally, is implementation-dependent, and is beyond the scope of this
|
||
document.
|
||
|
||
3. IMAP STARTTLS extension
|
||
|
||
When the TLS extension is present in IMAP, "STARTTLS" is listed as a
|
||
capability in response to the CAPABILITY command. This extension
|
||
adds a single command, "STARTTLS" to the IMAP protocol which is used
|
||
to begin a TLS negotiation.
|
||
|
||
3.1. STARTTLS Command
|
||
|
||
Arguments: none
|
||
|
||
Responses: no specific responses for this command
|
||
|
||
Result: OK - begin TLS negotiation
|
||
BAD - command unknown or arguments invalid
|
||
|
||
A TLS negotiation begins immediately after the CRLF at the end of
|
||
the tagged OK response from the server. Once a client issues a
|
||
STARTTLS command, 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.
|
||
The server remains in non-authenticated state, even if client
|
||
credentials are supplied during the TLS negotiation. The SASL
|
||
[SASL] EXTERNAL mechanism MAY be used to authenticate once TLS
|
||
client credentials are successfully exchanged, but servers
|
||
supporting the STARTTLS command are not required to support the
|
||
EXTERNAL mechanism.
|
||
|
||
Once TLS has been started, the client MUST discard cached
|
||
information about server capabilities and SHOULD re-issue the
|
||
CAPABILITY command. This is necessary to protect against
|
||
man-in-the-middle attacks which alter the capabilities list prior
|
||
to STARTTLS. The server MAY advertise different capabilities
|
||
after STARTTLS.
|
||
|
||
The formal syntax for IMAP is amended as follows:
|
||
|
||
|
||
|
||
|
||
Newman Standards Track [Page 4]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
command_any =/ "STARTTLS"
|
||
|
||
Example: C: a001 CAPABILITY
|
||
S: * CAPABILITY IMAP4rev1 STARTTLS LOGINDISABLED
|
||
S: a001 OK CAPABILITY completed
|
||
C: a002 STARTTLS
|
||
S: a002 OK Begin TLS negotiation now
|
||
<TLS negotiation, further commands are under TLS layer>
|
||
C: a003 CAPABILITY
|
||
S: * CAPABILITY IMAP4rev1 AUTH=EXTERNAL
|
||
S: a003 OK CAPABILITY completed
|
||
C: a004 LOGIN joe password
|
||
S: a004 OK LOGIN completed
|
||
|
||
3.2. IMAP LOGINDISABLED capability
|
||
|
||
The current IMAP protocol specification (RFC 2060) requires the
|
||
implementation of the LOGIN command which uses clear-text passwords.
|
||
Many sites may choose to disable this command unless encryption is
|
||
active for security reasons. An IMAP server MAY advertise that the
|
||
LOGIN command is disabled by including the LOGINDISABLED capability
|
||
in the capability response. Such a server will respond with a tagged
|
||
"NO" response to any attempt to use the LOGIN command.
|
||
|
||
An IMAP server which implements STARTTLS MUST implement support for
|
||
the LOGINDISABLED capability on unencrypted connections.
|
||
|
||
An IMAP client which complies with this specification MUST NOT issue
|
||
the LOGIN command if this capability is present.
|
||
|
||
This capability is useful to prevent clients compliant with this
|
||
specification from sending an unencrypted password in an environment
|
||
subject to passive attacks. It has no impact on an environment
|
||
subject to active attacks as a man-in-the-middle attacker can remove
|
||
this capability. Therefore this does not relieve clients of the need
|
||
to follow the privacy mode recommendation in section 2.2.
|
||
|
||
Servers advertising this capability will fail to interoperate with
|
||
many existing compliant IMAP clients and will be unable to prevent
|
||
those clients from disclosing the user's password.
|
||
|
||
4. POP3 STARTTLS extension
|
||
|
||
The POP3 STARTTLS extension adds the STLS command to POP3 servers.
|
||
If this is implemented, the POP3 extension mechanism [POP3EXT] 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.
|
||
|
||
|
||
|
||
Newman Standards Track [Page 5]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
STLS
|
||
|
||
Arguments: none
|
||
|
||
Restrictions:
|
||
Only permitted in AUTHORIZATION state.
|
||
|
||
Discussion:
|
||
A TLS negotiation begins immediately after the CRLF at the
|
||
end of the +OK response from the server. A -ERR response
|
||
MAY result if a security layer is already active. Once a
|
||
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
|
||
and the server remains in AUTHORIZATION state, even if
|
||
client credentials are supplied during the TLS negotiation.
|
||
The AUTH command [POP-AUTH] with the EXTERNAL mechanism
|
||
[SASL] MAY be used to authenticate once TLS client
|
||
credentials are successfully exchanged, but servers
|
||
supporting the STLS command are not required to support the
|
||
EXTERNAL mechanism.
|
||
|
||
Once TLS has been started, the client MUST discard cached
|
||
information about server capabilities and SHOULD re-issue
|
||
the CAPA command. This is necessary to protect against
|
||
man-in-the-middle attacks which alter the capabilities list
|
||
prior to STLS. The server MAY advertise different
|
||
capabilities after STLS.
|
||
|
||
Possible Responses:
|
||
+OK -ERR
|
||
|
||
Examples:
|
||
C: STLS
|
||
S: +OK Begin TLS negotiation
|
||
<TLS negotiation, further commands are under TLS layer>
|
||
...
|
||
C: STLS
|
||
S: -ERR Command not permitted when TLS active
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman Standards Track [Page 6]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
5. ACAP STARTTLS extension
|
||
|
||
When the TLS extension is present in ACAP, "STARTTLS" is listed as a
|
||
capability in the ACAP greeting. No arguments to this capability are
|
||
defined at this time. This extension adds a single command,
|
||
"STARTTLS" to the ACAP protocol which is used to begin a TLS
|
||
negotiation.
|
||
|
||
5.1. STARTTLS Command
|
||
|
||
Arguments: none
|
||
|
||
Responses: no specific responses for this command
|
||
|
||
Result: OK - begin TLS negotiation
|
||
BAD - command unknown or arguments invalid
|
||
|
||
A TLS negotiation begins immediately after the CRLF at the end of
|
||
the tagged OK response from the server. Once a client issues a
|
||
STARTTLS command, 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.
|
||
The server remains in non-authenticated state, even if client
|
||
credentials are supplied during the TLS negotiation. The SASL
|
||
[SASL] EXTERNAL mechanism MAY be used to authenticate once TLS
|
||
client credentials are successfully exchanged, but servers
|
||
supporting the STARTTLS command are not required to support the
|
||
EXTERNAL mechanism.
|
||
|
||
After the TLS layer is established, the server MUST re-issue an
|
||
untagged ACAP greeting. This is necessary to protect against
|
||
man-in-the-middle attacks which alter the capabilities list prior
|
||
to STARTTLS. The client MUST discard cached capability
|
||
information and replace it with the information from the new ACAP
|
||
greeting. The server MAY advertise different capabilities after
|
||
STARTTLS.
|
||
|
||
The formal syntax for ACAP is amended as follows:
|
||
|
||
command_any =/ "STARTTLS"
|
||
|
||
Example: S: * ACAP (SASL "CRAM-MD5") (STARTTLS)
|
||
C: a002 STARTTLS
|
||
S: a002 OK "Begin TLS negotiation now"
|
||
<TLS negotiation, further commands are under TLS layer>
|
||
S: * ACAP (SASL "CRAM-MD5" "PLAIN" "EXTERNAL")
|
||
|
||
|
||
|
||
|
||
Newman Standards Track [Page 7]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
6. PLAIN SASL mechanism
|
||
|
||
Clear-text passwords are simple, interoperate with almost all
|
||
existing operating system authentication databases, and are useful
|
||
for a smooth transition to a more secure password-based
|
||
authentication mechanism. The drawback is that they are unacceptable
|
||
for use over an unencrypted network connection.
|
||
|
||
This defines the "PLAIN" SASL mechanism for use with ACAP and other
|
||
protocols with no clear-text login command. The PLAIN SASL mechanism
|
||
MUST NOT be advertised or used unless a strong encryption layer (such
|
||
as the provided by TLS) is active or backwards compatibility dictates
|
||
otherwise.
|
||
|
||
The mechanism consists of a single message from the client to the
|
||
server. The client sends the authorization identity (identity to
|
||
login as), followed by a US-ASCII NUL character, followed by the
|
||
authentication identity (identity whose password will be used),
|
||
followed by a US-ASCII NUL character, followed by the clear-text
|
||
password. The client may leave the authorization identity empty to
|
||
indicate that it is the same as the authentication identity.
|
||
|
||
The server will verify the authentication identity and password with
|
||
the system authentication database and verify that the authentication
|
||
credentials permit the client to login as the authorization identity.
|
||
If both steps succeed, the user is logged in.
|
||
|
||
The server MAY also use the password to initialize any new
|
||
authentication database, such as one suitable for CRAM-MD5
|
||
[CRAM-MD5].
|
||
|
||
Non-US-ASCII characters are permitted as long as they are represented
|
||
in UTF-8 [UTF-8]. Use of non-visible characters or characters which
|
||
a user may be unable to enter on some keyboards is discouraged.
|
||
|
||
The formal grammar for the client message using Augmented BNF [ABNF]
|
||
follows.
|
||
|
||
message = [authorize-id] NUL authenticate-id NUL password
|
||
authenticate-id = 1*UTF8-SAFE ; MUST accept up to 255 octets
|
||
authorize-id = 1*UTF8-SAFE ; MUST accept up to 255 octets
|
||
password = 1*UTF8-SAFE ; MUST accept up to 255 octets
|
||
NUL = %x00
|
||
UTF8-SAFE = %x01-09 / %x0B-0C / %x0E-7F / UTF8-2 /
|
||
UTF8-3 / UTF8-4 / UTF8-5 / UTF8-6
|
||
UTF8-1 = %x80-BF
|
||
UTF8-2 = %xC0-DF UTF8-1
|
||
UTF8-3 = %xE0-EF 2UTF8-1
|
||
|
||
|
||
|
||
Newman Standards Track [Page 8]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
UTF8-4 = %xF0-F7 3UTF8-1
|
||
UTF8-5 = %xF8-FB 4UTF8-1
|
||
UTF8-6 = %xFC-FD 5UTF8-1
|
||
|
||
Here is an example of how this might be used to initialize a CRAM-MD5
|
||
authentication database for ACAP:
|
||
|
||
Example: S: * ACAP (SASL "CRAM-MD5") (STARTTLS)
|
||
C: a001 AUTHENTICATE "CRAM-MD5"
|
||
S: + "<1896.697170952@postoffice.reston.mci.net>"
|
||
C: "tim b913a602c7eda7a495b4e6e7334d3890"
|
||
S: a001 NO (TRANSITION-NEEDED)
|
||
"Please change your password, or use TLS to login"
|
||
C: a002 STARTTLS
|
||
S: a002 OK "Begin TLS negotiation now"
|
||
<TLS negotiation, further commands are under TLS layer>
|
||
S: * ACAP (SASL "CRAM-MD5" "PLAIN" "EXTERNAL")
|
||
C: a003 AUTHENTICATE "PLAIN" {21+}
|
||
C: <NUL>tim<NUL>tanstaaftanstaaf
|
||
S: a003 OK CRAM-MD5 password initialized
|
||
|
||
Note: In this example, <NUL> represents a single ASCII NUL octet.
|
||
|
||
7. imaps and pop3s ports
|
||
|
||
Separate "imaps" and "pop3s" ports were registered for use with SSL.
|
||
Use of these ports is discouraged in favor of the STARTTLS or STLS
|
||
commands.
|
||
|
||
A number of problems have been observed with separate ports for
|
||
"secure" variants of protocols. This is an attempt to enumerate some
|
||
of those problems.
|
||
|
||
- Separate ports lead to a separate URL scheme which intrudes into
|
||
the user interface in inappropriate ways. For example, many web
|
||
pages use language like "click here if your browser supports SSL."
|
||
This is a decision the browser is often more capable of making than
|
||
the user.
|
||
|
||
- Separate ports imply a model of either "secure" or "not secure."
|
||
This can be misleading in a number of ways. First, the "secure"
|
||
port may not in fact be acceptably secure as an export-crippled
|
||
cipher suite might be in use. This can mislead users into a false
|
||
sense of security. Second, the normal port might in fact be
|
||
secured by using a SASL mechanism which includes a security layer.
|
||
Thus the separate port distinction makes the complex topic of
|
||
security policy even more confusing. One common result of this
|
||
confusion is that firewall administrators are often misled into
|
||
|
||
|
||
|
||
Newman Standards Track [Page 9]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
permitting the "secure" port and blocking the standard port. This
|
||
could be a poor choice given the common use of SSL with a 40-bit
|
||
key encryption layer and plain-text password authentication is less
|
||
secure than strong SASL mechanisms such as GSSAPI with Kerberos 5.
|
||
|
||
- Use of separate ports for SSL has caused clients to implement only
|
||
two security policies: use SSL or don't use SSL. The desirable
|
||
security policy "use TLS when available" would be cumbersome with
|
||
the separate port model, but is simple with STARTTLS.
|
||
|
||
- Port numbers are a limited resource. While they are not yet in
|
||
short supply, it is unwise to set a precedent that could double (or
|
||
worse) the speed of their consumption.
|
||
|
||
|
||
8. IANA Considerations
|
||
|
||
This constitutes registration of the "STARTTLS" and "LOGINDISABLED"
|
||
IMAP capabilities as required by section 7.2.1 of RFC 2060 [IMAP].
|
||
|
||
The registration for the POP3 "STLS" capability follows:
|
||
|
||
CAPA tag: STLS
|
||
Arguments: none
|
||
Added commands: STLS
|
||
Standard commands affected: May enable USER/PASS as a side-effect.
|
||
CAPA command SHOULD be re-issued after successful completion.
|
||
Announced states/Valid states: AUTHORIZATION state only.
|
||
Specification reference: this memo
|
||
|
||
The registration for the ACAP "STARTTLS" capability follows:
|
||
|
||
Capability name: STARTTLS
|
||
Capability keyword: STARTTLS
|
||
Capability arguments: none
|
||
Published Specification(s): this memo
|
||
Person and email address for further information:
|
||
see author's address section below
|
||
|
||
The registration for the PLAIN SASL mechanism follows:
|
||
|
||
SASL mechanism name: PLAIN
|
||
Security Considerations: See section 9 of this memo
|
||
Published specification: this memo
|
||
Person & email address to contact for further information:
|
||
see author's address section below
|
||
Intended usage: COMMON
|
||
Author/Change controller: see author's address section below
|
||
|
||
|
||
|
||
Newman Standards Track [Page 10]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
9. Security Considerations
|
||
|
||
TLS only provides protection for data sent over a network connection.
|
||
Messages transferred over IMAP or POP3 are still available to server
|
||
administrators and usually subject to eavesdropping, tampering and
|
||
forgery when transmitted through SMTP or NNTP. TLS is no substitute
|
||
for an end-to-end message security mechanism using MIME security
|
||
multiparts [MIME-SEC].
|
||
|
||
A man-in-the-middle attacker can remove STARTTLS from the capability
|
||
list or generate a failure response to the STARTTLS command. In
|
||
order to detect such an attack, clients SHOULD warn the user when
|
||
session privacy is not active and/or be configurable to refuse to
|
||
proceed without an acceptable level of security.
|
||
|
||
A man-in-the-middle attacker can always cause a down-negotiation to
|
||
the weakest authentication mechanism or cipher suite available. For
|
||
this reason, implementations SHOULD be configurable to refuse weak
|
||
mechanisms or cipher suites.
|
||
|
||
Any protocol interactions prior to the TLS handshake are performed in
|
||
the clear and can be modified by a man-in-the-middle attacker. For
|
||
this reason, clients MUST discard cached information about server
|
||
capabilities advertised prior to the start of the TLS handshake.
|
||
|
||
Clients are encouraged to clearly indicate when the level of
|
||
encryption active is known to be vulnerable to attack using modern
|
||
hardware (such as encryption keys with 56 bits of entropy or less).
|
||
|
||
The LOGINDISABLED IMAP capability (discussed in section 3.2) only
|
||
reduces the potential for passive attacks, it provides no protection
|
||
against active attacks. The responsibility remains with the client
|
||
to avoid sending a password over a vulnerable channel.
|
||
|
||
The PLAIN mechanism relies on the TLS encryption layer for security.
|
||
When used without TLS, it is vulnerable to a common network
|
||
eavesdropping attack. Therefore PLAIN MUST NOT be advertised or used
|
||
unless a suitable TLS encryption layer is active or backwards
|
||
compatibility dictates otherwise.
|
||
|
||
When the PLAIN mechanism is used, the server gains the ability to
|
||
impersonate the user to all services with the same password
|
||
regardless of any encryption provided by TLS or other network privacy
|
||
mechanisms. While many other authentication mechanisms have similar
|
||
weaknesses, stronger SASL mechanisms such as Kerberos address this
|
||
issue. Clients are encouraged to have an operational mode where all
|
||
mechanisms which are likely to reveal the user's password to the
|
||
server are disabled.
|
||
|
||
|
||
|
||
Newman Standards Track [Page 11]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
The security considerations for TLS apply to STARTTLS and the
|
||
security considerations for SASL apply to the PLAIN mechanism.
|
||
Additional security requirements are discussed in section 2.
|
||
|
||
10. References
|
||
|
||
[ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax
|
||
Specifications: ABNF", RFC 2234, November 1997.
|
||
|
||
[ACAP] Newman, C. and J. Myers, "ACAP -- Application
|
||
Configuration Access Protocol", RFC 2244, November 1997.
|
||
|
||
[AUTH] Haller, N. and R. Atkinson, "On Internet Authentication",
|
||
RFC 1704, October 1994.
|
||
|
||
[CRAM-MD5] Klensin, J., Catoe, R. and P. Krumviede, "IMAP/POP
|
||
AUTHorize Extension for Simple Challenge/Response", RFC
|
||
2195, September 1997.
|
||
|
||
[IMAP] Crispin, M., "Internet Message Access Protocol - Version
|
||
4rev1", RFC 2060, December 1996.
|
||
|
||
[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
|
||
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||
|
||
[MIME-SEC] Galvin, J., Murphy, S., Crocker, S. and N. Freed,
|
||
"Security Multiparts for MIME: Multipart/Signed and
|
||
Multipart/Encrypted", RFC 1847, October 1995.
|
||
|
||
[POP3] Myers, J. and M. Rose, "Post Office Protocol - Version 3",
|
||
STD 53, RFC 1939, May 1996.
|
||
|
||
[POP3EXT] Gellens, R., Newman, C. and L. Lundblade, "POP3 Extension
|
||
Mechanism", RFC 2449, November 1998.
|
||
|
||
[POP-AUTH] Myers, J., "POP3 AUTHentication command", RFC 1734,
|
||
December 1994.
|
||
|
||
[SASL] Myers, J., "Simple Authentication and Security Layer
|
||
(SASL)", RFC 2222, October 1997.
|
||
|
||
[SMTPTLS] Hoffman, P., "SMTP Service Extension for Secure SMTP over
|
||
TLS", RFC 2487, January 1999.
|
||
|
||
[TLS] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
|
||
RFC 2246, January 1999.
|
||
|
||
|
||
|
||
|
||
|
||
Newman Standards Track [Page 12]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
[UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO
|
||
10646", RFC 2279, January 1998.
|
||
|
||
|
||
11. Author's Address
|
||
|
||
Chris Newman
|
||
Innosoft International, Inc.
|
||
1050 Lakes Drive
|
||
West Covina, CA 91790 USA
|
||
|
||
EMail: chris.newman@innosoft.com
|
||
|
||
|
||
A. Appendix -- Compliance Checklist
|
||
|
||
An implementation is not compliant if it fails to satisfy one or more
|
||
of the MUST requirements for the protocols it implements. An
|
||
implementation that satisfies all the MUST and all the SHOULD
|
||
requirements for its protocols is said to be "unconditionally
|
||
compliant"; one that satisfies all the MUST requirements but not all
|
||
the SHOULD requirements for its protocols is said to be
|
||
"conditionally compliant".
|
||
|
||
Rules Section
|
||
----- -------
|
||
Mandatory-to-implement Cipher Suite 2.1
|
||
SHOULD have mode where encryption required 2.2
|
||
server SHOULD have mode where TLS not required 2.2
|
||
MUST be configurable to refuse all clear-text login
|
||
commands or mechanisms 2.3
|
||
server SHOULD be configurable to refuse clear-text
|
||
login commands on entire server and on per-user basis 2.3
|
||
client MUST check server identity 2.4
|
||
client MUST use hostname used to open connection 2.4
|
||
client MUST NOT use hostname from insecure remote lookup 2.4
|
||
client SHOULD support subjectAltName of dNSName type 2.4
|
||
client SHOULD ask for confirmation or terminate on fail 2.4
|
||
MUST check result of STARTTLS for acceptable privacy 2.5
|
||
client MUST NOT issue commands after STARTTLS
|
||
until server response and negotiation done 3.1,4,5.1
|
||
client MUST discard cached information 3.1,4,5.1,9
|
||
client SHOULD re-issue CAPABILITY/CAPA command 3.1,4
|
||
IMAP server with STARTTLS MUST implement LOGINDISABLED 3.2
|
||
IMAP client MUST NOT issue LOGIN if LOGINDISABLED 3.2
|
||
POP server MUST implement POP3 extensions 4
|
||
ACAP server MUST re-issue ACAP greeting 5.1
|
||
|
||
|
||
|
||
|
||
Newman Standards Track [Page 13]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
client SHOULD warn when session privacy not active and/or
|
||
refuse to proceed without acceptable security level 9
|
||
SHOULD be configurable to refuse weak mechanisms or
|
||
cipher suites 9
|
||
|
||
The PLAIN mechanism is an optional part of this specification.
|
||
However if it is implemented the following rules apply:
|
||
|
||
Rules Section
|
||
----- -------
|
||
MUST NOT use PLAIN unless strong encryption active
|
||
or backwards compatibility dictates otherwise 6,9
|
||
MUST use UTF-8 encoding for characters in PLAIN 6
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman Standards Track [Page 14]
|
||
|
||
RFC 2595 Using TLS with IMAP, POP3 and ACAP June 1999
|
||
|
||
|
||
Full Copyright Statement
|
||
|
||
Copyright (C) The Internet Society (1999). All Rights Reserved.
|
||
|
||
This document and translations of it may be copied and furnished to
|
||
others, and derivative works that comment on or otherwise explain it
|
||
or assist in its implementation may be prepared, copied, published
|
||
and distributed, in whole or in part, without restriction of any
|
||
kind, provided that the above copyright notice and this paragraph are
|
||
included on all such copies and derivative works. However, this
|
||
document itself may not be modified in any way, such as by removing
|
||
the copyright notice or references to the Internet Society or other
|
||
Internet organizations, except as needed for the purpose of
|
||
developing Internet standards in which case the procedures for
|
||
copyrights defined in the Internet Standards process must be
|
||
followed, or as required to translate it into languages other than
|
||
English.
|
||
|
||
The limited permissions granted above are perpetual and will not be
|
||
revoked by the Internet Society or its successors or assigns.
|
||
|
||
This document and the information contained herein is provided on an
|
||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
|
||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
|
||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
||
Acknowledgement
|
||
|
||
Funding for the RFC Editor function is currently provided by the
|
||
Internet Society.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Newman Standards Track [Page 15]
|
||
|