1. Trang chủ
  2. » Luận Văn - Báo Cáo

Mật mã khóa công khai (KL7465)

33 212 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Lời cảm ơn

  • Lời cam đoan

  • Mở đầu

  • Lý thuyết số và trường hữu hạn

    • Số ở các cơ số khác nhau

    • Bậc O lớn

    • Phép chia và thuật toán Euclid

      • Các ước và phép chia.

      • Thuật toán Euclid

    • Đồng dư thức

      • Định nghĩa

      • Tính chất

    • Trường hữu hạn

  • Mật mã khóa công khai

    • Một số thuật ngữ và khái niệm

    • Ý tưởng về mật mã khóa công khai

    • RSA

    • Logarit rời rạc

      • Hệ trao đổi chìa khóa của Diffle-Hellman

      • Hệ mật truyền thông tin Massey-Omura

      • Hệ mật Elgamal.

    • Hệ mật mã sắp ba lô

  • Kết luận

  • Tài liệu tham khảo

Nội dung

TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA TOÁN **************** ĐOÀN THỊ THU THẢO MẬT MÃ KHÓA CÔNG KHAI KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Chuyên ngành: Toán ứng dụng Người hướng dẫn khoa học: T.S Trần Vĩnh Đức LỜI CẢM ƠN Bài khóa luận hoàn thành hướng dẫn nhiệt tình thầy giáo T.S Trần Vĩnh Đức Qua em xin gửi lời cảm ơn sâu sắc tới thầy cô tổ Toán ứng dụng thầy cô khoa Toán trường ĐHSP Hà Nội giúp đỡ em trình học tập để thuận lợi cho việc nghiên cứu Đặc biệt, em xin gửi lời cảm ơn chân thành tới thầy giáo T.S Trần Vĩnh Đức người dành cho em hướng dẫn nhiệt tình, chu đáo bảo cho em suốt trình học tập nghiên cứu thực khóa luận Dù cố gắng, lần làm quen với việc nghiên cứu khoa học lực hạn chế nên khó tránh khỏi sai sót Em mong muốn nhận bảo, đóng góp quí thầy cô khóa luận tốt Em xin chân thành cảm ơn! Hà Nội, ngày 07 tháng 05 năm 2015 Sinh viên Đoàn Thị Thu Thảo LỜI CAM ĐOAN Em xin cam đoan khóa luận thân nghiên cứu với hướng dẫn thầy giáo T.S Trần Vĩnh Đức không trùng với đề tài Hà Nội, ngày 07 tháng 05 năm 2015 Sinh viên Đoàn Thị Thu Thảo Mục lục Lời cảm ơn Lời cam đoan Mở đầu Lý 1.1 1.2 1.3 thuyết số trường hữu hạn Số số khác Bậc O lớn Phép chia thuật toán Euclid 1.3.1 Các ước phép chia 1.3.2 Thuật toán Euclid 1.4 Đồng dư thức 1.4.1 Định nghĩa 1.4.2 Tính chất 1.5 Trường hữu hạn Mật mã khóa công khai 2.1 Một số thuật ngữ khái niệm 2.2 Ý tưởng mật mã khóa công khai 2.3 RSA 2.4 Logarit rời rạc 2.4.1 Hệ trao đổi chìa khóa Diffle-Hellman 2.4.2 Hệ mật truyền thông tin Massey-Omura 2.4.3 Hệ mật Elgamal 2.5 Hệ mật mã ba lô Kết luận 7 9 11 12 12 12 15 17 17 20 21 25 26 27 27 28 31 Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức Tài liệu tham khảo Đoàn Thị Thu Thảo 32 K37C-SPT ĐHSP Hà Nội MỞ ĐẦU Lý chọn đề tài Hiện giới, mạng máy tính ngày đóng vai trò thiết yếu lĩnh vực hoạt động toàn xã hội Nó trở thành phương tiện trao đổi thông tin liệu nhu cầu bảo mật thông tin đặt lên hàng đầu Trên giới có nhiều giải pháp mã hóa thông tin theo công nghệ dựa thuật toán có độ phức tạp cao sản phẩm loại bắt đầu thương mại hóa Tuy nhiên mức độ bảo mật tốc độ xử lý loại sản phẩm khác Mặt khác dù có thuật toán tốt không nắm bắt khía cạnh công nghệ bảo mật cách bịt hết kẽ hở mà tin tặc dễ dàng công.Vì vậy, để bảo vệ thông tin "nhạy cảm", thông tin mang tính bí mật cao, người ta phải mã hóa chũng hệ mật mã trước truyền Do ý nghĩa quan trọng việc mã hóa thông tin nên em chọn đề tài "Mật mã khóa công khai" để tìm hiểu nghiên cứu sâu vấn đề Đối tượng, phạm vi nghiên cứu Đối tượng: Mật mã khóa công khai Phạm vi: Tìm hiểu mật mã khóa công khai trọng đến số hệ mã khóa công khai Nhiệm vụ nghiên cứu Nghiên cứu mật mã khóa công khai Mục đích nghiên cứu Tìm hiểu sơ qua công nghệ mã hóa thông tin cụ thể số hệ mật mã khóa công khai Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức Phương pháp nghiên cứu Nghiên cứu tài liệu, phân tích, tổng hợp dựa kết số học lý thuyết số Nội dung khóa luận Nội dung khóa luận gồm chương: • Lý thuyết số trường hữu hạn • Mật mã khóa công khai Do thời gian thực đề tài không nhiều, kiến thức hạn chế nên báo cáo không tránh khỏi sai sót Tác giả mong nhận góp ý ý kiến phản biện quý thầy cô bạn đọc Xin chân thành cảm ơn! Đoàn Thị Thu Thảo K37C-SPT ĐHSP Hà Nội Chương Lý thuyết số trường hữu hạn 1.1 Số số khác Định nghĩa 1.1.1 Một số tự nhiên n viết với số b kí hiệu dãy n có dạng (dk−1 dk−2 d1 d0 )b , (với d kí hiệu số nguyên b − 1); tức n = dk−1 bk−1 + dk−2 bk−2 + + d1 b + d0 Nếu dk−1 = 0, ta gọi n số có k -chữ số số b Mọi số bk−1 bk số k -chữ số với số b Nhận xét 1.1.2 Bỏ qua dấu ngoặc đơn số trường hợp hệ thập phân (b = 10) số trường hợp khác Kí hiệu hữu ích làm việc số lớn 10, cách sử dụng đại số số tùy ý để quy ước từ số Phân số mở rộng số, biểu diễn dạng (dk−1 dk−2 d1 d0 d−1 d−2 )b Khi b > 10 thường sử dụng số lớn Ngoài sử dụng chữ cho tất chữ số Ví dụ a) (11001001)2 = 201, b) Khi b = 26 cho phép ta sử dụng chữ A − Z tương ứng với số từ − 25 Thì (BAD)26 = 679, (B.AD)26 = 676 Ví dụ Đổi 106 sang số 2, 26 (Sử dụng chữ từ A − Z chữ số trường hợp sau): 106 = (11110100001001000000)2 = (11333311)7 = (CEXHO)26 Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức Nếu số nguyên n biểu diễn số b có k chữ số thỏa mãn bk−1 ≤ n < bk số chữ số n tính theo công thức: k = [logb n] + = log n +1 log b kí hiệu ” log ” nghĩa logarit tự nhiên loge [ ] phần nguyên số 1.2 Bậc O lớn Định nghĩa 1.2.1 Giả sử f (n) g(n) hai hàm số xác định tập hợp số nguyên dương Ta nói f (n) có bậc O-lớn g(n) viết f (n) = O(g(n)) (hoặc f = O(g)) có tồn số C > cho với n đủ lớn, hàm f (n) g(n) dương, đồng thời f (n) < C.g(n) Ví dụ a) Cho f (n) đa thức có bậc d có hệ số dương Dễ dàng chứng minh f (n) = O(nd ) b) ∀e > ta có: log n = O(ne ) c) Nếu f1 (n) = O(g(n)), f2 (n) = O(g(n)) f1 + f2 = O(g) d) Nếu f1 (n) = O(g1 (n)), f2 (n) = O(g2 (n)) f1 f2 = O(g1 g2 ) e) Nếu tồn giới hạn hữu hạn f (n) n→∞ g(n) lim f = O(g) Định nghĩa 1.2.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 toán cần thiết thực thuật toán không vượt O(logd 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(k d ), tức tương đương với đa thức k Đoàn Thị Thu Thảo K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp 1.3 1.3.1 GVHD: T.s Trần Vĩnh Đức Phép chia thuật toán Euclid Các ước phép chia Định nghĩa 1.3.1 Cho số nguyên a b, ta nói a chia hết b (hoặc b chia hết cho a) ta viết a | b tồn số nguyên d cho b = ad Khi ,ta nói a ước b Tất số nguyên b > có hai ước dương b Định nghĩa 1.3.2 Số nguyên tố số nguyên lớn có hai ước dương Số nguyên lớn số nguyên tố gọi hợp số Tính chất 1.3.3 Nếu a | b c ∈ Z, a | bc Nếu a | b b | c, a | c Nếu a | b a | c, a | b ± c Nếu p số nguyên tố α ∈ N Kí hiệu pα | b nghĩa pα lũy thừa cao p chia b, tức pα | b pα+1 b Khi đó, ta nói pα ước thực b Định lí 1.3.4 (Định lý số học): Mọi số tự nhiên lớn phân tích thành thừa số nguyên tố, phân tích không kể đến thứ tự thừa số Chứng minh a) Sự phân tích Giả sử a ∈ N a > Khi đó, a có số nguyên tố p1 ta có: a = p1 a1 , a1 ∈ N Nếu a1 = a = p1 phân tích tầm thường a Nếu a1 > theo lý luận trên, a1 có ước nguyên tố p2 ta có: a1 = p2 a2 , a2 ∈ N nên a = p1 p2 a2 Nếu a2 = a = p1 p2 phân tích a Nếu a2 > theo lý luận trên, a2 có ước nguyên tố p3 , Quá trình phải kết thúc, nghĩa có n cho an = 1, an−1 = p số nguyên tố, ta có: a, a1 , a2 , dãy số tự nhiên giảm Như ta a = p1 p2 pn phân tích a thành tích thừa số nguyên tố Đoàn Thị Thu Thảo K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức văn gốc cung cấp đơn vị thông tin văn mã Nói cách khác, ánh xạ f từ tập P gồm tất đơn vị thông tin văn gốc đến tập C gồn tất đơn vị thông tin văn mã Ta luôn giả sử f phép tương ứng − Tức cho đơn vị thông tin văn mã, có đơn vị thông tin văn gốc mà gọi mật mã Một phép giải mã ánh xạ f −1 ngược lại từ văn mã đến văn gốc Biểu diễn dạng sơ đồ: f f −1 P→ − C −−→ P Mọi thiết lập gọi mật mã Việc phải làm hệ mật mã mã hóa đơn vị thông tin thành đối tượng toán học để từ hàm mã hóa xây dựng dễ àng Các đối tượng toán học thường dùng số nguyên khoảng giới hạn Ví dụ, đơn vị thông tin văn gốc văn mã chữ đơn giản từ 26 chữ bảng chữ A − Z , kí hiệu tương ứng số nguyên 0, 1, 2, , 25 cách đặt: A → 0, B → 1, · · · , X → 23, Y → 24, Z → 25 Thêm nữa, đơn vị thông tin ta chữ ghép 27 chữ bảng chữ từ A-Z khoảng trắng Đầu tiên, phải cho khoảng trống tương ứng số 26, sau kí hiệu chữ ghép mà bao gồm hai chữ tương ứng x, y ∈ {0, 1, 2, , 26} số nguyên 27x + y ∈ {0, 1, , 728} Do đó, phải xem xét riêng lẻ chữ chữ số với số 27 coi chữ ghép hai chữ số nguyên số Ví dụ, chữ ghép "NO" tương ứng với số nguyên 27.13 + 14 = 365 Tương tự, sử dụng nhóm có ba chữ đơn vị thông tin chúng, kí hiệu số nguyên 729x + 27y + z ∈ {0, 1, , 19682} Nói chung, kí hiệu khối k chữ N -chữ bảng chữ số nguyên N k − phần khối k -chữ số nguyên số N Trong số tình huống, đơn vị thông tin mã hóa đối tượng toán học khác số nguyên Ví dụ, vecto điểm số đường cong Nhưng mục xem xét số nguyên Xét bảng chữ gồm N chữ đặt tương ứng với số 0, 1, , N − Đoàn Thị Thu Thảo 18 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức xét b số nguyên cố định Ta định nghĩa hàm mã hóa f quy tắc C = f (P ) ≡ P + b mod N Ví dụ, hệ mật Julius Caesar trường hợp đặc biệt N = 26, b = Để giải mã mã C ∈ {0, 1, , N − 1}, ta tính P = f −1 (C) ≡ C − b mod N Giả sử thông tin mã hóa giải mã không bí mật dường đọc mã thông tin Đây gọi phá vỡ mã theo khoa học mã phá vỡ gọi mật mã Để phá mã, ta cần hai loại thông tin Thứ tính chất chung (cấu trúc) hệ Ví dụ, hệ mật sử dụng phép biến đổi đơn thư 26-chữ bảng chữ từ A − Z tương ứng với số từ − 25 Loại thông tin thứ hai hiểu biết lựa chọn cụ thể tham số biết kết nối với mật mã Trong ví dụ, loại thông tin thứ hai người ta cần biết lựa chọn tham số thay đổi b Một có thông tin, cần mã hóa giải mã công thức C ≡ P + b mod N, P ≡ C − b mod N Người ta thừa nhận thông tin cấu trúc chung biết Trong thực tế, sử dụng mật mã thường có thiết bị mã hóa giải mã mà xây dựng thiết bị loại hệ mật Qua kì thông tin loại có hệ thống sử dụng bị rò rỉ Do đó, để tăng bảo mật phải thường xuyên thay đổi lựa chọn tham số sử dụng với hệ thống Tham số b gọi chìa khóa, xác hơn, gọi khóa mã hóa Do vậy, loại hệ mật đơn giản Nó dễ dàng để phá vỡ Một cải thiện sử dụng nhiều loại thông tin chung (Z/N Z), gọi ánh xạ afin: C ≡ aP + b mod N với a b số nguyên cố định Tóm lại, hệ mật afin N -chữ bảng chữ với tham số Đoàn Thị Thu Thảo 19 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức a ∈ (Z/N Z)∗ b ∈ (Z/N Z) thỏa mãn quy tắc: C ≡ aP + b P ≡aC +b mod N, mod N Với: a = a−1 (Z/N Z)∗ , b = −a−1 b Một trường hợp đặc biệt hệ mật afin, thiết lập a = 1, qua thu phép biến đổi Trường hợp đặc biệt khác b = 0: P ≡ a.C C ≡ a−1 P mod N, mod N Trường hợp b = gọi phép biến đổi tuyến tính, nghĩa ánh xạ từ tổng đến tổng, có nghĩa là, C1 mật mã hóa P1 C2 mật mã hóa P2 , C1 + C2 mật mã hóa P1 + P2 (tất nhiên phải thêm mod N ) 2.2 Ý tưởng mật mã khóa công khai Hệ mật mã bao gồm phép mã hóa f từ tập P gồm tất rõ đến tập C gồm tất mã Thuật ngữ "hệ mật mã" thường để họ phép biến đổi, phép biến đổi tương ứng với cách chọn tham số (tập P C ánh xạ f , phụ thuộc vào giá trị tham số) Ví dụ, N -chữ bảng chữ cố định (với chữ có giá giá trị số tương ứng) Ta xét hệ mật mã afin tương ứng với cặp a ∈ (Z/N Z)∗ b ∈ Z/N Z ánh xạ từ P = Z/N Z đến C = Z/N Z xác định C ≡ aP + b mod N Trong ví dụ này, tập P C cố định (vì N cố định), phép mã hóa f thay đổi phụ thuộc vào việc chọn tham số a, b Phép mã hóa f mô tả thuật toán giá trị tham số Các giá trị tham số gọi khóa mã hóa KE Trong ví dụ này, KE cặp (a, b) Đoàn Thị Thu Thảo 20 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức Để giải mã, tức để tính f −1 , người ta cần thuật toán khóa Khóa gọi khóa giải mã KD Trong ví dụ này, giải mã ánh xạ afin, nghĩa P ≡ a−1 C − a−1 b mod N, phép giải mã sử dụng thuật toán giống phép mã hóa, ngoại trừ khóa khác, khoá giải mã KD cặp a−1 , −a−1 b Ta giả sử thuật toán giải mã mã hóa công khai khóa KE , KD bí mật 2.3 RSA Khi tìm kiếm hàm cửa sập f để sử dụng cho hệ thống mật mã khóa công khai, mặt người ta mong muốn ý tưởng phải đơn giản mặt khái niệm để từ dễ cài đặt máy tính Mặt khác, người ta muốn có chứng thực nghiệm mạnh – dựa lịch sử lâu dài nỗ lực tìm kiếm thuật toán cho f −1 – việc giải mã thực khóa giải mã bí mật Vì lý này, tự nhiên, người ta tìm đến toán kinh điển lý thuyết số: toán phân tích thừa số số lớn Hệ mật mã RSA (theo tên người phát minh nó: Rivest, Shamir Adleman)– phát minh lâu đời hệ thống mã hóa khóa công khai phổ biến nhất– dựa tính khó toán phân tích thừa số nguyên tố số lớn Bây mô tả thuật toán RSA Đầu tiên, ta chọn hai số nguyên tố lớn p q (khoảng 100 chữ số thập phân), tính n = pq Biết thừa số n, ta dễ dàng tính toán ϕ(n) = (p − 1)(q − 1) Tiếp theo, người dùng chọn ngẫu nhiên số nguyên e, ≤ e ≤ ϕ(n) cho UCLN(e, ϕ(n)) = Nhận xét 2.3.1 Ta nói "ngẫu nhiên" nghĩa số lựa chọn với giúp đỡ phần tử sinh ngẫu nhiên (hoặc phần tử sinh "giả ngẫu Đoàn Thị Thu Thảo 21 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức nhiên"), tức chương trình máy tính tạo dãy số bị trùng lặp khó dự đoán Nó thỏa mãn nhiều tính chất dãy ngẫu nhiên thật Có nhiều tài liệu mô tả cách hiệu an toàn để tạo số ngẫu nhiên Trong hệ mật RSA, ta cần sinh ngẫu nhiên e số nguyên tố lớn p q Làm để sinh ngẫu nhiên số nguyên tố? Đầu tiên ta lấy ngẫu nhiên số nguyên m lớn Nếu m chẵn, tăng m lên Sau đó, áp dụng thuật toán kiểm tra tính nguyên tố để xem số lẻ m số nguyên tố Nếu m không số nguyên tố, ta thử với m + 2, sau m + 4, , tìm số nguyên tố > m Ta coi số số nguyên tố ngẫu nhiên Theo lý thuyết phân bố số nguyên tố, ta cần làm khoảng 1/ log(m) lần tìm số nguyên tố lớn m Số ngẫu nhiên e nguyên tố với ϕ(n) chọn cách sau: Đầu tiên, sinh số nguyên ngẫu nhiên (lẻ), sau tăng tìm e với UCLN(e, ϕ(n)) = Bây giờ, người dùng A chọn hai số nguyên tố pA , qA số ngẫu nhiên eA nguyên tố với (pA − 1)(qA − 1) Tiếp theo, A tính: nA = pA qA , ϕ(nA ) = nA + − pA − qA và, tính khóa bí mật dA ≡ e−1 A mod ϕ(nA ) Người ta công khai khóa mã hóa KE,A = (nA , eA ) giữ bí mật khóa giải mã KD,A = (nA , dA ) Phép mã hóa ánh xạ từ Z/nA Z vào cho f (P ) ≡ P eA mod nA Phép giải mã ánh xạ từ Z/nA Z vào cho f −1 (C) ≡ C dA mod nA Dễ thấy, hai ánh xạ nghịch đảo với nhau, lựa chọn dA Cụ thể, biểu diễn f theo f −1 f −1 theo f có nghĩa nâng lên lũy thừa Đoàn Thị Thu Thảo 22 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức dA eA lần Nhưng vì, dA eA dư chia ϕ(n), điều giống việc nâng lên lũy thừa Dường người ta làm việc với tập P = C đơn vị thông tin văn gốc văn mã thay đổi theo người dùng khác Trong thực tế, người ta muốn chọn P C thống toàn hệ thống Ví dụ, giả sử ta làm việc với N -chữ bảng chữ Chọn số nguyên dương k < cho N k N có khoảng 200 chữ số thập phân Ta lấy toàn khối k -chữ làm đơn vị thông tin văn gốc coi k chữ số có số N Tức là, ta đưa số tương đứng nằm khoảng N k Tương tự, ta lấy khối chữ bảng chữ N -chữ làm đơn vị thông tin văn mã Sau đó, người dùng phải chọn hai số nguyên tố lớn pA qA từ ta có: nA = pA qA thỏa mãn N k < nA < N Khi đó, đơn vị thông tin văn gốc, tức số nguyên nhỏ N k , tương ứng với phần tử Z/nA Z Khi nA < N , ảnh f (P ) ∈ Z/nA Z biểu diễm khối -chữ Ví dụ Chọn N = 26, k = 3, = Tức là, văn gốc gồm nhóm ba chữ văn mã bao gồm nhóm bốn chữ 26 chữ bảng chữ Để gửi tin nhắn "YES" đến người dùng A với khóa mã hóa (nA , eA ) = (46927, 39423) Đầu tiên, chúng tìm "YES" có số tương đương là: 24.262 + 4.26 + 18 = 16346, sau tính 1634639423 ≡ 21166 mod 46927; mà 21166 = 1.263 + 5.262 + 8.26 + = "BFIC" Người nhận A biết khóa giải mã (nA , dA ) = (46927, 26767) tính 2116626767 ≡ 16346 mod 46927 mà 16346 = "YES" Làm để người sử dụng A tạo khóa cho mình? Đầu tiên, người ta nhân pA = 281 qA = 167 nA = 46927 Tiếp theo, chọn eA cho UCLN(eA , 280) = UCLN(eA , 166) = Suy eA = 39423 Tiếp tục, tìm dA ≡ e−1 mod 280.166 = 26767 Các số A pA , qA , dA nhớ bí mật Đoàn Thị Thu Thảo 23 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức Trong ví dụ trên, bước tốn thời gian tính lũy thừa modun, ví dụ: 1634639423 mod 46927 Tuy nhiên, bước áp dụng phương pháp bình phương liên tiếp phép toán bit O(k ), với k số bit tập số nguyên Trên thực tế, người sử dụng A làm việc với số nguyên lớn nhiều bước tốn nhiều thời gian tìm hai số nguyên tố lớn pA qA Để nhanh chóng lựa chọn thích hợp số nguyên tố lớn, người ta phải sử dụng hiệu phương pháp kiểm tra tính nguyên tố Nhận xét 2.3.2 Trong việc chọn p q , người sử dụng A nên quan tâm đến điều kiện định Điều quan trọng là: p q phải có cỡ lớn xấp xỉ nhau; UCLN(p − 1, q − 1) phải nhỏ hai có thừa số nguyên tố lớn Trong chương 1, n tích hai số nguyên tố p q , biết ϕ(n) tương đương biết thừa số n Giả sử, để phá vỡ hệ RSA số nguyên dương d cho: aed ≡ a mod n với a nguyên tố với n Điều tương đương với ed − bội BCNN(p − 1, q − 1) Thực sự, biết ϕ(n) ổn biết số nguyên m = ed − Tuy nhiên, phương pháp với xác suất cao sử dụng số nguyên m để tìm thừa số n Vì vậy, ta giả sử biết n – tích hai số nguyên tố chưa biết biết số nguyên m cho: am ≡ mod n với a nguyên tố với n Làm để gửi chữ kí RSA? Khi chứng thực thảo luận phần cuối, ta giả sử đơn giản P = C Một thiết lập phức tạp RSA Đó có cách để tránh vấn đề khác nA khối kích thước khác (k < ) Giả sử, A gửi chữ kí cô ( văn gốc P ) tới B A biết khóa mã hóa B : KE,B = (nB , eB ) khóa giải mã cô ấy: KD,A = (nA , dA ) A gửi fB fA−1 (P ) nA < nB , fA−1 fB (P ) nA > nB Đó là, trường hợp trước, A lấy thặng dư dương bé P dA mod nA Sau Đoàn Thị Thu Thảo 24 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức e đó, với số modun nB , A tính P dA modnA B mod nB , A gửi đơn vị thông tin văn mã Trong trường hợp nA > nB , A tính P eB mod nB sau làm việc với modul nA , A nâng lên lũy thừa dA Rõ ràng, B xác minh tính xác thực thông tin trường hợp cách nâng lên lũy thừa dB modun nB sau lũy thừa eA modun nA Trong trường hợp thứ hai, B làm hai phép toán theo thứ tự ngược lại 2.4 Logarit rời rạc Trên thực tế, hệ mật mã RSA dựa ý tưởng rằng: Tìm kiếm hai số nguyên tố lớn nhân chúng lại với để có n dễ dàng nhiều so với việc phân tích số n thành thừa số nguyên tố Có nhiều toán khác lý thuyết số dường có tính chất "cửa sập" "một chiều" Ví dụ, toán tính lũy thừa lớn số trường hữu hạn Với trường số thực, việc nâng lên lũy thừa (tìm bx với độ xác định) không dễ dàng so với phép toán ngược (tìm logb x với độ xác định) Còn nhóm hữu hạn (Z/nZ)∗ Fq∗ , dùng phương pháp bình phương liên tiếp, người ta tính dễ dàng bx ; cho trước phần tử y có dạng bx (chúng ta giả sử số b cố định, liệu ta tính x = logb y ? Câu hỏi gọi "bài toán logarit rời rạc" Định nghĩa 2.4.1 Xét nhóm hữu hạn G, phần tử sinh b thuộc G, phần tử y lũy thừa b g Logarit rời rạc y với số b số x thỏa mãn bx = y ∗ Ví dụ 10 Nếu lấy G = F19 = (Z/19Z)∗ cho b có phần tử sinh 2, logarit rời rạc số Ví dụ 11 Trong F9∗ với α nghiệm X − X − 1, logarit rời rạc −1 số α Bây giờ, mô tả số hệ thống mật mã khóa công khai hay phương pháp trao đổi khóa dựa tính toán khó khăn việc giải toán logarit rời rạc trường hữu hạn Đoàn Thị Thu Thảo 25 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp 2.4.1 GVHD: T.s Trần Vĩnh Đức Hệ trao đổi chìa khóa Diffle-Hellman Do hệ mật mã khóa công khai chậm so với hệ thống mã hóa đối xứng (cổ điển) nên người ta thường kết hợp với hệ mật mã đối xứng theo cách sau: hệ khóa công khai dùng trao đổi khóa bí mật, sau có khóa bí mật người ta mã hóa hệ mật mã đối xứng truyền Đặc biệt, trình thống khóa chung cho hệ mật mã đối xứng thực hiệu sử dụng hệ thống khóa công khai Đề xuất chi tiết thực hóa điều W Diffie M.E Hellman Giả sử A B muốn có chung số để làm chìa khóa chung (cho hệ mã đối xứng đó) Giả sử kA kB khóa bí mật A B , g kA g kB khóa công khai A B Vậy họ chọn số P = g kA kB làm khóa chung Rõ ràng, A B tính P cách dễ dàng (bằng cách lấy số mà người công bố công khai nâng lên lũy thừa với bậc chìa khóa bí mật mình) Điều thú vị không khác có khả tính số P kA kB việc tính logarit rời rạc không khả thi Nếu nhu cầu trao đổi thông tin lớn A B không nên dùng số P nói để làm chìa khóa cho trao đổi thông tin mật (vì bị lộ trước công cụ thám mã ngày mạnh) Khi A B sử dụng chung số khác cho lần trao đổi thông tin khác Muốn vậy, A chọn ngẫu nhiên số a gửi cho B giá trị X = g a , B chọn ngẫu nhiên số b gửi cho A giá trị Y = g b Khi đó, hai người dễ dàng tính số chung sau đây: K = Y a = gb a = (g a )b = X b Trong người "ngoài cuộc" biết số X, Y mà từ tính K (trong thời gian chấp nhận được) Đoàn Thị Thu Thảo 26 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp 2.4.2 GVHD: T.s Trần Vĩnh Đức Hệ mật truyền thông tin Massey-Omura Giả sử Fq trường hữu hạn, F cố định biết công khai Hệ thống bí mật lựa chọn ngẫu nhiên số nguyên e q − cho UCLN(e, q − 1) = sử dụng thuật toán Euclid mở rộng để tính d = e−1 mod q − de ≡ mod q − tức Nếu người sử dụng A muốn gửi thông tin P tới người sử dụng B , họ tương tác với sau: A gửi P eA cho B B tính eB gửi P eA eB cho A A giải mã phần cách nâng lên lũy thừa dA Vì P dA eA = P nên P eA eB dA = PBe Và A gửi trả lại P eB tới B Vậy B đọc thông tin cách nâng lên lũy thừa dB 2.4.3 Hệ mật Elgamal Giả sử A muốn chuyển cho B thông tin mật P (đã chuyển sang dạng số hóa nằm khoảng giũa p) Khi đó, A cần chọn ngẫu nhiên số a nằm khoảng p−1 gửi cho B cặp số g a , P g akB Cặp số dễ dàng tính nhờ biết trước phần tử sinh g khóa công khai g kB B Khi nhận cặp số này, B tính P thủ tục gồm hai bước: Lấy số thứ (trong cặp số) nâng lên lũy thừa với bậc khóa bí mật mình, tức nhận được: (g a )kB = g a.kB Đoàn Thị Thu Thảo 27 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức Lấy nghịch đảo số vừa nhận theo mod p thuật toán Euclid nhân với số thứ hai (trong cặp số nói), tức có: g akB −1 P.g akB = g akB −1 g akB P = P Rõ ràng, B không thực điều này, hệ mã an toàn Tuy nhiên A cần phải thận trọng lấy số ngẫu nhiên a để không đoán (mỗi lần nên dùng số khác nhau) Nếu kẻ thứ ba có a lấy chìa khóa công khai B để nâng lên lũy thừa bậc a giải mã P B làm bươc thứ hai 2.5 Hệ mật mã ba lô Vào năm 1978, Merkle Hellman đề xuất thuật toán theo mô hình khóa công khai dựa "bài toán Ba lô" Bài toán ba lô phát biểu sau: Cho tập hợp số nguyên dương , ≤ i ≤ k số T dương Hãy tìm tập hợp số S ⊂ {1, 2, , k} cho: = T i∈S Từ toán Ba lô khảo sát khả vận dụng để tạo thuật toán mã khối mật mã khóa công khai Sơ đồ sau: • Chọn vecto a = (a1 , a2 , , ak ) - gọi vecto mang (cargo vector) • Với khối tin X = (X1 , X2 , , Xk ), ta thực phép mã hóa sau: T = X i i=1,k • Việc giải mã là: Cho mã T , vecto mang a, tìm Xi cho thỏa mãn T = Xi i=1,k Đoàn Thị Thu Thảo 28 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức Sơ đồ thể hàm chiều: mã hóa tính toán dễ dàng việc giải mã, tức tính hàm ngược nó, khó Bây ta tiếp tục tìm cách đưa vào cửa sập để giải mã làm dễ dàng (nếu biết cửa sập bí mật) Merkle áp dụng mẹo dựa sử dụng vecto mang đặc biêt vecto siêu tăng sau Một vecto siêu tăng thành phần i + lớn tổng giá trị thành phần đứng trước (1 ÷ i) Khi sử dụng vecto siêu tăng làm vecto mang thấy việc tính ngược, tức giải toán ba lô dễ dàng nhờ giải thuật tham lam đơn giản Ở bước i, tổng đích Ti (tức phải tìm để tổng Ti ) ta đem so sánh Ti với thành phần lớn phần lại vecto, lớn thành phần chọn tức Xi tương ứng 1, ngược lại Xi tương ứng Sau tiếp tục chuyển sang bước sau với: Ti+1 = Ti − Xi Mặc dù ta thấy sử dụng vecto siêu tăng vecto mang cho phép giải mã dễ dàng nhưng, tất nhiên, ta phải làm có người chủ biết sử dụng kẻ thù không Tốm lại, cần tạo bí mật cửa sập thông qua việc người chủ phải chủ động "ngụy trang" vecto siêu tăng để có biết người lần Sơ đồ sau trình bày chế ngụy trang Vecto a vecto siêu tăng bí mật, ngụy trang, tức biến đổi thông qua hàm g chọn sẵn để tạo thành vecto a tính siêu tăng (thậm chí giảm); vecto a sử dụng làm vecto mang Trong qua trình giải mã, người gửi A thực biến đổi vào liệu, sở áp dụng hàm ngược g −1 , chuyển việc giải mã thành giải toán ba lô với vecto siêu tăng vecto đa mang Phép biến đổi g chọn phép nhân đồng dư vói giá trị khóa bí mật Tạo khóa: A chọn vecto siêu tăng: a = (a1 , a2 , , ak ) a giữ bí mật tức thành phần khóa bí mật Sau chọn số nguyên m > , gọi modul đồng dư số nguyên ngẫu nhiên n gọi nhân tử cho nguyên tố với m Khóa công khai A vecto a tích a với n: Đoàn Thị Thu Thảo 29 K37C-SPT ĐHSP Hà Nội Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức a = (a1 , a2 , , ak ) = n × mod m; i = 1, 2, , k Còn khóa bí mật ba (a , m, n) Mã hóa: Khi B muốn gửi thông báo X cho A, tính mã theo công thức: T = X i Giải mã: A nhận T , giải mã sau: Để bỏ lớp ngụy trang, trước hết A tính n−1 , tính T = T × n−1 mod m A biết T = a X nên cô ta dễ dàng giải X theo siêu tăng a Như vậy, ta xét xong sơ đồ cụ thể Merkle-Hellman hệ mật mã khóa công khai dựa toán ba lô! Đoàn Thị Thu Thảo 30 K37C-SPT ĐHSP Hà Nội Kết luận Khóa luận đề cập tới hệ mã khóa công khai điển hình để từ thấy thâm nhập ngày mạnh mẽ Toán học vào lĩnh vực Vì thời gian có hạn nên khóa luận không tránh khỏi sai xót Vì vậy, tác giả mong nhận đóng góp quý thầy cô giáo bạn đọc Hà Nội, ngày 07 tháng 05 năm 2015 Sinh viên Đoàn Thị Thu Thảo 31 Tài liệu tham khảo [1] Neal Koblitz, A Course in Number Theory and Cryptography, Spingerverlag (1994) [2] Hà Huy Khoái - Phạm Huy Điển , Số học thuật toán: sở lý thuyết tính toán thực hành, NXB Đại học Quốc Gia Hà Nội (2003) 32 [...]... Khóa luận tốt nghiệp 2.4.1 GVHD: T.s Trần Vĩnh Đức Hệ trao đổi chìa khóa của Diffle-Hellman Do hệ mật mã khóa công khai chậm hơn so với các hệ thống mã hóa đối xứng (cổ điển) nên người ta thường kết hợp với hệ mật mã đối xứng theo cách sau: hệ khóa công khai dùng trao đổi khóa bí mật, sau khi có khóa bí mật người ta sẽ mã hóa bằng hệ mật mã đối xứng và truyền Đặc biệt, quá trình thống nhất về một khóa. .. tính, nghĩa là ánh xạ từ một tổng đến một tổng, có nghĩa là, nếu C1 là mật mã hóa của P1 và nếu C2 là mật mã hóa của P2 , thì C1 + C2 là mật mã hóa của P1 + P2 (tất nhiên phải thêm mod N ) 2.2 Ý tưởng về mật mã khóa công khai Hệ mật mã bao gồm phép mã hóa f từ tập P gồm tất cả các bản rõ đến tập C gồm tất cả các bản mã Thuật ngữ "hệ mật mã" thường để chỉ một họ các phép biến đổi, mỗi phép biến đổi tương... Nội 2 Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức Để giải mã, tức là để tính f −1 , người ta cần thuật toán và khóa Khóa này được gọi là khóa giải mã KD Trong ví dụ này, giải mã bởi ánh xạ afin, nghĩa là P ≡ a−1 C − a−1 b mod N, vì vậy phép giải mã sử dụng thuật toán giống như phép mã hóa, ngoại trừ khóa khác, ở đây khoá giải mã KD là cặp a−1 , −a−1 b Ta luôn giả sử rằng thuật toán giải mã và mã hóa... dụ, hệ mật Julius Caesar là trường hợp đặc biệt khi N = 26, b = 3 Để giải mã một bản mã C ∈ {0, 1, , N − 1}, ta tính P = f −1 (C) ≡ C − b mod N Giả sử thông tin mã hóa và giải mã không bí mật và dường như có thể đọc mã thông tin Đây được gọi là phá vỡ mã và theo khoa học mã được phá vỡ được gọi là mật mã Để phá mã, ta cần hai loại thông tin Thứ nhất là tính chất chung (cấu trúc) của hệ Ví dụ, hệ mật sử... nhất về một khóa chung cho một hệ mật mã đối xứng có thể được thực hiện rất hiệu quả nếu sử dụng hệ thống khóa công khai Đề xuất chi tiết đầu tiên hiện thực hóa điều này là của W Diffie và M.E Hellman Giả sử A và B muốn có chung một con số để làm chìa khóa chung (cho một hệ mã đối xứng nào đó) Giả sử kA và kB là khóa bí mật của A và B , còn g kA và g kB là khóa công khai của A và B Vậy thì họ có thể... vị thông tin của văn bản mã, có một và chỉ một đơn vị thông tin của văn bản gốc mà gọi nó là mật mã Một phép giải mã là ánh xạ f −1 là ngược lại đi từ văn bản mã đến văn bản gốc Biểu diễn dưới dạng sơ đồ: f f −1 P→ − C −−→ P Mọi thiết lập như trên gọi là mật mã Việc đầu tiên phải làm trong hệ mật mã là mã hóa các đơn vị thông tin thành các đối tượng toán học để từ đó các hàm mã hóa được xây dựng dễ... nhau với (pA − 1)(qA − 1) Tiếp theo, A tính: nA = pA qA , ϕ(nA ) = nA + 1 − pA − qA và, cũng tính khóa bí mật dA ≡ e−1 A mod ϕ(nA ) Người ta công khai khóa mã hóa KE,A = (nA , eA ) và giữ bí mật khóa giải mã KD,A = (nA , dA ) Phép mã hóa là ánh xạ từ Z/nA Z vào chính nó cho bởi f (P ) ≡ P eA mod nA Phép giải mã là ánh xạ từ Z/nA Z vào chính nó cho bởi f −1 (C) ≡ C dA mod nA Dễ thấy, hai ánh xạ này nghịch... nguyên tố cùng nhau với m Khóa công khai của A sẽ là vecto a là tích a với n: Đoàn Thị Thu Thảo 29 K37C-SPT ĐHSP Hà Nội 2 Khóa luận tốt nghiệp GVHD: T.s Trần Vĩnh Đức a = (a1 , a2 , , ak ) ai = n × ai mod m; i = 1, 2, , k Còn khóa bí mật sẽ là bộ ba (a , m, n) Mã hóa: Khi B muốn gửi một thông báo X cho A, anh ta tính mã theo công thức: T = ai X i Giải mã: A nhận được T , giải mã như sau: 1 Để bỏ lớp... vậy, ta đã xét xong sơ đồ cụ thể của Merkle-Hellman về hệ mật mã khóa công khai dựa trên bài toán ba lô! Đoàn Thị Thu Thảo 30 K37C-SPT ĐHSP Hà Nội 2 Kết luận Khóa luận chỉ đề cập tới những hệ mã khóa công khai điển hình để từ đó chúng ta cũng thấy được sự thâm nhập ngày càng mạnh mẽ của Toán học vào trong lĩnh vực này Vì thời gian có hạn nên khóa luận không tránh khỏi những sai xót Vì vậy, tác giả rất... hóa là công khai và các khóa KE , KD là bí mật 2.3 RSA Khi tìm kiếm một hàm cửa sập f để sử dụng cho một hệ thống mật mã khóa công khai, một mặt người ta mong muốn rằng ý tưởng phải đơn giản về mặt khái niệm và để từ đó dễ cài đặt trên máy tính Mặt khác, người ta muốn có bằng chứng thực nghiệm rất mạnh – dựa trên một lịch sử lâu dài của các nỗ lực tìm kiếm các thuật toán cho f −1 – rằng việc giải mã không ... công khai trọng đến số hệ mã khóa công khai Nhiệm vụ nghiên cứu Nghiên cứu mật mã khóa công khai Mục đích nghiên cứu Tìm hiểu sơ qua công nghệ mã hóa thông tin cụ thể số hệ mật mã khóa công khai. .. việc mã hóa thông tin nên em chọn đề tài "Mật mã khóa công khai" để tìm hiểu nghiên cứu sâu vấn đề Đối tượng, phạm vi nghiên cứu Đối tượng: Mật mã khóa công khai Phạm vi: Tìm hiểu mật mã khóa công. .. tổng, có nghĩa là, C1 mật mã hóa P1 C2 mật mã hóa P2 , C1 + C2 mật mã hóa P1 + P2 (tất nhiên phải thêm mod N ) 2.2 Ý tưởng mật mã khóa công khai Hệ mật mã bao gồm phép mã hóa f từ tập P gồm tất

Ngày đăng: 02/11/2015, 09:30

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w