(P1) Mật mã học - Hệ mật mã cổ điển

          Nhu cầu bảo mật thông tin luôn đóng vai trò quan trọng trong nhiều lĩnh vực trong đời sống. Việc đảm bảo tính bí mật của thông tin có thể được thực hiện bằng nhiều phương pháp khác nhau, và một trong số đó là biến đổi thông tin mà chỉ các bên tham gia mới đọc được, hiểu được, phương pháp này được gọi là mã hóa bí mật thông tin. Bản thân việc mã hóa cũng có nhiều cách khác nhau. Ngành Mật mã học ra đời để nghiên cứu về các phương pháp mã hóa đó. Trong suốt quá trình lịch sử của mình, mật mã học không ngừng phát triển và hoàn thiện để đáp ứng nhu cầu thực tế.


Trong bài viết hôm nay, tôi sẽ bắt đầu giới thiệu với các bạn các hệ mật mã cổ điển.

Đặc điểm chung của các hệ mật mã cổ điển là ra đời từ xa xưa khi chưa có sự tham gia của máy tính điện tử, đơn giản và đều là hệ mật mã khóa đối xứng. 

  • Mật mã Caesar

Đây là hệ mật mã đầu tiên, sơ khai và đơn giản nhất. Việc giải mã và mã hóa đơn giản là thực hiện dịch chuyển bảng chữ cái n chữ cái để có được bảng mã. Ví dụ như sau:

Ta dịch chuyển 6 phần tử để ra bảng chữ cái mã hóa:

           

Giờ ta đối chiếu với bảng mã để mã hóa một đoạn văn bản: "TOI RAT DEP TRAI" => bản mã: "ZUO XGZ JKV ZXGO".

Các mã hóa rất đơn giản đổi ký tự T (19) thành Z (25), đổi O(14) thành U(20) v.v...

Việc giải mã cũng đơn giản bằng cách đối chiếu văn bản mã hóa (gọi là bản mã) với bảng quy đổi bên trên để lấy lại văn bản ban đầu.


Dừng lại ở đây một chút, ở đây, chúng ta bắt đầu đưa ra một số khái niệm của mật mã học:

  1. Văn bản cần mã hóa được gọi là bản rõ
  2. Văn bản sau khi mã hóa gọi là bản mã
  3. Công cụ để dịch từ bản rõ sang bản mã và ngược lại được gọi là khóa.

Mô tả dưới dạng toán học hiện đại ta thấy việc biến đối từ T sang Z <=> biến đổi từ 19 sang 25, biến đổi từ O sang U <=> biến đổi từ 14 sang 20, vậy làm thế nào để có được biến đổi này? Ta có phép tính như sau:

      (19 + 6) mod 26 = 25

      (14 + 6) mod 26 =20

mod là phép toán chia lấy dư. Tổng quát, ta sẽ có hàm mã hóa được viết bằng E(x) = (x + n) mod 26 với x - vị trí của ký tự cần mã hóa trong bảng chữ cái, n là số ký tự được dịch chuyển để tạo thành mã, 26 là số ký tự của bảng chữ cái lấy mã hóa, nếu sử dụng cả số và các dấu thì giá trị 26 này sẽ thay đổi theo.

Hơ, việc đổi chỗ đơn giản thế này, vì sao lại phải viết thành công thức toán học cho... mất thì giờ? Đúng là ở thời Caesar ông ấy chắc cũng không biểu diễn dưới dạng toán học đâu, nhưng giờ thế kỷ mới rồi, cái gì cũng cần được đưa lên máy tính thế nên cách viết dưới dạng công thức toán sẽ giúp ta dễ dàng đưa công hệ mật mã này thành một chương trình máy tính nhé.

Quay lại với định nghĩa, với công thức E(x) = (x + n) mod 26 ta gọi x là bản rõ, n là khóa và E(x) là bản mã. À, thế là mã Caesar trong ví dụ trên có khóa đơn giản là 6 chứ không cần phải nhớ lại cái bảng quy đổi to đùng kia nữa. Làm tương tự thì cách dịch lại bản rõ sẽ là D(x) = (x - n) mod 26 với x là vị trí ký tự cần giải mã.

Xong, nhìn chung, mã Caesar hiện nay không còn tính bảo mật nữa, với một máy tính điện tử thì ta sẽ mất khoảng 1-2 tiếng để phá mã, đưa hệ mật mã này ra để giúp các bạn nhìn rõ hơn và làm quen với các khái niệm căn bản trong Mật mã học.

  • Mật mã hoán vị

Vẫn dùng bảng chữ cái được đánh số thứ tự từ 0 đến 25 như trên, nhưng cách mã hóa của chúng ta thay đổi, thể hiện qua ví dụ như sau:

Bản rõ: "TOI RAT DEP TRAI", ta chia bản rõ thành các phần 4 ký tự một (không coi các khoảng trắng là ký tự), tiếp theo đổi chỗ ký tự thứ 1 cho ký tự thứ 3, ký tự thứ 2 cho ký tự thứ 4, cụ thể:

 Và lúc này bản mã là: IRTODETRAPTI.





Vậy với hệ mã hóa này đâu là khóa? Khóa được biểu diễn dưới dạng toán học thế nào?

Hãy chú ý việc chia bản rõ thành các phần 4 ký tự và công thức đổi chỗ các ký tự (1 đổi cho 3, 2 đổi cho 4). Đây là khóa và khóa này được biểu diễn bằng hoán vị như sau: 

Viết dưới dạng hàm số, tao sẽ có hàm số E được xác định: E(1) = 3, E(2) = 4, E(3) = 1, E(4) = 2.  (Đã sửa theo góp ý của Whatdoyoumean)

Dễ thấy, việc dịch ngược bản mã ra bản rõ chỉ cần chia bản rõ làm các phần gồm 4 ký tự một và hoán vị ngược lại theo bảng hoán vị trên. Dễ thấy, nếu ta chọn chia văn bản thành mỗi phần n ký tự, với n càng lớn, số hoán vị sẽ càng nhiều, dẫn đến tính bảo mật càng cao.


Nhận xét:

+ Các hệ mật mã được giới thiệu ở đây đều rất đơn giản, dễ dàng bị phá bởi máy tính điện tử.

+ Hệ mật mã Caesar là hệ mật mã điển hình của mật mã thay thế, hệ mã hoán vị cũng là mã điển hình mật mã hoán vị. Để tăng hiệu quả bảo mật, người ta có thể kết hợp 2 hoặc nhiều hệ mã trong các hệ thống đơn giản.

+ Có thể thấy 2 hệ mật mã trên, mỗi hệ đều chỉ sử dụng 1 khóa cho cả quá trình mã hóa và giải mã (với mà Caesar là 6, với mã hoán vị là bảng hoán vị), các hệ mật mã có tính chất như trên được gọi chung là hệ mật mã Khóa đối xứng. Ngoài ra, hệ mật mã mà từ khóa để mã hóa dễ dàng suy ra khóa để giải mã cũng được gọi là hệ mật mã khóa đối xứng.


Ở phần tiếp theo, mình sẽ giới thiệu tiếp về mã hóa đối xứng hiện đại.

P/S: Mình chỉ giỏi mỗi 1 loại mật mã thôi, các loại khác dừng ở mức biết sơ sơ :D. Mã hóa và phá mã là hai mảng hoàn toàn khác nhau, đừng ông nào vứt cho tôi một bản mã rồi bắt tôi giải nhớ :v.

Không liên quan nhưng khoe phát :D

35
20280 lượt xem
35
39
39 bình luận