Il server e il client hanno una chiave pre-condivisa K. Supponendo che quella chiave pre-condivisa sia sicura, quindi nessun altro oltre a server / client può crittografare / decodificare.
Il client invia un N nonce al server, quindi il server manda indietro il messaggio M in forma crittografata AES_CBC_Encrypt (M + N, K, IV) al client. Quindi il cliente può verificare se c'è un attacco di riproduzione che tenta di inviare un messaggio scaduto.
È necessario che il client invii N in forma crittografata AES_CBC_Encrypt (N, K, IV) oppure è sufficiente inviare semplicemente N in chiaro.
(M e N sono array a 16 byte, M + N significa concatenazione di M e N).