[10974] in bugtraq
Re: MS Chap v2 analysis
daemon@ATHENA.MIT.EDU (Burton Rosenberg)
Thu Jul 8 05:06:46 1999
Message-Id: <179AA48D1741D211821700805FFE2418018714D1@HQMAIL02>
Date: Wed, 7 Jul 1999 18:15:37 -0400
Reply-To: Burton Rosenberg <burtonr@CITRIX.COM>
From: Burton Rosenberg <burtonr@CITRIX.COM>
X-To: Paul Leach <paulle@MICROSOFT.COM>, BUGTRAQ@SECURITYFOCUS.COM
To: BUGTRAQ@SECURITYFOCUS.COM
the parallel structure of generating the challenge response (function
ChallengeResponse() in
www.ietf.org/internet-drafts/draft-ietf-pppext-mschap-v2-03.tex) cuts down
the strength of
the PasswordHash from 16 to 14 bytes.
this should have been addressed in version 2.
given challenge C of 8 bytes (or the "hidden challenge" of version 2),
password hash P of 16 bytes,
the response is:
< DES_{P1} ( C ) | DES_{P2}(C) | DES_{P3}( C ) >
where, P1 is the first 7 bytes of P, P2 is the second 7 bytes of P, and P3
is the last 2 bytes
of P followed by 5 bytes of zeros.
Break P3 by solving C' = DES_X( C ) for X given known C and C' by brute
force over small number
( 2^16 ) of possibilities for X. This gives the last two bytes of P.
No?
-burt
> -----Original Message-----
> From: Paul Leach [SMTP:paulle@MICROSOFT.COM]
> Sent: Wednesday, July 07, 1999 4:56 AM
> To: BUGTRAQ@SECURITYFOCUS.COM
> Subject: MS Chap v2 analysis
>
> In the recently published paper on PPTPv2
> (http://www.counterpane.com/pptpv2-paper.html), you state
>
> "5 Analysis of MS-CHAPv2
> We do not know why Microsoft chose such a complicated protocol, since this
> is not stronger than the following:
>
> The Server sends the Client an 8-byte challenge.
> The Client encrypts the 16-byte local password hash with an 8-byte
> challenge
> and sends the Server the 24-byte response, an 8-byte challenge of its own,
> and the username.
> The Server sends a pass/fail packet with a 24-byte response to the
> Client's
> challenge, which is the user's password-hash-hash encrypted with the
> Client's 8-byte challenge."
>
> In fact, the above protocol is considerably weaker than MSCHAPv2.
>
> 1. It is subject to a chosen plaintext attack by the server, or by an
> active
> attacker. A rogue server can always use a constant challenge (or the
> active
> attacker can modify the server's challenge), and precompute a table of
> responses for any list of passwords it chooses, making finding the user's
> password a mere table lookup. That's because, in this protocol, the
> response
> is independent of the username and the client, and depends only on the
> password and the server's challenge.
>
> In contrast, MSCHAPv2 creates a challenge by hashing a nonce chosen by the
> client with one chosen by the server -- thus neither gets to control what
> the challenge is. (Does this clarify your confusion in section 3.1?)
>
> 2. Any eavesdopper can recover the local password hash, since it is
> encrypted with the server's 8 byte challenge, which was sent in the clear.
> This means it can masquerade as the user.
>
> 3. Any eavesdropper can recover the user's password-hash-hash, since it is
> encrypted with the client's 8 byte challenge, which was sent in the clear.
> Once the eavesdropper has the user's password-hash-hash, it can "mutually
> authenticate" to that user.
>
> [OK, let's assume that you got steps 2 & 3 reversed -- you meant to say
> that
> the challenge was encrypted by the hash (or hash-hash).]
>
> 4. It is subject to a chosen plaintext attack by an active attacker on the
> mutual authentication step, leading to a precomputed table lookup attack
> on
> the password-hash-hash.
>
> The MSCHAPv2 mutual authentication step, by incorporating the client's
> response (which is a function of both client's and server's nonce), does
> not
> let the client control the server's response, which otherwise would only
> depend on the password.
>
> Paul