| 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) |