Alice:
Vybere náhodné 128 bitové číslo r:
Vybere náhodné 320 bitové číslo x:
Vypočítá AES_r(g^x) (schová si g^x):
Vypočítá SHA(g^x):
Bob:
Vybere náhodné 320 bitové číslo y:
Pošle Alici g^y:
Alice:
Spočítá s=(g^y)^x:
Pošle Bobovi r:
Bob:
Odšifruje g^x za pomocí r:
Zkontroluje, zda g^x souhlasí s přijatým SHA(g^x)
Spočítá s=(g^x)^y:
Alice:
Spočítá MAC klíče
Pro SHA-256-HMAC
Pro AES
Určí keyID_A pro g^x
Spočítá M_A=MAC_{a_1}(g^x,g^y,v_a,keyid_A)
Spočítá X_A=v_A,keyid_A,sign_{s_A}(M_A)
Pošle Bobovi AES_{a_3}(X_A),MAC_{a_2}(AES_{a_3}(X_A))
Bob:
Spočítá MAC klíče
Pro SHA-256-HMAC
Pro AES
Použije a_2 k ověření MAC_{a_2}(AES_{a_3}(X_A))
Použije a_3 k dešifrování AES_{a_3}(X_A) a dostane tak X_A
Spočítá M_A=MAC_{a_1}(g^x,g^y,v_a,keyid_A)
A použije v_A k ověření sign_{s_A}(M_A)
Určí keyid_B --sériové číslo pro g^y
Spočítá M_B=MAC_{b_1}(g^y,g^x,v_B,keyid_B)
Spočítá X_B=v_B,keyid_B,sign_{s_B}(M_B)
Pošle Alici AES_{b_3}(X_B),MAC_{b_2}(AES_{b_3}(X_B))
Alice:
Použije b_2 k ověření MAC_{b_2}(AES_{b_3}(X_B))
Použije b_3 k dešifrování AES_{b_3}(X_B) a dostane tak X_B
Spočítá M_B=MAC_{b_1}(g^y,g^x,v_B,keyid_B)
Použije v_B k ověření sign_{s_B}(M_B)


Alice:
Přijatá zpráva:
Tajné DH x:
Nový přijatý DH (g^y):
Ciphertext:
AES IV a Salt:
MAC:
Starý alicin MAC klíč:
Nový alicin MAC klíč:
Starý bobův MAC klíč:
Bob:
Přijatá zpráva:
Tajné DH y:
Nový přijatý DH (g^x):
Ciphertext:
AES IV a Salt:
MAC:
Starý alicin MAC klíč:
Starý bobův MAC klíč:
Nový bobův MAC klíč: