Bài viết này tìm hiểu về một trong những phương pháp mã hoá cổ điển phổ biến nhất đó là kỹ thuạt mã hoá Affine. Tìm hiểu cách thức hoạt động, cách mã hoá và cách giải mã của kỹ thuật này. Ưu - nhược điểm của phương pháp mã hoá Affine và cài đặt thực nghiệm với ngôn ngữ lập trình python.

1. Đặt vấn đề

Cùng với sự phát triển của công nghệ thông tin, truyền thông và mạng máy tính đang trở thành phương tiện điều hành thiết yếu trong mọi lĩnh vực hoạt động của xã hội. Việc trao đổi thông tin và dữ liệu trong môi trường mạng hiện nay càng trở nên phổ biến và đang dần thay thế các phương thức truyền tin trực tiếp. Khi ngày càng nhiều thông tin được trao đổi thì nhu cầu bảo mật thông tin là một vấn đề cần thiết [1]. Để bảo vệ các thông tin trước nguy cơ truy cập trái phép thì cần phải có các biện pháp để đảm bảo an toàn thông tin, trong đó mã hoá là một trong những biện pháp tốt nhất để bảo mật thông tin.

Hiện nay có rất nhiều phương pháp kỹ thuật mã hoá được phát minh trong đó có mã hoá cổ điển. Trong bài báo cáo này sẽ đi sâu hơn về một mã hoá cổ điển được sử dụng phổ biến đó là mã hoá Affine.

Mã hóa cổ điển là một loại mã hóa thông dụng và được sử dụng trong một số nhiệm vụ nhất định. Bởi vì so với các loại mã hóa khác thì mã hóa cổ điển là cách mã hóa đơn giản nhất. Vì vậy xét về độ phổ biến của các loại mã hóa thì mã hóa cổ điển là phổ biến nhất. Sở dĩ mã hóa theo trường phái cổ điển thông dụng như hiện nay không chỉ vì ưu điểm đơn giản, tốc độ mã hóa nhanh mà còn vì loại mã hóa này không cần khóa bảo mật. [2].

2. Giới thiệu kỹ thuật mã hoá Affine

Mật mã Affine là một dạng mật mã thay thế dùng một bảng chữ cái, trong đó mỗi chữ cái được ánh xạ tới một số sau đó mã hóa qua một hàm số toán học đơn giản. Trong mật mã Affine, đầu tiên bảng chữ cái của thông điệp cần mã hóa có kích thước m sẽ được chuyển thành các con số tự nhiên từ 0 ... m-1. Để mô tả mã hóa, chúng ta xem bảng chuyển đổi chữ cái tiếng Anh:

 m1 t7

Hình  1: Bảng chữ chứa số

Sơ đồ mã hoá affine:

Đặt P = C = Z26 . Bản mã y và bản rõ x Î Z26 .

Tập khóa K = {(a, b), với a, b Î Z26 , UCLN(a, 26) = 1}

Với khóa k = (a, b) Î K, ta định nghĩa:

Phép Mã hóa y = ek (x) = (a x + b) mod 26

Phép Giải mã x = dk (y) = a-1 ( y - b) mod 26

Ví dụ: Mã hoá và giải mã bằng kỹ thuật Affine với bản rõ chữ sau “HATINHTHATDEP” với a = 7,  b = 20.  

  • Mã hoá:

Bước 1: P =“HATINHTHATDEP” .K = {(a, b) = (7, 20) với điều kiện UCLN(a, 26) = 1}.

Bước 2:  So sánh P với bảng chữa chứa số trong hình 1 để tìm x. Ta có:

Bước 3: Sau khi xác nhận được P và x thì bắt đầu mã hoá với công thức  y = ek (x) = (a x + b) mod 26 à y = ek (x) = (7 x + 20) mod 26 .

Bước 4: So sánh kết quả mới tính được với bảng trong hình 1 sẽ có kết qủa mã hoá như sau:

Như vậy sau các bước thực hiện mã hoá bằng kỹ thuật Affine từ bài toán ban đầu “HATINHTHATDEP” à “RUXYHRXRUXPWV”

3. Thực nghiệm mã hoá Affine bằng Python 

Kỹ thuật mã hoá cổ điển Affine được cài đặt với rất nhiều ngôn ngữ lập trình như: C#, C++, Java, Python... Trong bài này chúng ta sẽ cài đặt thực nghiệm với ngôn ngữ lập trình Python.

Kết quả thực hiện chương trình: Rõ chữ = “HATINHTHATDEP”, Key[a] = 7, Key[b] = 20 sẽ được kết của như hình 2.

m2 t7

Hình 2: Kết quả kỹ thuật mã hoá Affine.

4. Kết luận

Trên đây là bài viết trình bày kỹ thuật mã hoá cổ điển Affine, cách thức hoạt của kỹ thuật và cài đặt thực nghiệm là đơn giản, dễ hiểu và dễ cài đặt, sẽ là tài liệu tham khảo hữu ích cho sinh viên trong quá trình học tập học phần An toàn và bảo mật thông tin của sinh viên ngành CNTT;

TÀI LIỆU THAM KHẢO

[1]. Đỗ Duy Quang, Xây dựng và đánh giá hệ mật Affine – Elgamal trên Zp, Học viện công nghệ bưu chính viễn thông.

[2]. Fpt Cloud , “ mã hoá và vài trò của mã hoá ” https://fptcloud.com/ma-hoa-la-gi/