Una chiave di sessione è una chiave simmetrica monouso utilizzata per crittografare tutti i messaggi in una sessione di comunicazione. Un termine strettamente correlato è chiave di cifratura del traffico o TEK, che si riferisce a qualsiasi chiave simmetrica utilizzata per cifrare i messaggi di traffico. Tipicamente i TEK vengono cambiati frequentemente, in alcuni sistemi quotidianamente e in altri per ogni messaggio.
Le chiavi di sessione introducono complessità in un sistema di crittografia. Tuttavia, aiutano anche a risolvere alcuni problemi reali, ed è per questo che vengono utilizzati. Ci sono due ragioni principali per utilizzare le chiavi di sessione:
- In primo luogo, diversi attacchi criptanalitici sono resi più facili poiché è disponibile un maggior numero di cifrature criptate con una chiave specifica. Limitando il numero di messaggi cifrati con una sola chiave, questi attacchi sono resi più difficili.
- In secondo luogo, molti algoritmi di crittografia altrimenti buoni richiedono che le chiavi siano distribuite in modo sicuro prima che la crittografia possa essere utilizzata. Tutti gli algoritmi a chiave segreta simmetrica hanno questa proprietà indesiderabile. Ci sono altri algoritmi che non richiedono la distribuzione sicura delle chiavi segrete, ma sono troppo lenti per essere pratici per la cifratura di messaggi lunghi (vedi Crittografia a chiave pubblica). Utilizzando uno di questi algoritmi "asimmetrici" per distribuire una chiave segreta criptata per un altro algoritmo a chiave simmetrica più veloce, è possibile migliorare notevolmente le prestazioni complessive.
Come tutte le chiavi crittografiche, le chiavi di sessione devono essere scelte in modo che siano imprevedibili da un aggressore. Nel caso usuale, ciò significa che devono essere scelte in modo casuale. La mancata scelta corretta delle chiavi di sessione (o di qualsiasi chiave) è uno dei principali svantaggi di qualsiasi sistema di crittografia.