2.2. Các phương pháp mã hóa [1, 3]
2.2.1. Mã hóa đối xứng khóa bí mật
Trong mật mã học, các thuật toán khóa đối xứng (symmetric-key
algorithms) là một lớp các thuật toán mật mã hóa trong đó các khóa dùng cho việc mật mã hóa và giải mã có quan hệ rõ ràng với nhau (có thể dễ dàng tìm được một khóa nếu biết khóa kia)…
Thuật toán này còn có nhiều tên gọi khác như thuật toán khoá bí mật, thuật toán khoá đơn giản, 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 giữ bí mật. Độ an toàn của thuật toán này vẫn phụ thuộc vào khoá, nếu để lộ ra khoá này nghĩa là 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á.
Hình 2.1: Mã hóa đối xứng khóa bí mật
Các thuật toán đối xứng nói chung đòi hỏi công suất tính toán ít hơn các
thuật toán khóa bất đối xứng (asymmetric key algorithms). Trên thực tế, một
thuật toán khóa bất đối xứng có khối lượng tính toán nhiều hơn gấp hằng trăm,
hằng ngàn lần một thuật toán khóa đối xứng (symmetric key algorithm) có chất
lượng tương đương.
Hạn chế của các thuật toán khóa đối xứng bắt nguồn từ yêu cầu về sự
phân phối khóa bí mật, mỗi bên phải có một bản sao của chìa. Do khả năng các chìa khóa có thể bị phát hiện bởi đối thủ mật mã, chúng thường phải được bảo an trong khi phân phối và trong khi dùng. Vì vậy việc lựa chọn, phân phối và
Khóa bí mật Thông điệp nguồn Thông điệp đã mã hóa Thông điệp đã giải mã Mã hóa Giải mã
27
lưu trữ các chìa khóa một cách không có lỗi, không bị mất mát là một việc làm khó khăn, khó có thể đạt được một cách đáng tin cậy.
Thuật toán đối xứng có thể được chia ra làm hai thể loại là mật mã luồng
(stream ciphers) và mật mã khối (block ciphers). Mật mã luồng mã hóa từng bit của thông điệp trong khi mật mã khối gộp một số bit lại và mật mã hóa chúng như một đơn vị. [1]