T

Text Machine

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

Phép thử Kasiski

Tìm độ dài khóa của một mã khóa lặp từ khoảng cách giữa các chuỗi lặp.

Thử:

Bản mã
Thiết lập

Độ dài chuỗi

Thừa số tới

Ba chữ cái là lựa chọn kinh điển. Hai chữ cái tìm ra nhiều lần lặp hơn hẳn nhưng phần lớn là ngẫu nhiên, còn bốn trở lên chỉ giữ lại bằng chứng chắc nhất nên đòi văn bản dài hơn.

Dán bản mã vào để xét. Các mẫu là bản mã Vigenère thật với khóa năm và bảy chữ cái.

Cách sử dụng Phép thử Kasiski

  1. 1

    Dán bản mã

    Bỏ văn bản đã mã hóa vào ô nhập. Vài trăm chữ cái thường là đủ để các lần lặp xuất hiện; dưới khoảng một trăm thì thường không có gì để tìm.

  2. 2

    Chọn độ dài chuỗi

    Bắt đầu ở ba chữ cái. Nếu không có gì lặp lại, hạ xuống hai và coi kết quả là bằng chứng yếu. Nếu văn bản dài và bảng đếm nhiễu, nâng lên bốn.

  3. 3

    Đọc hậu thuẫn theo thừa số

    Mỗi độ dài ứng viên được chấm so với phần mà chỉ riêng ngẫu nhiên sẽ cho, và cái được gợi ý là thành viên mạnh nhất của mỗi họ ước và bội. Số khoảng cách thô cùng số chuỗi khác nhau đứng sau nó cũng được hiện ra: một thừa số được nhiều chuỗi khác nhau hậu thuẫn thì đáng tin hơn một chuỗi lắm lời lặp đi lặp lại, và phán đoán ấy được để lại cho bạn thay vì trộn vào điểm số.

  4. 4

    Đưa độ dài sang bộ giải

    Đưa độ dài được gợi ý cho bộ giải Vigenère, hoặc đối chiếu với bảng theo cột của công cụ chỉ số trùng hợp. Hai phương pháp đồng ý với nhau thì mạnh hơn nhiều so với từng cái riêng lẻ.

Phép thử Kasiski, giải thích

Quan sát mà phương pháp dựa vào

Mã Vigenère dịch mỗi chữ cái đi một lượng khác nhau, chạy vòng theo một từ khóa. Điều đó đánh bại việc đếm chữ cái, vì cùng một chữ cái bản rõ trở thành những chữ cái bản mã khác nhau tùy vị trí. Nhưng khóa thì lặp lại, và sự lặp lại rò rỉ ra ngoài.

Giả sử từ THE xuất hiện hai lần trong bản rõ, và tình cờ cả hai lần đều khớp với cùng ba chữ cái của khóa. Cả hai mã hóa ra cùng ba chữ cái bản mã. Khoảng cách giữa chúng, đếm theo chữ cái, khi đó là một số nguyên vòng khóa: một bội số của độ dài khóa.

Một sự trùng hợp như vậy chứng minh được rất ít. Hàng chục sự trùng hợp, phân tích ra thừa số và cộng dồn, thì chỉ thẳng vào độ dài.

Công cụ này đo cái gì

Mọi chuỗi có độ dài bạn chọn mà xuất hiện quá một lần đều được thu thập kèm vị trí. Với mỗi chuỗi, mọi khoảng cách từng cặp đều được tính, chứ không chỉ khoảng hở giữa các lần liền kề, vì ba lần xuất hiện mang ba mẩu bằng chứng và chỉ lấy khoảng hở liền kề là vứt đi một mẩu.

Sau đó mỗi độ dài khóa ứng viên nhận hai con số: nó chia hết bao nhiêu khoảng cách, và bao nhiêu chuỗi lặp khác nhau đã góp ít nhất một trong số đó. Việc xếp hạng dùng con số thứ nhất, đã hiệu chỉnh cho ngẫu nhiên. Con số thứ hai nằm bên cạnh và được cố ý giữ ngoài điểm số, vì nó là một phán đoán chứ không phải phép tính: một chuỗi lắm lời lặp tám lần sẽ thổi phồng số khoảng cách mà không thêm bằng chứng độc lập nào, trong khi ba chuỗi khác nhau cùng đồng ý về một thừa số là ba sự trùng hợp riêng biệt cùng chỉ một hướng. Nếu độ dài được gợi ý chỉ dựa vào một chuỗi duy nhất, đó chính là con số nên khiến bạn nghi ngờ.

Cái bẫy của các ước

Đây là chỗ nhiều người vấp, và nó là số học chứ không phải mật mã học. Nếu 12 chia hết một khoảng cách thì 2, 3, 4 và 6 cũng chia hết. Mọi ước của độ dài khóa thật đều thừa hưởng trọn điểm của nó, nên một bảng xếp theo hậu thuẫn luôn đưa các thừa số nhỏ nhất lên đầu, bất kể khóa thật ra là gì.

Cách sửa cũng là số học. Hãy tính phí mỗi thừa số theo phần hậu thuẫn mà ngẫu nhiên cho không: 2 chia hết một nửa của bất kỳ tập khoảng cách nào, nên phải chia đôi con số thô của nó trước khi đặt cạnh một thừa số chỉ chia hết một phần sáu. Hiệu chỉnh như vậy thì độ dài khóa thật vượt lên trên chính các ước của nó, vì một ước chỉ mang phần bằng chứng của riêng mình. Hiệu chỉnh thêm cả nhiễu mà một thừa số được phép có, vốn tăng theo thừa số, thì độ dài thật cũng vượt lên trên các bội của nó. Còn lại một quy tắc duy nhất không có giá trị nào chỉnh tay: trong mọi họ ước và bội, giữ lại thành viên mạnh nhất. Bảng đếm đầy đủ vẫn nằm bên dưới để bạn có thể không đồng ý: nếu độ dài được gợi ý chỉ có một chuỗi hậu thuẫn trong khi một thừa số khác được sáu chuỗi hậu thuẫn, thừa số đó đáng để nhìn lại.

Khi nào nó hỏng, và thay bằng gì

Phép thử Kasiski cần các lần lặp, và một thông điệp ngắn có thể đơn giản là không có. Nó cũng yếu đi trước những mã cố tình tránh lặp lại, và không nói được gì về hệ khóa chạy hay hệ dùng một lần, nơi khóa không bao giờ quay vòng.

Chỉ số trùng hợp tiếp cận cùng câu hỏi từ phía ngược lại: nó hoàn toàn bỏ qua các lần lặp và đo phân bố chữ cái của từng cách chia cột ứng viên. Vì hai phương pháp dựa vào những tính chất khác nhau của văn bản, chúng hiếm khi hỏng cùng lúc, và độ dài được cả hai hậu thuẫn thường là độ dài đúng.

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

Phép thử Kasiski là gì?
Đó là phương pháp do Friedrich Kasiski công bố năm 1863 để tìm độ dài khóa của một mã khóa lặp. Khi cùng một chuỗi bản rõ tình cờ khớp với cùng một phần của khóa, nó mã hóa ra cùng một chuỗi bản mã. Khoảng cách giữa hai chuỗi như vậy vì thế là bội số của độ dài khóa, nên phân tích thật nhiều khoảng cách ra thừa số sẽ làm lộ độ dài.
Vì sao gợi ý 6 khi 2 và 3 có hậu thuẫn ngang nhau?
Vì mọi ước của độ dài thật đều chia hết đúng những khoảng cách mà nó chia hết. Nếu khóa dài 6 chữ cái thì trong bảng đếm thô, 2 và 3 đạt ít nhất bằng 6, và một danh sách chỉ xếp theo hậu thuẫn sẽ gợi ý 2 với gần như mọi văn bản. Gợi ý ở đây giữ thừa số lớn nhất có hậu thuẫn tốt và loại các ước của nó, đúng như cách một nhà phá mã làm bằng mắt.
Cần bao nhiêu bản mã?
Phương pháp này sống nhờ các lần lặp, mà lặp thì càng hiếm khi văn bản càng ngắn. Vài trăm chữ cái thường cho ra vài lần lặp bộ ba. Dưới khoảng một trăm chữ cái bạn thường không tìm được gì, và thứ tìm được cũng dễ là ngẫu nhiên như là bằng chứng.
Vì sao vị trí khác với chỗ tôi nhìn thấy trong văn bản?
Vị trí và khoảng cách chỉ được đếm theo chữ cái. Khoảng trắng, chữ số, dấu câu và ngắt dòng bị bỏ trước khi đo bất cứ thứ gì, vì bản thân mã cũng chưa từng thấy chúng. Công cụ nào đếm cả chúng sẽ cho ra những con số khác với cùng một văn bản.
Có nên dùng chuỗi hai chữ cái không?
Chỉ nên coi là biện pháp cuối. Trong vài trăm chữ cái, các cặp lặp lại một cách ngẫu nhiên liên tục, và bảng đếm thừa số biến thành nhiễu sẵn sàng hậu thuẫn bất kỳ độ dài nào bạn muốn. Ba chữ cái là lựa chọn kinh điển vì một lần lặp bộ ba ngẫu nhiên đủ hiếm để có ý nghĩa.
Nếu Kasiski và chỉ số trùng hợp trái nhau thì sao?
Hãy tin bên có nhiều bằng chứng hơn, và ưu tiên độ dài mà cả hai đều cho phép. Hai phương pháp hỏng theo cách khác nhau: Kasiski chật vật khi văn bản ngắn hoặc ít lặp, còn chỉ số trùng hợp chật vật khi khóa dài so với thông điệp. Khi trái nhau, một bội chung hoặc ước chung của hai đáp án thường mới là độ dài thật.
Bản mã của tôi có rời khỏi trình duyệt không?
Không. Toàn bộ phép thử chạy ngay trong trang. Không có gì được tải lên, ghi lại hay lưu ở bất kỳ đâu.

Công cụ liên quan

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

Chỉ số trùng hợp

Trình giải mã Vigenère

Mật mã Vigenère

Trình nhận dạng mật mã

Phân tích tần suất

Trình giải mã thay thế