Il motivo principale è che non è necessario: non c'è un vero motivo per cui vorrebbe creare una nuova chiave per ogni messaggio, perché l'utilizzo di una chiave per tutti i messaggi è perfettamente sicuro con i moderni algoritmi di crittografia . Sebbene non sia possibile utilizzare una sola chiave per troppi dati, con AES "troppo" è 256 exabyte (ovvero circa 256 milioni di terabyte), che è di gran lunga più di quanto effettivamente si utilizza una sessione chiave per. L'uso di una chiave per un'intera sessione non rende più facilmente più facile per un utente malintenzionato recuperare la chiave, per sessioni realistiche.
Non sono sicuro di cosa intendi con "derivare una chiave usando Diffie-Hellman" o "crittografato usando RSA", ma presumo tu voglia dire rinegoziare la chiave di ogni messaggio (cioè entrambe le parti comunicano negoziare una nuova chiave, "derivare" è una strana parola da usare, perché generalmente si riferisce a qualcosa calcolato su un lato senza dover parlare all'altro capo). Rinegoziare una chiave per ogni messaggio non è fatta perché è una perdita di tempo. La negoziazione delle chiavi richiede alcuni messaggi avanti e indietro, ed è un po 'lenta (coinvolge almeno un algoritmo asimmetrico, e un tratto comune degli algoritmi asimmetrici è che sono lenti).
Per i tasti che derivano , mentre è possibile, non ce n'è davvero bisogno e di nuovo aggiunge complessità. Non è possibile ricavare la chiave per un messaggio dal testo in chiaro di quel messaggio per ovvi motivi (l'altra estremità non conosce quel testo in chiaro finché non la decodifica con la chiave). È possibile derivare una chiave univoca per ogni messaggio da una chiave principale (questo è comune nei sistemi di elaborazione dei pagamenti), ma non è necessaria nelle comunicazioni tipiche e non è necessaria per rendere più difficile il ripristino di una chiave di transazione (è stata eseguita in questo modo che il ripristino di una chiave di transazione non consente di decrittografare tutte le transazioni).