Mật Mã Autokey
Nhập một từ khóa mở đầu ngắn và một thông điệp, công cụ sẽ mã hóa hoặc giải mã bằng mật mã autokey Vigenère — khóa không bao giờ lặp lại vì nó tiếp tục bằng chính thông điệp. Bạn thấy khóa xếp thẳng hàng dưới văn bản và phép cộng đằng sau từng chữ cái. Miễn phí, không cần đăng ký, và không có gì rời khỏi trình duyệt của bạn.
Một từ khóa ngắn chỉ để khởi đầu khóa. Sau đó, khóa tiếp tục bằng chính thông điệp, nên không bao giờ lặp lại.
Autokey bản rõ là mật mã cổ điển, và là loại mà các trang đố vui muốn nói đến khi nói “autokey”. Dạng dùng bản mã là phiên bản khác xuất hiện trong sách giáo khoa; hai bên phải chọn cùng một dạng.
Cách tính
Khóa, từng chữ một — 12 chữ đầu tiên
| Bản rõ | A | T | T | A | C | K | A | T | D | A | W | N |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Khóa | Q | U | E | E | N | L | Y | A | T | T | A | C |
| Bản mã | Q | N | X | E | P | V | Y | T | W | T | W | P |
7 chữ khóa đầu tiên (được tô sáng) là từ khóa mở đầu; sau đó, mỗi chữ khóa là chữ bản rõ đứng trước nó 7 vị trí.
- Các chữ cái được đánh số A = 0, B = 1 … Z = 25, và mọi phép cộng đều quay vòng khi đạt 26.
- Mã hóa: chữ bản mã = chữ bản rõ + chữ khóa.
- Khóa là từ khóa mở đầu theo sau bởi bản rõ, nên khi giải mã, mỗi chữ bạn khôi phục được sẽ nối thêm vào khóa.
Bảng Vigenère
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| B | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A |
| C | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B |
| D | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
| E | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D |
| F | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E |
| G | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F |
| H | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G |
| I | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H |
| J | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I |
| K | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J |
| L | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K |
| M | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L |
| N | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M |
| O | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N |
| P | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| Q | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
| R | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q |
| S | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R |
| T | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S |
| U | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T |
| V | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U |
| W | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V |
| X | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W |
| Y | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X |
| Z | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y |
Hàng = chữ khóa, cột = chữ bản rõ, ô = chữ bản mã. Chọn một chữ dưới đây để làm nổi bật: hàng và cột của nó chuyển sang màu xanh, còn ô giao nhau chuyển sang màu hổ phách.
| Chữ bản rõ | Chữ khóa | Phép tính | Chữ bản mã |
|---|---|---|---|
| Q | 0 + 16 = 16 | Q | |
| U | 19 + 20 = 39 ≡ 13 | N | |
| E | 19 + 4 = 23 | X | |
| E | 0 + 4 = 4 | E | |
| N | 2 + 13 = 15 | P | |
| L | 10 + 11 = 21 | V | |
| Y | 0 + 24 = 24 | Y | |
| A | 19 + 0 = 19 | T | |
| T | 3 + 19 = 22 | W | |
| T | 0 + 19 = 19 | T | |
| A | 22 + 0 = 22 | W | |
| C | 13 + 2 = 15 | P |
Cách Sử Dụng Công Cụ Mật Mã Autokey
- 1. Chọn từ khóa mở đầu. Đó là một từ khóa ngắn, chẳng hạn QUEENLY, dùng để khởi đầu khóa. Chỉ các chữ cái trong đó mới được tính.
- 2. Chọn thứ gì tiếp nối khóa. Autokey cổ điển dùng bản rõ; dạng dùng bản mã được cung cấp cho các sách giáo khoa có dùng dạng đó. Hai bên phải thống nhất với nhau.
- 3. Nhập thông điệp và chọn Mã hóa hoặc Giải mã. Khoảng trắng, chữ số và dấu câu được giữ nguyên và không dùng chữ khóa nào.
- 4. Quan sát khóa được hình thành. Bảng khóa xếp thẳng hàng bản rõ, khóa và bản mã, với từ khóa mở đầu được tô sáng; chọn một chữ trong bảng làm việc để xem nó trong bảng vuông.
Mật Mã Autokey Hoạt Động Như Thế Nào
Mật mã autokey là một mật mã Vigenère với một thay đổi: khóa không lặp lại. Người gửi và người nhận thống nhất một từ khóa mở đầu ngắn, và khóa là từ khóa mở đầu theo sau bởi chính thông điệp. Với A = 0 đến Z = 25, mỗi chữ bản mã là C = P + K (mod 26), đúng như trong mật mã Vigenère, và giải mã trừ khóa đi một lần nữa: P = C − K.
Việc giải mã hoạt động vì khóa luôn đi trước người đọc một bước. Từ khóa mở đầu giải mã vài chữ cái đầu; các chữ bản rõ đó trở thành các chữ khóa tiếp theo, giải mã những chữ kế tiếp, và cứ thế đến cuối. Lấy từ khóa mở đầu QUEENLY và thông điệp ATTACKATDAWN:
| Bản rõ | Khóa | Tổng | Bản mã |
|---|---|---|---|
| A (0) | Q (16) | 0 + 16 = 16 | Q |
| T (19) | U (20) | 19 + 20 = 39 ≡ 13 | N |
| T (19) | E (4) | 19 + 4 = 23 | X |
| A (0) | E (4) | 0 + 4 = 4 | E |
| C (2) | N (13) | 2 + 13 = 15 | P |
Toàn bộ thông điệp trở thành QNXEPVYTWTWP, cùng đáp án mà bài viết Wikipedia về mật mã autokey đưa ra cho ví dụ này. Khóa là QUEENLY theo sau bởi ATTACKATDAWN; chữ thứ tám của nó, A, là chữ đầu tiên của thông điệp. Công cụ hiển thị dòng khóa ngay dưới văn bản của bạn để bạn thấy từ khóa mở đầu kết thúc ở đâu và thông điệp tiếp quản ra sao.
Lịch Sử Ngắn của Mật Mã Autokey
Ý tưởng để chính thông điệp làm khóa thường được gán cho nhà bác học người Ý Girolamo Cardano vào giữa thế kỷ 16. Phiên bản của ông khởi động lại khóa ở mỗi từ, khiến từ đầu tiên khó khôi phục đối với người đọc hợp pháp cũng như đối với kẻ địch đang phân tích mật mã, theo cuốn lịch sử The Codebreakers của David Kahn. Năm 1586, Blaise de Vigenère mô tả một sơ đồ gọn hơn trong Traicté des chiffres: một chữ mồi duy nhất, rồi một khóa chạy tiếp xuyên suốt thông điệp mà không khởi động lại. Đó là mật mã autokey như được giảng dạy ngày nay. Mật mã dùng từ khóa lặp lại mang tên Vigenère lại là một phát minh khác, cũ hơn, của Giovan Battista Bellaso — nhãn hiệu ấy được gắn vào nhầm trong thế kỷ 19.
Cách Phá Mật Mã Autokey
Khóa không lặp lại làm vô hiệu các đòn tấn công từng phá hủy mật mã Vigenère. Phép kiểm tra Kasiski tìm các đoạn lặp lại cách nhau đúng một độ dài khóa, còn chỉ số trùng khớp tìm một chu kỳ; một thông điệp autokey không có cả hai. Nhưng khóa được làm từ ngôn ngữ thông thường, và đó là điểm yếu. Nhà phân tích đoán một từ phổ biến như THE, trượt nó dọc theo bản mã rồi trừ đi; ở chỗ kết quả là tiếng Anh đọc được, đoạn đó có khả năng cũng là một phần của khóa, và nó làm lộ thêm bản rõ ở vị trí cách đó đúng một độ dài từ khóa mở đầu. Mỗi lần đoán đúng lại mở đường cho lần tiếp theo, và thông điệp tháo gỡ rất nhanh. Các chữ đầu, được mã hóa chỉ với từ khóa mở đầu, là một mật mã Vigenère khóa ngắn thông thường. Một nhược điểm khác là lan truyền lỗi: một chữ sai khi mã hóa hoặc chép lại sẽ làm hỏng mọi chữ sau nó.
Dành cho câu đố và giảng dạy, không phải bảo mật
Autokey là một bước tiến thực sự so với khóa lặp lại, nhưng nó đã bị phá từ nhiều thế hệ trước. Hãy dùng nó để học cách khóa chạy hoạt động, đừng bao giờ dùng nó để bảo vệ điều gì riêng tư.
Câu Hỏi Thường Gặp
- Mật mã autokey là gì?
- Mật mã autokey là một mật mã thay thế đa bảng, trong đó khóa là một từ khóa mở đầu ngắn theo sau bởi chính thông điệp. Mỗi chữ được mã hóa theo quy tắc Vigenère, C = P + K (mod 26), nên khóa dài bằng thông điệp và không bao giờ lặp lại.
- Làm thế nào để giải mã một mật mã autokey?
- Viết từ khóa mở đầu, trừ từng chữ khóa khỏi chữ bản mã tương ứng để được một chữ bản rõ, rồi nối chữ bản rõ đó vào khóa và tiếp tục. Khi từ khóa mở đầu đã dùng hết, khóa chỉ còn là bản rõ bạn đã khôi phục. Công cụ này làm việc đó cho bạn khi bạn chọn Giải mã.
- Khác nhau giữa mật mã autokey và Vigenère là gì?
- Vigenère lặp lại một từ khóa cho toàn bộ thông điệp, còn autokey dùng từ khóa một lần rồi tiếp tục bằng chính thông điệp. Điều này loại bỏ mẫu lặp lại mà phép kiểm tra Kasiski và chỉ số trùng khớp dựa vào, và đó là lý do autokey chống được các đòn tấn công ấy.
- Mật mã autokey có an toàn không?
- Không. Vì khóa được làm từ bản rõ, một từ được đoán sẽ tiết lộ cả một phần thông điệp lẫn một phần khóa, và các phần này nối với nhau. Phân tích kéo từ (crib-dragging) với các từ phổ biến phá nó bằng tay, còn phần mềm khôi phục từ khóa mở đầu từ vài trăm chữ cái.
- Từ khóa mở đầu nên dài bao nhiêu?
- Bao nhiêu cũng được, từ một chữ cái trở lên. Bản gốc của Vigenère dùng một chữ cái duy nhất, còn ví dụ của American Cryptogram Association dùng từ PRIMER sáu chữ cái. Từ khóa mở đầu dài hơn che giấu thêm vài chữ cái đầu, nhưng không thay đổi điểm yếu cơ bản: sau từ khóa mở đầu, khóa chính là bản rõ.
- Autokey dạng bản mã là gì?
- Ở dạng bản mã, khóa tiếp nối bằng bản mã thay vì bản rõ. Dạng này dễ giải mã hơn vì toàn bộ khóa hiển thị trong bản mã, nhưng điều đó cũng có nghĩa là bất kỳ ai cũng đọc được khóa, nên nó gần như không thêm gì so với một khóa Vigenère ngắn. Hai bên phải chọn cùng một phiên bản.