Tải bản đầy đủ (.pdf) (58 trang)

Luận văn thạc sĩ toán học Lôgarit rời rạc và mật mã công khai

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (847.04 KB, 58 trang )

1

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC KHOA HỌC

VĂN THỊ THU THỊNH

LÔGARIT RỜI RẠC
VÀ MẬT MÃ CÔNG KHAI

Chuyên ngành: TOÁN ỨNG DỤNG
Mã số: 60.46.01.12

LUẬN VĂN THẠC SĨ TOÁN HỌC

NGƢỜI HƢỚNG DẪN KHOA HỌC:
TS. VŨ MẠNH XUÂN

THÁI NGUYÊN – 2014
Số hóa bởi Trung tâm Học liệu

/>

2

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

Số hóa bởi Trung tâm Học liệu

/>

3

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

Số hóa bởi Trung tâm Học liệu

/>

4

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ế.

Số hóa bởi Trung tâm Học liệu

/>

5

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
Số hóa bởi Trung tâm Học liệu

/>

6
đƣợ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
Số hóa bởi Trung tâm Học liệu

/>

7
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.
1.1.1.3. Khái niệm hệ mật mã
Hệ mật mã đƣợc định nghĩa là một bộ năm (P, C, K, E, D), trong đó:
1. P là tập hữu hạn các các bản rõ có thể.
2. C tập hữu hạn các bản mã có thể.
3. K là tập hữu hạn các khoá có thể.
Số hóa bởi Trung tâm Học liệu

/>

8
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
ek

K, có một hàm lập mã

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ụ:
Số hóa bởi Trung tâm Học liệu

/>

9
+ Đầ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õ.

Số hóa bởi Trung tâm Học liệu

/>

10
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
Số hóa bởi Trung tâm Học liệu

/>

11
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.
Số hóa bởi Trung tâm Học liệu
/>


12

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ơ
số a dƣơng, a khác 1, nếu ax = y thì x đƣợc gọi là lôgarit cơ số a của y, kí hiệu
là x = logay.
Lôgarit rời rạc có ứng dụng trong hệ mật mã khóa công khai, hệ mật mã
Elgamal.

Số hóa bởi Trung tâm Học liệu


/>

13
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ạ:
Logb : G → Zn
g=bk  k

Ánh xạ này là một đồng cấu nhóm, đƣợc gọi là lôgarit rời rạc theo cơ số b.
Bài toán tìm ax mod p khi biết a, x, p là bài toán dễ. Nhƣng bài toán
ngƣợc là bài toán tìm logarit rời rạc của một số modul p, tức là tìm số nguyên
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.
Ta có:
20 mod 13 = 1,
21 mod 13 = 2,
22 mod 13 = 4,
23 mod 13 = 8,
24 mod 13 = 3.
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ó.

Số hóa bởi Trung tâm Học liệu

/>

14
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ì loga b Z 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ố, l N,
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.
Số hóa bởi Trung tâm Học liệu

/>

15
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

(1-a j )-1b j (mod p-1) ,

loga b
Thuật toán tƣơng hợp.
Bƣớc 1. Gán H:= p1/2 +1.
Bƣớc 2. Tìm c

a H (mod p) .

Bƣớc 3. Lập bảng giá trị cu (modp), 1

u H , sắp xếp nó.


Bƣớc 4. Lập bảng giá trị b.a v (modp), 0 v H , sắp xếp nó.
Bƣớc 5. Tìm sự trùng nhau phần tử từ bảng thứ nhất và bảng thứ hai. Để
làm điều này

cu b.a v (modp) ,
từ đây a Hu-v b(mod p) .
Bƣớc 6. Đƣa ra giá trị x Hu-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ố
s

p-1=

qiαi

i=1

Thuật toán Pohlig-Hellman
Số hóa bởi Trung tâm Học liệu

/>

16
Bản chất của thuật toán nằm ở chổ, tìm số lƣợng đủ lớn phƣơng trình x
theo modulo qi với tất cả i, sau đó tìm nghiệm của phƣơng trình ban đầu bằng
i


định lý phần dƣ trung hoa. Để tìm x theo một trong các modulo nhƣ thế, ta
phải giải đồng dƣ thức
(a

p-1
α
qi i

) (a

p-1
α
qi i

)(modp)

Bƣớc 1. Đối với từng số nguyên tố q,q|p-1 , ta lập bảng giá trị

rq,j a j(p-1)/q (modp) , j 0,..., q 1 .
Bƣớc 2. Đối với từng số nguyên tố q, qα||p-1 , ta tìm loga b(modqα ) .
Đặt

x loga b(modqα ) x0 +x1q+...+xα-1qα-1(modqα ) , với 0 xi q-1. Lúc
này từ (1) dẫn đến rằng

b(p-1)/q a x0 (p-1)/q (modp) .
Với sự giúp đỡ của bảng trong bƣớc 1 ta tìm ra x0. Lúc này rõ ràng ta có

(ba -x0 )(p-1)/q


2

a x1(p-1)/q (modp) .

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 xi đƣợc tìm thấy từ phƣơng trình
i-1

i+1

(ba -x0 -x1q-...-xi-1q )(p-1)/q

a xi (p-1)/q (modp) .

Bƣớc 3. Khi tìm log a b(mod qi i ), i 1,..., s , ta tìm log a b(mod p 1) 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 a x b(modp) . Để làm việc này ta xem 3 dãy số
Số hóa bởi Trung tâm Học liệu

/>

17

u i , vi , zi , i 0,1,2,...,
đƣợc xác định nhƣ sau:


u0 =v0 = 0 , z0 1 ,
ui+1 ui +1(mod p-1) , nếu nhƣ 0ui+1 2ui (modp-1) , nếu nhƣ p/3< zi < 2/3p ;
ui+1 ui (modp-1) , nếu nhƣ 2/3p
vi+1 vi (modp-1) , nếu nhƣ 0vi+1 2vi (modp-1) , nếu nhƣ p/3
vi+1 vi +1(modp-1) , nếu nhƣ 2/3p
zi+1 bui+1a vi+1 (modp-1) .
Tiếp theo ta xem tập hợp (zi ,ui ,vi ,z2i ,u 2i ,v2i ) , i=1,2,3,..., ta tìm vị trí i,
sao cho zi =z 2i . Từ đẳng thức cuối cùng ta rút ra

bu2i -ui a vi -v2i (modp) .
Nếu nhƣ gcd(u 2i -ui ,p-1)=1, thì khi l Z, l(u 2i -ui ) 1(mod p-1) ta thu
đƣợc

b a l(vi -v2i ) (modp) ,
từ đây giá trị x cần tìm bằng loga b l(vi -v2i )(mod p-1) .
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

a x b(modp) , (2)
ở đây p là số nguyên tố. Ta cho rằng a(modp) có bậc là p-1.

Số hóa bởi Trung tâm Học liệu

/>


18
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,

q B=econst

logploglogp

Bƣớc 2. Bằng cách chọn lựa chúng ta tìm số tự nhiên ri sao cho
α

a ri

q iq (mod p) , q là số nguyên tố
q B

Từ đây dẫn đến

αiqloga q(mod p-1) . (3), q là số nguyên tố

ri
q B

Bƣớc 3. Chọn số lƣợng đủ lớn biểu thức (3), giải hệ phƣơng trình tuyến
tính thu đƣợc ứng với các ẩn log a q - 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
β


a r ×b

q q ×p1...pk (modp) ,
q B

ở đây p1,...,pk - là các số nguyên tố với độ lớn “trung bình”, có nghĩa

B
logploglogp

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 loga pi đối với các số nguyên tố p1,...,pk ở bƣớc 4.
Bƣớc 6. Xác định giá trị cần tìm log a b :
βq loga q+

loga b -r+
q B

k

loga pi (mod p-1) .

i=1

Kết thúc thuật toán.
Thuật toán COS
Bƣớc 1 . Đặt

H:= P1/2 +1, J:=H2 -p > 0, L=e


logploglogp

, 0< ε <1

Hình thành tập hợp
Số hóa bởi Trung tâm Học liệu

/>

19

H+c|0
q|q
Bƣớc 2. Bằng cách sàng ta tìm cặp c1,c2 sao cho 0(H+c1 )(H+c2 )

q

αq (c1 ,c2 )

(mod p)

q L1/2

Trong trƣờng hợp này, bởi vì J=O(p1/2 ) nên
(H+c1 )(H+c2 ) J+(c1 +c2 )H+c1c2 (mod p) .


Lôgarit theo cơ số a ta thu đƣợc biểu thức sau
αq (c1,c2 )loga q (mod p-1) ,

loga (H+c1 )+loga (H+c2 )
q

L1/2

a có thể tính theo công thức
β

q q (mod p) .

a
q L1/2

Từ đây
βq loga q (mod p-1)

1
q

L1/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 a (H+c),log a q .
Bƣớc 4. Để tìm x, ta đƣa ra giới hạn mới L2 . Bằng cách chọn ngẫu nhiên,
ta tìm một giá trị w, thỏa mãn biểu thức
q gq


awb
q
u hu (mod p) , q, u là số nguyên tố
L1/2 u
Trong biểu thức này với sự có mặt của số nguyên tố mới là u có độ lớn
“trung bình”.
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.
Bƣớc 6. Ta tìm đáp số
x = log a b -w +

g qlog a q +
q
Số hóa bởi Trung tâm Học liệu

h u log a u (mod p-1)
L1/2

u
/>

20
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'q =1 trong trƣờng Zp gồm các phần tử 1,c,c2 ,...,cq-1 , với
c a


p-1
q

(modp) . Nếu nhƣ cho số d và biết đƣợc rằng nó thỏa mãn điều kiện

phƣơng trình x'q =1 , thì có thể lựa chọn số t sao cho d=ct ,0 t q-1.
Giả sử

p-1=q k l , với q và l nguyên tố cùng nhau. Ta sẽ tìm số

ui , i=0,1,...,k , mà chúng thỏa mãn
(ba -ui )lq

k-i

1(mod p) (4)

Khi i = k thì ta có đồng dƣ
(ba -uk )l 1(mod p)

Từ (2) sẽ tƣơng đƣơng

(a (x-uk )l 1(mod qk )
đẳng thức cuối cùng cho ta (x-u k )l chia hết cho p-1, có nghĩa

x u k (mod qk )
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ể

-u

đặt u 0 =1 . Nếu nhƣ một số u i tìm đƣợc, thì từ (4) dẫn đến (ba i )lq

k-i-1

thỏa

mãn phƣơng trình x'q =1(modp) . Lúc này có thể tìm t sao cho

(ba -ui )lq

k-i-1

ct (mod p) .

Ta đặt ui+1= ui +tqi . Lúc này

(ba -ui +1)lq

k-i-1

k-1

cta -tlq

1(mod p)

Nhƣ vậy điều này có nghĩa thỏa mãn (4)


Số hóa bởi Trung tâm Học liệu

/>

21
Nhờ vậy mà ta tìm uk bằng cách thực hiện theo sơ đồ:
u 0=1, ri (ba -ui )lq

k-i-1

(mod p) , ti =logcri ,ui+1=ui +t iqi .

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 x =b trong trƣờng
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
m

n

xi =
i=1

yj
j=1

Với các phần tử xi ,y j nằm trong trƣờng hữu hạn Z p , thì
m


n

loga y j (mod p-1) (7)

loga xi
i=1

j=1

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 a g đã biết), thì ta có thể giải hệ phƣơng trình tuyến
tính với ẩn là loga xi và loga y j trong vành 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ỳ
g Zp , tính u=a g (modp) 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
u=

pi

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

Số hóa bởi Trung tâm Học liệu

/>


22
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ử a1=a (q-1)/(p-1) 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 a10 =1,a1,a12 ,...,a1p-2 .

Bƣớc 2. (Lựa chọn cơ sở nhân tử). Cơ sở nhân tử B

F(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ố, tBƣớ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

a m c0

g

αg (m)

(modf(y)) ,

g B


Với c0 F(p) , từ đây ta tìm đƣợc biểu thức

αa (m)loga g(modq-1) ,

m loga c0 +
g B

ở đây loga c0 ta đã biết, còn log a g 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 a g với g B
Bƣớc 5. (Tìm lôgarit riêng). Ta tìm một giá trị của m sao cho
β

b×a m c1

g g (mod f(x)) ,
g B

ở đây c1 F(p) . Từ đây ta tìm ra giá trị cần tìm

βqloga g(modq-1)

loga b -m+loga c1 +
g B

Số hóa bởi Trung tâm Học liệu

/>


23

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.
Số hóa bởi Trung tâm Học liệu


/>

24
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ý.
2.1.2. Hệ mã RSA
2.1.2.1. Cách tạo khóa
Trong hệ mã hóa RSA, các khóa công khai và khóa bí mật đƣợc tạo ra
nhƣ sau:
1. Chọn ngẫu nhiên hai số nguyên tố lớn p và q với p và q khác nhau.
2. Tính n = pq.
3. Tính giá trị hàm số Ơle (n) = (p-1)(q-1).
4. Chọn một số tự nhiên lẻ e sao cho 1 < e < (n) và là số nguyên tố
cùng nhau với (n).
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ã

Số hóa bởi Trung tâm Học liệu

/>

25
Khi Bình nhận y từ An, Bình sẽ sử dụng khóa bí mật d để giải mã bằng
cách tính yd mod n = x.
Biết x, Bình tìm lại M theo phƣơng pháp đã thỏa thuận trƣớc và đọc
đƣợc bản rõ.
2.1.2.4. Tính đúng đắn của hệ mã RSA
Quá trình giải mã nhƣ trên là đúng đắn vì:
Ta có yd = (xe)d = xed , do ed
Vậy yd = xed = xk

(n) + 1

= xk

1 (mod (n)) hay ed = k (n) + 1.
(n)

.x

x (mod n) theo định lý Euler.

2.1.3. Một số ví dụ
2.1.3.1. Ví dụ 1
Chọn p = 11, q = 3.
Khi đó n = pq = 33 và (n) = (p-1)(q-1) = 10.2=20
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.
Dễ thấy d = 7. Ta có: ed - 1 = 20.
Vậy khóa công khai là (n, e) = (33, 3).
Khóa bí mật là (p, q) = (11, 3) .
Giả sử cần mã hóa thông báo M = 7.
Ta có: y = Me mod n = 73 mod 33 = 343 mod 33 = 13
Khi đó thông báo đã đƣợc mã hóa thành : y = 13
Để 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
Số hóa bởi Trung tâm Học liệu

/>

×