Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It should read "then compares the generated hash to the hash that was received from the client to verify that it matches"

Or something along those lines.



I assume the reason for doing this is to confirm the symmetric key now in use is known between both parties?


I wrote it above, but more relevant here maybe: No. There's no need to confirm that, if the keys don't match everything will fail anyway and the connection aborts because everything either party sends appears to be gibberish.

The description linked over-simplifies, the hash they're calculating is a summary of the handshake process by which keys are agreed, we want to prove that both saw the _same_ process happen to reach this state.

Suppose I am willing to use archaic method A because I'm a simpleton, although I do know methods C and E which are safer. The wise people running www.google.com only allow method A if you don't know methods B, C, D or E.

Now, I try to connect to www.google.com and unknown to me a Bad Guy is in the middle. I say "Hello, I know methods A, C and E", but the bad guy changes that message to say "Hello, I know method A only". Google replies "OK I guess we can do method A then" and we use method A. The Bad Guy knows how to break method A and now my security is ruined!

But with this Finished message in TLS, www.google.com and I will calculate different hashes, since I know I said "I know methods A, C and E" but www.google.com got a message from me saying "I know method A only" and those don't hash the same.

This proves somebody is tampering with our connection, we must abort.


ah, cheers.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: