Một trong những mật mã hóa ra đời sớm nhất là mật mã Caesar, được tạo ra bởi Julius Caecar trong cuộc chiến tranh Gallic, vào thế kỷ thứ nhất trước công nguyên [12-23]. Trong loại mật mã hóa này, mỗi chữ cái từ A đến W được mã hóa bằng cách chúng sẽ được thể hiện bằng chữ cái xuất hiện sau nó 3 vị trí trong bảng chữ cái. Ba chữ cái X, Y, Z tương ứng được biểu diễn bởi A, B, và C. Mặc dù Caesar sử dụng phương pháp dịch đi 3 nhưng điều này cũng có thể thực hiện với bất kì con số nào nằm trong khoảng từ 1 đến 25 [12].
Trong hình 2.4 biểu diễn hai vòng tròn đồng tâm, vòng bên ngoài quay tự do. Nếu ta bắt đầu từ chữ cái A bên ngoài A, dịch đi 2 chữ cái thì kết quả thu được sẽ là C sẽ bên ngoài A… Bao gồm cả dịch 0, thì có tất cả 26 cách phép dịch [12].
Hình 2.4 : “Máy” để thực hiện mã hóa Caesar [12]
.
Do chỉ có 26 khóa nên mật mã Caesar có thể bị tổn thương dễ dàng. Khóa có thể được xác định chỉ từ một cặp chữ cái tương ứng từ bản tin gốc và bản tin mã hóa. Cách đơn giản nhất để tìm được khóa đó là thử tất cả các trường hợp dịch, chỉ có 26 khóa nên rất dễ dàng [12]. Mỗi chữ cái có thể được dịch đi tối đa lên đến 25 vị trí nên để có thể phá được mã này, chúng ta có thể liệt kê toàn bộ các bản tin có thể có và chọn ra bản tin có nội dung phù hợp nhất [23].
Mã hóa bảo mật trong Wimax Chương II : Các phương pháp mã hóa bảo mật
2.2.2.2. Mật mã Affine
Vì mật mã Caesar chỉ có thể đưa ra được 25 cách biến đổi bản tin nhất định, nên đây là phương pháp mã hóa không thực sự an toàn. Mật mã Affine là trường hợp suy rộng của mật mã Caesar, và nó tốt hơn về khả năng bảo mật. Mật mã Affine áp dụng phép nhân và phép cộng vào mỗi chữ cái, sử dụng hàm sau :
y = (ax + b) mod m
trong đó x là giá trị số của chữ cái trong bản tin chưa mã hóa, m là số chữ cái trong bảng chữ cái bản tin chưa mã hóa, a và b là các số bí mật, và y là kết quả thu được của phép biến đổi. y có thể được giải mã trở lại x bằng các sử dụng
biểu thức x = inverse (a)(y-b) mod m , inverse(a) là giá trị mà nếu nó được nhân
với kết quả a mod m sẽ cho ta kết quả là 1 ((a * inverse(a)) mod m = 1.)
Vì phép tính liên quan đến modulo 26, nên một vài chữ cái có thể không được giải mã ra kết quả duy nhất nếu số nhân có một ước chung với 26. Do đó,
ước chung lớn nhất của a và m phải bằng 1, (a,m)=1
Ví dụ : Giả sử bản tin được mã hóa bằng hàm y = (11x+4) mod 26. Để mã hóa bản tin MONEY. Các giá trị số tương ứng với bản tin gốc MONEY là 12,14,13,4 và 24. Áp dụng vào hàm cho mỗi giá trị, ta thu được lần lượt tương ứng y = 6, 2, 17, 22, 28 ( M: y = (11*12 + 4) MOD 26 = 6 ). Và các chữ cái tương ứng là GCRWI, đó là bản tin đã được mã hóa.
Để giải mã, ta biến đổi hàm số y thành x = inverse (a) (y-b) mod m. Ta có
x = inverse (11)( (y-4) mod 26. Mà inverse (11) mod 26 = 19, do đó x = 19 (y – 4) mod 26. Áp dụng với bản tin mã hóa GCRWI ta thu được các giá trị x = 12, 14, 13, 4, 24. Các chữ cái tương ứng là MONEY.
Nhưng do chúng ta biết mỗi chữ cái trong bản tin gốc được mã hóa theo hàm y=(ax+b) mod m, ta có thể phá được mã affine bằng cách giải hai phương trình tuyến tính. Một khi ta xác định được giá trị của a và b, ta có thể giải mã được toàn bộ bản tin đã mã hóa. Ví dụ, giả sử rằng “IF” được mã hóa thành “PQ”
I P: 8a + b = 15 MOD 26
F Q: 5a + b = 16 MOD 26
Mã hóa bảo mật trong Wimax Chương II : Các phương pháp mã hóa bảo mật
Giải ra ta được a=17, b=9. [23]
2.2.2.3. Mật mã thay thế.
Mã hóa thay thế là một trong những phương pháp mã hóa mà bảng chữ cái đã mã hóa là sự sắp xếp lại của bảng chữ cái chưa mã hóa [23]. Mặc dù việc có một số lượng lớn các khóa là yêu cầu cần thiết cho bảo mật, nhưng điều đó không có nghĩa là hệ thống mã hóa là đủ mạnh [12]. Mã hóa thay thế, mặc dù có 26! khả năng thay đổi vị trí sắp xếp, thực tế lại không có khả năng bảo mật cao và có thể bị phá một cách dễ dàng bằng cách sử dụng tần suất xuất hiện của các chữ cái. Mã hóa thay thế là phương pháp tốt để mã hóa các bản tin cần mã hóa về hình thức bề ngoài và dễ dàng phá. Ví dụ, kết hợp bảng chữ cái với các từ khóa keywords: Người gửi và người nhận quyết định tùy thuộc vào từ khóa. Trong trường hợp này, ví dụ ta sử dụng từ khóa “the cows go moo in the field”. Bảng chữ cái chưa mã hóa và bảng chữ cái đã được mã hóa được đưa ra như sau:
Plaintext: 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
Ciphertext: T H E C O W S G M I N F L D A B J K P Q R U V X Y Z
Nửa đầu của các chữ cái được mã hóa được chuyển đổi thông qua cụm từ khóa (bỏ qua những chữ cái được lặp lại), và nửa sau được tạo ra bằng cách sử dụng các chữ cái còn lại của bảng chữ cái từ A-Z. Ví dụ, thực hiện mã hóa bản tin “Meet me at five o’clock”. Để mã hóa bản tin này, đơn giản chỉ cần liệt kê mỗi chữ cái trong bản tin tương ứng với mỗi chữ cái được mã hóa trong bảng chữ cái. Từ đó ra thu được bản tin được mã hóa như sau : LOOQLOTQWMUOAEFAEN.
Vì người nhận biết được cụm từ khóa, nên họ có thể dễ dàng giải mã đuợc bản tin mã hóa bằng cách liệt kê ngược lại từ các chữ cái trong bảng chữ cái đã mã hóa sang các chữ cái trong bảng chữ cái chưa mã hóa. Từ đó sẽ thu được bản tin giải mã : meetmeatfiveoclock
Tuy nhiên việc sử dụng phương pháp mã hóa này cũng có nhiều điểm không thuận lợi. Vấn đề chính của phương pháp mã hóa thay thế chính là tần suất xuất hiện của các chữ cái không được che giấu một chút nào. Nếu bản tin
Mã hóa bảo mật trong Wimax Chương II : Các phương pháp mã hóa bảo mật
được mã hóa LOOQLOTQWMUOAEFAEN được phân chia ra, người ta có thể xác định được tần suất xuất hiện của mỗi chữ cái và so sánh chúng với tần suất xuất hiện của các chữ cái trong tiếng Anh: ‘O’ được sử dụng 4 lần trong bản tin mã hóa, L,Q,A và A xuất hiện mỗi chữ cái 2 lần. 9 chữ cái có tần suất xuất hiện nhiều nhất trong tiếng Anh là E, T, A, O, N, I, S, R và H. Từ đó có thể suy đoán được bản tin mã hóa [23].
2.2.2.4. Các mã hoán vị
Ý tưởng đằng sau mật mã hoán vị là tạo ra một sự thay đổi vị trí của các chữ cái trong bản tin gốc, điều này sẽ làm xuất hiện bản tin mã hóa. Mã hóa hoán vị không có tính bảo mật cao bởi vì chúng không thay đổi các chữ cái trong bản tin gốc hoặc thậm chí là xuất hiện nhiều lần, nhưng chúng có thể được xây dựng để trở thành phương pháp mã hóa bảo mật hơn. Một ví dụ của mã hoán vị là mã rail fence.
• Mã Rail fence: là một hoán vị theo cột hết sức đơn giản, lấy một chuỗi và chia nhỏ các chữ cái thành hai nhóm theo đường zigzag như dưới đây: Bản tin gốc : WHEN-DRINKING-WATER-REMEMBER-ITS-SOURCE.
Zig : W E D I K N W T R E E B R T S U C Zag: H N R N I G A E R M M E I S O R E.
Bản tin mã hóa = zig+zag = WEDIKNWTREEBRTSUCHNRNIGAERMMEIORE
• Mật mã Scytale: Vào thế kỉ thứ 4 trước công nguyên, một thiết bị tên là Scytale được sử dụng để mã hóa các bản tin của quân đội và chính phủ Spartan. Thiết bị bao gồm một trụ gỗ với một dải giấy cuộn quanh nó. Khi giấy được bỏ đi, nó đơn giản chỉ là một dãy các chữ cái hỗn độn, nhưng trong khi cuốn xung quanh trụ gỗ, bản tin sẽ trở nên rõ ràng. Scytale lấy ý tưởng từ mã hóa rail fence và mở rộng nó bằng cách sử dụng một khóa có độ dài xác định để hỗ trợ việc che giấu bản tin.
Ví dụ văn bản gốc là When drinking water, remember its source, độ dài là 34, ta chọn độ dài khóa là 4. Chia bản tin độ dài 34 ra các khóa độ dài 4, ta được 8 còn dư 2. Do đó ta làm tròn độ dài mỗi hàng của Scytale lên 9 và thêm vào bản tin 2 chữ cái Z.
Mã hóa bảo mật trong Wimax Chương II : Các phương pháp mã hóa bảo mật W H E N D R I N K I N G W A T E R R E M E M B E R I T S S O U R C E Z Z Bảng 2.1 : Mã hóa Scytale
Bằng cách sắp xếp các chữ cái theo từng cột từ trái qua phải ta thu được : WIESHNMSEGEONWMUDABRRTECIERENRIZKRTZ.
Để giải mã, ta biết rằng kích thước của khóa là 4, do đó ta viết 4 chữ cái đầu tiên từ trên xuống dưới rồi đến 4 chữ cái tiếp theo. Đọc các chữ cái và bỏ đi các chữ cái cuối cùng ta sẽ nhận được bản tin gốc.
Điều không thuận lợi cho phương pháp này là với những bản tin nhỏ, văn bản mã hóa có thể dễ dàng bị phát hiện bằng cách thử các giá trị khóa khác nhau. Mã Rail fence không có tính thực tế cao, do việc thiết kế đơn giản và bất kỳ người nào cũng có thể bẻ gãy. Ngược lại mã Scytale thực tế lại rất hữu dụng cho việc đưa những bản tin nhanh cần thiết để giải mã bằng tay. Vấn đề chính của cả hai loại mã này là các chữ cái không thay đổi, do đó đếm tần suất xuất hiện của các chữ cái có thể giúp khôi phục bản tin gốc. [23]
2.2.2.5. Mật mã Hill
Một loại mật mã khác cũng liên quan đến việc chuyển đổi các chữ cái đó là mật mã Hill, được phát triển bởi nhà toán học Lester Hill vào năm 1929 [11]. Mật mã Hill là một ví dụ của mật mã khối. Mật mã khối là một loại mật mã mà các nhóm các chữ cái được mã hóa cùng với nhau theo các khối có độ dài bằng nhau.
Để mã hóa một bản tin sử dụng mật mã Hill, người gửi và người nhận
trước hết phải thống nhất về ma trận khóa A cỡ n× n. A phải là ma trận khả
nghịch. Bản tin gốc sau đó sẽ được mã hóa theo các khối có kích thước n. Ví dụ
ta xét ma trận 2×2 và bản tin sẽ được mã hóa theo các khối 2 kí tự.
Ma trận A: , bản tin MISSISSIPI
Mã hóa bảo mật trong Wimax Chương II : Các phương pháp mã hóa bảo mật
Khối đầu tiên MI được tính toán tương ứng: (M~12,I~ 8)
Hai chữ cái đầu tiên của bản tin mã hóa tương ứng với 2, 8 là CI. Lặp lại bước này cho toàn bộ bản tin. Nếu không có đủ chữ cái cho khối 2 chữ thì ta chèn thêm vào một vài chữ cái, như Z… Bản tin MI SS IS SI PP IK sẽ được mã hóa thành CI KK GE UW ER OY.
Giải mã mật mã Hill: Để giải mã một bản tin, trước hết ta tính ma trận nghịch đảo của ma trận khóa A.
Sau đó nhân ma trận nghịch đảo với từng cặp chữ cái trong bản tin đã được mã hóa (theo mod 26) để khôi phục lại bản tin gốc. Ma trận nghịch đảo tính được :
Bản tin đã mã hóa : CIKKGEWEROY
Phía nhận sẽ tính : để giải mã bản tin. Hai chữ cái đầu
tương ứng với 12, 8 là M và I. Lặp lại phép tính như trên ta sẽ giải mã ra được toàn bộ bản tin. [23]
2.2.2.6. Mật mã Vigenère
Mật mã Vigenere có lẽ là mật mã nổi tiếng nhất trong số các mật mã đa chữ cái có thể tính toán bằng tay, được sáng tạo bởi Blaise de Vigenere, nhà ngoại giao người Pháp ở thế kỉ 16. Mặc dù mật mã này được sáng lập năm 1586, nhưng nó chỉ thực sự được sử dụng một cách rộng rãi sau gần 200 năm sau đó và cuối cùng cũng bị bẻ gãy bởi Babbage và Kasiski vào giữa thế kỉ 19. Mật mã Vigenère đã từng được sử dụng bởi quân đội liên bang trong cuộc nội chiến ở Mỹ năm 1860 [12].
Mật mã đa thay thế chữ cái tương tự với mật mã thay thế đơn chữ cái ngoại trừ một vấn đề là các chữ cái được mã hóa được thay đổi một cách liên tục trong quá trình mã hóa bản tin. Điều này làm cho loại mật mã này giảm được
Mã hóa bảo mật trong Wimax Chương II : Các phương pháp mã hóa bảo mật
nguy cơ bị xâm hại bằng cách sử dụng tần suất xuất hiện của các chữ cái [23]. Mật mã Vigenère sử dụng bảng chữ của Vigenere để thực hiện mã hóa [12]
Hình 2.5 : The Vigenère Square [12]
Có hai phiên bản khác nhau của mã hóa Vigenère, phương pháp khóa tự động và phương pháp từ khóa [23].
Phương pháp khóa tự động: Để mã hóa một bản tin sử dụng phương pháp khóa tự động Vigenere, nguời gửi và người nhận trước hết phải thống nhất với nhau về khóa bí mật. Khóa này là một chữ cái đơn, sẽ được thêm vào đầu của bản tin để tạo khóa. Người gửi sẽ mã hóa bản tin bằng cách viết bản tin gốc trên một dòng và viết khóa ở dòng dưới. Người gửi sẽ sử dụng bản tin chưa mã hóa và khóa để chọn hàng và cột trong bảng Vigenere. Hàng được chọn là hàng mà chữ cái gốc là ở cột đầu tiên và cột được chọn là cột mã chữ cái khóa nằm trên hàng đầu tiên. Một chữ cái mã hóa sẽ là chữ cái mà xuất hiện trong bảng Vigenere tại vị trí giao giữa hàng và cột. Ví dụ, để tìm chữ cái mã hóa, vị trí đầu tiên trong hàng tương ứng với vị trí chữ cái T. Cột sẽ tương ứng với chữ cái L. Chữ cái nằm ở vị trí giao giữa hàng và cột này là chữ cái mã hóa, trong trường hợp này là E. Tiếp tục làm như vậy với mỗi cặp chữ cái sẽ tạo được bản tin được mã hóa. Để giải mã ta làm ngược lại. Ví dụ, với khóa chính là L :
Bản tin gốc : T O B E O R N O T T O B E
Khóa : L T O B E O R N O T T O B
Mã hóa : E H P F S F E B H M H P F
Mã hóa bảo mật trong Wimax Chương II : Các phương pháp mã hóa bảo mật
Đánh giá độ bảo mật : Phương pháp khóa tự động Vigenere là phương pháp không bảo mật. Chỉ có 26 khóa (26 chữ cái trong bảng chữ cái). Mã có thể bị bẻ gãy một cách dễ dàng với việc thử từng chữ cái. Người nào muốn đọc bản tin được mã hóa sử dụng phương pháp khóa tự động này chỉ cần thử từng chữ cái một trong bảng chữ cái để làm khóa cho đến khi tạo lại đươc bản tin gốc ban đầu. Việc này có thể được thực hiện thậm chí không cần sự giúp đỡ của máy tính, và có thể thực hiện được trong khoảng thời gian ngắn. Tuy nhiên ý tưởng của phương pháp này có thể được sử dụng để tạo ra một loại mã có độ bảo mật cao hơn.
• Phương pháp từ khóa: Phương pháp này tương tự như phương pháp khóa tự động, nhưng thay vì sử dụng một chữ cái riêng lẻ làm khóa, nó sử dụng một cụm từ khóa. Từ khóa có thể có độ dài bất kì nào lớn hơn 1, nó sẽ cung cấp một số lượng vô hạn các khóa. Để tạo khóa, người gửi viết keyword lặp lại trên một dòng ở phía dưới bản tin gốc. Cặp chữ cái khóa- bản tin gốc trên mỗi cột và hàng sẽ được mã hóa sử dụng bảng Vigenere tương tự như phương pháp khóa tự động.Ví dụ với khóa là từ khóa PUCK ta sẽ viết thành PUCKP UCKPU CKPUC…
.
Đánh giá độ bảo mật: Mật mã Vigenere sử dụng từ khóa có độ bảo mật cao hơn so với phuơng pháp khóa tự động, nhưng nó vẫn dễ bị xâm hại. Từ khóa càng dài thì mã hóa càng bảo mật. Ví dụ, nếu từ khóa dài bằng bản tin mã hóa, thì mã hóa này là không thể bị bẻ gãy nếu một khóa mới được sử dụng cho mỗi bản tin. Thực tế với mỗi khóa khác nhau có thể nhận được các bản tin khác, do