Schlüsseltrennung
Das Prinzip, dass jeder Schlüssel genau einem Zweck dient und Schlüssel für verschiedene Zwecke getrennt abgeleitet werden.
Ein AES-Schlüssel für CBC-Verschlüsselung und CBC-MAC zugleich wirkt sparsam und harmlos, erlaubt einem Angreifer aber, Nachrichten zu fälschen: Der MAC ist schlicht der letzte Chiffrat-Block. Ähnlicher Ärger droht, wenn ein RSA-Schlüssel sowohl signiert als auch entschlüsselt oder wenn zwei Protokolle einen Hauptschlüssel teilen und eines zum Orakel gegen das andere werden kann.
Die Abhilfe ist billig: ein Hauptgeheimnis behalten und Unterschlüssel per KDF ableiten, jede Verwendung mit eigenem Label – "client write key", "server write key", "mac". TLS 1.3 und Signal machen das durchgängig. Der Preis sind ein paar zusätzliche Hash-Aufrufe; der Gewinn ist, dass ein Fehler in einer Ecke des Systems auch dort bleibt.