- 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,
VIDvà "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 "Confirmẽ ể ồ ử ả PKV" đến cho SysInt. N u b n tin thông báo "Confirmế ả PKV" 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 "Confirmủ ử ộ ả SKS" đến IPVend.
- N u b n tin thông báo "Confirmế ả SKS" 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 ử ụ SKSnà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à SKSluôn được trao đổi và xác thực qua
TAut. Riêng khóa riêng SKVlà không trao đổi. Khóa công khai PKVkhô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 SKScần phải được bảo mật và nó đã được mã hóa bởi khóa PKVtrước khi gửi qua Internet. Giao thức trao đổi khóa an toàn được mô tả chi tiết hơn trong các thuật toán sau.
56
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) S3. Send(“ReqIP”, SID, VID, NSuM, M0) S4. Receive(“ReqSKS”, PKV, M1) S5. M1‟ = HMAC(“ReqSKS”, PKV, M0) S6. If M1‟ ≠ M1 then goto 1 S 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 toán 4 – Thuật toá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 toá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
57 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) T8. If M5‟ ≠ M5 then goto T1 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 đố ứng theo phiên (sau đây gọi x 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 khoá được s d ng m t l n v i m t b n ử ụ ộ ầ ớ ộ ả
tin duy nh t. ấ