Applied Cryptography
Which of the following is a correct caution about 0-RTT in TLS 1.3 (sending "early data" together with the first message, using a pre-shared key obtained in an earlier connection)?
- AEarly data are sent unencrypted in plaintext, so they must not contain passwords, credit card numbers and the like
- BReplay attacks that resend recorded early data cannot be fully prevented, so it is used only for requests that are harmless if repeated
- CEarly data have stronger forward secrecy than normal data, so they should be used especially for important requests such as money transfers
Show answer and explanation
Answer: B. Replay attacks that resend recorded early data cannot be fully prevented, so it is used only for requests that are harmless if repeated
With 0-RTT, the client derives a key for early data from the pre-shared key received in an earlier connection and sends encrypted data together with its first message, saving one round trip of waiting. However, the server's new random value has not yet been used at this point, so if an attacker sends recorded early data again, the server may process the same request again (a replay attack). Also, early data are protected only by the pre-shared key, so there is no forward secrecy if that key leaks. Therefore 0-RTT is in principle limited to requests whose result does not change however many times they are executed, such as fetching a page, and is not used for money transfers or orders.
- A. Early data are also encrypted with a key derived from the pre-shared key. The problem is not encryption but being resent.
- B. Correct. Because protection against replay is insufficient, the requests it may be used for are restricted.
- C. Early data are protected only by the pre-shared key and have weaker forward secrecy than normal data.