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ã 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.

Khóa chạy

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.

Bản rõ
Bản mã

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. 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. 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. 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. 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 là một mật mã Vigenère có khóa là một đoạn văn bản dài, chẳng hạn một trang từ cuốn sách đã thỏa thuận, thay vì một từ khóa 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, nó tránh được mẫu hình chu kỳ vốn khiến một mật mã Vigenère thông thường dễ bị phá. Nó đôi khi được gọi là mật mã sách khi khóa được lấy từ một cuốn sách.
Mật mã running key hoạt động như thế nào?
Đánh số bảng chữ cái A là 0 đến Z là 25 và viết văn bản khóa bên dưới thông điệp, một chữ cái khóa cho mỗi chữ cái thông điệp. Để 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 với cùng khóa đó: P = (C − K) mod 26. Chỉ các chữ cái được thay đổi; dấu cách, chữ số và dấu câu đi xuyên qua không bị động đến.
Mật mã running key khác mật mã Vigenère như thế nào?
Chúng dùng cùng quy tắc cộng, nhưng một mật mã Vigenère lặp lại một từ khóa ngắn trên toàn thông điệp trong khi một mật mã running key dùng một khóa dài bằng thông điệp và không bao giờ lặp lại. Điều đó loại bỏ chu kỳ mà phép kiểm tra Kasiski hay chỉ số trùng hợp sẽ tìm ra. Nếu một khóa chạy quá ngắn và phải lặp lại, nó suy thoái trở lại thành một mật mã Vigenère khóa lặp thông thường.
Bạn có thể cho một ví dụ về mật mã running key không?
Mã hóa HELLO với khóa chạy KEYBOARD cho ra RIJMC. Xếp thẳng các chữ cái khóa K, E, Y, B, O dưới thông điệp: 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. Giải mã RIJMC với cùng khóa KEYBOARD khôi phục HELLO trong một lượt duy nhất.
Tôi nên dùng gì làm khóa chạy?
Dùng bất kỳ đoạn văn bản dài nào mà bạn và người nhận đều có, kinh điển là một trang đã thỏa thuận của một cuốn sách cụ thể. Khóa nên dài ít nhất bằng thông điệp của bạn để nó không bao giờ phải lặp lại. Chỉ các chữ cái được dùng, và chữ hoa với chữ thường được xem như nhau, nên dấu câu và khoảng cách trong khóa không quan trọng.
Điều gì xảy ra nếu khóa của tôi ngắn hơn thông điệp?
Khóa cuộn vòng về đầu và bắt đầu lặp lại, điều này biến mật mã running key thành một mật mã Vigenère khóa lặp thông thường và phơi nó ra cho các cuộc tấn công thông thường. Công cụ này làm nổi bật các chữ cái khóa bị dùng lại để bạn có thể thấy chính xác điều đó xảy ra ở đâu. Để có một khóa chạy thực sự, hãy luôn dùng văn bản dài ít nhất bằng thông điệp bạn đang mã hóa.
Sự khác biệt giữa mật mã running key và Autokey 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, nhưng chúng khác nhau ở chỗ khóa đế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 cuốn sách, trong khi mật mã Autokey dựng khóa của nó từ một từ khóa mồi ngắn theo sau bởi chính bản rõ. Autokey chỉ cần một bí mật chung tí xíu; khóa chạy cần cả hai bên giữ cùng văn bản khóa.
Mật mã running key có giống mật mã sách không?
Nó là một loại mật mã sách. Khi văn bản khóa dài được lấy từ một cuốn sách đã thỏa thuận, mật mã running key thường được gọi là mật mã sách. Tên mật mã sách cũng được dùng cho một sơ đồ khác thay thế các từ bằng số trang, số dòng và số từ, nên thuật ngữ có thể mang một trong hai nghĩa, nhưng ở đây nó chỉ việc dùng văn bản sách làm khóa chạy Vigenère.
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.
Làm thế nào để phá mật mã running key?
Vì khóa không bao giờ lặp lại, các công cụ dành cho khóa lặp không áp dụng được. Thay vào đó, các nhà phân tích khai thác sự thật rằng cả thông điệp lẫn khóa đều là ngôn ngữ thông thường: mỗi chữ cái bản mã là tổng của hai chữ cái thiên lệch, nên đoán các từ có khả năng trong một trong hai luồng và trượt chúng qua văn bản sẽ để lộ các mảnh khớp có thể được mở rộng. Dùng lại một văn bản khóa cho nhiều thông điệp sẽ phá nó hoàn toàn.
Mật mã running key có liên quan đến mật mã dùng một lần không?
Có, rất mật thiết. Một mật mã dùng một lần (one-time pad) dùng một khóa dài bằng thông điệp và cộng nó theo cùng cách, nhưng nó đòi hỏi khóa phải thực sự ngẫu nhiên và không bao giờ được dùng lại, điều khiến nó không thể phá. Một khóa chạy dùng văn bản sách có cấu trúc thay vì các chữ cái ngẫu nhiên, và chính cấu trúc thống kê đó là điều cho phép nó bị tấn công, nên nó kém xa sự bí mật hoàn hảo của mật mã dùng một lần.
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?
Nó mạnh hơn một mật mã Vigenère khóa lặp nhưng vẫn không an toàn: khóa ngôn ngữ tự nhiên có thể bị tấn công bằng thống kê, nên hãy dùng một thuật toán hiện đại như AES cho những bí mật thật. Dữ liệu của bạn vẫn riêng tư ở đây dù sao đi nữa — toàn bộ việc mã hóa và giải mã diễn ra trong trình duyệt của bạn, và ngay cả một liên kết chia sẻ cũng giữ văn bản 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ủ.

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ã Autokey

Mật mã Porta

Mật mã Trithemius