0

As far as i understand,

Master_key = PRF("pre_master_key", client.random, server.random)

Session keys and other keys derived from Master_key, Client.Random and Server.Random.

After session resumption, Master_key will be same as i know.

Will session keys and other key again derived or it will take previous derived ?

1

I think key_block generation does not care about whether we are doing resumption or not and is the same in all cases:

From https://www.rfc-editor.org/rfc/rfc5246 :

      master_secret = PRF(pre_master_secret, "master secret",
                          ClientHello.random + ServerHello.random)
                          [0..47];

(snip)

   To generate the key material, compute

      key_block = PRF(SecurityParameters.master_secret,
                      "key expansion",
                      SecurityParameters.server_random +
                      SecurityParameters.client_random);

   until enough output has been generated.  Then, the key_block is
   partitioned as follows:

      client_write_MAC_key[SecurityParameters.mac_key_length]
      server_write_MAC_key[SecurityParameters.mac_key_length]
      client_write_key[SecurityParameters.enc_key_length]
      server_write_key[SecurityParameters.enc_key_length]
      client_write_IV[SecurityParameters.fixed_iv_length]
      server_write_IV[SecurityParameters.fixed_iv_length]
4
  • But, Key_block uses server_random and client_random.. right ? So, during session resumption, client_random and server_random will changed because Client Hello and Server Hello message are exchange between server and client So, my question is, during the resumption Master key is same. but server_random and client_random are changed so key_block is again calculated ? Jan 10 '17 at 16:15
  • @DevangKubavat: I have never implemented this, so my understanding is only from reading the documentation. But if master_secret is unchanged, then don't server_random and client_random HAVE to be the unchanged as well? (Since they are part of the building blocks for "master_secret".) Jan 11 '17 at 9:23
  • Okay... @StackzOfZtuff. It's part of master_secret. but my doubt is that i read from OpenSSL wiki: session resumption is useful to re-issue the session ticket so i think like that... may be master_secret will be same but key_block again re-calculated based on new client_random and server_random. Jan 11 '17 at 9:29
  • @DevangKubavat: but master_secret is the result of cryptographic mixing of the server_random and client_random and more stuff. If even one bit of the input to that cryptographic mixing changes, then the output changes completely. Jan 11 '17 at 11:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.