Nghệ thuật mật mã và lịch sử phát triển

July 31, 2024
Nghệ thuật mật mã và lịch sử phát triển

Xem nhanh

Nội dung được tham khảo từ cuốn The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography của tác giả Simon Singh.

Vài nét về tác giả Simon Singh

Simon Singh là một nhà khoa học, nhà báo, và tác giả nổi tiếng người Anh, được biết đến chủ yếu vì những đóng góp của ông trong lĩnh vực mã hóa và giải mã. Ông là một trong những tác giả nổi bật trong lĩnh vực phổ biến hóa các khái niệm toán học và mật mã học cho công chúng. Các tác phẩm nổi tiếng của ông là The Code Book: The Science of Secrecy from Ancient Egypt to Quantum CryptographyFermat's Enigma: The Epic Quest to Solve the World's Greatest Mathematical Problem.

Lời nói đầu

Tất cả chúng ta đều biết ngày nay thông tin là một nguồn dữ liệu vô cùng quan trọng và việc bảo mật nó cũng vậy. Nhưng liệu các bạn có biết trong quá khứ thì thông tin và bảo mật thông tin cũng quan trọng không kém. Nếu bạn muốn biết chi tiết hoặc muốn trải nghiệm đọc sách thì có thể tìm đọc sách. Còn ở đây mình sẽ kể cho các bạn nghe đôi điều từ cuốn sách.

Kĩ thuật giấu thư

Trước khi nói về mật mã, chúng ta hãy nói một chút về kỹ thuật giấu thư.

Kỹ thuật giấu thư là truyền tin bí mật bằng cách che giấu sự hiện hữu của bức thư đó. Có nhiều kĩ thuật giấu thư mà bạn đã từng nghe đến. Chẳng hạn, người Hy Lạp cổ đại từng sử dụng phương pháp giấu thư như xăm thông điệp lên da đầu của người đưa tin và đợi cho tóc mọc lại để che giấu. Người đưa tin không mang thứ gì dễ nghi ngờ, vì vậy có thể đi lại thoải mái. Khi đến nơi, ông ta chỉ cần cạo tọc đi và cho người nhận xem bức thư được xăm trên cái đầu trọc của mình. Một kỹ thuật cổ điển khác là viết thư bằng thứ mực không nhìn thấy trong điều kiện bình thường, nhưng khi hơ nóng tờ giấy thì có thể dễ dàng nhìn thấy bức thư.

Hiện đại hơn có thể kể đến kĩ thuật giấu thư trong ảnh. Ví dụ như bạn muốn giấu thư secret.txt vào trong bức hình wall.jpg bạn có thể làm bằng cách mở Terminal (dành cho MacOS) lên và chạy lệnh
cat wall.jpg secret > normal.jpg
khi đó bức thư bí mật sẽ được giấu trong hình normal.jpg. Nếu bạn mở normal.jpg lên bạn sẽ chỉ thấy được một hình như là wall.jpg. Để có thể xem thông tin bị giấu bạn có thể chạy lệnh
tail -c 50 normal.jpg > found.txt
(giả sử secret.txt có 50 kí tự)
Khi đó bạn có thể thấy nội dung bức thư ở trong file found.txt.

Bên cạnh khoa học mật mã thì kỹ thuật giấu thư cũng là một phần quan trọng tạo nên một hệ thống bảo mật.

Khoa học mật mã

Kỹ thuật giấu thư đóng một vai trò quan trọng trong lịch sử. Tuy nhiên nó có một điểm yếu đó là nếu thông tin bị phát hiện thì nội dung sẽ bị lộ ngay lập tức. Chính vì vậy, song song với việc phát triển kỹ thuật giấu thư thì khoa học mật mã (cryptography) đã phát triển. Mục đích của mật mã không phải là che giấu sự tồn tại của thư tín mà là che giấu nội dung của nó, quá trình này gọi là mã hoá. Để làm bức thư trở nên khó đọc người ta mã hoá nó theo một thủ tục cụ thể đã được quy ước giữa người nhận và người gửi. Người nhận muốn đọc bức thư chỉ cần làm ngược lại thủ tục mã hoá là có thể thấy được bức thư gốc. Lợi thế của việc mã hoá là nếu kẻ thù có thể bắt được bức thư thì cũng không thể đọc được.

Mật mã chuyển vị

Suốt quá trình phát triển của mình bản thân mật mã có thể chia thành 2 nhánh là *chuyển vị (Transposition Cipher)* và *thay thế (Substitution Cipher).*

Ở mã chuyển vị, các chữ cái trong thư được sắp xếp lại một cách đơn giản, tạo nên một phép đảo chữ. Ví dụ 3 chữ cái có thể có 3! = 6 cách sắp xếp khác nhau ví dụ YOU, YUO, OYU, OUY, UYO, UOY. Khi số lượng chữ cái tăng lên thì số cách sắp xếp khả dĩ cũng tăng lên nhanh chóng.

Một sự chuyển vị ngẫu nhiên sẽ tạo ra một mật mã cực mạnh. Nhưng nó cũng là một điểm yếu, vì khi đó không những kẻ thù mà cả người nhận cũng không thể giải mã được. Vì vậy để mã chuyển vị có hiệu quả, việc sắp xếp chữ cái cần theo một hệ thống không phức tạp lắm và được thoả thuận trước giữa bên gửi và bên nhận nhưng tất nhiên phải giữ bí mật với kẻ thù.

Mã hoá hàng rào (Rail fence cipher)

Một trong những kiểu mã hoá chuyển vị là mà hoá hàng rào. Theo đó các chữ cái được viết luân phiên theo hàng trên và hàng dưới sau đó ghép hai hàng lại thì ta được một chuyển vị của các chữ cái trước đó. Ví dụ mình thích câu "you will never walk alone". Mình sẽ viết lại theo kiểu hàng rào như sau.
yuileewlaln
owlnvrakloe
Ghép lại mình sẽ có yuileewlalnowlnvrakloe Người biết quy trình mã hoá thì có thể dễ dàng làm ngược lại để khôi phục thư gốc. Tuy nhiên, nếu không biết thì quy trình thì cũng không dễ dàng phải không nào.

Khúc gỗ bí mật (scytale)

scytale

Một kiểu mã chuyển vị khác là scytale.Nó từng là một công cụ mã hoá của người Sparta. Scytale có là một khúc gỗ có hình dạng và kích thước xác đinh được quấn quanh bằng vải da như hình. Người gửi viết thư dọc theo khúc gỗ rồi bốc dải da ra, lúc này dải dây da chỉ mang nhũng chữ cái vô nghĩa (bức thư đã được mã hoá). Người mang tin sẽ mang dải da này (như một kĩ thuật giấu thư ông ta có thể mang nó như là cái thắt lưng với các chữ cái được giấu ở mặt trong) đến người nhận. Để khôi phục lại bức thư, người nhận chỉ cần quấn dây da quanh 1 cái Scytale khác giống với cái của người gửi.

Như đã nói ở trên thì ngoài mã chuyển vị thì còn có mã thay thế. Nhưng vì bài viết đến đây cũng đã khá dài và nội dung của mã thay thế tương đối phức tạp nên nếu bạn thấy hứng thú thì ... mình là LT hẹn bạn ở bài viết tiếp theo.