3.4.3.1. Các mức bảo vệ an toàn mạng
Vì không có một giải pháp an toàn tuyệt đối nên người ta thường phải sử dụng đồng thời nhiều mức bảo vệ khác nhau tạo thành nhiều lớp “rào chắn” đối với các hoạt động xâm phạm. Việc bảo vệ thông tin trên mạng chủ yếu là bảo vệ thông tin cất giữ trong máy tính, đặc biệt là trong các server của mạng. Bởi thế ngoài một số biện pháp nhằm chống thất thoát thông tin trên đường truyền, mọi cố gắng tập trung vào việc xây dựng các mức “rào chắn” từ ngoài vào trong cho các hệ thống kết nối vào mạng [2, 3].
- Lớp bảo vệ trong cùng là quyền truy nhập nhằm kiểm soát các tài nguyên (thông tin) của mạng và quyền hạn (có thể thực hiện những thao tác gì) trên các tài nguyên đó.
- Lớp bảo vệ tiếp theo là đăng nhập/mật khẩu: thực ra đấy cũng là kiểm soát truy nhập nhưng không phải truy nhập ở mức thông tin mà là ở mức hệ thống (truy nhập vào mạng). Đây là phương pháp bảo vệ phổ biến nhất vì nó đơn giản, ít tốn kém và cũng rất có hiệu quả. Mỗi người sử dụng muốn được vào mạng để sử dụng các tài nguyên mạng đều phải đăng nhập bằng tên và mật khẩu trước.
- Để bảo mật thông tin truyền trên mạng, người ta sử dụng các phương pháp mã hóa. Dữ liệu được biến đổi từ dạng nhận thức được sang dạng không nhận thức được theo một thuật toán nào đó (tạo mật mã) và sẽ được biến đổi ngược lại (giải mã) ở trạm nhận. Đây là lớp bảo vệ thông tin rất quan trọng và được sử dụng rộng rãi trong môi trường mạng.
- Bảo vệ vật lý: nhằm ngăn cản các truy nhập vật lý bất hợp pháp vào hệ thống. Thường dùng các biện pháp truyền thống như ngăn cấm tuyệt đối người không phận sự vào phòng đặt máy mạng, dùng ổ khóa trên máy tính, hoặc cài đặt chế độ báo động khi có truy nhập vào hệ thống.
- Để bảo vệ từ xa một máy tính hoặc cho cả một mạng nội bộ, người ta thường dùng các hệ thống tường lửa. Chức năng của tường lửa là ngăn chặn các thâm nhập trái phép và thậm chí có thể lọc bỏ các gói tin mà không muốn gửi đi hoặc nhận vào. Phương thức bảo vệ này được sử dụng nhiều trong môi trường liên mạng.
3.4.3.2. Bảo vệ thông tin bằng mật mã
Có hai cách tiếp cận để bảo vệ thông tin bằng mật mã: đó là theo đường truyền (link-oriented security) và từ nút-đến-nút (end-to-end). Trong cách thứ nhất thông tin được mã hóa để bảo vệ trên đường truyền giữa hai node, không quan tâm đến nguồn và đích của thông tin đó. Ưu điểm của cách tiếp cận này là có thể bí mật được luồng thông tin giữa nguồn và đích và có thể ngăn chặn được toàn bộ các vi phạm nhằm phân tích thông tin trên mạng. Nhược điểm của nó là vì thông tin chỉ được mã hóa trên đường truyền nên đòi hỏi các node phải được bảo vệ tốt.
Ngược lại, cách thứ hai thông tin được bảo vệ trên toàn đường đi từ nguồn tới đích. Thông tin được mã hóa ngay khi mới được tạo và chỉ được giải mã khi đến đích. Ưu điểm chính của tiếp cận này là người sử dụng hoặc máy chủ có thể dùng nó mà không ảnh hưởng gì đến người sử dụng hoặc máy chủ khác. Nhược điểm của phương
pháp này là chỉ có dữ liệu người sử dụng được mã hóa, còn các thông tin điều khiển phải được giữ nguyên để có thể xử lý tại các node.
Mật mã dữ liệu:
Mật mã dữ liệu được thực hiện theo quy trình được mô tả trong hình sau:
Hình 3-21: Sơ đồ quy trình mật mã
Trong đó:
- Văn bản gốc: là văn bản chưa được mã hóa
- Khóa: gồm một số hữu hạn các bit thường được biểu thị dưới dạng các xâu ký tự chữ số, số thập phân hoặc thập lục phân. Mặc dù độ dài của khóa có thể lấy bằng văn bản gốc nhưng thực tế thường dùng các khóa 8 ký tự.
Nếu gọi:
- M là văn bản gốc - C là văn bản mật mã - E là hàm mã hóa - D là hàm giải mã
Ta có (đối với mã hóa): C = E(M)
Và (đối với giải mã): M = D(C) = D(E(M))
Khóa KE được dùng để mã hóa, còn KD được dùng để giải mã.
Phương pháp truyền thống thường dùng cùng một khóa để mã hóa và giải mã. Lúc đó khóa phải được giữ bí mật tuyệt đối. Người ta thường gọi đó là hệ mã hóa cổ điển hay đối xứng.
Một phương pháp khác sử dụng khóa công khai (còn gọi là phương pháp mã hóa bất đối xứng) trong đó khóa để mã hóa và khóa để giải mã là khác nhau. Các khóa này tạo thành một cặp chuyển đổi ngược nhau và không khóa nào có thể suy ra được từ khóa kia. Khóa mã hóa có thể công khai nhưng khóa giải mã thì phải được giữ bí mật. Người ta còn phân biệt hai loại khóa:
- Các khóa dùng trong thời gian dài, được gọi là khóa chính. Được dùng để kiểm tra tính xác thực của các đối tác tham gia truyền thông và để truyền các khóa làm việc một cách an toàn.
- Các khóa chỉ dùng trong khuôn khổ một cuộc truyền thông giữa các đối tác được gọi là khóa làm việc hay khóa phiên. Được dùng riêng để mã hóa thông tin trên một liên kết đơn.
Một vấn đề quan trọng là việc quản lý các khóa đó, bao gồm tất cả các thủ tục để phát sinh, phân phối, lưu trữ, nhập, sử dụng và hủy bỏ hoặc bảo tồn các khóa mật mã.
3.4.3.3. Các phƣơng pháp mật mã
a) Hệ mật mã chuẩn DES (Data Encryption Standard)
Hệ mã hóa DES được xây dựng vào những năm đầu thập kỷ 70 thế kỷ 20, Ủy ban tiêu chuẩn quốc gia Mỹ đã tuyên bố một khuyến nghị cho các hệ mật mã trong hồ sơ quản lý liên bang. Điều này cuối cùng đã dẫn tới sự phát triển của Chuẩn mã hóa dữ liệu DES và nó trở thành một hệ chuẩn mã hóa được sử dụng rộng rãi nhất trên thế giới. DES được IBM phát triển và xem như là một cải biến của hệ mật LUCIPHER DES và được công bố lần đầu tiên vào ngày 17/03/1975. Sau nhiều cuộc tranh luận công khai cuối cùng DES được công nhận như một chuẩn liên bang vào ngày 23/11/1976 và được công bố vào ngày 15/01/1977. Vào năm 1980, “Cách dùng DES” được công bố. Từ đó cứ chu kỳ 5 năm DES được xem xét lại một lần bởi Uỷ ban tiêu chuẩn quốc gia Mỹ và lần gần đây nhất là năm 1994 [1].
Mô tả thuật toán DES:
Một bản rõ được tách thành nhiều khối x là một xâu có độ dài là 64 bit, có khoá K
là một xâu có độ dài là 56 bit và cho ra bản mã cũng là một xâu y có độ dài là 64 bit. Quy trình của thuật toán được thực hiện qua 3 bước như sau:
Đặt x0 = IP(x) = L0R0 với L0 = 32 bit đầu tiên ; và R0 là 32 bit cuối.
2o Tiếp theo thực hiện 16 vòng mã hoá với những phép toán giống nhau, ở đây dữ liệu được kết hợp với khoá thông qua hàm f theo quy tắc sau:
Li = Ri-1, Ri Li1 f(Ri1,Ki) Trong đó:
- : ký hiệu phép toán hoặc loại trừ của hai xâu bit (cộng theo modulo 2) - f: là một hàm mà ta sẽ mô tả sau
- K1, K2, …..,K16: là các xâu bit có độ dài 48 bit được tính như một hàm của khóa K. Ki là một phép hoán vị bit trong K, K1, K2, ….., K16 tạo thành một bảng khoá.
3o Cuối cùng áp dụng phép hoán vị ngược IP-1 cho xâu bit R16L16 ta thu được bản mã y.
y = IP-1(R16L16). (Lưu ý thứ tự bit R16 và L16)
Sơ đồ mô tả thuật toán DES như sau:
Mô tả hàm f:
1o Mở rộng xâu bit R độ dài 32 bit thành một xâu bit có độ dài 48 bit theo hàm mở rộng cố định E: R -> E(R), E(R) gồm 32 bit của cũ R với 16 của R xuất hiện 2 lần.
2o Tính E(R) K và viết kết quả thành một chuỗi 8 xâu, một xâu có độ dài 6 bit (8*6 = 48): B = B1 B2 B3 B4 B5 B6 B7 B8.
3o Dùng 8 bảng S1,S2,…..,S8. Mỗi Si là một bảng cố định r*c (0r3, 0c15) gồm các số nguyên từ 0 -> 15 thực hiện thay thế biến mỗi Bj thành Cj (Bj là xâu 6 bit, Cj là xâu 4 bit). Giả sử xâu Bj biểu diễn như sau: Bj = b1 b2 b3 b4 b5 b6. Tính Sj(Bj) như sau:
- Hai bit b1 b6 xác định biểu diễn nhị phân của hàng r trong Sj (0r3). - Bốn bit b2 b3 b4 b5 xác định biểu diễn nhị phân của cột c trong Sj (0c15). Biểu diễn nhị phân của nội dung Sj(r, c) cho ta 4 bit Cj. Tương tự như vậy cho Cj = Sj (Bj) (j = 1..8).
Xâu bit C = C1 C2 … C8 có độ dài 32 bit được hoán vị theo phép hoán vị cố định P để cho ra kết quả: P(C) ->f(R, K).
Tính toán khoá bảng khoá Ki:
Mô tả việc tính toán bảng khóa từ khoá K. K là một xâu bit dài 64, trong đó 56 bit là khóa và 8 bit để kiểm tra tính chẵn lẻ nhằm phát hiện sai. Các bit kiểm tra tính chẵn lẻ nằm ở các vị trí 8, 16, 24, …, 56, 64 được xác định sao cho mỗi byte chứa một số lẻ các số “1”. Bởi vậy mỗi sai sót đơn lẻ được xác định trong mỗi nhóm 8 bit. Các bit này không tham gia vào quá trình tính toán. Các bước để tính toán khoá được mô tả theo các bước sau:
1o Với một khoá K có độ dài 64 bit cho trước, ta loại bỏ các bit kiểm tra tính chẵn lẻ và hoán vị các bit còn lại của K theo phép hoán vị PC-1.
PC-1( K ) = C0D0
Trong đó C0 là 28 bit đầu và D0 là 28 bit cuối cùng của PC-1(K)
2o Với i = 1, 2, 3, …., 16 ta tính:
Ci = LSi ( Ci-1 )
Di = LSi (Di-1 )
LSi là phép chuyển dịch vòng sang trái, chuyển dịch một vị trí nếu i = 1, 2, 9, 16 và chuyển dịch hai vị trí với những giá trị còn lại.
3o Với mỗi i = 1, ……, 16, Ki được tính bởi phép hoán vị PC-2 từ CiDi
Ki = PC-2(CiDi)
Sơ đồ tính bảng khoá nhƣ sau:
Sau khi tính toán: 1 trong 16 khoá K1 như sau:
K1 10 51 34 60 49 17 22 28 39 54 37 4 33 57 2 9 19 42 47 30 5 53 23 29 3 35 26 25 44 58 61 21 38 65 15 20 59 1 36 27 18 41 45 14 13 62 55 31 Ki: i = 2..16; tương tự
Các hàm cụ thể trong DES:
* Bảng hoán vị ban đầu IP: Bảng này có nghĩa là bit 58 của x
là bit đầu tiên của IP, bit 50 của x là bit
thú 2 của IP…….. * Bảng hoán vị cuối cùng IP-1: 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 *Hàm mở rộng E: (Phép hoán vị mở rộng) 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 * Các tiêu chuẩn chọn hộp S:
- Mỗi hàng của hộp S phải là một hoán vị của 0, 1, …,15.
- Không một hộp S nào là một hàm tuyến tính hay apphin của các đầu vào của nó.
- Thay đổi một bit vào ở một hộp S gây ra sự thay đổi ít nhất hai bit ra của nó. - Nếu hai xâu vào của một hộp S giống nhau ở hai bit đầu và hai bit cuối thì hai
xâu ra phải khác nhau ít nhất ở hai bit.
- Nếu hai xâu vào của một hộp S khác nhau ở hai bit đầu và giống nhau ở hai bit cuối thì hai xâu ra phải khác nhau.
58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
- Với mỗi hộp S, nếu ta cố định một bit vào xét giá trị của một bit ra nào đó, thì số các xâu vào tạo ra giá trị 0 ở bit ra đó cũng phải xấp xỉ bằng số các xâu vào tạo ra giá trị 1 ở bit ra đó.
* Do đó ta có các khối S: từ S1 đến S8: S1 S2 S3 S4 S5 1 6 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |--- 0 0 |14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 1 | 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 1 0 | 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 1 1 |15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 7 12 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |--- 0 0 |15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 0 1 | 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 1 0 | 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 1 1 |13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 13 18 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |--- 0 0 |10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 0 1 |13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 1 0 |13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 1 | 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 19 24 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |--- 0 0 | 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 0 1 |13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 1 0 |10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 1 1 | 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 25 30 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |--- 0 0 | 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 0 1 |14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 1 0 | 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 1 1 |11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S6 S7 S8 * Bảng chuyển vị P: *Phép hoán vị PC – 1: *Phép hoán vị PC – 2: 43 48 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |---