It is probably due to old code which works just fine when SHA might not have been "easily available" in all JVM's. (back in 2002?)

So a quick recap for folks ... a session id is generated by
1) Getting a random number
2) Hashing it
3) Converting the hashed bytes to something text [base64] so they fit in a cookie without extra work

Steps 1-3 are repeated until enough chars are present for the configured session ID length.

So if an attacker *could* get reverse of the hash - it would be a random number. SessionId length is configurable - so you could change your session length to be larger so that mulitple random numbers become digested. And then keep the session length small enough so that next hash is not completely concatenated into the id. So at best the attack has a one full hash plus part of a another hash to work with. (As of this writing - I cant recall how times digest is called by default so I'm not sure if a single full hash is in the session id, or part of one, or multiples)

*** BUT *** If the random number and entropy to get the random number are "good enough" - hashing is already overkill. But in the case where the entropy and random number generator are "bad" - hashing provides another line of defense against determining the current random number and then being able to guess the next random number.


-Tim

Minoo Hamilton wrote:
Greetings Tomcat Developers,
I am a security researcher who has recently been getting into Apache Tomcat security hardening. Forgive me if my failed attempt to find the answer to this question has brought me prematurely to this list. I've been trying to figure out why the Apache Tomcat 6 Manager component defaults to using the MD5 hash algorithm for session token creation. It has long been seen as a questionable hash algorithm due to known collisions. Why not use SHA-1 by default, instead? Has anybody looked at SecureRandom which uses SHA-1? I assume eventually this should be SHA-2, as SHA-1 is coming under increasing fire, as well.

From: http://tomcat.apache.org/tomcat-6.0-doc/config/manager.html

|algorithm|

Name of the /Message Digest/ algorithm used to calculate session identifiers produced by this Manager. This value must be supported by the |java.security.MessageDigest| class. If not specified, the default value is "MD5".


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to