Chủ Nhật, 19 tháng 12, 2010

Mật Mã

Nguyễn Ðức Tường


(Tóm lược bài đã được đăng trên tạp chí Thế Kỷ 21 số 181, tháng 5 năm 2004)

Mật mã là gì?
Trong tiếng Anh chẳng hạn, người ta phân biệt khá tỉ mỉ cipher, code, crypto v.v. Ta định nghĩa một cách đơn giản, mật mã là một hệ thống thông tin riêng tư giữa hai cá nhân, hai tổ chức... Tuy không được bao gồm trong định nghĩa này, ngành khảo cổ nghiên cứu đọc những cổ tự như cổ tự Ai Cập cũng là một phần rất quan trọng và rất khó trong mật mã. Mật mã có thể rất giản dị hay cũng có thể đòi hỏi một trình độ về toán học, nhất là mật mã ngày nay.


Mật mã có một lịch sử dài và phong phú. Ði ngược dòng lịch sử, Herodotus kể lại những cuộc xung đột giữa Hy Lạp và Ba Tư vào thế kỷ thứ 5 trước Thiên Chúa. Theo Herodotus, nhờ nghệ thuật viết bí mật mà Hy Lạp không bị chinh phục bởi Xerxes, Vua của những vị Vua, nhà độc tài bạo ngược Ba Tư. Trong chuyện này, Demaratus đã thông tin, khuyến cáo người Spartan vềợ ý định của Xerxes bằng cách viết tin tức vào những miếng gỗ rồi dùng sáp phủ lên trên. Herodotus kể một chuyện khác về cách viết bí mật để dấu tin tức. Muốn khuyến khích Aristagoras ở Miletus nổi loạn chống lại vua Ba Tư, Histaiaeus đã cho cạo đầu người đưa tin, viết trên da đầu người đó những chỉ thị của mình, rồi chờ cho tóc mọc lại trước khi gửi sứ giả đi. Nghệ thuật viết bí mật tiến bộ với thời gian: người Tầu viết trên lụa, người Ý dùng phèn hòa tan trong dấm viết trên vỏ quả trứng đã luộc chín để chữ viết sẽ hiện ra ở lòng trắng bên trong, v.v. Gần đây hơn, điệp viên Ðức trong Ðại Chiến Thứ Hai chụp ảnh cả trang giấy và làm nhỏ đi thành một cái chấm - microdot.

Một trong những mật mã rất cổ là mật mã Caesar, tên loại mật mã đơn tự (monoalphabetic) trong đó một mẫu tự được thay thế bằng một mẫu tự hay một dấu hiệu khác. Một thí dụ về mật mã Caesar: di chuyển bảng chữ cái ba bước về phía trước, do đấy a -> D, b -> E, c -> F, v.v. Trong thí dụ này, nếu nguyên bản là “veni, vidi, vici” thì bản được mã hóa sẽ là “YHQL, YLGL, YLFL”, tương đối dễ giải mã.

Một mật mã khác thuộc loại đa tự (polyalphabetic), nổi tiếng rất lâu là mật mã không thể giải mã được, le chiffre indéchiffrable, gọi là mật mã Vigenère (Blaise de Vigenère, nhà ngoại giao Pháp sinh năm 1523). Trong mật mã này, một mẫu tự có thể được thay thế bằng nhiều mẫu tự khác nhau, tùy theo một chìa khóa đã được chọn từ trước. Ðể mã hóa một tài liệu, việc trước tiên là lập một bảng gọi là hình vuông Vigenère. Dùng cho bảng chữ cái tiếng Anh gồm 26 mẫu tự, hình vuông Vigenère có 26 dòng (và 26 cột), mỗi dòng là bảng mật mã Caesar di chuyển một bước về phía trước.

Sau Ðại Chiến Thứ Hai, nhất là trong khoảng 30 năm trở lại đây, sự phát triển của mật mã đặc sắc về nhiều phương diện. Ngoài những phát minh cơ bản, câu chuyện phát triển mật mã còn là một câu chuyện đặc thù, rất Mỹ, và có lẽ chỉ có thể xẩy ra trên đất Mỹ. Ðó là một câu chuyện về việc kiếm tiền, về sự hăng hái hiếu động; một câu chuyện thời nay với tinh thần “Bạn trẻ, hãy đi về Miền Tây” (Go West, young man) và về tinh thần tự do. Ðể tóm tắt, đó là một đụng độ lai rai suốt 30 năm giữa chính phủ và một số thường dân Mỹ nghiên cứu mật mã mà ta sẽ đọc trong những trang tiếp.

Mật mã ngày nay
Tuy phương pháp căn bản của mật mã ít thay đổi từ hơn hai nghìn năm nay, sự bành trướng của máy vi tính khiến cho việc chuyển mã tiện lợi và nhanh lên bội phần. Ðiện tử làm xáo trộn những chữ trong một bản văn hữu hiệu hơn cơ khí; một máy tính được lập trình như máy mật mã Enigma của Ðức có thể mã hóa một văn bản dài trong nháy mắt. Rồi cũng nhờ máy vi tính mà hệ thống thông tin trở nên nhanh chóng.

Máy vi tính dùng hệ thống nhị phân. Trong hệ thống thập phân thường dùng, ta có mười số đơn, ký hiệu viết từ 0, 1, 2 cho đến 9, để chỉ “mười” ta phải trở lại con số đầu 0 và viết 10, rồi tiếp tục thêm một đơn vị cho những số lớn hơn để thành 11, 12, 13, à , 19, 20, ... , 99, 100, 101, ... Hệ thống nhị phân chỉ có hai số đơn gọi là bít, ký hiệu viết 0 (“zero”) và 1 (“một”), để chỉ “hai” ta đã phải trở lại con số đầu 0 và viết 10, rồi tiếp tục thêm một đơn vị cho những số lớn hơn thành 11, 100, 101, ... Mỗi con số được ký hiệu bằng một chuỗi những bít; chú ý nhận xét, ta sẽ thấy cách đếm và viết cũng tương tự như hệ thống thập phân (đáng lẽ từ 0 đến 9, ta chỉ có từ 0 đến 1), người quen mắt đọc khá dễ dàng, như vậy: “zero” = 0, “một” = 1, “hai” = 10, “ba” = 11, “bốn” = 100, “năm” = 101, “sáu” = 110, “bảy” = 111, “tám” = 1000, “chín” = 1001, “mười” = 1010, v.v.

Một thay đổi đáng kể khác là máy vi tính dùng để chuyển mã, xáo trộn những con số thay vì những chữ trong bảng chữ cái. Muốn mã hóa một văn bản, trước hết ta phải đổi nó sang một chuỗi những bít, được thực hiện dễ dàng nhờ một bộ mã gọi là ASCII (American Standard Code for Information Interchange), đọc là “ass-ki”. Mỗi chữ trong ASCII được ký hiệu bằng 7 bít, thí dụ: A = 1000001, H = 1001000, N = 1001110 (trong hệ thống thập phân, trị giá của chúng là 65, 72 và 78).

Bàn tay “nhẵn nhụi”
Nói đến mật mã, ta nghĩ ngay đến những bí mật thâm u, độc quyền của chính phủ hay quân đội. Mã hóa bằng máy vi tính là độc quyền của những người có máy vi tính; tất nhiên vào buổi sơ khai của máy vi tính, cũng vẫn là chính phủ hay quân đội. Từ thập niên 1960, máy vi tính mạnh và rẻ hơn nên bắt đầu thịnh hành trong thương mại, được dùng để mã hóa những thông tin quan trọng như chuyển tiền hay trong các thương thuyết tế nhị. Vì càng ngày càng nhiều công ty mua máy vi tính, việc dùng mật mã lan rộng. Một trong những quan tâm quan trọng là ấn định một mật mã tiêu chuẩn. Một công ty có thể dùng một hệ thống mật mã nào đó trong thông tin nội bộ, nhưng không thể thông tin với một tổ chức khác không dùng cùng mật mã. Ðể giải quyết vấn đề, tháng 5 năm 1973, Văn Phòng Tiêu Chuẩn Quốc Gia Hoa Kỳ (National Bureau of Standards - NBS) kêu gọi đề nghị một mật mã tiêu chuẩn để các cơ sở thương mại (và mọi người khác) có thể thông tin một cách kín đáo với nhau.

Một trong những ứng viên tiêu chuẩn là một sản phẩm của IBM có tên là Lucifer. Người thiết kế Lucifer là Horst Feistel. Thật ra từ nhiều năm trước, Feistel đã chạy từ công ty này sang công ty khác, nghiên cứu việc thiết kế mật mã và luôn luôn đụng độ với Cơ Quan An Ninh Quốc Gia Hoa Kỳ (National Security Agency - NSA), một cơ quan mà đến ngay cả sự hiện hữu của nó cũng được coi là bí mật - NSA = No Such Agency là câu người ta hay nói đùa. NSA là cơ quan có trách nhiệm về an ninh truyền tin, muốn giữ độc quyền về mật mã, luôn luôn dàn xếp để chấm dứt dự án nghiên cứu của Feistel ngay khi còn trứng nước. Thập niên 1960, Feistel sang làm với Mitre Corporation nhưng cũng bị NSA làm áp lực chấm dứt luôn. Cuối cùng ông đến làm cho IBM, tại Thomas J. Watson Laboratory gần New York, yên thân được vài năm. Chính tại đây, Feistel đã phát triển Lucifer.

Chi tiết chính xác về sự xáo trộn một bản văn trong Lucifer thay đổi, phụ thuộc vào chìa khóa đã được đồng ý giữa người gửi và người nhận; tóm lại, người ta có thể mã hóa cùng một bản văn theo nhiều cách khác nhau, tùy theo chìa khóa đã chọn. Ðể mã hóa, ta gửi vào Lucifer chìa khóa và bản văn, Lucifer sẽ trả lại bản mã hóa. Ðể giải mã, người nhận gửi vào Lucifer cùng một chìa khóa và bản mã hóa, Lucifer sẽ cho lại nguyên bản.

Ðược coi là sản phẩm thương mại mạnh nhất, người ta trông đợi Lucifer sẽ được chấp nhận là mật mã tiêu chuẩn. Nhưng không, một hệ thống được dùng bởi một số cơ sở là một chuyện; trở thành tiêu chuẩn quốc gia, nghiễm nhiên có tính cách toàn diện, là một chuyện hoàn toàn khác hẳn. Có lẽ Lucifer quá mạnh, hơn hẳn khả năng giải mã của NSA; lẽ tự nhiên NSA không muốn thấy một mật mã tiêu chuẩn, dùng bởi tất cả mọi người, mà họ khó hay không thể giải mã. NSA là một tổ chức trí tuệ, thiết kế mật mã hay giải mã, họ không loại trừ đối phương bằng cách, thí dụ như cầm ô bí mật đâm để bơm độc tố toxin vào chân đối phương. Bàn tay “nhẵn nhụi” của NSA xuất hiện, vận động mạnh mẽ để làm Lucifer yếu bớt đi trước khi được chấp nhận là tiêu chuẩn.

Số chìa khóa có thể có được trong một mật mã là yếu tố quyết định cho sức mạnh của mật mã ấy. Nếu một mật mã chỉ có chừng 1 000 000 chìa khóa khác nhau, người giải mã có thể dùng máy vi tính khỏe để tìm đúng chìa khóa trong khoảnh khắc; trái lại, nếu số chìa khóa quá lớn, tìm đúng chìa khóa theo phương pháp này trở nên không thực tiễn. Nếu Lucifer trở thành mật mã tiêu chuẩn, NSA muốn nó chỉ có một số chìa khóa giới hạn, chừng một trăm ngàn triệu triệu (100 000 000 000 000 000) chìa khóa khác nhau; con số này tương đương với chuỗi số gồm 56 bít trong hệ thống nhị phân. Nếu một máy vi tính có thể thử một chìa khóa trong một phần triệu của một giây thì muốn thử tất cả những chìa khóa này, máy phải mất hơn 2000 năm. Ta có thể giả dụ rằng với một số nhân viên lớn gồm những nhà toán học tài ba cùng phương tiện rộng rãi nhất thế giới chứa chất dưới hầm nhà ở Fort Meade, Maryland, trụ sở trung ương của NSA, NSA cảm thấy khá thoải mái với chìa khóa dài 56 bít (đọc đến đây, có lẽ bạn đọc cảm thấy bất an, nghĩ đến sự an toàn của con số PIN mình thường dùng để lấy tiền ở máy phát tiền tự động; con số PIN với bốn con số ta có tất cả 10 000 chìa khóa - password - khác nhau, từ 0000 đến 9999).

Sau mấy năm NBS tranh cãi với những người phản đối (nhiều người muốn chìa khóa dài 128 bít), trong số đó có Whitfield Diffie và Marty Hellman mà ta sẽ còn gặp ở dưới, Lucifer với chìa khóa 56 bít, gọi là Data Encryption Standard - DES - được chính thức chấp nhận ngày 23 tháng 11 năm 1976 là mật mã tiêu chuẩn của Hoa Kỳ (và có lẽ của nhiều nơi trên thế giới vì DES phụ thuộc vào chìa khóa).

DES - Lucifer mã hóa một tài liệu bằng cách chia nó thành từng nhóm, mỗi nhóm dài 64 bít, rồi dùng chìa khóa được cung cấp xáo trộn riêng biệt từng nhóm một 16 bước khác nhau, trước khi cho ra bản đã được mã hóa. Ngoài chìa khóa là bí mật riêng của người dùng, DES không chứa bí mật nào khác; chi tiết kỹ thuật của DES được công bố, in trong sách giáo khoa, phổ biến trên Internet và ai cũng có thể lấy hay mua được DES từ Internet. Phải nói ngay, vì lo ngại, người ta đã thử nghiệm rất kỹ trong suốt một phần tư thế kỷ nhưng DES vẫn chứng tỏ là một mật mã an toàn, khả tín.

(Còn tiếp)

Không có nhận xét nào:

Đăng nhận xét