Đặc điểm của VPN là cho phép truyền dữ liệu thông qua một cơ sở hạ tầng mạng công cộng mà vẫn đảm bảo được các đặc tính an toàn và tin cậy dữ liệu. Để thực hiện được điều đó, công nghệ VPN phải giải quyết được hai vấn đề: đóng gói dữ liệu và an toàn dữ liệu. Đóng gói dữ liệu là cách thức thêmcác phần thông tin điều khiển vào gói tin ban đầu để đảm bảo gói tin đi được từ nguồntới đích mong muốn, điều này đã được đề cập trong các chương trước. An toàn dữ liệu là cách thức đảm bảo cho dữ liệu đi qua mạng công cộng không bị xâm phạm, làm thay đổi bởi những kẻ không mong muốn. Thực tế thì vấn đề an toàn dữ liệu không phải là vấn đề riêng của VPN mà là mối quan tâm cũng như thách thức của tất cả các tổ chức có nhu
cầu sử dụng Internet làm môi trường truyền tin. Chính vì vậy, đã có rất nhiều giải pháp, giao thức, thuật toán được phát triển để giải quyết vấn đề này. Việc sử dụng giải pháp nào là tùy thuộc vào từng ứng dụng cụ thể và không loại trừ khả năng sử dụng kết hợp nhiều giải pháp để đạt hiệu quả an toàn như mong muốn.
Đối với VPN, IPSec là giao thức tối ưu về mặt an toàn dữ liệu. Thứ nhất,IPSec cung cấp xác thực tính toàn vẹn dữ liệu. Thứ hai, IPSec cho phép sử dụng các phương pháp, thuật toán mật mã, xác thực mạng nhất hiện có. Thứ ba, IPSec là một khung chuẩn mở, nghĩa là có thể lựa chọn các thuật toán phù hợp với mức độ an toàn dữ liệu mong muốn mà không bị giới hạn cứng nhắc phải sử dụng đúng một thuật toán nào đó, đồng thời có khả năng sử dụng các thuật toán tiên tiến phát triển trong tương lai. Điều này thể hiện tính linh hoạt rất cao của IPSec.

3.1. Mã hoá:
3.1.1. Khái niệm mật mã:
Hình sau cho thấy khái niệm chung sử dụng trong các thuật toán mật mã và mối quan hệ giữa chúng:

Hình 3.1 - Các khái niệm chung sử dụng trong các thuật toán mã hoá
Một hệ mật là một bộ 5 (P, C, K, E, D)thỏa mãn các điều kiện sau:
1) P là một tập hữu hạn các bản rõ có thể.
2) C là một tập hữu hạn các bản mã có thể.
3) K là một tập hữu hạn các khóa có thể.
4) Đối với k   K có một quy tắc mã ek: P→C và một quy tắc giải mã tương ứng
dk:C→P sao cho dk(ek(x)) = x với mọi bản rõ x P.
Điều kiện 4 nói lên rằng một bản rõ x được mã hóa bằng ek và bản mã nhận được sau đó được giải mã bằng dk thì ta phải thu được bản rõ ban đầu x. Các khái niệm trong hình được trình bày như sau:
+ Plaintext và ciphertext: bản tin ban đầu được gọi là bản tin rõ (plaintext hay cleartext). Quá trình biến đổi bản tin để che dấu nội dung thật của nó được gọi là mật mã (encryption). Bản tin đã mật mã được gọi là ciphertext. Quá trình biến bản tin đã mật mã về bản tin ban đầu được gọi là giải mã (decryption).
+ Thuật toán và khóa: thuật toán mật mã (còn gọi là cipher) là một hàm toán học sử dụng để mật mã và giải mã. Tính an toàn của một thuật toán mật mã phụ thuộc vào một khóa bí mật (secret key). Khoảng các giá trị có thể có của khóa được gọi là không gian khóa (key space). Các quá trình mật mã và giải mã đều phụ thuộc vào khóa K như sau:
Mật mã: EK(P) = C
Giải mã: DK(C) = P
Về cơ bản thì các thuật toán mật mã được chia thành hai loại: các hệ thống mật mã khóa đối xứng (Symmetric Key Cryptosystem), và các hệ thống mật mã khóa công khai (Public Key Cryptosystem). Mật mã khóa đối xứng sử dụng cùng một khóa duy nhất trong quá trình mật mã và giải mã, với hệ thống này thì hai đầu kênh được cung cấp cùng một khóa qua một kênh tin cậy và khóa này phải tồn tại trước quá trình truyền tin.
Còn mật mã khóa công khai sử dụng hai khóa khác nhau (một khóa bí mật và một khóa công khai), khóa công khai dùng để lập mã và chỉ có khóa bí mật là có khả năng giải mã.
Bản thân các hệ mật mã này có nhiều thuật toán thực hiện.

3.1.2. Các hệ thống mật mã khóa đối xứng:
3.1.2.a. Giải thuật DES (Data Encryption Standard):
Thuật toán DES được đưa ra vào năm 1977 tại Mỹ và đã được sử dụng rất rộng rãi. Nó còn là cơ sở để xây dựng một thuật toán tiên tiến hơn là 3DES. Hiện nay, DES vẫn được sử dụng cho những ứng dụng không đòi hỏi tính an toàn cao, và khi chuẩn mật mã dữ liệu mới là AES chưa chính thức thay thế nó. DES mã hóa các khối dữ liệu 64 bit với khóa 56 bit. Sơ đồ thuật toán DES cho trên hình sau:



Hình 3.2 - Sơ đồ thuật toán DES

Trước hết 64 bit T đưa vào được hoán vị bởi phép hoán vị khởi tạo IP (Initial Permutation), không phụ thuộc vào khóa T0 = IP(T). Sau khi thực hiện 16 vòng lặp, dữ liệu được đi qua các bước hoán vị đảo RP (Reversed Permulation) và tạo thành khối ciphertext. Thực chất các hoán vị này không là tăng tính an toàn DES.
Trung tâm của mỗi vòng lặp xử lý DES là mạng Fiestel (được đặt theo tên của một nhà khoa hoc tại IBM). Hoạt động của mạng Fiestel được diễn tả như sau:
T =L00 với L0= t1…t32, R0= t33…t64
Xét ở vòng lặp thức i (0<i<16): Li = Ri-1, Ri = Li-1 Xor F(Ri-1,Ki) trong đó ⊕ là phép cộng XOR và Ki là khóa 48 bit. Ở vòng lặp cuối cùng các nhánh trái và phải không đổi chỗ chi nhau, vì vậy input của IP­^-1 là R16L16. Trong đó hàm F được thể hiện là khối hộp đen.

Hình 3.3 – Mạng Fiestel

* Hoạt động của khối hộp đen:
Khá phức tạp, trong đó nó gồm có các khối chức năng và nhiệm vụ như sau:
- Hoán vị mở rộng: Mở rộng Ri-1 32 bít đầu vào thành khối 48 bít. Hoạt động mở rộng này dựa vào một bảng định trước để lựa chọn các bít đầu ra. Sau đó các bít sau
hoán vị mở rộng được XOR với khóa Ki.
- S-box: Kết quả sau khi XOR được chia thành 8 khối 6 bít từ B1 tới B6. Mỗi khối Bj sau đó được đưa vào một hàm Sj. Hàm Sj này sẽ trả lại các khối 6 bit thành khối 4 bit theo bảng định trước.
- P-Box: Các khối 4 bit sau khi được trả lại sẽ kết hợp với nhau thành khối 32 bít đầu ra của hộp đen.

* Hoạt động tính khóa:
Khóa input ban đầu là một khối 64 bít, sau khi bỏ đi 8 bít parity và hoán vị 56 bít còn lại theo một trật tự nhất định. DES tạo ra 16 khóa, mỗi khóa có chiều dài 48 bit từ một khóa input 56 bit, dùng cho 16 vòng lặp. Tại mỗi vòng lặp, khóa Ki-1 được chia thành hai phần là Ci-1 và Di-1. Sau đó các bit của hai thành phần Ci-1 và Di-1 được hoán vị dịch để tạo thành Ci và Di. Sau khi hoán vị, Ci bỏ qua các bít 9, 18, 22, 25 tạo thành nữa trái của Ki(24 bit) và Di bỏ qua các bít 35, 38, 43, 54 tạo ra nữa phải của Ki (24 bít). Ghép nữa trái và nữa phải tạo ra khóa Ki 48 bít.

* Giải mã: Quá trình giải mã thực hiện các bước này theo thứ tự ngược lại.

3.1.2.b. Thuật toán mã hoá AES:
Thuật toán DES với khóa 56 bit đã được phát triển cách đây gẩn 28 năm, và hiện không còn phù hợp với những ứng dụng đòi hỏ tính an toàn dữ liệu cao (đặc biệt các ứng dụng về quân sự, hoặc thương mại điện tử). Đây là lý do cần phát triển các thuật toán mật mã mới đáp ứng được những yêu cầu an toàn dữ liệu ngày càng cao. Trong số các thuật toán mới được phát triển gần đây có 3DES (Triple DES) với khóa công khai 168 bít và đặc biệt là AES. Năm 1997, NIST (US National Institute of Standards and Technology) đã tổ chức lựa chọn những thuật toán sau:
* MARS (IBM): Cải tiến mạng Fiestel, thực hiện 32 vòng và dựa trên cấu trúc kết hợp của DES.
* RC6 (RSA): Thực hiện mạng Fiestel 20 vòng, cải tiến thuật toán RC5.
* Twofish (Bruce Schneier): thực hiện mạng Fiestel 16 vòng, cải tiến thuật toán Blowfish.
* Serpent (Ross Anderson/ Eli Biham/ Lars Knudsen): Thực hiện mạng hoán vịthay thế 32 vòng.
* Rijndael (Joan Daemen/ Vincent Rijimen): Thực hiện mạng hoán vị thay thế cải tiến 10 vòng.
Trong 5 thuật toán trên, NIST đã chọn Rijindael cho chuẩn AES vào năm 2000. Trong tương lai, AES sẽ là chuẩn mật mã khối đối xứng và sẽ được thực hiện trên cả phần cứng lẫn phần mềm. AES sẽ được thiết kế để có thể tăng độ dài khóa khi cần thiết. Độ dài khối dữ liệu của AES là n = 128 bít, còn độ dài khóa k = 128, 192, 256 bit


Hình 3.4- Thông số của các phiên bản AES
Thuật toán AES thực hiện dựa trên 4 thao tác:

  • Thay thế byte (Byte Substitution)
  • Dịch dòng( ShiftRows)
  • Trộn cột (Mix Columns)
  • Cộng khoá (Add Round Key)

AES sử dụng 2 thuật toán khác nhau cho mã hoá và giải mã , do vậy tất cả các thao tác trong thuật toán bắt buộc phải có thao tác ngược (ngoại trừ phép XOR).




Hình 3.5 - Thuật toán AES với chiều dài khoá 128 bit

3.1.3. Các hệ thống mật mã bất đối xứng
Đặc trưng của kỹ thuật mật mã bất đối xứng là dùng 2 khoá riêng biệt cho hai việc mã hoá và giải mã. Một trong hai khoá được phổ biến công khai gọi là khoá công khai (Public Key hay PU), khoá còn lại được giữ bí mật gọi là khoá riêng (Private Key hay PR). Nếu quá trình mã hoá dùng khoá PU thì quá trình giải mã dùng khoá PR và ngược lại.
3.1.3.a. Thuật toán mật mã RSA
RSA là thuật toán mật mã bất đối xứng được xây dựng bởi Ron Rivest, Adi Shamir và Len Adleman tại viện công nghệ Massachusetts (MIT), do đó được đặt tên là Rivest – Shamir – Adleman hay RSA. Thuật toán này ra đời năm 1977 và cho đến nay đã

được ứng dụng trong nhiều lĩnh vực. Cũng như các thuật toán mật mã bất đối xứng khác, nguyên lý của RSA dựa chủ yếu trên lý thuyết số chứ không dựa trên các thao tác xử lý bit.
RSA là một thuật toán mật mã khối, kích thước khối thông thường là 1024 hoặc 2048 bit. Thông tin gốc của RSA được xử lý như các số nguyên. Ví dụ, khi chọn kích thước khối của thuật toán là 1024 bit thì số nguyên này có giá trị từ 0 đến 21024 -1 tương đương với số thập phân có 309 chữ số.
Thuật toán RSA được mô tả như sau:
1- Để tạo ra một cặp khóa RSA, trước hết, chọn hai số nguyên tố đủ lớn p và q. Gọi N là tích của p và q (N = pq).
2- Tiếp theo, chọn một số e sao cho e và (p-1)(q-1) là hai số nguyên tố cùng nhau. Sau đó tìm số d sao cho ed = 1 mod (p-1)(q-1). Ký hiệu mod m biểu diễn phép modulo trên cơ số m.
3-Bây giờ, bỏ qua vai trò của p và q. Với 3 thành phần còn lại là N, e và d, ta đó:
-Khóa công khai (public key) là tổ hợp (N, e)
-Khóa bí mật (private) là tổ hợp (N, d).
4- Việc mã hóa một khối thông tin gốc M được thực hiện theo công thức:
C = Me mod N (với M là số nguyên nhỏ hơn N)
5-Và quá trình giải mã C được thực hiện theo công thức:
M = Cd mod N

3.1.3.b. Thuật toán trao đổi khoá Diffie – Hellman:
Diffie-Hellman là một thuật toán dùng để trao đổi khóa (key exchange) chứ không dùng để mật mã hóa (che giấu) dữ liệu. Tuy nhiên, Deffie-Hellman lại có ích trong giai đọan trao đổi khóa bí mật của các thuật toán mật mã đối xứng. Như đã trình bày ở phần mật mã đối xứng, một trong những vấn đề quan trọng liên quan trực tiếp đến tính an toàn của các thuật toán mật mã đối xứng là vấn đề thống nhất khoá bí mật giữa các thực thể thông tin.
Thuật toán trao đổi khoá Diffie-Hellman dựa trên phép logarit rời rạc (discrete log). Cho trước một số g và x = gk ,để tìm k, ta đơn giản thực hiện phép logarit: k = logg(x). Tuy nhiên, nếu cho trước g, p và (gk mod p), thì quá trình xác định k được thực hiện theo cách khác với cách ở trên và được gọi là logarit rời rạc. Việc tính logarit rời rạc nói chung rất phức tạp, gần như không thực hiện với chi phí thời gian chấp nhận được.
Thuật tóan Diffie-Hellman khá đơn giản như sau:


3.2. Xác thực thông tin:
Xác thực thông tin (message authentication) là cơ chế đảm bảo thông tin truyền đi giữa các thực thể (thường thông qua hệ thống mạng) không bị giả mạo, thay đổi nội dung, thứ tự và thời gian truyền có ý nghĩa.
Trong báo cáo này do nghiên cứu về IPSec nên chỉ đi tìm hiểu về các hàm băm.

3.2.1. Tổng quan về hàm băm:
Nguyên tắc của hàm băm là biến đổi khối thông tin gốc có độ dài bất kỳ thành một đoạn thông tin có độ dài cố định gọi là mã băm (hash code hay message digest). Mã băm được dùng để kiểm tra tính chính xác của thông tin nhận được.
Một hàm băm H áp dụng cho khối thông tin M tạo ra kết quả m, trong tài liệu này, được ký hiệu là H(M) = m.
Thông thường, mã băm được gởi kèm với thông tin gốc, cùng với một cơ chế bảo vệ nào đó giúp mã băm không bị thay đổi hoặc tính lại. Ở phía nhận, hàm băm lại được áp dụng đối với thông tin gốc để tìm ra mã băm mới, giá trị này được so sánh với mã băm đi kèm với thông tin gốc. Nếu hai mã băm giống nhau, nghĩa là thông tin gởi đi không bị thay đổi.

Hình 3.6 – Một ứng dụng điển hình của hàm băm

Chỉ có thể dùng hàm băm để tạo ra mã băm từ thông tin gốc chứ không thể phục hồi được thông tin gốc từ mã băm. Do đặc tính này, các hàm băm bảo mật cũng còn được gọi là hàm băm một chiều (one way hash funtion).

Một hàm băm bảo mật phải có 3 thuộc tính bắt buộc sau đây:
• Tính một chiều (one-way property): Cho trước một đoạn thông tin m bằng với kích thước mã băm của một hàm băm H, không thể tìm được một khối thông tin M sao cho H(M) = m.
• Tính kháng đụng độ yếu (weak collision resistance): Cho trước khối thông tin M, không thể tìm được một khối thông tin M' khác x sao cho H(M) = H(M').
• Tính kháng đụng độ mạnh (strong collision resistance): Không thể tìm được hai khối thông tin M và M' khác nhau sao cho H(M) = H(M').

3.2.2. Hàm băm SHA:
SHA (Secure Hash Function) là hàm băm được viện Tiêu chuNn và Công nghệ hoa kỳ (NIST) chuẩn hoá năm 1993, sau đó được chỉnh sửa năm 1995 và đặt tên là SHA-1, từ đó phiên bản cũ được gọi là SHA-0 và gần như không được dùng đến. SHA-1 dựa chủ yếu cấu trúc của hàm băm MD4.
SHA-1 tạo ra mã băm có chiều dài cố định là 160 bit. Năm 2002, xuất hiện thêm một số phiên bản khác của SHA, chủ yếu là tăng chiều dài mã băm, như: SHA-256 (mã băm dài 256 bit), SHA-384 (mã băm dài 385 bit) và SHA-512 (mã băm dài 512 bit).


Hình 3.7- Thông số các phiên bản SHA

SHA-1 chấp nhận các khối thông tin có kích thước tối đa là 264 bit để tạo ra mã băm với độ dài cố định 160 bit. Tòan bộ khối thông tin được xử lý theo từng khối 512 bit, qua 5 công đoạn:

  • Gắn bit đệm – Append padding bit
  • Gắn chiều dài – Append length
  • Khởi tạo bộ đệm MD – Initialize MD buffer
  • Xử lý thông tin theo từng khối 512 bit – Process message
  • Xuất kết quả - Output


3.2.3. Thuật toán băm MD5:
MD5 là một giải thuật xác thực thông tin được sử dụng phổ biến trong thời gian qua trong cộng đồng Internet, đặc biệt dùng để kiểm tra tính chính xác của các phần mềm mã nguồn mở phát hành trên mạng. Giải thuật này được xây dựng bởi Ron Rivest, và được chuẩn hóa bằng RFC 1321. MD5 có thể xử lý các khối thông tin có độ dài không giới hạn để tạo ra mã băm dài 128 bit. Thông tin gốc cũng được xử lý theo từng đọan 512 bit.
So sánh giữa MD5 và SHA-1:

Hình 3.8 – So sánh MD5 và SHA-1

Với 128 bit mã băm, việc tìm ra hai khối thông tin để có cùng một giá mã băm không còn là điều bất khả thi đối với năng lực của các bộ xử lý hiện nay. Do đó, độ an tòan của MD5 đang bị đe dọa nghiêm trọng, và trong thời gian ngắn sắp tới, mức độ phổ biến của MD5 có thể sẽ giảm đi và được thay thế bằng một giải thuật xác thực khác.

3.3. Quản lý khoá trong IPSec:

IPSec dựa trên kỹ thuật xác thực HMAC (hashed based MAC) và các phương pháp mật mã đối xứng mà cơ bản là DES. Do vậy, vấn đề quản lý và phân phối các khóa bí mật giữa các đầu cuối SA là vấn đề quan trọng trong triển khai IPSec. Có hai cơ chế để quản lý khóa:
- Quản lý khóa bằng tay (manual): người quản trị mạng tạo ra khóa và cài đặt cho các hệ thống đầu cuối. Cơ chế này chỉ phù hợp với các hệ thống có quy mô nhỏ.
- Quản lý khóa tự động (automated): một hệ thống tự động tạo ra và phân phối khóa cho các hệ thống đầu cuối. Hệ thống quản lý khóa tự động IPSec bao gồm hai thành phần là Oakley và ISAKMP.
+ Oakley Key Determination Protocol: Đây là giao thức trao đổi khóa dựa trên thuật tóan mã Diffie-Hellman, có bổ sung thêm các tính năng bảo mật.
+ Internet Security Association and Key Management Protocol (ISAKMP): cung cấp một mô hình chung cho việc quản lý khóa trên Internet, định nghĩa các thủ tục và khuôn dạng riêng.

3.3.1. Giao thức trao đổi khoá Oakley:
Oakley là một giao thức trao đổi khóa đối xứng dựa trên giao thức gốc là Diffie-Hellman. Giao thức này có một số ưu điểm như:
- Khóa được tạo ra ngay khi cần, do đó không cần lưu trữ và giảm được nguy cơ tiết lộ.
- Không cần một cơ sở hạ tầng đặc biệt nào để thực hiện giao thức, ngòai việc hai bên phải thống nhất trước với nhau những giá trị dùng chung
Tuy nhiên, Diffie-Hellman cũng đồng thời tồn tại nhiều nhược điểm:
- Không cung cấp cơ chế nhận dạng đầu cuối
- Có thể bị tấn công dạng xen giữa (Man-in-the-middle) và tấn công từ chối dịch vụ (clogging).
Giao thức Oakley được thiết kế để duy trì những ưu điểm của Diffie-Hellman, đồng thời khắc phục những nhược điểm của nó.
Các tính năng của Oakley bao gồm:
• Dùng cookies để tránh bị tấn công từ chối dịch vụ. Dựa vào bản chất của Diffie-Hellman là dùng các phép tính lũy thừa bậc cao trên các số nguyên lớn, nên hacker chỉ cần liên tiếp gởi các giá trị mạo nhận là Xa, hệ thống sẽ liên tiếp thực hiện các phép tính để xác định khóa và do đó không có khả năng xử lý các công việc khác. Cookies là các số giả ngẫu nhiên, được mỗi bên chọn và trao đổi nhau ngay ở giai đọan khởi tạo, và sau đó dùng lại các cookies này trong các message tiếp theo sau. Việc một máy khác cố ý tạo ra các message giả nhằm tấn công hệ thống sẽ được hệ thống phát hiện bằng cách kiểm tra các giá trị cookies đã thống nhất ban đầu. Để gắn cookies với các thông tin nhận dạng hệ thống, cookies thường được tạo ra dùng hàm băm (MD5) trên các thông tin cố định như địa chỉ IP nguồn, IP đích, port nguồn, port đích và một khóa bí mật được chọn riêng.
• Cho phép các gộp các hệ thống đầu cuối thành nhóm và phân phối các giá trị công khai trong nhóm (p và g). Bằng việc định nghĩa trước các nhóm cùng với các thông số p và g tương ứng, các hệ thống đầu cuối chỉ cần thương lượng với nhau về việc sẽ thiết lập giao thức trao đổi khóa dựa trên nhóm nào, mà không cần phải chọn và trao đổi với nhau các giá trị công khai của thuật tóan.
• Kết hợp dùng các số ngẫu nhiên (nonce) để hạn chế các tấn công dạng phát lại.
• Bổ sung tính năng xác thực đầu cuối để tránh các tấn công dạng xen giữa. Giao thức xác thực trong Oakley có thể dúng chữ ký số, dùng mật mã đối xứng mật mã bất đối xứng.

3.3.2. Giao thức quản lý khóa và thiết lập liên kết bảo mật ISAKMP:
ISAKMP định nghĩa thủ tục thiết lập, duy trì và xóa bỏ các liên kết bảo mật (SA) giữa các hệ thống đầu cuối.
Cấu trúc gói ISAKMP gồm các thành phần như sau:
• Initiator Cookie (64 bits): Cookie của bên khởi tạo. Chú ý rằng khởi tạo không chỉ có nghĩa là thiết lập SA, mà còn có nghĩa là khởi tạo những thủ tục khác như xóa SA, cảnh báo trên SA, …
• Responder Cookie (64 bits): Cookie của bên chấp nhận. Trong message đầu tiên gởi đi thì giá trị này bằng 0 vì chưa nhận được cookie từ bên kia.
• Next Payload (8 bits): Xác định lọai payload của message.
• Major Version (4 bits): Phiên bản chính của ISAKMP.

• Minor Version (4 bits): Phiên bản phụ của ISAKMP. 14
• Exchange Type (8 bits): xác định thủ tục thực hiện.
• Flags (8 bits): Một số bit cờ cần thiết cho quá trình thiết lập SA.
• Message ID (32 bits): Số nhận dạng message
• Length (32 bits): Tổng chiều dài của payload (header và payload) tính bằng bytes.


Hình 3.9 – Cấu trúc gói ISAKMP

3.4. Thiết lập IPSec VPN:
Một đường ngầm IPSec VPN được thiết lập giữa hai bên qua các bước như sau:
Bước 1: Quan tâm đến lưu lượng được nhận hoặc sinh ra từ các bên IPSec VPN tại một giao diện nào đó yêu cầu thiết lập phiên thông tin IPSec cho lưu lượng đó.
Bước 2: Thương lượng dùng Main Mode hoặc Aggressive Mode sử dụng IKE cho kết quả là tạo ra liên kết an ninh IKE (IKE SA) giữa các bên IPSec.
Bước 3: Thương lượng chế độ nhanh (Quick Mode)sử dụng IKE cho kết quả là tạo ra 2 IPSec SA giữa hai bên IPSec.
Bước 4: Dữ liệu bắt đầu truyền qua đường ngầm mã hóa sử dụng kỹ thuật đóng gói ESP hoặc AH (hoặc cả hai).
- Kết thúc đường ngầm IPSec VPN. Nguyên nhân có thể là do IPSec SA kết thúc hoặc hết hạn hoặc bị xóa.
3.4.1. Bước thứ nhất:
Việc quyết định lưu lượng nào cần bảo vệ là một phần trong chính sách an ninhcủa mạng VPN. Chính sách được sử dụng để quyết định cần bảo vệ lưu lượng nào (những lưu lượng khác không cần bảo vệ sẽ được gửi dưới dạng văn bản rõ).
Chính sách an ninh sẽ được phản chiếu trong một danh sách truy nhập. Các bên phải chứa danh sách giống nhau, và có thể có đa danh sách truy nhập cho những mục đích khác nhau giữa các bên. Những danh sách này được gọi là các danh sách điều khiển truy nhập (ACLs- Acess Control List). Nó đơn giản là danh sách truy nhập IP mở rộng của các routers được sử dụng để biết lưu lượng nào cần mật mã. ACLs làm việc khác nhau dựa vào mục đích các câu lệnh permit (cho phép) và denny (phủ nhận) là khác nhau.
Từ khóa permit và deny có ý nghĩa khác nhau giữa thiết bị nguồn và đích:
* Permit tại bên nguồn: cho qua lưu lượng tới IPSec để nhận thực, mật mã hóa hoặc cả hai. IPSec thay đổi gói tin bằng cách chèn tiêu đề AH hoặc ESP và có thể mật mã một phần hoặc tất cả gói tin nguồn và truyền chúng tới bên đích.
* Deny tại bên nguồn: cho đi vòng lưu lượng và đưa các gói tin bản rõ tới bên nhận.
* Permit tại bên đích: cho qua lưu lượng tới IPSec để nhận thực, giải mã, hoặc cả hai. ACL sử dụng thông tin trong header để quyết định. Trong logic của ACL, nếu như header chứa nguồn, đích, giao thức đúng thì gói tin đã được xử lý bởi IPSec tại phía gửi và bây giờ phải được xử lý ở phía thu.
* Deny tại bên đích: cho đi vòng qua IPSec và giả sử rằng lưu lượng đã được gửi ở dạng văn bản rõ.

Khi những từ khóa permit và deny được kết hợp sử dụng một cách chính xác, dữ liệu được bảo vệ thành công và được truyền. Khi chúng không kết hợp chính xác, dữ liệu bị loại bỏ. Bảng sau trình bày kết hợp các lệnh permit và deny và kết quả thực hiện cho các kết hợp.

Hình 3.10 – Kết quả các lệnh permit và deny
3.4.2. Bước thứ hai:
Mục tiêu của IKE là thành lập một kênh an toàn trên đó để trao đổi các thông số bảo mật,như là thông tin chứa trong IPSec SA. Quá trình đàm phán này gọi là giai đoạn 1 (Phase 1) của đàm phán IKE.
Đây là giai đoạn bắt buộc phải có. Pha này thực hiện việc chứng thực và thỏa thuận các thông số bảo mật, nhằm tạo một kênh truyền bảo mật giữa hai đầu cuối. Các thông số sau khi đồng ý giữa 2 bên gọi là SA, SA trong pha này gọi là ISAKMP SA hay IKE SA.
Các thông số bảo mật bắt buộc phải thỏa thuận trong phase 1 này là:
- Phương pháp chứng thực: Preshare-key, RSA
- Thuật toán hash: MD5, SHA
- Thuật toán mã hóa: DES, 3DES, AES

- Số nhóm khóa Diffie-Hellman (version của Diffie-Hellman)
Pha này sử dụng một trong 2 mode để thiết lập SA: Main mode và Aggressive mode.
*Main mode sử dụng 6 message để trao đổi thỏa thuận các thông số với nhau:
- 2 message đầu dùng để thỏa thuận các thộng số của chính sách bảo mật
- 2 message tiếp theo trao đổi khóa Diffire-Hellman
- 2 message cuối cùng thực hiện chứng thực giữa các thiết bị


Hình 3.11 IKE phase 1 sử dụng Main Mode
*Aggressive mode: sử dụng 3 message
- Message đầu tiên gồm các thông số của chính sách bảo mật, khóa Diffie-Hellman
- Message thứ 2 sẽ phản hồi lại thông số của chính sách bảo mật được chấp nhận, khóa được chấp nhận và chứng thực bên nhận
- Message cuối cùng sẽ chứng thực bên vửa gửi.
Theo mặc đinh, Cisco IOS sẽ cố gắng đàm phán Phase 1 sử dụng main mode. Nếu main mode fail, mặc định Cisco IOS tự động thương lượng SA sử dụng Aggressive mode .- Trao đổi khóa Diffie-Hellman
IPSec SA của phase 2 hoàn toàn khác với IKE SA ở phase 1, IKE SA chứa các thông số để tạo nên kênh truyền bảo mật, còn IPSec SA chứa các thông số để đóng gói dữ liệu theo ESP hay AH, hoạt động theo tunnel mode hay transport mode.

3.4.4. Bước thứ tư:
Sau khi đã hoàn thành IKE phase 2 và Quick Mode đã được thiết lập các kết hợp an ninh IPSec SA, lưu lượng có thể được trao đổi giữa các bên VPN thông qua một đường ngầm an toàn. Quá trình xử lý gói tin (mã hóa, mật mã, đóng gói) phụ thuộc vào các thông số được thiết lập của SA.

3.4.5. Kết thúc đường hầm IPSec VPN:
Các kết hợp an ninh IPSec SA kết thúc khi bị xóa bỏ hoặc hết thời gian tồn tại. Khi đó các bên VPN không sử dụng các SA này nữa và bắt đầu giải phóng cơ sở dữ liệu của SA. Các khóa cũng bị loại bỏ. Nếu ở thời điểm này các bên VPN vẫn còn muốn thông tin với nhau thì một IKE phase 2 mới sẽ thực hiện. Trong trường hợp cần thiết thì cũng có thể thực hiện lại từ IKE phase 1. Thông thường, để đảm bảo tính liên tục của thông tin thì các SA mới được thiết lập trước khi các SA cũ hết hạn.


3.4.3. Bước thứ ba:
Bước thứ 3 này chính là IKE pha 2. Đây là phase bắt buộc, đến phase này thì thiết bị đầu cuối đã có đầy đủ các thông số cần thiết cho kênh truyền an toàn. Qua trình thỏa thuận các thông số ở phase 2 là để thiết lập IPSec SA dựa trên những thông số của phase 1. Quick mode là phương thức được sử dụng trong phase 2.
Các thông số mà Quick mode thỏa thuận trong phase 2:
- Giao thức IPSec: ESP hoặc AH
- IPSec mode: Tunnel hoặc transport
- IPSec SA lifetime: dùng để thỏa thuận lại IPSec SA sau một khoảng thời gian mặc định hoặc được chỉ định.



So sánh IPSEC VPN và SSL

IPSEC VPN (Cisco)
http://vnpro.org/forum/showthread.php/38826-Ipsec-vpn
Gồm 2 pha
Pha 1: Cấu hình chính sách IKE (chính sách pha 1)
Pha 2: Cấu hình chính sách IPSec (chính sách pha 2)
Trong quá trình trao đổi khóa thì IKE dùng thuật toán mã hóa đối xứng, những khóa này sẽ được thay đổi theo thời gian. Đây là đặc tính rất hay của IKE, giúp hạn chế trình trạng bẻ khóa của các attacker.
Pha 1 làm nền tảng bảo mật cho quá trình trao đổi của pha 2.
Do IPSEC dùng preshare key nên khả năng mở rộng trong tương lai là không cao


SSL VPN
http://vnpro.org/forum/showthread.php/22436-so-sánh-SHTTP-và-HTTPS
vd: đối với trường hợp HTTPs

SHTTP và HTTPS:
- Giống: mã hóa dữ liệu cho web.
- Khác:
HTTPs dùng phương pháp mã hóa một chiều. (Client cần lấy public key của server)
SHTTP dùng phương pháp mã hóa đối xứng. (cả 2 bên phải giống key, không cần Public key)


HTTPs có thể hiểu các bước như sau:
1. Client tự phát sinh session key (k) "session key là một số gì đó ngẫu nhiên, chỉ dùng 1 lần duy nhất, mỗi lần kết nối nó lại thay đổi => bảo mật hơn mã hóa đối xứng"

2. Máy client yêu cầu server (web server chạy https) gửi Server Certificates (P_server, tức public key của server)

3. Client chứng thực Server Certificate

4. Client: K + P_server = X (X là số k mình mã được)

5. Client gửi X cho server

6. Server nhận X
X - Q_server = k

=> cả 2 bên có k là một session key. Lúc này có thể dùng số k này như là một key đối xứng để mã hóa.

Do đó có thể nói quá trình của HTTPs(SSL) là sự kết hợp giữa mã hóa đối xứng và bất đối xứng.
+ Đối xứng: 2 bên phải giống key nhau mới giải mã được.
+ Bất đối xứng: Mã hóa thì dùng Public key, giải mã thì dùng Private key.

Sở dĩ HTTPs được dùng là vì chỉ cần bên server (web server) mua certificate, client đi mua hàng không cần mua certificate -> không phải mất tiền client, mà lại đỡ phức tạp.
HTTPs gọi là chứng thực 1 chiều vì chỉ có client chứng thực server, server không cần chứng thực client làm gì. Nói dễ hiểu thì người bán không cần biết người mua là ai, người mua cần biết người nào bán tốt để chọn.

Note: Trong bước 3: Client chứng thực Server Certificate
Client sẽ dựa vào 3 thông tin
+ Trust CA (tổ chức cung cấp chứng thực có uy tín như verisign, microsoft)
+ Thời hạn sử dụng certificate (mỗi certificate được cấp đều có thời hạn sử dụng từ 1 đến 5 năm tùy mình mua)
+ Tên truy cập web server có trùng trên trên certificate hay không

=> Nếu một trong các điều kiện này thất bại thì đồng nghĩa sẽ không có bước tiếp theo => dữ liệu không mã hóa vì server không có số k.

Ta thấy rằng SSL sử dụng kết hợp cả 2 Phương pháp mã hóa đối xứng và bất đối xứng.
Vì vậy ta thấy SSL thuận tiện và an toàn hơn so với IPSEC