Đang tải... (xem toàn văn)
Xây dựng thuật toán, viết đặc tả hoặc vẽ sơ đồ cho các thuật toán mã hóa cổ điển. Cho ví dụ minh họa, mỗi thuật toán 5 ví dụ
An ton v bo mt thụng tin 1 mục lục Lời nói đầu 2 Phần i: các khái niệm cơ bản 3 Phần ii: Các phơng pháp mã hóa cổ điển 6 I. Hệ mã hoá thay thế (Substitution Cipher) 6 1. Hệ mã hoá CAESAR 8 2. Hệ mã hoá AFFINE 11 3. Hệ mã hoá Playfair 14 4. Hệ mã hoá VIGENERE 16 5. Hệ mã hoá HILL 20 II. Hệ mã hoá hoán vị (Transposition Cipher) 25 III. Các cách Thám mã (Cryptanalyis) 29 Phần iii: cài đặt một số thuật toán 32 Nguyn Th Thu Hin - TK6LC1 An ton v bo mt thụng tin 2 Lời nói đầu Trong các thập niên va qua vic ng dng Công ngh thông tin trong lnh vc kinh doanh v các hot ng dân s ã thc s bùng n. Ngân hng v các t chc ti chính lu chuyn hng t ô la mi ngy trên các h thng EFT (Electronic Fulds Transfer: H thng chuyn tin in t). Các tập đoàn công nghiệp tiến hành xử lý và truyền nhập các thông tin đắt giá, chẳng hạn về thiết kế hoặc giao dịch mua bán cổ phiếu, trái phiếu và ngoại tệ với số lợng lớn đợc thực hiện thông qua mạng máy tính. Lợng thông tin cá nhân khổng lồ ấy đợc lu trữ và xử lý bởi máy tính. Tất cả những ví dụ trên đều cho thấy phạm vi cho những hành vi gian lận và tình báo công nghiệp hoạt động đã trở nên vô cùng rộng lớn. Ngày nay, với sự bùng nổ của công nghệ thông tin đặc biệt là Internet với email, e-buissiness thì vấn đề bảo vệ thông tin ngày càng quan trọng quyết định sự sống còn của 1 công ty và các vấn đề an ninh quốc phòng. Giải pháp hiện thời cho việc bảo vệ của hều hết các quốc gia là kiểm soát lỗi và mã hóa dữ liệu. Phơng pháp mã hóa dữ liệu xuất hiện từ hàng ngàn năm trớc và đã có những đóng góp đáng kể trong lĩnh vực bảo mật thông tin. Với đề tài: Xây dựng thuật toán, viết đặc tả hoặc vẽ sơ đồ cho các thuật toán mã hóa cổ điển. Cho ví dụ minh họa, mỗi thuật toán 5 ví dụ em sẽ trình bày cụ thể hơn về các thuật toán trong mã hóa cổ điển -một phơng pháp mã hóa xuất hiện từ rất sớm. Nguyn Th Thu Hin - TK6LC1 An ton v bo mt thụng tin 3 Phần i: các khái niệm cơ bản Mã hóa cổ điển là phơng pháp mã hóa đơn giản nhất xuất hiện đầu tiên trong lịch sử ngành mã hóa. Thuật toán đơn giản và dễ hiểu. Những phơng pháp mã hóa này là cơ sở cho việc nghiên cứu và phát triển thuật toán mã hóa đối xứng đợc sử dụng ngày nay. Trong mã hóa cổ điển có hai phơng pháp nổi bật là: Mã hóa thay thế và Mã hóa hoán vị. Các thông điệp cần chuyển đi và cần đợc bảo vệ an toàn gọi là bản rõ (plaintext), và đợc ký hiệu là P. Nó có thể là một dòng vào các bít, các file, âm thanh số hoá, Bản rõ đợc dùng để lu trữ hoặc để truyền đạt thông tin. Trong mọi trờng hợp bản rõ là thông điệp cần mã hoá. Quá trình xử lý một thông điệp trớc khi gửi đợc gọi là quá trình mã hoá (encryption), ký hiệu là E. Một thông điệp đã đợc mã hoá đợc gọi là bản mã (ciphertext), và đợc ký hiệu là C. Quá trình xử lý ngợc lại từ bản mã thành bản rõ đợc gọi là quá trình giải mã (decryption), ký hiệu là D. Hàm mã hóa E thực hiện trên P để thu đợc C, ta có: E(P)=C Hàm giải mã D thực hiện trên C để thu đợc C, ta có: D(C)=P Việc mã hoá và giải mã thờng đợc thực hiện theo một hệ mã đợc mô tả rõ. Khoá (key) là một giá trị dùng để thực hiện một thuật toán mã hoá. Khoá có thể là một số, một xâu ký tự, Khoá này có thể nhận một trong nhiều giá trị (càng nhiều càng tốt). Giới hạn các giá trị có thể của khoá đợc gọi là không gian khoá (space key). Mỗi khoá k xác định một hàm mã hoá E k và một hàm giải mã D k . Giá trị của Nguyn Th Thu Hin - TK6LC1 An ton v bo mt thụng tin 4 khoá quyết định hiệu quả của các hàm mã hoá và giải mã, vì vậy các hàm mã hoá và giải mã có thể đợc biểu diễn nh sau: E k (P) = C D k (C) = P Một cách cụ thể hơn, một hệ mã hoá bao gồm: một không gian bản rõ, một không gian bản mã và một không gian khoá. - Không gian bản rõ có thể * trên bảng chữ cái hoặc tập hợp tất cả các câu có nghĩa trong một ngôn ngữ tự nhiên nào đó. - Không gian bản mã có thể là * trên bảng chữ cái . - Không gian khoá K là giới hạn có thể nhận đợc của khoá k. Mỗi khoá sẽ xác định một cặp các ánh xạ E k và D k tơng ứng. Trong một hệ mã hoá nếu khoá để mã và khoá để giải giống nhau thì: D k (E k (P))=P Có nhiều thuật toán mà khoá mã và khoá giải khác nhau. Khi đó, khoá mã k 1 khác với khoá giải k 2 : E k1 (P)=C D k2 (C)=P Nguyn Th Thu Hin - TK6LC1 Bản rõ Mã hoá Giải mã Bản rõ Bản mã Khoá Hình 1. Mã hoá với khoá mã và khoá giải giống nhau An toàn và bảo mật thông tin 5 D k2 (E k1 (P))=P Nguyễn Thị Thu Hiền - TK6LC1 B¶n râ M· ho¸ Gi¶i m· B¶n râ B¶n m· Kho¸ gi¶i H×nh 2. M· ho¸ víi kho¸ m· vµ kho¸ gi¶i kh¸c nhau Kho¸ m· An ton v bo mt thụng tin 6 Phần ii: Các phơng pháp mã hóa cổ điển I. Hệ mã hoá thay thế (Substitution Cipher) Hệ mã hoá thay thế là hệ mã hoá trong đó mỗi ký tự của bản rõ đợc thay thế bằng ký tự khác trong bản mã (có thể là một chữ cái, một số hoặc một ký hiệu). Sự thay thế này làm cho bản rõ trở lên khó hiểu đối với mọi ngời nhng ngời nhận sẽ đảo sự thay thế trong bản mã để đợc bản rõ. Có 4 kỹ thuật thay thế sau đây: - Thay thế đơn (A simple substitution cipher): là hệ trong đó một ký tự của bản rõ đợc thay bằng một ký tự tơng ứng trong bản mã. Một ánh xạ 1-1 từ bản rõ tới bản mã đợc sử dụng để mã hoá toàn bộ thông điệp. - Thay thế đồng âm (A homophonic substitution cipher): giống nh hệ thống mã hoá thay thế đơn, ngoại trừ một ký tự của bản rõ có thể đợc ánh xạ tới một trong số một vài ký tự của bản mã: sơ đồ ánh xạ 1-n (one-to-many). Ví dụ, A có thể tơng ứng với 5, 13, 25, hoặc 56, B có thể tơng ứng với 7, 19, 31, hoặc 42, v.v. - Thay thế đa mẫu tự (A polyalphbetic substitution cipher): đợc tạo nên từ nhiều thuật toán mã hoá thay thế đơn. ánh xạ 1-1 nh trong trờng hợp thay thế đơn, nhng có thể thay đổi trong phạm vi một thông điệp. Ví dụ, có thể có năm thuật toán mã hoá đơn khác nhau đợc sử dụng; đặc biệt thuật toán mã hoá đơn đợc sử dụng thay đổi theo vị trí của mỗi ký tự trong bản rõ. - Thay thế đa sơ đồ (A polygram substitution cipher): là thuật toán trong đó các khối ký tự đợc mã hoá theo nhóm. Đây là thuật toán tổng quát nhất, cho phép thay thế các nhóm ký tự của văn bản gốc. Ví dụ, ABA có thể tơng ứng với RTQ, ABB có thể tơng ứng với SLL, v.v. Ví dụ ROT13 là một chơng trình mã hoá đơn giản thờng thấy trên hệ thống UNIX. Trong thuật toán mã hoá này, A đợc thay thế bằng N, B đợc thay thế bằng O, v.v Mọi ký tự đợc quay dịch 13 vị trí. Đây là một ví dụ về mã hoá thay thế đơn. Nguyn Th Thu Hin - TK6LC1 An ton v bo mt thụng tin 7 #include <stdio.h> void main() { int c; while ((c == getchar()) != EOF) { if (c >= a && c <= m ) c = c + 13; else if (c >= n && c <= z ) c = c 13; else if (c >= A && c <= M ) c = c + 13; else if (c >= N && c <= Z ) c = c-13; putchar(c); } } Mã hoá một file hai lần bằng ROT13 và lu giữ kết quả trong file gốc: P = ROT13(ROT13(P)) Có rất nhiều hệ mã hoá có thể dễ dàng bẻ gẫy bởi vì bản mã không ẩn đi đợc tần số xuất hiện của các ký tự khác nhau của bản rõ, khoảng 26 ký tự tiếng Anh. Một nhà thám mã giỏi có thể xây dựng lại đợc bản rõ. Nguyn Th Thu Hin - TK6LC1 An ton v bo mt thụng tin 8 1. Hệ mã hoá CAESAR Hệ mã hoá nổi tiếng CAESAR là một hệ mã hoá đợc biết sớm nhất, sáng tạo bởi Julius Caesar. Lần đầu tiên đợc sử dụng trong quân sự. Hệ mã hóa này làm việc trên bảng chữ cái tiếng Anh 26 ký tự (A, B, , Z). Trong hệ CAESAR và các hệ tơng tự còn lại ta sử dụng các số tự nhiên thay cho các ký tự - đánh số các ký tự trong bảng chữ cái theo thứ tự: A là 0, B là 1, và Z là 25. A B C D E F G H I J L M N W X Y Z 0 1 2 3 4 5 6 7 8 9 1 1 1 2 1 3 2 2 2 3 2 3 2 5 Các phép toán số học thực hiện theo modul 26. Có nghĩa là 26 đồng nhất với 0, 27 đồng nhất với 1, 28 đồng nhất với 2, Ví dụ: 2ì17 + 5ì9 = 79 = 1 + 3ì26 = 1 Thuật toán: - Bớc 1: Đa vào bản rõ cần mã hóa - Bớc 2: Cho khóa k (0 k 25) - Bớc 3: thay thế mỗi ký tự trong bản rõ bằng 1 ký tự khác bằng cách dịch ký tự cần mã hóa sang phảI k bớc theo modul 26. Tơng ứng với công thức: E k () = ( + k) MOD 26 với là một ký tự, k là khóa (0 k 25), MOD là phép chia lấy phần d. Không gian khoá của hệ CAESAR bao gồm 26 số 0, 1, 2, 25. Ví dụ: với k=3, A đợc thay bằng D, B đợc thay bằng E, , W đợc thay bằng Z, , X đợc thay bằng A, Y đợc thay bằng B, và Z đợc thay bằng C. Ta có: Bảng chữ cái gốc 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 Nguyn Th Thu Hin - TK6LC1 An ton v bo mt thụng tin 9 Bảng chữ cái dùng để mã hoá 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 Ví dụ: Ví dụ 1: =GOOD, k=8 ta có: E 8 (G)=(6+8) MOD 26 =14 =O E 8 (O)=(14+8) MOD 26 =22 =W E 8 (D)=(3+8) MOD 26 =11 =L Vậy với bản rõ GOOD ta sẽ mã hóa thành OWWL Ví dụ 2: =Tinhoc, k=10 ta có: E 10 (T)=(19+10) MOD 26 =3 =D E 10 (I)=(8+10) MOD 26 =18 =S E 10 (N)=(13+10) MOD 26 =23 =X E 10 (H)=(7+10) MOD 26 =17 =R E 10 (O)=(14+10) MOD 26 =24 =Y E 10 (C)=(2+10) MOD 26 =12 =M Vậy với bản rõ TINHOC ta sẽ mã hóa thành DSXRYM Ví dụ 3: =Baomat, k=17 ta có: E 17 (B)=(1+17) MOD 26 =18 =S E 17 (A)=(0+17) MOD 26 =17 =R E 17 (O)=(14+17) MOD 26 =5 =F E 17 (M)=(12+17) MOD 26 =3 =D E 17 (T)=(19+17) MOD 26 =10 =K Nguyn Th Thu Hin - TK6LC1 An ton v bo mt thụng tin 10 Vậy với bản rõ BAOMAT ta sẽ mã hóa thành SRFDRK * Thuật toán giải mã tơng ứng D k là lùi lại k bớc trong bảng chữ cái theo modul 26. D k () = ( - k) MOD 26 Để minh họa, ta xét một vài ví dụ minh hoạ: Ví dụ 1: = HPWNZXP - Xét với k=1 ta có thể lùi lại 1 bớc trong bảng chữ cái. Nh vậy bản mã trên tơng ứng là: GOVMYWO - k=2, tơng tự thu đợc bản rõ FNULXVN - k=3, thu đợc bản rõ EMTKWUM - k=4, thu đợc bản rõ DLSJVTL - k=5, thu đợc bản rõ CKRIUSK - k=6, thu đợc bản rõ BJQHTRJ - k=7, thu đợc bản rõ AIPGSQI - k=8, thu đợc bản rõ ZHOFRPH - k=9, thu đợc bản rõ YGNEQOG - k=10, thu đợc bản rõ XFMDPNF - k=11, thu đợc bản rõ WELCOME Đến đây bản rõ có nghĩa (WELCOME) nên ta xác định đợc khóa k = 11 Ví dụ 2: Cho bản mã JBCRCLQRWCRVNBJENBWRWN ta thử liên tiếp các khóa giải mã để thu đợc các bản rõ: Nguyn Th Thu Hin - TK6LC1 [...]... VIGENERE Mỗi cột của hình vuông VIGENERE có thể xem nh là một hệ CAESAR, với các khoá 0, 1, 2, , 25 Để mã hoá thì bản rõ đợc đọc từ các hàng và khoá đợc đọc từ các cột Thuật toán: - Bớc 1: Cho bản rõ cần mã hóa có độ dài tùy ý - Bớc 2: Cho trớc khóa k là 1 xâu có độ dài tùy ý Khóa đợc áp dụng một cách tuần hoàn, tức là nếu bản rõ dài hơn khóa thì khóa sẽ đợc áp dụng lại từ đầu - Bớc 3: Đọc bản rõ từ các. .. điệp từ bản mã mà không có khoá Nếu thành công, ngời phân tích mã có thể thu đợc bản rõ hoặc khoá, hoặc cũng có thể tìm thấy điểm yếu trong một hệ thống mã hoá Các thuật toán sử dụng cho phần lớn các hệ thống mã hoá là nổi tiếng, vì vậy chúng ta giả thiết rằng ngời thám mã đã biết thuật toán để bắt đầu thám mã Nh vậy, vấn đề cốt yếu của một hệ mã hoá tốt là việc khôi phục bản rõ P từ bản mã C khi biết... Công việc của ngời thám mã là tìm ra khoá (hoặc các khoá) đợc sử dụng để mã hoá các thông điệp hoặc thuật toán để giải mã bất kỳ một thông điệp mới nào đợc mã hoá bằng khoá đó Đầu vào: P1, C1=Ek(P1), P2, C2=Ek(P2), Pi, Ci=Ek(Pi) Cần tìm: hoặc k, hoặc một thuật toán để nhận đợc Pi+1 từ Ek(Pi+1) 3 Lựa chọn bản rõ (Chosen-plaintext attack) Ngời thám mã không chỉ phân tích bản mã mà còn đợc kết hợp với... nhng các bản rõ không là tuỳ ý mà do ngời thám mã phải lựa chọn Trờng hợp này tốt hơn trờng hợp (2) đối với ngời thám mã, bởi vì ngời thám mã có thể chọn khối bản rõ đặc trng để giải mã, nó có thể mang lại nhiều thông tin về khoá Công việc của ngời thám mã là tìm khoá (hoặc các khoá) đợc sử dụng để mã hoá các thông điệp hoặc một thuật toán để giải mã bất cứ thông điệp đã đợc mã hoá mới nào bằng các. .. xuất từ khóa không lặp lại mà đợc gắn vào đầu nguyên bản - Nếu biết từ khóa sẽ giải mã đợc chữ cái đầu tiên - Sử dụng các chữ cái này làm khóa để giải mã các chữ cái tiếp theo 5 Hệ mã hoá HILL Hệ mã hoá này dựa trên lý thuyết về đại số tuyến tính do Lester S.Hill đ a ra năm 1929 Cả không gian bản rõ và bản mã đều là *, trong đó là bản chữ cái tiếng Anh Chúng ta sử dụng các số tự nhiên thay cho các ký... G(R,A) = R G(E,H) = L Sau khi mã hóa ta sẽ thu đợc bản mã HINSNQRL Ví dụ3 : mã hóa bản rõ THUATTOAN với từ khoá BAOMAT G(T,B) = U G(H,A) = H G(U,O) = I G(A,M) = M G(T,A) = T G(T,T) = M G(O,B) = P G(A,A) = A G(N,O) = B Sau khi mã hóa ta sẽ thu đợc bản mã UHIMTMPAB * Giải mã Để giải mã ta vẫn dùng hình vuông VIGENERE, xét khóa k đóng vai trò là cột, ký tự đợc mã hóa là giao của khóa và hàng nào đó tơng ứng... trình mã hoá đợc thực hiện theo công thức: C = K.P MOD 26 trong đó P và C đợc viết thành các vector cột d chiều Mỗi bộ d chữ cái của bản rõ đợc viết thành vector P với các thành phần là các số biểu diễn các ký tự Và C cũng thể hiện khối d ký tự của bản mã Ví dụ1 : bản rõ HELP đợc viết thành hai vector H 7 P1 = = và P2 = E 4 L 11 = P 15 theo công thức mã hoá ta có 3 2 3 5 7 ... khóa, với điều kiện trong từ khóa đó không có chữ nào bị lặp Ta lập ma trận Playfair là ma trận cỡ 5x5 dựa trên từ khóa đã cho và gồm các chữ trên bảng chữ cái, đợc sắp xếp theo thứ tự nh sau: - Trớc hết, viết các chữ của từ khóa vào các hàng của ma trận bắt đầu từ hàng thứ nhất - Nếu ma trận còn trống, viết các chữ khác lên bảng chữ cái cha đợc sử dụng vào các ô còn lại Có thể viết theo 1 trình tự quy... (Chosen-Key) Ngời thám mã biết phơng pháp mã hoá Ek và cố tìm phơng pháp giải mã tơng ứng Dk trớc khi nhận bất cứ mẫu bản mã nào Trong trờng hợp này ngời thám mã có rất nhiều thời gian để làm việc Trờng hợp (5) , (6) thờng đợc ứng dụng chủ yếu đối với các hệ thống mã hoá sử dụng khoá công khai Một điểm đáng chú ý khác là đa số các kỹ thuật thám mã đều dùng phơng pháp thống kê tần suất xuất hiện của các. .. 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à NGAY MAI BAT DAU CHIEN DICH XYZ đợc viết dới dạng ma trận 5 5 theo cột nh sau: Cột 1 2 3 4 5 Bản rõ N A D I C G I A E H A B U N X Y A C D Y M T H I Z Vì có 5 cột nên chúng có thể đợc sắp lại theo 5! =120 cách khác nhau Để tăng độ an toàn có thể chọn một trong các cách sắp xếp lại đó Nếu ta chuyển vị các cột theo thứ tự 3, 5, 2, 4, . tài: Xây dựng thuật toán, viết đặc tả hoặc vẽ sơ đồ cho các thuật toán mã hóa cổ điển. Cho ví dụ minh họa, mỗi thuật toán 5 ví dụ em sẽ trình bày cụ thể hơn về các thuật toán trong mã hóa cổ điển. ngành mã hóa. Thuật toán đơn giản và dễ hiểu. Những phơng pháp mã hóa này là cơ sở cho việc nghiên cứu và phát triển thuật toán mã hóa đối xứng đợc sử dụng ngày nay. Trong mã hóa cổ điển có. đồng nhất với 0, 27 đồng nhất với 1, 28 đồng nhất với 2, Ví dụ: 2ì17 + 5 9 = 79 = 1 + 3ì26 = 1 Thuật toán: - Bớc 1: Đa vào bản rõ cần mã hóa - Bớc 2: Cho khóa k (0 k 25) - Bớc 3: thay thế mỗi