Mật mã ADFGVX

Trong mật mã học, mật mã ADFGVX là một dạng mã hóa được quân đội Đức sử dụng trong suốt thế chiến I. ADFGVX là dạng mở rộng của một mật mã có sớm hơn là ADFGX. Được phát minh bởi đại tá Fritz Nebel và công bố tháng 3 năm 1918, mật mã sử dụng phương pháp chuyển vị phân đoạn kết hợp với bảng thay thế sử dụng một hình vuông Polybius. Tên của mật mã được đặt tên cho các chữ cái dùng để làm tọa độ cho bảng chữ cái: A, D, F, G, V và X. Những chữ cái này được sử dụng vì chúng rất khác nhau khi được chuyển thành mã Morse, vì vậy sẽ không gây sai sót trong quá trình truyền mã. Nebel thiết kế mật mã này với mong muốn xây dựng một phương pháp mã hóa đơn giản trong sử dụng nhưng vẫn bảo đảm an toàn. Thực tế, lúc đó người Đức tin rằng ADFGVX là không thể phá vỡ.

Cách thức sử dụng

Đối với tin nhắn văn bản thô, ví dụ như là "Attack at once", một bảng chữ cái thay thế được điền vào một hình vuông Polybius 5 × 5 như dưới đây:
 và  ở cùng một ô để làm cho số lượng chữ cái phù hợp với lưới 5 × 5.

Bằng cách sử dụng hình vuông, các chữ cái trong bảng tuơng ứng ở cột dọc và ngang mà đã được tô dậm:
Tiếp theo, thông điệp được chia ra và có thể chuyển vị theo cột. Tin nhắn sẽ được viết thành các hàng dưới phím chuyển vị (ví dụ ở đây là từ "CARGO"):

 C A R G O
 _________
 A F A D A
 D A F G F
 D X A F A
 D D F F X
 G F X F

Tiếp theo, các chữ cái được sắp xếp theo thứ tự bảng chữ cái trong khóa chuyển vị (đổi CARGO thành ACGOR) bằng cách sắp xếp lại các cột bên dưới các chữ cái cùng với chính các chữ cái:

 A C G O R
 _________
 F A D A A
 A D G F F
 X D F A A
 D D F X F
 F G F X

Sau đó, viết các từ theo từng cột từ trái sang phải, tạo ra bản mã:
 FAXDF ADDDG DGFFF AFAXA FAFX
Trong thực tế, các phím chuyển vị dài khoảng hai chục ký tự (chứ không phải 5 kí tự như trên). Các tin nhắn dài được gửi trong mật mã ADFGX được chia thành các tập hợp các tin nhắn có độ dài khác nhau và không đều để làm cho nó không thể bị tấn công bởi các phương thức đảo ngữ.. Cả phím chuyển vị và cá chữ cái trong bảng đều được thay đổi hàng ngày.

ADFGVX 
Vào tháng 6 năm 1918,chữ cái , đã được thêm vào trong mã. Điều này đã mở rộng lưới vuông thành 6 × 6, cho phép sử dụng 36 ký tự,và cho phép việc sử dụng bảng chữ cái đầy đủ (thay vì kết hợp I và J) và các chữ số  tới . Điều đó chủ yếu có tác dụng rút ngắn đáng kể các tin nhắn cí chứa nhiều số.

Mật mã dựa trên 6 chữ cái ADFGVX. Trong ví dụ sau, bảng chữ cái được mã hóa bằng từ mã tiếng Hà Lan 'nachtbommenwerper'. Vì vạy sẽ dẫn đến bảng chữ cái trong ô vuông sẽ là: NACHTBOMEWRPDFGIJKLQSUVXYZ.

Ví dụ, tin nhắn 'attack at 1200am' sẽ được biến đổi thành từ như sau

Sau đó, một bảng mới được tạo với một chìa khóa làm tiêu đề. Hãy sử dụng từ 'PRIVACY' làm chìa khóa. Thông thường các từ khóa sẽ dài hơn hoặc thậm chí các cụm từ sẽ được sử dụng.

Các cột sau đó sẽ được sắp xếp theo thứ tự bảng chữ cái, dựa trên từ khóa và lẽ đương nhiên, bảng sẽ thay đổi như sau:
Sau đó, chúng ta nối các từ trong các cột với nhau và tạo ra bản mã này:
DGDD DAGD DGAF ADDF DADV DVFA ADVX

Với từ khóa, các cột có thể được tạo lại và đặt theo đúng thứ tự. Khi sử dụng bảng lưới gốc, văn bản có thể được giải mã.

Bẻ khóa 

ADFGVX đã bị giải mã bởi Trung úy Lục quân Pháp Georges Painvin, và mật mã đã bị phá vỡ vào đầu tháng 6 năm 1918. Công việc này đặc biệt khó khăn, và Painvin bị ốm trong thời gian đó. Phương pháp giải của ông dựa vào việc tìm kiếm các thông điệp có phần đầu bị rập khuôn,từ đó ông có thể phân tách chúng và sau đó tạo thành các mẫu tương tự ở các vị trí trong bản mã tương ứng với các từ khóa trong cột trong bảng chuyển vị. (Cần có sự phân tích thống kê đáng kể sau khi đạt được bước đó, vậy mà tất cả đều được thực hiện bằng tay !) Do đó, nó chỉ hiệu quả trong những thời điểm có lưu lượng thông tin  rất cao, nhưng đó cũng là lúc những thông điệp quan trọng nhất được gửi đi.

Tuy nhiên, đó không phải là thủ thuật duy nhất mà Painvin sử dụng để bẻ khóa mật mã ADFGX. Ông cũng sử dụng các phần lặp lại của bản mã để lấy thông tin về độ dài có thể có mà chìa khóa đang được sử dụng. Trường hợp chìa khóa là một số lượng chữ cái có độ dài chẵn mà anh ta biết, theo cách thông điệp được ký kết, rằng mỗi cột bao gồm hoàn toàn các chữ cái được lấy từ đỉnh của Hình vuông Polybius hoặc từ bên trái của Hình vuông,nhưng không phải là h cả hai. Ngoài ra, sau khi thay thế nhưng trước khi chuyển vị, các cột sẽ luân phiên bao gồm các chữ cái "trên cùng" và "bên". Một trong những đặc điểm của phân tích tần suất các chữ cái là trong khi sự phân bố của các chữ cái riêng lẻ có thể khác nhau nhiều so với quy chuẩn.Với mật mã ADFGX, mỗi chữ cái "bên" hoặc chữ cái "trên cùng" được liên kết với năm chữ cái rõ ràng. Trong ví dụ trên, chữ cái "bên" "D" được liên kết với các chữ cái rõ ràng "d h o z k", và chữ cái "trên cùng" "D" được liên kết với các chữ cái rõ ràng "t h f j r". Vì hai nhóm gồm năm chữ cái có phân bố tần số tích lũy khác nhau, phân tích tần số của chữ "D" trong các cột bao gồm các chữ cái "bên" có kết quả khác biệt rõ ràng với kết quả của chữ "D" trong các cột bao gồm "trên cùng" bức thư. Thủ thuật đó cho phép Painvin đoán cột nào bao gồm các chữ cái "bên" và cột nào bao gồm các chữ cái "trên cùng". Sau đó, anh ta có thể ghép nối chúng và thực hiện phân tích tần số trên các ghép nối để xem liệu các ghép nối chỉ là tiếng ồn hay tương ứng với các chữ cái rõ ràng. Một khi anh ta đã có các ghép nối thích hợp, sau đó anh ta có thể sử dụng phân tích tần số để tìm ra các chữ cái rõ ràng thực sự. Kết quả vẫn là chuyển vị, nhưng để sắp xếp một chuyển vị đơn giản là tất cả những gì anh ta vẫn phải làm. Khi anh ta xác định được sơ đồ chuyển vị cho một thông điệp, sau đó anh ta sẽ có thể bẻ khóa bất kỳ thông điệp nào khác được kết hợp với cùng một khóa chuyển vị.

Painvin đã phá vỡ mật mã ADFGX vào tháng 4 năm 1918, vài tuần sau khi quân Đức tiến hành cuộc Tổng tấn công mùa xuân. Kết quả trực tiếp là quân đội Pháp đã phát hiện ra nơi Erich Ludendorff định tấn công. Quân Pháp đã tập trung lực lượng vào thời điểm đó, nơi được cho là đã ngăn chặn được cuộc Tổng tiến công mùa Xuân.

Tuy nhiên, trong bài đánh giá năm 2002 ở cuốn sách của Sophie de Lastours về chủ đề này,Journal of Intelligence History, (Journal of Intelligence History: volume 2, Number 2, Winter 2002)  Hilmar-Detlef Brückner có nói rằng

Thật không may, Sophie de Lastours lại theo quan điểm rằng việc Painvin giải được bức điện ADFGVX của Đức vào đầu tháng 6 năm 1918 có ý nghĩa quyết định đối với chiến thắng của Đồng minh trong Chiến tranh thế giới thứ nhất vì nó đưa ra cảnh báo kịp thời về một cuộc tấn công sắp tới của quân Đức ở Paris và gây ra một thất bại nặng nề cho quân Đồng minh. Tuy nhiên, người ta đã biết trong nhiều năm, cuộc tấn công Gneisenau của quân Đức ngày 11 tháng 6 đã được dàn dựng để khiến Bộ chỉ huy tối cao Pháp phải dồn quân dự bị từ khu vực lên phía bắc, nơi quân Đức định tấn công sau này.

Mục đích của nó bị đại quá mức, điều mà Bộ chỉ huy tối cao Đức đã làm bằng cách tung tin đồn rằng cuộc tấn công đang hướng tới Paris và xa hơn nữa; thông tin sai lệch đã có hiệu quả và dường như vẫn còn. Tuy nhiên, cuộc tấn công của quân Đức đã không thành công vì quân Pháp đã có đủ quân dự bị để ngăn chặn cuộc tấn công và do đó không cần phải đưa thêm quân tiếp viện.

Hơn nữa, người ta thường bỏ qua rằng phiên bản cơ bản của mật mã ADFGVX đã được tạo ra đặc biệt cho Cuộc tấn công mùa xuân của Đức vào năm 1918, nhằm giáng cho quân Đồng minh một đòn thảm khốc. Người ta hy vọng rằng mật mã ADFGX sẽ bảo vệ thông tin liên lạc của Đức chống lại các máy mật mã của Đồng minh trong cuộc tấn công đã xảy ra.

Các bức điện trong ADFGX xuất hiện lần đầu tiên vào ngày 5 tháng 3, và cuộc tấn công của quân Đức bắt đầu vào ngày 21 tháng 3. Khi Painvin trình bày giải pháp mã đầu tiên của mình vào ngày 5 tháng 4, cuộc tấn công của quân Đức đã kết thúc.

Mật mã ADFGX và ADFGVX hiện được coi là không an toàn nữa

Chú thích

Tham khảo
 Friedman, William F. Military Cryptanalysis, Part IV: Transposition and Fractionating Systems. Laguna Hills, CA: Aegean Park Press, 1992.
 General Solution of the ADFGVX Cipher System, J. Rives Childs, Aegean Park Press, ISBN 0-89412-284-3

Liên kết ngoài
Implementation of ADFGVX in JavaScript 

Mật mã cổ điển