Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 49 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
49
Dung lượng
0,99 MB
Nội dung
1 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH ĐOÀN MINH KẾ VỀ MẬT MÃ KHÓA CÔNG KHAI LUẬN VĂN THẠC SĨ TOÁN HỌC NGHỆ AN – 2015 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH ĐOÀN MINH KẾ VỀ MẬT MÃ KHÓA CÔNG KHAI CHUYÊN NGÀNH: ĐẠI SỐ VÀ LÝ THUYẾT SỐ Mã số: 60 46 01 04 LUẬN VĂN THẠC SĨ TOÁN HỌC Người hướng dẫn khoa học PGS.TS NGUYỄN THÀNH QUANG NGHỆ AN - 2015 MỤC LỤC TRANG MỞ ĐẦU CHƯƠNG I MỘT SỐ KIẾN THỨC SỐ HỌC CƠ SỞ 1.1 1.2 1.3 Phi hàm Euler ứng dụng Kiểm tra nguyên tố Maple Biểu diễn số nguyên CHƯƠNG II MỘT SỐ ỨNG DỤNG CỦA SỐ HỌC TRONG LÝ THUYẾT MẬT MÃ 2.1 2.2 2.3 Mật mã học Mật mã khoá công khai Hệ mã RSA KẾT LUẬN TÀI LIỆU THAM KHẢO 3 17 22 22 29 36 46 47 MỞ ĐẦU Cho đến năm 70 kỷ XX, Số học xem ngành lý thuyết túy đẹp đẽ toán học ([4]) Máy tính phát huy vẻ đẹp truyền thống Số học mà triển khai ứng dụng có cho kỷ XXI Một ứng dụng bật Số học thuật toán phân tích số tự nhiên thành tích thừa số nguyên tố nguyên tắc khóa mật mã công khai Vì vậy, ngày việc nghiên cứu số nguyên tố kích thích kiện số nguyên tố tỏ có ích việc mã hóa giải mã thông tin Tính bảo mật an toàn hệ mật mã RSA (do ba nhà khoa học Học viện Công nghệ Massachusetts công bố năm 1978) đảm bảo độ phức tạp toán số học phân tích số nguyên thành tích thừa số nguyên tố Nói khác đi, vấn đề thời gian tiêu tốn cho việc chạy máy tính để thực toán phân tích số nguyên đủ lớn thành tích thừa số nguyên tố, sử dụng làm tiêu định lượng đánh giá độ an toàn hệ mã RSA Thuật toán mật mã khóa công khai thiết kế James H Ellis, Clifford Cocks, Malcolm Willa vào đầu thập kỷ 1970 Thuật toán sau phát triển biết đến tên Diffie-Hellman trường hợp đặc biệt RSA ([6]) Mật mã khóa công khai dạng mật mã hóa cho phép người sử dụng trao đổi thông tin mật mà không cần phải trao đổi khóa chung bí mật trước Điều thực cách sử dụng cặp khóa có quan hệ số học với khóa công khai khóa cá nhân (hay khóa bí mật) Thuật ngữ mật mã hóa khóa bất đối xứng thường dùng đồng nghĩa với mật mã hóa khóa công khai hai khái niệm không hoàn toàn tương đương Có thuật toán mật mã khóa bất đối xứng tính chất khóa công khai bí mật đề cập mà hai khóa (cho mã hóa giải mã) cần phải giữ bí mật Với lý trên, lựa chọn đề tài luận văn ‘‘Về mật mã khóa công khai’’ nhằm tìm hiểu sâu ứng dụng Số học có liên quan đến lĩnh vực đề tài luận văn quan tâm Luận văn gồm hai chương Chương trình bày kiến thức số học về: Phi hàm Euler ứng dụng, định lý số dư Trung Quốc, số giả nguyên tố số Camichael Chương trình bày tổng quan mật mã học, mật mã khóa công khai, hệ mã RSA ứng dụng Số học vào hệ mã khóa công khai Luận văn hoàn thành hướng dẫn tận tình chu đáo PGS.TS Nguyễn Thành Quang Nhân dịp xin bày tỏ lòng kính trọng biết ơn sâu sắc tới thầy giáo hướng dẫn khoa học, người dành nhiều thời gian công sức cho việc giúp đỡ hoàn thành luận văn Nhân dịp xin gửi lời cảm ơn đến thầy cô giáo thuộc chuyên ngành Đại số Lý thuyết số, Khoa Sư phạm Toán học, Phòng Đào tạo Sau Đại học - Trường Đại học Vinh, người tận tình giảng dạy tạo điều kiện thuận lợi cho hoàn thành khóa học Tôi xin gửi lời cảm ơn đến Ban giám hiệu Trường THPT Lương Thế Vinh – Sở Giáo dục Đào tạo Quảng Bình đồng nghiệp, tạo điều kiện thuận lợi để hoàn thành nhiệm vụ học tập Tôi xin chân thành cảm ơn bạn bè, gia đình động viên giúp đỡ suốt khóa học Mặc dù có nhiều cố gắng, song luận văn không tránh khỏi thiếu sót Tác giả mong muốn nhận góp ý chân thành thầy cô giáo đồng nghiệp Nghệ An, tháng 10 năm 2015 TÁC GIẢ CHƯƠNG MỘT SỐ KIẾN THỨC SỐ HỌC CƠ SỞ 1.1 Phi hàm Euler ứng dụng 1.1.1 Định nghĩa Phi hàm Euler ϕ hàm số số học có giá trị số tự nhiên n ≠ số số tự nhiên không vượt n nguyên tố với n : ϕ ( n) = ∑ 1≤ k ≤ n ( k ,n ) =1 Hàm số ϕ tiếng Anh gọi hàm "totient" Hàm thường gọi hàm số Euler, theo tên nhà toán học Thụy Sỹ Leonhard Euler, người nghiên cứu ký hiệu chữ Hy Lạp: Phi ( ϕ ) Đối totient n định nghĩa n − ϕ (n), nghĩa số số nguyên dương nhỏ n mà không nguyên tố với n Hàm ϕ có nhiều ứng dụng kích thước (cấp) nhóm nhân lớp khả nghịch vành Zn số nguyên modn Hơn nữa, hàm Euler ta có công thức Gaus, gọi công thức tổng trải, ước dương d n : å j (d ) = n dn 1.1.2 Định lý Euler [7] Nếu n > số nguyên a số nguyên cho a n nguyên tố nhau, thì: aϕ ( n ) ≡ 1(mod n) Định lý Euler tổng quát hóa Định lý bé Fermat, n = p số nguyên tố ϕ ( p ) = p − 1.1.3 Định lý bé Fermat [7] Nếu p số nguyên tố a số nguyên không chia hết cho p a p −1 ≡ 1(mod p) Nói cách khác, p số nguyên tố a số nguyên a p ≡ a(mod p) 1.1.4 Giả thuyết Trung Quốc Một cách độc lập với Định lý bé Fermat, nhà toán học Trung quốc đưa giả thuyết (thường gọi Giả thuyết Trung Quốc) nói rằng: p số nguyên tố p º 2(mod p ) Quả là, p số nguyên tố, p º 2(mod p) trường hợp đặc biệt Định lý bé Fermat Song mệnh đề ngược lại (nếu p º 2(mod p ) p số nguyên tố) sai Chẳng hạn, 2341 º 2(mod 341) , 341 = 11.31 hợp số Như vậy, mệnh đề ngược lại Định lí Fermat bé không Theo Định lý Fermat bé, n số nguyên tố b số nguyên tùy ý, b n ≡ b(mod n) Như vậy, với n số tự nhiên lớn mà có số nguyên b cho đồng dư thức không xảy n hợp số, trường hợp đồng dư thức xảy chưa thể nói tính nguyên tố n Tuy nhiên, qua nhiều thống kê cho thấy số nguyên thỏa mãn kết luận Định lí Fermat bé "có nhiều khả năng" số nguyên tố Do đó, dẫn xuất đến khái niệm sau 1.1.5 Số giả nguyên tố Giả sử b số nguyên dương cho trước Nếu n hợp số nguyên dương b n ≡ b(mod n) , n gọi số giả nguyên tố sở b Trong trường hợp gcd(n, b) = , người ta dùng điều kiện tương đương sau: b n −1 ≡ 1(mod n) Ví dụ Số nguyên 561 số giả nguyên tố sở Thật vậy, ta có 561 = 3.11.17 gcd(3,561) = gcd (11,561) = gcd(17,561) = 1, áp dụng Định lý Fermat bé, ta có 2560 = (22 )280 ≡ 1(mod 3) 2560 = (216 )35 ≡ 1(mod17) 2560 = (210 )56 ≡ 1(mod11) Từ suy ra, 2560 ≡ 1(mod 561) Nói chung số giả nguyên tố nhiều so với số nguyên tố Chẳng hạn, có tất 455052512 số nguyên tố bé 1010, có 14884 số giả nguyên tố sở khoảng Cụ thể hơn, có số nguyên tố bé 12 2,3,5,7,11 số giả nguyên tố sở khoảng Sự kiện giải thích điều nói trên: Các số thoả mãn Định lý Fermat bé có nhiều khả số nguyên tố Tuy nhiên, sở tuỳ ý, số số giả nguyên tố vô hạn Chẳng hạn, ta chứng minh điều với sở 1.1.6 Định lý Nếu n số giả nguyên tố sở m = n - số giả nguyên tố sở Từ suy có vô hạn số giả nguyên tố sở Chứng minh Giả sử n số giả nguyên tố sở 2, ta chứng minh số nguyên m = 2n − > n số giả nguyên tố sở Thật vậy, theo giả thiết, ta có n hợp số, chẳng hạn n = dt ,1 < d , t < n Do m = 2n − = (2d )t − = (2d − 1) ( (2 d )t −1 + (2 d )t −2 + L + 1) Từ đó, suy m hợp số Do n số giả nguyên tố sở 2, nên có 2n ≡ 2(mod n), hay tồn số tự nhiên k cho 2n − = kn Ta có m = 2n − 1, hay m − = 2n − = kn Vì vậy, 2m−1 − = 2kn − = (2n ) k − chia hết cho m = 2n − , tức 2m−1 ≡ 1(mod m) Vậy m số giả nguyên tố sở ▄ 1.1.7 Số Carmichael Hợp số n thỏa mãn đồng dư thức b n −1 ≡ 1(mod n) với số nguyên dương b cho gcd(n, b) = gọi số Carmichael Ví dụ Số nguyên 561 số Carmichael Thật vậy, gcd(b, 561) = gcd(b,3) = gcd(b,11) = gcd(b,17) = 1, áp dụng Định lý Fermat bé, ta có b560 = (b ) 280 ≡ 1(mod 3) b560 = (b10 )56 ≡ 1(mod11) b560 = (b16 )35 ≡ 1(mod17) Từ suy ra, b560 ≡ 1(mod 561) Giả thuyết: Tồn vô hạn số Carmichael, chứng minh gần R Alford, A Granville, C Pomarance, 1993 (xem [4,7]) Định lý sau cho cách tìm số Carmichael 1.1.8 Định lý Số tự nhiên n số Carmichael khi, n = q1q2 qn , q j ,( j = 1, 2, , n), số nguyên tố khác thoả mãn q j − ước n − Chứng minh Thật vậy, giả sử b số nguyên dương cho (b, n) = Khi (b, q j ) = 1, b q j −1 ≡ 1(mod q j ) Vì q j −1 ước n − nên b n −1 ≡ 1(mod q j ), ta có b n −1 ≡ 1(mod n) Vậy n số Carmichael ▄ Phần đảo lại định lý tìm hiểu công trình: M.O Rabin (1980), Probabilistic algorithms for testing primality, Journal of Number Theory, Vol.12, pp 128-138 1.1.9 Số giả nguyên tố mạnh Số nguyên n gọi số giả nguyên tố mạnh sở b hợp số trải qua kiểm tra Miller sở b theo nghĩa sau: Giả sử n số nguyên dương lẻ, n − = 2s t , s số nguyên không âm, t số nguyên duơng lẻ Ta nói n trải qua kiểm tra Miller sở b , bt ≡ 1(mod n) b t ≡ −1(mod n) với j đó, ≤ j ≤ s − j Như vậy, số giả nguyên tố mạnh lại số giả nguyên tố Tuy nhiên, ta có định lý sau 1.1.10 Định lý Tồn vô số số giả nguyên tố mạnh sở Chứng minh Thật vậy, giả sử n số giả nguyên tố sở Khi , với số nguyên lẻ k đó, ta có 2n −1 − = nk Đặt N = 2n−1 − 1, có ước 2d – 1, với d ước số n Mặt khác N − = 2n − = 2(2n −1 − 1) = 2nk , N −1 = 2nk = (2n ) k ≡ 1(mod N ) Vậy với số giả nguyên tố n , ta xây dựng số giả nguyên tố mạnh N số n khác cho ta số N khác Định lý chúng minh, ta có vô số giả nguyên tố sở ▄ 1.1.11 Định lý phần dư Trung Hoa (Chinese Remainder Theorem) [4, 7] Giả sử m1 , m2 , , mn số nguyên dương, nguyên tố đôi Khi đó, hệ phương trình đồng dư bậc ẩn 10 x ≡ b1 (mod m1 ) x ≡ b (mod m ) 2 M x ≡ bn (mod mn ) có nghiệm theo môđun M = m1m2L mn Định lý số dư Trung Quốc tên người phương tây đặt cho định lý Người Trung Quốc gọi Bài toán Hàn Tín điểm binh Hàn Tín danh tướng thời Hán Sở, phong tước vương thời Hán Cao Tổ Lưu Bang dựng nghiệp Sử ký Tư Mã Thiên viết Hàn Tín tướng trói gà không nổi, có tài thao lược quân Tục truyền Hàn Tín điểm quân số, ông cho quân lính xếp hàng 3, hàng 5, hàng báo cáo số dư Từ ông tính xác quân số đến người Gần đây, Định lý số dư Trung Quốc có nhiều ứng dụng toán số nguyên lớn áp dụng vào Lý thuyết mật mã Trong Định lí phần dư Trung Hoa, có điều kiện m1 , m2 , , mn số nguyên dương đôi nguyên tố Câu hỏi đặt m1 , m2 , , mn không thoả mãn điều kiện đôi nguyên tố kết định lí nào? 1.1.12 Định lý (Định lý phần dư Trung Hoa mở rộng) [4] Cho n số nguyên dương m1 , m2 ,L , mn a1 , a2 , , an số nguyên dương Khi hệ phương trình đồng dư tuyến tính x ≡ a1 (mod m1 ) x ≡ a (mod m ) 2 M x ≡ an (mod mn ) có nghiệm ≡ a j (mod(mi , m j )) với i, j thoả mãn ≤ i < j ≤ n 1.1.13 Phân tích Fermat Cho n số nguyên dương lẻ Giả sử n = ab với a,b số nguyên, n lẻ nên a,b lẻ Vì vậy, viết n = x2 - y2 với 35 Trong hệ mật này, khoá mã hoá khác với khoá giải mã Về mặt toán học, từ khoá công khai khó tính khóa riêng Biết khoá không dễ dàng tìm khóa Khóa giải mã giữ bí mật khóa mã hoá công bố công khai Một người sử dụng khóa công khai để mã hoá tin tức, có người có khoá giải mã có khả xem rõ Người gửi A mã hoá thông điệp khóa công người nhận người nhận B giải mã thông điệp với khoá riêng tương ứng mình, trình mô tả hình hình Có nhiều hệ thống khóa công khai triển khai rộng rãi hệ RSA, hệ ElGamal sử dụng giao thức trao đổi khoá Diffie-Hellman lên năm gần hệ đường cong Elliptic Trong số hệ mật mã hệ RSA hệ cộng đồng chuẩn quốc tế công nghiệp chấp nhận rộng rãi việc thực thi mật mã khoá công khai 2.2.2 Ứng dụng mật mã khóa công khai (mật mã bất đối xứng) Mật mã bất đối xứng sử dụng cho mục đích sau đây: - Bảo mật thông tin (message cofidentiality); - Xác thực nguồn thông tin chữ ký số (digital signature); - Trao đổi khóa thuật toán mã đối xứng (key exchange) 2.2.3 Các cách phân tích mã Các thuật toán cho phần lớn hệ mật mã tiếng nên giả sử kẻ phân tích mã có thuật toán tay bắt đầu công Trong phần lớn hệ mật mã, thuật toán để phân phối cho tất người sử dụng sức mạnh hệ thống nằm khóa phụ thuộc vào thuật toán mã hoá liệu tốt Và độ dài khoá định mã mã tốt bảo vệ chống lại công brute-force Tấn công brute-force cách khoá thử dùng để giải mã 36 Nhiều nhà viết mật mã tin công brute-force thực khoá dài sử dụng, chí khả máy tính lên Tấn công brute-force mã phải mã hoá với khoá lớn (trên 100 bít) hàng triệu hàng tỉ năm với mạng máy tính mạnh việc thêm bít đơn làm tăng gấp đôi giá việc phân tích brute-force Tuy nhiên tồn điểm yếu hệ thống trừ vài khoá, làm giảm số khoá cần kiểm tra Ví dụ, kẻ phân tích mã khám phá thuật toán sinh số ngẫu nhiên thực tế có vài mẫu lặp lại Điểm yếu hệ thống cung cấp đường để khám phá Có vài phương pháp chung để phân tích, danh sách theo thứ tự khả phương pháp Mỗi phương pháp số chúng giả sử kẻ phân tích mã hoàn toàn có hiểu biết thuật toán mã hoá sử dụng Chỉ có mã Trong trường hợp này, người phân tích có vài tin mã, tất số chúng mã hoá sử dụng chung thuật toán Công việc người phân tích tìm lại rõ nhiều mã tốt suy luận khoá sử dụng mã hoá, sử dụng để giải mã mã khác với khoá Biết rõ Người phân tích không truy cập vài mã mặt khác biết rõ Công việc suy luận khoá để sử dụng giải mã thuật toán giải mã để giải mã cho mã khác với khoá Lựa chọn rõ Người phân tích không truy cập mã kết hợp rõ cho vài tin, mặt khác lựa chọn rõ mã hoá Phương pháp tỏ có khả phương pháp biết rõ người phân tích chọn cụ thể khối rõ cho mã hoá, điều khác sản lượng thông tin khoá nhiều 37 Lựa chọn rõ thích hợp Đây trường hợp đặc biệt lựa chọn rõ Không lựa chọn rõ mã hoá, họ sửa đổi lựa chọn kết mã hoá lần trước Trong trường lựa chọn mã người phân tích chọn khối lớn rõ mã hoá, trường hợp chọn khối nhỏ chọn khác kết lần 2.2.4 Ưu nhược điểm hệ mật mã khoá công khai Vấn đề tồn đọng hệ mật mã khoá đối xứng giải nhờ hệ mật mã khoá công khai Chính ưu điểm thu hút nhiều trí tuệ vào việc đề xuất, đánh giá hệ mật mã công khai Nhưng thân hệ mật mã khoá công khai dựa vào giả thiết liên quan đến toán khó nên đa số hệ mật mã có tốc độ mã dịch không nhanh Chính nhược điểm làm cho hệ mật mã khoá công khai khó dùng cách độc lập Một vấn đề nảy sinh sử dụng hệ mật mã khóa công khai việc xác thực mà mô hình hệ mật mã đối xứng không đặt Do khoá mã công khai công bố cách công khai mạng việc đảm bảo “khoá công bố có đối tượng cần liên lạc hay không?” kẽ hở bị lợi dụng Vấn đề xác thực giải hệ mật mã khoá công khai Nhiều thủ tục xác thực nghiên cứu sử dụng Kerberos, X.509,… Một ưu điểm hệ mật mã khoá công khai ứng dụng lĩnh vực chữ ký số, với kết hàm băm, thủ tục ký để bảo đảm tính toàn vẹn văn giải Tồn khả người tìm khóa bí mật Không giống với hệ thống mật mã sử dụng lần (one-time pad) tương đương, chưa có thuật toán mã hóa khóa bất đối xứng chứng minh an toàn trước công dựa chất toán học thuật toán Khả mối quan hệ khóa hay điểm yếu thuật toán dẫn tới cho phép giải mã không cần tới khóa hay cần khóa mã hóa chưa loại trừ An toàn thuật toán dựa ước lượng khối lượng tính toán để giải 38 toán gắn với chúng Các ước lượng lại thay đổi tùy thuộc khả máy tính phát toán học Mặc dù vậy, độ an toàn thuật toán mật mã hóa khóa công khai tương đối đảm bảo Nếu thời gian để phá mã (bằng phương pháp duyệt toàn bộ) ước lượng 1000 năm thuật toán hoàn toàn dùng để mã hóa thông tin thẻ tín dụng - Rõ ràng thời gian phá mã lớn nhiều lần thời gian tồn thẻ (vài năm) Nhiều điểm yếu số thuật toán mật mã hóa khóa bất đối xứng tìm khứ Thuật toán đóng gói ba lô ví dụ Nó xem không an toàn dạng công không lường trước bị phát Gần đây, số dạng công đơn giản hóa việc tìm khóa giải mã dựa việc đo đạc xác thời gian mà hệ thống phần cứng thực mã hóa Vì vậy, việc sử dụng mã hóa khóa bất đối xứng đảm bảo an toàn tuyệt đối Đây lĩnh vực tích cực nghiên cứu để tìm dạng công Một điểm yếu tiềm tàng việc sử dụng khóa bất đối xứng khả bị công dạng kẻ công đứng (man in the middle attack): kẻ công lợi dụng việc phân phối khóa công khai để thay đổi khóa công khai Sau giả mạo khóa công khai, kẻ công đứng hai bên để nhận gói tin, giải mã lại mã hóa với khóa gửi đến nơi nhận để tránh bị phát Dạng công kiểu phòng ngừa phương pháp trao đổi khóa an toàn nhằm đảm bảo nhận thực người gửi toàn vẹn thông tin Một điều cần lưu ý phủ quan tâm đến dạng công này: họ thuyết phục (hay bắt buộc) nhà cung cấp chứng thực số xác nhận khóa giả mạo đọc thông tin mã hóa 2.3 Hệ mã RSA 39 Thuật toán Ron Rivest, Adi Shamir Len Adleman mô tả lần vào năm 1977 Học viện Công nghệ Massachusetts (MIT), Hoa Kỳ Tên thuật toán lấy từ chữ đầu tên ba tác giả 2.3.1 Thuật toán RSA Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) khóa bí mật (hay khóa cá nhân) Mỗi khóa số cố định sử dụng trình mã hóa giải mã Khóa công khai công bố rộng rãi cho người dùng để mã hóa Những thông tin mã hóa khóa công khai giải mã khóa bí mật tương ứng Nói cách khác, người mã hóa có người biết khóa cá nhân (bí mật) giải mã Ta mô trực quan hệ mật mã khoá công khai: B muốn gửi cho A thông tin mật mà B muốn A đọc Để làm điều này, A gửi cho B hộp có khóa mở sẵn giữ lại chìa khóa B nhận hộp, cho vào tờ giấy viết thư bình thường khóa lại (như loại khoá thông thường cần sập chốt lại, sau sập chốt khóa B mở lại - không đọc lại hay sửa thông tin thư nữa) Sau B gửi hộp lại cho A A mở hộp với chìa khóa đọc thông tin thư Trong ví dụ này, hộp với khóa mở đóng vai trò khóa công khai, chìa khóa khóa bí mật Giả sử A B cần trao đổi thông tin bí mật thông qua kênh không an toàn Với thuật toán RSA, bên A cần tạo cho cặp khóa gồm khóa công khai khóa bí mật theo bước sau: Chọn: n = pq , với p, q số nguyên tố phân biệt đủ lớn (lựa chọn ngẫu nhiên độc lập); Tính: n = pq ; Tính giá trị hàm số Euler: ϕ (n) = ( p − 1)( q − 1) ; Chọn số tự nhiên e cho < e < ϕ (n) e nguyên tố với ϕ (n) ; Tính d cho de ≡ 1( mod ϕ (n) ) 40 2.3.2 Mã hóa Giả sử B muốn gửi đoạn thông tin M cho A Đầu tiên B chuyển M thành số m < n theo hàm đảo ngược (từ m xác định lại M) thỏa thuận trước Lúc B có m biết n e A gửi B tính c mã hóa m theo công thức: c ≡ me ( mod n ) 2.3.3 Giải mã A nhận c từ B biết khóa bí mật d A tìm m từ c theo công thức sau: c = me ( mod n ) Biết m, A tìm lại M theo phương pháp thỏa thuận trước Quá trình giải mã khả thi ta có c d ≡ ( me ) (mod n) , hay c d ≡ med (mod n) d Do ed ≡ 1(mod p - 1), ed ≡ 1(mod q - 1), (theo Định lý Fermat bé) nên: m ed ≡ m(mod p ) med ≡ m(mod q ) Do p q hai số nguyên tố nhau, theo Định lý số dư Trung Hoa, ta có: m ed ≡ m(mod pq ) , hay: c d ≡ m(mod n) Ví dụ Sau ví dụ với số cụ thể Ở sử dụng số nhỏ để tiện tính toán thực tế phải dùng số có giá trị đủ lớn Lấy: p = 61 số nguyên tố thứ (giữ bí mật hủy sau tạo khóa); q = 53 số nguyên tố thứ hai (giữ bí mật hủy sau tạo khóa); n = pq = 3233 môđun (công bố công khai); e = 17 số mũ công khai; d = 2753 số mũ bí mật Khóa công khai cặp (e, n) Khóa bí mật d Hàm mã hóa là: E (m) = me mod n = m17 mod 3233, với m văn rõ Hàm giải mã là: D (c) = cd mod n = c2753 mod 3233, với c văn mã 41 Để mã hóa văn có giá trị 123, ta thực phép tính: E(123) = 12317 mod 3233 = 855 Để giải mã văn có giá trị 855, ta thực phép tính: D(855) = 8552753 mod 3233 = 123 Ví dụ Thực hành Maple để lập mã : >p := nextprime(13478237847823478237844823845811128948543785783453475 783432344111457843534785783434636434579875542717771115432278998762 34561117791); >q := nextprime(19993331345834785347852347823478237847823784237878454 78578337257834574785547545781776756543334544566668765432111176); > n := p*q; >e := nextprime(98324782347832312414111382388457847324823847823432342 347382478234724347823784783478578457831111324782378478477347379936 9678909000266266433117); > d := `mod`(1/e, (p-1)*(q-1)); > vbgoc := "em xin chuc cac thay co manh khoe"; > str := convert (vbgoc, bytes); > dectohex := [seq(convert(str[i], hex, decimal), i = nops(str))]; > hextostr := cat(seq(dectohex[i], i = nops(dectohex))); > number := convert(hextostr, decimal, hex); > vbmat := `mod`(`&^`(number, e), n); Giải mã : 42 >vbmat := 150295454715520105138215202994179562785249091089859331193 412701402529087779246786346319210988003982585716774558700224826114 198965111538302881963223364580242354797843152958445351147244020595 302348870979467519215276862913989511716810729980997714035: >p := nextprime(13478237847823478237844823845811128948543785783453478 578343234411145784353478578343463643457987554271777111543227899876 234561117791): >q := nextprime(1999333134583478534785234782347823784782378423787845 3478578337257834574785547545781776756543334544566668765432111176): > n := p*q: >e := nextprime(9832478234783231241411138238845784732482384782343234 234738247823472434782378478347857845783111132478237847847734737993 69678909000266266433117): > d := `mod`(1/e, (p-1)*(q-1)): > giaima; > vbmaso := `mod`(`&^`(vbmat, d), n): > hexstr := convert(vbmaso, hex, decimal): > hexlist := [seq(substring(hexstr, 2*i-1 2*i), i = (1/2)*length(hexstr))]: > declist := [seq(convert(hexlist[i], decimal, hex), i = nops(hexlist))]: > vbgiaima := convert(convert(convert(declist, list), bytes), name); 2.3.4 Độ an toàn hệ thống RSA Nhìn chung tất công giải mã mang mục đích không tốt Độ an toàn hệ thống RSA dựa vấn đề toán học: Bài toán phân tích thừa số nguyên tố số nguyên lớn toán RSA Nếu hai toán khó (không tìm thuật toán hiệu để giải chúng) thực việc phá mã toàn RSA Phá mã phần phải ngăn chặn phương pháp chuyển đổi rõ an toàn 43 Bài toán RSA toán tính bậc e môđun n (với n hợp số): tìm số m e cho m ≡ c ( mod n ) , (e, n) khóa công khai c mã Hiện phương pháp triển vọng giải toán phân tích n thừa số nguyên tố Khi thực điều này, kẻ công tìm số mũ bí mật d từ khóa công khai giải mã theo quy trình thuật toán Nếu kẻ công tìm hai số nguyên tố p, q cho n = pq dễ dàng tìm giá trị ( p − 1) ( q − 1) qua xác định d từ e Chưa có phương pháp tìm máy tính để giải toán thời gian đa thức (polynomial-time) Tuy nhiên người ta chưa chứng minh điều ngược lại (sự không tồn thuật toán) Tại thời điểm năm 2005, số lớn phân tích thừa số nguyên tố có độ dài 663 bít với phương pháp phân tán, khóa RSA có độ dài từ 1024 tới 2048 bít Một số chuyên gia cho khóa 1024 bít sớm bị phá vỡ (cũng có nhiều người phản đối việc này) Với khóa 4096 bít khả bị phá vỡ tương lai gần Do đó, người ta thường cho RSA đảm bảo an toàn với điều kiện n chọn đủ lớn Nếu n có độ dài 256 bít ngắn hơn, bị phân tích vài với máy tính cá nhân dùng phần mềm có sẵn Nếu n có độ dài 512 bít, bị phân tích vài trăm máy tính thời điểm năm 1999 Một thiết bị lý thuyết có tên TWIRL Shamir Tromer mô tả năm 2003 đặt câu hỏi độ an toàn khóa 1024 bít Vì người ta khuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bít Việc phát minh phương pháp mã công khai tạo “cách mạng” công nghệ an toàn thông tin điện tử Nhưng thực tiễn triển khai cho thấy tốc độ mã hoá khối liệu lớn thuật toán mã hoá công khai chậm nhiều so với hệ mã hoá đối xứng Ví dụ, để đạt độ an toàn hệ mã đối xứng mạnh thời, RSA đòi hỏi thời gian cho việc mã hoá văn lâu gấp hàng ngàn lần Do đó, thay việc mã hoá văn có kích thước lớn 44 lược đồ khoá công khai văn mã hoá hệ mã đối xứng có tốc độ cao DES, IDEA,…sau khoá sử dụng hệ mã đối xứng mã hoá sử dụng mật mã khoá công khai Phương pháp khả thi việc mã giải mã văn có kích thước lớn 2.3.5 Một số ý RSA 2.3.5.1.Tốc độ: RSA có tốc độ thực chậm đáng kể so với thuật toán mã hóa đối xứng Trên thực tế, Bob sử dụng thuật toán mã hóa đối xứng để mã hóa văn cần gửi sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa ngắn nhiều so với văn bản) Phương thức tạo vấn đề an ninh Một ví dụ cần phải tạo khóa đối xứng thật ngẫu nhiên Nếu không, kẻ công (thường ký hiệu Eve) bỏ qua RSA tập trung vào việc đoán khóa đối xứng 2.3.5.2.Chiều dài khóa: Số n cần phải có kích thước không nhỏ 512 bít Năm 2006 hệ mật RSA cho hiệu với kích thước n phải từ 1024 Và họ khuyến cáo tương lai chiều dài n phải từ 2024 bít 2.3.5.3.Chọn tham số công khai: Để nâng cao tốc độ mã hóa, nên chọn e với giá trị không lớn, thường 3, hay 65537 Các số biểu diễn dạng nhị phân có chữ số 1, nên thực lệnh lũy thừa giảm lệnh nhân 2.3.5.4.Chọn tham số mật: ● p q cần chọn không gần để phòng trường hợp phân tích n phương pháp phân tích Fermat Ngoài ra, p-1 q-1 có thừa số nguyên tố nhỏ n dễ dàng bị phân tích theo phương pháp p-1 Pollaid p q cần thử để tránh khả Chúng ta chọn sau Trước tiên tìm số nguyên tố p1 cho p = 2p1+1 số nguyên tố, tương tự chọn số nguyên tố lớn q1 cho q = 2q1+1 số nguyên tố ● Giá trị d cần phải đủ lớn Năm 1990 Michael J Wiener chứng minh q < p < 2q d < n1/ / , có phương pháp hiệu để tính d theo n e 45 2.3.4 Ứng dụng RSA RSA công cụ trực tiếp mã hóa văn bản, nhiên người ta tìm thấy RSA khả ứng dụng độc đáo khác Tạo vỏ bọc an toàn cho văn mật: RSA sử dụng kết hợp với hệ mã đối xứng có tốc độ cao DES, IDEA… Khi ấy, DES IDEA sử dụng để mã hóa toàn văn khóa đối xứng bí mật đó, RSA dùng để mã hóa chìa khóa mà DES IDEA dùng để mã hóa văn Chìa khóa có độ dài không đáng kể (chỉ vài trăm bit) thời giam mã không vấn đề Do tính an toàn cao, chìa khóa đối xứng DES, IDEA… mã RSA gửi cách an toàn đến người nhận để làm công cụ giải mã Như vậy, hệ mã đối xứng góp phần khắc phục tốc độ mã hóa chậm chạp RSA, RSA khắc phục khâu yếu hệ mã đối xứng chuyển giao chìa khóa giải mã cho người nhận cách an toàn RSA thực tế tạo vỏ bọc số an toàn cho văn thay trực tiếp mã hóa văn ([2]) 2.3.5 Chữ ký điện tử Mật mã khoá công khai sử dụng theo nhiều cách khác Chữ ký điện tử ví dụ minh chứng cho việc đảm bảo xác thực người dùng toàn vẹn liệu Nói cách khác, chữ ký điện tử giúp xác định người tạo hay chịu trách nhiệm thông điệp Một phương pháp chữ ký điện tử bao gồm hai thành phần chính: thuật toán dùng để tạo chữ ký điện tử thuật toán tương ứng để xác nhận chữ ký điện tử Nếu người gửi A mã hoá thông điệp hay tài liệu với khoá riêng giải mã thông điệp với khoá công A Do đó, người nhận chắn thông điệp nhận A mã A có khoá riêng Quá trình mã hoá thông điệp với khoá riêng người gửi gọi trình “ký số” Trong thực tế, trình ký số thường khó Thay việc mã thông điệp gốc với khoá riêng người gửi có đại diện thông điệp (bản băm) có độ dài cố định mã hoá với khoá riêng người gửi băm mã hoá gắn vào với thông điệp gốc Người nhận B sau nhận 46 thông điệp giải mã băm với khoá công người gửi, sau băm thông điệp kèm thuật toán băm tương ứng với thuật toán băm mà người gửi sử dụng B so sánh hai giá trị băm giống chắn thông điệp A gửi cho B nguyên vẹn, đồng thời xác thực người gửi thông tin Tính toàn vẹn thông điệp đảm bảo thay đổi bit thông điệp gửi kết hai giá trị băm khác Tính xác thực người gửi đảm bảo có người gửi A có khoá riêng để mã băm Chữ ký số chứng minh tính chống chối bỏ gốc có A có khoá riêng dùng để ký số Sơ đồ chữ ký định nghĩa sau: Sơ đồ chữ ký năm (P, A, K, S, V), đó: P tập hữu hạn văn có thể; A tập hữu hạn chữ ký sử dụng; K tập hữu hạn khoá sử dụng; S tập thuật toán ký; V tập thuật toán kiểm thử Với k ∈ K, có thuật toán ký sig k ∈ S, sig k: P → A thuật toán kiểm thử ver k ∈ V, ver k: P x A → {đúng (D), sai (S)}, thoả mãn điều kiện sau với x ∈ P, y ∈ A: D y = sig k ( x ) verk ( x, y ) = S y ≠ sig k ( x ) RSA thuật toán dùng nhiều cho mục đích ký số Ngoài ra, có số thuật toán công khai khác dùng để ký số, ví dụ chuẩn chữ ký số DSS 2.3.6 Tấn công vào hệ mã RSA Quá trình thám mã hay gọi phân tích mã (Cryptanalysis) việc nghiên cứu phương pháp phá vỡ ngụy trang văn việc mã hóa tạo nên để hiểu nội dung văn ([2]) Thông thường có cách công để chuyển văn mã thành văn gốc: 47 + Ăn trộm, hối lộ mua để có chìa khóa; + Khai thác tính lỏng lẻo, cẩu thả người dùng khóa chẳng hạn có người dùng ngày sinh hay tên người thân để làm mật khẩu, chìa khóa,…; + Phân tích mã Công cụ để phá mã RSA dựa toán phân tích số lớn thừa số nguyên tố Độ khó toán giúp cho việc đảm bảo an toàn cho hệ mã RSA Muốn phá hệ mã RSA, người ta phải phân tích số nguyên n cực lớn (hàng trăm chữ số) thành tích hai số nguyên tố pq Ta biết việc dùng sàng Eratosthenes để làm điều hoàn toàn không tưởng Tuy nhiên, sàng Eratosthenes giải pháp nhất, đối thủ dùng cách khác: Giả sử ta tìm hai số nguyên x y cho x ≡ y (mod n) x 2 lại không đồng dư với ± y theo modn Khi ấy, n ( x − y ) , n ( x − y ) ( x + y ) suy pq ( x − y ) ( x + y ) Như vậy, p ( x − y ) ( x + y ) Do p số nguyên tố nên hai thừa số (x – y), (x + y) phải chia hết cho p Tương tự q Nếu (x – y) chia hết cho p q kéo theo pq ( x − y ) tức n ( x − y ) hay x ≡ y (mod n) Điều mâu thuẫn với giả thiết Tương tự không xảy (x + y) chia hết cho hai số p q Vậy phải có p ( x + y ) q ( x − y ) ngược lại Trong trường hợp đầu, hai số n (x + y) có ước chung p nên gcd(x + y, n) = p Trường hợp lại, kết tương tự q Như vậy, việc tính p, q không gặp khó khăn việc tính ước chung lớn theo thuật toán Euclid Phân tích cho thấy, ta cần tìm cập nguyên (x, y) cho x ≡ y (mod n) , thử xem cặp thỏa mãn x ≡ ± y (mod n) loại bỏ tìm cặp nghiệm khác Khi gặp cặp không thỏa mãn tính pq theo nhận xét 48 KẾT LUẬN Bản luận văn nhằm tìm hiểu sở việc áp dụng Số học vào lĩnh vực mã hoá thông tin hay rộng Lý thuyết mật mã Nội dung chủ yếu luận văn bao gồm: Giới thiệu số khái niệm kết Số học có ứng dụng trực tiếp mã hoá giải mã thông tin: Phi hàm Euler, Định lý số dư Trung Quốc, Định lý Euler, Định lý Fermat bé, Phân tích Fermat, Số giả nguyên tố, Số Carmichael 2.Trình bày tổng quan kiến thức Lý thuyết mật mã: Mã hoá, giải mã, hệ thống mã hóa bất đối xứng Giới thiệu tổng quan mật mã khóa công khai: cách phân tích mã, ưu nhược điểm mã hóa công khai có liên quan trực tiếp đến việc ứng dụng Số học mã hoá, giải mã bảo vệ an toàn thông tin Đặc biệt, luận văn trình bày hệ mật mã tiêu biểu mật mã khóa công khai hệ mật mã RSA Hệ mã sử dụng rộng rãi tính ưu việt nó, với độ an toàn đảm bảo sở toán học: Độ phức tạp thuật toán phân tích số nguyên thành tích thừa số nguyên tố Luận văn sâu tìm hiểu ứng dụng sâu sắc Số học số lĩnh vực cụ thể ngành Toán - Tin học ứng dụng như: Thẻ tín dụng ATM, Chứng khoán, Chữ ký điện tử, Xử lý ảnh, Bầu cử điện tử TÀI LIỆU THAM KHẢO 49 TIẾNG VIỆT [1] Phạm Huy Điển (2002), Tính toán, lập trình giảng dạy toán học [2] Maple, Nhà xuất Khoa học Kỹ thuật, Hà Nội Phạm Huy Điển, Hà Huy Khoái (2004), Mã hóa thông tin - Cơ sở toán [3] học ứng dụng, Nhà xuất Đại học Quốc gia Hà Nội Bùi Doãn Khanh, Nguyễn Đình Thúc (2004), Mã hóa thông tin, Lý thuyết [4] ứng dụng, Nhà xuất Lao Động, TP Hồ Chí Minh Hà Huy Khoái, Phạm Huy Điển (2003), Số học thuật toán, Nhà xuất Đại học Quốc gia Hà Nội [5] TIẾNG ANH Brassard (1988), Modern Cryptology Lecture Notes in Computer [6] Science, Springer Jevons, W Stanley (1958), The Principles of Science: A Treatise on [7] [8] [9] Logic and Scientific Method, Dover Publications, New York M B Nathason (1999), Elementary Methods in Number Theory, Springer B Scheier (1996), Applied Cryptography, Wiley D Stinson (1995), Cryptography: Theory and Pratice, CRS Press LLC [...]... 32 2.2 Mật mã khóa công khai 2.2.1 Tổng quan về mật mã công khai Mật mã khóa công khai (public key cryptography) còn có tên gọi khác là mật mã bất đối xứng (asymmetric cryptography) hoặc mật mã hai khóa (two- key cryptography) để chỉ tất cả các thuật toán mật mã trong đó dùng hai khóa khác nhau cho quá trình mã hóa và quá trình giải mã Chúng ta rõ rằng các bên tham gia cần có một khóa mật để mã hóa... bản mã (Alice) tạo ra một khóa mật (private key) và từ khóa mật tính ra khóa công khai (public key) với một thủ tục không phức tạp, còn việc tìm khóa mật khi biết khóa công khai là bài toán khó giải được Khóa công khai sẽ đưa đến cho người gửi bản tin (Bob) qua kênh công cộng Và bản tin được Bob mã hóa bằng khóa công cộng Bản mã truyền đến Alice, và nó được giải mã bằng khóa mật Nguyên tắc hoạt động:... thống mật mã khóa công khai tương tự như một hệ thống mật mã quy ước, chỉ khác nhau ở chi tiết dùng hai khóa K khác nhau cho hai bước mã hóa và giải mã Các bước cơ bản của một hệ thống mật mã dùng khóa công khai bao gồm: + Mỗi thực thể thông tin (user) tạo ra một cặp khóa để dùng cho việc mã hóa và giải mã + Mỗi user thông báo một trong hai khóa của mình cho các user khác biết, khóa này gọi là khóa công. .. rạc”) Hệ mật mã khoá công khai còn được gọi là hệ mật mã phi (bất) đối xứng sử dụng một cặp khoá, khoá mã hoá còn gọi là khoá công khai (public key) và khoá giải mã được gọi là khoá bí mật hay khóa riêng (private key) 35 Trong hệ mật này, khoá mã hoá khác với khoá giải mã Về mặt toán học, từ khoá công khai rất khó tính được khóa riêng Biết được khoá này không dễ dàng tìm được khóa kia Khóa giải mã được... Việc giữ bí mật khóa mật đồng nghĩa với việc giữ mật thông tin Nên việc trao đổi khóa chỉ diễn ra trên kênh mật thì mới đảm bảo được, thế nhưng việc trao đổi này cũng không phải dễ để đảm bảo độ an toàn cao Từ đây hình thành nên ý tưởng của mật mã công khai Tức là không cần phải trao đổi khóa mật qua kênh nữa Nói chung, mật mã khóa công khai không phải là một kỹ thuật mật mã an toàn so với mật mã đối xứng,... và giải mã Đặc trưng của kỹ thuật mật mã bất đối xứng là dùng hai khóa riêng biệt cho hai quá trình mã hóa và giải mã Một trong hai khóa được phổ biến công khai gọi là khóa công khai (public key hay PU), khóa còn lại được giữ bí mật gọi là khóa riêng (private key hay PR) Nếu quá trình mã hóa dùng khóa PU thì quá trình giải mã dùng khóa PR và ngược lại Điều này đồng nghĩa với việc trao đổi khóa mật qua... hệ mật RSA, dựa vào độ khó logarithm rời rạc như hệ mật ElGamal, hay dựa trên đường cong Elliptíc Nhưng trước tiên chúng ta đi tìm hiểu sơ đồ và nguyên tắc mã và giải mã của hệ mật công khai 33 Sơ đồ của hệ mã công khai được cho ở hình 3 Hình 3: Sơ đồ mã hóa công khai Hệ mã công khai sử dụng hai khóa có quan hệ toán học với nhau, tức là một khóa này được hình thành từ khóa kia: Người muốn nhận bản mã. .. dụng rộng rãi trong liên lạc và bảo mật máy tính 2.1.3 Một số thuật ngữ về Mật mã học Việc nghiên cứu tìm các phương thức để phá vỡ việc sử dụng mật mã được gọi là phân tích mật mã, hay phá mã Mật mã hóa và phân tích mật mã đôi khi được nhóm lại cùng nhau dưới tên gọi chung mật mã học, nó bao gồm toàn bộ các chủ đề liên quan đến mật mã Trong thực tế, thuật ngữ mật mã hóa thường được sử dụng để nói đến... thống khóa công khai được triển khai rộng rãi như hệ RSA, hệ ElGamal sử dụng giao thức trao đổi khoá Diffie-Hellman và nổi lên trong những năm gần đây là hệ đường cong Elliptic Trong số các hệ mật mã trên thì hệ RSA là hệ được cộng đồng chuẩn quốc tế và công nghiệp chấp nhận rộng rãi trong việc thực thi mật mã khoá công khai 2.2.2 Ứng dụng của mật mã khóa công khai (mật mã bất đối xứng) Mật mã bất đối xứng... bí mật trong khi khóa mã hoá được công bố công khai Một người bất kỳ có thể sử dụng khóa công khai để mã hoá tin tức, nhưng chỉ có người nào có đúng khoá giải mã mới có khả năng xem được bản rõ Người gửi A sẽ mã hoá thông điệp bằng khóa công của người nhận và người nhận B sẽ giải mã thông điệp với khoá riêng tương ứng của mình, quá trình này được mô tả trong hình 4 và hình 5 Có nhiều hệ thống khóa công ... 32 2.2 Mật mã khóa công khai 2.2.1 Tổng quan mật mã công khai Mật mã khóa công khai (public key cryptography) có tên gọi khác mật mã bất đối xứng (asymmetric cryptography) mật mã hai khóa (two-... nguyên tắc mã giải mã hệ mật công khai 33 Sơ đồ hệ mã công khai cho hình Hình 3: Sơ đồ mã hóa công khai Hệ mã công khai sử dụng hai khóa có quan hệ toán học với nhau, tức khóa hình thành từ khóa kia:... nên ý tưởng mật mã công khai Tức không cần phải trao đổi khóa mật qua kênh Nói chung, mật mã khóa công khai kỹ thuật mật mã an toàn so với mật mã đối xứng, mà độ an toàn thuật toán mã nói chung