[1016] in Kerberos

home help back first fref pref prev next nref lref last post

Re: Dictionary attacks

daemon@ATHENA.MIT.EDU (Joe Pato)
Fri Jun 15 12:57:39 1990

From: pato@apollo.com (Joe Pato)
Date: Fri, 15 Jun 90 11:36:45 EDT
To: Ted_Anderson@transarc.com
Cc: kerberos@ATHENA.MIT.EDU
In-Reply-To: Ted_Anderson@transarc.com, fri, 15 jun 90 09:03:02

    I believe people in this recent exchange have been mis-using the term
    "dictionary attack".  It seems that people have been using this to refer
    to a situation where the sought key is a word in the dictionary.  This
    limits the search space from 2^56 to something more manageable like the
    size of the dictionary, 10K-100K words.  This is certainly a problem.
    
    However, my understanding of the term is that it is a bit more
    complicated.  The case Joe Pato mentions is a good one.  You request a
    ticket for each user in the database.  The tickets you receive surely
    contain verifible plaintext, but even more useful, they START with
    CONSTANT plaintext, in this case the name of the requester and a few
    other controllable bytes.  As long as there are more than eight bytes we
    can predict the plaintext to the first round of encryption in the CBC.
    Now we separately compute the encryption of this text with all the
    passwords of interest.  This list is sorted and becomes the
    "dictionary".  Now we look each of the responses from the first step up
    in this "dictionary", every match gives us someone's key.
    
    The power of this appoach is that we attack everyone's password in
    parallel.  Each trial key can be tested against each user with little
    extra cost.  This is useful only if we don't really care which key we
    find.  This is the same basic idea as the Birthday Paradox.  In
    principle, this reduces the effort to about the square root of the key
    size, in this case (sqrt(2^56) == 2^26) about 67 million.  In practice
    to really attack the whole key space is foolish, and would take a great
    deal of memory and a large space of users to attack.  But in common
    cases the attack wins by a factor of the number of users in the
    database.
    
            Ted Anderson
    
    
When we were designing the extensions to Kerberos V5 for DEcorum (and
subsequently the OSF DCE) we considered forcing "good passwords".  We had two
strategies in mind:

    1) Have the password changing interface pass the plaintext of the password
        to the server encrypted under the appropriate session key.  This allows
        the server to enforce passwords selected from a suitable alphabet and
        passwords that do not appear in dictionaries.  The specific
        restrictions are expressed at the server via policy data.  This would
        be in lieu of the current kpasswd - thereby disallowing unevaluated
        passwords.

    2) Decouple a principal's password from their secret key.  Have the secret
        key be generated by an appropriately random algorithm at the KDC when
        the principal changes their simple password.  The secret key
        (encrypted under the simple password) would then be retrievable by an
        appropriate challenge/response protocol.

        This has two benefits.  All principal's will use a "good" key chosen
        from the complete 2^56 key space to thwart dictionary attacks of the 
        form I suggested (An attack by a principal possessing a valid tgt on
        another principal by requesting a ticket with that other principal as
        the server).  And the initial key retrival operation can be of the form
        that Jonathan was looking for - it requires a priori proof of possesion
        of the simple password, it can be "slow" to limit the effectiveness of 
        brute force attacks, it can audit repeated attempts to detect attacks
        and it can choose to deny requests that exhibit an attack pattern.
        The attack detection threshold will be affected by the number of
        replicas servicing the KDS, but should be low enough in all practical
        environments so that the number of replicas is inconsequential.

We did not implement either of these extensions in order to remain true to the
Kerberos V5 protocol.  I am inclined to at least implement the first since it
simply affects kpasswd.  Comments?

                    -- Joe Pato
                       Cooperative Object Computing Operation
                       Hewlett-Packard Company
                       pato@apollo.hp.com
-------

home help back first fref pref prev next nref lref last post