Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
67
Dung lượng
2,08 MB
Nội dung
MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG CƠ SỞ TOÁN HỌC TRONG LÝ THUYẾT MÃ HÓA THÔNG TIN 1.1 Những kiến thức .4 1.1.1 Khái niệm thuật toán 1.1.2 Độ phức tạp thuật toán 1.2 Số nguyên tố 1.3 Thuật toán Euclid .7 1.4 Phép tính đồng dư phương pháp tính đồng dư .10 1.4.1 Phép tính đồng dư 10 1.4.2 Tính toán đồng dư luỹ thừa bậc lớn .11 1.4.3 Định lý trung quốc phần dư 12 1.5 Thuật toán lũy thừa nhanh 15 CHƯƠNG 17 MÃ HÓA VÀ HỆ MÃ HÓA CÔNG KHAI 17 2.1 Giới thiệu chung mã hóa 17 2.2 Mục tiêu an toàn bảo mật thông tin 18 2.3 Một số thuật ngữ khái niệm 19 2.3.1 Khái niệm hệ mật mã 19 2.3.2 Khái niệm mã hoá giải mã .19 2.4 Thuật toán mã hóa đối xứng (Symmetric Algorithms) 20 2.5 Thuật toán mã hóa phi đối xứng(Puclic-key-Algorithms) 21 2.6 Thám mã (Cryptanalyis) 23 2.7 Một số hệ mã cổ điển .25 2.7.1 Mã dịch vòng 25 2.7.2 Mã thay .26 2.7.3 Mã Affine 27 2.7.4 Mã Vigenere .29 2.7.5 Hệ mã Hill 30 2.7.6 Hệ mã Hoán vị 32 2.7.7 Sơ lược thám mã hệ mã cổ điển .33 2.7.8 Nhận xét chung hệ mật mã cổ điển 34 2.8 Hệ mã hoá công khai 34 2.8.1 Giới thiệu 34 2.8.2 Hệ mã Ba Lô (MHK) 37 2.4.3 Hệ mã hóa công khai RSA 39 2.8.4 Hệ mã ELGAMAL 40 CHƯƠNG 42 HỆ MÃ RSA VÀ ỨNG DỤNG CHỮ KÝ ĐIỆN TỬ 42 3.1 Hệ mã hóa-RSA .42 3.1.1 Tư tưởng thuật toán RSA 43 3.1.2 Giải thuật RSA 45 3.2 Chuyển đổi văn rõ .48 3.3 Độ an toàn RSA 49 3.4 Một số vấn đề đặt thực tế 51 3.4.1 Quá trình tạo khóa .51 3.4.2 Tốc độ 52 3.4.3 Phân phối khóa 52 3.5 Các phương pháp công hệ mã RSA 53 3.5.1 Tấn công kiểu duyệt toàn (phương pháp vét cạn) 53 3.5.2 Phương pháp toán học 53 3.5.3 Tấn công dựa thời gian (phương pháp phân tích thời gian) .55 3.5.4 Một số ý dùng hệ mã RSA .56 3.6 Ứng dụng hệ mật mã RSA - Chữ ký điện tử 57 3.6.1 Giới thiệu chữ ký điện tử vấn đề xác nhận 57 3.6.2 Sơ đồ chữ ký RSA .58 3.6.3 Tấn công chữ ký điện tử 60 CHƯƠNG 62 CÀI ĐẶT CHƯƠNG TRÌNH 62 KẾT LUẬN 66 Nhận xét giáo viên: Error! Bookmark not defined 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 Là sinh viên ngành công nghệ thông tin, 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 “NGHIÊN CỨU HỆ MÃ HÓA CÔNG KHAI VÀ CÀI ĐẶT HỆ MÃ RSA ỨNG DỤNG TRONG 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ô: Bùi Thị Thanh Xuân – Bộ môn khoa học 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 TRONG LÝ THUYẾT MÃ HÓA THÔNG TIN 1.1 Những kiến thức 1.1.1 Khái niệm thuật toán Thuật toán qui tắc để, với liệu ban đầu cho, tìm lời giải toán xét khoảng thời gian hữu hạn 1.1.2 Độ phức tạp thuật toán Dĩ nhiên, thời gian làm việc máy tính chạy thuật toán không phụ thuộc vào thuật toán, mà phụ thuộc vào máy tính sử dụng Vì thế, để có tiêu chuẩn chung, ta đo độ phức tạp thuật toán số phép tính phải làm thực thuật toán Khi tiến hành thuật toán, số phép phải thực phụ thuộc vào cỡ toán, tức độ lớn đầu vào Trong ứng dụng thực tiễn, không cần biết xác hàm này, mà cần biết “cỡ” chúng, tức cần có ước lượng đủ tốt chúng Khi làm việc, máy tính thường ghi chữ số đèn “sáng, tắt”: đèn sáng số 1, đèn tắt số Vì thuận tiện dùng hệ đếm số 2, để biểu diễn số, ta cần dùng hai kí hiệu kí hiệu gọi bít Một số nguyên n biểu diễn k chữ số gọi số k-bit Độ phức tạp thuật toán đo số phép tính bit Phép tính bit phép tính logic hay số học thực số bit Để ước lượng độ phức tạp thuật toán, dùng khái niệm bậc olớn Định nghĩa1.1: Giả sử f(n) g(n) hai hàm xác định tập hợp số nguyên dương Chúng ta nói f(n) có bậc O-lớn g(n), viết f(n)=O(g(n)) f=O(g), tồn số C>0 cho với n đủ lớn, hàm f(n) g(n) dương, đồng thời f(n)0 Dễ chứng minh f(n) = O(nd) 2) Nếu f1(n) = O(g(n)), f2(n) = O(g(n)) f1 + f2 = O(g) 3) Nếu f1 = O(g1), f2 = O(g2), f1f2 = O(g1g2) 4) Nếu tồn giới hạn lim n f (n) g ( n) f = O(g) 5) Với số >0, log n = O (ne) Định nghĩa 1.2: Một thuật toán gọi có độ phức tạp đa thức, có thời gian đa thức, số phép tính cần thiết thực thuật toán không vượt O(log d n), n độ lớn đầu vào, d số nguyên dương Nói cách khác, đầu vào số k-bit thời gian thực thuật toán O(kd), tức tương đương với đa thức k Các thuật toán với thời gian O(n ), > 0, gọi thuật toán với độ phức tạp mũ, thời gian mũ Khi giải toán đó, không ta cố gắng tìm thuật toán đó, mà muốn tìm thuật toán tốt Đánh giá độ phức tạp thuật toán cách để phân tích, so sánh tìm thuật toán tối ưu Tuy nhiên, độ phức tạp tiêu để đánh giá thuật toán Có thuật toán, lý thuyết có độ phức tạp cao thuật toán khác, sử dụng lại có kết (gần đúng) nhanh nhiều Điều tuỳ thuộc toán cụ thể, mục tiêu cụ thể, kinh nghiệm người sử dụng Chúng ta cần lưu ý thêm điều sau Mặc dù định nghĩa thuật toán mà đưa chưa phải chặt chẽ, cứng nhắc ứng dụng thực tế! Bởi vậy, cần đến thuật toán xác suất, tức thuật toán phụ thuộc vào hay nhiều tham số ngẫu nhiên Những thuật toán này, nguyên tắc không gọi thuật toán, chúng với xác suất bé, không kết thúc Tuy nhiên, thực nghiệm rằng, thuật toán xác suất thường hữu hiệu thuật toán không xác suất Thậm chí, nhiều trường hợp, có thuật toán xác suất sử dụng Khi làm việc với thuật toán xác suất, ta thường hay phải sử dụng số ngẫu nhiên Khái niệm chọn số ngẫu nhiên cần xác hoá, thường người ta sử dụng máy sản xuất số giả ngẫu nhiên Để hình dung độ phức tạp thuật toán làm việc với số lớn, ta xem bảng sau cho khoảng thời gian cần thiết để phân tích số nguyên n thừa số nguyên tố thuật toán nhanh biết (1 triệu phép tính giây) Số chữ số thập phân Số phép tính bit Thời gian 50 1,4.10 10 3,9 75 9,0.10 12 104 ngày 100 2,3.10 15 74 năm 200 1,2.10 23 3,8.109 năm 300 1,5.10 29 4,9.1015năm 500 1,3.10 39 4,2.1025năm 1.2 Số nguyên tố Số nguyên tố số nguyên lớn 1, không chia hết cho số nguyên dương Số nguyên lớn số nguyên tố gọi hợp số Bài toán xác định số cho trước có phải số nguyên tố hay nhiều ứng dụng thực tiễn Đối với số nhỏ, toán dĩ nhiên khó Tuy nhiên, làm việc với số lớn ta cần phải tìm thuật toán hữu hiệu, nghĩa thực máy tính khoảng thời gian chấp nhận Khi nói đến số lớn ta thường hiểu số nguyên dương có khoảng 100 chữ số thập phân trở lên Để tìm thuật toán xác định nhanh số có phải số nguyên tố hay không ta cần phải hiểu sâu sắc tính chất số nguyên tố Mọi hợp số n có ước nguyên tố nhỏ n Thật vậy, n hợp số nên ta viết n = ab, a b số nguyên với a b n Rõ ràng ta phải có a b không vượt n , giả sử a Ước nguyên tố a đồng thời ước nguyên tố n Từ định lý ta có thuật toán sau để tìm số nguyên tố nhỏ số n cho trước Phương pháp sàng Eratosthenes: Trước tiên ta viết dãy số tự nhiên từ đến n Trong dãy gạch số đi, số nguyên tố Số nguyên tố dãy Tiếp theo ta gạch hết số chia hết cho dãy Số không chia hết cho số số nguyên tố Ta lại gạch hết số dãy chia hết cho Tiếp tục ta gạch hết số chia hết cho số nguyên tố nhỏ n Theo định lý trên, số lại dãy tất số nguyên tố không vượt n Thật vậy, hợp số không vượt n, theo định lý trên, phải có ước nguyên tố nhỏ n , bị gạch khỏi dãy số bước thuật toán Sàng Eratosthenes, mặc ta thuật toán xác định số nguyên tố không vượt số cho trước dùng cho xác định xem số cho có phải số nguyên tố hay không Nguyên nhân thuật toán có độ phức tạp lớn Để kiểm tra n, ta phải thực phép chia cho tất số nguyên tố không vượt n 1.3 Thuật toán Euclid Một thuật toán lâu đời toán học thuật toán Euclid Thuật toán cho phép xác định ước chung lớn hai số nguyên cho trước Khi trình bày thuật toán Euclid ta nhắc lại sơ qua khái niệm đồng dư tính chất ước chung lớn hai số nguyên cho trước Giả sử m số nguyên dương Ta lại nói hai số nguyên a b đồng dư với modulo m m chia hết hiệu a-b (a b(mod m) a b (mod m) tồn số nguyên k cho a = b +km Quan hệ đồng dư quan hệ số học, ta gặp thường xuyên ứng dụng toán học tin học Trong thuật toán Euclid ta dùng quan hệ để diễn đạt ngắn gọn phần dư phép chia Thuật toán Euclid Thuật toán tìm ước chung lớn (UCLN) d hai số nguyên không âm a b (kí hiệu d = (a,b)) Nếu b = 0, in a kết thúc thuật toán Đặt r a mod b, a b, b r, quay bước Ví dụ: d = (24,63) thuật toán Euclid Ta có d = (24,63) = (15,24) = (9,15) = (6,9) = (3,6) = (0,3) = Số phép chia cần thiết để tìm UCLN hai số nguyên dương thuật toán Euclid không vượt lần số chữ số thập phân hai số bé hai số cho Thuật toán Euclid mở rộng cho hai số nguyên không âm v, u tìm (u1,u2,u3) cho (u,v)= u = uu1+vu2 Trong tính toán, ta thêm vào ẩn phụ (v1,v2,v3), (t1,t2,t3) có bước đẳng thức sau đây: ut1 + vt2 = t3, uv3 + vv = v3, uu1 + vu2 = u ed (xuất phát) Đặt (u1,u 2,u3) (1,0,u), (v1,v2,v3) (1,0,v) ed (kiểm tra v3 =0 ?) v3=0, thuật toán kết thúc u ed (chia trừ) đặt q ,và sau đặt v3 (t1,t2,t3) (u1,u2,u3) - q (v1,v2,v3), (u1,u 2,u3) (v1,v2,v3), (v1,v2,v3) (t1,t2,t3) Và quay bước hai Ví dụ: Ta tính UCLN hai số 781 330 (781,330) 781 = 2*330 +121 330 = 2*121+88 121 = 1*88+33 88 = 2*33+11 33 = 1*22+11 22 = 2*11+0 Vì số chia phép chia cuối 11 UCLN(781,330) =11 Phi hàm euler Trong hàm số học, hàm Euler mà ta định nghĩa sau có vai trò quan trọng Định nghĩa: 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 Với n N , số lượng số tự nhiên bé n nguyên tố với n ký hiệu n Ví dụ 5 =4, 6 =2, 7 =6 Rõ ràng, p số nguyên tố số tự nhiên bé số nguyên tố với ta có p p Tổng quát hơn, p số nguyên tố r số tự nhiên p r p r p 1 p r 1 p Có thể chứng minh mã hoá m,n số nguyên tố ta có mn m . n Và để tính số tự nhiên người ta phân tích thừa số nguyên tố áp dụng công thức Ví dụ: 720 2 4.32.5 2 . 32 . 5 2 133 15 1 192 Ta biết việc phân tích số lớn thành thừa số nguyên tố gian nan, việc tính phi hàm số lớn Nếu định lý Fermat bé cho ta công cụ nghiên cứu đồng dư modulo số nguyên tố, phi hàm Euler dùng để xét đồng dư modulo hợp số Trước vào vấn đề ta xét định nghĩa sau: Một thặng dư thu gọn modulo n tập hợp n số nguyên cho phần tử tập hợp nguyên tố với n, hai phần tử đồng dư với modulo n Nói cách khác từ hệ thặng dư đầy đủ modulo nguyên tố, để thành lập hệ thặng dư thu gọn ta giữ lại số nguyên tố với n Ví dụ: Các số 1, 2, 3, 4, 5, thành lập hệ thặng dư modulo Đối với modulo 8, ta lấy 1, 3, 5,7 Định lý mở rộng định lý Fermat bé Nếu r1, r2, …, r n hệ thặng dư thu gọn modulo nguyên tố, a số nguyên dương, (a, n) =1, tập hợp ar1, ar2, …, a r n hệ thặng dư thu gọn modulo n Định lý Euler dùng để tìm nghịch đảo modulo m Chẳng hạn a m số nguyên tố nhau, ta có a a m 1bmod m , tức a m 1 nghịch đảo a mod m Từ suy nghiệm phương trình đồng dư tuyến tính ax = b(mod m), với (a, m)=1 là: x a m 1bmod m 1.4 Phép tính đồng dư phương pháp tính đồng dư 1.4.1 Phép tính đồng dư Có hai cách hiểu đồng dư: Một nhà số học chuyên gia máy tính Các nhà số học nói a bmod m a b sai khác bội m, chuyên gia máy tính bảo a(mod m)=b số tìm phép chia a b cho m Tuy nhiên hai cách hiểu có chất nên ta không ngại khả nhầm lẫn, mà nên lưu ý làm việc đâu nói Trong tài liệu ta dùng cách nói nhà toán học Phép tính đồng dư theo mod m dẫn đến việc tách lập số nguyên thành m lớp, lớp chưa số nguyên đồng dư với theo modulo m Tập lớp ký hiệu Z/mZ chứa m phần tử Mỗi lớp tập Z/mZ có 10 3.5 Các phương pháp công hệ mã RSA Sau phương pháp RSA công bố, có nhiều người tìm phương pháp thử xâm nhập thuật toán, tìm cách giải mã, phân tích thừa số nguyên tố phương pháp khác Cho đến có nhiều phương pháp sử dụng để phá mã RSA Nhưng có phương pháp coi khả thi thường đề cập đến là: - Phương pháp vét cạn - phương pháp phân tích toán học - phương pháp phân tích thời gian 3.5.1 Tấn công kiểu duyệt toàn (phương pháp vét cạn) Ngay thuật toán mật mã điểm yếu thiết kế kẻ công có khả thử tất khóa tìm khóa Đây dạng công đơn giản lên hệ thống mật mã Khóa dài thời gian thực việc tìm kiếm lớn Nếu khóa đủ dài thời gian cho trình thử lớn việc công không thực Do đó, độ dài khóa yếu tố định cho việc chống lại công dạng Nếu khóa có độ dài bit ta có tất n khóa khác Số lượng khóa đặc biệt nhanh n tăng lên Theo định luật Moore, công suất tính toán hệ thống máy tính tăng gấp đôi sau khoảng 18 tháng, tốc độ tăng độ dài khóa sử dụng an toàn Chẳng hạn với khóa 128 bit khối lượng tính toán cần thực (2128) 2128 = 340.282.366.920.938.000.000.000.000.000.000.000.000 Là số lớn, vượt qua tất công suất người gộp lại số tương lai tiên liệu 3.5.2 Phương pháp toán học An toàn RSA dựa độ phức tạp việc phân tích thừa số n số nguyên tố p,q Phân tích n thừa số nguyên tố: phân tích số n thừa số, cho phép người thám mã bẻ gãy hệ mật mã RSA Vì từ thừa số nguyên tố p q phân tích, xác định ф (n) = (p – 1) * (q – 1), từ xác định khóa bí mật d dựa vào khóa công khai e ed mod ф(n) (thuật toán Euclide mở rộng) Vậy 53 tất mã C = Eke(M) giải mã nhanh thành rõ M = Cd mod n Nhưng toán phân tích số nguyên lớn thừa số nguyên tố toán khó giải, chưa có thuật toán hiệu để phân tích số nguyên n đủ lớn (khoảng 200 chữ số thập phân) Quá trình tìm p, q dựa theo cách sau: Giả sử ta tìm số nguyên x y cho x2 y2 (mod n) Nhưng lại không đồng dư với ±y theo modul n Khi n | (x2 - y2) n | (x+y)(x-y) p.q | (x+y)(x-y) p | (x+y)(x-y) p số nguyên tố Suy có thừa số (x+y), (x-y) chia hết cho p Tương tự với q Nếu (x-y) chia hết cho p q ta có pq | (x-y) n | (x-y) hay x y (mod n) trái với giả thiết ban đầu Tương tự ta có (x + y) chia hết cho p q Vậy ta có Trong trường hợp p | (x+y) ngược lại p | (x-y) q | (x-y) q | (x+y) p | (x+y) q | (x-y) ta thấy số n (x+y) có ước chung p Tương tự với q Như việc tính p q trở nên dễ dàng ta sử dụng thuật toán Euclid để tính ước chung lớn số Vậy việc phương trình trình tìm cặp nghiệm nguyên (x,y) phương trình đồng dư x2 y2 (mod n) Rồi thử xem cặp thỏa mãn x ±y (mod n) loại bỏ Khi gặp cặp không thoả mãn tính p, q Để làm việc ta sử dụng số thuật toán sau: - Phương trình Fermat số n - Phương trình mở rộng - Phân tích fermat dùng sở - Sử dụng liên phân số - Phương pháp phân tích dùng đường cong Elliptic (của Lenstra) - Phương pháp phân tích sàng trường số (của Schroeppel) - Thuật toán phân tích dùng phương pháp P Pollard 54 - Khả phân tích số “chíp” chuyên dụng để phân tích n thành tích số nguyên tố p q Hiện phương pháp xem hiệu toán số lớn thuật toán sử dụng sàng trường số Bằng phương pháp vào năm 1999 người ta phá mã 512 bit Với độ dài 155 chữ số thập phân nhiều tháng nhiều máy tính Gần người ta thiết kế “con chíp đặc thù” (do Adi Shamir tác giả) cho việc phân tích số thừa số nguyên tố Có sức mạnh phi thường có khả bẻ hệ mã RSA chuẩn nay, giá thành để tạo nên “chíp” chuyên dụng đắt (10 triệu USD) * Ngoài cách phân tích n thừa số nguyên tố ta sử dụng phương pháp sau: -Tính ф(n) mà không cần phân tích số n: người thám mã biết ф(n), dễ dàng bẻ gãy hệ thống mật mã RSA cách tìm số mũ bí mật d cách Tuy nhiên phương pháp không dễ phương pháp phân tích số n thừa số, biết ф(n) ta dễ dàng phân tích số n thuật toán thừa số hoá nhanh sau: p + q = p*q – (p - 1)*(q - 1) + = n - ф(n) + p – q = [(p+q)2 – 4*p*q]1/2 = [(p+q)2 – 4*n]1/2 Vậy ta suy ra: p = ½ [(p + q) + (p – q) q = ½[(p + q) – (p –q)] Vì dùng thuật toán để tính ф(n), đưa đến toán có độ phức tạp với toán phân tích số nguyên n thừa số -Tìm d mà phân tích n hay tính ф(n): khả khác người thám mã, cách xác định d từ e n mà không cần phân tích số n hay tính ф(n) Nhưng n số cực lớn d chọn từ tập lớn, công việc tìm số bí mật d không dễ phân tích số nguyên lớn n Trên thực tế người thám mã biết khóa bí mật d, coi thông tin bị lộ 3.5.3 Tấn công dựa thời gian (phương pháp phân tích thời gian) Phương pháp dựa việc đo thời gian giải mã Vào năm 1995, Paul Kocher mô tả dạng công này: Nếu kẻ công nắm đủ thông tin phần cứng thực mã hóa xác định thời gian giải mã đối 55 với số mã lựa chọn nhanh chóng tìm d Dạng công áp dụng hệ thống chữ ký điện tử sử dụng mật mã RSA Năm 2003, Dan boneh David Brumley chứng minh dạng công mới: phân tích thừa số RSA dùng mạng máy tính Tấn công khai thác thông tin rò rỉ việc tối ưu hóa định lý số dư Trung quốc mà nhiều ứng dụng thực Để chống lại công dựa thời gian ta đảm bảo trình giải mã diễn thời gian không đổi Tuy nhiên cách làm giảm hiệu suất tính toán Hiện hầu hết ứng dụng RSA sử dụng kỹ thuật gọi che mắt Kỹ thuật dựa tính nhân RSA: thay tính cd (mod n) A chọn số ngẫu nhiên r tính (rec)d (mod n) Kết ta thu r.m (mod n) Loại bỏ r cách nhân kết với nghịch đảo r Đối với văn bản, ta chọn giá trị r riêng Vì thời gian giải mã không phụ thuộc vào giá trị văn mã 3.5.4 Một số ý dùng hệ mã RSA Phần lớn hệ thống mật mã hóa đại dùng khóa dạng nhị phân, nên độ dài khóa thường đo bit Độ dài khóa yếu tố chủ yếu bảo đảm an toàn cho hệ mật mã công khai RSA Vì khóa phải đủ lớn để chống lại kiểu công điển hình kiểu công duyệt toàn Để đảm bảo an toàn tuyệt đối khóa phải có độ dài độ dài văn bảo mật mã hóa Nhưng việc quản lý khóa dài khó thực Từ năm 2002, độ dài 1024 bit xem giá trị tối thiểu cho hệ thống sử dụng thuật toán RSA Năm 2003, công ty RSA security cho khóa RSA 1024 bit có độ an toàn tương đương với khóa 80 bit hệ thống mật mã khóa đối xứng Khóa RSA 2048 bit tương đương với khóa 112 bit hệ thống mật mã khóa đối xứng Khóa RSA 3072 bit bit tương đương với khóa 128 bit hệ thống mật mã khóa đối xứng 56 Họ dự đoán khóa 1024 bit bị phá vỡ khoảng 2006-2010 Họ dự đoán khóa 2048 bit an toàn tới 2030 Họ dự đoán khóa 3072 bit sử dụng sau 2030 3.6 Ứng dụng hệ mật mã RSA - Chữ ký điện tử Hệ mã hóa RSA ứng dụng rộng rãi chủ yếu cho Web chương trình email Ngày nay, RSA sử dụng rộng rãi công nghệ bảo mật, sử dụng cho thương mại điện tử Đặc biệt thuật toán RSA thuật toán dùng để tạo chữ ký điện tử cho văn Đây ứng dụng đặc biệt thuật toán RSA 3.6.1 Giới thiệu chữ ký điện tử vấn đề xác nhận Chữ ký điện tử phương pháp ký thông điệp lưu trữ dạng thư tín điện tử Hiểu theo nghĩa thông thường thông điệp ký truyền mạng máy tính Khi truyền tin mạng, văn truyền dạng số hoá Vấn đề đặt người gửi có nhận trách nhiệm văn gửi không? Việc xác nhận trách nhiệm người gửi văn thể thủ tục truyền tin rõ ràng nảy sinh nhiều vấn đề mà cách xác nhận việc chuyển văn kiểu truyền thống chưa gặp phải - Vấn đề thứ nhất: Trong cách truyền thống chữ kí người gửi dạng văn viết tay chứng xác nhận trách nhiệm người gửi văn Với văn điện tử, người ta cắt dán lắp ghép dãy bit cách dễ dàng Giả sử người có chữ kí dạng văn dám đảm bảo chữ ký chịu trách nhiệm toàn văn Như chữ ký điện tử có phải ký cho bit văn bản, chữ ký rời cuối văn - Vấn đề thứ hai xác nhận chữ ký: Chữ ký tay xác nhận cách so với nguyên mẫu Chữ ký điện tử dãy bit thử cách so sánh vật lý với mẫu cho sẵn mà phải xác nhận thuật toán dựa vào mối quan hệ toán học - Vấn đề thứ ba việc chép dạng văn chữ ký: Nếu chữ ký viết tay dễ phân biệt gốc với không dùng lại văn có chữ ký thật Văn điện tử chữ ký nhân tuỳ ý không 57 phân biệt gốc hay sao, nguy dùng lại có thật Phải tránh nguy chẳng hạn cách dán nhãn thời gian cho văn ký Ðịnh nghĩa sơ đồ chữ ký: Một sơ đồ chữ ký số (P, A, K, S, V) thoả mãn điều kiện đây: P tập hữu hạn điện (thông điệp) A tập hữu hạn chữ ký K không gian khoá tập hữu hạn khoá có thể, k K gồm hai thành phần, k = (K’,K’’) + K’ khoá bí mật dùng để ký + K’’ khoá công khai dùng để xác nhận chữ ký S tập hàm ký V hàm kiểm tra chữ ký Với k K thuật toán ký Sigk S có tương ứng thuật toán để xác minh Verk V Sigk: P A true : y Sigk ( x ) Verk ( x, y ) false : y Sigk ( x) Verk: P A true, false với x P, y A Với k thuộc K hàm Sigk(x) Verk(x) hàm có thời gian đa thức Verk(x) hàm công khai, Sigk(x) bí mật Không thể dể dàng tính toán để giả mạo chữ ký Bob thông điệp x Nghĩa thông điệp x cho trước, có Bob tính y để Verk(x)= True Một sơ đồ chữ ký an toàn vô điều kiện David kiểm tra tất chữ số y có thông điệp x nhờ dùng thuật toán Verk(x) công khai tìm thấy chữ ký Vì thế, có đủ thời gian, David luôn giả mạo chữ ký Bob Như vậy, giống trường hợp hệ thống mã khoá công khai, mục đích tìm sơ đồ chữ ký số an toàn mặt tính toán 3.6.2 Sơ đồ chữ ký RSA Sơ đồ chữ ký RSA phát minh nhà nghiên cứu Rivest, Shamir Adleman, sơ đồ có ứng dụng thực tế rộng rãi dựa công nghệ sử dụng khóa chung Các phương pháp công RSA (multicative property) 58 vấn đề khác liên quan tới chữ ký RSA đưa Ðavia Jonge Chaum Sau sơ đồ chữ ký RSA a Thuật toán sinh khoá: Giải sử Alice tạo khoá công khai RSA khoá riêng tương ứng theo phương thức sau: - Sinh hai số nguyên tố lớn ngẫu nhiên p q kých thước bit - Tính n = pq = (p - 1)(q - 1) - Chọn số tự nhiên ngẫu nhiên a thoả mãn điều kiện sau: 1< a < USCLN(a, ) = hay a Z*p - Sử dụng giải thuật mở rộng Euclide để tính toán số tự nhiên b cho 1< b