Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
702,91 KB
Nội dung
ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC KHOA CÔNG NGHỆ THÔNG TIN TIỂU LUẬN MÔN C C Ơ Ơ S S Ở Ở T T O O Á Á N N T T R R O O N N G G T T I I N N H H Ọ Ọ C C Đề tài: M M Ã Ã H H Ó Ó A A T T H H Ô Ô N N G G T T I I N N – – H H Ệ Ệ M M Ã Ã H H Ó Ó A A C C Ô Ô N N G G K K H H A A I I R R S S A A ( ( Rivest - Shamir - Adleman) GIÁO VIÊN HƯỚNG DẪN: TS. TRƯƠNG CÔNG TUẤN HỌC VIÊN THỰC HIỆN: ĐOÀN VĂM CỰ THÁI QUANG HOÀNG HOÀNG HỮU CHIẾN HOÀNG TUẤN HƯNG. ĐẶNG VĂN VINH NGÀNH HỌC: Khoa học máy tính KHÓA HỌC: 2011-2013 Huế, tháng 03/2012 ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC KHOA CÔNG NGHỆ THÔNG TIN TIỂU LUẬN MÔN C C Ơ Ơ S S Ở Ở T T O O Á Á N N T T R R O O N N G G T T I I N N H H Ọ Ọ C C Đề tài: M M Ã Ã H H Ó Ó A A T T H H Ô Ô N N G G T T I I N N – – H H Ệ Ệ M M Ã Ã H H Ó Ó A A C C Ô Ô N N G G K K H H A A I I R R S S A A ( ( Rivest - Shamir - Adleman) GIÁO VIÊN HƯỚNG DẪN: TS. TRƯƠNG CÔNG TUẤN HỌC VIÊN THỰC HIỆN: ĐOÀN VĂM CỰ THÁI QUANG HOÀNG HOÀNG HỮU CHIẾN HOÀNG TUẤN HƯNG. ĐẶNG VĂN VINH NGÀNH HỌC: Khoa học máy tính KHÓA HỌC: 2011-2013 Huế, tháng 03/2012 MỤC LỤC Trang MỤC LỤC 3 LỜI NÓI ĐẦU 4 NỘI DUNG 5 I. Hệ mã hóa công khai 5 1. Phân biệt mã hóa bí mật và mã hóa công khai: 5 a. Mã hóa bí mật: 5 b. Mã hóa công khai: 5 2. Lý thuyết toán học: . 6 a. Số nguyên tố (prime): 6 b. Khái niệm nguyên tố cùng nhau (relatively prime or coprime): 6 c. Khái niệm modulo: 6 d. Phi – Hàm EULER 6 e. Số nghịch đảo Modulo. 7 f. Giải bài toán c=b e mod n với số lớn: 8 II. Hệ mã hóa RSA: 9 1. Giới thiệu 9 2. Hệ mã hóa RSA: 9 3. Cài đặt thuật toán RSA : 12 4. Độ an toàn của hệ RSA 12 KẾT LUẬN 14 TÀI LIỆU THAM KHẢO 15 LỜI NÓI ĐẦU Trong mọi lĩnh vực kinh tế, chính trị, xã hội, quân sự… luôn có nhu cầu trao đổi thông tin giữa các cá nhân, tổ chức, hoặc giữa các quốc gia với nhau. Ngày nay, với sự phát triển của công nghệ thông tin đặc biệt là mạng internet thì việc truyền tải thông tin đã dể dàng và nhanh chóng hơn. Và vấn đề đặt ra là tính bảo mật trong quá trình truyền tải thông tin, đặc biệt quan trọng đối với những thông tin liên quan đến chính trị, quân sự, hợp đồng kinh tế… Vì vậy nghành khoa học nghiên cứu về mã hóa thông tin được phát triển. Việc mã hóa là làm cho thông tin biến sang một dạng khác khi đó chỉ có bên gửi và bên nhận mới đọc được, còn người ngoài dù nhận được thông tin nhưng cũng không thể hiểu được nội dung. Qua quá trình học tập môn Cơ Sở Toán và một số tài liệu liên quan đến mã hóa thông tin, chúng em được biết có rất nhiều phương pháp để mã hóa thông tin. Qua đó chúng em chọn phương pháp Mã hóa thông tin – Hệ khóa công khai RSA (Rivest, Shamir và Adleman) để làm tiểu luận của nhóm. Xin cám ơn thầy giáo TS Trương Công Tuấn đã hướng dẫn và truyền đạt kiến thức cho chúng em. Tuy đã rất cố gắng song bài viết không tránh khỏi những thiếu sót, chúng em rất mong nhận được sự đóng góp ý kiến của các thầy cô giáo và các anh chị học viên lớp cao học Khoa học máy tính để bài viết được hoàn thiện hơn. Chúng em xin chân thành cảm ơn! NỘI DUNG I. Hệ mã hóa công khai 1. Phân biệt mã hóa bí mật và mã hóa công khai: a. Mã hóa bí mật: Thông tin sẻ được mã hóa theo một phương pháp ứng với một key, key này dùng để lập mã và đồng thời cũng để giải mã. Vì vậy key phải được giữ bí mật, chỉ có người lập mã và người nhận biết được, nếu key bị lộ thì người ngoài sẽ dễ dàng giải mã và đọc được thông tin. Hình 1:Mã hóa bí mật b. Mã hóa công khai: Sử dụng khóa mã hóa gọi là khóa công khai (public key), khóa giải mã được gọi là khóa riêng (private key) Public key: Được sử dụng để mã hoá những thông tin mà ta muốn chia sẽ với bất cứ ai. Chính vì vậy ta có thể tự do phân phát nó cho bất cứ ai mà ta cần chia sẽ thông tin ở dạng mã hoá. Privite key: Đúng như cái tên, Key này thuộc sở hữu riêng tư của bạn(ứng với public key) và nó được sử dụng để giải mã thông tin. Chỉ mình bạn sở hữu nó, Key này không được phép và không nên phân phát cho bất cứ ai. Nghĩa là mỗi người sẽ giữ 2 key: 1 dùng để mã hóa key này được công bố rộng rãi, 1 dùng để giải mã key này giữ kín. Khi ai đó có nhu cầu trao đổi thông tin với bạn, sẽ dùng public key mà bạn công bố để mã hóa thông tin và gửi cho bạn, khi nhận được bạn dùng private key để giải mã. Những người khác dù có nhận được thông tin nhưng không biết được private key thì cũng không thể giải mã và đọc được thông tin. Hình 2: Mô hình mã hóa công khai Đặc trưng nổi bật của hệ mã hóa công khai là cả khóa công khai (public key) và bản tin mã hóa (ciphertext) đều có thể gửi đi trên một kênh thông tin không an toàn 2. Lý thuyết toán học: Trước hết, chúng ta sẽ nhắc lại những khái niệm toán học cơ bản cần thiết cho việc hiểu RSA. a. Số nguyên tố (prime): Số nguyên tố là những số nguyên chỉ chia hết cho 1 và cho chính nó. Ví dụ : 2, 3, 5, 7, 11, 13, 17, 23 b. Khái niệm nguyên tố cùng nhau (relatively prime or coprime): Với hai số nguyên dương a và b. Ta ký hiệu GCD (a,b) : Ước chung lớn nhất của a và b (Greatest Common Divisor). Để đơn giản ta ký hiệu GCD(a,b) =(a,b). Ví dụ: (4,6)=2 và (5,6)=1 Hai số a và b gọi là nguyên tố cùng nhau khi (a,b)=1. Ví dụ : 9 và 10 nguyên tố cùng nhau vì (9,10)=1 c. Khái niệm modulo: Với m là một số nguyên dương .Ta nói hai số nguyên a va b là đồng dư với nhau modulo m nếu m chia hết hiệu a-b ( Viết là m|(a-b) ), ký hiệu a ≡ b ( mod m) Như vậy a ≡ b (mod m ) khi và chỉ khi tồn tại số nguyên k sao cho a = b +km Ví dụ : 13 ≡ 3 ( mod 10 ) vì 13= 3 + 1*10 d. Phi – Hàm EULER Định nghĩa: Phi – Hàm Euler Φ(n) có giá trị tại n bằng số các số không vượt quá n và nguyên tố cùng nhau với n. Ví dụ : Φ(5) = 4 , Φ(6) = 2 , Φ(10) = 4. e. Số nghịch đảo Modulo. Số nghịch đảo của 10 là 1/10, bởi vì 10 × 1/10=1. Trong số học modulo thì vấn đề nghịch đảo phức tạp hơn. 4 × x ≡ 1 mod 7 phương trình trên tương đương với tìm x và k sao cho 4x = 7k+1 với điều kiện là cả x và k đều là số nguyên. Vấn đề chung đặt ra tại đây là tìm x sao cho 1 = (a × x) mod n có thể viết lại như sau: a-1 ≡ x(mod n ) Sự thu nhỏ vấn đề Modulo là rất khó giải quyết. Đôi khi nó là một vấn đề, nhưng đôi khi lại không phải vậy. Ví dụ : nghịch đảo của 5 modulo 14 là 3 bởi 5 × 3 = 15 ≡ 1 (mod 14). Trong trường hợp chung a-1 ≡ x (mod n) chỉ có duy nhất một giải pháp nếu a và n là một cặp số nguyên tố. Nếu a và n không phải là cặp số nguyên tố, thì a-1 ≡ x (mod n) không có giải pháp nào. Thuật toán Euclid có thể tính ra được số nghịch đảo của số Modulo n, đôi khi thuật toán này còn gọi là thuật toán Euclid mở rộng. Giải thuật Euclid mở rộng: Giải thuật sau chỉ thực hiện với các số nguyên m>a>0, biểu diễn bằng giã mã: Procedure Euclid_Extended (a,m) int, y0=0,y1:=1; While a>0 do { r:= m mod a if r=0 then Break q:= m div a y:= y0-y1*q m:=a a:=r y0:=y1 y1:=y } If a>1 Then Return "A không khả nghịch theo mođun m" else Return " Nghịch đảo modulo m của a là y" Ví dụ Tìm số nghịch đảo (nếu có) của 30 theo môđun 101 Bước i m a r q y0 y1 y 0 101 30 11 3 0 1 -3 1 30 11 8 2 1 -3 7 2 11 8 3 1 -3 7 -10 3 8 3 2 2 7 -10 27 4 3 2 1 1 -10 27 -37 5 2 1 0 . . . . Kết quả tính toán trong bảng cho ta − 37. Lấy số đối của 37 theo mođun 101 được 64. Vậy . f. Giải bài toán c=b e mod n với số lớn: Trong đó e là số mũ lớn, n là số chia để lấy dư Ví dụ: Tính 4 13 (mod 497) Cách tính đơn thuần: 413=67108864 67108864 mod 497 =445 Nếu b và e lớn thì b e sẽ rất lớn và tính b e mod n sẽ mất nhiều thời gian và tốn bộ nhớ. Có một số cách để giải quyết vấn đề đó. Trong nội dung của tiểu luận chúng tôi sử dụng giải pháp như sau: c ≡ (a.b)(mod n) => ((a (mod n)).(b (mod n))) (mod n) Áp dụng công thức trên ta có thuật toán Ví dụ: Tính 4 13 (mod 497) c=1 , e’=0 c ≡ (b.c) (mod m) e’=1 c=(4*1)mod 497=4 mod 497 = 4 e’=2 c=(4*4)mod 497=16 mod 497 = 16 e’=3 c=(4*16)mod 497 = 64 mod 497 = 64 … …. … …. e’=12 c=(4*121)mod 497 = 484 mod 497 = 484 e’=13 c=(4*484)mod 497 = 1936 mod 497 = 445 Input: b,e,m Output: c≡ b e (mod m) 1/ Gán c=1, e’=0 2/ e’=e’+1 3/ c ≡ (b.c) (mod m) 4/ Nếu e’<e quay lại bước 2. Ngược lại, c là kết quả cần tìm. II. Hệ mã hóa RSA: 1. Giới thiệu RSA được Rivest, Shamir và Adleman phát triển, là một thuận toán mật mã hóa khóa công khai. Nó đánh dấu một sự tiến hóa vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công khai. RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn. Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả. Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một thuật toán tương tự. Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm. Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật. RSA là một thí dụ điển hình về một đề tài toán học trừu tượng lại có thể áp dụng thực tiễn vào đời sống thường nhật. Khi nghiên cứu về các số nguyên tố, ít có ai nghĩ rằng khái niệm số nguyên tố lại có thể hữu dụng vào lãnh vực truyền thông. 2. Hệ mã hóa RSA: Hệ mã hóa này dựa trên cơ sở của hai bài toán: - Bài toán Logarith rời rạc - Bài toán phân tích thành thừa số Trong hệ mã hóa RSA các bản rõ, các bản mã và các khóa (public key và private key) là thuộc tập số nguyên ZN ={1,…,N-1}. Trong đó tập ZN với N =pxq là các số nguyên tố khác nhau cùng với phép cộng, phép nhân mođun N tạo ra mođun số học N. Khóa mã hóa EKB là cặp số nguyên (N, KB) và khóa giải mã DkB là cặp số nguyên (N, kB), các số là rất lớn, số N có thể lên tới hàng trăm chữ số Các phương pháp mã hóa và giải mã hóa là rất dễ dàng. Công việc mã hóa là sự biến đổi bản rõ P (Plaintext) thành bản mã C (ciphertext) dựa trên cặp khóa công khai KB và bản rõ P theo công thức sau đây: C = E KB (P) = P KB (mod N) (1) Công việc giải mã là sự biến đổi ngược lại bản mã C thành bản rõ P dựa trên cặp khóa bí mật kB, mođun N theo công thức sau P =D kB (C) =C kB (mod N) (2) Dễ thấy rằng, bản rõ ban đầu cần được biến đổi một cách thích hợp thành bản mã, sau đó để có thể tái tạo lại bản rõ ban đầu từ chính bản mã đó: P =D kB (E KB (P)) (3) Thay thế (1) vào (2) ta có: ( P KB ) kB =P (mod N) (4) Ta thấy N =pxq với p, q là số nguyên tố. Trong toán học đã chứng minh được rằng, nếu N là số nguyên tố thì công thức (4) sẽ có lời giải khi và chỉ khi: KB.kB ≡1 (mod N)(5) Trong đó N =LCM(p-1, q-1 ). (Lest Common Multiple) là bội số chung nhỏ nhất . [...]... tố Với đề tài Mã hóa thông tin – Hệ khóa công khai RSA chúng em đã hoàn thành xây dựng một ứng dụng để Demo để thực hiện việc mã hóa thông tin theo Hệ khóa công khai RSA Tuy nhiên do qũi thời gian hạn hẹp, trình độ còn hạn chế nên không tránh khỏi thiếu xót, rất mong được sự chỉ bảo, góp ý nhiệt tình của thầy và các bạn TÀI LIỆU THAM KHẢO 1 Quyển “Toán học rời rạc ứng dụng trong tin học” Tác giả:... nhau Đối với các thuật toán mã khoá công khai đã khắc phục được vấn đề phân phối khoá, khoá mã hoá có thể công khai và bất kỳ người nào có khoá công khai đều có thể mã hoá bản tin của mình, nhưng chỉ duy nhất người có khoá bí mật mới có thể giải mã được Phương pháp mã hoá công khai sử dụng thuật toán RSA khá chậm chạp do yêu cầu những số nguyên tố lớn để sinh ra khoá công khai và khoá bí mật nhưng mặt... được giải mã 4 Độ an toàn của hệ RSA Một nhận định chung là tất cả các cuộc tấn công giải mã đều mang mục đích không tốt Trong phần độ an toàn của hệ mã hoá RSA sẽ đề cập đến một vài phương thức tấn công điển hình của kẻ địch nhằm giải mã trong thuật toán này Chúng ta xét đến trường hợp khi kẻ địch nào đó biết được modulo N, khoá công khai KB và bản tin mã hoá C, khi đó kẻ địch sẽ tìm ra bản tin gốc... KB-1mod11200=6597 Và ta có khóa công khai là (N,KB)=(11413,3533) khóa bí mật là 6597 Phép lập mã và giải mã là: EKB(P) =PKB (mod N) =P3533 (mod 11413) DkB(C) =CkB (mod N) =C6579 (mod 11413) 3 Cài đặt thuật toán RSA : Chương trình được viết bằng ngôn ngữ lập trình C#, có chức năng mô phỏng lại toàn bộ quá trình mã hóa và giải mã của thuật toán RSA Hiện tại thuật toán chỉ cài đặt mã hóa các ký tự hoa, không... B lựa chọn một khóa công khai KB một cách ngẫu nhiên Khi đó khóa bí mật kB được tính ra bằng công thức (5) Điều này hoàn toàn tính được vì khi B biết được cặp số nguyên tố (p, q) thì sẽ tính được N Chọn p và q Tính N = p xq Tính N Chọn khóa KB Chọn khóa kB Bản rõ P KB kB C = PKB (mod N) Bản mã C P = CkB (mod N) Bản rõ gốc Hình 3: Sơ đồ các bước thực hiện mã hoá theo thuật toán RSA Ví dụ: N=11413=101x113,... trình như sau: B1: Nhập văn bản cần mã hóa vào ô “Văn bản gốc” Ví dụ: CO SO TOAN B2: Chương trình sẽ chuyển đổi văn bản đó thành chuỗi số bằng cách dựa trên số thứ tự của chữ cái đó trong bảng chữ cái CO SO TOAN -> 03152719152720150114 B3: Mã hóa chuỗi số dựa trên Khóa mã và số N 03152719152720150114 -> 64241131545795607113154579471131517289 B4: Giải mã dựa trên Khóa giải 64241131545795607113154579471131517289... hai số nguyên tố là cho thuật toán tăng hiệu quả Phương thức thứ hai: Phương thức tấn công thứ hai vào hệ mã hoá RSA là có thể khởi đầu bằng cách giải quyết trường hợp thích hợp của bài toán logarit rời rạc Trường hợp này kẻ địch đã có trong tay bản mã C và khoá công khai KB tức là có cặp (KB,C) Cả hai phương thức tấn công đều cần một số bước cơ bản, đó là : O(exp ln N ln(ln N ) ), trong đó N là số modulo... tình của thầy và các bạn TÀI LIỆU THAM KHẢO 1 Quyển “Toán học rời rạc ứng dụng trong tin học” Tác giả: Kenneth H.Rosen NXB Thống kê 2 Quyển RSA Tấn công Và Phòng thủ” - Nguyễn Thành Nhân NXB Thanh Niên 3 Giáo trình mã hóa thông tin – Lý thuyết và Ứng dụng – Bùi Doãn Khanh & Nguyễn Đình Thúc & Hoàng Đức Hải 4 Internet ... luận này, chúng em đã hiểu biết thêm kiến thức về sự an toàn của thông tin trên mạng, một số thuật toán và phương pháp mã hoá Để so sánh, đánh giá một thuật toán mã hoá cần dựa vào một số yếu tố cơ bản như độ phức tạp thuật toán, thời gian mã hoá và vấn đề phân phối khoá trong môi trường nhiều người sử dụng Dễ nhận thấy rằng các phương pháp mã hoá cổ điển như phương pháp đổi chỗ và thay thế là đơn giản... kẻ địch sẽ tìm ra bản tin gốc (Plaintext) như thế nào Để làm được điều đó kẻ địch thường tấn vào hệ thống mật mã bằng hai phương thức sau đây: Phương thức thứ nhất : Trước tiên dựa vào phân tích thừa số modulo N Tiếp theo sau chúng sẽ tìm cách tính toán ra hai số nguyên tố p và q, và có khả năng thành công khi đó sẽ tính được λ(N) và khoá bí mật kB Ta thấy N cần phải là tích của hai số nguyên tố, vì . nguyên tố. Với đề tài Mã hóa thông tin – Hệ khóa công khai RSA chúng em đã hoàn thành xây dựng một ứng dụng để Demo để thực hiện việc mã hóa thông tin theo Hệ khóa công khai RSA. Tuy nhiên do. DUNG I. Hệ mã hóa công khai 1. Phân biệt mã hóa bí mật và mã hóa công khai: a. Mã hóa bí mật: Thông tin sẻ được mã hóa theo một phương pháp ứng với một key, key này dùng để lập mã và đồng. để mã hóa thông tin. Qua đó chúng em chọn phương pháp Mã hóa thông tin – Hệ khóa công khai RSA (Rivest, Shamir và Adleman) để làm tiểu luận của nhóm. Xin cám ơn thầy giáo TS Trương Công Tuấn