.11 – Mã hóa với khóa mã và khóa phải giống nhau

Một phần của tài liệu Luận văn thạc sĩ công nghệ thông tin phát hiện giả mạo bảng điểm tiếng việt cho các trường học (Trang 29)

2.2.2. Các hệ mật mã cổ điển 2.2.2.1. Hệ mã hóa thay thế 2.2.2.1. Hệ mã hóa thay thế

Phƣơng pháp mã hóa thay thế (Substitution Cipher) là một trong những phƣơng pháp mã hóa nổi tiếng và đã đƣợc sử dụng từ hàng trăm năm nay. Phƣơng pháp này thực hiện việc mã hóa thơng điệp bằng cách hốn vị các

phần tử trong bảng chữ cái hay tổng quát hơn là hoán vị các phần tử trong tập nguồn P.

Thuật toán: Phƣơng pháp mã hóa bằng thay thế

Hình 2.12 – Mơ tả phương pháp mã hóa thay thế

Đây là một phƣơng pháp đơn giản, thao tác mã hóa và giải mã đƣợc thực hiện nhanh chóng. Phƣơng pháp này khắc phục điểm hạn chế của phƣơng pháp mã hóa bằng dịch chuyển là có khơng gian khóa K nhỏ nên dễ dàng bị giải mã bằng cách thử nghiệm lần lƣợt n giá trị khóa kK. Trong phƣơng pháp mã hóa thay thế có khơng gian khóa K rất lớn với n! phần tử nên không thể bị giải mã bằng cách “vét cạn” mọi trƣờng hợp khóa k. Tuy nhiên, trên thực tế thông điệp đƣợc mã hóa bằng phƣơng pháp này vẫn có thể bị giải mã nếu nhƣ có thể thiết lập đƣợc bảng tần số xuất hiện của các ký tự trong thông điệp hay nắm đƣợc một số từ, ngữ trong thông điệp nguồn ban đầu.

2.2.2.2. Hệ mã dịch vòng

Phƣơng pháp mã hóa dịch vịng là một trong những phƣơng pháp lâu đời nhất đƣợc sử dụng để mã hóa. Thơng điệp đƣợc mã hóa bằng cách dịch chuyển xoay vịng từng ký tự đi k vị trí trong bảng chữ cái.

Trong trƣờng hợp đặc biệt k = 3, phƣơng pháp mã hóa bằng dịch chuyển đƣợc gọi là phƣơng pháp mã hóa Caesar.

Thuật tốn: Phƣơng pháp mã hóa dịch chuyển  Cho P = C = K = Zn

 K là tập hợp tất cả các hoán vị của n phần tử 0,1, . . n-1. nhƣ vậy, mỗi khóa K là một hốn vị của n phần tử 0,1, . . n-1.  Với mỗi khóa   K, định nghĩa:

 e(x) =  (x) d(y) = -1(y) với x, y  Zn  E = {ek,   K} và D = { D ,   K}

Hình 2.13 – Mơ tả phương pháp mã hóa dịch chuyển

Mã hóa dịch chuyển là một phƣơng pháp mã hóa đơn giản, thao tác xử lý mã hóa và giải mã đƣợc thực hiện nhanh chóng. Tuy nhiên, trên thực tế, phƣơng pháp này có thể dễ dàng bị phá vỡ bằng cách thử mọi khả năng khóa kK. Điều này hồn tồn có thể thực hiện đƣợc do khơng gian khóa K chỉ có n phần tử để chọn lựa.

Ví dụ: Để mã hóa một thơng điệp đƣợc biểu diễn bằng các chữ cái từ A đến Z (26 chữ cái), ta sử dụng P = C = K = Z26 . Khi đó, thơng điệp đƣợc mã hóa sẽ khơng an tồn và có thể dễ dàng bị giải mã bằng cách thử lần lƣợt 26 giá trị khóa k  K. Tính trung bình, thơng điệp đã đƣợc mã hóa có thể bị giải mã sau khoảng n /2 lần thử khóa kK.

2.2.2.3. Hệ mã Affine

Hệ mã hoá Affine đƣợc xác định bởi hai số nguyên a và b, với điều kiện 0  a,b  25 (tức a, b thuộc bảng chữ cái tiếng Anh 26 ký tự). Ở đây chúng ta xét hệ làm việc trên các số tự nhiên thay cho các ký tự nhƣ đã nói ở phần trên, các phép toán số học đƣợc thực hiện theo modul 26.

Sự thay thế mỗi ký tự  sẽ đƣợc xác định bằng cơng thức (hàm mã hố AFFINE):

Ek() = (a + b) MOD 26 Lƣu ý: khi a = 1 thì ta có hệ mã hố CAESAR.

Ví dụ: nếu a = 3 và b = 5 thì ta có, bảng số tự nhiên tƣơng ứng với bảng chữ cái gốc:

Bảng 2.1 – Bảng số tự nhiên tương ứng với bảng chữ cái gốc

 Cho P = C = K = Zn

 Với mỗi khóa k  K, định nghĩa:  Ek(x) = (x+k) mod n và dk(y) = (y-k)

mod n với x, y  Zn

0 1 2 3 4 5 6 7 8 9 10 11 12 13

A B C D E F G H I J K L M N

14 15 16 17 18 19 20 21 22 23 24 25

O P Q R S T U V W X Y Z

bảng số tự nhiên và bảng chữ cái sau khi mã hoá:

Bảng 2.2 – Bảng số tự nhiên tương ứng sau khi mã hóa

5 8 11 14 17 20 23 0 3 6 9 12 15 18

F I L O R U X A D G J M P S

21 24 1 4 7 10 13 16 19 22 25 2

V Y B E H K N Q T W Z C

Khi đó bản rõ “DAIHOCLACHONG” đƣợc mã hố thành “OFDAVLMFLAVSX”.

Để có thể giải mã đƣợc ta chú ý rằng hàm mã hoá AFFINE: Ek()=(a + b) MOD 26 phải là hàm đơn ánh hay nói cách khác hàm này có ánh xạ 1-1. Ví dụ với a = 10, b = 1 ta có ánh xạ 10 + 1. ánh xạ này khơng thoả mã vì hai ký tự A và N cùng ánh xạ tới B, vì vậy khi giải mã B có thể đƣợc giải mã thành A và N. Ngƣợc lại khơng có một ký tự nào ánh xạ tới O, và vì vậy O khơng xuất hiện trong bảng chữ cái thay thế. Ta có thể dễ dàng tìm thấy tất cả các cặp ký tự cùng ánh xạ tới một ký tự cũng nhƣ tất cả các ký tự không xuất hiện trong bảng chữ cái thay thế.

2.2.2.4. Hệ mã Vigenere

Hệ mã hoá này đƣợc đặt theo tên của một nhà mật mã ngƣời Pháp Blaise de Vigenère (1523-1596). VIGENERE cũng giống nhƣ CAESAR, nhƣng ở đây khoá đƣợc thay đổi theo từng bƣớc.

Bảng 2.3 – Bảng VIGENERE được sử dụng để mã hoá và giải mã A B C D E F G H I J K L M N O P Q R S T U V W X Y Z B C D E F G H I J K L M N O P Q R S T U V W X Y Z A C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D E F G H I J K L M N O P Q R S T U V W X Y Z A B C E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N O P Q R S T U V W X Y Z A B C D E F G H I J K L M O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V W X Y Z A B C D E F G H I J K L M N O P Q R S T U W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Mỗi cột của hình vng VIGENERE có thể xem nhƣ là một hệ CAESAR, với các khoá 0, 1, 2,... , 25. Để mã hố thì bản rõ đƣợc đọc từ các hàng và khoá đƣợc đọc từ các cột.

Ví dụ để mã hóa bản rõ THONGTIN với từ khố LACHONG, đầu tiên ta tìm điểm giao nhau của hàng T và cột L, ta đƣợc E. Cứ nhƣ vậy ta đƣợc bản mã EHQUUGVT.

Ta sẽ thu đƣợc bản mã tƣơng tự nếu ta thay đổi vai trò của hàng và cột trong khi mã hoá. Để giải mã bản mã EHQUUGVT vừa mã hố, ta nhìn vào hàng nào có chứa E trong cột L, theo cách này ta sẽ tìm đƣợc T. Và nhƣ vậy ta tìm đƣợc bản rõ là THONGTIN.

Khố đƣợc áp dụng một cách tuần hồn, tức là nếu bản rõ dài hơn khố thì khố lại đƣợc bắt đầu lại từ đầu.

Ví dụ khố LACHONG đƣợc áp dụng với bản rõ có độ dài 16 ký tự CONGNGHETHONGTIN là LACHONGLACHONGLA

Ta thấy rằng trong hệ mã hố VIGENERE, với khố có độ dài d thì sẽ có 26d khố hợp lệ. Vì vậy, chỉ cần với giá trị d nhỏ thì phƣơng pháp thám mã vét cạn cũng đòi hỏi khá nhiều thời gian.

2.2.2.5. Hệ mã đổi chỗ

Một hệ mã đổi chỗ là hệ mã hóa trong đó các ký tự của bản rõ vẫn đƣợc giữ nguyên nhƣng thứ tự của chúng đƣợc đổi chỗ cho nhau.

Ví dụ một hệ mã hố đổi chỗ cột đơn giản, bản rõ đƣợc viết theo hàng ngang trên trang giấy với độ dài cố định, và bản mã đƣợc đọc theo hàng dọc

Bảng 2.4 – Mơ tả mã hố thay đổi vị trí cột

Bản rõ: KHOACONGNGHETHONGTINDAIHOCLACHONG KHOACONGNG HETHONGTIN DAIHOCLACH ONG Bản mã: KHDOHEANOTIGAHHCOOONCNGLGTANICGNH Phƣơng pháp này có các kỹ thuật sau:

Đảo ngƣợc tồn bộ bản rõ: nghĩa là bản rõ đƣợc viết theo thứ tự ngƣợc lại để tạo ra bản mã. Đây là phƣơng pháp mã hoá đơn giản nhất vì vậy khơng đảm bảo an tồn.

Mã hố theo mẫu hình học: bản rõ đƣợc sắp xếp lại theo một mẫu hình học nào đó, thƣờng là một mảng hoặc một ma trận hai chiều.

Ví dụ: bản rõ

“KHOACONGNGHETHONGTIN” đƣợc viết thành ma trận 54 theo hàng nhƣ sau:

Bảng 2.5 – Mơ tả mã hố dạng ma trận ngang Cột 1 2 3 4 5 Bản rõ K H O A C O N G N G H E T H O N G T I N

Nếu lấy các ký tự ra theo số thứ tự cột 2, 4, 1, 3, 5 thì sẽ có bản mã “HNEGANHIKOHNOGTTCGON”.

Đổi chỗ cột: Đầu tiên đổi chỗ các ký tự trong bản rõ thành dạng hình chữ nhật theo cột, sau đó các cột đƣợc sắp xếp lại và các chữ cái đƣợc lấy ra theo hàng ngang

Ví dụ: bản rõ gốc là “KHOACONGNGHETHONGTIN” đƣợc viết dƣới dạng ma trận 54 theo cột nhƣ sau:

Bảng 2.6 – Mơ tả mã hố dạng ma trận dọc Cột 1 2 3 4 5 Bản rõ K C N T G H O G H T O N H O I A G E N N

Nếu ta chuyển vị các cột theo thứ tự 3, 5, 2, 4, 1 rồi lấy các ký tự ra theo hàng ngang ta sẽ thu đƣợc bản mã là “KCNTGHOGHTONHOIAGENN”. Lƣu ý rằng các ký tự cách đƣợc bỏ đi.

Hạn chế của phƣơng pháp này là toàn bộ các ma trận ký tự phải đƣợc sinh để mã hoá và giải mã.

Hoán vị các ký tự của bản rõ theo chu kỳ cố định d: Nếu hàm f là một hoán vị của một khối gồm d ký tự thì khố mã hoá đƣợc biểu diễn bởi K(d,f).

Do vậy, bản rõ:

M = m1m2...mdmd+1...m2d

Với mi là các ký tự , và bản rõ sẽ đƣợc mã hoá thành: Ek(M) = mf(1)mf(2)...mf(d)md+f(1)...md+f(d)

Trong đó mf(1)mf(2)...mf(d) là một hốn vị của m1m2...md. Ví dụ: giả sử d=5 và f hốn vị dãy i=12345 thành f(i)=35142

Bảng 2.7 – Mơ tả hốn vị các ký tự Vị trí đầu Vị trí hốn vị Từ Mã hố Vị trí đầu Vị trí hốn vị Từ Mã hoá 1 3 G O 2 5 R P 3 1 O G 4 4 U U 5 2 P R

Theo bảng trên, ký tự đầu trong khối 5 ký tự đƣợc chuyển tới vị trí thứ 3, ký tự thứ hai đƣợc chuyển tới vị trí thứ 5,... Chẳng hạn từ gốc GROUP đƣợc mã hoá thành OPGUR.

Hệ mã ADFGV của Đức, đƣợc sử dụng trong suốt chiến tranh thế giới lần thứ I, là một hệ mã hố đổi chỗ (có sử dụng thay thế đơn giản). Nó đƣợc coi là một thuật toán mã hoá phức tạp vào thời ấy nhƣng nó đã bị phá bởi Georges Painvin, một nhà thám mã ngƣời Pháp.

2.2.3. Các hệ mã đối xứng hiện đại và mã công khai 2.2.3.1. Phƣơng pháp DES 2.2.3.1. Phƣơng pháp DES

Khoảng những năm 1970, tiến sĩ Horst Feistel đã đặt nền móng đầu tiên cho chuẩn mã hóa dữ liệu DES với phƣơng pháp mã hóa Feistel Cipher. Vào năm 1976 cơ quan bảo mật quốc gia Hoa Kỳ (NSA) đã công nhận DES dựa trên Feistel Cipher là chuẩn mã hóa dữ liệu. DES đƣợc cơng bố trong tài liệu FIPS của NIST. Kích thƣớc khóa của DES ban đầu là 128 bit nhƣng tại bản cơng bố FIPS kích thƣớc khóa đƣợc rút xuống cịn 56 bit.

DES có kích thƣớc khối 64 bit. DES thực hiện mã hóa dữ liệu qua 16 vòng lặp mã hóa, mỗi vịng sử dụng một khóa chu kỳ 48 bit thu đƣợc từ khóa 56 bit ban đầu. DES sử dụng 8 bảng hằng số Sbox để thao tác. Q trình mã hóa của DES có thể đƣợc tóm tắt nhƣ sau:

Biểu diễn thông điệp nguồn xP bằng dãy 64bit. Khóa k có 56bit. Thực hiện mã hóa theo 3 giai đoạn:

 Tạo dãy 64 bit bằng cách hoán vị x theo hốn vị IP.

 Thực hiện 16 vịng lặp từ 64 bit thu đƣợc và 56 bit của khoá k (chỉ sử dụng 48 bit của khố k trong mỗi vịng lặp). 64 bit kết quả thu đƣợc qua mỗi vòng lặp sẽ là đầu vào cho vòng lặp sau.

 Sau 16 vòng lặp, áp dụng hoán vị ngƣợc IP-1

cho 64bit thu đƣợc. Kết quả cuối cùng chính là khối dữ liệu đã mã hóa y.

Hình 2.14 – Sơ đồ q trình mã hóa dữ liệu bằng phương pháp DES

Quá trình giải mã chính là thực hiện theo thứ tự đảo ngƣợc các thao tác của q trình mã hóa.

2.2.3.2. Phƣơng pháp chuẩn mã hóa nâng cao AES

Để tìm kiếm một phƣơng pháp mã hóa quy ƣớc mới với độ an tồn cao hơn DES, NIST đã công bố một chuẩn mã hóa mới, thay thế cho chuẩn DES. Thuật toán đại diện cho chuẩn mã hóa nâng cao AES (Advanced

Encryption Standard) sẽ là thuật tốn mã hóa khóa quy ƣớc, sử dụng miễn phí trên tồn thế giới. Chuẩn AES bao gồm các yêu cầu sau:

 Thuật tốn mã hóa theo khối 128 bit.  Chiều dài khóa 128 bit, 192 bit và 256 bit.  Khơng có khóa yếu.

 Hiệu quả trên hệ thống Intel Pentium Pro và trên các nền phần cứng và phần mềm khác.

 Thiết kế dễ dàng (hỗ trợ chiều dài khóa linh hoạt, có thể triển khai ứng dụng rộng rãi trên các nền và các ứng dụng khác nhau).  Thiết kế đơn giản: phân tích đánh giá và cài đặt dễ dàng.  Chấp nhận bất kỳ chiều dài khóa lên đến 256 bit.

 Mã hóa dữ liệu thấp hơn 500 chu kỳ đồng hồ cho mỗi khối trên Intel Pentium, Pentium Pro và Pentium II đối với phiên bản tối ƣu của thuật toán.

 Có khả năng thiết lập khóa 128 bit (cho tốc độ mã hóa tối ƣu) nhỏ hơn thời gian địi hỏi để mã hóa các khối 32 bit trên Pentium, Pentium Pro và Pentium II.

 Khơng chứa bất kỳ phép tốn nào làm nó giảm khả năng trên các bộ vi xử lý 8 bit, 16 bit, 32 bit và 64 bit.

 Không bao hàm bất kỳ phần tử nào làm nó giảm khả năng của phần cứng.

 Thời gian mã hóa dữ liệu rất thấp dƣới 10/1000 giây trên bộ vi xử lý 8 bit.

 Có thể thực hiện trên bộ vi xử lý 8 bit với 64 byte bộ nhớ RAM. Sau khi thực hiện hai lần tuyển chọn, có năm thuật tốn đƣợc vào vịng chung kết, gồm có: MARS, RC6, SERPENT, TWOFISH và RIJNDAEL. Các thuật toán này đều đạt các yêu cầu của AES nên đƣợc gọi chung là các thuật toán ứng viên AES. Các thuật tốn ứng viên AES có độ an tồn cao, chi phí thực hiện thấp.

2.3. Hàm băm và chữ ký điện tử 2.3.1. Hàm băm 2.3.1. Hàm băm

Hàm băm mật mã là hàm tốn học chuyển đổi một thơng điệp có độ dài bất kỳ thành một dãy bit có độ dài cố định (tùy thuộc vào thuật toán băm). Dãy bit này đƣợc gọi là thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu.

Dễ dàng nhận thấy rằng hàm băm h không phải là một song ánh. Do đó, với thơng điệp x bất kỳ, tồn tại thơng điệp x’ ≠ x sao cho h(x) = h(x’). Lúc này, ta nói rằng “có sự đụng độ xảy ra”.

Một hàm băm h đƣợc gọi là an tồn (hay “ít bị đụng độ”) khi khơng thể xác định đƣợc (bằng cách tính tốn) cặp thơng điệp x và x’ thỏa mãn x≠x’ và h(x) = h(x’). Trên thực tế, các thuật tốn băm là hàm một chiều, do đó, rất khó để xây dựng lại thơng điệp ban đầu từ thông điệp rút gọn.

Hàm băm giúp xác định đƣợc tính tồn vẹn dữ liệu của thơng tin: mọi thay đổi, dù là rất nhỏ, trên thơng điệp cho trƣớc, ví dụ nhƣ đổi giá trị 1 bit, đều làm thay đổi thơng điệp rút gọn tƣơng ứng. Tính chất này hữu ích trong việc phát

Một phần của tài liệu Luận văn thạc sĩ công nghệ thông tin phát hiện giả mạo bảng điểm tiếng việt cho các trường học (Trang 29)

Tải bản đầy đủ (PDF)

(81 trang)