Chương 1: Tổng quan 1.1 Giới thiệu về an toàn thông tin An toàn thông tin là bảo vệ các đặc tính riêng tư (con昀椀dentialy), toàn vẹn (intergrity) và khả dụng (availabity) của thông tin. - C: (Con昀椀dentialy) bảo vệ tính riêng tư của dữ liệu thông qua các cơ chế chứng thực và mã hóa, ngăn ngừa những người không hợp lệ sẽ không được đọc những thông tin. Giống như các bì thư khi phát lương thưởng được dán chữ Con昀椀dentialy, chúng ta có thể hình dung trong môi trường công nghệ thông tin là một người chưa đăng nhập vào Domain sẽ không được truy cập những dữ liệu chỉ chia sẻ cho các Domain User. - I: (Intergrity) bảo vệ tính toàn vẹn của dữ liệu thông qua các thuật toán RSA, SHA, MD5.
ngăn ngừa attacker thay đổi các thông tin nhạy cảm trong quá trình truyền. - A: (Available) bảo đảm dữ liệu luôn ở trong trạng thái sẵn sằng đáp ứng nhu cầu của người dùng. - Non-Repudiation: Tính không thể chối bỏ, nghĩa là dữ liệu người nào gửi đi thì họ phải có trách nhiệm với các thông tin của mình thông qua các xác nhận nguồn gốc như chữ kí điện tử. Để đảm bảo việc truyền tin an toàn và kiểm tra tính toàn vẹn của thông tin, người ta thường mã hóa thông tin trước khi truyền đi bằng các một sổ các hệ mật như DES, Triple 6 Downloaded by NGUYEN BAY (tailieuso.com) lOMoARcPSD|38594337 Trường đại học Công Nghiệp Hà Nội Nhóm 13 - ATBMTTGVHD: ThS.
Trần Phương Nhung DES (3DES), RC4, AES, RSA, Rabin, Di昀툀e-Hellman, Elgamal,. Qua dự án lần này nhóm sinh viên chúng em đã đi sâu tìm hiểu về xây dựng và phát triển mã hóa giải mã Elgammal , nắm được những kiến thức cơ bản Trong phương pháp mã hóa và giải mã cũng như là các thuật toán cần thiết bằng các ngôn ngữ như: C#, Java, Python, C++.2 Lý do chọn đề tài.1 Vai trò của hệ mật mã - Phải che giấu được nội dung của văn bản rõ (plaintext) - Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trong hệ thống đến người nhận hợp pháp là xác thực - Tổ chức các sơ đồ chữ ký điện tử, đảm bảo k có hiện tượng giả mạo, mạo danh để gửi thông tin lên mạng.2 Khái niệm cơ bản - Bản rõ X: được gọi là bản tin gốc, bản rõ có thể được chia nhỏ có kích thước phù hợp. - Bản mã Y: là bản tin gốc đã được mã hoá. - Mã: là thuật toán mã hoá chuyển bản rõ thành bản mã, thông thường chúng ta cần thuật toán mã hoá mạnh, cho dù kẻ thù biết được thuật toán, nhưng không biết thông tin về khoá thì cũng không tìm được bản rỏ.
7 Downloaded by NGUYEN BAY (tailieuso.com) lOMoARcPSD|38594337 Trường đại học Công Nghiệp Hà Nội Nhóm 13 - ATBMTTGVHD: ThS. Trần Phương Nhung - Khoá K: là thông tin tham số dùng để mã hoá, chỉ có người gửi và người nhận biết. Khoá là độc lập với bản rõ và có độ dài phù hợp với yêu cầu bảo mật. - Mã hoá: là quá trình chuyển bản rõ thành bản mã.
- Giải mã: là quá trình chuyển bản mã thành bản rõ, đây là quá trình ngược lại của mã hoá.3 Các thành phần của hệ mật mã Một hệ mật mã là một hệ bao gồm 5 thành phần (P, C, K, E, D) thoả mãn: ● P (Plaintext): không gian bản rõ, là tập hợp hữu hạn các bản rõ có thể. ● C (Ciphertext): không gian bản mã, là tập hợp những bản mã có thể. ● K (Key): không gian khoá, là tập hợp các khoá có thể. ● E (Encryption): không gian hàm mã hoá, là tập hợp các quy tắc mã hoá có thể.
● D (Decryption): không gian hàm giải mã, là tập hợp các quy tắc giải mã có thể. Đối với mỗi k thuộc K có một quy tắc mã hoá e k: P -> C thuộc E và một quy tắc giải mã tương ứng d k: C -> P thuộc D 8 Downloaded by NGUYEN BAY (tailieuso.com) lOMoARcPSD|38594337 Trường đại học Công Nghiệp Hà Nội Nhóm 13 - ATBMTTGVHD: ThS. Trần Phương Nhung Hình 1.1: Quá trình mã hoá và giải mã thông tin 1.4 Phân loại hệ mật mã - Hệ mật mã đối xứng: hay còn gọi là mật mã khoá bí mật, là những hệ mật dùng chung một khó cả trong quá trình mã hoá và giải mã dữ liệu. Do đó khoá phải giữ bí mật tuyệt đối.
Một số thuật toán nổi tiếng như: DES, Triple DES, RC4, … - Hệ mật mã bất đối xứng (mật mã khoá công khai): dùng một khoá để mã hoá sau đó dùng một khoá khác để giải mã (2 khoá khác nhau). Các khoá này tạo nên từng cặp chuyển đổi ngược nhau và không có khó nào có thể suy được từ khoá nào. Kháo đung để mã hoá có thể công khai, nhưng khoá dùng để giải mã phải giữ bí mật. Một số thuật toán nổi tiếng như: RSA, Elgamal, … 1.3 Giới thiệu về hệ mã Elgamal 1.1 Giới thiệu chung về hệ mã Elgamal - Là một hệ mật mã công khai 9 Downloaded by NGUYEN BAY (tailieuso.com) lOMoARcPSD|38594337 Trường đại học Công Nghiệp Hà Nội Nhóm 13 - ATBMTTGVHD: ThS.
Trần Phương Nhung - Dựa trên bài toán logarithm rời rạc. Tính an toàn của nó phụ thuộc vào độ phức tạp của bài toán logarithm. - Là một biến thể của sơ đồ phân khối khoá Di昀케e- Hellman, được đưa ra năm 1984. - So với hệ mã RSA, hệ mã Elgamal không có nhiều rắc rối về vấn đề quyển sử dụng.2 Mã hoá và giải mã hệ mã Elgamal * Quá trình mã hoá và giải mã Hình 1.2: Sơ đồ quá trình mã hoá và giải mã hệ mã Elgamal - Ban đầu người ta sẽ lựa chọn một số nguyên tố lớn p và 2 số nguyên tố nhỏ hơn p là alpha (phần tử nguyên thuỷ của Z*p) và a (khoá bí mật của người nhận) sau đó tính: beta = alphaa mod p Kpublic(p, alpha, beta), Kprivate(a) 10 Downloaded by NGUYEN BAY (tailieuso.com) lOMoARcPSD|38594337 Trường đại học Công Nghiệp Hà Nội Nhóm 13 - ATBMTTGVHD: ThS.
Trần Phương Nhung - Để mã hoá một thông điệp M thành bản mã C, người gửi chọn số ngẫu nhiên k (1 < k < p – 1) và tính cặp bản mã: o C1 = alphak mod p o C2 = (M * betak) mod p Và gửi bản mã: C = (C1, C2) đi (sau đó k sẽ bị huỷ đi). - Để giải mã thông điệp M đầu tiên ta dùng khoá bí mật a và tính theo công thức: o M = (C2 * (C1a)-1) mod p với (C1a)-1 mod p = (C1(p-1- a)) mod p * Bài toán logarithm rời rạc: - Logarithm rời rạc là sự kết nối của phép tính logarithm trên trường số thực vào các nhóm hữu hạn. Ta nhắc lại rằng với hai số thực x, y và cơ số a > 0, a # 0, nếu a x – y = 0 được gọi là logarithm cơ số a của y ký kiệu: x = logay - Logarithm rời rạc là bài toán khó (chưa biết thuật toán hiệu quả nào). Trong khi bài toán ngược luỹ thừa rời rạc lại không khó (có thể sử dụng thuật toán bình phương và nhân) 1.3 Độ an toàn - Hệ mã Elgamal dựa trên bài toán logarithm rời rạc.
Tính an toàn của nó tuỳ thuộc vào độ phức tạp của bài toán logarithm. - Trong bài toán về hệ mã Elgamal: o p là số nguyên tố, alpha là phần tử nguyên thuỷ của Z*p 11 Downloaded by NGUYEN BAY (tailieuso.com) lOMoARcPSD|38594337 Trường đại học Công Nghiệp Hà Nội Nhóm 13 - ATBMTTGVHD: ThS. Trần Phương Nhung o Bài toán logarithm rời rạc có thể được phát biểu như sau: Tìm một số mũ a duy nhất (1 < x < p – 1) sao cho beta = alphaa mod p, với y thuộc Z*p cho trước. o Bài toán có thể giải được bởi phương pháp vét cạn (tức là duyệt tất cả phần tử a) để tìm a thoả mãn.
Khi đó độ phức tạp là sẽ là O(p). Vấn đề đặt ra là nêu p lớn, rất lớn thì để thực hiện phương pháp này cần thời gian rất lớn -> không khả thi. - Đánh giá độ an toàn của hệ mã Elgamal : o Hệ mã Egamal áp dụng bài toán logarithm rời rạc, chính vì vậy độ an toàn của hệ mã Elgamal là rất lớn vì bài toán logarith rời rạc chưa có phương pháp hiệu quả để giải. o Với một số nguyên tố p đủ lớn thì thuật toán Elgamal không có phương pháp thám mã hiệu quả.4 Ưu và nhược điểm của hệ mã Elgamal - Ưu điểm: o Độ phức tạp của bài toán logarithm rời rạc lớn nên độ an toàn cao.
o Bản mã phụ thuộc vào bản rõ X và giá trị ngẫu nhiên nên từ một bản rõ có thể có nhiều bản mã khác nhau. - Nhược điểm: o Tốc độ chậm (do phải xử lý số nguyên lớn) o Dung lượng bộ nhớ dành cho việc lưu trữ khoá yêu cầu phải lớn. 12 Downloaded by NGUYEN BAY (tailieuso.com) lOMoARcPSD|38594337 Trường đại học Công Nghiệp Hà Nội Nhóm 13 - ATBMTTGVHD: ThS. Trần Phương Nhung o Việc sinh khoá và quản lý khoá cũng khó khăn hơn các hệ mã khác (do sử dụng các số nguyên tố) 1.5 Tính an toàn của hệ mã Elgamal Giả sử C có được bản mã, để giải mã được thì C phải đối mặt với bài toán sau: C phải tìm số a sao cho h ≡ g a (mod p) để có thể dùng phương pháp giải mã như B đã làm; Hoặc C phải tìm số b sao cho y1 ≡ g b (mod p) để có thể tính trực tiếp hb và từ đó tìm được r.
Cả hai cách tiếp cận nói trên đều đòi hỏi C phải giải bài toán logarithm rời rạc, là một bài toán khó, do đó ElGamal là hệ mã khóa tương đối an toàn. 13 Downloaded by NGUYEN BAY (tailieuso.com) lOMoARcPSD|38594337 Trường đại học Công Nghiệp Hà Nội Nhóm 13 - ATBMTTGVHD: ThS. Trần Phương Nhung Chương 2: Kết quả nghiên cứu 2.1 Giới thiệu - Tên đề tài: “Xây dựng chương trình mã hoá và giải mã Elgamal.” - Các bước thực hiện triển khai đề tài bao gồm: o Nghiên cứu nội dung các thuật toán (Kiểm tra số nguyên tố, Euclid tìm ước chung lớn nhất, Bình phương và nhân tính x^n mod m, …) o Thiết kế và cài đặt chương trình demo thuật toán - Hình thức sản phẩm: sản phẩm ứng dụng - Kết quả đạt được: nghiên cứu, cài đặt đề mô thuật toán. - Thành viên xây dựng các chương trình ứng dụng web và ứng dụng desktop trên nền các ngôn ngữ lập trình riêng biệt: Phạm Anh Ngôn ngữ lập trình Tuấn Java Ngôn ngữ lập trình Trần Xuân Vũ C++ Dương Văn Ngôn ngữ lập trình Tùng Python Lê Thiên Tuấn Ngôn ngữ lập trình Vũ C# 14 Downloaded by NGUYEN BAY (tailieuso.com) lOMoARcPSD|38594337 Trường đại học Công Nghiệp Hà Nội Nhóm 13 - ATBMTTGVHD: ThS.