Mục đích chính của ESP là cung cấp sự tin cậy thêm vào xác thực người gửi và xác minh tính toàn vẹn của dữ liệu trong khi truyền. ESP mã hoá nội dung của gói dữ liệu bằng cách dùng các thuật toán mã hoá, như đã xác định bởi SA. Một số thuật toán được sử dụng bởi ESP bao gồm: DES-CBG, NULL, CAST-128, IDEA và 3DES. Các thuật toán xác thực thường được dùng tương tự như trong AH là HMAC-MD5 và HMAC-SHA.
Như đã so sánh với AH, AH mang lại tính xác thực và toàn vẹn dữ liệu đối với gói dữ liệu IP. ESP không bảo vệ toàn bộ gói dữ liệu. Chỉ có payload được bảo vệ, như trong hình 3.7. Tuy nhiên, ESP rất mạnh trong nhóm mã hoá. Nó cũng không chiếm dụng nhiều CPU. Kết quả là nó nhanh hơn AH. Nhưng 24 byte mà nó thêm vào gói dữ liệu có thể làm chậm xuống việc phân đoạn và tính toán thông lượng.
IP Header ESP Header PayLoad ESPTrailer ESPAuthentication
Hình 3.7 Gói IP sau khi tiêu đề ESP và Trailer ESP được thêm vào
Khuôn dạng của gói ESP phức tạp hơn so với khuôn dạng của AH, nó không chỉ gồm ESP header mà còn ESP trailer và ESP Authentication data. Dữ liệu tải(Payload) được định vị giữa header và trailer.
Hình 3.8 Khuôn dạng ESP
Các trường trong ESP đều là bắt buộc:
- SPI: Là một số 32 bit bất kỳ, cùng với địa chỉ IP đích và giao thức an ninh, ESP cho phép nhận dạng duy nhất SA cho gói dữ liệu này. Các giá trị SPI từ 1 đến 255 được dành riêng để sử dụng trong tương lai. Giá trị SPI = 0 để chỉ ra chưa có SA nào tồn tại.
- SN: Giống như AH, trường SN chứa một giá trị đếm tăng dần để chống lặp lại. Mỗi SA được lựa chọn thì giá trị của trường này bắt đầu là 0.
- Payload Data: Trường có độ dài biến đổi chứa dữ liệu mô tả trong Next Header. Payload Data là trường bắt buộc, được mã hoá bởi các thuật toán mã hoá, các thuật toán mã hoá này được lựa chọn ngay khi thiết lập SA. Trường này có độ dài bằng một số nguyên lần 1 byte.
- Padding: Trường này được thêm vào để đoạn được mã hoá là một số nguyên lần của một khối các byte. Ngoài ra trường còn dùng để che dấu độ dài thực của Payload.
- Pad Length: Trường này xác định số byte padding đã thêm vào (0 đến 225)
- Next Header: Là trường 8 bit bắt buộc, nó chỉ ra kiểu dữ liệu trong Payload Data. Ví dụ một giao thức bậc cao hơn như TCP. Giá trị của trường được chọn trong chuẩn IP Protocol Number được đưa ra bởi IANA.
- Authentication Data: Trường có độ dài biến đổi chứa giá trị ICV được tính cho gói ESP từ SPI đến Next Header. Authentication là trường không bắt buộc, được thêm vào nếu dịch vụ Authentication được lựa chọn cho SA đang
IP Hdr ESPHdr Payload ESP Trl AuthESP
SecurityParameters Index (SPI)
Sequence
Number Padding LengthPad HeaderNext
xét. Các thuật toán để tính ICV là các thuật toán hàm băm một chiều MD5 hoặc SHA giống với AH.
2. Chế độ hoạt động
Hình 3.8 Gói ESP trong chế độ Transport
ESP cũng được sử dụng ở hai chế độ: Transport và Tunnel
- Chế độ Transport: Chế độ Transport cho phép bảo vệ các giao thức lớp trên nhưng không bảo vệ IP Header. Các gói tin IP cũ được cắt phần tiêu đề ra, sau đó tiêu đề ESP được đưa vào giữa. ESP trailer sẽ được đưa vào cuối gói tin, cuối cùng là Authentication Data được đưa thêm vào. Chế độ Transport không mã hoá cũng không xác thực IP Header, tuy nhiên nó có chi phí xử lý thấp, chỉ được dùng cho các Host.
Hình 3.9 Gói ESP trong chế độ Tunnel
- Chế độ Tunnel: Trong chế độ này, gói IP mới được xây dựng cùng với một IP Header mới. Các IP Header bên trong mang địa chỉ nguồn và đích cuối cùng, còn IP Header bên ngoài mang địa chỉ định tuyến qua Internet. Ở chế độ
IP Hdr EessadafsdESP Payload
ESP Hdr
ESP
Trl ESPAuth
Mã hoá Định danh
Gói tin IP ban đầu
IP Hdr Payload
Gói ESP trong chế độ transport
IP Hdr Payload Gói tin IP ban đầu
New IP Hdr IP Hdr Payload New IP IP Hdr Payload Hdr ESP
Hdr ESP Trl AuthESP
Mã hoá Định danh
này, ESP sẽ bảo vệ cả gói tin IP ban đầu bao gồm: Payload và IP header. Đối với gói IP bên ngoài thì vị trí của ESP giống như trong chế độ Transport.
3. Các thuật toán sử dụng trong ESP
Các thuật toán bắt buộc bao gồm:
- Các thuật toán mật mã: DES ở chế độ CBC, AES, NULL. Thuật toán mã hoá được xác định bởi SA. ESP làm việc với các thuật toán mã hoá đối xứng. Với sự có mặt của trường Padding, các thuật toán mã hoá có thể có đặc tính khối hoặc luồng.
- Các thuật toán xác thực: Mã xác thực bản tin MAC sử dụng MD5, mã xác thực bản tin MAC sử dụng SHA, NULL (Không sử dụng mã xác thực)
4. Xử lý gói tin đầu ra
Quá trình xử lý gói đầu ra bao gồm các bước sau:
- Tìm kiếm SA: Giống như AH, ESP được thực hiện trên một gói tin chỉ khi nào bộ điều khiển IPSec đã xác định gói tin đó được liên kết với một SA.
- Mã hoá gói tin: Tuỳ thuộc vào chế độ Tunnel hay Transport mà ESP thực hiện đóng gói toàn bộ gói tin hay chỉ đóng gói phần Payload. Thêm Padding nếu cần thiết, mã hoá các trường Payload Data, Padding, PadLength, Next Header theo các thuật toán đã được chỉ ra bởi SA. Nếu dịch vụ xác thực được lựa chọn thì việc mã hoá được thực hiện trước, quá trình mã hoá không bao gồm trường Authentication Data. Và quá trình xác thực được thực hiện sau. Thứ tự xử lý này cho phép nhanh chóng xác định và loại bỏ các gói lỗi hoặc lặp lại mà không cần phải giải mã gói tin, đồng thời cho phép phía thu xử lý song song cả hai việc: giải mã và xác thực.
- Tạo SN: Quá trình này được thực hiện giống với AH.
- Tính ICV: Nếu dịch vụ xác thực được lựa chọn thì phía phát sẽ tính các giá trị ICV trên gói dữ liệu ESP gồm các trường sau: SPI, SequenceNumber, Payload Data, Padding, PadLength và Next Header. Trong đó 4 trường cuối ở dạng đã mã hoá. ICV được tính dựa vào các thuật toán xác thực dùng hàm băm một chiều như MD5 và SHA-1.
- Phân mảnh: Nếu cần thiết thì phân mảnh sẽ được thực hiện sau khi đã xử lý ESP.
5. Xử lý gói tin đầu vào
Quá trình xử lý gói đầu vào gồm các bước ngược với quá trình xử lý gói tin đầu ra.
- Ghép mảnh: Ghép mảnh được thực hiện trước khi xử lý ESP. Nếu một gói tin cần xử lý ESP ở dạng phân mảnh thì phía thu phải loại bỏ gói tin đó.
- Tìm kiếm SA: Khi nhận được một gói tin chứa ESP Header, phía thu sẽ xác định một SA phù hợp dựa trên địa chỉ đích, giao thức bảo mật và SPI. Nếu không thể tìm thấy một SA nào phù hợp cho phiên truyền dẫn này thì phía thu sẽ loại bỏ gói tin.
- Kiểm tra SN: Giống với kiểm tra SN trong AH.
- Kiểm tra ICV: Nếu dịch vụ xác thực được lựa chọn phía thu sẽ tính ICV của gói ESP ngoại trừ trường Authentication Data rồi so sánh với ICV của gói tin nhận được. Nếu hai giá trị ICV này trùng nhau thì gói tin là hợp lệ, nếu không gói tin sẽ bị loại bỏ. Việc kiểm tra được tiến hành như sau: Trước tiên trường Authentication Data được tách ra khỏi ESP và lưu lại, sau đó kiểm tra độ dài gói ESP còn lại, nếu Padding đã được ngầm định thì các byte 0 được thêm vào sau trường Next Header sau đó sẽ tính ICV và so sánh với giá trị ICV được lưu trong trường Authentication Data.
- Giải mã gói tin: Đầu tiên là giải mã ESP bao gồm các trường Payload Data, Padding, Padlength, NextHeader sử dụng khoá, thuật toán mật mã đã xác định bởi SA. Sau đó xử lý phần Padding theo đặc điểm của thuật toán, loại bỏ nó trước khi đưa lên các lớp trên. Cuối cùng là xây dựng lại gói tin IP ban đầu tuỳ thuộc vào chế độ Transport hay Tunnel. Nếu là Transport, xây dựng lại gói tin ban đầu từ IP Header và thông tin giao thức lớp trên trong Payload của ESP. Nếu là Tunnel, xây dựng lại gói tin ban đầu từ IP Header của gói bên ngoài và toàn bộ gói IP bên trong.