What are the steps to decrypt a TLS 1.1 record? My question is related to another question in Cryptography about TLS 1.1 and 1.2. I have read both RFC 2246 The TLS Protocol Version 1.0 and RFC 4346 The TLS Protocol Version 1.1. What I know is that one of their differences is TLS 1.0 uses implicit initialization IV (from the key_block) and TLS 1.1 uses explicit IV, which can be generated with either of the three ways specified in Section 6.2.3.2 of RFC 4346. In the same section, it is stated that 


  The decryption operation for all three alternatives is the same.
  The receiver decrypts the entire GenericBlockCipher structure and
  then discards the first cipher block, corresponding to the IV
  component.


The above statement is not clear to me. For example, if I have an encrypted message consisting of blocks [Encrypted Block 1], [Encrypted Block 2], ..., [Encrypted Block n], does that mean that when decrypting, I should discard [Encrypted Block 1] from the other blocks and decrypt [Encrypted Block 2], ..., [Encrypted Block n] using [Encrypted Block 1] as IV? 


Is the above example correct? If not, how can the IV to be used for decryption be determined?
Is the decryption for TLS 1.1 the same as TLS 1.2?
Is the above example correct? If not, how can the IV to be used for decryption be determined?
  


Yes, it is correct. The vector/mask in CBC mode is generally the previous ciphertext block. The algorithms in 2a and 2b simply extends this notion to the IV so that the CBC mode encryption doesn't have to be re-initialized. The outcome of the IV decryption won't have any meaning, it's the ciphertext block itself that is reused.

In dumb implementations of CBC / block ciphers the re-initialization may take time because it may replay the subkey derivation for the cipher. In general though using the first block directly as IV will be more efficient because it skips one block decrypt.


  
  Is the decryption for TLS 1.1 the same as TLS 1.2?
  


Yes, see below:

opaque IV[SecurityParameters.record_iv_length];
          block-ciphered struct {
              opaque content[TLSCompressed.length];


although described somewhat differently the IV length is the same as the size of the block for CBC. It is directly followed by the "opaque" (encrypted) content.