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 Answer 1

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, 2017 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, 2017 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, 2017 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, 2017 at 11:10

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .