Mật mã Two-square

Mật mã Two-square (mật mã hình vuông đôi) ,đôi khi còn được gọi là Playfair đôi, là một kỹ thuật mã hóa đối xứng. Nó được phát triển để giảm bớt tính chất cồng kềnh của sự mã hóa được sử dụng trong bốn hình vuông (four-square) trong khi vẫn mạnh hơn một chút so với mật mã Playfair đơn.

Kỹ thuật này mã hóa các cặp chữ cái (digraph), và do đó thuộc loại mật mã được gọi là mật mã thay thế đa kí tự Điều này bổ sung sức mạnh đáng kể cho mã hóa khi so sánh với mật mã thay thế đơn chữ, hoạt động trên các ký tự đơn lẻ. Việc sử dụng tới hai hình vuông làm cho mật mã này ít bị ảnh hưởng bởi các cuộc tấn công bằng kĩ thuật phân tích tần suất, vì việc phân tích phải được thực hiện trên 676 (26x26) hình vuông khả dĩ để có thể giải thay vì chỉ 26 trong mật mã thay thế một kí tự. Phân tích tần số để giải mã là có thể, nhưng khó hơn đáng kể, và nó thường đòi hỏi một văn bản lớn hơn nhiều để có thể giải mã

Cấu trúc 

Mật mã hai hình vuông sử dụng hai hình vuông 5x5 và có hai loại, ngang và dọc. Hình vuông ngang có hai hình cạnh nhau. Hình vuông dọc có một hình vuông bên dưới hình vuông kia. Mỗi hình 5x5 chứa các chữ cái trong bảng chữ cái (thường bỏ qua "Q" hoặc đặt cả "I" và "J" vào cùng một vị trí để giảm bảng chữ cái cho phù hợp). Các bảng chữ cái trong cả hai ô vuông thường là bảng chữ cái hỗn hợp, mỗi bảng dựa trên một số từ khóa hoặc cụm từ.

Để tạo hình vuông 5x5, trước tiên người ta sẽ điền vào các khoảng trống trong hình bằng các chữ cái của từ khóa hoặc cụm từ (loại bỏ bất kỳ chữ cái trùng lặp nào), sau đó điền vào các khoảng trống còn lại bằng các chữ cái còn lại của bảng chữ cái theo thứ tự A->Z (bỏ qua "Q" để  bảng chữ cái phù hợp). Từ khóa có thể được viết ở các hàng trên cùng của bảng, từ trái sang phải hoặc theo một số mẫu khác, chẳng hạn như hình xoắn ốc bắt đầu ở góc trên bên trái và kết thúc ở trung tâm. Việc sử dụng hai hình vuông cho phép tạo ra hai khóa riêng biệt, một khóa cho mỗi hình.

Ví dụ: đây là  hai ô vuông dọc cho đang được sử dụng cho các từ khóa "EXAMPLE" và "KEYWORD":
 E X A M P
 L B C D F
 G H I J K
 N O R S T
 U V W Y Z
  
 K E Y W O
 R D A B C
 F G H I J
 L M N P S
 T U V X Z

Cách thức sử dụng 

Mã hóa sử dụng hai ô vuông về cơ bản giống như  được sử dụng trong bốn ô vuông, ngoại trừ việc thong điệp và bản mã sử dụng cùng một hình vuông

Để mã hóa một tin nhắn, người ta sẽ làm theo các bước sau:

 Chia các kí tự trong thông điệp thành nhóm 2 kí tự.  (Ví dụ: Need some help over here ---> ne ed so me he lp ov er he re)
 Đối với hình vuông dọc, ký tự đầu tiên của thông điệp  được sử dụng ở hình vuông trên cùng, trong khi ký tự thứ hai sử dụng dưới cùng
 Đối với ô vuông ngang, ký tự đầu tiên của thông điệp sử dụng ở hình vuông bên trái, trong khi ký tự thứ hai sử dụng bên phải.
Ta sẽ làm một ví dụ về cặp kí tự "Ne" trong từ "Need" mà đã được nêu trên. 
Tìm chữ cái đầu tiên trong thông điệp trong hình vuông ở phía trên (trong trường hợp này thì là chữ N)(phần gạch dưới)
 E X A M P
 L B C D F
 G H I J K
 N O R S T
 U V W Y Z
  
 K E Y W O
 R D A B C
 F G H I J
 L M N P S
 T U V X Z

 Tìm ký tự thứ hai trong hình vuông ở phía dưới (trong trường hợp này là chữ E)(phần gạch dưới)
 E X A M P
 L B C D F
 G H I J K
 N O R S T
 U V W Y Z
  
 K E Y W O
 R D A B C
 F G H I J
 L M N P S
 T U V X Z

 Một hình chữ nhật (phần các chữ in đậm) sẽ được tạo ra bởi hai ký tự N (hình vuông trên) và E (hình vuông dưới) 
 E X A M P
 L B C D F
 G H I J K
 N O R S T
 U V W Y Z
  
 K E Y W O
 R D A B C
 F G H I J
 L M N P S
 T U V X Z

 Sau đó, biến đổi kí tự N sang kí tụ ở góc kế bên trong hình chữ nhật đó (trong trường hợp này thì N sẽ thành O)
 Đối với chữ E thì làm y hệt (trong trường hợp này thì E sẽ thành K)
 E X A M P
 L B C D F
 G H I J K
 N O R S T
 U V W Y Z
  
 K E Y W O
 R D A B C
 F G H I J
 L M N P S
 T U V X Z

 Cứ làm như vậy đối với các cặp kí tự tiếp theo thì ta sẽ có day mật mã sau

 Plaintext:  ne ed so me he lp ov er he re
 Ciphertext: OK XR TW XW HE DL RU ER HE OY

Quy tắc hình chữ nhật được sử dụng để mã hóa và giải mã có thể được nhìn thấy rõ ràng trong sơ đồ này. Phương pháp giải mã giống với phương pháp mã hóa, chỉ khác là làm ngược lại thôi.

*Cũng giống như Playfair (và không giống như Four-square), có những trường hợp đặc biệt khi hai chữ cái trong một hình vuông nằm trong cùng một cột đối với hai ô vuông dọc hoặc trên cùng một hàng đối với hai ô vuông nằm ngang. Ví dụ như hai kí tự "he" đưng cùng một cột, và vẫn sẽ được mã hóa thành "HE"

Giải mã 
Giống như hầu hết các mật mã thời kỳ tiền hiện đại, mật mã hai ô vuông có thể dễ dàng bị bẻ khóa nếu có đủ văn bản. Việc lấy khóa tương đối đơn giản nếu cả thông điệp và bản mã đều được biết. Khi chỉ có bản mã được biết, việc phá mã sẽ bao gồm việc tìm kiếm thông qua phân tích tuần suất của các kí tự (cặp chữ cái) .

Tùy thuộc vào việc sử dụng hai ô vuông dọc hay ngang, bản mã có thể vẫn sẽ hiển thị một số lượng đáng kể các đoạn của thông điệp. Trong một mẫu bản mã đủ lớn,nhà phân tích có thể tạo ra các chuỗi các thông điệp để giải mã và làm việc ngược lại để tìm từ khóa của mật mã đó

Một hướng dẫn hay về việc bẻ khóa cho mật mã hai hình vuông có thể tìm thấy trong chương 7, "Solution to Polygraphic Substitution Systems," trong Field Manual 34-40-2, do Quân đội Hoa Kỳ xuất bản.

Tham khảo

Mật mã cổ điển