MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG CƠ SỞ TOÁN HỌC CỦA LÝ THUYẾT MẬT MÃ 1.1 ĐỒNG DƯ VÀ SỐ HỌC MODULO 1.2 HÀM Φ – EULER (EULER’S TOTIENT FUNCTION) .6 1.3 TÌM PHẦN TỬ NGHỊCH ĐẢO 1.4 THUẬT TOÁN LŨY THỪA NHANH CHƯƠNG TỔNG QUAN VỀ MÃ HÓA 2.1 GIỚI THIỆU CHUNG VỀ MÃ HÓA 2.1.1 Mục tiêu an toàn bảo mật thông tin 10 2.1.2 Khái niệm hệ mật mã 11 2.1.3 Mã hoá giải mã 11 2.1.4 Quy trình mã hoá giải mã liệu 12 2.1.5 Thuật toán mã hóa đối xứng (Symmetric Algorithms) 12 2.1.6 Thuật toán mã hóa phi đối xứng (Puclic-key-Algorithms) 14 2.1.7 Thám mã (Cryptanalyis) 15 2.2 MẬT MÃ CỔ ĐIỂN 18 2.2.1 Mã dịch vòng 18 2.2.1.1 Mô tả 18 2.2.1.2 Đánh giá độ an toàn 19 2.2.2 Mã thay 19 2.2.2.1 Mô tả 19 2.2.2.2 Đánh giá độ an toàn 20 2.2.3 Mã Affine 20 2.2.3.1 Mô tả 20 2.2.3.2 Đánh giá độ an toàn 22 2.2.4 Mã Vigenere 22 2.2.4.1 Mô tả 22 2.2.4.2 Đánh giá độ an toàn 23 2.2.5 Hệ mã Hill 24 2.2.5.1 Mô tả 24 2.2.5.2 Đánh giá độ an toàn 26 2.2.6 Hệ mã Hoán vị 26 2.2.6.1 Mô tả 26 2.2.6.2 Đánh giá độ an toàn 27 2.2.7 Sơ lược thám mã hệ mã cổ điển .27 2.2.8 Nhận xét chung hệ mật mã cổ điển 28 CHƯƠNG MỘT SỐ THUẬT TOÁN MÃ HÓA CÔNG KHAI 29 3.1 HỆ MÃ CÔNG KHAI .29 3.2 HỆ MÃ BA LÔ (MHK) 32 3.2.1 Tạo khoá 32 3.2.2 Mã hoá .32 3.2.3 Giải mã 33 3.2.4 Ví dụ 33 3.3 HỆ MÃ HÓA - RSA 34 3.3.1 Thuật toán RSA 35 3.3.2 Đặt vấn đề 37 3.3.3 Giải thuật RSA 37 3.3.3.1 Tạo khoá .37 3.3.3.2 Mã hoá 38 3.3.3.3 Giải mã .39 3.4 VÍ DỤ MINH HỌA 40 3.5 MỘT SỐ VẤN ĐỀ 41 3.6 ĐỘ AN TOÁN CỦA HỆ MẬT MÃ RSA 43 3.7 SƠ LƯỢC VỀ THÁM MÃ RSA 44 3.7.1 Tấn công dựa thời gian 44 3.7.2 Tấn công lựa chọn thích nghi mã 45 3.8 ỨNG DỤNG CỦA HỆ MẬT MÃ RSA 45 3.8.1 Giới thiệu chữ ký điện tử vấn đề xác nhận .46 3.8.2 Sơ đồ chữ ký RSA .47 3.8.3 Tấn công chữ ký điện tử 49 3.9 HỆ MÃ ELGAMAL 51 CHƯƠNG GIỚI THIỆU VỀ NGÔN NGỮ C# VÀ MỘT SỐ GIAO DIỆN CHƯƠNG TRÌNH 54 4.1 LỊCH SỬ NGÔN NGỮ C# 54 4.2 NHỮNG THẾ MẠNH CỦA NGÔN NGỮ C# 54 4.3 CÁC BƯỚC CHUẨN BỊ CHO CHƯƠNG TRINH 57 4.4 MỘT SỐ GIAO DIỆN .58 4.4.1 Giao diện 58 4.4.2 Giao diện chương trình nhập khóa cho thuật toán RSA 59 4.4.3 Giao diện chương trình thuật toán RSA 60 4.4.4 Giao diện chương trình chữ ký (phần ký văn bản) 61 4.4.5 Giao diện chương trình chữ ký (phần ký kiểm tra chữ ký) 62 KẾT LUẬN 63 TÀI LIỆU THAM KHẢO 65 PHỤ LỤC 66 LỜI NÓI ĐẦU Từ xưa đến thông tin yếu tố quan trọng hoạt động đời sống người Trong thời đại ngày nay, phương thức truyền đạt thông tin ngày đa dạng phát triển Với đời máy tính mạng máy tính, việc trao đổi thông tin trở lên dễ dàng hơn, nhanh chóng hơn, đa dạng Nhưng kèm theo nguy xâm phạm thông tin ngày tăng Nắm bắt thông tin nhiều mang ý nghĩa định, sống đặc biệt lĩnh vực: kinh tế, trị, an ninh, quốc phòng…Vì việc bảo mật thông tin đã, vấn đề đặt cấp bách Để giải vấn đề hệ mật mã đời Từ hệ mật mã sơ khai cổ điển như: Hệ mã Dịch Vòng, hệ mã Hill, hệ mã Affine,…, hệ mật mã đại, phức tạp hệ mã DES Các hệ mật mã công khai hệ mã RSA, hệ mã Ba Lô Nhưng kèm với đời phát triển hệ mật mã phương pháp phá khoá hệ mật mã Cuộc chiến bảo mật thông tin xâm phạm thông tin diễn cách thầm lặng vô gay gắt Với mong muốn tìm hiểu phương pháp bảo mật thông tin em chọn đề tài THUẬT TOÁN RSA VÀ ỨNG DỤNG CHỮ KÝ ĐIỆN TỬ làm đồ án tốt nghiệp Tuy có nhiều cố gắng việc xây dựng đề tài hạn chế mặt thời gian kiến thức kinh nghiệm thực tế nên đề tài không tránh khỏi thiếu sót Vì em mong bảo, đóng góp ý kiến thầy cô giáo cho đề tài em ngày hoàn thiện Em xin chân thành cảm ơn giúp đỡ nhiệt tình cô: Th.s Nguyễn Hiền Trinh– Bộ môn khoa học máy tính thầy cô trang bị kiến thức cho em để em hoàn thành đề tài CHƯƠNG CƠ SỞ TOÁN HỌC CỦA LÝ THUYẾT MẬT MÃ 1.1 Đồng dư số học modulo Lý thuyết đồng dư sở để hiểu phương pháp, kỹ thuật tính toán thuật toán mã hóa giải mã hệ mật mã khóa công khai Định nghĩa 1.1: Cho số nguyên tố a,b n ta nói hai số nguyên a b đồng dư với theo modulo n, phép chia a b cho n có số dư (nghĩa là: a mod n = b mod n) kí hiệu hay a ≡ b (mod n) Các phát biểu sau tương đương: - a b đồng dư với theo mod n (a ≡ b mod n) - n chia hết a − b, nghĩa n ước (a – b), kí hiệu n|(a-b) - Tồn số nguyên t cho a = t* n + b Một số tính chất đồng dư thức: – Có thể cộng, trừ nhân vế nhiều đồng dư thức theo modulo n Cụ thể bi (mod n) với i= 1,2,…,k ta có: a1 a2 ak b1 b2 b k (mod n) a1 * a2 * * ak b1 * b2 * * bk (mod n) - Nếu a * c b * c (mod n) USCLN(c, n) = => a ≡ b (mod n) - Nếu a ≡ b (mod ni ) a ≡ b (mod n), với n = BSCNN(ni, n2,…, nk ) - Nếu a ≡ b (mod n) c|n, c > ta có a ≡ b (mod c ) Các phép toán số học modul Các phép cộng (+) phép nhân (*) số học modulo n giống phép cộng, phép nhân thông thường kết chia cho n để lấy phần dư - Phép cộng : Cho a, b Z n N* c = (a+b) mod n = [(a mod n) + (b mod n)] mod n Ví dụ 1.1: (8+9) mod = 17 mod = (8+9) mod = (8 mod + mod 5) mod = (3+4) mod = mod = + 0 1 2 3 4 Bảng 1.1 Kết minh họa phép cộng với modulo n = Chú ý: Phép cộng số học modulo n có phần tử nghịch đảo cộng (hay số âm) định nghĩa sau: với số x Zn y Zn: (x + y) mod n = Ví dụ 1.1: (3+2) mod = 0,4 + mod = - Phép nhân: Cho a, b Z n N* c =(a * b) mod n = [(a mod n) * (b mod n)] mod n Ví dụ 1.2: (6 * 9) mod = 54 mod = (6 * 9) mod = [(6 mod 5) * (9 mod 5)] mod = (1 * 4) mod = * 0 0 0 1 2 3 4 Bảng 1.2 Kết minh họa phép nhân modulo n = Chú ý: Tương tự phép cộng, phép nhân modulo n có phần tử nghịch đảo định nghĩa sau: cho a Zn ! x Zn cho: a * x (mod n) Thì x gọi phần tử nghịch đảo nhân a mod n, ký hiệu x = a-1 mod n Ví dụ thứ phần tử nghịch đảo mod ta có: (3* 2) mod = Các tính chất phép toán số học modulo: - Nghịch đảo a Zn phép cộng modulo là: (n – a) với a Zn : (a + (n – a)) mod n = ((n – a) + a) mod n = - Nghịch đảo a Zn phép nhân modulo a-1 với a Zn : (a * a-1) mod n = (a-1 * a) mod n = - Có tính giao hoán với a, b Zn ta có: (a+b) mod n = (b+a) mod n (a * b) mod n = b * a mod n - Có tính kết hợp với a, b, c Zn ta có: [(a+b) * c] mod n = [(a * c) + (b * c)] mod n [a * (b+c)] mod n = [(a * b) + (b * c)] mod n 1.2 Hàm Φ – Euler (Euler’s totient function) Định nghĩa 1.2: Cho n số nguyên dương, hàm Φ-Euler n, ký hiệu Φ(n), số số nguyên dương nhỏ n nguyên tố với n Công thức tính tổng quát hàm Φ-Euler sau: Giả sử n phân tích thành thừa số nguyên tố: n piei , với pi số nguyên tố, ei 0, ≤ i ≤ n Thì: (n) piei 1( pi 1) * Định lý 1.1 ( Định lý Euler) Cho n số nguyên dương khác a số nguyên, a nguyên tố với n Nghĩa gcd(a,n) = ta có : aф(n) (mod n) * Định lý 1.2 ( Định lý Fermat ) Cho p số nguyên tố a số nguyên không chia hết cho p Nghĩa gcd(a,p) = ta có : a(p-1) (mod p) * Định nghĩa 1.3 : Một trường hữu hạn trường F chứa số hữu hạn phần tử Bậc nhóm F số phần tử tồn F * Định lý 1.4 : Cho Fq trường hữu hạn, phần tử g Fq, định nghĩa bậc (order) g số nguyên dương m nhỏ cho : gm (mod q), ký hiệu là: Ord q(g) = m * Định nghĩa 1.5: Số g gọi phần tử sinh trường hữu hạn Fq, g có bậc q – ; Nói cách khác : g phần tử sinh ( ), lũy thừa g sinh tất phần tử khác Fq* Nghĩa là: {gx : ≤ x ≤ q – 2} = Fq* * Định lý 1.3: Mỗi trường hữu hạn có phân tử sinh Nếu g phần tử sinh Fq* gj phần tử sinh gcd(j, q – 1) = Vậy có tổng cộng Φ(q – 1) phần tử sinh khác Fq* (gcd: greatest common divisor) 1.3 Tìm phần tử nghịch đảo Thuật toán tìm phần tử nghịch đảo gọi thuật toán Euclide mở rộng Cho phép tính phần tử nghịch đảo số theo modulo, sử dụng số hệ mật mã khóa công khai trình tạo khóa giải mã * Thuật toán Euclide Để tìm UCLN a b ta tiến hành sau: - Lấy số lớn (giả sử b) chia cho số nhỏ a phần dư r (0 ≤ r < a) - Tiếp tục coi a số lớn, r số nhỏ lặp lại trình số dư phép chia r = Số chia phép chia cuối UCLN (a,b ) Ví dụ: Tìm UCLN a=180, a=72 180=2*72+36 72=2*36+0 UCLN(180,72)=36 Hay 36=180-2*72 Tổng quát: Nếu d=(a,b) tồn m, n số nguyên cho d=m*a+n*b 1.4 Thuật toán lũy thừa nhanh Thuật toán lũy thừa nhanh modulo N (y = xe mod N), sử dụng nhiều hệ mật mã khóa công khai Tốc độ thực trình mã hóa giải mã hệ mật mã, phụ thuộc nhiều vào phép tính với toán hạng số nguyên cực lớn Vì đòi hỏi cần phải có thuật toán thực phép tính lũy thừa modulo nhanh tốt Trong phần trình bày chi tiết thuật toán chi phí thực thuật toán thường sử dụng nay, gọi : “ Thuật toán lũy thừa nhanh” Thuật toán này, dựa vào biểu diễn nhị phân số mũ để thực phép tính lũy thừa modulo số nguyên, với vài phép tính nhân phép tính bình phương Thuật toán có tham số đầu vào là: Số M, số N biểu diễn k 1 nhị phân số mũ: e e(k 1)e(k 2) e(1)e(0) i 0 ei 2i ei= {0,1} k 1 i ei*2 k 1 e 2i Kết phép tính đầu là: C M M i 0 i i 0 M mod N e Đầu tiên gán biến C = 1, sau duyện giá trị bit, thông qua biểu diễn nhị phân số mũ, phía bên trái sang phía bên phải Tại vòng lặp thứ i, thực phép tính bình phương kết (Ci = Ci-1 * Ci-1 mod N) Nếu giá trị bit vị trí xét ei = kết vừa tính nhân với M modulo N, (C = C* M Mod N) Khi kết thúc lần lặp thứ k ta có kết C = Me mod N Ví dụ: Tính 12554 mod 1024 (M = 125, e = 54, n = 1024) Biểu diễn nhị phân (54)10 = (110110)2 Chỉ thực bước tính sau: B1: e5 = C = (1 * 1) *125 = 125 B2: e4 = C = (125 * 125) *125 mod 1024 = 357 B3: e3 = C = (357 * 357) mod 1024 = 473 B4: e2 = C = (473 * 473) * 125 mod 1024 = 685 B5: e1 = C = (685 * 685) * 125 mod 1024 = 453 B6: e0 = C = (453 * 453) mod 1024 = 409 CHƯƠNG TỔNG QUAN VỀ MÃ HÓA 2.1 Giới thiệu chung mã hóa Mọi người biết muốn giữ cho riêng cần phải che giấu Để gửi thư riêng cho người bạn, phải cho vào bao thư gián lại Nhưng thư quan trọng mà không muốn cho khác người nhận biết nội dung thư Chúng ta chắn đường thư tới tay người nhận, thư có an toàn hay không Từ nảy sinh vấn đề bảo vệ thông tin Từ xa xưa, người ta biết áp dụng biện pháp bảo vệ thông tin thô sơ giấu thông tin, cho người canh gác,…Khi trí tuệ sáng tạo người phát triển áp dụng biện pháp thô sơ Ngày với bùng nổ công nghệ thông tin đặc biệt Internet Email, vấn đề bảo vệ thông tin trở nên quan trọng định sống công ty, đảm bảo an ninh quốc phòng cho quốc gia,… Có hai phương pháp để đạt mục tiêu này: Kiểm soát lối vào mã hóa liệu Phương pháp kiểm soát lối vào nhằm ngăn cản xâm nhập trái phép vào hệ thống nhờ xây dựng kiểm soát thích hợp, ví dụ hệ sử dụng mật khẩu, mà người phép sử dụng qua để thâm nhập vào hệ thống Hệ có số nhược điểm Chẳng hạn liệu lưu trữ bên cần bảo vệ việc dường có bảo vệ túy vật lý đạt Như vậy, điều dẫn đến an toàn hệ thống Một nhược điểm phương pháp không thực tiễn ta quan hệ với hệ số lớn Sự truy nhập thông tin kiểm soát phương pháp khác: mã hóa liệu Điều có nghĩa thông tin lưu trữ hệ dạng mã hóa Khi đó, người truy nhập trái phép dù có lấy thông tin, lại dạng mã hóa, thông tin vô nghĩa họ cách giải Mật mã học nghiên cứu hệ thống dùng cho việc truyền thông bí mật, gồm có hai lĩnh vực nghiên cứu: Mã hóa (Cryptography) – thiết kế hệ truyền thông bí mật, Giải mã (Cryptanalysis) – nghiên cứu phương pháp để giải mã hệ truyền thông bí mật Mật mã học trước chủ yếu áp dụng hệ truyền thông quân ngoại giao, áp dụng có ý nghĩa thực tế ngày xuất tất lĩnh vực xã hội Hai ví dụ minh chứng hệ thống tập tin máy tính (trong người sử dụng lưu trữ riêng tập tin họ) hệ chuyển ngân điện tử Một người sử dụng máy tính muốn cất giữ riêng tập tin máy tính ta cất giấy tờ tủ hồ sơ, ngân hàng muốn việc chuyển ngân điện tử an toàn chuyển ngân xe bọc thép 2.1.1 Mục tiêu an toàn bảo mật thông tin Bên cạnh việc làm để che dấu nội dung thông tin mã hoá phải đảm bảo mục tiêu sau: Tính bí mật (Confjdentialy): Đảm bảo liệu truyền cách an toàn bị lộ thông tin có cố tình muốn có nội dung liệu gốc ban đầu Chỉ người phép có khả đọc nội dung thông tin ban đầu Tính xác thực (Authentication): Giúp cho người nhận liệu xác định chắn liệu mà họ nhận liệu gốc ban đầu Kẻ giả mạo có khả để giả dạng người khác hay nói cách khác mạo danh để gửi liệu Người nhận có khả kiểm tra nguồn gốc thông tin mà họ nhận Tính toàn vẹn (Integrity): Giúp cho người nhận liệu kiểm tra liệu không bị thay đổi trình truyền Kẻ giả mạo có khả thay liệu ban đầu liệu giả mạo 10 Với K=( p, α, a, β) số ngẫu nhiên bí mật k€ Zp-1, ta xác định: ek(x,k)=(y1,y2) Trong y1=αk (mod p), y1= xβk mod p Với y1,y2 € Z*p ta xác định: d k(y1,y2) = y2 (y1a)-1 mod p Sau mô tả sơ lược cách làm việc hệ mật Elgamal Bản rõ x “che dấu ” cách nhân với βk để tạo y2 Giá trị αk gửi phần mã Bob người biết số mũ bí mật a tính βk trừ αk Sau “tháo mặt nạ” cách chia y2 cho βk để thu x - Ví dụ: cho p= 2579, α= 2, a= 765 đó: β=2765 mod 2579= 949 Bây ta giả sử Alice muốn gửi thông báo x= 1299 tới Bob Giả sử số ngẫu nhiên k mà cô chọn k= 853 Sau cô ta tính: y1=2853mod 2579= 435 y2=1299 x 949853 mod 2579= 2396 Khi Bob nhận mã: y= (435, 2396) Anh ta tính: x= 2396 x (435765)-1 mod 2579= 1299 Đó rõ mà Alice mã hóa 52 Đánh giá độ phức tạp thuật toán Bài toán Logarithm rời rạc Zp đối tượng nhiều công trình nghiên cứu xem toán khó p chọn cẩn thận Cụ thể thuật toán thời gian đa thức cho toán Logarithm rời rạc Để gây khó khăn cho phương pháp công biết p phải có 150 chữ số (p-1) phải có thừa số nguyên tố lớn Lợi toán Logarithm rời rạc xây dựng hệ mật khó tìm Logarithm rời rạc Song toán ngược tính toán hiệu theo thuật toán bình phương nhân Nói cách khác lũy thừa theo modulo p hàm chiều với số nguyên tố p thích hợp 53 CHƯƠNG GIỚI THIỆU VỀ NGÔN NGỮ C# VÀ MỘT SỐ GIAO DIỆN CHƯƠNG TRÌNH 4.1 Lịch sử ngôn ngữ C# Khởi đầu với tên gọi Cool vào khoảng năm 2000, C# tạo vô số tranh luận lớn NET Từ huyền thoại, đồn đại ước đoán, C# ngày thực trở thành ngôn ngữ đơn giản tuyệt vời.C# ngôn ngữ hoàn toàn hướng đối tượng C# xây dựng kiến trúc Anders Hejlsberg, người viết nên trình biên dịch Java có nhiều đóng góp cho ngôn ngữ Delphi, Java C# chịu ảnh hưởng ngôn ngữ Smalltalk, Java ngôn ngữ khác Thiết kế chu đáo C# cho phép bạn với tư cách người phát triển tập trung vào tác vụ xây dựng ứng dụng theo nhu cầu công việc vào kỹ thuật lắt léo ngôn ngữ lập trình 4.2 Những mạnh ngôn ngữ C# Nhiều người tin không cần thiết có ngôn ngữ lập trình Java, C++, Perl, Microsoft Visual Basic, ngôn ngữ khác nghĩ cung cấp tất chức cần thiết Ngôn ngữ C# ngôn ngữ dẫn xuất từ C C++, tạo từ tảng phát triển Microsoft bắt đầu với công việc C C++ thêm vào đặc tính để làm cho ngôn ngữ dễ sử dụng Trong số đặc tính giống với đặc tính có ngôn ngữ Java Không dừng lại đó, Microsoft đưa số mục đích xây dựng ngôn ngữ Những mục đích được tóm tắt sau: C# ngôn ngữ đơn giản C# loại bỏ vài phức tạp rối rắm ngôn ngữ Java C++, bao gồm việc loại bỏ macro, template, đa kế thừa, lớp sở ảo (virtual base class) Chúng nguyên nhân gây nhầm lẫn hay dẫn đến vấn đề cho người phát triển C++ 54 Ngôn ngữ C# đơn giản dựa tảng C C++ Nếu thân thiện với C C++ chí Java, thấy C# giống diện mạo, cú pháp, biểu thức, toán tử chức khác lấy trực tiếp từ ngôn ngữ C C++, cải tiến để làm cho ngôn ngữ đơn giản Một vài cải tiến loại bỏ dư thừa, thêm vào cú pháp thay đổi Trong C#, chúng thay với toán tử gọi (dot) Đối với người học điều việc cải tiến khác làm bớt nhầm lẫn đơn giản C# ngôn ngữ đại Điều làm cho ngôn ngữ đại? Những đặc tính xử lý ngoại lệ, thu gom nhớ tự động, kiểu liệu mở rộng, bảo mật mã nguồn đặc tính mong đợi ngôn ngữ đại C# chứa tất đặc tính Nếu người học lập trình cảm thấy đặc tính phức tạp khó hiểu Con trỏ tích hợp vào ngôn ngữ C++ Chúng nguyên nhân gây rắc rối ngôn ngữ C# loại bỏ phức tạp rắc rối phát sinh trỏ.Trong C#, thu gom nhớ tự động kiểu liệu an toàn tích hợp vào ngôn ngữ, loại bỏ vấn đề rắc rối C++ C# ngôn ngữ hướng đối tượng Những đặc điểm ngôn ngữ hướng đối tượng (Object-oriented language) đóng gói (encapsulation), kế thừa (inheritance), đa hình (polymorphism) C# hỗ trợ tất đặc tính C# ngôn ngữ mạnh mẽ mềm dẻo Như đề cập trước, với ngôn ngữ C# bị giới hạn thân trí tưởng tượng Ngôn ngữ không đặt ràng buộc lên việc làm C# sử dụng cho nhiều dự án khác tạo ứng dụng xử lý văn bản, ứng dụng đồ họa, tính, hay trình biên dịch cho ngôn ngữ khác 55 C# ngôn ngữ từ khóa C# ngôn ngữ sử dụng giới hạn từ khóa Phần lớn từ khóa sử dụng để mô tả thông tin Chúng ta nghĩ ngôn ngữ có nhiều từ khóa mạnh Điều thật, trường hợp ngôn ngữ C#, tìm thấy ngôn ngữ sử dụng để làm nhiệm vụ C# ngôn ngữ hướng module Mã nguồn C# viết phần gọi lớp, lớp chứa phương thức thành viên Những lớp phương thức sử dụng lại ứng dụng hay chương trình khác Bằng cách truyền mẫu thông tin đến lớp hay phương thức tạo mã nguồn dùng lại có hiệu C# ngôn ngữ phổ biến C# ngôn ngữ lập trình Nhưng ngôn ngữ có số lý để trở thành ngôn ngữ phổ biến Một lý Microsoft cam kết NET Microsoft muốn ngôn ngữ C# trở nên phổ biến Mặc dù công ty làm sản phẩm trở nên phổ biến, hỗ trợ Cách không lâu, Microsoft gặp thất bại hệ điều hành Microsoft Bob Mặc dù Microsoft muốn Bob trở nên phổ biến thất bại C# thay tốt để đem đến thành công so với Bob Thật người công ty Microsoft sử dụng Bob công việc ngày họ Tuy nhên,với C# khác, sử dụng Microsoft Nhiều sản phẩm công ty chuyển đổi viết lại C# Bằng cách sử dụng ngôn ngữ Microsoft xác nhận khả C# cần thiết cho người lập trình 56 4.3 Các bước chuẩn bị cho chương trình Thông thường, việc phát triển phần mềm, người phát triển phải tuân thủ theo quy trình phát triển phần mềm cách nghiêm ngặt quy trình chuẩn hóa Tuy nhiên phạm vi tìm hiểu ngôn ngữ viết chương trình nhỏ không đòi hỏi khắt khe việc thực theo quy trình Nhưng để giải vấn đề ta cần phải thực theo bước sau Đầu tiên phải xác định vấn đề cần giải Nếu rõ vấn đề tìm phương pháp giải Sau xác định vấn đề, nghĩ kế hoạch để thực Sau có kế hoạch, thực thi kế hoạch Sau kế hoạch thực thi, ta phải kiểm tra lại kết để xem vấn đề giải xong chưa Logic thường áp dụng nhiều lĩnh vực khác nhau, có lập trình Khi tạo chương trình C# hay ngôn ngữ nào, nên theo bước sau: Xác định mục tiêu chương trình Xác định phương pháp giải vấn đề Tạo chương trình để giải vấn đề Thực thi chương trình để xem kết C# ngôn ngữ đại, C# có đặc tính xử lý ngoại lệ, thu gom nhớ động, kiểu liệu mở rộng, bảo mật mã nguồn đặc tính mong đợi ngôn ngữ đại Với đặc điểm C# em định chọn ngôn ngữ C# để thực đề tài 57 4.4 Một số giao diện 4.4.1 Giao diện Hình 4.4.1 Giao diện 58 4.4.2 Giao diện chương trình nhập khóa cho thuật toán RSA Hình 4.4.2 Giao diện chương trình nhập khóa cho thuật toán RSA 59 4.4.3 Giao diện chương trình thuật toán RSA Hình 4.4.3 Giao diện chương trình thuật toán RSA 60 4.4.4 Giao diện chương trình chữ ký (phần ký văn bản) Hình 4.4.4 Giao diện chương trình chữ ký (phần ký văn bản) 61 4.4.5 Giao diện chương trình chữ ký (phần ký kiểm tra chữ ký) Hình 4.4.5 Giao diện chương trình chữ ký (phần ký kiểm tra chữ ký) 62 KẾT LUẬN Thời gian vừa qua thời gian cho phấn đấu học tập tự giác, nghiên cứu học hỏi thêm kiến thức ôn lại kiến thức cũ Bản thân em nhận thấy có nhiều cố gắng việc tìm hiểu xây dựng đề tài Đề tài phần đáp ứng yêu cầu bảo mật liệu nói chung mã hoá hệ mật mã riêng Tuy kinh nghiệm thân yếu, hạn chế kiến chuyên môn thời gian hạn chế nên đề tài nhiều điều chưa làm Những điều làm Tìm hiểu số thuật toán mã hoá thông tin số hệ mật mã có thuật toán mã hóa phức tạp thuật toán RSA ứng dụng thuật toán RSA chữ ký điện tử Xây dựng thành công chương trình mã hóa giải mã với thuật toán RSA ứng dụng thuật toán RSA trog chữ ký điện tử Quá trình mã hóa giải mã thực không gian mã unicode nên mã hoá tiếng Việt, kí tự đặc biệt, nhiều ngôn ngữ khác Những điều chưa làm Tuy có nhiều cố gắng hạn chế thời gian kiến thức chuyện môn kinh nghiệm thực tế nên đề tài số điều chưa làm như: thuật toán RSA chưa đủ linh hoạt cho người sử dụng tuỳ chọn, ứng dụng chữ ký chưa hoàn thiện Vì em mong đóng góp ý kiến thầy cô 63 Một lần em xin chân thành cảm ơn cô giáo Nguyễn Hiền Trinh, người tận tình bảo, hướng dẫn giúp đỡ em nhiều suốt trình làm đề tài Em xin cảm ơn thầy, cô kiên nhẫn, tận tình dạy dỗ em suốt năm học vừa qua Em xin chân thành cảm ơn! 64 TÀI LIỆU THAM KHẢO Nguyễn chí công, 2004, Giáo trình an toàn bảo mật hệ thống thông [1] tin [2] Nguyễn Đăng Dũng, 2006, Lý thuyết mật mã [3] Báck khoa toàn thư Wikipedia http://www.wikipedia.org [4] Network programming in NET with C# and Visual Basic.NET- Fiach Reid – Elsevier Digital Press [5] Programming Microsoft Windows with C# - Charles Petzold – Microsoft Press © 2002 65 PHỤ LỤC Hình 1.1 Kết minh hoạ phép cộng với modulo n=5… Hình 1.2 Kết minh họa phép nhân modulo n=5…………………………… Hình 2.2.3 Quy trình mã hoá liệu……………………………………………12 Hình 2.2.4 Một hệ thống mật mã đối xứng…………………………………… 13 Hình 2.2.5 Một hệ thống mật mã bất đối xứng………………………………….14 Hình 3.1 Mã hóa công khai…………………………………………………… 31 Hình 3.3.1 Sơ đồ hoạt động thuật toán RSA……………………………… 36 Hình 3.3.3.3 Sơ đồ trình thực giải thuật RSA…………………………40 Hình 4.4.1 Giao diện chính…………………………………………………… 58 Hình 4.4.2 Giao diện chương trình nhập khóa cho thuật toán RSA………….…59 Hình 4.4.3 Giao diện chương trình thuật toán RSA…….………………………60 Hình 4.4.4 Giao diện chương trình chữ ký (phần ký văn bản)……………….…61 Hình 4.4.5 Giao diện chương trình chữ ký (phần kiểm tra chữ ký)…………….62 66