- Bắt đầu phiên giao dịch, SysInt tạo ra số chỉ sử dụng một lần NSuM, và gửi NSuM, SID, VID và "ReqIP" đến IPVend.
- IPVend nhận và xác minh các tham số. Nếu các tham số là phù hợp, IPVend sẽ gửi khóa cơng khai PKV đến SysInt.
- SysInt nhận và gửi PKV cùng với số định danh của IPVend VID đến TAut để xác minh. TAut sẽ kiểm tra, xác minh rồi gửi bản tin thông báo "ConfirmPKV" đến cho SysInt. Nếu bản tin thơng báo "ConfirmPKV" cho kết quả đúng thì SysInt sẽ sử dụng khóa này để mã hóa SKS, và gửi cho IPVend.
- IPVend nhận và gửi SKS mã hóa cùng với số định danh của SysInt SID đến TAut để xác minh.
- TAut xác minh khóa SKS của SysInt và gửi một bản tin thông báo "ConfirmSKS" đến IPVend.
- Nếu bản tin thơng báo "ConfirmSKS" cho kết quả đúng. Có nghĩa là SKS là chính xác của SysInt. IPVend sử dụng khóa riêng SKV để giải mã SKS đã được mã hóa, và sau đó sử dụng khóa SKS này để mã hóa lõi IP rồi gửi cho SysInt.
Tại mỗi phiên giao dịch, cả hai khóa PKV và SKS ln được trao đổi và xác thực qua
TAut. Riêng khóa riêng SKV là khơng trao đổi. Khóa cơng khai PKV khơng cần phải giữ bí mật nên khi trao đổi qua mạng khơng cần thiết phải được mã hóa. Chỉ khóa bí mật SKS cần phải được bảo mật và nó đã được mã hóa bởi khóa PKV trước khi gửi qua Internet. Giao thức trao đổi khóa an tồn được mơ tả chi tiết hơn trong các thuật toán sau.
2.3.1.1. Thuật toán 3 - Thuật toán bên phía nhà thiết kế hệ thống
S1. Generate(NSuM)
S2. M0 = HMAC(“ReqIP”, SID, VID, NSuM)
52 S4. Receive(“ReqSKS”, PKV, M1)
S5. M1‟ = HMAC(“ReqSKS”, PKV, M0) S6. If M1‟ ≠ M1 then goto S1
S7. M2 = HMAC(“VerifyPKV”, SID, VID, TAID, PKV, M1)
S8. Send(“VerifyPKV”, SID, VID, TAID, PKV, M1, M2) S9. Receive(“ConfirmPKV”, M3)
S10. M3‟ = HMAC(“ConfirmPKV”, M2)
S11. If (“ConfirmPKV ” ≠ PKV_OK) or M3‟ ≠ M3 then goto S1 S12. M4 = HMAC(EncryptedSKS, M1)
S13. Send(EncryptedSKS, M4) S14. Receive(EncryptedIP, M7)
2.3.1.2. Thuật tốn 4 – Thuật tốn bên phía nhà cung cấp IP
V1. Receive(“ReqIP”, SID, VID, NSuM, M0) V2. M0‟ = HMAC(“ReqIP”, SID, VID, NSuM)
V3. If M0‟ ≠ M0 then goto V1 V4. M1 = HMAC(“ReqSKS”, PKV, M0) V5. Send(“ReqSKS”, PKV, M1) V6. Receive(EncryptedSKS, M4) V7. M4‟ = HMAC(EncryptedSKS, M1) V8. If M4‟ ≠ M4 then goto V1 V9. M5 = HMAC(“VerifySKS”, EncryptedSKS, M4)
V10. Send(“VerifySKS”, EncryptedSKS, SID, VID, TAID, PKV, M4, M5) V11. Receive(“ConfirmSKS”, M6)
V12. M6‟ = HMAC(“ConfirmSKS”, M5)
V13. If (“ConfirmSKS ” ≠ SKS_OK) or M6‟ ≠ M6 then goto V1 V14. M7 = HMAC(EncryptedIP, M6)
V15. Send(EncryptedIP, M7)
2.3.1.3. Thuật toán 5 – Thuật tốn bên phía trung tâm xác thực
T1. Receive(“VerifyPKV”, SID, VID, TAID, PKV, M1, M2) T2. M2‟ = HMAC(“VerifyPKV”, SID, VID, TAID, PKV, M1) T3. If M2‟ ≠ M2 then goto T1
T4. M3 = HMAC(“ConfirmPKV”, M2)
T5. Send(“ConfirmPKV”, M3)
T6. Receive(“VerifySKS”, EncryptSKS, SID, VID, TAID, PKV, M4, M5) T7. M5‟ = HMAC(“VerifySKS”, EncryptedSKS, M4)
53 T9. M6 = HMAC(“ConfirmSKS”, M5)
T10. Send(“ConfirmSKS”, M6)
2.3.2. Giao thức trao đổi khóa qua khơng qua trung tâm xác thực
Khi các bên có thể tin tưởng lẫn nhau, trao đổi khóa có thể khơng cần phải qua trung tâm xác thực. Tuy nhiên, để phịng ngừa rủi ro, khóa đối xứng theo phiên (sau đây gọi là khóa phiên) được đề xuất sử dụng. Khóa phiên là một khóa đối xứng có thể được sử dụng cho từng trao đổi khác nhau giữa các đối tác. Khóa được tạo ra cho mỗi phiên giao dịch để loại bỏ các yêu cầu về bảo trì và lưu trữ. Mỗi một khố được sử dụng một lần với một bản tin duy nhất.