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

Mã hóa và giải mã mật mã Hill, mật mã thay thế đa ký tự cổ điển được xây dựng trên đại số tuyến tính. Các chữ cái được nhóm thành các khối, biến thành các vectơ số, rồi nhân với một ma trận khóa theo modulo 26: mã hóa là C = K·P, giải mã là P = K⁻¹·C. Chọn khóa 2×2 hoặc 3×3, theo dõi ma trận trực tiếp, định thức của nó và nghịch đảo theo modulo của nó, rồi theo dõi phần làm việc từng khối. Mọi thứ đều chạy trong trình duyệt của bạn.

Ma trận khóa

Khóa (chữ cái)

Khóa gồm 4 chữ cái (A=0 … Z=25) lấp đầy ma trận theo từng hàng. Khóa 2×2 mã hóa các chữ cái theo từng cặp (digraph).

Văn bản thường
Văn bản mã

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

Ma trận khóa

Mỗi khối chữ cái trở thành một vectơ (A=0 … Z=25) và được nhân với ma trận khóa theo modulo 26. Một khóa chỉ hoạt động khi định thức của nó khả nghịch theo mod 26.

C = K · P (mod 26)

Nhập đúng 4 chữ cái (A–Z) để lấp đầy ma trận khóa.

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

  1. 1

    Chọn mã hóa hoặc giải mã và một kích thước ma trận

    Chọn Mã hóa để mã hóa hoặc Giải mã để giải mã, rồi chọn khóa 2×2 (chữ cái theo từng cặp) hoặc khóa 3×3 (chữ cái theo từng bộ ba).

  2. 2

    Nhập khóa dưới dạng chữ cái

    Gõ các chữ cái khóa lấp đầy ma trận theo từng hàng — bốn chữ cái cho khóa 2×2, chín chữ cái cho khóa 3×3. Ma trận trực tiếp hiển thị định thức và cho bạn biết khóa có khả nghịch theo mod 26 hay không.

  3. 3

    Nhập hoặc dán văn bản của bạn

    Nhập thông điệp của bạn và nó được chuyển đổi ngay khi bạn gõ. Bảng làm việc hiển thị mỗi khối dưới dạng một vectơ, phép nhân ma trận, và khối kết quả.

  4. 4

    Kiểm tra ma trận khóa và nghịch đảo

    Mở bảng ma trận khóa để xem khóa, định thức của nó, và — khi khóa hợp lệ — ma trận nghịch đảo theo modulo được dùng để giải mã.

  5. 5

    Sao chép, tải xuống hoặc chia sẻ

    Sao chép kết quả, tải 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 văn bản, khóa, kích thước và chiều của bạn, sẵn sàng để dùng.

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

Mật mã Hill là gì?

Mật mã Hill là một mật mã thay thế đa ký tự cổ điển do nhà toán học người Mỹ Lester S. Hill phát minh vào năm 1929. Thay vì thay thế từng chữ cái một, nó mã hóa cả một khối chữ cái cùng lúc bằng cách xem khối đó như một vectơ số và nhân nó với một ma trận khóa bí mật, theo modulo 26. Đây là mật mã thực dụng đầu tiên có thể thao tác trên hơn ba ký hiệu cùng lúc, và nó đã đưa đại số tuyến tính vào ngay giữa lòng mật mã học.

Vì mỗi chữ cái đầu ra phụ thuộc vào mọi chữ cái đầu vào trong khối của nó, mật mã Hill che giấu các tần suất chữ cái đơn vốn làm lộ những mật mã đơn giản hơn. Khóa 2×2 trộn các chữ cái theo từng cặp, khóa 3×3 trộn chúng theo từng bộ ba, và các ma trận lớn hơn trộn những khối còn lớn hơn nữa. Sự khuếch tán đó cũng chính là ý tưởng nền tảng của các mật mã khối hiện đại, điều này khiến mật mã Hill trở thành một ví dụ giảng dạy được ưa chuộng — mặc dù, với tư cách là một mật mã tuyến tính, nó dễ bị phá với một chút văn bản gốc đã biết.

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

Trước tiên, biến các chữ cái thành số với A=0, B=1, cho đến Z=25. Khóa là một ma trận n×n gồm những số như vậy; ở đây bạn gõ nó dưới dạng một chuỗi chữ cái lấp đầy ma trận theo từng hàng, nên khóa 2×2 cần bốn chữ cái và khóa 3×3 cần chín chữ cái. Văn bản gốc được chia thành các khối n chữ cái, mỗi khối được viết thành một vectơ cột.

Để mã hóa một khối P, tính C = K · P (mod 26): nhân ma trận khóa với vectơ và rút gọn từng phần tử theo modulo 26, rồi đọc các số trở lại thành chữ cái. Để giải mã, bạn cần nghịch đảo theo modulo của ma trận khóa, K⁻¹, và tính P = K⁻¹ · C (mod 26). Nghịch đảo chỉ tồn tại khi định thức của ma trận khả nghịch theo modulo 26 — tức là khi nó không có chung thừa số nào với 26 — đây là quy tắc quan trọng nhất khi chọn một khóa.

Chọn một ma trận khóa hợp lệ

Không phải ma trận nào cũng có thể làm khóa Hill. Để việc giải mã hoạt động, định thức của khóa, lấy theo modulo 26, phải nguyên tố cùng nhau với 26. Vì 26 = 2 × 13, định thức phải là số lẻ và không phải là bội của 13; các giá trị được phép là mười hai số 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25. Nếu định thức là số chẵn hoặc bằng 13, không có nghịch đảo theo modulo nào tồn tại và văn bản mã không thể được giải mã một cách duy nhất.

Công cụ tính định thức cho bạn và hiển thị một huy hiệu xanh lá khi khóa khả nghịch hoặc một huy hiệu đỏ khi nó không khả nghịch, kèm theo ma trận nghịch đảo mà nó sẽ dùng để giải mã. Nếu một khóa bị từ chối, hãy thay đổi một hoặc hai chữ cái và theo dõi định thức cập nhật cho đến khi nó rơi vào một giá trị hợp lệ. Phản hồi trực tiếp này biến công việc vốn rắc rối của việc chọn tay một khóa Hill thành một bài tập trực quan và nhanh chóng.

Một ví dụ thực hành 2×2

Lấy khóa DDCF, lấp đầy ma trận 2×2 với các số 3, 3 ở hàng trên và 2, 5 ở hàng dưới. Định thức của nó là 3×5 − 3×2 = 9, và vì 9 nguyên tố cùng nhau với 26 nên khóa hợp lệ. Bây giờ mã hóa HELP. Khối đầu tiên HE là vectơ (7, 4): nhân ra được (3×7 + 3×4, 2×7 + 5×4) = (33, 34), rút gọn theo mod 26 thành (7, 8) = HI.

Khối thứ hai LP là (11, 15), cho ra (3×11 + 3×15, 2×11 + 5×15) = (78, 97) = (0, 19) = AT. Vậy HELP mã hóa thành HIAT. Để giải mã, công cụ nghịch đảo khóa thành (15, 17 / 20, 9) và nhân mỗi khối mã với nó, khôi phục lại HELP. Gõ DDCF làm khóa ở trên để xem từng bước xuất hiện trong bảng làm việc trực tiếp.

Một ví dụ thực hành 3×3

Ví dụ 3×3 kinh điển dùng khóa GYBNQKURP, lấp đầy ma trận với 6, 24, 1 ở hàng thứ nhất, 13, 16, 10 ở hàng thứ hai, và 20, 17, 15 ở hàng thứ ba. Mã hóa bộ ba ACT — vectơ (0, 2, 19) — cho ra (67, 222, 319) trước khi rút gọn, sau đó trở thành (15, 14, 7) theo modulo 26, hay POH.

Định thức của ma trận này là 25 theo modulo 26, nguyên tố cùng nhau với 26, nên đó là một khóa hợp lệ, và nghịch đảo theo modulo của nó là ma trận (8, 5, 10 / 21, 8, 21 / 21, 12, 8). Nhân khối mã POH với nghịch đảo đó sẽ trả lại ACT. Chuyển bộ chọn kích thước sang 3×3 và nhập GYBNQKURP để tái hiện ví dụ trong sách giáo khoa này và xem ma trận nghịch đảo mà công cụ suy ra.

Đệm, chữ cái và định dạng

Mật mã Hill chỉ biết 26 chữ cái A–Z, nên dấu cách, chữ số và dấu câu bị loại bỏ trước khi mã hóa và không quay trở lại khi bạn giải mã. Vì thông điệp được xử lý theo các khối cố định, một văn bản gốc có độ dài không phải là bội của kích thước khối sẽ được đệm bằng chữ cái X để hoàn thành khối cuối cùng; do đó một thông điệp được giải mã có thể kết thúc bằng một hoặc hai chữ cái thừa.

Phân biệt chữ hoa chữ thường không được bảo toàn — mọi thứ được xử lý như chữ in hoa. Những hạn chế này vốn thuộc về mật mã cổ điển chứ không phải về công cụ này, và chúng là một phần lý do vì sao mật mã Hill, giống như những mật mã cùng thời, được dùng cho các thông điệp chiến thuật ngắn thay vì văn bản trôi chảy tự do. Phần phân tích trực tiếp cho thấy chính xác văn bản của bạn được nhóm và đệm thành các khối như thế nào.

Độ an toàn và phân tích mật mã

Sức mạnh của mật mã Hill cũng chính là điểm yếu chí mạng của nó: nó tuyến tính. Mỗi khối mã là một hàm tuyến tính cố định của khối văn bản gốc, nên kẻ tấn công biết được đủ các cặp khối văn bản gốc–văn bản mã có thể thiết lập và giải một hệ phương trình tuyến tính để khôi phục trực tiếp ma trận khóa. Với một khóa n×n, thường chỉ cần khoảng n khối đã biết là đủ, điều này khiến mật mã nhanh chóng gục ngã trước một cuộc tấn công khi đã biết văn bản gốc.

Nó cũng không cung cấp sự khuếch tán nào giữa các khối và không có sự xáo trộn nào ngoài phép trộn tuyến tính, nên các khối văn bản gốc giống hệt nhau luôn mã hóa thành các khối mã giống hệt nhau. Theo tiêu chuẩn hiện đại nó không an toàn, và bạn không bao giờ nên dùng nó để bảo vệ thông tin thực — hãy chọn một thuật toán đã được kiểm chứng như AES thay vào đó. Tuy nhiên, với tư cách là một minh họa rõ ràng, trực quan về cách các ma trận, số học theo modulo và mã hóa khối kết hợp với nhau, mật mã Hill vẫn là một trong những mật mã cổ điển hay nhất để học.

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

Mật mã Hill là gì?
Mật mã Hill là một mật mã thay thế đa ký tự cổ điển do Lester S. Hill tạo ra vào năm 1929. Nó mã hóa các chữ cái theo từng khối bằng cách biến mỗi khối thành một vectơ số và nhân nó với một ma trận khóa bí mật theo modulo 26. Vì mỗi chữ cái đầu ra phụ thuộc vào cả khối, nó che giấu các tần suất chữ cái đơn và là mật mã đầu tiên áp dụng đại số tuyến tính vào việc mã hóa một cách thực dụng.
Mật mã Hill hoạt động như thế nào?
Các chữ cái trở thành số (A=0 … Z=25). Văn bản gốc được chia thành các khối n chữ cái, mỗi khối được viết thành một vectơ, và được mã hóa bằng C = K·P (mod 26) dùng ma trận khóa n×n K. Việc giải mã dùng nghịch đảo theo modulo của khóa: P = K⁻¹·C (mod 26). Khóa 2×2 hoạt động trên các cặp chữ cái và khóa 3×3 trên các bộ ba.
Làm thế nào để chọn một khóa mật mã Hill hợp lệ?
Ma trận khóa chỉ giải mã được khi định thức của nó, lấy theo modulo 26, nguyên tố cùng nhau với 26. Vì 26 = 2 × 13, định thức phải là số lẻ và không phải là bội của 13 — một trong các số 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, hoặc 25. Công cụ này hiển thị định thức trực tiếp và đánh dấu khóa là khả nghịch hay không, nên bạn có thể điều chỉnh các chữ cái cho đến khi nó hợp lệ.
Bạn có thể cho một ví dụ thực hành về mật mã Hill không?
Với khóa 2×2 DDCF (các hàng 3,3 và 2,5, định thức 9) từ HELP mã hóa thành HIAT: HE = (7,4) ánh xạ thành (7,8) = HI, và LP = (11,15) ánh xạ thành (0,19) = AT. Với khóa 3×3 GYBNQKURP, bộ ba ACT mã hóa thành POH. Nhập một trong hai khóa ở trên để xem từng khối và phép nhân ma trận xuất hiện từng bước một.
Làm thế nào để giải mã một mật mã Hill?
Việc giải mã nhân mỗi khối mã với nghịch đảo theo modulo của ma trận khóa, P = K⁻¹·C (mod 26). Trong công cụ này, chọn Giải mã, đặt cùng kích thước ma trận, và nhập cùng khóa đã được dùng để mã hóa; nó tính nghịch đảo và dựng lại văn bản gốc. Khóa phải khả nghịch theo mod 26, nếu không sẽ không có nghịch đảo nào — và do đó không có cách giải mã duy nhất nào — tồn tại.
Sự khác biệt giữa mật mã Hill 2×2 và 3×3 là gì?
Kích thước ma trận quy định độ dài khối. Khóa 2×2 mã hóa các chữ cái hai chữ một lần và cần một khóa bốn chữ cái; khóa 3×3 mã hóa chúng ba chữ một lần và cần một khóa chín chữ cái. Các ma trận lớn hơn trộn nhiều chữ cái hơn trong mỗi khối và chống lại phân tích tần suất tốt hơn một chút, nhưng chúng khó thiết lập hơn và vẫn gục ngã trước một cuộc tấn công khi đã biết văn bản gốc.
Tại sao khóa của tôi báo là không khả nghịch?
Một khóa Hill chỉ có thể giải mã nếu định thức của ma trận của nó nguyên tố cùng nhau với 26. Nếu định thức là số chẵn hoặc là bội của 13, ma trận không có nghịch đảo theo modulo 26 và văn bản mã không thể được giải mã một cách duy nhất. Thay đổi một hoặc hai chữ cái của khóa và theo dõi định thức cập nhật cho đến khi công cụ đánh dấu khóa là khả nghịch.
Điều gì xảy ra với dấu cách, chữ số và dấu câu?
Chỉ có các chữ cái A–Z tồn tại trong mật mã Hill, nên dấu cách, chữ số và dấu câu bị loại bỏ trước khi mã hóa và không xuất hiện trở lại khi bạn giải mã. Nếu độ dài thông điệp không phải là bội của kích thước khối, nó được đệm bằng chữ cái X để lấp đầy khối cuối cùng, nên một thông điệp được giải mã có thể kết thúc bằng một hoặc hai chữ cái thừa.
Mật mã Hill có an toàn không?
Không. Mật mã Hill là tuyến tính, nên kẻ tấn công có được đủ các cặp khối văn bản gốc–văn bản mã có thể giải một hệ phương trình tuyến tính và khôi phục ma trận khóa. Với một khóa n×n, khoảng n khối đã biết thường là đủ. Nó tuyệt vời để học cách các ma trận và số học theo modulo dựng nên một mật mã khối, nhưng để bảo vệ thực sự bạn nên luôn dùng một thuật toán hiện đại như AES.
Ai đã phát minh ra mật mã Hill?
Mật mã Hill được phát minh bởi Lester S. Hill, một nhà toán học người Mỹ, và được công bố vào năm 1929 trên tạp chí The American Mathematical Monthly. Nó nổi bật vì là mật mã đầu tiên có thể mã hóa các khối hơn ba chữ cái ở quy mô thực dụng, và nó đã giới thiệu đại số ma trận và số học theo modulo như những công cụ mã hóa — những ý tưởng còn vang vọng trong thiết kế mật mã khối hiện đại.
Nghịch đảo theo modulo của một ma trận là gì?
Đó là ma trận mà, khi nhân với khóa theo modulo 26, cho ra ma trận đơn vị. Với một khóa 2×2 hoặc 3×3, nó được tìm bằng cách nhân ma trận phụ hợp (ma trận đồng nhân tử được chuyển vị) với nghịch đảo theo modulo của định thức. Mật mã Hill dùng nó để đảo ngược việc mã hóa, và công cụ này hiển thị nghịch đảo mà nó tính được mỗi khi khóa hợp lệ.
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à 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ữ văn bản và khóa 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 thông điệp của bạn vẫn riêng tư cho đến khi bạn chọn chia sẻ liên kết.

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ã bốn ô vuông

Mật mã hai ô vuông

Mật mã Caesar

Mật mã Vigenère

Mật mã Atbash

Mật mã Rail Fence