Qui sono alcune specifiche se vuoi approfondire ulteriormente, in particolare x3DH .
Fondamentalmente (e questa è una semplificazione), il server memorizza un numero di "prekeys" per ogni dispositivo, che sono le metà pubbliche delle chiavi DH effimere generate da un dispositivo quando si registra e rigenerate come necessario.
Quando Alice avvia una sessione con Bob, recupera una prekey dal server e crea una nuova chiave temporanea da utilizzare con essa. Il messaggio che invia include un identificatore per il quale prekey ha usato e la metà pubblica della sua chiave effimera.
Quando Bob riceve il messaggio, può individuare la metà privata del prekey usato da Alice e usarlo con la chiave pubblica che ha inviato per calcolare il segreto condiviso.
Vale la pena notare che il contratto chiave è necessario non solo per condividere il profilo, ma per inviare un messaggio crittografato. Se due dispositivi non fossero in grado di creare un segreto condiviso in modo asincrono, non sarebbe possibile avviare una sessione a meno che entrambi i dispositivi fossero online o se i messaggi dell'accordo chiave non fossero stati memorizzati dal server fino alla consegna, il che causerebbe comunque ritardi non necessari. I prekeys sono un modo per "precaricare" i messaggi dei contratti chiave.