TIỂU LUẬN PHÂN LOẠI CÁC PHƯƠNG PHÁP MÃ HÓA Thế kỷ XXI thế kỷ công nghệ thông tin, thông tin đã và đang tác động trực tiếp đến mọi mặt hoạt động kinh tế xã hội của hầu hết các quốc gia trên thế giới. Thông tin có vai trò hết sức quan trọng, bởi vậy chúng ta phải làm sao đảm bảo được tính trong suốt của thông tin nghĩa là thông tin không bị sai lệch, bị thay đổi, bị lộ trong quá trình truyền từ nơi gửi đến nơi nhận.
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-TIỂU LUẬN PHÂN LOẠI CÁC PHƯƠNG PHÁP MÃ HÓA
Giảng viên : PGS.TS Trịnh Nhật Tiến
Môn học : Mật mã và an toàn dữ liệu
Trang 2Hà Nội – 2014
Trang 4I TỔNG QUAN VỀ MÃ HÓA
Thế kỷ XXI thế kỷ công nghệ thông tin, thông tin đã và đang tác động trực tiếp đến mọi mặt hoạt động kinh tế xã hội của hầu hết các quốc gia trên thế giới Thông tin có vai trò hết sức quan trọng, bởi vậy chúng ta phải làm sao đảm bảo được tính trong suốt của thông tin nghĩa là thông tin không bị sai lệch, bị thay đổi, bị lộ trong quá trình truyền từ nơi gửi đến nơi nhận Mã hóa thông tin là một trong các phương pháp đảm bảo được tính trong suốt của thông tin Nó có thể giải quyết các vấn đề rắc rối ở trên giúp bạn, một khi thông tin đã được mã hóa và gửi đi thì kẻ xấu rất khó hoặc không thể giải mã được Phần này sẽ mô tả một cách tổng quan về mã hóa, bao gồm những khái niệm về mã hóa thông tin, một hệ thống mã hóa bao gồm những thành phần nào, khái niệm protocol, các loại protocol
1 Khái niệm cơ bản
Trang 5- Hệ mật mã : Là một hệ bao gồm 5 thành phần (P,C,K,E,D) thỏa mãn các tính chất sau :
P (Plaintext) là tập hợp hữu hạn các bản rõ có thể
C (Ciphertext) là tập hợp hữu hạn các bản mã có thể
K (Key) là tập hợp các bản khóa có thể
E (Encrytion) là tập hợp các quy tắc mã hóa có thể
D (Decryption) là tập hợp các quy tắc giải mã có thể
Một thông báo thường được tổ chức dưới dạng bản rõ Người gửi sẽ làm nhiệm vụ mã hóa bản rõ, kết quả thu được gọi là bản mã Bản mã này được gửi đi trên một đường truyền tới người nhận sau khi nhận được bản mã người nhận giải mã nó để tìm hiểu nội dung Dễ dàng thấy được công việc trên khi sử dụng định nghĩa hệ mật mã
2 Protocol
2.1 Giới thiệu protocol
Trong suốt cả quá trình của hệ thống mật mã là giải quyết các vấn đề, những vấn đề của hệ bao gồm: Giải quyết công việc xunh quanh sự bí mật, tính không tin cậy và những kẻ bất lương Bạn có thể học mọi điều về thuật toán cũng như các kỹ thuật, nhưng có một điều rất đáng quan tâm đó là protocol
Protocol là một loạt các bước, bao gồm hai hoặc nhiều người, thiết kế để hoàn thành nhiệm vụ "Một loạt các bước" nghĩa là protocol thực hiện theo một tuần tự , từ khi
Trang 6bắt đầu cho tới lúc kết thúc Mỗi bước phải thực hiện tuần tự và không có bước nào được thực hiện trước khi bước trước đó đã hoàn thành "Bao gồm hai hay nhiều
người" nghĩa là cần ít nhất hai người hoàn thành protocol, một người không thể tạo ra được một protocol Chắc chắn rằng một người có thể thực hiện một loạt các bước để hoàn thành nhiệm vụ, nhưng đó không phải là protocol Cuối cùng "thiết kế để hoàn thành nhiệm vụ" nghĩa là mội protocol phải làm một vài điều gì đó
Protocol có một vài thuộc tính khác nhau như sau:
1 Mọi người cần phải trong một protocol, phải biết protocol đó và tuân theo tất cả mọi bước trong sự phát triển
2 Mọi người phải trong một protocol và phải đồng ý tuân theo nó
3 Một protocol phải rõ ràng, mỗi bước phải được định nghĩa tốt và phải không có cơ hội hiểu nhầm
4 Protocol phải được hoàn thành, phải có những hành động chỉ rõ cho mỗi trường hợp có thể
2.2 Protocol mật mã
Protocol mật mã là protocol sử dụng cho hệ thống mật mã Một nhóm có thể gồm những bạn bè và những người hoàn toàn tin cậy khác hoặc họ có thể là địch thủ hoặc những người không tin cậy một chút nào hết Một điều hiển nhiên là protocol mã hóa phải bao gồm một số thuật toán mã hóa nhưng mục đích chung của protocol là một điều gì đó xa hơn là điều bí mật đơn giản
2.3 Mục đích của protocol
Trong cuộc sống hàng ngày, có rất nhiều nghi thức thân mật cho hầu hết tất cả mọi điều như gọi điện thoại, chơi bài, bầu cử Không có gì trong số chúng lại không có protocol, chúng tiến triển theo thời gian, mọi người đều biết sử dụng chúng như thế nào và làm việc với chúng
Hơn nữa bây giờ mọi người giao tiếp với nhau qua mạng máy tính thay cho sự gặp mặt thông thường Máy tính cần thiết một nghi thức chuẩn để làm những việc giống nhau như con người không phải suy nghĩ Nếu bạn đi từ một địa điểm này tới
Trang 7địa điểm khác, thậm chí từ quốc gia này tới quốc gia khác, bạn thấy một trạm điện thoại công cộng khác hoàn toàn so với cái bạn đã sử dụng, bạn dễ dàng đáp ứng Nhưng máy tính thì không mềm dẻo như vậy.
Thật ngây thơ khi bạn tin rằng mọi người trên mạng máy tính là chân thật, và cũng thật ngây thơ khi tin tưởng rằng người quản trị mạng, người thiết kế mạng là chân thật Hầu hết sẽ là chân thật, nhưng nó sẽ là không chân khi bạn cần đến sự an toàn tiếp theo Bằng những protocol chính thức, chúng ta có thể nghiên cứu những cách mà những kẻ không trung thực có thể lừa đảo và phát triển protocol để đánh bại những kẻ lừa đảo đó Protocol rất hữa ích bởi vì họ trừu tượng hoá tiến trình hoàn thành nhiệm vụ từ kỹ thuật, như vậy nhiệm vụ đã được hoàn thành.Sự giao tiếp giữa hai máy tính giống như một máy tính là IBM PC, máy kia là VAX hoặc loại máy tương
tự Khái niệm trừu tượng này cho phép chúng ta nghiên cứu những đặc tính tốt của protocol mà không bị xa lầy vào sự thực hiện chi tiết Khi chúng ta tin rằng chúng ta có một protocol tốt, thì chúng ta có thể thực hiện nó trong mọi điều từ một máy tính đến điện thoại, hay đến một lò nướng bánh thông minh
II PHÂN LOẠI CÁC PHƯƠNG PHÁP MÃ HÓA
Hiện nay có rất nhiều các thuật toán mã hóa khác nhau Từ những thuật toán được công khai để mọi người cùng sử dụng và áp dụng như là một chuẩn chung cho việc
mã hóa dữ liệu, đến những thuật toán mã hóa không được công bố Có thể phân loại thuật toán mã hóa theo các phương pháp như sau:
Trang 8như tấn công vét cạn hay dựa trên tấn công thống kê (dựa trên tần suất xuất hiện các chữ cái).
Mật mã học cổ điển hoạt động trên cơ sở bảng chữ cái và chúng được thực hiện bằng tay hay một số máy móc cơ khí đơn giản Các phương thức mã hóa cổ điển chủ yếu dựa trên mật mã hóa hoán vị và mật mã hóa thay thế
Mã hóa hoán vị bao gồm: Mật mã ceasar, Mật mã playfair, Mật mã hill
+ Mật mã ceasar
Thế kỷ thứ 3 trước công nguyên, nhà quân sự người La Mã Julius Ceasar đã nghĩ ra phương pháp mã hóa một bản tin như sau: Thay thế mỗi chữ trong bản tin bằng chữ đứng sau nó k vị trí trong bảng chữ cái Giả sử chọn k=3 ta có bảng chuyển đổi như sau:
Chữ ban đầu: 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
Chữ thay thế: 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
(sau Z sẽ vòng lại là A, do đó x -> A, y -> B và z -> C)Phương pháp Ceasar được biểu diễn như sau: với mỗi chữ cái p thay bằng chữ mã hóa C, trong đó: C = (p + k) mod 26 (trong đó mod là phép chia lấy số dư)
Và quá trình giải mã đơn giản là: p = (C – k) mod 26 k được gọi là khóa Dĩ nhiên là Ceasar và cấp dưới phải cùng dùng chung một giá trị khóa k, nếu không bản tin giải
mã sẽ không giống bản rõ ban đầu
Ngày nay phương pháp mã hóa của Ceasar không được xem là an toàn Giả sử đối thủ của Ceasar có được bản mã PHHW PH DIWHU WKH WRJD SDUWB
và biết được phương pháp mã hóa và giải mã là phép cộng trừ modulo 26
+ Mật mã Playfair
Mật mã Playfair xem hai ký tự đứng sát nhau là một đơn vị mã hóa, hai ký tự này được thay thế cùng lúc bằng hai ký tự khác Playfair dùng một ma trận 5x5 các ký tự như sau:
Trang 9ta sẽ biết đó là từ CLIMATE chứ không phải là từ CLJMATE.
Trước khi mã hóa, bản rõ được tách ra thành từng cặp ký tự Nếu hai ký tự trong một cặp giống nhau thì sẽ được tách bằng chữ X (trong tiếng anh ít khi có 2 ký tự X sát nhau)
Ví dụ: Từ Ballon được tách thành balxloon Việc mã hóa từng cặp được thực hiện theo quy tắc:
- Nếu hai ký tự trong cặp thuộc cùng một hàng, thì được thay bằng hai ký tự tiếp theo trong hàng Nếu đến cuối hàng thì quay về đầu hàng Ví dụ cặp ar được mã hóa thành RM
- Nếu hai ký tự trong cặp thuộc cùng một cột, thì được thay bằng hai ký tự tiếp theo trong cột Nếu đến cuối cột thì quay về đầu cột Ví dụ cột ov được mã hóa thành HO
- Trong các trường hợp còn lại, hai ký tự được mã hóa sẽ tạo thành đường chéo của một hình chữ nhật và được thay thế bằng 2 ký tự trên đường chéo kia Ví dụ: hs trở thành BP (B cùng dòng với H và P cùng dòng với S); ea trở thành IM (hoặc JM).Như vậy nếu chỉ xét trên 26 chữ cái thì mã khóa Playfair có 26x26=676 cặp chữ cái,
do đó các cặp chữ cái này ít bị lệch về tần suất hơn so với sự chênh lệch tần suất của từng chữ cái Ngoài ra số lượng các cặp chữ cái nhiều hơn cũng làm cho việc phá mã tần suất khó khăn hơn Đây chính là lý do mà người ta tin rằng mã hóa Playfair không thể bị phá và được quân đội Anh sử dụng trong chiến tranh thế giới lần thứ nhất
+ Mã Hill
Trong mã Hill mỗi chữ cái được gán cho một con số nguyên từ 0 đến 25
Trang 10A 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
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Mã Hill thực hiện mã hóa một lần m ký tự bản rõ (ký hiệu p1, p2,…,pm), thay thế thành m ký tự trong bản mã (ký hiệu c1, c2,…,cm) Việc thay thế này được thực hiện bằng m phương trình tuyến tính Giả sử m = 3, chúng ta minh họa m phương trình đó như sau:
Ba phương trình trên có thể biểu diễn thành vector và phép nhân ma trận như sau:
Hay: C = KP mod 26 với P và C là vector đại diện cho bản rõ và bản mã, còn K là
ma trận dùng làm khóa
Xét ví dụ bản rõ là paymoremoney cùng với khóa K là
Ba chữ cái đầu tiên của bản rõ tương ứng với vector (15, 0, 24) Vậy
Thực hiện tương tự ta có bản mã đầy đủ là LNSHDLEWMTRW
Trang 11Để giải mã chúng ta cần sử dụng ma trận nghịch đảo của K là K-1, tức là K-1K mod
26 = I là ma trận đơn vị (không phải mọi ma trận K đều tồn tại ma trận nghịch đảo, tuy nhiên nếu tồn tại thì ta có thể tìm được ma trận đơn vị bằng cách tính hạng det của
ma trận)
Ví dụ ma trận nghịch đảo của ma trận trên là:
Khi đó bảng giải mã là: K-1C mod 26 = K-1KP mod 26 = P
Có thể thấy mã hóa Hill ẩn giấu các thông tin về tần suất nhiều hơn mã hóa Playfair
do có thể mã hóa 3 hoặc nhiều hơn nữa các ký tự cùng lúc
Mã hóa thay thế bao gồm: Mật mã rail fence, mật mã hoán vị nâng cao
2 Mã hóa đối xứng
Thuật toán đối xứng là thuật toán mà tại đó khoá mã hoá có thể tính toán ra được từ khoá giải mã Trong rất nhiều trường hợp, khoá mã hoá và khoá giải mã là giống nhau Thuật toán này còn có nhiều tên gọi khác như thuật toán khoá bí mật, thuật toán khoá đơn giản, thuật toán một khoá Thuật toán này yêu cầu người gửi và người nhận phải thoả thuận một khoá trước khi thông báo được gửi đi, và khoá này phải được cất giữ bí mật Độ an toàn của thuật toán này vẫn phụ thuộc và khoá, nếu để lộ ra khoá này nghĩa là bất kỳ người nào cũng có thể mã hoá và giải mã thông báo trong
hệ thống mã hoá
2.1 Mã dòng
Mã dòng có những đặc tính sau:
Trang 12+ Kích thước một đơn vị mã hóa: Gồm k bit Bản rõ được chia thành các đơn vị mã hóa:
+ Một bộ sinh dãy số ngẫu nhiên: Dùng một khóa k ban đầu để sinh ra các số ngẫu nhiên có kích thước bằng kích thước đơn vị mã hóa:
+ Mỗi số ngẫu nhiên được XOR với đơn vị mã hóa của bản rõ để có được bản mã
Quá trình giải mã được thực hiện ngược lại, bản mã C được XOR với dãy số ngẫu nhiên S để cho ra lại bản rõ ban đầu:
Trong ví dụ trên đơn vị mã hóa có chiều dài k = 4 bít, n = 3:
Ví dụ này không phải là mã dòng vì s0, s1, s2 lặp lại khóa K Về phương diện khóa, ví
dụ này giống mã Vigenere hơn Đối với mã dòng, các số si được sinh ra phải đảm bảo một độ ngẫu nhiên nào đó (chu kỳ tuần hoàn dài):
Trang 13Như vậy có thể thấy mã hóa dòng tương tự như mã hóa Vigenere và mã hóa
OneTime Pad Điểm quan trọng nhất của các mã dòng là bộ sinh số ngẫu nhiên Nếu chọn khóa có chiều dài ngắn như mã hóa Vigenere thì không bảo đảm an toàn, còn nếu chọn khóa có chiều dài bằng chiều dài bản tin như One-Time Pad thì lại không thực tế Bộ sinh số của mã dòng cân bằng giữa hai điểm này, cho phép dùng một khóa ngắn nhưng dãy số sinh ra bảo đảm một độ ngẫu nhiên cần thiết như khóa của One-time Pad, dùng rằng không hoàn toàn thực sự ngẫu nhiên
Hai phương pháp mã dòng tiêu biểu là A5/1 và RC4
2.2 Mã khối
2.2.1 Mô hình mã hóa khối
Mã hóa sử dụng các thuật toán khối gọi đó là mã hóa khối, thông thường kích thước của khối là 64 bits Một số thuật toán mã hóa khối sẽ được trình bày sau đây
+ Mô hình dây truyền khối mã hóa
Dây truyền sử dụng kỹ thuật thông tin phản hồi, bởi vì kết quả của khối mã hóa trước lại đưa vào khối mã hóa hiện thời Nói một cách khác khối trước đó sử dụng để sửa đổi sự mã hóa của khối tiếp theo Mỗi khối mã hóa không phụ thuộc hoàn toàn vào khối của bản rõ
Trong dây truyền khối mã hóa, bản rõ đã được XOR với khối mã hóa kế trước đó trước khi nó được mã hóa Hình 2.2.1 Thể hiện các bước trong dây truyền khối mã hóa
Sau khi khối bản rõ được mã hóa, kết quả của sự mã hóa được lưu trữ trong thanh ghi thông tin phản hồi Trước khi khối tiếp theo của bản rõ được mã hóa, nó sẽ XOR với thanh ghi thông tin phản hồi để trở thành đầu vào cho tuyến mã hóa tiếp theo Kết quả của sự mã hóa tiếp tục được lưu trữ trong thanh ghi thông tin phản hồi, và tiếp tục XOR với khối bản rõ tiếp theo, tiếp tục như vậy cho tới kết thúc thông báo Sự mã hóa của mỗi khối phụ thuộc vào tất cả các khối trước đó
Trang 14Sự giải mã là cân đối rõ ràng Một khối mã hoá giải mã bình thường và mặt khác được cất giữ trong thanh ghi thông tin phản hồi Sau khi khối tiếp theo được giải mã nó XOR với kết quả của thanh ghi phản hồi Như vậy khối mã hoá tiếp theo được lưa trữ trong thanh ghi thông tin phản hồi, tiếp tục như vậy cho tới khi kết thúc thông báo
Công thức toán học của quá trình trên như sau :
+ Mô hình mã hóa với thông tin phản hồi
Trong mô hình dây truyền khối mã hoá(CBC_Cipher Block Chaining Mode), sự
mã hóa không thể bắt đầu cho tới khi hoàn thành nhận được một khối dữ liệu Đây thực sự là vấn đề trong một vài mạng ứng dụng Ví dụ, trong môi trường mạng an
Trang 15toàn, một thiết bị đầu cuối phải truyền mỗi ký tự tới máy trạm như nó đã được đưa vào Khi dữ liệu phải xử lý như một khúc kích thước byte, thì mô hình dây truyền khối
mã hoá là không thoả đáng
Tại mô hình CFB dữ liệu là được mã hóa trong một đơn vị nhỏ hơn là kích thước của khối Ví dụ sẽ mã hoá một ký tự ASCII tại một thời điểm (còn gọi là mô hình 8 bits CFB) nh ưng không có gì là bất khả kháng về số 8 Bạn có thể mã hoá 1 bit dữ liệu tại một thời điểm, sử dụng thuật toán 1 bit CFB
3 Hệ mã hóa công khai (Hệ mã phi đối xứng)
Vào năm 1976 Whitfield Diffie và Martin Hellman đã tìm ra một phương pháp mã hóa khác mà có thể giải quyết được hai vấn đề trên, đó là mã hóa khóa công khai (public key cryptography) hay còn gọi là mã hóa bất đối xứng (asymetric
cryptography) Đây có thể xem là một bước đột phá quan trọng nhất trong lĩnh vực mã hóa
Để khắc phục điểm yếu của mã hóa đối xứng người ta tập trung vào nghiên cứu theo hướng: có phương pháp nào để việc mã hóa và giải mã dùng hai khóa khác nhau? Có nghĩa là C = E(P, K1) và P = D(C, K2) Nếu thực hiện được như vậy thì chúng ta sẽ có 2 phương án áp dụng:
Phương án 1: Người nhận (Bob) giữ bí mật khóa K2, còn khóa K1 thì công khai
cho tất cả mọi người biết Alice muốn gởi dữ liệu cho Bob thì dùng khóa K1 để mã hóa Bob dùng K2 để giải mã Ở đây Trudy cũng biết khóa K1, tuy nhiên không thể dùng chính K1 để giải mã mà phải dùng K2 Do đó chỉ có duy nhất Bob mới có thể giải mã được Điều này bảo đảm tính bảo mật của quá trình truyền dữ liệu Ưu điểm của phương án này là không cần phải truyền khóa K1 trên kênh an toàn
P = D(C, K1) P = D(C, K2)
Phương án 2: Người gửi (Alice) giữ bí mật khóa K1, còn khóa K2 thì công khai
cho tất cả mọi người biết Alice muốn gởi dữ liệu cho Bob thì dùng khóa K1 để mã hóa Bob dùng K2 để giải mã Ở đây Trudy cũng biết khóa K2 nên Trudy cũng có thể giải mã được Do đó phương án này không đảm bảo tính bảo mật Tuy nhiên lại
có tính chất quan trọng là đảm bảo tính chứng thực và tính không từ chối Vì chỉ có