4.1 Mụ hỡnh hoạt động với sự tạo lập đường hầm trong IP-Crypto (tunnel
mode) SUBNET2 IP-Crypto GATEWAY2 IP-Crypto GATEWAY1 SUBNET1
Khi một gúi tin chuyển đi từ SUBNET1 sang SUBNET2 sẽ được mỏy
GATEWAY1 mó hoỏ và bọc gúi tin, sang bờn mỏy GATEWAY2 sẽ thực hiện việc giải mó, loại bỏ phần IP thờm vào, để tạo ra gúi tin nguyờn bản ban đầu. Mụ hỡnh tạo lập tunnel (đường hầm) giữa hai gateway bảo mật: Thực chất của việc tạo lập tunnel đú chớnh là chỳng ta bọc thờm phần IP header mới cho gúi tin đi giữa hai mỏy gateway:
IP Payload IP Payload IP header Outer IP header IP header Mỏy2 Decapsulator Encapsulator Mỏy1
Gúi tin đi từ Mỏy1 sang Mỏy2 sẽ được Encapsulator thờm vào gúi tin một IP
header mới và gửi đi sang cho Decapsulator. Khi Decapsulator nhận được gúi tin
đó được bọc thờm phần IP header mới thỡ nú sẽ thực hiện việc loại bỏ phần IP
header mới đi và trả lại dạng gúi tin nguyờn bản ban đầu để gửi sang Mỏy2.
Dựa vào kỹ thuật lập đường hầm cú trong Linux, chỳng ta cú thể xõy dựng chương trỡnh bảo mật gúi IP mà toàn bộ gúi tin được truyền đi giữa hai mỏy gateway sẽ
được bảo mật kể cả phần IP header ban đầu của gúi tin. Mụ hỡnh của gúi tin trước
và sau khi được bảo mật như sau: Orig IP hdr (any options)
TCP Data new IP hdr*
(any options) ESP Orig IP hdr* (any options) TCP Data ESP Trailer
4.2 Bảo mật ở tầng IP cho phiờn truyền thụng giữa hai mỏy (Transport mode)
Ở mụ hỡnh bảo mật gúi IP cú thiết lập đường hầm dựng để bảo mật giữa hai mạng
riờng ở hai đầu mỏy gateway (Mụ hỡnh mạng riờng ảo VPN – Virtual Private
Network). Nhưng chỳng ta cũng cú thể bảo mật phiờn truyền thụng giữa hai mỏy mà khụng cần việc thiết lập đường hầm (tunnel). Ở trường hợp này định dạng IP header của gúi tin được gửi đi khụng bị thay đổi (Khụng thực hiện mó hoỏ phần IP header), mà chỉ cú nội dung gúi tin được mó hoỏ. Sang bờn mỏy nhận sẽ thực hiện việc giải mó nội dung gúi tin để lấy lại nguyờn dạng gúi tin ban đầu chưa mó húa. Mụ hỡnh được thể hiện như sau:
Orig IP hdr (any options)
TCP Data Orig IP hdr
(any options) ESP hdr TCP Data ESP Trailer
Mó hoỏ Mó hoỏ
4.3 Định dạng gúi tin đúng viờn ESP (Encapsulating Security Payload Packet Format) Format)
Ở cả hai mụ hỡnh bảo mật trờn thỡ sự khỏc nhau duy nhất đú là việc thiết lập đường
hầm khi bảo mật. Một định dạng gúi tin được sử dụng cho cả hai trường hợp đú chớnh là gúi tin đúng viờn ESP (Encapsulating Security Payload). Gúi tin đúng viờn ngoài phần dữ liệu được bảo mật (được mó hoỏ) cũn bao gồm cỏc trường
thụng tin khỏc dựng để bảo đảm sự đồng bộ thụng suốt của quỏ trỡnh mó hoỏ và
giải mó.
Gúi tin sau khi được mó hoỏ gúi là gúi tin ESP (Encapsulation Security Payload) sẽ cú định dạng như sau:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---- | Connection Idetifier Index (CII) | ^Auth. | Connection Idetifier Index (CII) | ^Auth. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov- | Sequence Number | |erage
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Initiator Vector (IV) | | | Initiator Vector (IV) | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ---- | Payload Data (variable) | | ^ | Payload Data (variable) | | ^ ~ ~ | | | | |Conf. + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov- | | Padding (0-255 bytes) | |erage* +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | Pad Length | Next Header | v v +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------ | Authentication Data (variable) |
~ ~ | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Connection Identifier Index
CII là giỏ trị 32-bớt, trong sự kết hợp với địa chỉ IP đớch và giao thức an
toàn (ESP), định danh duy nhất cho connection (cặp kết nối) sử dụng cho gúi tin này. Trờn một mỏy gateway cú thể cú nhiều connection cựng tồn tại, một connection được sử dụng để bảo mật cho một cặp mạng riờng hay cho giao tiếp giữa hai mỏy cụ thể nào đú. Vỡ thế, chỳng ta sử dụng CII để chọn connection khi nhận được gúi tin ESP. Phần này sẽ được trỡnh bày cụ thể hơn trong phần nhận gúi tin gửi đến.
Sequence Number (Chuỗi số)
Là trường số khụng dấu 32-bit, giỏ trị của trường này được tăng lờn sau mỗi packet được gửi đi. Việc sử dụng trường này nhằm mục đớch chống tấn cụng lặp lại. Với gúi tin cú trường chuỗi số lặp lại trường chuỗi số của gúi tin trước hoặc giỏ trị của trường này quỏ bộ so với khoảng giỏ trị trường chuỗi số hiện tại thỡ gúi tin đú khụng được chấp nhận.
Initiator Vector (IV)
Đõy là phần dữ liệu của vộc tơ khởi điểm của từng gúi tin. Để đảm bảo được
việc giải mó gúi tin mà khụng bị ảnh hưởng bởi việc lặp gúi tin, mất gúi tin thỡ trờn mỗi gúi tin bảo mật phải chứa một vộc tơ khởi điểm cho chớnh nú.
Payload Data (Dữ liệu gúi tin)
Đõy là phần chứa dữ liệu của gúi tin mang đi. Trường Payload Data là bắt buộc
và nú là số nguyờn dương độ dài cỏc byte..
Padding (For Encryption) (Thờm dữ liệu cho mó hoỏ).
Đõy là phần dữ liệu thờm vào cho chẵn khối đầu vào mó hoỏ. Trường này ỏp
dụng cho hàm mó hoỏ là mó khối ở mode ECB, hoặc CBC. Pad Length
Trường Pad Length chỉ ra số byte được thờm vào mà đứng ngay trước nú. Giỏ trị hợp lệ là từ 0 – 255. Nếu giỏ trị của trường này là 0 điều đú cú nghĩa là
khụng cú phần dữ liệu được thờm vào. Next Header
Next Header là trường 8-bớt chỉ ra kiểu dữ liệu chứa trong trường Payload Data. Trường này chỉ ra kiểu gúi tin được sử dụng ở đõy chớnh là kiểu gúi tin ESP (IPPROTO_ESP).
Authentication Data (Dữ liệu xỏc thực)
Dữ liệu xỏc thực là trường chứa ICV (Intergrity Check Value) được tớnh trờn toàn bộ gúi tin ESP trừ phần dữ liệu xỏc thực. Độ dài của trường được xỏc định bởi hàm xỏc thực được lựa chọn. Ở đõy chỳng tụi sử dụng hàm xỏc thực là hàm băm MD5 với đầu ra được chọn là 96 bớt.
Nằm ở đầu trong phần dữ liệu gúi tin (sau IP header) là cỏc tham số về số hiệu bộ tham số an toàn ỏp dụng cho gúi tin (CII) là trường esp_cii, số hiệu của gúi tin
esp_rpl, và vộc tơ khởi điểm esp_iv ỏp dụng cho gúi tin. Cả 3 tham số này được
chứa trong cấu trỳc struct esp ở trong file ipsec_esp.h như sau:
struct esp {
_ _ u32 esp_cii; /* Security Parameters Index */
_ _ u32 esp_rpl; /* Replay counter */
_ _ u8 esp_iv[EMT_ESPBLOCKCIPHER_IV_SZ]; /* iv */
}
Mụ hỡnh gúi tin khi thờm cỏc tham số bộ tham số an toàn cho gúi tin cii, chỉ số gúi tin rpl, và vộc tơ khởi điểm là:
IP header cii rpl iv Data
Phần dữ liệu thờm vào để chẵn khối mó hoỏ được gỏn vào theo chuỗi cỏc byte liờn tiếp. Sau phần dữ liệu padding là byte bỏo độ dài dữ liệu thờm vào (trường Pad length) gồm cú bao nhiờu byte. Tiếp theo là byte bỏo giao thức ESP được sử dụng, sau byte này là 12 byte (96 bớt) dữ liệu xỏc thực cho gúi tin sinh ra từ hàm MD5. (Tất cả cỏc cụng việc gắn cỏc phần dữ liệu này được trỡnh bày cụ thể ở phần 1.5 và 1.6). Sở dĩ chỳng ta phõn biệt được giữa gúi tin bảo mật và gúi tin khụng bảo mật là nhờ vào chỉ số giao thức gúi tin là ESP hay khụng phải là ESP.
Mụ hỡnh gúi tin IP được bảo mật gửi đi trờn đường truyền như sau:
ESP Trailer
ESP
IP header cii rpl iv Data padding data pad length protocol auth data