re: New version of TLS + IMAP/POP/ACAP draft
Mark Crispin <[email protected]> Tue, 24 Nov 1998 12:07:27 -0800 (PST)
| Newsgroups | gmane.ietf.apps-tls |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 24 Nov 1998 12:02:35 -0800 (PST), Chris Newman wrote:
> Clients and servers MAY generate a security warning whenever an
> unencrypted clear-text password mechanism is advertised or used.
> However, such warnings MUST be applied to all clear-text password
> mechanisms equally, including but not limited to the PLAIN mechanism, the
> IMAP4 LOGIN command and the POP3 PASS command. This is important because
> it prevents users from being misled into a false sense of security if
> they disable one unencrypted clear-text mechanism, but leave another
> active.
This is a user interface, not a protocol, issue. As such it is inappropriate
for a protocol specification such as the TLS + IMAP/POP/ACAP draft.
It may be an appropriate statement for some other document, such as a
"security requirements" document.
> Second, if we're really serious about making this spec promote the
> elimination of clear-text passwords, it's about time we added a capability
> to IMAP4 which advertises that the LOGIN command is disabled
Agreed.
> So I'll
> add the "NOLOGIN" IMAP4 capability to the spec, which indicates either
> the IMAP4 LOGIN command is completely unsupported, or it's only available
> after STARTTLS.
I agree with the intent, but this needs rephrasing. Here are my issues:
1) I think that "LOGINDISABLED" is better than "NOLOGIN", particularly since
we are introducing a surprising behavior for a guy who just read RFC 2060.
2) I object to "completely unsupported"; the base spec makes no allowance for
LOGIN to be unsupported. I prefer "disabled". For the same reason, the
error for an attempted LOGIN should be NO, not BAD.
3) I object to "only available after STARTTLS" since that precludes some
other means by which it might be available.
Here's how I think we should deal with (3). We should amplify the text in
STARTTLS:
Once TLS has been started, the client SHOULD discard cached
information about server capabilities and 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.
to indicate that the capabilities returned after STARTTLS *override* what was
returned prior to STARTTLS. As an explict example, state that LOGINDISABLED
may disappear from the capability list after STARTTLS, thus indicating that
LOGIN can be done under TLS.
> Finally, flatly prohibiting a server from advertising PLAIN raises the
> interesting security consideration of how to deal with an active attacker
> adding "PLAIN" to the list of available mechanisms.
That's the purpose of my text that flatly prohibits a client from attempting
to negotiate PLAIN unless an encryption layer is in use.
> if it is configured to generate a
> security warning for advertisement of unencrypted clear-text mechanisms,
> it will generate the same security warning for the presence of PLAIN that
> it does for the absense of NOLOGIN in IMAP or the presence of USER in
> POP3.
Once again, this is a user interface issue which is inappropriate for this
document.
> > I'm not convinced that STARTTLS is a good idea compared to
> > imaps/pop3s/etc. but now that I have imaps/pop3s/etc. it wouldn't be too
> > hard to add STARTTLS.
> That's interesting, Mark. I'd like to hear your concerns.
Basically, there's a lot of imaps/pop3s software already deployed. More
importantly, stunnel (available from Poland) plus ssleay (available from
Australia) makes it possible to make existing worldwide public server software
play the imaps/pop3s game without running afoul of the reprehensible US
government regulations.
Any server implementation with STARTTLS or internal imaps/pop3s support is
classified as a munition under US law. This means that US based free software
implementors can not distribute it.
With a great deal of work, I have created a mechanism under which I can
distribute a completely sanitized IMAP toolkit, yet by applying the "SSL IMAP
Toolkit" it becomes completely imaps/pop3s/nntps/smtps-capable. STARTTLS is
easy enough to implement, but the mechanism to apply it to sanitized code
requires a bit of thought to get right.
I don't see much point in bothering with implementing STARTTLS until clients
start using it. The popular ones all use simap, and arguably using simap
saves a few RTTs.
I'm not even sure that I understand the point of STARTTLS, unless it's just to
reduce the number of ports assigned.