19120173 - Đinh Minh Bảo
19120283 - Quách Bình Long
19120159 - Trần Huy Vũ
19120336 - Đinh Trọng Quân
**I. Giới thiệu về IPSec**
IPSec là 1 bộ giao thức mạng, có khả năng chứng thực và mã hóa các gói tin để cung cấp một kênh truyền thông đáng tin cậy giữa 2 máy tính khác nhau. IPSec gồm nhiều giao thức ở bên trong, chứ bản thân nó không phải là 1 giao thức. IPSec cung cấp các dịch vụ bảo mật cho các gói tin IP tại tầng mạng. Những dịch vụ này bao gồm: điều khiển truy cập (access-control), toàn vẹn dữ liệu (data-integrity), xác thực (authentication), tránh trùng lặp gói tin (replay-protection) và bảo mật dữ liệu (data-confidentiality).

Khung của bộ giao thức mạng IPSec
Trái ngược với các hệ thống bảo vệ trên Internet(Internet sercurity system) khác, hoạt động ở các tầng cao hơn tầng Mạng, như TLS hoạt động ở tầng Vận chuyển hay SSH hoạt động ở tầng Ứng dụng, thì IPSec sẽ bảo vệ ứng dụng ngay từ tầng mạng.
**II. Các tính năng của IPSec**
**a. Sự an toàn dữ liệu (data confidentiality)**
Đảm bảo dữ liệu được an toàn, tránh những kẻ tấn công phá hoại bằng cách thay đổi nội dung hoặc đánh cắp dữ liệu quan trọng. Việc bảo vệ dữ liệu được thực hiện bằng các thuật toán mã hóa như DES, 3DES và AES.
**b. Sự toàn vẹn dữ liệu (data integrity)**
Đảm bảo rằng dữ liệu không bị thay đổi trong suốt quá trình trao đổi. Data integrity bản thân nó không cung cấp sự an toàn dữ liệu. Nó sử dụng thuật toán băm (hash) để kiểm tra dữ liệu bên trong gói tin có bị thay đổi hay không. Những gói tin nào bị phát hiện là đã bị thay đổi thì sẽ bị loại bỏ. Những thuật toán băm: MD5 hoặc SHA-1.
**c. Chứng thực nguồn dữ liệu (data origin authentication)**
Mỗi điểm cuối dùng tính năng này để xác định đầu phía bên kia có thực sự là người muốn kết nối đến mình hay không. Lưu ý là tính năng này không tồn tại một mình mà phụ thuộc vào tính năng toàn vẹn dữ liệu. Việc chứng thực dựa vào những kĩ thuật: Pre-shared key, RSA-encryption, RSA-signature.
**d. Tránh trùng lặp (replay protection)**
Đảm bảo gói tin không bị trùng lặp bằng việc đánh số thứ tự. Gói tin nào trùng sẽ bị loại bỏ.
**III. Kiến trúc của IPSec**
Để trao đổi và thỏa thuận các thông số nhằm tạo nên một môi trường bảo mật giữa 2 đầu cuối, IPSec dùng 3 giao thức:
* ISAKMP (Internet Security Association and Key Management Protocol)
* ESP (Encapsulation Security Payload)
* AH (Authentication Header)
AH đảm bảo tính toàn vẹn phi kết nối (connectionless integrity) bằng việc sử dụng hàm băm và khóa bí mật. AH cũng giúp ta chứng thực nguồn dữ liệu, cũng như là tránh được replay attacks bằng cách đáng số thứ tự các packet và kỹ thuật sliding window.
* Internet Security Association and Key Management Protocol (ISAKMP)
ISAKMP cung cấp framework để chứng thực và trao đổi khóa. Mục đích là khởi tạo và trao đổi các thông tin cần thiết cho các quá trình AH và ESP (VD như dùng thuật toán mã hóa nào hay các khóa công khai là gì).
* Encapsulation Security Payload (ESP)
ESP giúp ta chứng thực nguồn dữ liệu, bảo đảm sự toàn vẹn dữ liệu thông qua hàm băm, và bảo vệ thông tin bằng cách mã hóa gói tin IP.
Cả AH và ESP đều cung cấp khả năng toàn vẹn dữ liệu, nhưng chỉ có ESP cung cấp khả năng bảo vệ dữ liệu thông qua mã hóa
**IV. Chế độ hoạt động (mode of operations)**
**a. Chế độ vận chuyển (transport mode)**
Trong chế độ này, chỉ có phần nội dung mà gói tin IP vận chuyển được mã hóa và thay đổi, còn IP header vẫn giữ nguyên
**b. Chế độ đường hầm (tunnel mode)**
Trong chế độ này, toàn bộ gói tin IP được mã hóa (kể cả IP header). Và toàn bộ sẽ được bọc lại bởi 1 gói tin IP mới. Tunnel mode thường được dùng để tạo ra mạng ảo riêng tư (virtual private network)
**V. Cách thiết lập IPSec tunnel giữa 2 endpoint**
SA (Security Association) là tập hợp các tham số mà 2 bên dùng trong quá trình mã hóa và giải mã các gói tin IP.
Ở pha này, hai bên sẽ thương lượng về các thông tin cần thiết như cách mã hóa, chứng thực, băm và các giao thức mà hai bên sẽ sử dụng, cũng như là các tham số cần thiết. Trong pha này, 1 phiên ISAKMP được thiết lập, và tạo ra tunnel IKE phase 1. Tunnel này chỉ dùng để trao đổi các thông tin quản lý. Ta sẽ dùng IKE phase 1 tunnel để tạo ra tunnel thứ 2 là IKE phase 2 tunnel hay còn gọi là IPSEC tunnel.
**a. IKE phase 1**
Ta có thể chia pha này ra thành các bước sau:
* Bước 1: thương lượng
2 bên sẽ thương lượng các thông tin sau đây:
Hashing: thuật toán hash sẽ sử dụng. VD: MD5, SHA, ...
Chứng thực: 2 bên sẽ chứng minh bản thân mình. Các cách thường dùng là pre-shared key hoặc digital certificates
DH (Diffie Hellman) group: độ mạnh của khóa sẽ được sử dụng trong quá trình trao đổi khóa
Lifetime: thời gian mà IKE phase 1 tunnel tồn tại
Mã hóa: thuật toán mã hóa nào sẽ được sử dụng. VD: DES, 3DES, AES, ...
* Bước 2: Trao đổi khóa bằng thuật toán Diffie Hellman
* Bước 3: Kiểm tra
2 bên sẽ kiểm tra xem các thông số chứng thực đã setup chính xác chưa. Khi kiểm tra thành công thì ta đã hoàn thành IKE phase 1.
Kết quả ta có được là ISAKMP tunnel, và hai bên đều có thể gửi và nhận thông điệp bằng tunnel này.\\
**b. IKE phase 2**
* IKE phase 2 tunnel (IPSEC tunnel) mới là đường hầm ta thực sự dùng để bảo vệ dữ liệu người dùng.
* Ở pha này ta cũng thương lượng về 1 vài thông tin sau:
IPSec protocol: Ta dùng AH hay ESP
Encapsulation mode: transport hay tunnel mode
Encryption: thuật toán mã hóa nào sẽ được dùng: DES, 3DES hay AES
Authentication: thuật toán authentication nào sẽ được dùng: MD5 hay SHA
Lifetime: đường hầm này sẽ tồn tại trong bao lâu
Kết quả ta sẽ có IPSEC tunnel, và 2 bên có thể trao đổi các thông tin nhạy cảm qua đường hầm này