Giả sử như các thông tin trên đều được chuyển đổi thành dạng không có ý nghĩa “Mã hóa thông tin” thì sẽ góp phần ngăn chặn và hạn chế hậu quả của việc bị mất trộm, ăn cắp thông tin, ....
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO AN TOÀN BẢO MẬT THÔNG TIN
NGÀNH CÔNG NGHỆ THÔNG TIN
MÔ PHỎNG MỘT SỐ HỆ MẬT MÃ ĐƠN
GIẢN LỚP : DCT11
1 Quảng Ngãi, tháng 4 năm 2014
Trang 2Trên thực tế không có sự thành công nào mà không gắn liền với sự giúp đỡ, hỗ trợ
dù ít hay nhiều, dù trực tiếp hay gián tiếp của những người xung quanh Đặc biệt đối với những người còn đang ngồi trên ghế nhà trường như chúng tôi lại càng nhận được nhiều
sự quan tâm từ bạn bè, gia đình và hơn cả là sự hướng dẫn và giúp đỡ nhiệt tình của quý Thầy Cô giáo
Với lòng kính trọng sâu sắc, chúng tôi xin trân trọng gửi lời cảm ơn chân thành đến quý thầy cô giáo khoa Công Nghệ Thông Tin của trường Đại Học Phạm Văn Đồng đã tận tình hướng dẫn truyền đạt vốn kiến thức quý báu cho chúng tôi Với nhứng kiến thức đã tiếp thu được tạo điều kiện cho chúng tôi rất nhiều trong việc học tập và tìm hiểu, gần đây nhất là thực hiện hoàn thành đề tài với môn học “An toàn bảo mật thông tin”
Chúng tôi xin chân thành cảm ơn thầy Phạm Văn Tho đã nhiệt tình hướng dẫn chúng tôi trong việc chọn đề tài và thực hiện hoàn thành đề tài môn học “An Toàn Bảo Mật Thông Tin”
Tiếp đến chúng tôi cũng xin gửi lời cảm ơn đến bạn bè đã nhiệt tình giúp đỡ, góp ý chúng tôi trong việc thu thập tài liệu, xây dựng ý tưởng trong suốt quá trình làm đồ án cũng như trong thời gian học tập
Dù đã cố gắng hoàn thành thật tốt đề tài, nhưng chắc chắn sẽ còn nhiều thiếu sót không thể tránh khỏi Chúng tôi mong nhận được sự thông cảm và tận tình chỉ bảo của quý Thầy
Cô và các bạn
Chúng tôi xin chân thành cảm ơn!
Trang 4MỤC LỤC
Trang 5LỜI MỞ ĐẦU
Trao đổi thông tin là nhu cầu thiết yếu trong xã hội loài người Hơn bao giờ hết, độ tin cậy và tính chính xác của thông tin được trao đổi là vấn đề quan trọng cần được quan tâm Trong khi đó có nhiều thông tin hết sức quan trọng cần được giữ bí mật khi trao đổi, điển hình như các thông tin về các lĩnh vực quân sự, ngoại giao, tài chính, Điều đó đặt
ra cho con người một bài toán khó về biến đổi thông tin từ dạng có ý nghĩa sang dạng không có ý nghĩa Đó chính là việc “Mã hóa và giải mã thông tin”
Thử tưởng tượng một đề thi đại học được gửi trên mạng bị kẻ thứ ba tấn công và lấy cắp, hay thông tin về tài khoản ngân hàng của bạn bị ăn trộm trái phép vì có kẻ thứ ba đột nhập vào hệ thống tài khoản ngân hàng? Hậu quả sẽ ra sao, điều đó không ai lường trước được Giả sử như các thông tin trên đều được chuyển đổi thành dạng không có ý nghĩa
“Mã hóa thông tin” thì sẽ góp phần ngăn chặn và hạn chế hậu quả của việc bị mất trộm,
ăn cắp thông tin, Vì thế nên việc tìm hiểu và ứng dụng các giải thuật mã hóa là mang tính chiến lược đem lại ý nghĩa lớn cho việc trao đổi và lưu trữ thông tin của con người Vậy nên cùng với nhu cầu tìm hiểu và học tập môn học “An toàn và bảo mật thông tin”, nhóm tôi chọn đề tài xây dựng ứng dụng mô phỏng một số giải thuật mã hóa đơn giản
Trang 5
Trang 61 Cơ Sở Lý Thuyết :
1.1. Mã hóa 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
Ví dụ: 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
Giả sử có bản tin gốc (bản rõ): meet me after the toga party
Như vậy bản tin mã hóa (bản mã) sẽ là: PHHW PH DIWHU WKH WRJD SDUWB
Thay vì gửi trực tiếp bản rõ cho các cấp dưới, Ceasar gửi bản mã Khi cấp dưới nhận được bản mã, tiến hành giải mã theo quy trình ngược lại để có được bản rõ Như vậy nếu đối thủ của Ceasar có lấy được bản mã, thì cũng không hiểu được ý nghĩa của bản mã
Chúng ta hãy gán cho mỗi chữ cái một con số nguyên từ 0 đến 25: 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
bản tin giải mã sẽ không giống bản rõ ban đầu
1 3
14 15 16 17 18 19 20 21 22 23 24 25
Trang 7Trang 7
Trang 81.2.Mã Hill
Trong mã Hill, mỗi chữ cái được gán cho một con số nguyên từ 0 đến 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:
c1 =k11 p1+k12 p2+k13 p3 mod 26
c2=k21p2+k22 p2+k23p3 mod 26 c3=k31 p1+k32 p2+k33 p3 mod 26
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:
= mod 26 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à
K=
Ba chữ cái đầu tiên của bản rõ tương ứng với vector (15, 0, 24)
Vậy
mod 26 =
Thực hiện tương tự ta có bản mã đầy đủ là LNSHDLEWMTRW
Để 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à:
K-1= Vì :
Khi đó bảng giải mã là: K-1C mod 26 = K-1KP mod 26 = P
Trang 91.3.Mật mã Vigenere
Mật mã Vigenere là một phương pháp mã hóa văn bản bằng cách sử dụng xen kẽ một số phép mã hóa Caesar khác nhau dựa trên các chữ cái của một từ khóa Nó là một dạng đơn giản của mật mã thay thế dùng nhiều bảng chữ cái Trong phép mã hóa Caesar, mỗi ký tự của bảng chữ cái được dịch đi một khoảng nhất định, ví dụ với bước dịch là 3, A trở thành D, B trở thành E Mật mã Vigenere là sự kết hợp xen kẽ vài phép mã hóa Caesar với các bước dịch khác nhau
Trang 9
Trang 10Với m=6, k=(2, 8, 15, 7, 4, 17)
Trang 111.4.Mật mã Affine
Mật mã Affine là một dạng mật mã thay thế một bảng chữ cái, mỗi chữ cái sẽ được thay thế với một con số tương ứng, sau đó được mã hóa với một hàm toán học đơn giản và cuối cùng lại được chuyển về một chữ cái Hàm toán học sẽ chuyển một chữ cái trong văn bản gốc sẽ được chuyển thành một chữ cái trong văn bản mã và ngược lại Tất nhiên, mật mã Affine cũng có những điểm yếu như tất cả các mật mã thay thế một bảng chữ cái khác
Trong mã Affine, bảng chữ cái có chữ cái sẽ được chuyển thành các
số Sau đó dùng hàm module để mã hóa và chuyển thành bản mã
Trong đó, a và b là khóa, a và m nguyên tố cùng nhau
Hàm giải mã với một ký tự
Trong đó là nghịch đảo của a theo module m
Ví dụ
Mã hóa văn bản: “HELLO WORLD” với khóa là (17, 6)
Trong bảng mã ABC XYZ, ta có m = 26
Văn bản gốc được chuyển thành dãy số [7, 4, 11, 11, 14, 22, 14, 17, 11, 3]
Với từng số x trong dãy số trên, áp dụng hàm mã hóa , ta được dãy số [21, 22, 11, 11, 10, 16, 10, 11, 9, 5]
Chuyển dãy số về dạng ABC, ta có bản mã: VWLLK QKJLF
Trang 11
Trang 12Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân) Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã Khóa công khai được công bố rộng rãi cho mọi người và được dùng
để mã hóa Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải
mã bằng khóa bí mật tương ứng Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được
Ví dụ minh chứng: Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai
như sau: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn (Khóa công khai) và giữ lại chìa khóa Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bob gửi chiếc hộp lại cho Alice Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau:
Chọn 2 số nguyên tố lớn và với , lựa chọn ngẫu nhiên và độc lập
Chọn một số tự nhiên sao cho và là số nguyên tố cùng nhau với
Khóa công khai bao gồm: n, môđun, và e, số mũ công khai (cũng gọi là số mũ
Trang 13Ví dụ:
Sau đây là một ví dụ với những số cụ thể Ở đây chúng ta sử dụng những số nhỏ
để tiện tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn
Lấy:
p = 11 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)
q = 3 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)
n = pq =33 —
e = 3 — số mũ công khai
d = 7 — số mũ bí mật
.=20
Khóa công khai là cặp (e, n) = (3,33) Khóa bí mật là (d,n) = (7,33)
Hàm mã hóa là: encrypt(m) = m e mod n = m3 mod 33, với m là văn bản rõ
Hàm giải mã là: decrypt(c) = c d mod n = c7 mod 33, với c là văn bản mã
Để mã hóa văn bản có giá trị 15, ta thực hiện phép tính: encrypt(15) = 153mod
33 = 9
Để giải mã văn bản có giá trị 9, ta thực hiện phép tính: decrypt(9) = 97 mod 33
= 15
Lý giải chi tiết :
p= 11 số nguyên tố đầu tiên
q = 3 số nguyêntố thứ hai
p và q phải được giữ bí mật
n=p*q = 33
e = 17
e và n được thông báo công khai
Ta tìm được nghịch đảo của 3 modulo 33 là d = 7 d phải được giữ bí mật Chìa khóa công cộng là (e, n)
Chìa khóa riêng là (d, n)
Hàm số mã hóa là: mã hoá (P) ≡ (P^e) mod n ≡ (P^3) mod 33
Hàm số giải mã là: giải mã (C) ≡ (C^d) mod n ≡ (C^7) mod 33
Để mã hoá số “15”, làm như sau: mã hoá (15) ≡ (15^17) (mod 33 ) ≡ 9
Như thế “15” được mã hóa thành “9”
Để giải mã “9”, làm như sau : giải mã (9) ≡ (9^7) ( mod 33 ) ≡ 15
2.Chương trình cài đặt :
2.1.Xây dựng một số lớp :
o Ma trận (xử lý các thuật toán trên ma trận)
o Xâu (xử lý chuỗi)
o Các lớp mô phỏng thuật toán về ước số chung và một số thuật Eculide
Trang 13
Trang 14o Class Hill sử dụng để mã hoá và giải mã theo thuật toán Hill.
o Class Affine sử dụng để mã hoá và giải mã theo thuật toán Affine
o Class RSA sử dụng để mã hoá và giải mã theo thuật toán RSA
o Class Vigenere sử dụng để mã hoá và giải mã theo thuật toán Vigenere
o Class Ceasar sử dụng để mã hoá và giải mã theo thuật toán Ceasar
2.2 Giao diện chương trình
Trang 15Trang 15
Trang 16PHẦN KẾT LUẬN
Bảo mật thông tin là đảm bảo thông tin được đưa tới tay người nhận một cách chính sác không bị thay đổi hay bị đánh cắp, bảo đảm tính toàn vẹn của thông tin, không có dấu hiệu của việc xem trộm hay sửa đổi
Trong thời đại Internet phát triển như hiện nay việc trao đổi thông tin chủ yếu qua đường truyền mạng, lợi thế nhiều về mặt thời gian cũng như tính an toàn, nhưng cũng vì
sự phát triển này mà việc thông tin bị đánh cắp cũng trở nên phổ biến đặc biệt là những thông tin mật Vì vậy việc mã hoá thông tin là cần thiết trong việc trao đổi thông tin hiện nay
Nói tóm lại để thông tin được bảo mật khi chia sẻ cho người khác mà không muốn bị
kẻ thứ 3 xem trộm hoặc đoạt mất thông tin thì bắt buộc ta phải mã hoá thông tin đó bằng một hệ mã nào đó để thông tin nếu có rơi vào tay kẻ thứ 3 thì nó sẻ trở nên vô nghĩ với kẻ
đó, nếu không tìm ra được cách để mã hoá thông tin đó thì việc đánh cắp thông tin sẻ trở nên vô nghĩa
Ngày nay việc phá mã để trộm cắp thông tin đã trở nên dể dàng đối với một số tin tặc nên ta cần phải sử dụng các hệ mã tiến bộ hơn để mã hoá dữ liệu và đảm bảo việc trao đổi khoá phải tuyệt đối bảo mật để tránh sự thăm dò của kẻ thứ 3
Và sau một thời gian tìm hiểu, chắt lọc kiến thức nhóm đã xây dựng mô phỏng hoàn thành một số hệ mã đơn giản (Mã Hill, Mã Vigenere, Mã Affine, Mã Ceasar, Mã RSA) để
mã hoá thông tin có thể nói là tính bảo mật không được cao cho lắm nhưng đã đạt được kết quả mong muốn
Các hệ mã mô phỏng được tính năng cũng như yêu cầu của một hệ mật mã thông dụng, việc mã hoá và giải mã theo đúng trình tự cũng như cách thức của từng hệ mã và cho ra kết quả chính xác
Trang 17TÀI LIỆU THAM KHẢO Tiếng Việt
[1] Phạm Văn Tho, “ Bài Giảng An Toàn Và Bảo Mật Thông Tin ”, Nha Trang, 2008 [2] “Bảo mật thông tin, mô hình và ứng dụng”, Nguyễn Xuân Dũng, Nhà xuất bản Thống
Kê, 2007
Đường dẫn trên Internet
[3] http://www.codeproject.com/Chapters/1/Desktop-Development.aspx
[4] http://congdongcviet.com
[5] http://vi.wikipedia.org/wiki/M%E1%BA%ADt_m%C3%A3_Caesar
[6] http://vi.wikipedia.org/wiki/M%E1%BA%ADt_m%C3%A3_Affine
[7] http://vi.wikipedia.org/wiki/M%E1%BA%ADt_m%C3%A3_Vigen%C3%A8re
Trang 17