Giới thiệu

Một phần của tài liệu LUẬN văn VIỄN THÔNG công nghệ IP VPN (Trang 85 - 122)

Như đã trình bày trong chương 2, đặc điểm của IP-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ệ IP-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êm cá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ồn tớ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 IP-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. Bảng 4.1 là tóm tắt một số giao thức, thuật toán an toàn dữ liệu chủ yếu đang được sử dụng. Có thể thấy các giao thức là rất đa dạng và phức tạp và mỗi giao thức có thể sử dụng nhiều thuật toán khác nhau để đạt hiệu quả an toàn dữ liệu cần thiết cho từng ứng dụng cụ thể.

Bảng 4.1: Một số giao thức và thuật toán ứng dụng thông dụng

Giao thức Chức năng Thuật toán

IPSec Cung cấp các dịch vụ dữ liệu tin cậy, xác thực nguồn gốc dữ liệu.

RSA, DH, DES, 3DES, MD5, SHA

PPTP Kết nối VPN RC4

SET Cho phép trao đổi an toàn các thẻ tín dụng

RSA, SHA, DES S/MIME Đảm bảo việc truyền dẫn, lưu trữ,

xác thực, chuyển tiếp an toàn dữ liệu ở mức ứng dụng

RSA, RC5, RC4, RC2, DES, 3DES SSL&TLS Tạo một đường ống an toàn giữa hai

ứng dụng để trao đổi dữ liệu và xác thực lẫn nhau

RSA, DH, RC4, DES, 3DES, SHA, MD5

Đối với IP-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.

Nội dung của chương này nhằm làm rõ vấn đề an toàn dữ liệu của công nghệ IP-VPN dựa trên giao thức IPSec.

4.2 Mật mã

4.2.1 Khái niệm mật mã

Hình 4.1 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 4.1: Các khái niệm chung sử dụng trong các thuật toán mật mã

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.

Cipher Khóa K Khóa K Bản tin được mật mã C Bản tin được mật mã C Mật mã EK(P)=C Mật mã EK(P)=C Giải mã DK(C)=P Giải mã DK(C)=P Bản tin được mật mã C Bản tin được mật mã C Bản tin ban đầu Bản tin ban đầu Bản tin ban đầu Bản tin ban đầu Khóa K Khóa K Plaintext Ciphertext

Đ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òa 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.

4.2.2 Các hệ thống mật mã khóa đối xứng

4.2.2.1 Các chế độ làm việc ECB, CBC

Tùy thuộc vào cách thức chuyển các khối plaintext đầu vào thành các khối ciphertext đầu ra mà các thuật toán mật mã khối được phân loại theo các chế độ làm việc khác nhau, trong đó có ECB, CBC và OFB.

Chế độ sách mã điện tử ECB (Electronic Code Book Mode): đối với thuật toán mật mã khối ECB, một khối plaintext đầu vào được ánh xạ tĩnh thành một khối ciphertext đầu ra. Với những nguồn tài nguyên bộ nhớ hưu hạn, có thể xây dựng một bảng tra cứu (loopup table) hay danh sách mã điện tử (Electronic Code Book) để ánh xạ ngược một khối ciphertexxt về dạng plaintext tương ứng.

Hình 4.2: Chế độ chính sách mã điện tử ECB

Như vậy, các thuật toán mật mã ở chế độ ECB không an toàn đối với những tấn công kiểu phát lại (replay attacks), trong đó kẻ tấn công lưu lại khối ciphertext (có khả năng chứa thông tin mật) để có thể giải mã ở những thời điểm sau đó.

Chế độ chuỗi khỗi mật mã CBC (Cipher Block Chaining Mode) để ngăn chặn các tấn công kiểu phát lại, các thuật toán mật mã khối hiện nay thường hoạt động ở chế độ CBC. Mỗi khối plaintext được XOR với khối ciphertext trước đó rồi mới thực hiện mật mã. Như vậy các khối plaintext giống nhau xuất hiện trong cùng một bản tin sẽ tạo thành các khối ciphertext khác nhau.

Tại phía thu, mỗi ciphertext sau khi thực hiện giải mã sẽ được XOR với khối ciphertext thu được trước đó để nhận được khố plaintext tương ứng. Nếu một lỗi bit xảy ra thì sẽ làm sai toàn bộ khối plaintext tương ứng, cùng với một lỗi bit trong khối plaintext kế tiếp. Như vậy ảnh hưởng của lỗi chỉ giới hạn trong hai khối plaintext mà thôi.

Bất cứ bản tin được mật mã CBC nào cũng phải được khởi tạo bởi một véc tơ IV (Initialization Vector). IV được truyền qua kênh không an toàn ở thời điểm bắt đầu của phiên truyền dẫn. Để tránh các tấn công kiểu lặp lại, giá trị IV chỉ sử dụng một lần. Điều này có thể thực hiện được bằng cách gán giá trị ngẫu nhiên những tăng đơn thuần cho IV. P1 P2 P3 E E E E E E C1 C2 C3 C1 C2 C3 D D D D D D P1 P2 P3

Hình 4.3: Thuật toán mật mã khối ở chế độ CBC 4.2.2.2 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 4.4.

Hình 4.4: Sơ đồ thuật toán DES

P1 P2 P3 E E E E E E IV C2 C3 C1 C2 C3 D D D D D D P1 P2 P3

Phía phát Phía thu

C1

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 =L0R0 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 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 4.5: Mạng Fiestel

a) 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.

b) 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.

c) 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.

d) Phân phối khóa

Nhược điểm lớn nhất của các hệ thống mật mã khóa đối xứng là vấn đề phân phối các khóa bí mật thông qua kênh không an toàn. Số lượng các khóa bí mật cần thiết khi sử dụng một thuật toán mật mã khóa đối xứng với n đối tác tham gia sẽ là

2 / ) 1 ( 2 =n n

Cn . Có thể thấy việc phân phối các khóa bí mật sẽ trở nên hết sức khó khăn khi số lượng đối tác tham gia trao đổi thông tin lớn. Hình 4.6 chỉ ra việc phân phối khóa trong hệ thống mật mã khóa đối xứng.

Hình 4.6: Phân phối khóa trong hệ thống mật mã khóa đối xứng 4.2.2.3 Giới thiệu AES (Advanced Encryption Standard)

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.

4.2.2.4Thuật toán mật mã luồng (stream cipher)

Mật mã luồng dựa trên một bộ tạo luồng khóa (key stream generator) để tạo nên một chuỗi số giả ngẫu nhiên (pseudo-random sequence) khởi tạo bởi một khóa bí mật (secret key). Chuỗi khóa được XOR với chuỗi bit plaintext. Tại phía thu, một bộ tạo khóa giống hệt khởi tọa bởi cùng một khóa bí mật được đồng bộ với chuỗi ciphertext đầu vào. Phía thu phục hồi plaintext bằng cách XOR chuỗi ciphertext với chuỗi khóa đã đồng bộ.

Hình 4.7: Mật mã luồng

Khóa Khóa

Bộ tạo chuỗi giả ngẫu nhiên Bộ tạo chuỗi giả ngẫu nhiên

Luồng bit Plaintext

Luồng bit Plaintext Luồng bit ciphertextLuồng bit ciphertext

Luồng bit plaintext 1 1 1 1 1 1

Luồng bít giả ngẫu nhiên 1 0 0 1 1 0

4.2.3 Hệ thống mật mã khóa công khai

4.2.3.1 Giới thiệu và lý thuyết về mã khóa công khai

Hệ thống mật mã khóa công khai còn được gọi là hệ thống mật mã khóa không đối xứng, vì theo như có chế mật mã này thì khóa được dùng để mã hóa gói tin và khóa được dùng để giải mã là khác nhau. Sự phát triển của mật mã khóa công khai có ý nghĩa rất lớn và tạo ra một cuộc cách mạng trong toàn bộ lịch sử của mật mã khóa. Những thuật toán công khai đều dựa trên những hàm toán học hơn là những nhóm thay thế và hoán vị trong mật mã khóa cổ điển. Trong hệ thống mật mã khóa công khai thì mỗi đối tác tham gia sẽ sở hữu một cặp khóa duy nhất, bao gồm một khóa bí mật (được lưu bí mật bởi đối tác) và một khóa công khai tương ứng (được phát trong các thư mục công cộng). Hai khóa này có quan hệ với nhau để đảm bảo rằng khóa công khai thực hiện chức năng mã hóa và khóa bí mật thực hiện chức năng giải mã.

Các bước cần thiết trong quá trình mã hóa khóa công khai:

• Một hệ thống cuối trong mạng tạo ra một cặp khóa để dùng cho mã hóa và giải mã đoạn tin mà nó sẽ nhận.

• Mỗi hệ thống công bố rộng rãi khóa mã hóa bằng cách đặt khóa vào một thanh ghi hay một file công khai. Đây là khóa công khai, khóa còn lại được giữ riêng.

• Nếu A muốn gửi một đoạn tin tới B thì A sẽ mã hóa đoạn tin bằng khóa công khai của B.

• Khi B nhận được đoạn tin mã hóa, nó giải mã bằng khóa bí mật của mình. Không một người nào khác có thể giải mã đoạn tin mã này bởi vì chỉ minh B biết khóa bí mật đó thôi.

Hình 4.8: Sơ đồ mã khóa công khai

Với cách tiếp cận này, tất cả những người tham gia có thể truy xuất khóa công khai. Khóa bí mật được tạo ra bởi từng các nhân, vì vậy không bao giờ được phân bố. Ở bất kì thời điểm nào, hệ thống cũng có thể chuyển đổi cặp khóa để đảm bảo tính bảo mật mà không cần sử dụng kênh thông tin an toàn để truyền khóa bảo mật.

Khóa công khai

Đoạn tin

Khóa bí mật Đoạn tin

được mật mã Đoạn tin

User A Giải thuật

mã hóa Giải thuật

mã hóa Giải thuật giải mã Giải thuật

giải mã User B

Kênh truyền

Các yêu cầu của mật mã khóa công khai:

 Công việc tính toán thì dễ dàng cho người nhận B: tạo cặp khóa công khai KU và khóa bí mật KR.

 Công việc tính toán thì dễ dàng cho người nhận A: biết khóa công khai và đoạn tin cần mã hóa M, để tạo mật mã tương ứng C=EKub(M).

Một phần của tài liệu LUẬN văn VIỄN THÔNG công nghệ IP VPN (Trang 85 - 122)

Tải bản đầy đủ (DOC)

(122 trang)
w