Mật mã khoá bí mật hay còn gọi là mật mã đối xứng ra đời từ rất sớm. Từ khi máy tính chưa ra đời, mật mã khoá bí mật đã đóng vai trò quan trọng trong việc mã hoá thông tin. Phần này trình bày các nội dung liên quan đến việc sử dụng mật mã khoá bí mật trong việc bảo mật thông tin trên mạng máy tính.
Mã hoá đối xứng hay còn gọi là mã hoá cổ điển là thuật toán mã hoá mà tại đó khoá mã hoá có thể tính toán ra được từ khoá giải mã. Trong rất nhiều trường hợp, khoá mã hoá và khoá giải mã là giống nhau. Thuật toán này còn có nhiều tên gọi khác nhau như: mã khoá bí mật, thuật toán một khoá, …Thuật toán này yêu cầu người gửi và người nhận phải thoả thuận một khoá trước khi thông báo được gửi đi, và khoá này phải được cất giữ bí mật. Độ an toàn của thuật toán này phụ thuộc vào khoá. Nếu để lộ khoá có nghĩa bất kỳ người nào cũng có thể mã hoá và giải mã thông báo trong hệ thống mã hoá.
1. Mô hình mật mã khoá đối xứng
Tại nơi gửi (nguồn thông báo) có một bản rõ R được sinh ra. Để mã R cần có một khoá K. Nếu K được sinh tại nguồn thông báo thì nó phải được chuyển tới đích thông báo theo một kênh an toàn. Hoặc một bên thứ ba có thể sinh khoá và chuyển một cách an toàn tới cả nguồn và đích.
Với thông báo R và khoá K, thuật toán mã E sẽ tạo ra bản mã M = EK(R).
Tại nơi nhận (đích thông báo) với bản mã M và khoá mã K, thuật toán dịch D sẽ tạo ra bản rõ R = DK(M).
Một kẻ tấn công thu được MY nhưng không có khoá K, anh ta phải cố gắng khôi phục R hoặc khoá K. Thừa nhận rằng kẻ tấn công biết thuật toán mã E và thuật toán giải mã D. Nếu kẻ tấn công chỉ quan tâm đến nội dung thông báo, họ cố khôi phục R bằng việc sinh ra một ước lượng R' của R. Tuy nhiên thường kẻ tấn công mong muốn tìm ra khoá K để giải mã các thông báo tiếp theo, bằng cách sinh ra một khoá ước lượng K' của K.
2. Một số hệ mật khoá đối xứng
a. Chuẩn mã hoá dữ liệu DES (Data Encryption Standards)
DES (Data Encryption Standards) là mã khối được đưa ra năm 1976 bởi NBS –
văn phòng chuẩn Quốc gia Hoa kỳ (bây giờ là NIST - Viện chuẩn và công nghệ Quốc gia). DES là mã khối với mỗi khối dữ liệu 64 bít và dùng khoá mã dài 64 bít (56 bit khoá và 8 bit chẵn lẻ kiểm soát lỗi). Nó được sử dụng rộng rãi và đã được tranh luận kỹ về mặt an toàn.
Sơ đồ mã DES Một số đặc điểm của chuẩn mã hoá DES:
- Sử dụng khoá 56 bits
- Xử lý khối dữ liệu vào 64 bits, biến đổi thành khối ra 64 bits
- Mã hoá và giải mã được sử dụng cùng một khoá
- Được thiết kế để chạy trên phần cứng. DES thường được sử dụng để mã hoá các luồng dữ liệu mạng và mã hoá dữ liệu được lưu trữ trên đĩa.
Đánh giá độ an toàn của DES
Tính bảo mật của một hệ mã hoá đối xứng là một hàm hai tham số: độ phức tạp của thuật toán và độ dài của khoá.
Giả sử thuật toán sử dụng mã hoá là an toàn, có nghĩa là chỉ có một phương pháp duy nhất để phá vỡ hệ thống mật mã là cố gắng thử mọi khoá có thể. Phương pháp này được gọi là Brute-force attack (tấn công vét cạn). Nếu khoá có độ dài 8 bít, suy ra sẽ có 28=256 khoá. Vì vậy, sẽ mất nhiều nhất 256 lần thử để tìm ra khoá đúng. Nếu khoá có độ dài 56 bít, thì sẽ có 256 khoá có thể sử dụng. Giả sử một SupperComputer có thể thử một triệu khoá trong một giây, thì nó sẽ cần 2000 năm để tìm ra khoá đúng. Nếu khoá có độ dài 64 bít, thì với chiếc máy trên sẽ cần 600,000 năm để tìm ra khoá đúng trong số 264 khoá. Nếu khoá có độ dài 128 bít, thì sẽ mất 1025 năm để tìm ra khoá đúng.
tốn một khoảng thời gian là 10597 năm để tìm ra khoá. Lúc đó vũ trụ có lẽ không còn tồn tại nữa.
Khi IBM đưa ra thiết kế đầu tiên của hệ mã hoá LUCIFER, nó có khoá dài 128 bits. Ngày nay, DES đã trở thành một chuẩn về mã hoá dữ liệu sử dụng khoá 56 bít, tức kích thước không gian khoá là 256. Rất nhiều nhà mã hoá hiện đang tranh luận về một khoá dài hơn của DES. Nhiều thiết bị chuyên dụng đã được đề xuất nhằm phục vụ cho việc tấn công DES với bản rõ đã biết.
Vào năm 1979, Diffie và Hellman tuyên bố rằng với một máy tính chuyên dụng bản mã hoá DES có thể được phá bằng cách thử mọi trường hợp của khoá trong vòng một ngày – giá của máy tính đó là 20 triệu đôla. Vào năm 1981, Diffie đã tăng lên là cần hai ngày để tìm kiếm và giá của chiếc máy tính đó là 50 triệu đôla.
b. Giải thuật mã hoá 3DES (Triple DES)
Như đã trình bày ở trên, hệ mã DES sử dụng khoá có độ dài 56 bits, tương đương với không gian khoá gồm 256 khoá nên với các công nghệ hiện nay, hệ mã này có thể bị thám mã chỉ trong khoảng thời gian vài giờ đồng hồ. Vì vậy việc tìm kiếm các hệ mã thay thế cho DES là một điều cần thiết. Một trong những cách thức được xem xét đầu tiên là tăng độ an toàn của DES bằng cách sử dụng hai khoá để mã hoá DES hai lần. Cách này gọi là Double DES hay 2DES, với khoá của hệ mã theo mô hình này là 112 bits. Trên nguyên tắc thì 2DES có vẻ an toàn hơn so với DES, tuy nhiên các chứng minh về mặt lý thuyết (không nằm trong phạm vi của giáo trình này) đã cho thấy rằng hệ mã này không hề an toàn hơn DES (thuật toán thám mã theo kiểu vét cạn yêu cầu số phép tính gấp đôi để thám mã 2DES so với DES).
Cách thức thứ 2 và đang được sử dụng rộng rãi hiện nay là mã hoá DES 3 lần, cách này gọi là Triple DES hay 3DES, hoặc một cách chuẩn mực hơn là TDEA (Triple Data Encryption Algorithm). Mô hình đơn giản nhất của Triple DES là mã hoá 3 lần sử dụng 3 khoá có độ dài 168 bits: k1, k2, k3 như hình vẽ
c. Chuẩn mã hoá dữ liệu cao cấp AES (Advanced Encryption Standard)
Chuẩn mã hoá dữ liệu cao cấp AES là một hệ mã khoá bí mật có tên Rijndael (do hai nhà mật mã học người Bỉ Joan Daemen và Vincent Rijmen đưa ra và trở thành chuẩn từ năm 2002) cho phép xử lý các khối dữ liệu đầu vào có kích thước 128 bits, sử dụng các khoá có độ dài 128, 192 hay 256 bits. Hệ mã Rijmen được thiết kế để có thể làm việc với các khoá và các khối dữ liệu có độ dài lớn. Tuy nhiên khi được chọn là một chuẩn của Uỷ ban tiêu chuẩn Hoa Kỳ (năm 2001), nó được quy định chỉ làm việc với các khối dữ liệu 128 bits và các khoá có độ dài 128, 192 hoặc 256 bits (do đó còn được gọi là AES-128, AES-192 hay AES-256, tương ứng với độ dài khoá sử dụng).
Thuật toán mã hoá và giải mã AES