Hệ thống mật mã: Phần 2 - Dịch vụ mật mã

Trong bài chi tiết đầu tiên của loạt bài hệ thống mật mã, chúng ta sẽ nghiên cứu các vấn đề sau:

  • Truyền thông an toàn
  • Mật mã học
  • Phân tích mật mã

1. Truyền thông an toàn

Truyền thông an toàn

Nhiệm vụ của nhà quản trị mạng là đảm bảo an toàn cho hạ tầng mạng (bao gồm các thiết bị router, switch, server, host) và đảm bảo dữ liệu được truyền an toàn trong phạm vị nội bộ cũng như ra bên ngoài.

Có 3 yêu cầu sau đối với việc truyền thông an toàn:

  • Authentication (tính xác thực): đảm bảo rằng dữ liệu không bị giả mạo và được gửi từ một nguồn có thể chứng minh. Ví dụ: việc sử dụng mã cá nhân PIN trong giao dịch tại ngân hàng. Chú ý sự khác nhau giữa “tính không chối bỏ” (nonrepudiation) với “tính xác thực”. Với dịch vụ nonrepudation, người gửi được xác định là duy nhất, kèm theo những đặc điểm riêng đính kèm theo dữ liệu và do đó không thể chối bỏ vai trò là nguồn truyền tin. Một ví dụ để phân biệt “tính xác thực” và “tính không chối bỏ” là sự trao đổi dữ liệu giữa 2 máy tính trong cùng công ty khác với sự trao đổi dữ liệu giữa một khách hàng với một e-commerce website. Trong cùng công ty, 2 máy tính khi trao đổi dữ liệu với nhau thì không cần các tham số chứng minh là nguồn truyền tin. Các bạn sẽ gặp lại tính chất nonrepudiation trong phần triển khai VPN với CA.

Authentication (tính xác thực)

  • Integrity (tính toàn vẹn): tương tự như chức năng checksum trong đóng gói dữ liệu, đảm bảo dữ liệu không bị thay thế và sửa đổi. Ví dụ: việc gắn sáp lên phong bì thư.

Integrity (tính toàn vẹn):

  • Confidentiality (tính bí mật): đảm bảo rằng chỉ người nhận mới có thể đọc được dữ liệu và kẻ đánh cắp thì không giải mã được. Ví dụ: phương pháp mã hóa của Julius Caesar thực với nguyên tắc là chuyển vị trí các phần tử trong bảng chữ cái.

Confidentiality (tính bí mật)

2. Mật mã học

Authentication, integrity, và confidentiality là các thành phần của mật mã học. Các thuật toán đặc biệt (còn gọi là cipher) được sử dụng để mã hóa và giải mã dữ liệu. Những phương pháp dùng để tạo ra dữ liệu được mã hóa (ciphertext) gồm có:

  • Transposition (hoán vị)
  • Substitution (thay thế)
  • Vernam

2.1. Transposition

Khi sử dụng thuật toán hoán vị, các chữ cái không bị thay thế mà đơn giản là chúng bị sắp xếp lại. Ví dụ: dữ liệu gốc (plaintext, cleartext) là “FLANK EAST ATTACK AT DAWN” được mã hóa thành “NWAD TAKCATTA TSAE KNALF”. Trong ví dụ này, chìa khóa (key) là đảo ngược ký tự.
Một ví dụ khác là thuật toán “rail fence”. Trong ví dụ này, key=3, nghĩa là dùng 3 đường thẳng khi thực hiện mã hóa. Chúng ta đọc văn bản theo đường chéo lên xuống, như sau:
F...K...T...A...T...N.
.L.N.E.S.A.T.C.A.D.W..
..A...A...T...K...A...

Transposition

Một số thuật toán mã hóa hiện đại, như DES và 3DES vẫn kết hợp sử dụng phương pháp hoán vị.

2.2. Substitution

Ý tưởng của thuật toán là thay thế một ký tự này bằng một ký tự khác. Trong kiểu đơn giản nhất, thuật toán vẫn giữ nguyên trật tự của dữ liệu gốc.

Ví dụ 1: Caesar cipher

Với key=3, ký tự D sẽ thay thế cho ký tự A, E thay cho B …

Caesar cipher

Thuật toán Caesar dễ bị giải mã vì toàn bộ dữ liệu được mã hóa với cùng một key shift.

Ví dụ 2: Vigenere cipher

Thuật toán này dựa trên Caesar cipher, ngoại trừ việc sử dụng các key shift khác nhau. Các shift key này được xác định nhờ shared secret key (đã thống nhất trước giữa bên truyền và nhận). Dưới đây là Vigenere Cipher Table:

 Vigenere cipher

Giả sử shared secret key là: SECRETKEY. Bên truyền sẽ sử dụng key này để mã hóa plaintext “FLANK EAST ATTACK AT DAWN”, như sau:

  • Chữ F trong từ “FLANK” được mã hóa bằng ký tự X tại giao điểm của cột F và hàng S (SECRETKEY)
  • L (FLANK) được mã hóa bằng P tại giao điểm của cột L và hàng E (SECRETKEY)
  • A (FLANK) được mã hóa bằng C tại giao điểm của cột A và hàng C (SECRETKEY)
  • N (FLANK) được mã hóa bằng E tại giao điểm của cột N và hàng R (SECRETKEY)
  • K (FLANK) được mã hóa bằng O tại giao điểm của cột K và hàng E (SECRETKEY)

Và tiếp tục cho phần còn lại của dữ liệu. Khi sử dụng Vigenere cipher, nếu message dài hơn key, thì key sẽ dùng lặp lại. Ví dụ: SECRETKEYSECRETKEYSEC được sử dụng để mã hóa “FLANK EAST ATTACK AT DAWN”, như sau:

  • Secret key: SECRE TKEY SECRET KE YSEC
  • Plaintext: FLANK EAST ATTACK AT DAWN
  • Cipher text: XPCEO XKUR SXVRGD KX BSAP

Note: thuật toán này vẫn có thể crack.

2.3. Vernam

Gilbert Vernam là một kỹ sư làm việc tại phòng nghiên cứu AT&T Bell. Năm 1971, ông đã phát minh ra stream cipher và đồng phát minh ra thuật toán one-time pad (OTP). Về lý thuyết, OTP là thuật toán duy nhất chứng minh được là không thể crack, ngay cả với tài nguyên vô tận (do đó có thể chống lại brute-force attack). Để đạt mức độ bảo mật, tất cả những điều kiện sau phải được thỏa mãn:

  • Độ dài của khóa phải đúng bằng độ dài văn bản cần mã hóa.
  • Khóa chỉ được dùng một lần.
  • Khóa phải là một số ngẫu nhiên thực.

3. Phân tích mật mã

Phân tích mật mã nhằm xác định ý nghĩa của thông tin đã được mã hóa (cracking the code) mà không cần đến shared secret key.

Cryptanalysis sử dụng một số phương pháp sau:

  • Brute-Force Attack
  • Ciphertext-Only Attack
  • Known-Plaintext Attack
  • Chosen-Plaintext Attack
  • Chosen-Ciphertext Attack
  • Meet-in-the-Middle

3.1. Brute-Force Attack

Attacker sẽ cố gắng thử tất cả các key có thể có. Kiểu tấn công này áp dụng được cho tất cả các thuật toán mã hóa. Nhìn chung, brute-force attack sẽ thành công nếu dò được khoảng 50% keyspace (không gian key). Để ngăn chặn kiểu tấn công này, các thuật toán mã hóa hiện đại cần có keyspace đủ lớn để attacker phải tiêu tốn quá nhiều chi phí và thời gian nếu dùng brute-force attack.

Brute-Force Attack

Hiện nay, bằng brute-force attack, attacker có thể crack DES trong vòng 22h; còn với AES thì cần tới 149 triệu năm.

3.2. Ciphertext-Only Attack

Trong kiểu tấn công này, attacker chỉ có mẫu dữ liệu đã mã hóa (ciphertext). Công việc của hắn là khôi phục ciphertext của càng nhiều dữ liệu càng tốt. Attacker sẽ sử dụng phương pháp phân tích thống kê để suy đoán plaintext, thậm chí là key. Kiểu tấn công này không còn áp dụng trong thực tế vì các thuật toán hiện đại sẽ tạo ra các giá trị ngẫu nhiên tạm thời để chống lại phương pháp phân tích thống kê.

3.3. Known-Plaintext Attack

Trong kiểu tấn công này, attacker có ciphertext của một vài dữ liệu và cũng có được ít nhiều plaintext. Với hiểu biết về giao thức, kiểu tập tin, hoặc các chuỗi đặc trưng có trong dữ liệu gốc, attacker sử dụng brute-force để cố tìm key. Known-Plaintext Attack là kiểu tấn công có tính thực tế nhất. Để phòng chống kiểu tấn công này, các thuật toán hiện đại cần tạo ra keyspace khổng lồ. Vì để thành công, attacker cần dò tìm trong tối thiểu ½ keyspace.

3.4. Chosen-Plaintext Attack

Trong kiểu tấn công này, attacker chọn lọc dữ liệu của thiết bị mã hóa rồi thực thi mã hóa và quan sát kết quả. Kiểu tấn công này hiệu quả hơn so với Known-Plaintext Attack nhưng vẫn khó áp dụng vào thực tế vì attacker cần truy cập được vào hệ thống mạng tin cậy và đánh cắp được cả ciphertext và plaintext.

3.5. Chosen-Ciphertext Attack

Trong kiểu tấn công này, attacker có thể chọn lọc các mẫu ciphertext khác nhau để được giải mã và có quyền truy cập tới plaintext đã giải mã. Với cặp mẫu ciphertext/plaintext attacker thực thi dò tìm key. Phương pháp tấn công này tương tự với chosen-plaintext attack và cũng khó áp dụng vào thực tế.

3.6. Meet-in-the-Middle

Kiểu tấn công này còn được gọi là plaintext attack. Attacker biết một phần của plaintext và ciphertext tương ứng. Hắn sẽ dùng các key có thể có để mã hóa plaintex, giải mã ciphertext cho đến khi có kết quả trùng khớp.

Meet-in-the-Middle

3.7. Phương pháp phân tích tần suất (Frequency Analysis)

So với brute-force, phân tích theo tần suất là phương pháp có tính khoa học hơn. Phương pháp này dựa trên một thực tế là có những chữ cái tiếng Anh được sử dụng nhiều hơn chữ khác. Ví dụ: trong ngôn ngữ tiếng Anh, chữ cái E,T và A được sử dụng nhiều nhất. Sử dụng ít nhất là chữ cái J,Q,X và Z. Đặc điểm này có thể giúp giải mã dữ liệu.

Ví dụ: chúng ta có ciphertext được thực hiện bởi thuật toán Caesar là IODQN HDVW DWWDFN DW GDZQ. Trong chuỗi này, có 6 chữ cái D, và 4 chữ W. Theo nhận xét ở trên, các chữ D,W trong ciphertext có thể là chữ E,T hoặc A trong plaintext. Thay thế thử và chúng ta tìm ra chữ D đã mã hóa chữ A, chữ W thay thế chữ T.

Phương pháp phân tích tần suất

Như vậy là chúng ta đã xong về phần Dịch vụ mã hóa. Trong phần tiếp theo, mời các bạn cùng tìm hiểu sâu hơn về tính toàn vẹn và tính xác thực của mã hóa.

Thứ Tư, 15/06/2022 19:56
31 👨 1.094
0 Bình luận
Sắp xếp theo
    ❖ Kiến thức cơ bản