Sinh viên thực hiện : ĐOÀN MINH CHÂU
1.2. Các chế độ hoạt động của IPSec:
1.Transport Mode (chế độ vận chuyển)
- Transport mode cung cấp cơ chế bảo vệ cho dữ liệu của các lớp cao hơn (TCP, UDP hoặc ICMP). Trong Transport mode, phần IPSec header được chèn vào giữa phần IP header và phần header của giao thức tầng trên, như hình mô tả bên dưới, AH và ESP sẽ được đặt sau IP header nguyên thủy. Vì vậy chỉ có tải (IP payload) là được mã hóa và IP header ban đầu là được giữ nguyên vẹn. Transport mode có thể được dùng khi cả hai host hỗ trợ IPSec. Chế độ transport này có thuận lợi là chỉ thêm vào vài bytes cho mỗi packets và nó cũng cho phép các thiết bị trên mạng thấy được địa chỉ đích cuối cùng của gói. Khả năng này cho phép các tác vụ xử lý đặc biệt trên các mạng trung gian dựa trên các thông tin trong IP header. Tuy nhiên các thông tin Layer 4 sẽ bị mã hóa, làm giới hạn khả năng kiểm tra của gói.
- Transport mode thiếu mất quá trình xử lý phần đầu, do đó nó nhanh hơn. Tuy nhiên, nó không hiệu quả trong trường hợp ESP có khả năng không xác nhận mà cũng không mã hóa phần đầu IP.
- Transport Mode thường dùng cho các kết nối từ đầu cuối đến đầu cuối, ví dụ từ trạm làm việc đến máy chủ hoặc giữa hai trạm làm việc với nhau.
2.Tunnel Mode (Chế độ đường hầm):
- Không giống Transport mode, Tunnel mode bảo vệ toàn bộ gói dữ liệu. Toàn bộ gói dữ liệu IP được đóng gói trong một gói dữ liệu IP khác và một IPSec header được chèn vào giữa phần đầu nguyên bản và phần đầu mới của IP.Toàn bộ gói IP ban đầu sẽ bị đóng gói bởi AH hoặc ESP và một IP header mới sẽ được bao bọc xung quanh gói dữ liệu. Toàn bộ các gói IP sẽ được mã hóa và trở thành dữ liệu mới của gói IP mới. Chế độ này cho phép những thiết bị mạng, chẳng hạn như router, hoạt động như một IPSec proxy thực hiện chức năng mã hóa thay cho host. Router nguồn sẽ mã hóa các packets và chuyển chúng dọc theo tunnel. Router đích sẽ giải mã gói IP ban đầu và chuyển nó về hệ thống cuối. Vì vậy header mới sẽ có địa chỉ nguồn chính là gateway.
- Với tunnel hoạt động giữa hai security gateway, địa chỉ nguồn và đích có thể được mã hóa. Tunnel mode được dùng khi một trong hai đầu của kết nối IPSec là security gateway và địa chỉ đích thật sự phía sau các gateway không có hỗ trợ IPSec
Hình 1.4 – Cấu trúc gói tin IPSec ở chế độ Tunnel
- Tunnel Mode thường được dùng trong các SA (Security Association -liên kết bảo mật) nối giữa hai gateway của hai mạng.
1.3. Các giao thức chính của IPSec:
1.3.1 Giao thức xác thực AH:
AH là một trong hai giao thức đóng gói dùng trong IPSec. Mục tiêu chính của AH là đảm bảo tính toàn vẹn của dữ liệu chuyển đi trên mạng IP. AH cho phép xác thực người dùng, xác thực ứng dụng và thực hiện các cơ chế lọc gói tương ứng. Ngoài ra AH còn có khả năng hạn chế các tấn công giả danh (spoofing) và tấn công phát lại (replay).
1.3.1.a. Cấu trúc gói:
Cấu trúc tiêu đề gói AH:
- Next Header (8 bit): Nhận dạng kiểu tiêu đề đi liền sau tiêu đề của AH, dùng các số nhận dạng IP theo quy định của IANA (Internet Assigned Number Authority).
- Payload length (8 bit): Chiều dài của gói AH, tính bằng đơn vị 32 bit trừ đi 2. Ví dụ, chiều dài phần dữ liệu xác thực là 96 bit (= 3*32 bit), cộng với chiều dài phần tiêu đề AH (cố định) là 3*32 bit nữa thành 6*32 bit, khi đó giá trị của trường kích thước dữ liệu là 4.
- Reserved (16 bit): Phần dành riêng, chưa dùng.
- Security Parameters Index (32 bit): Một chuỗi bit được gán cho SA có tác dụng phân biệt SA này với SA khác. Phía nhận sẽ chọn đúng SA tương ứng để xử lý các gói dữ liệu nhận được.
- Sequence Number (32 bit): Số thứ tự gói.
- Authentication Data: Mã xác thực, có chiều dài thay đổi nhưng không phải bội số của 32 bit. Trường này có giá trị kiểm tra ICV (Integrity Check Value) hoặc MAC (Message Authentication Code) cho toàn bộ gói.
1.3.1.b. Cơ chế chống phát lại:
Cơ chế này cho phép ngăn chặn các tấn công dạng phát lại (replay), tức là bắt gói, lưu trữ rồi phát lại. Trường số thứ tự (Sequence Number) trong tiêu đề AH được dùng để đánh dấu thứ tự các gói được gửi đi trên một SA. Ban đầu , giá trị này được khởi tạo bằng 0 và tăng dần sau mỗi gói được gởi. Để đảm bảo không có gói lặp lại , khi số thứ tự đạt giá trị cực đại (232 -1), nó sẽ không được quay lại giá trị 0, mà thay vào đó, một SA với khoá mới được thiết lập để tiếp tục việc truyền dữ liệu. Điều này đảm bảo trên cùng một SA không bao giờ có hai gói dữ liệu có số thứ tự trùng nhau.
Ở phía nhận, quá trình xử lý các gói nhận được thực hiện phức tạp hơn nhằm phát hiện các gói lặp nhau. Do IP không thiết lập kết nối và không đảm bảo truyền tin cậy, do đó việc sai thứ tự, lặp, hoặc mất gói là điều có thể xảy ra. Việc phát hiện các sự cố này thực hiện theo cơ chế dịch cửa sổ như hình dưới. Cửa sổ là một bộ nhớ đệm được thiết kế theo cơ chế hàng đợi , có kích thước là W (mặc định W=64). Số thứ tự gói trong hàng đợi được xếp tăng dần từ trái qua phải, như vậy, cạnh phải của cửa sổ là gói có số thứ tự là N thì cạnh trái của cửa sổ sẽ là gói có số thứ tự N-W. Mỗi khi nhận được một gói dữ liệu đúng ( kiểm tra bằng mã xác thực) và số thứ tự gói nằm trong khoảng từ N-W+1 đến N, vị trí tương ứng với số thứ tự trong cửa sổ được đánh dấu. Cơ chế thực hiện như sau:
- Nếu gói nhận được nằm trong vùng hợp lệ của cửa sổ( có số thứ tự từ N-W+1 đến N) và là một gói mới thì giá trị MAC của gói đó sẽ được kiểm tra. Nếu chính xác (tức gói đã được xác thực) thì khe tương ứng trong cửa sổ được đánh dấu.
- Nếu gói nhận được nằm bên phải của cửa sổ (có số thứ tự lớn hơn N) và là gói mới, giá trị MAC của gói được kiểm tra. Nếu đúng thì cửa sổ dịch được dịch một khe sang bên phải, đồng thời khe tương ứng trong cửa sổ được đánh dấu.
- Nếu gói nhận được nằm bên trái cửa sổ hoặc giá trị MAC không hợp lệ thì bị huỷ bỏ, đồng thời hệ thống tạo ra cảnh báo tương ứng với sự kiện này.
1.3.1.c. Xác thực thông tin:
Mã xác thực (trường Authentication Data) được tạo ra dùng một trong hai cách sau:
- HMAC-MD5-96: dùng phương pháp HMAC, hàm băm là MD5, cắt lấy 96 bit đầu tiên.
- HMAC-SHA-1-96: dùng phương pháp HMAC, hàm băm là SHA-1,cắt lấy 96 bit đầu tiên.
Thuật toán MAC được áp dụng trên các phần thông tin sau đây:
- Các trường không bị thay đổi trong tiêu đề gói IP khi được chuyển tiếp trên mạng hoặc có thể dự đoán được tại đầu cuối của SA. Những trường còn lại trong tiêu đề gói IP được thay bằng các bit 0 khi tính toán.
- Các trường trong tiêu đề AH, ngoại trừ trường Authentication Data.Trường này được thay bằng các bit 0 khi tính.
- Toàn bộ gói dữ liệu của lớp trên (tức phần payload của gói IP).
Cơ chế tạo mã xác thực MAC được thực hiện như sau:
HMAC = H[(K opad) | | H[(K ipad) | | M]]
Trong đó:
- ipad = 00110110(0x36) lặp lại 64 lần để tạo thành 512 bit.
- opad = 01011100(0x5c) lặp lại 64 lần để tạo thành 512 bit.
K là khoá đã thống nhất giữa hai bên khi thiết lập SA và M là toàn bộ các phần thông tin cần xác thực như đã mô tả ở trên.
1.2. Các chế độ hoạt động của IPSec:
1.Transport Mode (chế độ vận chuyển)
- Transport mode cung cấp cơ chế bảo vệ cho dữ liệu của các lớp cao hơn (TCP, UDP hoặc ICMP). Trong Transport mode, phần IPSec header được chèn vào giữa phần IP header và phần header của giao thức tầng trên, như hình mô tả bên dưới, AH và ESP sẽ được đặt sau IP header nguyên thủy. Vì vậy chỉ có tải (IP payload) là được mã hóa và IP header ban đầu là được giữ nguyên vẹn. Transport mode có thể được dùng khi cả hai host hỗ trợ IPSec. Chế độ transport này có thuận lợi là chỉ thêm vào vài bytes cho mỗi packets và nó cũng cho phép các thiết bị trên mạng thấy được địa chỉ đích cuối cùng của gói. Khả năng này cho phép các tác vụ xử lý đặc biệt trên các mạng trung gian dựa trên các thông tin trong IP header. Tuy nhiên các thông tin Layer 4 sẽ bị mã hóa, làm giới hạn khả năng kiểm tra của gói.
- Transport mode thiếu mất quá trình xử lý phần đầu, do đó nó nhanh hơn. Tuy nhiên, nó không hiệu quả trong trường hợp ESP có khả năng không xác nhận mà cũng không mã hóa phần đầu IP.
- Transport Mode thường dùng cho các kết nối từ đầu cuối đến đầu cuối, ví dụ từ trạm làm việc đến máy chủ hoặc giữa hai trạm làm việc với nhau.
2.Tunnel Mode (Chế độ đường hầm):
- Không giống Transport mode, Tunnel mode bảo vệ toàn bộ gói dữ liệu. Toàn bộ gói dữ liệu IP được đóng gói trong một gói dữ liệu IP khác và một IPSec header được chèn vào giữa phần đầu nguyên bản và phần đầu mới của IP.Toàn bộ gói IP ban đầu sẽ bị đóng gói bởi AH hoặc ESP và một IP header mới sẽ được bao bọc xung quanh gói dữ liệu. Toàn bộ các gói IP sẽ được mã hóa và trở thành dữ liệu mới của gói IP mới. Chế độ này cho phép những thiết bị mạng, chẳng hạn như router, hoạt động như một IPSec proxy thực hiện chức năng mã hóa thay cho host. Router nguồn sẽ mã hóa các packets và chuyển chúng dọc theo tunnel. Router đích sẽ giải mã gói IP ban đầu và chuyển nó về hệ thống cuối. Vì vậy header mới sẽ có địa chỉ nguồn chính là gateway.
- Với tunnel hoạt động giữa hai security gateway, địa chỉ nguồn và đích có thể được mã hóa. Tunnel mode được dùng khi một trong hai đầu của kết nối IPSec là security gateway và địa chỉ đích thật sự phía sau các gateway không có hỗ trợ IPSec
Hình 1.4 – Cấu trúc gói tin IPSec ở chế độ Tunnel
- Tunnel Mode thường được dùng trong các SA (Security Association -liên kết bảo mật) nối giữa hai gateway của hai mạng.
1.3. Các giao thức chính của IPSec:
1.3.1 Giao thức xác thực AH:
AH là một trong hai giao thức đóng gói dùng trong IPSec. Mục tiêu chính của AH là đảm bảo tính toàn vẹn của dữ liệu chuyển đi trên mạng IP. AH cho phép xác thực người dùng, xác thực ứng dụng và thực hiện các cơ chế lọc gói tương ứng. Ngoài ra AH còn có khả năng hạn chế các tấn công giả danh (spoofing) và tấn công phát lại (replay).
1.3.1.a. Cấu trúc gói:
Cấu trúc tiêu đề gói AH:
- Next Header (8 bit): Nhận dạng kiểu tiêu đề đi liền sau tiêu đề của AH, dùng các số nhận dạng IP theo quy định của IANA (Internet Assigned Number Authority).
- Payload length (8 bit): Chiều dài của gói AH, tính bằng đơn vị 32 bit trừ đi 2. Ví dụ, chiều dài phần dữ liệu xác thực là 96 bit (= 3*32 bit), cộng với chiều dài phần tiêu đề AH (cố định) là 3*32 bit nữa thành 6*32 bit, khi đó giá trị của trường kích thước dữ liệu là 4.
- Reserved (16 bit): Phần dành riêng, chưa dùng.
- Security Parameters Index (32 bit): Một chuỗi bit được gán cho SA có tác dụng phân biệt SA này với SA khác. Phía nhận sẽ chọn đúng SA tương ứng để xử lý các gói dữ liệu nhận được.
- Sequence Number (32 bit): Số thứ tự gói.
- Authentication Data: Mã xác thực, có chiều dài thay đổi nhưng không phải bội số của 32 bit. Trường này có giá trị kiểm tra ICV (Integrity Check Value) hoặc MAC (Message Authentication Code) cho toàn bộ gói.
1.3.1.b. Cơ chế chống phát lại:
Cơ chế này cho phép ngăn chặn các tấn công dạng phát lại (replay), tức là bắt gói, lưu trữ rồi phát lại. Trường số thứ tự (Sequence Number) trong tiêu đề AH được dùng để đánh dấu thứ tự các gói được gửi đi trên một SA. Ban đầu , giá trị này được khởi tạo bằng 0 và tăng dần sau mỗi gói được gởi. Để đảm bảo không có gói lặp lại , khi số thứ tự đạt giá trị cực đại (232 -1), nó sẽ không được quay lại giá trị 0, mà thay vào đó, một SA với khoá mới được thiết lập để tiếp tục việc truyền dữ liệu. Điều này đảm bảo trên cùng một SA không bao giờ có hai gói dữ liệu có số thứ tự trùng nhau.
Ở phía nhận, quá trình xử lý các gói nhận được thực hiện phức tạp hơn nhằm phát hiện các gói lặp nhau. Do IP không thiết lập kết nối và không đảm bảo truyền tin cậy, do đó việc sai thứ tự, lặp, hoặc mất gói là điều có thể xảy ra. Việc phát hiện các sự cố này thực hiện theo cơ chế dịch cửa sổ như hình dưới. Cửa sổ là một bộ nhớ đệm được thiết kế theo cơ chế hàng đợi , có kích thước là W (mặc định W=64). Số thứ tự gói trong hàng đợi được xếp tăng dần từ trái qua phải, như vậy, cạnh phải của cửa sổ là gói có số thứ tự là N thì cạnh trái của cửa sổ sẽ là gói có số thứ tự N-W. Mỗi khi nhận được một gói dữ liệu đúng ( kiểm tra bằng mã xác thực) và số thứ tự gói nằm trong khoảng từ N-W+1 đến N, vị trí tương ứng với số thứ tự trong cửa sổ được đánh dấu. Cơ chế thực hiện như sau:
- Nếu gói nhận được nằm trong vùng hợp lệ của cửa sổ( có số thứ tự từ N-W+1 đến N) và là một gói mới thì giá trị MAC của gói đó sẽ được kiểm tra. Nếu chính xác (tức gói đã được xác thực) thì khe tương ứng trong cửa sổ được đánh dấu.
- Nếu gói nhận được nằm bên phải của cửa sổ (có số thứ tự lớn hơn N) và là gói mới, giá trị MAC của gói được kiểm tra. Nếu đúng thì cửa sổ dịch được dịch một khe sang bên phải, đồng thời khe tương ứng trong cửa sổ được đánh dấu.
- Nếu gói nhận được nằm bên trái cửa sổ hoặc giá trị MAC không hợp lệ thì bị huỷ bỏ, đồng thời hệ thống tạo ra cảnh báo tương ứng với sự kiện này.
1.3.1.c. Xác thực thông tin:
Mã xác thực (trường Authentication Data) được tạo ra dùng một trong hai cách sau:
- HMAC-MD5-96: dùng phương pháp HMAC, hàm băm là MD5, cắt lấy 96 bit đầu tiên.
- HMAC-SHA-1-96: dùng phương pháp HMAC, hàm băm là SHA-1,cắt lấy 96 bit đầu tiên.
Thuật toán MAC được áp dụng trên các phần thông tin sau đây:
- Các trường không bị thay đổi trong tiêu đề gói IP khi được chuyển tiếp trên mạng hoặc có thể dự đoán được tại đầu cuối của SA. Những trường còn lại trong tiêu đề gói IP được thay bằng các bit 0 khi tính toán.
- Các trường trong tiêu đề AH, ngoại trừ trường Authentication Data.Trường này được thay bằng các bit 0 khi tính.
- Toàn bộ gói dữ liệu của lớp trên (tức phần payload của gói IP).
Cơ chế tạo mã xác thực MAC được thực hiện như sau:
HMAC = H[(K opad) | | H[(K ipad) | | M]]
Trong đó:
- ipad = 00110110(0x36) lặp lại 64 lần để tạo thành 512 bit.
- opad = 01011100(0x5c) lặp lại 64 lần để tạo thành 512 bit.
K là khoá đã thống nhất giữa hai bên khi thiết lập SA và M là toàn bộ các phần thông tin cần xác thực như đã mô tả ở trên.
Comment