Mật mã Running Key
Mã hóa và giải mã mật mã running key, một mật mã Vigenère có khóa là một đoạn văn bản dài thay vì một từ ngắn lặp lại. Vì khóa dài bằng thông điệp và không bao giờ lặp lại, mẫu hình tuần hoàn vốn phá vỡ một mật mã Vigenère thông thường biến mất. 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.
Dán một đoạn khóa dài, theo truyền thống là một trang sách đã thỏa thuận. Để có một khóa chạy thực sự, nó phải dài ít nhất bằng thông điệp của bạn. Chỉ các chữ cái được dùng để dịch chuyển; 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 khóa đều bị bỏ qua.
Nhập văn bản ở trên để xem kết quả running key tại đây.
Cách sử dụng Mật mã Running Key
- 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ã running key, hoặc Giải mã để khôi phục bản rõ từ bản mã. Cùng một khóa chạy được dùng cho cả hai chiều.
- 2
Dán khóa chạy của bạn
Dán một đoạn văn bản dài để dùng làm khóa, theo truyền thống là một trang sách đã thỏa thuận. Để có một khóa chạy thực sự, nó nên dài ít nhất bằng thông điệp của bạn. Chỉ các chữ cái của nó được dùng, và chữ hoa chữ thường, dấu cách và dấu câu đều bị bỏ qua.
- 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, làm nổi bật bất kỳ điểm nào mà một khóa ngắn phải cuộn vòng và lặp lại.
- 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 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ã Running Key
Mật mã running key là gì?
Mật mã running key là một mật mã thay thế đa bảng, một dạng của mật mã Vigenère trong đó khóa là một đoạn văn bản thông thường dài thay vì một từ khóa ngắn lặp lại. Người gửi và người nhận thỏa thuận trước về một văn bản khóa, kinh điển là một ấn bản của một cuốn sách cụ thể mở đến một trang cụ thể, và dùng các chữ cái của nó theo thứ tự để dịch chuyển thông điệp. Vì khóa dài ít nhất bằng thông điệp, nó không bao giờ phải lặp lại, và cấu trúc chu kỳ đều đặn vốn khiến một mật mã khóa lặp dễ bị phá đơn giản là biến mất.
Chính khóa dài, không lặp lại này là điều khiến mật mã running key khác biệt. Một mật mã Vigenère thông thường tự để lộ qua tính chu kỳ: từ khóa ngắn của nó xoay vòng, và nhịp điệu đó có thể bị phát hiện và tháo gỡ. Một khóa chạy loại bỏ hoàn toàn nhịp điệu đó. Sự đánh đổi là khóa giờ đây là ngôn ngữ tự nhiên, với tất cả thiên lệch thống kê mà văn bản tiếng Anh mang theo, và thiên lệch đó trở thành kẽ hở mà kẻ tấn công dùng để thay thế.
Mật mã running key hoạt động ra sao
Đánh số bảng chữ cái từ A là 0 đến Z là 25. Viết văn bản khóa ra bên dưới thông điệp sao cho một chữ cái khóa nằm dưới mỗi chữ cái của 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, cho ra chữ cái bản mã C = (P + K) mod 26. Phép toán chính là bảng Vigenère; chỉ có nguồn của khóa là thay đổi.
Để giải mã, người nhận viết cùng văn bản khóa đó bên dưới bản mã và trừ đi, khôi phục mỗi chữ cái bản rõ bằng P = (C − K) mod 26. Cũng như mọi biến thể Vigenère, chỉ 26 chữ cái được biến đổi: dấu cách, dấu câu và chữ số đi thẳng xuyên qua 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 của thông điệp. 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.
Ví dụ thực hành
Mã hóa thông điệp HELLO bằng khóa chạy KEYBOARD. Xếp năm chữ cái khóa đầu tiên K, E, Y, B, O dưới thông điệp và cộng: H cộng K là R, E cộng E là I, L cộng Y là J, L cộng B là M, và O cộng O là C. Bản mã là RIJMC. Để ý rằng, khác với mật mã Autokey, các chữ cái khóa hoàn toàn đến từ văn bản khóa đã thỏa thuận và không liên quan gì đến bản rõ.
Để giải mã RIJMC bạn viết cùng khóa KEYBOARD bên dưới nó và trừ đi: R trừ K là H, I trừ E là E, J trừ Y là L, M trừ B là L, và C trừ O là O, khôi phục HELLO. Toàn bộ thông điệp có thể được đọc trong một lượt vì khóa đã được biết đầy đủ ngay từ đầu, không có phản hồi từng chữ cái phải chờ đợi.
Running key so với Vigenère khóa lặp
Một mật mã Vigenère tiêu chuẩn lặp lại một từ khóa ngắn trên toàn bộ thông điệp: 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 khôi phục 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 được giải bằng phân tích tần suất. Mật mã running key dùng cùng quy tắc cộng giống hệt nhưng một khóa dài bằng thông điệp, nên không có chu kỳ để tìm và những phép kiểm tra cổ điển đó không áp dụng trực tiếp.
Mối nguy là dùng một khóa quá ngắn. Nếu khóa chạy ngắn hơn thông điệp thì nó phải cuộn vòng về đầu, và vào khoảnh khắc đó nó trở thành một mật mã Vigenère khóa lặp thông thường với tất cả nhược điểm của mật mã đó. Chẳng hạn, mã hóa HELLO với khóa ba chữ cái KEY cuộn vòng cho ra RIJVS — chính là kết quả Vigenère lặp. Công cụ này gắn cờ mọi chữ cái khóa bị dùng lại để bạn có thể thấy mật mã suy yếu, và một khóa chạy đúng đắn luôn phải dài ít nhất bằng văn bản.
Running key so với mật mã Autokey
Mật mã running key và mật mã Autokey là họ hàng gần: 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, và cả hai đều quy về cùng một phép cộng modulo. Sự khác biệt là khóa dài đó đến từ đâu. Một mật mã running key 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 dựng khóa dài của nó từ một từ khóa mồi ngắn theo sau bởi chính bản rõ.
Sự khác biệt đó định hình cách mỗi mật mã bị tấn công. Mật mã 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õ, đoán một từ thông dụng và kéo lê nó qua thông điệp sẽ để lộ thêm văn bản. Mật mã running key cần cả hai bên giữ cùng văn bản khóa, nhưng nhược điểm của nó mang tính thống kê: cả thông điệp lẫn khóa đều là ngôn ngữ tự nhiên, nên một nhà phân tích có thể thử các từ có khả năng đối chọi với các từ có khả năng cho đến khi một cách tách nhất quán hiện ra.
Cách phá mật mã running key
Vì khóa không bao giờ lặp lại, phép kiểm tra Kasiski và chỉ số trùng hợp không cắn theo cách chúng cắn vào một mật mã Vigenère lặp. Thay vào đó, cuộc tấn công cổ điển khai thác sự thật rằng mỗi chữ cái bản mã là tổng của hai chữ cái đều được lấy từ ngôn ngữ thông thường. Tiếng Anh có tính dư thừa cao, nên chỉ một số ít cặp chữ cái bản rõ và khóa là hợp lý cho bất kỳ chữ cái bản mã cho trước nào, và các từ thông dụng trong một trong hai luồng để lại dấu vết có thể phát hiện được.
Phương pháp thực tế, thường được ghi công cho William Friedman, là đoán một từ có khả năng, trừ nó khỏi một đoạn bản mã như thể nó là khóa, và xem liệu luồng còn lại có hiện ra trông giống ngôn ngữ không. Một phỏng đoán đúng trong khóa để lộ một mảnh bản rõ, và một phỏng đoán đúng trong bản rõ để lộ một mảnh khóa; mỗi mảnh sau đó có thể được mở rộng ra ngoài và hai luồng được tháo ra đối chiếu với nhau. Dùng lại cùng một văn bản khóa cho nhiều hơn một thông điệp là chí mạng, vì trừ hai bản mã sẽ triệt tiêu khóa chung và để lại hai bản rõ kết hợp.
Từ khóa chạy đến mật mã dùng một lần
Mật mã running key là tổ tiên khái niệm trực tiếp của mật mã dùng một lần (one-time pad), mật mã duy nhất được chứng minh là không thể phá. Công thức gần như giống nhau: lấy một khóa dài bằng thông điệp và cộng nó từng chữ cái. Mật mã dùng một lần thêm ba điều kiện ngặt nghèo — khóa phải thực sự ngẫu nhiên, dài ít nhất bằng thông điệp, và không bao giờ được dùng lại. Đáp ứng cả ba thì mọi bản rõ khả dĩ đều nhất quán như nhau với bản mã, nên không phân tích nào có thể thiên về bản thật.
Một khóa chạy thất bại chính ở những điều kiện đó. Một đoạn sách không ngẫu nhiên; nó là tiếng Anh có cấu trúc mà tần suất chữ cái và các từ thông dụng cho nhà phân tích chỗ bám đã mô tả ở trên. Vậy nên trong khi mật mã running key mạnh hơn một mật mã Vigenère lặp một cách có ý nghĩa, nó không cung cấp sự an toàn thực sự nào theo tiêu chuẩn hiện đại và không bao giờ nên bảo vệ những bí mật thật. Nó được tận hưởng tốt nhất như một bài học sống động về lịch sử mật mã học và là một món chủ lực của 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ực sự, hãy dùng một thuật toán hiện đại, được kiểm chứng kỹ lưỡng như AES.
Câu hỏi thường gặp
Mật mã running key là gì?
Mật mã running key hoạt động như thế nào?
Mật mã running key khác mật mã Vigenère như thế nào?
Bạn có thể cho một ví dụ về mật mã running key không?
Tôi nên dùng gì làm khóa chạy?
Điều gì xảy ra nếu khóa của tôi ngắn hơn thông điệp?
Sự khác biệt giữa mật mã running key và Autokey là gì?
Mật mã running key có giống mật mã sách không?
Mật mã có thay đổi dấu cách, chữ số và dấu câu không?
Làm thế nào để phá mật mã running key?
Mật mã running key có liên quan đến mật mã dùng một lần không?
Mật mã running key có an toàn không, và văn bản của tôi có được tải lên không?
Công cụ liên quan
Tiếp tục với những công cụ hữu ích này