3.3.1. Mô hình cài đặt.
Hình 3.4: Mô hình cài đặt hệ thống dùng OpenSwan
Mô hình cài đặt gồm các thành phần:
- 2 Router R1 và R2 có chức năng định tuyến giữa 2 máy OpenSwan1 và OpenSwan2. - OpenSwan1, OpenSwan2 là các gateway mã hóa. Cả 2 máy đều có 2 giao diện mạng; một giao diện nối với mạng trong (192.168.34.0/24 đối với OpenSwan1, 192.168.56.0/24 đối với OpenSwan2), một giao diện nối với mạng ngoài (172.16.11.0/24 đối với OpenSwan1, 172.16.22.0/24 đối với OpenSwan2).
- Client1, Clien2 là 2 máy tính đã cài đặt sẵn các ứng dụng người dùng.
3.3.2. Cài đặt OpenSwan.
Giải nén file openswan-2.6.32.tar.gz bằng câu lệnh
tar –xzf openswan-2.6.32.tar.gz
Tiếp đó vào thư mục openswan-2.6.32 để cài đặt.
[root@dungnv1 openswan-2.6.32]# make programs install
[root@dungnv1openswan-2.6.32]#make KERNELSRC=/usr/src/linux-2.6.36 module minstall programs install
Khởi động dịch vụ IPSEC và kiểm tra kết quả cài đặt OpenSwan:
Hình 3.5: Kết quả cài đặt OpenSwan
Như vậy quá trình cài đặt OpenSwan đã thành công.
3.3.3. Cấu hình OpenSwan.
a). Trên cả 2 máy OpenSwan1 và OpenSwan2 cùng bật “net.ipv4.ip_forward = 1” trong file “/etc/sysctl.conf”:
# Kernel sysctl configuration file for Red Hat Linux
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and # sysctl.conf(5) for more details.
# Controls IP packet forwarding net.ipv4.ip_forward = 1
b). Tạo file /etc/ipsec.secrets: file này chứa tham số bí mật RSA sử dụng để xác thực máy OpenSwan ở bên kia.
Trên máy OpenSwan1 thực hiện lệnh:
[root@dungnv1 ~]#ipsec newhostkey --output /etc/ipsec.secrets
Trên máy OpenSwan2 thực hiện lệnh:
[root@dungnv2 ~]#ipsec newhostkey --output /etc/ipsec.secrets
c). Lấy khóa xác thực bên trái và bên phải: Trên máy OpenSwan1 thực hiện lệnh:
[root@dungnv1 ~]# ipsec showhostkey --left
Trên máy OpenSwan2 thực hiện lệnh:
[root@dungnv2 ~]# ipsec showhostkey --right
Kết quả thu được như sau:
Hình 3.7: Khóa xác thực của máy OpenSwan2
d). Cấu hình file ipsec.conf: Đây là file cấu hình của Ipsec mô tả các thông tin điều khiển và cấu hình hệ thống.
Trong mô hình cài đặt hệ thống ở trên sự kết nối giữa 2 nút trong mạng liên lạc có thể là giữa Gateway với Gateway, Gateway với Subnet, Subnet với Gateway hay Subnet với Subnet. Để tạo một kết nối tunnel giữa 2 nút trong mạng liên lạc ta cần thêm nội dung có dạng như sau vào file /etc/ipsec.conf.
Dòng đầu tiên chứa từ khóa conn và tên kết nối: conn <tên kết nối> trong đó <tên kết nối> mô tả đặc trưng của kết nối. Ta quy ước nút viết trước trong <tên kết nối> sẽ đại diện cho phía trái (left) của kết nối, nút viết sau trong <tên kết nối> sẽ đại diện cho phía phải (right) của kết nối.
Ví dụ: conn gateway-to-net mô tả kết nối giữa gateway(bên trái) với mạng con bên phải. Các dòng tiếp theo có dạng <tham số>=<giá trị>. Trong đó các giá trị sẽ đi kèm theo các tham số như:
• Trường hợp 1: Nếu phía trái của kết nối là một mạng con (subnet) thì cần hai tham số cho nút trái này là:
+ left=<địa chỉ IP của gateway trái>
+ leftsubnet=<địa chỉ IP mạng con của gateway left>/24
Tham số “/24” chỉ ra rằng hệ thống dùng 24 bits để đánh địa chỉ mạng.
• Trường hợp 2: Nếu phía trái của kết nối là một gateway thì chỉ cần một tham số cho nút trái này là:
+ left=<địa chỉ IP của gateway left>
• Trường hợp 3: Nếu phía phải của kết nối là một mạng con (subnet) thì cần hai tham số cho nút phải là:
+ righ=<địa chỉ IP của gateway phải>
+ rightsubnet=<địa chỉ IP mạng con của gateway right>/24
• Trường hợp 4: Nếu phía phải của kết nối là một gateway thì chỉ cần một tham số cho nút phải là:
+ right=<địa chỉ IP của gateway phải> Các tham số chung cho kết nối đó là:
+ auto= + leftrsasigkey + rightrsasigkey + leftnexthop + rightnexthop
Giá trị của tham số auto có thể là start (gateway sẽ chủ động thiết lập kết nối với gateway còn lại) hoặc add (gateway sẽ không chủ động thiết lập kết nối với gateway còn lại).
Giá trị của tham số leftrsasigkey được lấy từ phần khóa công khai trong file IPSec.secrets tương ứng cho gateway trái.
Giá trị của tham số rightsasigkey được lấy từ phần khóa công khai trong file IPSec.secrets tương ứng cho gateway phải.
Giá trị của tham số leftnexthop là địa chỉ IP của router tiếp theo của thiết bị VPN bên trái khi nó muốn kết nối đến thiết bị VPN bên phải. Ta nên sử dụng giá trị được tự động tạo ra là
“%defaultroute”, nó sẽ hợp lệ trong hầu hết các trường hợp.
Giá trị của tham số rightnexthop là địa chỉ IP của router tiếp theo của thiết bị VPN bên phải khi nó muốn kết nối đến thiết bị VPN bên trái. Ta nên sử dụng giá trị được tự động tạo ra là
“%defaultroute”, nó sẽ hợp lệ trong hầu hết các trường hợp.
Như vậy nội dung đầy đủ của file ipsec.conf để mô tả 4 kiểu kết nối giữa 2 nút trong mạng liên lạc là (nội dung file ipsec.conf ở trên 2 máy OpenSwan1 và OpenSwan2 là giống nhau):
# /etc/ipsec.conf - Openswan IPsec configuration file
# This file: /usr/local/share/doc/openswan/ipsec.conf-sample ## Manual: ipsec.conf.5
version2.0 # conforms to second version of ipsec.conf specification # basic configuration
config setup
# Do not set debug options to debug configuration issues!
# plutodebug / klipsdebug = "all", "none" or a combation from below: # "raw crypt parsing emitting control klips pfkey natt x509 dpd private" # eg:
# plutodebug="control parsing" #
# enable to get logs per-peer # plutoopts="--perpeerlog" #
# Again: only enable plutodebug or klipsdebug when asked by a developer #
# NAT-TRAVERSAL support, see README.NAT-Traversal nat_traversal=yes
# exclude networks used on server side by adding %v4:!a.b.c.0/24 virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 # OE is now off by default. Uncomment and change to on, to enable. oe=off
# which IPsec stack to use. auto will try netkey, then klips then mast protostack=netkey
# Add connections here conn net-to-net left=172.16.11.2 leftsubnet=192.168.34.0/24 leftrsasigkey=0sAQOFN1eIlv49lSvGR/bpaLVTJNWm8Qe65vrrXlxYLcS9mneeJT2TGymvtHBZW KpzRTkIzY/yr7osN4Ddjdra35Du7cqogGOBjr6eqhGKCtYRfbxHRwTVqB5FhH2hhapTdyadZZNv UZWNsZVqKUVn4MlSm+x6HbJdC9I3PLju4hHI4JpEfLGEVGuJi5Pmg/Q5okyqKhbhK7OTpJw gahdI2s4RCiuF7H+8idv9KBfJt4CRGBy7j9JceGkAiujiSYu9xhHhwdta/s6iz0tv9yioQZXVrn1n08g 4QtFDskIM+kR4WTDJsHdJ4fvp14coNwIdEbdqk6NE3dO6mHnamsPlebMvmRRJ2Lu8TTvJjtnY 7z/3ng9d leftnexthop=%defaultroute right=172.16.22.2 rightsubnet=192.168.56.0/24 rightrsasigkey=0sAQOgp1JfXH5MUbALfc4ROiSRUF3WTr5peB28/Bjfg2yUEdhKmTZCAmIrQ2 Czt5czgUfg3zzoTYqokpP46cY5YNsb3NjCTKyB/MAcuOQJq1cLNa6LhsadV5J4DNITg3FiXngzK cdSDYw/5AJxPEqF97hCBJHluKW1y8F/OAMT7Now1s1Lq2F+LDUiCng7UNx1h3nbRNvTSn+ HeRqzY/p/f/72XrggT0JoindveYeNomHt26j/UlB6Si+2K1bm/aCgdDcVNmez2ZD6FGhfW2ILQ1X Zy8EG8ZUNJTiqtiKdTJwjQ0R5ioCuuBPxa7Ujcpc+XbCNAYoP0yNOSn2MAfmiskabad1fvMK+ 0fS2JPW/QrEDVMth rightnexthop=%defaultroute auto=add conn net-to-gateway
leftsubnet=192.168.34.0/24 leftrsasigkey=0sAQOFN1eIlv49lSvGR/bpaLVTJNWm8Qe65vrrXlxYLcS9mneeJT2TGymvtHBZW KpzRTkIzY/yr7osN4Ddjdra35Du7cqogGOBjr6eqhGKCtYRfbxHRwTVqB5FhH2hhapTdyadZZNv UZWNsZVqKUVn4MlSm+x6HbJdC9I3PLju4hHI4JpEfLGEVGuJi5Pmg/Q5okyqKhbhK7OTpJw gahdI2s4RCiuF7H+8idv9KBfJt4CRGBy7j9JceGkAiujiSYu9xhHhwdta/s6iz0tv9yioQZXVrn1n08g 4QtFDskIM+kR4WTDJsHdJ4fvp14coNwIdEbdqk6NE3dO6mHnamsPlebMvmRRJ2Lu8TTvJjtnY 7z/3ng9d leftnexthop=%defaultroute right=172.16.22.2 rightrsasigkey=0sAQOgp1JfXH5MUbALfc4ROiSRUF3WTr5peB28/Bjfg2yUEdhKmTZCAmIrQ2 Czt5czgUfg3zzoTYqokpP46cY5YNsb3NjCTKyB/MAcuOQJq1cLNa6LhsadV5J4DNITg3FiXngzK cdSDYw/5AJxPEqF97hCBJHluKW1y8F/OAMT7Now1s1Lq2F+LDUiCng7UNx1h3nbRNvTSn+ HeRqzY/p/f/72XrggT0JoindveYeNomHt26j/UlB6Si+2K1bm/aCgdDcVNmez2ZD6FGhfW2ILQ1X Zy8EG8ZUNJTiqtiKdTJwjQ0R5ioCuuBPxa7Ujcpc+XbCNAYoP0yNOSn2MAfmiskabad1fvMK+ 0fS2JPW/QrEDVMth rightnexthop=%defaultroute auto=add conn gateway-to-net left=172.16.11.2 leftrsasigkey=0sAQOFN1eIlv49lSvGR/bpaLVTJNWm8Qe65vrrXlxYLcS9mneeJT2TGymvtHBZW KpzRTkIzY/yr7osN4Ddjdra35Du7cqogGOBjr6eqhGKCtYRfbxHRwTVqB5FhH2hhapTdyadZZNv UZWNsZVqKUVn4MlSm+x6HbJdC9I3PLju4hHI4JpEfLGEVGuJi5Pmg/Q5okyqKhbhK7OTpJw gahdI2s4RCiuF7H+8idv9KBfJt4CRGBy7j9JceGkAiujiSYu9xhHhwdta/s6iz0tv9yioQZXVrn1n08g 4QtFDskIM+kR4WTDJsHdJ4fvp14coNwIdEbdqk6NE3dO6mHnamsPlebMvmRRJ2Lu8TTvJjtnY 7z/3ng9d leftnexthop=%defaultroute right=172.16.22.2 rightsubnet=192.168.56.0/24 rightrsasigkey=0sAQOgp1JfXH5MUbALfc4ROiSRUF3WTr5peB28/Bjfg2yUEdhKmTZCAmIrQ2
Czt5czgUfg3zzoTYqokpP46cY5YNsb3NjCTKyB/MAcuOQJq1cLNa6LhsadV5J4DNITg3FiXngzK cdSDYw/5AJxPEqF97hCBJHluKW1y8F/OAMT7Now1s1Lq2F+LDUiCng7UNx1h3nbRNvTSn+ HeRqzY/p/f/72XrggT0JoindveYeNomHt26j/UlB6Si+2K1bm/aCgdDcVNmez2ZD6FGhfW2ILQ1X Zy8EG8ZUNJTiqtiKdTJwjQ0R5ioCuuBPxa7Ujcpc+XbCNAYoP0yNOSn2MAfmiskabad1fvMK+ 0fS2JPW/QrEDVMth rightnexthop=%defaultroute auto=add conn gateway-to-gateway left=172.16.11.2 leftrsasigkey=0sAQOFN1eIlv49lSvGR/bpaLVTJNWm8Qe65vrrXlxYLcS9mneeJT2TGymvtHBZW KpzRTkIzY/yr7osN4Ddjdra35Du7cqogGOBjr6eqhGKCtYRfbxHRwTVqB5FhH2hhapTdyadZZNv UZWNsZVqKUVn4MlSm+x6HbJdC9I3PLju4hHI4JpEfLGEVGuJi5Pmg/Q5okyqKhbhK7OTpJw gahdI2s4RCiuF7H+8idv9KBfJt4CRGBy7j9JceGkAiujiSYu9xhHhwdta/s6iz0tv9yioQZXVrn1n08g 4QtFDskIM+kR4WTDJsHdJ4fvp14coNwIdEbdqk6NE3dO6mHnamsPlebMvmRRJ2Lu8TTvJjtnY 7z/3ng9d leftnexthop=%defaultroute right=172.16.22.2 rightrsasigkey=0sAQOgp1JfXH5MUbALfc4ROiSRUF3WTr5peB28/Bjfg2yUEdhKmTZCAmIrQ2 Czt5czgUfg3zzoTYqokpP46cY5YNsb3NjCTKyB/MAcuOQJq1cLNa6LhsadV5J4DNITg3FiXngzK cdSDYw/5AJxPEqF97hCBJHluKW1y8F/OAMT7Now1s1Lq2F+LDUiCng7UNx1h3nbRNvTSn+ HeRqzY/p/f/72XrggT0JoindveYeNomHt26j/UlB6Si+2K1bm/aCgdDcVNmez2ZD6FGhfW2ILQ1X Zy8EG8ZUNJTiqtiKdTJwjQ0R5ioCuuBPxa7Ujcpc+XbCNAYoP0yNOSn2MAfmiskabad1fvMK+ 0fS2JPW/QrEDVMth rightnexthop=%defaultroute auto=add
3.3.4. Cấu hình Router định tuyến giữa 2 máy OpenSwan.
a). Đặt địa chỉ IP cho cổng serial ở trên 2 router: Trên 2 router lần lượt cấu hình các lệnh sau:
R1>enable
R1(config-if)#ip address 10.0.0.1 255.255.255.0 R1(config-if)#clock rate 64000
R1(config-if)#no shutdown R1(config-if)#end
Khi cấu hình xong sẽ nhận được thông báo:
*Mar 1 00:01:43.847: %LINK-3-UPDOWN: Interface Serial0/0, changed state to up
*Mar 1 00:01:44.847: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up
b). Đặt địa chỉ IP cho cổng fastethernet: Cổng fastethernet trên Router1 sẽ nối với máy OpenSwan1, cổng fastethernet trên Router2 sẽ nối với máy OpenSwan2.
Trên Router1 cấu hình lần lượt các lệnh sau:
R1#configure terminal
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip address 172.16.11.1 255.255.255.0 R1(config-if)#no shutdown
R1(config-if)#end
Trên Router2 cấu hình lần lượt các lệnh sau:
R2#configure terminal
R2(config)#interface fastEthernet 0/0
R2(config-if)#ip address 172.16.22.1 255.255.255.0 R2(config-if)#no shutdown
R2(config-if)#end
Khi cấu hình xong các lệnh trên sẽ nhận được thông báo:
*Mar 1 00:03:20.595: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar 1 00:03:21.595: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
Trên Router1: R1#configure terminal R1(config)#router ospf 1 R1(config-router)#network 10.0.0.0 0.0.0.255 area 0 R1(config-router)#network 172.16.11.0 0.0.0.255 area 1 R1(config-router)#end
Khi cấu hình thành công sẽ nhận được thông báo:
*Mar 1 00:04:21.143: %OSPF-5-ADJCHG: Process 1, Nbr 172.16.22.1 on Serial0/0 from LOADING to FULL, Loading Done
Trên Router2: R2#configure terminal R2(config)#router ospf 1 R2(config-router)#network 10.0.0.0 0.0.0.255 area 0 R2(config-router)#network 172.16.22.0 0.0.0.255 area 1 R2(config-router)#end
Khi cấu hình thành công sẽ nhận được thông báo:
*Mar 1 00:04:20.399: %OSPF-5-ADJCHG: Process 1, Nbr 172.16.11.1 on Serial0/0 from LOADING to FULL, Loading Done
Để kiểm tra quá trình định tuyến, thực hiện lệnh ping từ máy OpenSwan1 sang máy OpenSwan2 và ngược lại. Kết quả thu được như sau:
Hình 3.8: Kết nối thành công 2 máy OpenSwan1 và OpenSwan2
Như vậy quá trình cấu hình Router định tuyến giữa 2 máy OpenSwan đã thành công.
3.4. SỬ DỤNG OPENSWAN VÀ PHÂN TÍCH QUÁ TRÌNH HOẠT ĐỘNG CỦA IKE.3.4.1. Sử dụng OpenSwan. 3.4.1. Sử dụng OpenSwan.
Trên cả hai máy OpenSwan1 và OpenSwan2 sử dụng lệnh:
service ipsec start
Khởi động kết nối giữa 2 nút mạng bất kỳ trong mạng (ở đây chọn là net-to-net) bằng câu lệnh:
ipsec auto --up net-to-net
Hình 3.10: Khởi động Ipsec trên máy OpenSwan2
Để kiểm tra quá trình hoạt động thực hiện lệnh ping từ máy Client1 (địa chỉ IP là 192.168.34.4) sang máy Client2 (địa chỉ IP là 192.168.56.6).
Hình 3.11: 2 máy Client không thể kết nối khi Ipsec chưa hoạt động
Để kiểm tra độ bảo mật, ta thực hiện truyền 1 tệp có nội dung “aaaaaaa” giữa 2 máy OpenSwan1 và OpenSwan2. Khi Ipsec chưa hoạt động, trên chương trình bắt gói tin có thể hoàn toàn đọc được nội dung của tập vừa truyền:
Hình 3.13: Gói tin thu được khi Ipsec chưa hoạt động
Khi Ipsec hoạt động, nội dung của tệp sẽ được mã hóa, vì vậy trên chương trình bắt gói tin sẽ không đọc được nội dung.
Hình 3.14: Gói tin thu được khi Ipsec hoạt động 3.4.2. Phân tích quá trình hoạt động của IKE.
Để phân tích quá trình hoạt động của IKE, sử dụng chương trình bắt gói tin ngay từ khi 2 máy OpenSwan hoạt động. Kết quả thu được như sau:
Hình 3.15: Các gói tin thu được khi 2 máy OpenSwan hoạt động
Ở đây bắt được 9 bản tin (từ số 136 đến số 144) của giao thức ISAKMP. Trong đó có 6 bản tin (từ số 136 đến số 141) là thuộc pha I của IKE, 3 bản tin còn lại thuộc pha II. Trong pha I của IKE sử dụng phương pháp xác thực bằng khóa chia sẻ trước. Để thấy rõ hơn sự hoạt động của IKE, ta sẽ phân tích chi tiết từng bản tin cụ thể.
Theo lý thuyết ở bước thứ nhất, bên khởi tạo sẽ gửi bên đáp ứng một thông báo gồm một ISAKMP header và một SA payload. Trong ISAKMP header chứa cookie của bên khởi tạo, kiểu trao đổi. Trong SA payload chứa một số tình huống, đề nghị. Trong mỗi đề nghị (proposal) lại chứa một transform dùng để thỏa thuận về thuật toán mã hóa, hàm HASH, thời gian tồn tại liên kết an toàn, nhóm để thực hiện trao đổi Diffie - Hellman. Điều này được thể hiện rõ trong bản tin số 136 mà bên máy OpenSwan1 (địa chỉ IP 172.16.11.2) gửi máy OpenSwan2 (địa chỉ IP 172.16.22.2) (phần in đậm).
Frame 136: 624 bytes on wire (4992 bits), 624 bytes captured (4992 bits) Cisco HDLC
Internet Protocol Version 4, Src: 172.16.11.2 (172.16.11.2), Dst: 172.16.22.2 (172.16.22.2) User Datagram Protocol, Src Port: isakmp (500), Dst Port: isakmp (500)
Internet Security Association and Key Management Protocol (ISAKMP header) Initiator cookie: 6a9f7e536f0b6575 (cookie bên khởi tạo)
Responder cookie: 0000000000000000 Next payload: Security Association (1) Version: 1.0
Exchange type: Identity Protection (Main Mode) (2) (kiểu trao đổi)
Flags: 0x00
Message ID: 0x00000000 Length: 592
Type Payload: Security Association (1) (SA payload)
Next payload: Vendor ID (13) Payload length: 428
Situation: 00000001
Type Payload: Proposal (2) # 0
Next payload: NONE / No Next Payload (0) Payload length: 416
Proposal number: 0 Protocol ID: ISAKMP (1) SPI Size: 0
Proposal transforms: 12
Type Payload: Transform (3) # 0 Next payload: Transform (3) Payload length: 36
Transform number: 0
Transform ID: KEY_IKE (1)
Transform IKE Attribute Type (t=11,l=2) Life-Type : Seconds Transform IKE Attribute Type (t=12,l=2) Life-Duration : 3600
Transform IKE Attribute Type (t=1,l=2) Encryption-Algorithm : AES-CBC Transform IKE Attribute Type (t=2,l=2) Hash-Algorithm : SHA
Transform IKE Attribute Type (t=3,l=2) Authentication-Method : RSA-SIG Transform IKE Attribute Type (t=4,l=2) Group-Description : 2048 bit MODP group
Transform IKE Attribute Type (t=14,l=2) Key-Length : 128 Type Payload: Transform (3) # 1
Next payload: Transform (3) Payload length: 36
Transform number: 1
Transform IKE Attribute Type (t=12,l=2) Life-Duration : 3600
Transform IKE Attribute Type (t=1,l=2) Encryption-Algorithm : AES-CBC Transform IKE Attribute Type (t=2,l=2) Hash-Algorithm : MD5
Transform IKE Attribute Type (t=3,l=2) Authentication-Method : RSA-SIG Transform IKE Attribute Type (t=4,l=2) Group-Description : 2048 bit MODP group
Transform IKE Attribute Type (t=14,l=2) Key-Length : 128 Type Payload: Transform (3) # 2
Next payload: Transform (3) Payload length: 32
Transform number: 2
Transform ID: KEY_IKE (1)
Transform IKE Attribute Type (t=11,l=2) Life-Type : Seconds Transform IKE Attribute Type (t=12,l=2) Life-Duration : 3600
Transform IKE Attribute Type (t=1,l=2) Encryption-Algorithm : 3DES-CBC Transform IKE Attribute Type (t=2,l=2) Hash-Algorithm : SHA
Transform IKE Attribute Type (t=3,l=2) Authentication-Method : RSA-SIG Transform IKE Attribute Type (t=4,l=2) Group-Description:2048 bit MODP group
Type Payload: Transform (3) # 3 Type Payload: Transform (3) # 4 Type Payload: Transform (3) # 5 Type Payload: Transform (3) # 6 Type Payload: Transform (3) # 7 Type Payload: Transform (3) # 8 Type Payload: Transform (3) # 9 Type Payload: Transform (3) # 10
Type Payload: Transform (3) # 11
Khi nhận được thông báo của bên khởi tạo, bên đáp ứng gửi lại bên khởi tạo một thông báo gồm một ISAKMP header, SA payload. Trong ISAKMP header chứa cookie của cả bên khởi tạo và bên đáp ứng; trong SA payload chứa các tình huống, đề nghị, và một transform đã được chấp nhận. Điều này được thể hiện rõ trong bản tin số 137:
Frame 137: 172 bytes on wire (1376 bits), 172 bytes captured (1376 bits) Cisco HDLC
Internet Protocol Version 4, Src: 172.16.22.2 (172.16.22.2), Dst: 172.16.11.2 (172.16.11.2) User Datagram Protocol, Src Port: isakmp (500), Dst Port: isakmp (500)
Internet Security Association and Key Management Protocol (ISAKMP header)
Initiator cookie: 6a9f7e536f0b6575 (cookie của bên khởi tạo) Responder cookie: 9559042a29f6d239 (cookie của bên đáp ứng)
Next payload: Security Association (1) Version: 1.0
Exchange type: Identity Protection (Main Mode) (2) (kiểu trao đổi)
Flags: 0x00
Message ID: 0x00000000 Length: 140
Type Payload: Security Association (1) (SA payload)
Next payload: Vendor ID (13) Payload length: 56
Domain of interpretation: IPSEC (1) Situation: 00000001
Type Payload: Proposal (2) # 0
Next payload: NONE / No Next Payload (0) Payload length: 44
Protocol ID: ISAKMP (1) SPI Size: 0
Proposal transforms: 1
Type Payload: Transform (3) # 0
Next payload: NONE / No Next Payload (0) Payload length: 36
Transform number: 0
Transform ID: KEY_IKE (1)
Transform IKE Attribute Type (t=11,l=2) Life-Type : Seconds Transform IKE Attribute Type (t=12,l=2) Life-Duration : 3600
Transform IKE Attribute Type (t=1,l=2) Encryption-Algorithm : AES-CBC Transform IKE Attribute Type (t=2,l=2) Hash-Algorithm : SHA
Transform IKE Attribute Type (t=3,l=2) Authentication-Method : RSA-SIG Transform IKE Attribute Type (t=4,l=2) Group-Description : 2048 bit MODP group
Transform IKE Attribute Type (t=14,l=2) Key-Length : 128 (Transform đã được chấp nhận)
Khi đã thỏa thuận được các thuộc tính cần thiết, bên khởi tạo gửi bên đáp ứng một thông báo gồm một ISAKMP header, một KE payload chứa thông tin trao đổi Diffie – Hellman và một giá trị Nonce của bên khởi tạo. Khi nhận được thông báo trên, bên đáp ứng cũng gửi lại một thông báo gồm các thông tin tương tự cho bên khởi tạo.
Frame 138: 388 bytes on wire (3104 bits), 388 bytes captured (3104 bits) Cisco HDLC
Internet Protocol Version 4, Src: 172.16.11.2 (172.16.11.2), Dst: 172.16.22.2 (172.16.22.2) User Datagram Protocol, Src Port: isakmp (500), Dst Port: isakmp (500)
Internet Security Association and Key Management Protocol (ISAKMP header)
Initiator cookie: 6a9f7e536f0b6575 Responder cookie: 9559042a29f6d239
Next payload: Key Exchange (4) Version: 1.0
Exchange type: Identity Protection (Main Mode) (2) Flags: 0x00
Message ID: 0x00000000 Length: 356
Type Payload: Key Exchange (4) (KE payload)
Next payload: Nonce (10) Payload length: 260
Key Exchange Data: 74e25dc41438b7c3a8f9ee0b2e0a2f228763992b7fb7046d... (Giá trị trao đổi Diffie – Hellman của bên khởi tạo)
Type Payload: Nonce (10) (Nonce payload)
Next payload: NAT-D (RFC 3947) (20) Payload length: 20
Nonce DATA: 21262268ac56f1f1a90af551dfadcdbe (Giá trị nonce của bên khởi tạo)
Frame 139: 388 bytes on wire (3104 bits), 388 bytes captured (3104 bits) Cisco HDLC
Internet Protocol Version 4, Src: 172.16.22.2 (172.16.22.2), Dst: 172.16.11.2 (172.16.11.2) User Datagram Protocol, Src Port: isakmp (500), Dst Port: isakmp (500)
Internet Security Association and Key Management Protocol (ISAKMP header)
Initiator cookie: 6a9f7e536f0b6575 Responder cookie: 9559042a29f6d239 Next payload: Key Exchange (4) Version: 1.0
Exchange type: Identity Protection (Main Mode) (2) Flags: 0x00
Length: 356
Type Payload: Key Exchange (4) (KE payload)
Next payload: Nonce (10) Payload length: 260
Key Exchange Data: a0fd9c24001226a988d75bf5687a56eb3f59c9a298eed713... (Giá trị trao đổi Diffie – Hellman của bên đáp ứng)
Type Payload: Nonce (10) (Nonce payload)
Next payload: NAT-D (RFC 3947) (20) Payload length: 20
Nonce DATA: 3099c336f2d70965b267995f62d42d81 (Giá trị nonce của bên đáp ứng).
Tiếp đó bên khởi tạo tiếp tục gửi bên đáp ứng một thông báo gồm một ISAKMP header, định danh của bên khởi tạo và hàm HASH_I, sau khi nhận được thông báo trên, bên đáp ứng cũng gửi lại một thông báo tương tự cho bên khởi tạo. Cả hai thông báo của bên đáp ứng và bên khởi tạo đều được mã hóa bằng khóa chia sẻ trước. Vì vậy khi phân tích bản tin số 140 và 141 ta chỉ nhận được thông báo dữ liệu đã được mã hóa.
Frame 140: 364 bytes on wire (2912 bits), 364 bytes captured (2912 bits) Cisco HDLC
Internet Protocol Version 4, Src: 172.16.11.2 (172.16.11.2), Dst: 172.16.22.2 (172.16.22.2) User Datagram Protocol, Src Port: isakmp (500), Dst Port: isakmp (500)
Internet Security Association and Key Management Protocol Initiator cookie: 6a9f7e536f0b6575
Responder cookie: 9559042a29f6d239 Next payload: Identification (5)
Version: 1.0
Exchange type: Identity Protection (Main Mode) (2) Flags: 0x01
Length: 332
Encrypted Data (304 bytes)
Frame 141: 364 bytes on wire (2912 bits), 364 bytes captured (2912 bits)