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.
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).
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
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
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
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
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
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 hoạt động như thế nào?
Làm thế nào để chọn một khóa mật mã Hill hợp lệ?
Bạn có thể cho một ví dụ thực hành về mật mã Hill không?
Làm thế nào để giải mã một mật mã Hill?
Sự khác biệt giữa mật mã Hill 2×2 và 3×3 là gì?
Tại sao khóa của tôi báo là không khả nghịch?
Điều gì xảy ra với dấu cách, chữ số và dấu câu?
Mật mã Hill có an toàn không?
Ai đã phát minh ra mật mã Hill?
Nghịch đảo theo modulo của một ma trận là gì?
Văn bản của tôi có được tải lên máy chủ không?
Công cụ liên quan
Tiếp tục với những công cụ hữu ích này