LỜI CAM ĐOANEm xin cam đoan, dưới sự hướng dẫn của Thầy giáo Trần Vĩnh Đứckhóa luận "Bài toán logarit rời rạc và ứng dụng trong mật mã"được hoàn thành không trùng với bất kỳ đề tài nào k
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
Trang 2Em xin chân thành cảm ơn Thầy giáo Trần Vĩnh Đức đã tận tìnhhướng dẫn, giúp đỡ em trong suốt thời gian thực hiện khóa luận.
Em xin chân thành cảm ơn các thầy, các cô trong tổ ứng dụng-khoaToán, trường Đại học sư phạm Hà Nội 2 đã tạo mọi điều kiện giúp đỡ emhoàn thành khóa luận này
Em xin chân thành cảm ơn gia đình và bạn bè đã tạo mọi điều kiệnthuân lợi cho em trong quá trình thực hiện khóa luận
Em xin chân thành cảm ơn
Hà Nội, tháng 05 năm 2015
Sinh viên
Nguyễn Hồng Nhung
Trang 3LỜI CAM ĐOAN
Em xin cam đoan, dưới sự hướng dẫn của Thầy giáo Trần Vĩnh Đứckhóa luận "Bài toán logarit rời rạc và ứng dụng trong mật mã"được hoàn thành không trùng với bất kỳ đề tài nào khác
Trong quá trình hoàn thành khóa luận, em đã thừa kế những thànhtựu của các nhà khoa học với sự trân trọng và biết ơn
Hà Nội, tháng 05 năm 2015
Sinh viên
Nguyễn Hồng Nhung
Trang 4Mở đầu 1
1 Tổng quan về lý thuyết nhóm 2
2 Bài toán logarit rời rạc và ứng dụng trong mật mã 7
2.1 Bài toán logarit rời rạc 7
2.2 Diffie-Hellman trao đổi khóa bảo mật 9
2.3 Hệ thống mật mã khóa công khai ElGamal 11
2.4 Bài toán logarit rời rạc khó đến mức nào? 14
2.5 Thuật toán va chạm cho DLP 16
2.6 Định lý phần dư Trung Quốc 18
2.7 Thuật toán Pohlig–Hellman 23
Trang 5MỞ ĐẦU
1 Lí do chọn đề tài
Bài toán logarit rời rạc có ứng dụng quan trọng trong thực tiễn, nóxuất hiện trên cơ sở phát triển của khoa học kĩ thuật và những yêu cầu đòihỏi của thực tế Đặc biệt bài toán logarit rời rạc có ứng dụng quan trọngtrong mật mã Với mong muốn được đi sâu tìm hiểu về bộ môn này dướigóc độ một sinh viên sư phạm Toán và trong phạm vi của một khóa luậntốt nghiệp cùng với sự hướng dẫn của thầy giáo - TS Trần Vĩnh Đức, emxin trình bày hiểu biết của mình về đề tài "Bài toán logarit rời rạc và ứngdụng trong mật mã."
2 Mục đích nghiên cứu
Quá trình thực hiện đề tài đã bước đầu làm quen với việc nghiên cứukhoa học, tìm hiểu sâu hơn về bài toán logarit rời rạc và ứng dụng của nótrong mật mã
3 Nhiệm vụ nghiên cứu
Đề tài nghiên cứu nhằm đi sâu khai thác ứng dụng của bài toánlogarit rời rạc trong mật mã
4 Phương pháp nghiên cứu
Đề tài được hoàn thành dựa trên sự kết hợp các phương pháp: nghiêncứu lí luận, phân tích, tổng hợp, đánh giá
5 Cấu trúc khóa luận
Ngoài phần mở đầu, kết luận, danh mục tài liệu tham khảo thì khóaluận bao gồm 2 chương:
Chương 1: Tổng quan về lí thuyết nhóm
Chương 2: Bài toán logarit rời rạc và ứng dụng trong mật mã
Trang 6Tổng quan về lý thuyết nhóm
Chương này giới thiệu tổng quan một vài kết quả của lý thuyết nhóm
có ứng dụng trong bài toán logarit rời rạc
Trước hết, ta nói về lũy thừa các phần tử trong F∗p (với Fp ={0, 1, , p − 1}, p nguyên tố là một trường) lũy thừa chỉ đơn giản là việclặp lại phép nhân Chúng ta nhấn mạnh một số đặc trưng quan trọng củaphép nhân trong F∗p và một vài tính chất cơ bản
• Phép nhân có tính kết hợp: a.(b.c) = (a.b).c với mọi a, b, c ∈ F∗p
• Phép nhân có tính giao hoán: a.b = b.a với mọi a, b ∈ F∗p
Giả sử thay phép nhân trong F∗p bằng phép cộng trong Fp Ta cũng thay 0
ở vị trí số 1 và −a ở vị trí của a−1 Khi đó tất cả bốn tính chất vẫn đúng:
• 0 + a = a với mỗi a ∈ Fp
• Mỗi a ∈ Fp có một phần tử đối −a ∈ Fp với a + (−a) = (−a) + a = 0
Trang 7Khóa luận tốt nghiệp Nguyễn Hồng Nhung
• Ngoài ra có tính kết hợp, a + (b + c) = (a + b) + c với mọi a, b, c ∈ Fp
• Ngoài ra có tính giao hoán, a + b = b + a với mọi a, b ∈ Fp
Định nghĩa 1.1 Một nhóm gồm một tập G và một phép toán, mà chúngbiểu thị bởi ?, kết hợp hai phần tử a, b ∈ G để có được phần tử a ? b ∈ G.Phép toán ? được yêu cầu phải có ba tính chất sau đây:
[ Nhân với phần tử đơn vị] Có e ∈ G sao cho
Ngoài ra, nếu phần tử thỏa mãn
[Luật giao hoán] a ? b = b ? a với mọi a, b ∈ G,
thì nhóm này được gọi là một nhóm giao hoán hoặc một nhóm abel.Nếu G có hữu hạn phần tử, ta nói rằng G là một nhóm hữu hạn Bậccủa G là số phần tử trong G; nó được ký hiệu là |G| hoặc #G
Ví dụ 1.1 Nhóm có mặt khắp nơi trong toán học và trong khoa học tựnhiên Dưới đây là một số ví dụ:
(a) G = F∗p và ? = phép nhân Phần tử đơn vị là e = 1, phần tửnghịch đảo tồn tại G là một nhóm hữu hạn có bậc p − 1
(b) G = Z/N Z và ? = phép cộng Phần tử đơn vị là e = 0 và phần
tử đối của a là −a G là một nhóm hữu hạn có bậc N
Trang 8(c) G = Z và ? = phép cộng Phần tử đơn vị là e = 0 và phần tử đốicủa a là −a Nhóm G này là một nhóm vô hạn.
(d) Chú ý rằng G = Z và ? = phép nhân không phải là một nhóm,
vì hầu hết phần tử không có phần tử nghịch đảo phép nhân bên trong Z
(e) Tuy nhiên, G = R∗ và ? = phép nhân là một nhóm, vì tất cả cácphần tử có phần tử nghịch đảo phép nhân bên R∗
(f) Một ví dụ về một nhóm không giao hoán là
)
với phép toán ? = phép nhân ma trận Phần tử đơn vị là e = 1 0
0 1
!vànghịch đảo được cho bởi công thức quen thuộc
−b ad−bc
−c ad−bc
a ad−bc
!
Chú ý rằng G là nhóm không giao hoán, ví dụ 1 1
(g) Tổng quát hơn, ta có thể sử dụng các ma trận có kích thước bất
kỳ Điều này tạo ra nhóm tuyến tính tổng quát
GLn(R) = ma trận vuông A cấp n với hệ số thực và det(A) 6= 0
và phép toán ? = phép nhân ma trận Ta có thể tạo ra các nhóm khác bằngcách thay thế R với một số trường khác, ví dụ trường hữu hạn Fp
Cho g là một phần tử của nhóm G và cho x là số nguyên dương Khi đó
Trang 9Khóa luận tốt nghiệp Nguyễn Hồng Nhung
gx có nghĩa là ta áp dụng phép toán nhóm x lần tới phần tử g,
Bây giờ giả sử rằng k ≥ d thỏa mãn ak = e Chúng ta chia k cho d
để có được
k = dq + r với 0 ≤ r < d
Sử dụng ak = ad = e, chúng ta nhận thấy rằng
e = ak = adq+r = (ad)q ? ar = eq ? ar.Nhưng d là số mũ dương nhỏ nhất của a thỏa mãn ad = e, vì vậy chúng
Trang 10Định nghĩa 1.3 (Định lý Lagrange) Cho G là một nhóm hữu hạn và cho
a ∈ G Thì bậc của G chia hết cho bậc của a
Chính xác hơn, cho n = |G| là bậc của G và cho d là bậc của a, tức
là, ad là số mũ dương nhỏ nhất của a bằng e Khi đó
(a ? g1) ? (a ? g2) ? ? (a ? gn) = g1 ? g2 ? ? gn.Chúng ta có thể sắp xếp lại bậc của tích số bên trái (lại sử dụng giao hoán)
để đạt được
an ? g1 ? g2 ? ? gn = g1 ? g2 ? ? gn.Bây giờ nhân với (g1 ? g2 ? ? gn)−1 được an = e 2
Trang 11Chương 2
Bài toán logarit rời rạc và ứng dụng trong mật mã
Bài toán logarit rời rạc là bài toán xuất hiện ở nhiều dạng, bao gồm
cả các dạng mod p mô tả trong phần này và các dạng đường cong elliptichiện đang được sử dụng rộng rãi trong thực tế Các đề xuất đầu tiên vềgiao thức trao đổi khóa chung do Diffie và Hellman, dựa trên bài toánlogarit rời rạc trong trường hữu hạn Fp
Cho p là một số nguyên tố (lớn) Chúng ta biết rằng tồn tại mộtphần tử nguyên thủy g Điều này có nghĩa mỗi phần tử khác không của Fp
tương đương với một lũy thừa của g Đặc biệt, bằng định lí Fermat nhỏ có
gp−1 = 1, và lũy thừa nhỏ nhất của g là bằng 1 Tương tự, dãy các phầntử
1, g, g2, g3, , gp−2 ∈ F∗p
là một dãy đầy đủ các phần tử trong F∗p theo một thứ tự
Định nghĩa 2.1 Cho g là một căn nguyên thủy của Fp và cho h là phần
tử khác không của Fp Bài toán logarit rời rạc (DLP) là bài toán về tìm số
Trang 12mũ x sao cho
gx ≡ h mod p
Số x được gọi là logarit rời rạc của h với cơ số g và được kí hiệu là logg(h).Chú ý 2.1 Bài toán logarit rời rạc là một bài toán đặt ra tìm số mũnguyên x sao cho gx = h Tuy nhiên, nếu có nghiệm thì có vô số nghiệm,
vì định lí Fermat nhỏ cho chúng ta biết rằng gp−1 ≡ 1 mod p Do đó nếu
x là nghiệm của gp−1 = h, thì x + k(p − 1) cũng là nghiệm với mỗi giá trịcủa k, vì
gx+k(p−1) = gx.(gp−1)k ≡ h.1k ≡ h mod p
Như vậy logg(h) được xác định bằng cách cộng hoặc trừ đi bội số của
p − 1 Nói cách khác, logg(h) được xác định theo mô đun p − 1 Nó khôngphải là khó để xác minh rằng logg cho một hàm được xác định rõ
logg : F∗p −→ Z
Đôi khi, vì sự cụ thể, ta đề cập đến “các” logarit rời rạc như các số nguyên
x nằm giữa 0 và p − 2 thỏa mãn gx ≡ h mod p
Chú ý 2.2 Không khó để chứng minh rằng
logg(ab) = logg(a) + logg(b) với mọi a, b ∈ F∗p
Trong thuật ngữ toán học, logarit rời rạc logg là phép đẳng cấu nhóm
từ F∗p đến Z/(p − 1)Z
Ví dụ 2.1 Số p = 56509 là số nguyên tố, và ta kiểm tra xem g = 2 có làmột căn nguyên thủy mô đun p Làm thế nào để tính toán logarit rời rạccủa h = 38679? Rõ ràng phương pháp duy nhất là tính toán
22, 23, 24, 25, 26, 27, mod 56509
Trang 13Khóa luận tốt nghiệp Nguyễn Hồng Nhung
cho đến khi ta tìm thấy một số lũy thừa đó bằng 38679 Ta thấy rằnglogg(h) = 11235, có thể xác minh điều này bằng cách tính toán 211235mod 56509 và kiểm tra rằng nó bằng 38679
Chú ý 2.3 Phát biểu của chúng ta trong bài toán logarit rời rạc bao gồmcác giả định rằng cơ số g là một căn nguyên thủy mô đun p, nhưng điềunày là không đúng Nói chung, đối với bất kỳ g ∈ F∗p và bất kỳ h ∈ F∗p, bàitoán logarit rời rạc là xác định một số mũ x thỏa mãn gx ≡ h mod p, giả
sử rằng tồn tại x
Định nghĩa 2.2 Cho G là một nhóm với phép nhân ? Bài toán logaritcho G là bài toán có đầu vào là hai phần tử g ∈ G và h ∈ G Tìm sốnguyên x thỏa mãn:
g ? g ? g ? ? g
x lần
= h
Thuật toán Diffie-Hellman trao đổi giải quyết tình trạng khó xử sau.Alice và Bob muốn chia sẻ một khóa bí mật để sử dụng trong một thuậttoán mã hóa đối xứng, nhưng phương tiện truyền thông duy nhất của họkhông an toàn Mỗi mẩu thông tin mà họ trao đổi được quan sát bởi đốithủ của họ là Eve Làm thế nào Alice và Bob có thể chia sẻ một chìa khóa
mà Eve không thể thấy? Thoạt nhìn nó dường như Alice và Bob phải đốimặt với một nhiệm vụ không thể Khi đó thấy rằng bài toán logarit rời rạccho F∗p cung cấp một giải pháp hợp lí
Bước đầu tiên là Alice và Bob thống nhất một số nguyên tố lớn p vàmột số nguyên khác không g mô đun p Alice và Bob công khai các giá trịcủa p và g; ví dụ, họ có thể gửi các giá trị trên các trang web của họ, vìvậy Eve cũng biết đến chúng Vì các lý do khác nhau để được thảo luận
Trang 14sau này, họ chọn g mà bậc của nó trong F∗p là một nguyên tố lớn.
Bước tiếp theo là cho Alice chọn số nguyên bí mật cô ấy không tiết
lộ cho bất kỳ ai, trong cùng thời gian Bob chọn số nguyên b mà anh ấy giữ
bí mật Bob và Alice dùng số nguyên bí mật của họ để tính toán
Bob tính toán này
Họ tiếp tục trao đổi các giá trị tính toán, Alice gửi cho Bob A và Bob gửi
B cho Alice Lưu ý rằng Eve thấy được các giá trị của A và B, vì chúngđược gửi qua các kênh truyền thông không an toàn
Cuối cùng, Bob và Alice một lần nữa sử dụng số nguyên bí mật của
Bob tính toán này
Các giá trị mà họ tính toán, A và B tương ứng, thực sự giống nhau, khiđó
A0 ≡ Ba ≡ (gb)a ≡ gab ≡ (ga)b ≡ Ab ≡ B0 mod p
Giá trị chung này là chìa khoá trao đổi chúng
Ví dụ 2.2 Alice và Bob đồng ý sử dụng số nguyên tố p = 941 và cănnguyên thủy g = 627 Alice chọn khóa bí mật a = 347 và tính A = 390 ≡
627347 mod 941 Tương tự như vậy, Bob chọn khóa bí mật b = 781 và tính
B = 691 ≡ 627781 mod 941 Alice gửi Bob số 390 và Bob gửi Alice số
691 Cả hai truyền đi được thực hiện trên một kênh không an toàn, vì vậy
cả hai A = 390 và B = 691 được xem xét công khai Các số a = 347 và
b = 781 không được truyền đi mà giữ bí mật Sau đó, Alice và Bob đều cóthể tính toán số
470 ≡ 627347.781 ≡ Ab ≡ Ba mod 941,
Trang 15Khóa luận tốt nghiệp Nguyễn Hồng Nhung
vậy 470 là chia sẻ bí mật của họ
Giả sử rằng Eve thấy toàn bộ trao đổi này Cô ấy có thể đã khôi phụclại chia sẻ bí mật của Alice và Bob nếu cô ấy có thể giải quyết một trongcác đồng dư
627a ≡ 390 mod 941 hoặc 627b ≡ 691 mod 941,
kể từ đó cô sẽ biết số mũ bí mật của họ Theo như được biết, đây là cáchduy nhất cho Eve để tìm giá trị chia sẻ bí mật mà không cần hỗ trợ củaAlice hay Bob
Tất nhiên, ví dụ của chúng ta sử dụng con số đó là quá nhỏ để có đủkhả năng Alice và Bob thực sự bảo mật bất kì, vì nó mất rất ít thời giancho máy tính của Eve để kiểm tra tất cả các lũy thừa có thể của 627 môđun 941 Hướng dẫn hiện tại cho thấy Alice và Bob chọn một nguyên tố p
có khoảng 1.000 bit (tức là, p ≈ 21000) và phần tử g có bậc là số nguyên tố
và xấp xỉ p2
Định nghĩa 2.3 Cho p là một số nguyên tố và g là một số nguyên Bàitoán Diffie-Hellman (DHP) là bài toán tính toán giá trị gab mod p từ cácgiá trị đã biết ga mod p và gb mod p
Rõ ràng là DHP không khó hơn DLP Nếu Eve có thể giải quyếtDLP, thì cô ấy có thể tính toán số mũ bí mật a và b của Alice và Bob cắt
ra từ các giá trị A = ga và B = gb, và sau đó nó rất dễ dàng cho cô ấy đểtính toán khóa chia sẻ gab của họ (Trong thực tế, Eve cần phải tính toánduy nhất a và b.) Nhưng chuyện này là chưa rõ ràng
Trong phần này chúng ta mô tả phiên bản hệ thống mật mã khóacông khai của ElGamal (PKC ElGamal) được dựa trên bài toán logarit rời
Trang 16rạc cho F∗p.
PKC ElGamal là ví dụ đầu tiên của ta về một hệ thống mật mãkhóa công khai Alice bắt đầu bằng việc xuất bản thông tin bao gồm mộtkhóa công khai và một thuật toán Khóa công khai chỉ đơn giản là mộtcon số, và các thuật toán là phương pháp mà Bob mã hóa thông tin củamình bằng cách sử dụng khóa công khai của Alice Alice không tiết lộ khóariêng của mình Các khóa riêng cho phép Alice giải mã các thông tin đãđược mã hóa bằng khóa công khai của mình
Vì PKC ElGamal, Alice cần một số nguyên tố lớn p mà bài toánlogarit rời rạc trong F∗p là khó khăn, và cô ấy cần một phần tử g mô đun
p lớn (nguyên tố) Alice chọn một số bí mật để làm khóa riêng của cô, và
cô ấy tính toán con số
A ≡ ga mod p
Chú ý giống Diffie-Hellman trao đổi khóa Alice công bố khóa công khai
A của cô và khóa riêng cô ấy giữ bí mật một mình
Bây giờ giả sử Bob muốn mã hóa một thông tin bằng khóa công khai
A của Alice Ta sẽ cho rằng thông tin m của Bob là một số nguyên giữa
2 và p Để mã hóa m, đầu tiên Bob chọn ngẫu nhiên số k khác mô đun p.Bob sử dụng k để mã hóa một và chỉ một thông tin, và sau đó ông đã loại
bỏ nó Số k được gọi là một chìa khóa không lâu, vì nó tồn tại duy nhấtnhằm mục đích mã hóa một thông tin
Bob lấy khoá công khai thông tin m của ông ấy, chọn ngẫu nhiênchìa khóa k tạm thời, khóa A Alice công khai và sử dụng chúng để tínhtoán hai con số
c1 ≡ gk mod p và c2 ≡ mAk mod p
(Hãy nhớ rằng g và p là các tham số công khai, vì Bob cũng biết giá trịcủa chúng.) Văn bản viết thành mật mã của Bob, nghĩa là, mã hoá của
Trang 17Khóa luận tốt nghiệp Nguyễn Hồng Nhung
ông ấy về m, là cặp số (c1, c2), ông ấy gửi cho Alice
Làm thế nào để Alice giải mã bản mã (c1, c2) của Bob? Từ đó Alicebiết là cô có thể tính toán
x ≡ ca1 mod p,
và x−1 mod p Tiếp theo Alice nhân c2 với x−1, và được giá trị kết quả làbản rõ m Để biết tại sao, ta mở rộng giá trị của x−1.c2 và thấy rằng
x−1.c2 ≡ (ca1)−1.c2 mod p, khi x ≡ ca1 mod p,
≡ (gab)−1.(mAk) mod p, khi c1 ≡ gk, c2 ≡ mAk mod p,
≡ (gab)−1.(m(ga)k) mod p, khi A ≡ ga mod p,
≡ m mod p, khi số hạng gak triệt tiêu lẫn nhau
Eve biết tham số p và g công khai, và cô cũng biết được giá trị của A ≡ gamod p vì khóa công khai A của Alice được mọi người biết đến Nếu Eve
có thể giải quyết bài toán logarit rời rạc, cô ấy có thể tìm thấy a và giải
mã thông tin Nếu không thì nó sẽ xuất hiện khó khăn cho Eve để tìm rabản rõ
Ví dụ 2.3 Alice sử dụng số nguyên tố p = 467 và căn nguyên thủy g = 2
Cô chọn a = 153 là chìa khóa cá nhân của mình và tính toán khoá côngkhai
A ≡ ga ≡ 2153 ≡ 224 mod 467
Bob quyết định gửi cho Alice thông tin m = 331 Ông đã chọn một khóakhông lâu ngẫu nhiên, ông chọn k = 197, và ông tính toán hai con số
c1 ≡ 2197 ≡ 87 mod 467 và c2 ≡ 331.224197 ≡ 57 mod 467
Các cặp (c1, c2) = (87, 57) là các bản mã mà Bob gửi cho Alice
Alice, biết a = 153, đầu tiên tính toán
x ≡ ca1 ≡ 87153 ≡ 367 mod 46, và sau đó x−1 ≡ 14 mod 467