Các mã cổ điển thay Các mã cổ điển thay Bởi: TS Trần Văn Dũng Có hai loại mã cổ điển mã thay mã hoán vị (hay gọi dịch chuyển) Mã thay phương pháp mà kí tự (nhóm kí tự) rõ thay kí tự (một nhóm kí tự) khác để tạo mã Bên nhận cần thay ngược lại mã để có rõ ban đầu Trong phương pháp mã hoán vị, kí tự rõ giữ nguyên, chúng xếp lại vị trí để tạo mã Tức kí tự rõ hoàn toàn không bị thay đổi kí tự khác mà đảo chỗ chúng để tạo thành mã Trước hết ta xét mã cổ điển sử dụng phép thay chữ rõ chữ khác bảng chữ để tạo thành mã - Ở chữ rõ thay chữ số ký tự khác - Hoặc xem rõ môt dãy bít, phép thay mẫu bít rõ mẫu bít mã Mã Ceasar Đây mã biết sớm nhất, sáng tạo Julius Ceasar Lần sử dụng quân Việc mã hoá thực đơn giản thay chữ rõ chữ thứ ba bảng chữ Ví dụ: • Meet me after the toga party • PHHW PH DIWHU WKH WRJD SDUWB Ở thay chữ m chữ đứng thứ sau m p (m, n, o, p); thay chữ e chữ đứng thứ sau e h (e, f, g, h) 1/9 Các mã cổ điển thay • Có thể định nghĩa việc mã hoá qua ánh xạ bảng chữ sau: chữ dòng mã tương ứng dòng • Về toán học, ta gán số thứ tự cho chữ bảng chữ Các chữ dòng có số thứ tự tương ứng số dòng dưới: mã Ceasar định nghĩa qua phép tịnh tiến chữ sau: c = E(p) = (p + k) mod (26) p = D(c) = (c – k) mod (26) Ở đây, p số thứ tự chữ rõ c số thứ tự chữ tương ứng mã; k khoá mã Ceasar Có 26 giá trị khác k, nên có 26 khoá khác Thực tế độ dài khoá 1, chữ tịnh tiến khoảng • Thám mã Ceasar việc làm đơn giản, số khoá có Chỉ có 26 khoá có thể, A ánh xạ vào số 26 chữ bảng chữ tiếng Anh: A, B, C, …Các chữ khác xác định số bước tịnh tiến tương ứng A Kẻ thám mã thử khoá một, tức sử dụng phương pháp tìm duyệt tổng thể Vì số khoá nên việc tìm duyệt khả thi Cho trước mã, thử 26 cách dịch chuyển khác nhau, ta đoán nhận thông qua nội dung rõ nhận Bẻ mã "GCUA VQ DTGCM" cách thử phép tịnh tiến khác bảng chữ, ta chọn bước tịnh tiến thích hợp 24 cho rõ "easy to break" Các mã bảng chữ đơn Bây ta khắc phục nhược điểm mã Ceasar cách mã hoá chữ không dịch chuyển bảng chữ, mà tạo bước nhảy khác cho chữ Trong mã chữ rõ ánh xạ đến chữ khác mã Do cách mã tương ứng với hoán vị bảng chữ hoán vị khoá mã cho Như độ dài khoá 26 số khoá có 26! Số khoá lớn 2/9 Các mã cổ điển thay Ta có mã tương ứng với rõ mã bảng chữ đơn sau: Plain: abcdefghijklmnopqrstuvwxyz Cipher: DKVQFIBJWPESCXHTMYAUOLRGZN Plaintext: ifwewishtoreplaceletters Ciphertext: WIRFRWAJUHYFTSDVFSFUUFYA - Tính an toàn mã bảng chữ đơn Tổng cộng có 26! xấp xỉ khoảng x 1026 khoá Với nhiều khoá nhiều người nghĩ mã bảng chữ đơn an toàn Nhưng Vấn đề đặc trưng ngôn ngữ Tuy có số lượng khoá lớn, đặc trưng tần suất xuất chữ rõ chữ tương ứng mã nhau, nên kẻ thám mã đoán ánh xạ số chữ từ mò tìm chữ mã cho chữ khác Ta xét khía cạnh cụ thể mục sau • Tính dư thừa ngôn ngữ thám mã Ngôn ngữ loài người dư thừa Có số chữ cặp chữ ba chữ dùng thường xuyên chữ độ dài khác Chẳng hạn chữ sau tiếng Anh "th lrd s m shphrd shll nt wnt" Tóm lại nhiều ngôn ngữ chữ không sử dụng thường xuyên Trong tiếng Anh chữ E sử dụng nhiều nhất; sau đến chữ T, R, N, I, O, A, S Một số chữ dùng như: Z, J, K, Q, X Bằng phương pháp thống kê, ta xây dựng bảng tần suất chữ đơn, cặp chữ, ba chữ Bảng tần xuất chữ tiếng Anh: • Sử dụng bảng tần suất vào việc thám mã 3/9 Các mã cổ điển thay Điều quan trọng mã bảng chữ đơn không làm thay đổi tần suất tương đối chữ, có nghĩa ta có bảng tần suất bảng chữ mã tương ứng Điều phát nhà khoa học Ai cập từ kỷ thứ Do có cách thám mã bảng chữ đơn sau: - Tính toán tần suất chữ mã - So sánh với giá trị biết - Tìm kiếm chữ đơn hay dùng A-I-E, đôi NO ba RST; dùng JK, X-Z - Trên bảng chữ đơn cần xác định chữ dùng bảng đôi ba trợ giúp Thám mã mã bảng chữ đơn, cho UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZ VUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSXEPYEP OPDZSZUFPOUDTMOHMQ mã: - Tính tần suất chữ - Đoán P Z e t - Khi ZW th ZWP the - Suy luận tiếp tục ta có rõ: it was disclosed yesterday that several informal but direct contacts have been made with political representatives in moscow Mã Playfair Như thấy số khoá lớn mã bảng chữ đơn đảm bảo an toàn mã Một hướng khắc phục mã chữ, tức chữ mã số chữ khác tùy thuộc vào chữ mà đứng cạnh Playfair mã vậy, sáng tạo Charles Wheastone vào năm 1854 mang tên người bạn Baron Playfair Ở chữ mã chữ khác tùy vào chữ cặp đôi rõ Ma trận khoá Playfair Cho trước từ làm khoá, với điều kiện từ khoá chữ bị lặp Ta lập ma trận Playfair ma trận cỡ x dựa từ khoá cho gồm chữ bảng chữ cái, xếp theo thứ tự sau: - Trước hết viết chữ từ khoá vào hàng ma trận bắt từ hàng thứ 4/9 Các mã cổ điển thay - Nếu ma trận trống, viết chữ khác bảng chữ chưa sử dụng vào ô lại Có thể viết theo trình tự qui ước trước, chẳng hạn từ đầu bảng chữ cuối - Vì có 26 chữ tiếng Anh, nên thiếu ô Thông thuờng ta dồn hai chữ vào ô chung, chẳng hạn I J - Giả sử sử dụng từ khoá MORNACHY Lập ma trận khoá Playfair tương ứng sau: MONAR CHYBD EFGIK LPQST UVWXZ Mã hoá giải mã: rõ mã hoá chữ lúc theo qui tắc sau: - Chia rõ thành cặp chữ Nếu cặp có hai chữ nhau, ta chèn thêm chữ lọc chẳng hạn X Trước mã “balloon” biến đổi thành “ba lx lo on” - Nếu hai chữ cặp rơi vào hàng, mã chữ chữ phía bên phải hàng ma trận khóa (cuộn vòng quanh từ cuối đầu), chẳng hạn “ar” biến đổi thành “RM” - Nếu hai chữ cặp rơi vào cột, mã chữ chữ phía bên cột ma trận khóa (cuộn vòng quanh từ cuối đầu), chẳng hạn “mu” biến đổi thành “CM” - Trong trường hợp khác, chữ cặp mã chữ hàng với cột với chữ cặp với ma trận khóa Chẳng hạn, “hs” mã thành “BP”, “ea” mã thành “IM” “JM” (tuỳ theo sở thích) An toàn mã Playfair: - An toàn nâng cao so với bảng đơn, ta có tổng cộng 26 x 26 = 676 cặp Mỗi chữ mã chữ khác nhau, nên tần suất chữ mã khác tần suất chữ văn tiếng Anh nói chung 5/9 Các mã cổ điển thay - Muốn sử dụng thống kê tần suất, cần phải có bảng tần suất 676 cặp để thám mã (so với 26 mã bảng đơn) Như phải xem xét nhiều trường hợp tương ứng có nhiều mã cần lựa chọn Do khó thám mã mã bảng chữ đơn - Mã Playfair sử dụng rộng rãi nhiều năm giới quân Mỹ Anh chiến tranh giới thứ Nó bị bẻ khoá cho trước vài trăm chữ, mã chứa nhiều cấu trúc rõ Các mã đa bảng Một hướng khác làm tăng độ an toàn cho mã bảng chữ sử dụng nhiều bảng chữ để mã Ta gọi chúng mã đa bảng Ở chữ mã chữ mã tùy thuộc vào ngữ cảnh mã hoá Làm để trải tần suất chữ xuất mã Do làm bớt cấu trúc rõ thể mã làm cho thám mã đa bảng khó Ta sử dụng từ khoá để rõ chọn bảng dùng cho chữ tin Sử dụng bảng theo từ khóa lặp lại từ đầu sau kết thúc từ khoá Độ dài khoá chu kỳ lặp bảng chữ Độ dài lớn nhiều chữ khác sử dụng từ khoá khó thám mã Mã Vigenere Mã đa bảng đơn giản mã Vigenere Thực chất trình mã hoá Vigenere việc tiếh hành đồng thời dùng nhiều mã Ceasar lúc rõ với nhiều khoá khác Khoá cho chữ dùng để mã phụ thuộc vào vị trí chữ rõ lấy từ khoá theo thứ tự tương ứng Giả sử khoá chữ có độ dài d viết dạng K = K1K2…Kd, Ki nhận giá trị nguyên từ đến 25 Khi ta chia rõ thành khối gồm d chữ Mỗi chữ thứ i khối định dùng bảng chữ thứ i với tịnh tiến Ki giống mã Ceasar Trên thực tế mã ta sử dụng bảng chữ lặp lại từ đầu sau d chữ rõ Vì có nhiều bảng chữ khac nhau, nên chữ vị trí khác có bước nhảy khác nhau, làm cho tần suất chữ mã dãn tương đối Giải mã đơn giản trình làm ngược lại Nghĩa dùng mã từ khoá với bảng chữ tương ứng, với chữ sử dụng bước nhảy lui lại đầu Để sử dụng mã Vigenere với từ khóa rõ cho trước ta làm sau: - Viết rõ - Viết từ khoá lặp nhiều lần phía tương ứng 6/9 Các mã cổ điển thay - Sử dụng chữ từ khoá khoá mã Ceasar - Mã chữ tương ứng rõ với bước nhảy tương ứng - Chẳng hạn sử dụng từ khoá deceptive key: deceptivedeceptivedeceptive plaintext: ciphertext:ZICVTWQNGRZGVTWAVZHCQYGL wearediscoveredsaveyourself Để mã chữ w ta tìm chữ đầu khóa d, w mã bảng chữ tịnh tiến (tức a tịnh tiến vào d) Do chữ đầu w mã chữ Z Chữ thứ hai từ khóa e, có nghĩa chữ thứ hai rõ tịnh tiến (từ a tịnh tiến đến e) Như thứ hai rõ e mã chữ I Tương tự hết rõ Trên thực tế để hỗ trợ mã Vigenere, người ta tạo trang Saint – Cyr để trợ giúp cho việc mã giải mã thủ công Đó bảng cỡ 26 x 26 có tên tương ứng chữ bảng chữ tiếng Anh Hàng thứ i tịnh tiến i chữ bảng Khi chữ cột khoá bảng chữ hàng Do chữ mã chữ rõ nằm cột với chữ nằm hàng tương ứng với chữ khoá Bảng Saint Cyr 7/9 Các mã cổ điển thay An toàn mã Vigenere Như có chữ mã khác cho chữ rõ Suy tần suất chữ bị phẳng, nghĩa tần suất xuất chữ mã tương đối Tuy nhiên chưa hoàn toàn, độ dài khoá có hạn, nên tạo nên chu kỳ vòng lặp Kẻ thám mã tần suất chữ để xem có phải mã đơn bảng chữ hay không Giả sử mã đa bảng chữ, sau xác định số bảng chữ từ khoá lần tìm chữ Như cần tăng độ dài từ khoá để tăng số bảng chữ dùng mã để “là” tần suất chữ Phương pháp thám mã Kasiski Phương pháp phát triển Babbage Kasiski Ta thấy chữ rõ cách khoảng độ dài từ khoá (chu kỳ), mã chữ Như từ độ lặp chữ mã cho phép xác định chu kỳ Tất nhiên tìm độ dài từ khoá Sau tìm chữ 8/9 Các mã cổ điển thay từ khoá cách công bảng chữ đơn với kỹ thuật dựa bảng tần suất chữ trước Mã khoá tự động Lý tưởng ta có khoá dài tin Do Vigenere đề xuất khoá tự động sinh cho độ dài tin sau: từ khoá nối tiếp rõ để tạo thành khoá Sau dùng mã Vigenere để mã rõ cho Khi biết từ khoá khôi phục số chữ ban đầu rõ Sau tiếp tục sử dụng chúng để giải mã cho văn lại Sự cải tiến làm khái niệm chu kỳ, gây khó khăn cho việc thám mã, đặc trưng tần suất để công Cho từ khoá deceptive Ta viết rõ nối tiếp vào từ khoá tạo thành từ khoá có độ dài độ dài rõ key: deceptivewearediscoveredsav plaintext: wearediscoveredsaveyourself ciphertext:ZICVTWQNGKZEIIGASXSTSLVVWLA Bộ đệm lần Nếu khoá thực ngẫu nhiên dùng có độ dài rõ ta nói đệm lần Vì dùng lần ngẫu nhiên, nên mã hoá an toàn Mã không bẻ mã liên quan thống kê với rõ, đệm sinh ngẫu nhiên Có thể nói mã đệm lần an toàn tuyệt đối, với rõ mã bất kỳ, tồn khoá để ánh xạ rõ sang mã cho Về mặt lý thuyết, xác suất để mẩu tin (có độ dài với rõ) bảng chữ mã mã rõ cho trước Khoá sử dụng lần, nên lần mã độc lập với nhau.Vấn đề khó khăn mã đệm lần việc sinh ngẫu nhiên khóa phân phối khoá an toàn Do đệm lần sử dụng dùng trường hợp đòi hỏi bảo mật cao 9/9