Mã hoá cổ điển là phương pháp mã hoá đơn giản nhất xuất hiện đầu tiên trong lịch sử ngành mã hoá. Thuật toán đơn giản và dễ hiểu. Những phương pháp mã hoá này là cở sở cho việc nghiên cứu và phát triển thuật toán mã hoá đối xứng được sử dụng ngày nay. Trong mã hoá cổ điển có hai phương pháp nổi bật đó là:
- Mã hoá thay thế
- Mã hoá hoán vị
Mọi mã cổ điển đều là mã đối xứng mà chúng ta sẽ xét trong phần sau.
Mã đối xứng.
Các khái niệm cơ bản
Mật mã đối xứng sử dụng cùng một khóa cho việc mã hóa và giải mã. Có thể nói mã đối xứng là mã một khoá hay mã khóa riêng hay mã khoá thỏa thuận.
Ở đây người gửi và người nhận chia sẻ khoá chung K, mà họ có thể trao đổi bí mật với nhau. Ta xét hai hàm ngược nhau: E là hàm biến đổi bản rõ thành bản mã và D là hàm biến đổi bản mã trở về bản rõ. Giả sử X là văn bản cần mã hóa và Y là dạng văn bản đã được thay đổi qua việc mã hóa. Khi đó ta ký hiệu:
Y = EK(X)
X = DK(Y)
Mọi thuật toán mã cổ điển đều là mã khoá đối xứng, vì ở đó thông tin về khóa được chia sẻ giữa người gửi và người nhận. Mã đối xứng là kiểu duy nhất trước khi phát minh ra khoá mã công khai (còn được gọi là mã không đối xứng) vào những năm 1970. Hiện nay các mã đối xứng và công khai tiếp tục phát triển và hoàn thiện. Mã công khai ra đời hỗ trợ mã đối xứng chứ không thay thế nó, do đó mã đối xứng đến nay vẫn được sử dụng rộng rãi.
Sau đây ta đưa ra định nghĩa một số khái niệm cơ bản về mã hóa.
- Bản rõ X được gọi là là bản tin gốc. Bản rõ có thể được chia nhỏ có kích thước phù hợp.
- Bản mã Y là bản tin gốc đã được mã hoá. Ở đây ta thường xét phương pháp mã hóa mà không làm thay đổi kích thước của bản rõ, tức là chúng có cùng độ dài.
- Mã là thuật toán E chuyển bản rõ thành bản mã. Thông thường chúng ta cần thuật toán mã hóa mạnh, cho dù kẻ thù biết được thuật toán, nhưng không biết thông tin về khóa cũng không tìm được bản rõ.
- Khoá K là thông tin tham số dùng để mã hoá, chỉ có người gửi và nguời nhận biết. Khóa là độc lập với bản rõ và có độ dài phù hợp với yêu cầu bảo mật.
- Mã hoá là quá trình chuyển bản rõ thành bản mã, thông thường bao gồm việc áp dụng thuật toán mã hóa và một số quá trình xử lý thông tin kèm theo.
- Giải mã chuyển bản mã thành bản rõ, đây là quá trình ngược lại của mã hóa.
- Mật mã là chuyên ngành khoa học của Khoa học máy tính nghiên cứu về các nguyên lý và phương pháp mã hoá. Hiện nay người ta đưa ra nhiều chuẩn an toàn cho các lĩnh vực khác nhau của công nghệ thông tin.
- Thám mã nghiên cứu các nguyên lý và phương pháp giải mã mà không biết khoá. Thông thường khi đưa các mã mạnh ra làm chuẩn dùng chung giữa các người sử dụng, các mã đó được các kẻ thám mã cũng như những người phát triển mã tìm hiểu nghiên cứu các phương pháp giải một phần bản mã với các thông tin không đầy đủ.
- Lý thuyết mã bao gồm cả mật mã và thám mã. Nó là một thể thống nhất, để đánh giá một mã mạnh hay không, đều phải xét từ cả hai khía cạnh đó. Các nhà khoa học mong muốn tìm ra các mô hình mã hóa khái quát cao đáp ứng nhiều chính sách an toàn khác nhau.
Mô hình mã đối xứng
Các yêu cầu.
Một mã đối xứng có các đặc trưng là cách xử lý thông tin của thuật toán mã, giải mã, tác động của khóa vào bản mã, độ dài của khóa. Mối liên hệ giữa bản rõ, khóa và bản mã càng phức tạp càng tốt, nếu tốc độ tính toán là chấp nhận được. Cụ thể hai yêu cầu để sử dụng an toàn mã khoá đối xứng là
- Thuật toán mã hoá mạnh. Có cơ sở toán học vững chắc đảm bảo rằng mặc dù công khai thuật toán, mọi người đều biết, nhưng việc thám mã là rất khó khăn và phức tạp nếu không biết khóa.
- Khoá mật chỉ có người gửi và người nhận biết. Có kênh an toàn để phân phối khoá giữa các người sử dụng chia sẻ khóa. Mối liên hệ giữa khóa và bản mã là không nhận biết được.
Mật mã
Hệ mật mã được đặc trưng bởi các yếu tố sau
– Kiểu của thao tác mã hoá được sử dụng trên bản rõ:
- Phép thế – thay thế các ký tự trên bản rõ bằng các ký tự khác
- Hoán vị – thay đổi vị trí các ký tự trong bản rõ, tức là thực hiện hoán vị các ký tự của bản rõ.
- Tích của chúng, tức là kết hợp cả hai kiểu thay thế và hoán vị các ký tự của bản rõ.
– Số khoá được sử dụng khi mã hóa: một khoá duy nhất – khoá riêng hoặc hai khoá – khoá công khai. Ngoài ra còn xem xét số khóa được dùng có nhiều không.
– Một đặc trưng của mã nữa là cách mà bản rõ được xử lý, theo:
- Khối – dữ liệu được chia thành từng khối có kích thước xác định và áp dụng thuật toán mã hóa với tham số khóa cho từng khối.
- Dòng – từng phần tử đầu vào được xử lý liên tục tạo phần tử đầu ra tương ứng.
Thám mã.
Có hai cách tiếp cận tấn công mã đối xứng.
- Tấn công thám mã dựa trên thuật toán và một số thông tin về các đặc trưng chung về bản rõ hoặc một số mẫu bản rõ/bản mã. Kiểu tấn công này nhằm khai phá các đặc trưng của thuật toán để tìm bản rõ cụ thể hoặc tìm khóa. Nếu tìm được khóa thì là tai họa lớn.
- Tấn công duyệt toàn bộ: kẻ tấn công tìm cách thử mọi khóa có thể trên bản mã cho đến khi nhận được bản rõ. Trung bình cần phải thử một nửa số khóa mới tìm được.
Các kiểu tấn công thám mã.
– Chỉ dùng bản mã: biết thuật toán và bản mã, dùng phương pháp thống kê, xác định bản rõ.
– Biết bản rõ: biết thuật toán, biết được bản mã/bản rõ tấn công tìm khóa.
– Chọn bản rõ: chọn bản rõ và nhận được bản mã, biết thuật toán tấn công tìm khóa.
– Chọn bản mã: chọn bản mã và có được bản rõ tương ứng, biết thuật toán tấn công tìm khóa.
– Chọn bản tin: chọn được bản rõ hoặc mã và mã hoặc giải mã tuơng ứng, tấn công tìm khóa.
Tìm duyệt tổng thể (Brute-Force)
Về mặt lý thuyết phương pháp duyệt tổng thể là luôn thực hiện được, do có thể tiến hành thử từng khoá, mà số khoá là hữu hạn. Phần lớn công sức của các tấn công đều tỷ lệ thuận với kích thước khoá. Khóa càng dài thời gian tìm kiếm càng lâu và thường tăng theo hàm mũ. Ta có thể giả thiết là kẻ thám mã có thể dựa vào bối cảnh để biết hoặc nhận biết được bản rõ.
Sau đây là một số thống kê về mối liên hệ giữa độ dài khóa, kích thước không gian khóa, tốc độ xử lý và thời gian tìm duyệt tổng thể. Chúng ta nhận thấy với độ dài khóa từ 128 bit trở lên, thời gian yêu cầu là rất lớn, lên đến hàng tỷ năm, như vậy có thể coi phương pháp duyệt tổng thể là không hiện thực.
Độ an toàn.
Có thể phân lọai an toàn thành hai kiểu như sau:
– An toàn không điều kiện: ở đây không quan trọng máy tính mạnh như thế nào, có thể thực hiện được bao nhiêu phép toán trong một giây, mã hoá không thể bị bẻ, vì bản mã không cung cấp đủ thông tin để xác định duy nhất bản rõ. Việc dùng bộ đệm ngẫu nhiên một lần để mã dòng cho dữ liệu mà ta sẽ xét cuối bài này được coi là an toàn không điều kiện. Ngoài ra chưa có thuật toán mã hóa nào được coi là an toàn không điều kiện.
– An toàn tính toán: với nguồn lực máy tính giới hạn và thời gian có hạn (chẳng hạn thời gian tính toán không quá tuổi của vũ trụ) mã hoá coi như không thể bị bẻ. Trong trường hợp này coi như mã hóa an toàn về mặt tính toán. Nói chung từ nay về sau, một thuật toán mã hóa an toàn tính toán được coi là an toàn.