Sleutelscheiding
Het principe dat elke sleutel precies één doel dient en sleutels voor verschillende doelen apart worden afgeleid.
Eén AES-sleutel gebruiken voor zowel CBC-versleuteling als CBC-MAC lijkt zuinig en onschuldig, maar het laat een aanvaller berichten vervalsen: de MAC is simpelweg het laatste cijfertekstblok. Vergelijkbare problemen ontstaan wanneer een RSA-sleutel zowel ondertekent als ontsleutelt, of wanneer twee protocollen een hoofdsleutel delen en het ene protocol een orakel tegen het andere wordt.
De oplossing is goedkoop. Bewaar één hoofdgeheim en leid er met een KDF subsleutels van af, elk met een eigen label — "client write key", "server write key", "mac". TLS 1.3 en Signal doen dit overal. De kosten zijn een paar extra hashaanroepen; de winst is dat een fout in één hoek van het systeem ook in die hoek blijft.