Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ) Logarit rời rạc và mật mã công khai (Luận văn thạc sĩ)
Trang 1Số hoá bởi Trung tâm Học liệu – ĐHTN
Trang 2Số hoá bởi Trung tâm Học liệu – ĐHTN
Trang 3Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn MỤC LỤC MỤC LỤC……… 1
LỜI CẢM ƠN……… 2
MỞ ĐẦU……… 3
CHƯƠNG I KIẾN THỨC CƠ SỞ……… 4
1.1 Khái quát về mật mã, mã công khai……… 4
1.2 Bài toán lôgarit rời rạc……… 11
CHƯƠNG II ỨNG DỤNG LÔGARIT RỜI RẠC TRONG MỘT SỐ HỆ MÃ CÔNG KHAI……… 22
2.1 Hệ mã RSA……… 22
2.2 Hệ mã Elgamal……….27
2.3 Sơ đồ chữ kí Elgamal………37
2.4 Hệ mã đường cong Eliptic………43
KẾT LUẬN……….56
TÀI LIỆU THAM KHẢO……… 57
Trang 4Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
LỜI CẢM ƠN
Sau một thời gian nghiên cứu tìm hiểu, em đã hoàn thành luận văn thạc
sỹ toán học chuyên ngành toán ứng dụng với đề tài: “ Lôgarit rời rạc và mật
mã công khai”
Lời đầu tiên em xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo TS Vũ
Mạnh Xuân đã tận tình hướng dẫn em trong suốt quá trình nghiên cứu và
thực hiện đề tài Em cũng xin chân thành cảm ơn quý thầy cô khoa Toán – tin
trường Đại học Khoa học – Đại học Thái Nguyên, các đồng nghiệp và các bạn
học trong lớp đã hướng dẫn, truyền đạt kiến thức, tạo mọi điều kiện giúp đỡ
cho em trong suốt thời gian theo học và thực hiện luận văn này
Qua việc nghiên cứu và hoàn thành luận văn, em đã có thêm nhiều kiến
thức bổ ích trong chuyên môn cũng như phương pháp luận nghiên cứu khoa
học Trong khuôn khổ của một luận văn, chắc chắn chưa đáp ứng được đầy đủ
những vấn đề đặt ra Vì điều kiện nghiên cứu còn hạn chế, nên mặc dù đã cố
gắng rất nhiều nhưng luận văn không tránh khỏi những thiếu sót Em rất
mong nhận được sự đóng góp ý kiến, phê bình quý báu của các nhà khoa học,
các thầy cô và các bạn đồng nghiệp
Một lần nữa em xin chân thành cảm ơn !
Thái Nguyên, tháng 09 năm 2014
Học viên
Văn Thị Thu Thịnh
Trang 5Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
MỞ ĐẦU
Bài toán logarit rời rạc trong Zp là đối tượng trong nhiều công trình
nghiên cứu và được xem là bài toán khó nếu p được chọn cẩn thận Bài toán
này có nhiều ứng dụng sâu sắc trong nhiều hướng khác nhau của toán học, vật
lý học,…đặc biệt bài toán logarit rời rạc là cơ sở để xây dựng hệ mã khóa
công khai Đây là dạng bài toán một chiều: bài toán lấy lũy thừa có thể tính
toán hiệu quả theo thuật toán bình phương và nhân, song bài toán ngược tìm
số mũ thì lại không dễ như vậy
Đề tài này nhằm nghiên cứu về bài toán logarit rời rạc và tìm hiểu ứng
dụng của nó trong một vài hệ mã công khai: hệ mã RSA, hệ mã Elgamal, chữ
kí Elgamal và hệ mã đường cong Elliptic
Luận văn được trình bày trong 2 chương ngoài phần mởp đầu và kết
luận
Chương 1 gồm những kiến thức cơ sở để nhằm phục vụ cho chương 2,
bao gồm những kiến thức liên quan về về hệ mật mã, hệ mã công khai và bài
toán logarit rời rạc
Chương 2 tác giả trình bày những kiến thức cơ bản về hệ mã RSA, hệ mã
Elgamal, chữ kí điện tử Ellgamal, hệ mã đường cong Elliptic Chương này
cũng trình bày một số ví dụ cụ thể để minh họa
Mặc dù đã có nhiều cố gắng, song luận văn mới chỉ dừng ở mức trình
bày hệ thống các kiến thức như trên và tính toán trên một số ví dụ cụ thể,
phần ứng dụng thực tế còn hạn chế
Trang 6Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
CHƯƠNG I : KIẾN THỨC CƠ SỞ
Chương 1 trình bày những kiến thức cơ sở khái quát về mật mã, khái
niệm về hệ mật mã, hệ mã công khai, bài toán lôgarit rời rạc và một số thuật
toán lôgarit rời rạc Những kiến thức trình bày trong chương này được trích
dẫn ở tài liệu sau: Mã hoá thông tin: Cơ sở toán học và ứng dụng - Phạm Huy
Điển, Hà Huy Khoái (2003) - NXB Đại Học Quốc Gia, Lý thuyết mật mã và
an toàn thông tin - Phan Đình Diệu (2002) - NXB Đại Học Quốc Gia Hà Nội,
Giáo trình an toàn dữ liệu – Khoa công nghệ thông tin - Trịnh Nhật Tiến -
NXB Đại Học Quốc Gia Hà Nội
1.1 KHÁI QUÁT VỀ MẬT MÃ, MÃ CÔNG KHAI
1.1.1 Khái quát về mật mã
1.1.1.1 Giới thiệu
Mật mã đã được con người sử dụng từ lâu đời Các hình thức mật mã sơ
khai đã được tìm thấy từ khoảng bốn nghìn năm trước trong nền văn minh Ai
Cập cổ đại Trải qua hàng nghìn năm lịch sử, mật mã đã được sử dụng rộng
rãi ở khắp nơi trên thế giới từ Đông sang Tây để giữ bí mật cho việc giao lưu
thông tin trong nhiều lĩnh vực hoạt động giữa con người và các quốc gia, đặc
biệt trong các lĩnh vực quân sự, chính trị, ngoại giao Mật mã trước hết là một
loại hoạt động thực tiễn, nội dung chính của nó là để giữ bí mật thông tin Ví
dụ muốn gửi một văn bản từ một người gửi A đến một người nhận B, A phải
tạo cho văn bản đó một bản mã mật tương ứng và thay vì gửi văn bản rõ thì A
chỉ gửi cho B bản mã mật, B nhận được bản mã mật và khôi phục lại văn bản
rõ để hiểu được thông tin mà A muốn gửi cho mình Do văn bản gửi đi
thường được chuyển qua các con đường công khai nên người ngoài có thể
“lấy trộm” được, nhưng vì đó là bản mật mã nên không đọc hiểu được Còn A
có thể tạo ra bản mã mật và B có thể giải bản mã mật thành bản rõ để hiểu
Trang 7Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
được là do hai người đã có một thoả thuận về một chìa khoá chung, chỉ với
khoá chung này thì A mới tạo được bản mã mật từ bản rõ và B mới khôi phục
được bản rõ từ bản mã mật Khoá chung đó được gọi là khoá mật mã Để thực
hiện được một phép mật mã, ta còn cần có một thuật toán biến bản rõ cùng
với khoá mật mã thành bản mã mật và một thuật toán ngược lại biến bản mật
cùng với khoá mật mã thành bản rõ Các thuật toán đó được gọi tương ứng là
thuật toán lập mã và thuật toán giải mã Các thuật toán này thường không nhất
thiết phải giữ bí mật, mà cái luôn cần được giữ bí mật là khoá mật mã Trong
thực tiễn, có những hoạt động ngược lại với hoạt động bảo mật là khám phá bí
mật từ các bản mã “lấy trộm” được, hoạt động này thường được gọi là mã
thám hay phá khoá
1.1.1.2 Các khái niệm cơ sở
Mật mã là một lĩnh vực khoa học chuyên nghiên cứu về các phương pháp
và kỹ thuật đảm bảo an toàn và bảo mật trong truyền tin liên lạc với giả thiết
sự tồn tại của các thế lực thù địch, những kẻ muốn ăn cắp thông tin để lợi
dụng và phá hoại Tên gọi trong tiếng Anh, Cryptology được dẫn giải nguồn
gốc từ tiếng Hy lạp, trong đó kryptos nghĩa là “che dấu”, logos nghĩa là “từ
ngữ” Cụ thể hơn, các nhà nghiên cứu lĩnh vực này quan tâm xây dựng hoặc
phân tích (để chỉ ra điểm yếu) các giao thức mật mã (cryptographic
protocols), tức là các phương thức giao dịch có đảm bảo mục tiêu an toàn cho
các bên tham gia (với giả thiết môi trường có kẻ đối địch, phá hoại)
Ngành Mật mã (cryptology) thường được quan niệm như sự kết hợp của
2 lĩnh vực con:
1 Sinh, chế mã mật (cryptography): nghiên cứu các kỹ thuật toán học
nhằm cung cấp các công cụ hay dịch vụ đảm bảo an toàn thông tin
2 Phá giải mã (cryptanalysis): nghiên cứu các kỹ thuật toán học phục vụ
phân tích phá mật mã và hoặc tạo ra các đoạn mã giản nhằm đánh lừa bên
Trang 8Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
nhận tin Hai lĩnh vực con này tồn tại như hai mặt đối lập, “đấu tranh để cùng
phát triển” của một thể thống nhất là ngành khoa học mật mã (cryptology)
Tuy nhiên, do lĩnh vực thứ hai (cryptanalysis) ít được phổ biến quảng đại nên
dần dần, cách hiểu chung hiện nay là đánh đồng hai thuật ngữ cryptography
và cryptology Theo thói quen chung này, hai thuật ngữ này có thể dùng thay
thế nhau Thậm chí cryptography là thuật ngữ ưa dùng, phổ biến trong mọi
sách vở phổ biến khoa học, còn cryptology thì xuất hiện trong một phạm vi
hẹp của các nhà nghiên cứu học thuật thuần túy Mặc dù trước đây hầu như
mật mã và ứng dụng của nó chỉ phổ biến trong giới hẹp, nhưng với sự phát
triển vũ bão của công nghệ thông tin và đặc biệt là sự phổ biến của mạng
internet, các giao dịch có sử dụng mật mã đã trở nên rất phổ biến Chẳng hạn,
ví dụ điển hình là các giao dịch ngân hàng trực tuyến hầu hết đều được thực
hiện qua mật mã Ngày nay, kiến thức ngành mật mã là cần thiết cho các cơ
quan chính phủ, các khối doanh nghiệp và cả cho cá nhân Một cách khái
quát, ta có thể thấy mật mã có các ứng dụng như sau:
- Với các chính phủ: bảo vệ truyền tin mật trong quân sự và ngoại giao, bảo
vệ thông tin các lĩnh vực tầm cỡ lợi ích quốc gia
- Trong các hoạt động kinh tế: bảo vệ các thông tin nhạy cảm trong giao dịch
như hồ sơ pháp lý hay y tế, các giao dịch tài chính hay các đánh giá tín
dụng…
- Với các cá nhân: bảo vệ các thông tin nhạy cảm, riêng tư trong liên lạc với
thế giới qua các giao dịch sử dụng máy tính hoặc kết nối mạng
Trang 9Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
4 E là tập các hàm lập mã
5 D là tập các hàm giải mã Với mỗi k K, có một hàm lập mã
ek E, ek : P → C và một hàm giải mã dk D, dk: C → P sao cho
dk(ek(x)) = x , x P
Hình 1.1: Quá trình mã hoá và giải mã
- Một thông báo thường được tổ chức dưới dạng bản rõ
- Người gửi sẽ làm nhiệm vụ mã hóa bản rõ, kết quả thu được gọi là bản mã
- Bản mã này được gửi đi trên một đường truyền tới người nhận, sau khi nhận
được bản mã người nhận giải mã nó để tìm hiểu nội dung
- Dễ dàng thấy được công việc trên khi sử dụng định nghĩa hệ mật mã:
ek (P) = C và dk (C) = P
1.1.1.4 Những yêu cầu đối với hệ mật mã
Một hệ mật mã phải cung cấp một mức cao về độ tin cậy, tính toàn vẹn,
sự không từ chối và sự xác thực
- Độ tin cậy: cung cấp sự bí mật cho các thông báo và dữ liệu được lưu bằng
việc che dấu thông tin sử dụng các kĩ thuật mã hóa
- Tính toàn vẹn: cung cấp sự bảo đảm với tất cả các bên rằng thông báo còn
lại không thay đổi từ khi tạo ra đến khi người nhận mở nó ra
- Tính không từ chối: có thể cung cấp một cách xác nhận rằng tài liệu đã đến
từ ai đó ngay cả khi họ cố gằng từ chối nó
- Tính xác thực: cung cấp hai dịch vụ:
Trang 10Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
+ Đầu tiên là nhận dạng nguồn gốc của một thông báo và cung cấp một vài
sự bảo đảm rằng nó là đúng sự thật
+ Thứ hai là kiểm tra đặc tính của người đang trong một hê thống và sau
đó tiếp tục kiểm tra đặc tính của họ trong trường hợp ai đó cố gắng đột
nhiên kết nối và giả dạng người sử dụng
1.1.2 Khái quát về hệ mã công khai
1.1.2.1 Mã đối xứng và mã công khai
Mã đối xứng được dùng để chỉ các hệ mã mà trong đó khi biết khóa lập
mã ta có thể tìm được khóa giải mã một cách đễ dàng Đồng thời việc giải mã
cũng đòi hỏi thời gian như việc lập mã Các hệ mã thuộc loại này có thời gian
lập mã và giải mã tương đối nhanh vì thế các hệ mã đối xứng thường được sử
dụng để mã hóa những dữ liệu lớn Nhưng các hệ mã đối xứng yêu cầu phải
giữ bí mật hoàn toàn về khóa lập mã
Để giải quyết vấn đề phân phối và thoả thuận khoá của mật mã khoá
đối xứng, năm 1976 Diffie và Hellman đã đưa ra khái niệm về hệ mật mã
khoá công khai và một phương pháp trao đổi công khai để tạo ra một khoá bí
mật chung mà tính an toàn được bảo đảm bởi độ khó của một bài toán toán
học cụ thể (là bài toán tính “lôgarit rời rạc”) Hệ mật mã khoá công khai hay
còn được gọi là hệ mật mã phi đố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) Trong hệ mật này, khoá mã hoá khác với
khoá giải mã Về mặt toán học thì từ khoá công khai rất khó tính được khoá
riêng Biết được khoá này không dễ dàng tìm được khoá kia Khoá giải mã
được giữ bí mật trong khi khoá mã hoá được công bố công khai Một người
bất kỳ có thể sử dụng khoá 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õ
Trang 11Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Người gửi A sẽ mã hoá thông điệp bằng khóa công khai của người
nhận B 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 1.2 và 1.3
Hình 1.2: Mã hoá thông điệp sử dụng khoá công khai P
Hình 1.3: Giải mã thông điệp sử dụng khoá riêng của người nhận
Có nhiều hệ thống khoá 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ệ mã đườ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
Việc phát minh ra phương pháp mã công khai tạo ra một cuộc “cách
mạng” trong công nghệ an toàn thông tin điện tử Nhưng thực tiễn triễn khai
Trang 12Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
cho thấy tốc độ mã hoá khối dữ liệu lớn bằng các thuật toán mã hoá công khai
chậm hơn rất nhiều so với hệ mã hoá đối xứng Ví dụ, để đạt được độ an toàn
như các hệ mã đối xứng mạnh cùng thời, RSA đòi hỏi thời gian cho việc mã
hoá một văn bản lâu hơn gấp hàng ngàn lần Do đó, thay bằng việc mã hoá
văn bản có kích thước lớn bằng lược đồ khoá công khai thì văn bản này sẽ
được mã hoá bằng một hệ mã đối xứng có tốc độ cao như DES, IDEA,…sau
đó khoá được sử dụng trong hệ mã đối xứng sẽ được mã hoá sử dụng mật mã
khoá công khai Phương pháp này rất khả thi trong việc mã và giải mã những
văn bản có kích thước lớn như được mô tả trong hình 1.5 và 1.6
Hình 1.4: Mã hoá thông điệp sử dụng khoá bí mật S để mã thông điệp và
khoá công khai P để mã khoá bí mật S
Hình 1.5: Giải mã thông điệp sử dụng khoá bí mật S để giải mã thông
điệp và khoá riêng P để giải mã khoá bí mật S
Trang 13Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
1.1.2.2 Ưu và nhược điểm của hệ mật mã khoá công khai
Ưu điểm rõ ràng nhất của hệ mật mã khóa công khai là bảo mật Một văn
bản được mã hóa bằng khóa công khai của một người sử dụng thì chỉ có thể
giải mã với khóa bí mật của người đó
Hệ mật mã khoá công khai dựa vào các giả thiết liên quan đến các bài
toán khó nên đa số các hệ mật mã này đều có tốc độ dịch mã không nhanh
lắm Chính nhược điểm này làm cho các hệ mật mã khoá công khai khó được
dùng một cách độc lập
Một vấn đề nữa nảy sinh khi sử dụng các hệ mật mã khóa công khai là
việc xác thực mà trong mô hình hệ mật mã đối xứng không đặt ra Do các
khoá mã công khai được công bố một cách công khai trên mạng cho nên việc
đảm bảo rằng “khoá được công bố có đúng là của đối tượng cần liên lạc hay
không?” là một kẽ hở có thể bị lợi dụng Vấn đề xác thực này được giải quyết
cũng chính bằng các hệ mật mã khoá công khai Nhiều thủ tục xác thực đã
được nghiên cứu và sử dụng như Kerberos, X.509… Một ưu điểm nữa của
các hệ mật mã khoá công khai là các ứng dụng của nó trong lĩnh vực chữ ký
số, cùng với các kết quả về hàm băm, thủ tục ký để bảo đảm tính toàn vẹn của
một văn bản được giải quyết
1.2 BÀI TOÁN LOGARIT RỜI RẠC
Lôgarit rời rạc là sự tiếp nối của phép tính lôgarit trên trường số thực vào
các nhóm hữu hạn Ta nhắc lại định nghĩa lôgarit: Với hai số thực x, y và cơ
Trang 14Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
1.2.1 Định nghĩa
Tổng quát, giả sử G là một nhóm cyclic hữu hạn có n phần tử Zn là vành
các số nguyên modun n Chúng ta kí hiệu phép toán của G theo lối nhân Giả
sử b là một phần tử sinh của G, khi đó mọi phần tử g của G có thể viết dưới
dạng g = bk
với một số nguyên k nào đó Hơn nữa, hai số nguyên có cùng tính
chất đó với g là đồng dư theo modul n Ta định nghĩa một ánh xạ:
x sao cho: ax = b mod p là bài toán khó giải
Nếu a là căn nguyên tố của p và p là số nguyên tố, thì luôn luôn tồn tại
lôgarit rời rạc, ngược lại thì có thể không
Ví dụ:
Cho a = 2, x = 4, n = 13
Ta có : 24
mod 13 = 3
Bài toán ngược lại : tìm x để 2x
= 3 mod 13 là bài toán lôgarit rời rạc
Vậy x = log2 3 mod 13 = 4
Tuy nhiên nếu chon n là số lớn ví dụ tìm x để 2x
= 3 mod 19797 thì việc tìm
x là rất khó
Trang 15Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Ta nhận thấy, trong khi bài toán lũy thừa là dễ dàng, thì bài toán logarit
rời rạc là rất khó Đây cũng là một cơ sở của mã công khai
1.2.2 Ứng dụng trong mật mã
Lôgarit rời rạc là bài toán khó (chưa biết một thuật toán hiệu quả nào),
trong khi bài toán tính luỹ thừa của một số lại không khó (có thể sử dụng
thuật toán bình phương và nhân) Tình trạng này giống như tình hình giữa bài
toán thừa số nguyên và phép nhân các số nguyên Chúng đều có thể dùng để
xây dựng cấu trúc cho một hệ mật mã
Người ta thường chọn nhóm G trong mật mã lôgarit rời rạc là nhóm
cyclic (Zp)* chẳng hạn như mật mã Elgamal, trao đổi khóa Diffie – Hellman
và chữ kí số Elgamal
Ngoài ra còn có mật mã sử dụng lôgarit rời rạc trong nhóm con cyclic
của các đường elliptic trên trường hữu hạn gọi là mật mã đường cong elliptic
1.2.3 Một số thuật toán lôgarit rời rạc
1.2.3.1 Phương pháp đơn định
Cho G là nhóm cyclic, a, b G Bài toán tìm kiếm nghiệm của phương
trình ax
= b gọi là bài toán lôgarit rời rạc trong nhóm G Nghiệm x của
phương trình gọi là lôgarit rời rạc cơ số a của b, ký hiệu là logab, nếu như cơ
số a cố định và nếu như nghiệm của phương trình tồn tại thì log b Za G, nếu
như |G|< ∞
Bài toán lôgarit rời rạc có vai trò rất lớn trong ứng dụng của mật mã Đặc
biệt quan trọng trong trường hợp G = F(q)*
, với q = pl, p là số nguyên tố, lN, tức là trong trường Galoa, cũng như trong trường hợp G là một nhóm điểm
của đường cong Elliptic trong trường hữu hạn
Trang 16Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Ta xét phương trình
ax ≡ b (mod p) (1) trong nhóm Z*
p, với p là số nguyên tố Ta giả sử rằng bậc của a (mod p) bằng p-1 Khi đó phương trình giải được, và nghiệm x là một phần tử của Zp-1
Trong phần này ta mô tả phương pháp đơn định để xác định nghiệm của (1)
Nghiệm logab của phương trình (1) có thể tìm theo công thức sau
j -1 j a
log b(1-a ) b (mod p-1),
Thuật toán tương hợp
từ đây aHu-v b(mod p)
Bước 6 Đưa ra giá trị xHu-v(modp-1).
Kết thúc thuật toán
1.2.3.2 Thuật toán Pohlig-Hellman
Input: cho số nguyên p
Output: phân tích số nguyên p thành thừa số nguyên tố
Bây giờ giả sử ta biết được sự phân tích thành nhân tử của p-1 ra thừa số
i s α i i=1
p-1=q
Thuật toán Pohlig-Hellman
Trang 17Số hoá bởi Trung tâm Học liệu – ĐHTN
r a (modp), j0, ,q1 Bước 2 Đối với từng số nguyên tố q, q ||p-1α , ta tìm α
a
log b(mod q ) Đặt
Theo bảng trong bước 1 ta tìm ra giá trị của x1 và tiếp tục như thế Giá trị
của x iđược tìm thấy từ phương trình
i-1 i+1
-x -x q- -x q (p-1)/q x (p-1)/q
Bước 3 Khi tìm log (mod i), 1, ,
a b q i i s, ta tìm loga b(mod p1)theo định lý phần dư trung hoa
Kết thúc thuật toán
1.2.3.3 Phương pháp ρ - Pollaid đối với logarit rời rạc
Ta đã tìm hiểu phương phápρ - Pollaid đối với nhân tử hóa số nguyên
Bây giờ ta tìm hiểu về bài toán lôgarit rời rạc theo modulo là số nguyên tố p
Ta muốn giải phương trình ax b(modp) Để làm việc này ta xem 3 dãy số
Trang 18Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
u , v , zi i i , i0,1,2, ,được xác định như sau:
z b a (mod p-1)
Tiếp theo ta xem tập hợp (z ,u ,v ,z ,u ,v )i i i 2i 2i 2i , i=1,2,3, , ta tìm vị trí i,
sao cho z =zi 2i Từ đẳng thức cuối cùng ta rút ra
b a (modp),
từ đây giá trị x cần tìm bằng log ba l(v -v )(mod p-1)i 2i
1.2.3.4 Lôgarit rời rạc trong trường nguyên tố
Trong phần này ta xem thuật toán giải phương trình
x
a b(modp), (2)
ở đây p là số nguyên tố Ta cho rằng a(modp)có bậc là p-1
Trang 19Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Thuật toán Adleman
Bước 1 Hình thành cơ sở nhân tử, bao gồm tất cả các số nguyên tố q,
tính thu được ứng với các ẩn log qa - logarit rời rạc của phần tử của cơ sở nhân
tử
Bước 4 Bằng cách lựa chọn ta tìm ra một giá trị của r, sao cho
q β r
Bước 5 Bằng cách tính toán tương tự như bước 2 và 3 của thuật toán,
tìm ra lôgarit rời rạc log pa i đối với các số nguyên tố p , ,p1 k ở bước 4
Trang 20Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
q|q<L1/2 H+c|0<c<L1/2+ε, q là số nguyên tố
Bước 2 Bằng cách sàng ta tìm cặp c ,c1 2sao cho 0<c <Li 1/2+ε, i=1,2
q 1 21/2
Bước 3 Trên bước 2 ta tìm được số lượng đủ lớn phương trình, ta giải hệ
phương trình tuyến tính thu được và tìm ra log (H+c),log qa a
Bước 4 Để tìm x, ta đưa ra giới hạn mới 2
Bước 5 Bằng cách tương tự như bước 2 và 3 ta tìm lôgarit của một số
nguyên tố u, u xuất hiện trong bước 4
Trang 21Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Thuật toán LOGsmooth
Giả sử q là số nguyên tố, và là ước của p-1 Khi đó tập nghiệm của
phương trình x' =1 trong trường q Z gồm các phần tử p 1,c,c , ,c2 q-1, với
-u l(ba k) 1(mod p)
Từ (2) sẽ tương đương
k
(a ) 1(mod q )đẳng thức cuối cùng cho ta (x-u )lk chia hết cho p-1, có nghĩa
k k
xu (mod q )
Ta tìm các đồng dư thức như vậy đối với các ước q của p-1, có thể tìm
được x (mod p-1) bằng định lý phần dư trung hoa
Vấn đề còn lại là tìm ui thế nào để thỏa mãn phương trình (4) Ta có thể
đặt u =10 Nếu như một số uitìm được, thì từ (4) dẫn đến -u i lqk-i-1
mãn phương trình x' =1(modp)q Lúc này có thể tìm t sao cho
k-i-1 i -u lq t
Ta đặt ui+1= u +tqi i Lúc này
k-i-1 k-1 i
-u +1 lq t -tlq
Như vậy điều này có nghĩa thỏa mãn (4)
Trang 22Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Nhờ vậy mà ta tìm uk bằng cách thực hiện theo sơ đồ:
k-i-1 i -u lq 0=1 i
u , r (ba ) (mod p), i
c
i i i+1 i i
t =log r ,u =u +t q
1.2.3.5 Lôgarit rời rạc trong trường Galois
Cố định số nguyên tố p, số tự nhiên n >1, đặt q = pn Giả sử a là phần tử
sinh của nhóm cyclic F(q) Ta muốn giải phương trình * a =b trong trường x
F(q) Để làm điều này ta sử dụng các thuật toán với một cơ sở nhân tử Ta
xem thuật toán index-calculus sau:
Ý tưởng của thuật toán này là , từ đẳng thức
Khi nhận được số lượng đủ lớn biểu thức (7)( điều kiện là ít nhất là phải
có một phần tử g, mà log ga đã biết), thì ta có thể giải hệ phương trình tuyến
tính với ẩn là log xa i và log y trong vành a j Zp-1 với điều kiện là số lượng ẩn
trong hệ không quá lớn
Phương pháp đơn giản để tạo ra biểu thức (7) – chọn phần tử bất kỳ
p
g Z , tính u=a (modp)g và bằng cách lựa chọn chúng ta thử tìm số thỏa mãn
điều kiện sau
iu=p
Từ ý tưởng trên ta có thuật toán cụ thể sau:
Thuật toán index-calculus
Input: cho hai số a và b
Output: Tìm logab
Trang 23Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Bước 1 (Tính toán ban đầu) Trường F(q) đồng cấu với F(p) y /f(y) ,
với f(y) F(p) y là đa thức bất khả quy bậc n Cho nên bất kỳ thành phần
của trường F(q) được biểu diễn dưới dạng đa thức bậc không vượt quá n-1
Và nhân các đa thức như vậy sẽ rút gọn theo modulo f(y), điều này chúng ta
đã tìm hiểu ở chương trường số Phần tử (q-1)/(p-1)
1
a =a có bậc là p-1 và tạo thành F(p) Với sự hổ trợ của nó chúng ta lập bảng logarithm “hằng số”- có *
nghĩa là phần tử của trường nguyên tố F(p)F(q) Ta tính a =1,a ,a , ,a10 1 12 1p-2
Bước 2 (Lựa chọn cơ sở nhân tử) Cơ sở nhân tử BF(q)thành lập từ
tất cả các đa thức bất khả quy g bật không lớn hơn t, ở đây t là một số tham
số, t<n
Bước 3 (Tìm biểu thức) Lựa chọn ngẫu nhiên m, 1 m q-2, ta tìm các
giá trị sao cho thỏa mãn biểu thức
g
α (m) m
ở đây log ca 0 ta đã biết, còn log ga ta chưa biết độ lớn
Bước 4 (tìm thuật toán cho các phần tử của cơ sở nhân tử) Khi tìm ở
bước 3 với số lượng đủ lớn các biểu thức (lớn hơn |B|), ta giải hệ phương trình
tuyến tính trong vành Zq-1 và tìm ra log ga với gB
Bước 5 (Tìm lôgarit riêng) Ta tìm một giá trị của m sao cho
g β m
Trang 24Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
CHƯƠNG II: ỨNG DỤNG LÔGARIT RỜI RẠC TRONG MỘT
SỐ HỆ MÃ CÔNG KHAI
Chương 2 trình bày những kiến thức cơ bản về hệ mã RSA, hệ mã
Elgamal, chữ kí điện tử Ellgamal, hệ mã đường cong Elliptic Chương này
cũng trình bày một số ví dụ cụ thể để minh họa Những kiến thức trình bày
trong chương này được trích dẫn ở tài liệu sau: 1 Mã hoá thông tin: Cơ sở
toán học và ứng dụng - Phạm Huy Điển, Hà Huy Khoái (2003) - NXB Đại
Học Quốc Gia, 2 Lý thuyết mật mã và an toàn thông tin - Phan Đình Diệu
(2002) - NXB Đại Học Quốc Gia Hà Nội, 3 Giáo trình an toàn dữ liệu –
Khoa công nghệ thông tin - Trịnh Nhật Tiến - NXB Đại Học Quốc Gia Hà
Nội
2.1 HỆ MÃ RSA
2.1.1 Giới thiệu
Trong mật mã học, RSA là một thuật toán mật mã hóa khóa công khai
Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời
với việc mã hóa Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã
học trong việc sử dụng khóa công cộng RSA đang được sử dụng phổ biến
trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài
khóa đủ lớn
Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu
tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của
thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả Trước đó, vào năm 1973,
Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã mô tả
một thuật toán tương tự Với khả năng tính toán tại thời điểm đó thì thuật toán
này không khả thi và chưa bao giờ được thực nghiệm Tuy nhiên, phát minh
này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật
Trang 25Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm
1983 (Số đăng ký 4,405,829) Bằng sáng chế này hết hạn vào ngày 21 tháng 9
năm 2000 Tuy nhiên, do thuật toán đã được công bố trước khi có đăng ký
bảo hộ nên sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ Ngoài ra,
nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng
sáng chế RSA đã không thể được đăng ký
5 Tính d sao cho de ≡ 1 mod (n)
6 Công khai cặp (e, n), giữ bí mật d, cặp (p, q)
2.1.2.2 Mã hóa
Giả sử An có đoạn thông tin M cần gửi cho Bình Đầu tiên An chuyển M
thành một số x < n theo một hàm có thể đảo ngược (từ x có thể xác định lại
M) được thỏa thuận trước với Bình An có x và biết khóa tạo mã là (n, e) của
Bình, An tính y là bản mã của x theo công thức: y = xe
mod n Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ theo mođun bằng thuật
toán bình phương và nhân Sau đó gửi y cho Bình
2.1.2.3 Giải mã
Trang 26Số hoá bởi Trung tâm Học liệu – ĐHTN
Chọn e = 3 thì UCLN (e, (n)) = UCLN (3, 20) = 1
Tìm d sao cho ed ≡ 1 mod (n) hay 3d ≡ 1 mod 20
Để giải mã, ta tính toán nhƣ sau:
M = yd mod n = 137 mod 33 = 13(3+3+1) mod 33 = 133 133 13 mod 33
= (133 mod 33).(133 mod 33).(13 mod 33)
= (2197 mod 33).(2197 mod 33) (13 mod 33) = 19.19.13 mod 33
= 4693 mod 33 = 7
Trang 27Số hoá bởi Trung tâm Học liệu – ĐHTN
Chọn e = 17 thì UCLN (e, (n)) = UCLN (17, 3120) = 1
Tìm d sao cho ed ≡ 1 mod (n) hay 17d ≡ 1 mod 3120
Khi đó thông báo đã được mã hóa thành : y= 855
Và để kiểm tra giải mã, ta tính toán như sau:
M = yd mod n = 8552753 mod 3233 = 123
2.1.4 Nhận xét
2.1.4.1 Đặc điểm của hệ mã RSA
Trong thực tế, tốc độ mã hóa và giải mã của RSA là rất chậm so với các
hệ mã khác Điều này dẫn đến việc RSA chủ yếu được dùng để mã hóa khóa
bí mật hoặc các các bản rõ ngắn Phần nội dung chính cần gửi sẽ được mã hóa
bằng một phương pháp mã hóa khác có tốc độ thực hiện nhanh hơn (Phương
pháp này thường kém an toàn hơn so với RSA) Người nhận sẽ giải mã bằng
RSA để lấy khóa bí mật rồi mới tiến hành giải mã nội dung cần nhận Điều
này đã dẫn đến những bất cập về ứng dụng RSA rộng rãi trong thực tế Giải
quyết được mâu thuẫn giữa việc tăng tính an toàn và tăng thời gian thực hiện
mã hóa là vấn đề cần được nghiên cứu để giải quyết
Trang 28Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
2.1.4.2 Tính bảo mật
Giả sử Bắc là người nhận được bản mã y và muốn đọc lại bản rõ Ta đã
thấy với cách tạo mã trên và chỉ biết khóa công khai n và e của Bình, Bắc cần
tính được d thì mới giải được Ta biết d được tính là nghịch đảo của e theo
modulo (n) nghĩa là d là nghiệm của ez 1 (mod (n)) Để giải phương
trình này cần biết (n) mà (n) = (p-1)(q-1) nghĩa là cần biết dạng phân tích
n = pq Nếu ta chọn p và q là những số nguyên tố lớn cỡ 100 chữ số thì n có
cỡ 200 chữ số và nếu chọn p và q hợp lý thì để tìm dạng biểu diễn n = pq theo
các thuật toán hiện nay trên máy tình cũng mất hàng chục tỷ năm
Một số điểm lưu ý với hệ mã này:
1) Chọn p và q sao cho (p-1) và (q-1) phải có các thừa số nguyên tố lớn,
ước chung lớn nhất của (p-1) và (q-1) phải nhỏ đồng thời p và q chứa
các chữ số khác nhau không nhiều
2) Nên chọn e là số nguyên tồ lớn hơn p và q và phải thỏa mãn 2e > n.Nếu
điều kiện này không thỏa mãn thì việc thám mã có thể sẽ dễ dàng nhờ
phép khai căn
2.1.4.3 Thám mã hệ mã RSA
Bất cứ ai cũng có thể tạo ra một hệ thống thông tin mã hóa cho riêng
mình Nhưng để có một hệ thống an toàn và hiệu quả đòi hỏi người thiết kế
phải có kiến thức toán học sâu sắc, có kinh nghiệm về bảo mật và am hiểu các
phương pháp tấn công
• Brute-force attack: phương pháp tấn công bằng cách thử tất cả những
chìa khóa có thể có Đây là phương pháp tấn công thô sơ nhất và cũng khó
khăn nhất Theo lý thuyết, tất cả các thuật toán mã hóa hiện đại đều có thể bị
đánh bại bởi brute-force nhưng trong thực tiễn việc này chỉ có thể thực hiện
được trong thời gian hàng triệu, thậm chí hàng tỉ năm Vì thế có thể coi một
Trang 29Số hoá bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
thuật toán mã hóa là an toàn nếu như không còn cách nào khác để tấn công nó
dễ hơn là brute-force
• Frequency analysis: thống kê tần suất, chỉ có thể áp dụng được đối với
các thuật toán cổ điển dùng phương pháp thay thế, ví dụ phương pháp Caesar
Để thực hiện phương pháp này ta cần một lượng văn bản đã mã hóa đủ lớn để
phép thống kê được chính xác Ngoài ra còn phải biết ngôn ngữ sử dụng trong
văn bản ban đầu, nếu văn bản ban đầu là tiếng Anh thì nhiều khả năng kí tự
xuất hiện nhiều nhất trong văn bản đã mã hóa là do chữ e mã hóa thành
• Tấn công dựa trên thời gian
Năm 1995, Paul Kocher mô tả một dạng tấn công mới lên RSA: Khi kẻ tấn
công nắm đủ thông tin về phần cứng thực hiện mã hóa và xác định được thời
gian giải mã đối với một số bản mã lựa chọn thì có thể nhanh chóng tìm ra
khóa d Dạng tấn công này có thể áp dụng đối với hệ thống chữ ký điện tử sử
dụng RSA
2.2 HỆ MÃ ELGAMAL
2.2.1 Giới thiệu
Hệ mã Elgamal là một hệ mật mã công khai Hệ mã này dựa trên bài toán
lôgarit rời rạc Tính an toàn của hệ mã này dựa vào độ phức tạp của bài toán
loogarit
Hệ Elgamal là một biến thể của sơ đồ phân phối khóa Diffie – Hellman,
được đưa ra năm 1985 So với hệ mã RSA , hệ Elgamal không có nhiều rắc