RFC 8448, "Example Handshake Traces for TLS 1.3", January 2019Source of RFC: tls (sec)
Errata ID: 5645
Reported By: Anthony Mai
Date Reported: 2019-02-28
Section 2 says:
Ephemeral private keys are shown as they are generated in the traces.
It should say:
Ephemeral private keys are shown as they are generated in the traces. Note that X25519 private keys are trimmed in accordance to [RFC 7748] Section 5, before use. This is done by clearing bit 0 to 2 of the first byte and bit 7 of the last byte. And then set bit 6 of the last byte.
On page 3,5,16,20,29,43,44,55,57, there are ten X25519 ephemeral private
keys listed. None of these private key value, when used directly in X25519
calculation, will yield the associated public key listed. These private key
values are not the actual values used. Instead up to 5 bits are modified as
recommended by RFC 7748 section 5. Some implementations may choose NOT to
do such trimming, and it does not affect the connectivity, as the private
keys are never sent over the wire and does not affect network behavior.
Not clarifying how the X25519 private keys were modified before using could
cause serious confusion. I personally struggled for a day before figuring
out this little obscure detail.