On Wed, Jul 03, 2002 at 09:54:15AM -0400, Jeffrey Altman wrote:

> Is there a summary somewhere of the changes that were made to the
> SSLv3 and TLSv1 message exchanges to avoid the vulnerability in the
> CBC cipher suites?

I'm not aware of a proper summary of all the issues involved.

> In particular, I need to know:
> 
>  . the description of the vulnerability

There's something at the following URLs:

     http://www.imc.org/ietf-tls/mail-archive/msg03273.html
     http://www.imc.org/ietf-tls/mail-archive/msg03387.html

>  . a description of the workaround

>From CHANGES:

  *) Implement a countermeasure against a vulnerability recently found
     in CBC ciphersuites in SSL 3.0/TLS 1.0: Send an empty fragment
     before application data chunks to avoid the use of known IVs
     with data potentially chosen by the attacker.
     [Bodo Moeller]

As the protocols don't explicitly reset CBC IVs, the IV for each block
is known in advance (it's the last ciphertext block from the previous
record).  The attack works by choosing application data with knowledge
of the IV that will be used for encrypting this data.  Empty fragments
(i.e. fragments with plaintext length zero) ensure that the known IV
will not be used for application data, and that an unpredictable IV
will be in use when the actual application data is processed in the
following fragment.

>  . a summary of why the workaround should be considered valid in 
>    the protocol

I have found nothing in the SSL 3.0 and TLS 1.0 specifications that
forbids fragments of length zero.  The length is given as a 'uint16'
value; the specification defines upper limits, but no lower limits.

draft-freier-ssl-version3-02.txt (SSL 3.0):
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5.2.1 Fragmentation

   The record layer fragments information blocks into SSLPlaintext
   records of 2^14 bytes or less.  [...]
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

RFC 2246 (TLS 1.0):
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6.2.1. Fragmentation

   The record layer fragments information blocks into TLSPlaintext
   records carrying data in chunks of 2^14 bytes or less. [...]
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


> I have come across a large commercial user of SSL services for whom
> the workaround fails.  The transmission of the data frame with no
> application data generates an SSL Alert causing the application to
> close the connection.  The developers of the SSL library being used
> have replied that SSLv3 does not permit data frames containing no
> application data.  

Can they cite a particular provision in the specification that forbids
records with a fragment length of zero?  I haven't found one, and
length-zero fragments are handled well by many implementations
(including Microsoft IIS).

But I am aware of compatibility problems.  One way to avoid these
is to use RC4 (which does not need the workaround).  Also new OpenSSL
versions (starting with 0.9.6e or 0.9.7) have an option for disabling
the countermeasure, which is automatically enabled in many
applications; from CHANGES:

  *) New option
          SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
     for disabling the SSL 3.0/TLS 1.0 CBC vulnerability countermeasure
     that was added in OpenSSL 0.9.6d.

     As the countermeasure turned out to be incompatible with some
     broken SSL implementations, the new option is part of SSL_OP_ALL.
     SSL_OP_ALL is usually employed when compatibility with weird SSL
     implementations is desired (e.g. '-bugs' option to 's_client' and
     's_server'), so the new option is automatically set in many
     applications.
     [Bodo Moeller]


-- 
Bodo Möller <[EMAIL PROTECTED]>
PGP http://www.informatik.tu-darmstadt.de/TI/Mitarbeiter/moeller/0x36d2c658.html
* TU Darmstadt, Theoretische Informatik, Alexanderstr. 10, D-64283 Darmstadt
* Tel. +49-6151-16-6628, Fax +49-6151-16-6036
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to