T

Text Machine

Công cụ văn bản mạnh mẽ, ngay trong trình duyệt của bạn

Mật mã Autokey

Mã hóa và giải mã mật mã autokey, biến thể Vigenère mạnh hơn trong đó một từ khóa mồi ngắn bắt đầu khóa và chính thông điệp của bạn nối tiếp nó, nên khóa không bao giờ lặp lại. Chuyển giữa mã hóa và giải mã và theo dõi quá trình tính toán hình thành trực tiếp. Mọi thứ đều chạy trong trình duyệt của bạn.

Từ khóa mồi

Từ khóa

Nhập một từ khóa mồi ngắn chẳng hạn QUEENLY. Nó bắt đầu luồng khóa, vốn sau đó nối tiếp bằng chính thông điệp của bạn nên khóa không bao giờ lặp lại. Chỉ các chữ cái được dùng; chữ hoa và chữ thường được xem như nhau, và mọi dấu cách, chữ số hoặc dấu câu trong từ khóa đều bị bỏ qua.

Bản rõ
Bản mã

Nhập văn bản ở trên để xem kết quả autokey tại đây.

Cách sử dụng Mật mã Autokey

  1. 1

    Chọn mã hóa hoặc giải mã

    Chọn Mã hóa để biến bản rõ thành bản mã autokey, hoặc Giải mã để khôi phục bản rõ từ bản mã. Cùng một từ khóa mồi được dùng cho cả hai chiều.

  2. 2

    Nhập từ khóa mồi

    Gõ một từ khóa ngắn chẳng hạn QUEENLY. Nó bắt đầu luồng khóa, vốn sau đó nối tiếp bằng chính thông điệp của bạn. Chỉ các chữ cái được dùng, và chữ hoa chữ thường, dấu cách và dấu câu trong từ khóa đều bị bỏ qua.

  3. 3

    Gõ hoặc dán văn bản của bạn

    Nhập thông điệp bạn muốn chuyển đổi. Mật mã chạy tự động ngay khi bạn gõ, và quá trình tính toán từng chữ cái cập nhật trực tiếp bên dưới, cho thấy chữ cái khóa nào đến từ từ khóa và chữ cái nào đến từ thông điệp.

  4. 4

    Đọc, sao chép và chia sẻ

    Đọc kết quả, rồi sao chép nó, tải nó xuống dưới dạng tệp văn bản, hoặc chia sẻ một liên kết mở lại công cụ với đúng từ khóa, chiều và văn bản của bạn. Mọi thứ đều ở lại trong trình duyệt của bạn.

Tìm hiểu về mật mã Autokey

Mật mã autokey là gì?

Mật mã autokey, còn gọi là mật mã autoclave, là một mật mã thay thế đa bảng trong đó chính thông điệp trở thành một phần của khóa. Một từ khóa mồi ngắn bắt đầu luồng khóa, và một khi những chữ cái đó hết thì khóa đơn giản nối tiếp bằng các chữ cái của bản rõ. Vì khóa chạy dài bằng thông điệp và không bao giờ lặp lại, mật mã autokey tránh được mẫu hình tuần hoàn, đều đặn vốn khiến một mật mã khóa lặp thông thường dễ bị phá.

Nó được nhà ngoại giao người Pháp Blaise de Vigenère công bố năm 1586, dựa trên một ý tưởng trước đó của Giovan Battista Bellaso. Có một sự trớ trêu nổi tiếng ở đây: mật mã khóa lặp đơn giản mà thế giới nay gọi là mật mã Vigenère thực ra là của Bellaso, trong khi phát minh mạnh hơn của chính Vigenère lại là autokey này. Bằng cách đưa bản rõ trở lại vào khóa, mật mã autokey loại bỏ tính chu kỳ mà các nhà phân tích mật mã về sau như Kasiski và Friedman sẽ khai thác để bẻ gãy các khóa lặp.

Mật mã autokey hoạt động ra sao

Đánh số bảng chữ cái từ A là 0 đến Z là 25. Dựng luồng khóa bằng cách viết từ khóa mồi trước, rồi nối tiếp với các chữ cái bản rõ theo thứ tự. Xếp thẳng luồng đó dưới thông điệp sao cho một chữ cái khóa nằm dưới mỗi chữ cái bản rõ. Để mã hóa, cộng mỗi chữ cái khóa vào chữ cái phía trên nó và cuộn vòng quanh bảng chữ cái bằng phần dư cho 26, nên chữ cái bản mã là C = (P + K) mod 26.

Giải mã phải làm từ trái sang phải. Bạn biết từ khóa mồi, nên bạn có thể khôi phục vài chữ cái đầu tiên bằng P = (C − K) mod 26. Mỗi chữ cái bản rõ bạn khôi phục được sau đó được thêm vào luồng khóa và dùng để giải mã chữ cái kế tiếp, và cứ thế cho đến hết. Cũng như mật mã Vigenère, chỉ 26 chữ cái được biến đổi: dấu cách, dấu câu và chữ số đi xuyên qua không đổi và không tiêu tốn một chữ cái khóa, và chữ hoa chữ thường được giữ nguyên.

Ví dụ thực hành

Mã hóa thông điệp HELLO với từ khóa mồi KEY. Luồng khóa là từ khóa theo sau bởi bản rõ, cho ra K, E, Y, H, E cho năm chữ cái. Cộng mỗi chữ vào thông điệp cho ra H cộng K là R, E cộng E là I, L cộng Y là J, L cộng H là S, và O cộng E là S. Bản mã là RIJSS, và để ý rằng hai chữ cái khóa cuối, H và E, đơn giản là hai chữ cái đầu tiên của chính thông điệp.

Để giải mã RIJSS bạn bắt đầu với từ khóa KEY. R trừ K là H, I trừ E là E, và J trừ Y là L, phép này khôi phục HEL. Những chữ cái khôi phục được giờ mở rộng khóa, nên chữ cái khóa kế tiếp là H và S trừ H là L, rồi chữ cái khóa E cho S trừ E là O, hoàn tất HELLO. Mỗi chữ cái khôi phục được mở khóa cho chữ kế tiếp, đó là cốt lõi của cách đọc một mật mã autokey.

Autokey so với Vigenère khóa lặp

Mật mã Vigenère thông thường lặp lại từ khóa của nó hết lần này đến lần khác: với khóa KEY thì luồng là KEYKEYKEY và cứ thế. Sự lặp lại đó là nhược điểm chí mạng của nó, bởi vì độ dài khóa có thể được tìm ra bằng phép kiểm tra Kasiski hoặc chỉ số trùng hợp, sau đó mỗi cột là một phép dịch Caesar đơn giản. Mật mã autokey dùng cùng quy tắc cộng nhưng không bao giờ lặp lại khóa, nên những phép kiểm tra cổ điển đó không áp dụng được.

Bạn có thể thấy sự khác biệt trong ví dụ thực hành. Với khóa KEY, một mật mã Vigenère lặp sẽ mã hóa HELLO thành RIJVS, trong khi autokey tạo ra RIJSS — hai cái chỉ trùng nhau trong khi từ khóa còn kéo dài rồi sau đó tách ra, bởi vì autokey đã chuyển sang bản rõ. Chính thay đổi đơn lẻ đó, đưa thông điệp trở lại vào khóa, là đóng góp thực sự của Vigenère và khiến mật mã của ông mạnh hơn hẳn cái nay mang tên ông.

Autokey so với mật mã khóa chạy

Mật mã autokey có quan hệ mật thiết với mật mã khóa chạy. Cả hai đều dùng một khóa dài bằng thông điệp nên không có gì lặp lại, nhưng chúng khác nhau ở chỗ khóa dài đó đến từ đâu. Một mật mã khóa chạy lấy khóa của nó từ một văn bản bên ngoài được chia sẻ, chẳng hạn một trang sách đã thỏa thuận, trong khi mật mã autokey sinh ra khóa dài của nó từ một mồi ngắn cộng với chính bản rõ.

Mỗi cách đều có một điểm vướng. Một khóa chạy lấy từ ngôn ngữ tự nhiên mang theo cấu trúc thống kê riêng có thể bị tấn công, nhưng nó không cần phản hồi bản rõ. Autokey chỉ cần một bí mật chung tí xíu, từ khóa mồi, nhưng vì một phần khóa của nó là bản rõ, một kẻ tấn công đoán được một từ thông dụng có thể thử trượt nó qua thông điệp như thể nó là khóa, đó là cách chính các mật mã autokey bị phá.

Cách phá mật mã autokey

Vì khóa không bao giờ lặp lại, phép kiểm tra Kasiski và chỉ số trùng hợp, những công cụ tiêu chuẩn chống lại các mật mã khóa lặp, không hoạt động trực tiếp trên một thông điệp autokey. Điều đó khiến nó cứng cáp hơn Vigenère đáng kể, nhưng nó vẫn còn xa mới an toàn. Cuộc tấn công thông thường khai thác chính đặc tính định nghĩa mật mã: phần lớn khóa là bản rõ, vốn là ngôn ngữ thông thường.

Một nhà phân tích đoán một từ có khả năng, chẳng hạn THE hoặc một cái tên có thể có, và kéo lê nó qua bản mã, trừ nó đi như thể nó là khóa. Ở nơi phỏng đoán đúng thì phép toán để lộ những mảnh bản rõ thêm nữa, vốn sau đó có thể được mở rộng theo cả hai hướng. Kết hợp với việc vét cạn từ khóa mồi ngắn, phép kéo lê mẩu tin này khôi phục các thông điệp autokey bằng tay, nên mật mã tốt nhất nên được xem như một bước tiến lịch sử khôn khéo chứ không phải một lựa chọn an toàn.

Mật mã autokey có an toàn không?

Không. Mặc dù mật mã autokey mạnh hơn một mật mã Vigenère khóa lặp thuần túy, nó không cung cấp sự bảo vệ thực sự nào theo tiêu chuẩn hiện đại. Việc nó dựa vào bản rõ làm khóa mở nó ra cho phép kéo lê mẩu tin, và mồi ngắn của nó có thể bị vét cạn, nên một nhà phân tích quyết tâm có thể phá nó bằng bút và giấy. Nó thuộc về lịch sử của mật mã học cổ điển chứ không thuộc bất kỳ danh sách phương pháp an toàn nào.

Ngày nay mật mã autokey được quý trọng vì mục đích học tập và giải trí. Đó là một cách tao nhã để thấy việc đưa thông điệp trở lại vào khóa đánh bại các cuộc tấn công tính chu kỳ vốn phá vỡ những mật mã đơn giản hơn ra sao, và nó xuất hiện trong các cuộc săn câu đố, phòng trốn thoát và các thử thách cướp cờ. Để bảo vệ thông tin thực sự, bạn nên dựa vào các thuật toán hiện đại, được kiểm chứng kỹ lưỡng như AES thay vào đó.

Câu hỏi thường gặp

Mật mã autokey là gì?
Mật mã autokey, hay autoclave, là một mật mã thay thế đa bảng trong đó một từ khóa mồi ngắn bắt đầu khóa và chính bản rõ nối tiếp nó. Vì khóa dài bằng thông điệp và không bao giờ lặp lại, nó tránh được mẫu hình tuần hoàn vốn khiến một mật mã khóa lặp dễ bị phá. Nó được Blaise de Vigenère công bố năm 1586.
Mật mã autokey hoạt động như thế nào?
Đánh số bảng chữ cái A là 0 đến Z là 25 và dựng luồng khóa từ từ khóa theo sau bởi bản rõ. Để mã hóa, cộng mỗi chữ cái khóa vào chữ cái thông điệp theo modulo 26: C = (P + K) mod 26. Để giải mã, trừ đi: P = (C − K) mod 26, khôi phục bản rõ từ trái sang phải và đưa mỗi chữ cái khôi phục được trở lại vào khóa. Chỉ các chữ cái được thay đổi.
Mật mã autokey khác mật mã Vigenère như thế nào?
Một mật mã Vigenère lặp lại từ khóa của nó trên toàn bộ thông điệp, trong khi mật mã autokey chỉ dùng từ khóa để bắt đầu rồi sau đó nối tiếp với bản rõ. Điều đó loại bỏ sự lặp lại, nên phép kiểm tra Kasiski và chỉ số trùng hợp không còn để lộ độ dài khóa nữa. Autokey thực ra là mật mã mạnh hơn của chính Vigenère; cái lặp lại mang tên ông là của Bellaso.
Bạn có thể cho một ví dụ về mật mã autokey không?
Mã hóa HELLO với từ khóa KEY cho ra RIJSS. Luồng khóa là K, E, Y, H, E — từ khóa theo sau bởi những chữ cái đầu của thông điệp — nên H cộng K là R, E cộng E là I, L cộng Y là J, L cộng H là S, và O cộng E là S. Giải mã RIJSS với KEY khôi phục HELLO từng chữ một.
Tôi nên dùng từ khóa nào?
Dùng bất kỳ từ ngắn hoặc chuỗi chữ cái nào; QUEENLY là ví dụ kinh điển. Chỉ các chữ cái mới quan trọng, và chữ hoa chữ thường được xem như nhau. Một mồi dài hơn, ít đoán trước được hơn thì mạnh hơn một chút, nhưng sự an toàn của mật mã autokey bị hạn chế dù bạn chọn mồi nào, nên đừng dựa vào nó cho những bí mật thực sự.
Làm thế nào để giải mã một mật mã autokey?
Chuyển công cụ sang Giải mã, nhập đúng từ khóa mồi đã được dùng để mã hóa, và dán bản mã vào. Công cụ trừ từ khóa đi để khôi phục những chữ cái đầu tiên, rồi đưa mỗi chữ cái khôi phục được trở lại vào khóa để mở phần còn lại. Nếu không có từ khóa, bạn sẽ phải tấn công mật mã bằng cách đoán các từ có khả năng.
Sự khác biệt giữa mật mã autokey và khóa chạy là gì?
Cả hai đều dùng một khóa không lặp lại dài bằng thông điệp. Một mật mã khóa chạy lấy khóa đó từ một văn bản bên ngoài được chia sẻ chẳng hạn một cuốn sách, trong khi mật mã autokey dựng khóa của nó từ một mồi ngắn cộng với chính bản rõ. Autokey chỉ cần một bí mật chung tí xíu, nhưng việc một phần khóa của nó là bản rõ chính là điều cho phép phép kéo lê mẩu tin phá nó.
Mật mã có thay đổi dấu cách, chữ số và dấu câu không?
Không. Chỉ 26 chữ cái được biến đổi. Dấu cách, dấu câu và bất kỳ chữ số nào trong thông điệp đều đi xuyên qua không đổi và không tiêu tốn một chữ cái khóa, nên khóa vẫn được căn thẳng với các chữ cái. Chữ hoa chữ thường được giữ nguyên, nên kết quả giữ được hình dạng của văn bản gốc của bạn.
Từ khóa có phân biệt chữ hoa chữ thường không?
Không. Từ khóa mồi được đọc chỉ như các chữ cái, và chữ hoa với chữ thường cho cùng một phép dịch chuyển, nên KEY và key hành xử y hệt nhau. Mọi dấu cách, chữ số hoặc dấu câu gõ vào từ khóa đều bị bỏ qua, chỉ để lại các chữ cái để bắt đầu luồng khóa.
Làm thế nào để phá mật mã autokey?
Các công cụ dành cho khóa lặp không áp dụng được vì khóa không bao giờ xoay vòng, nên các nhà phân tích thay vào đó tấn công phần bản rõ của khóa. Họ kéo lê một từ có khả năng chẳng hạn THE qua bản mã, trừ nó đi như khóa; các vị trí đúng để lộ thêm bản rõ vốn có thể được mở rộng ra ngoài. Việc vét cạn mồi ngắn song song với phép kéo lê mẩu tin này khôi phục thông điệp.
Mật mã autokey có an toàn không?
Không. Nó mạnh hơn một mật mã Vigenère khóa lặp thuần túy, nhưng phép kéo lê mẩu tin và một mồi bị vét cạn cho phép nó bị phá bằng tay, nên nó không cung cấp sự an toàn thực sự nào ngày nay. Hãy xem nó như một mật mã giáo dục và giải đố cùng một mảnh đáng chú ý của lịch sử mật mã học. Để bảo vệ thực sự, hãy dùng một thuật toán hiện đại như AES.
Văn bản của tôi có được tải lên máy chủ không?
Không. Toàn bộ việc mã hóa và giải mã diễn ra hoàn toàn trong trình duyệt của bạn, nên văn bản và từ khóa của bạn không bao giờ được tải lên, ghi lại hay lưu trữ. Ngay cả một liên kết chia sẻ cũng giữ dữ liệu của bạn trong phần URL nằm sau dấu thăng, phần mà trình duyệt không bao giờ gửi đến máy chủ, nên nó vẫn riêng tư cho đến khi bạn chọn chia sẻ.

Công cụ liên quan

Tiếp tục với những công cụ hữu ích này

Mật mã Vigenère

Mật mã Beaufort

Mật mã Gronsfeld

Mật mã Running Key

Mật mã Porta

Mật mã Trithemius