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

Nghiên cứu một số giao thức tính toán đa bên an toàn sử dụng mã đồng cấu

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 (584.61 KB, 86 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
——————————————–

VŨ MẠNH ĐẠT

NGHIÊN CỨU MỘT SỐ GIAO THỨC TÍNH TOÁN
ĐA BÊN AN TOÀN SỬ DỤNG MÃ ĐỒNG CẤU

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

HÀ NỘI, 2017


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
——————————————–

VŨ MẠNH ĐẠT

NGHIÊN CỨU MỘT SỐ GIAO THỨC TÍNH TOÁN
ĐA BÊN AN TOÀN SỬ DỤNG MÃ ĐỒNG CẤU
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. Trần Văn Dũng

HÀ NỘI, 2017



LỜI CẢM ƠN
Luận văn được hoàn thành tại trường Đại học Sư phạm Hà Nội 2 dưới sự
hướng dẫn của TS. Trần Văn Dũng.
Tác giả xin bày tỏ lòng biết ơn sâu sắc nhất tới TS. Trần Văn Dũng, giảng
viên trường Đại học GTVT Hà Nội đã nhiệt tình giúp đỡ, trực tiếp chỉ bảo
hướng dẫn để tác giả hoàn thành luận văn này.
Tác giả xin bày tỏ lòng biết ơn chân thành tới Phòng Sau đại học, các thầy
cô giáo dạy cao học chuyên ngành Toán Ứng dụng trường Đại học Sư phạm
Hà Nội 2 đã giúp đỡ tác giả trong suốt quá trình học tập.
Cuối cùng tác giả xin gửi lời cảm ơn chân thành đến gia đình, bạn bè, người
thân đã luôn động viên và khuyến khích, tạo mọi điều kiện thuận lợi cho tác
giả trong quá trình học tập và hoàn thành luận văn.
Hà Nội, 15 tháng 07 năm 2017
Tác giả luận văn

Vũ Mạnh Đạt


LỜI CAM ĐOAN
Tôi xin cam đoan rằng những số liệu và kết quả nghiên cứu trong luận văn
này là trung thực, không trùng lặp với các luận văn khác. Tôi cũng xin cam
đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn này đã được cảm ơn
và các thông tin trích dẫn trong luận văn đã được chỉ rõ nguồn gốc.

Tác giả luận văn

Vũ Mạnh Đạt


Mục lục


Lời mở đầu

3

Chương 1 CÁC KIẾN THỨC CƠ SỞ

5

1.1 Số học Mudulo . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.1.1 Các số nguyên tố và các số nguyên tố cùng nhau . . .

5

1.1.2 Số học trong lớp số dư . . . . . . . . . . . . . . . . . .

7

1.1.3 Lý thuyết về đồng dư . . . . . . . . . . . . . . . . . .

7

1.1.4 Các số nguyên modulo n . . . . . . . . . . . . . . . .

8

1.1.5 Hàm Euler, định lý Euler, định lý Fermat . . . . . . .


8

1.1.6 Thuật toán Euclide mở rộng . . . . . . . . . . . . . .

10

1.1.7 Định lý phần dư Trung Hoa . . . . . . . . . . . . . . .

12

1.1.8 Căn nguyên thuỷ và logarit rời rạc . . . . . . . . . . .

15

1.2 Mã hóa công khai RSA . . . . . . . . . . . . . . . . . . . . .

19

1.2.1 Mô tả sơ lược

. . . . . . . . . . . . . . . . . . . . . .

19

1.2.2 Mã hóa . . . . . . . . . . . . . . . . . . . . . . . . . .

20

1.2.3 Giải mã . . . . . . . . . . . . . . . . . . . . . . . . . .


21

1.2.4 Tính đúng đắn của thuật toán RSA . . . . . . . . . .

21

1.3 Chữ ký điện tử DSA . . . . . . . . . . . . . . . . . . . . . .

23

1.3.1 Khái niệm . . . . . . . . . . . . . . . . . . . . . . . .

23

1.3.2 Tạo khóa DSA . . . . . . . . . . . . . . . . . . . . . .

23

i


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

1.3.3 Tạo chữ ký DSA . . . . . . . . . . . . . . . . . . . . .

24


1.3.4 Xác nhận chữ ký DSA . . . . . . . . . . . . . . . . . .

24

1.3.5 Tính đúng đắn của thuật toán DSA . . . . . . . . . .

24

1.4 Mã hóa ElGamal và mã hóa Paillier . . . . . . . . . . . . .

26

1.4.1 Hệ mã hóa ElGamal . . . . . . . . . . . . . . . . . . .

26

1.4.2 Hệ mã hóa Paillier . . . . . . . . . . . . . . . . . . . .

28

1.5 Mã hóa đồng cấu . . . . . . . . . . . . . . . . . . . . . . . .

30

1.5.1 Khái niệm . . . . . . . . . . . . . . . . . . . . . . . .

30

1.5.2 Tính chất đồng cấu . . . . . . . . . . . . . . . . . . .


30

Chương 2 TÍNH TOÁN ĐA BÊN AN TOÀN DỰA TRÊN
MÃ ĐỒNG CẤU

32

2.1 Các khái niệm và mô hình . . . . . . . . . . . . . . . . . . .

32

2.1.1 Các khái niệm . . . . . . . . . . . . . . . . . . . . . .

32

2.1.2 Các mô hình . . . . . . . . . . . . . . . . . . . . . . .

33

2.2 Giao thức Sigma . . . . . . . . . . . . . . . . . . . . . . . .

35

2.2.1 Giao thức định danh Schnorr . . . . . . . . . . . . . .

35

2.2.2 Giao thức Chaum - Pedersen . . . . . . . . . . . . . .

37


2.2.3 Giao thức “Hoặc" . . . . . . . . . . . . . . . . . . . .

37

2.3 Giao thức tổng . . . . . . . . . . . . . . . . . . . . . . . . .

39

2.3.1 Đặt vấn đề . . . . . . . . . . . . . . . . . . . . . . . .

39

2.3.2 Mô hình tấn công thụ động . . . . . . . . . . . . . . .

40

2.3.3 Mật mã cơ bản . . . . . . . . . . . . . . . . . . . . . .

41

2.3.4 Mô hình tấn công chủ động . . . . . . . . . . . . . . .

42

2.4 Giao thức cực đại . . . . . . . . . . . . . . . . . . . . . . . .

46

2.4.1 Các vấn đề . . . . . . . . . . . . . . . . . . . . . . . .


46

ii


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

2.4.2 Giao thức 1 . . . . . . . . . . . . . . . . . . . . . . . .

47

2.4.3 Giao thức 2 . . . . . . . . . . . . . . . . . . . . . . . .

50

2.4.4 Thảo luận cho các mô hình tấn công chủ động . . . .

51

Chương 3 MỘT SỐ VÍ DỤ TÍNH TOÁN ĐA BÊN AN TOÀN 54
3.1 Tính toán giao thức Sigma . . . . . . . . . . . . . . . . . . .

54

3.1.1 Ví dụ giao thức định danh Schnorr . . . . . . . . . . .

54


3.1.2 Ví dụ giao thức Chaum – Pedersen . . . . . . . . . . .

56

3.1.3 Ví dụ giao thức “Hoặc” . . . . . . . . . . . . . . . . .

57

3.2 Một số tính toán số học đa bên . . . . . . . . . . . . . . . .

58

3.2.1 Tính toán trong giao thức tổng . . . . . . . . . . . . .

58

3.2.2 Chứng minh tính hợp lệ của bản rõ sử dụng khóa công
khai Elgamal . . . . . . . . . . . . . . . . . . . . . . .

66

3.3 So sánh đa bên an toàn . . . . . . . . . . . . . . . . . . . .

70

3.3.1 Mã đồng cấu với tính vô hướng . . . . . . . . . . . . .

70


3.3.2 Mã hóa 0 và mã hóa 1 . . . . . . . . . . . . . . . . . .

71

3.3.3 Giao thức . . . . . . . . . . . . . . . . . . . . . . . . .

73

3.4 Đánh giá an toàn . . . . . . . . . . . . . . . . . . . . . . . .

76

iii


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

DANH MỤC KÍ HIỆU, TỪ VIẾT TẮT
STT

Từ viết tắt

Ý nghĩa

1

gcd; UCLN


Ước chung lớn nhất

2

max

Giá trị lớn nhất

3

Zn

Các số nguyên modulo n

4

RSA

Mã hóa công khai
(Ron Rivest, Adi Shamir và Len Adleman)

5

DSA

Chữ ký điện tử
(Digital Signature Algorithm)

6


MPC

Các giao thức tính toán đa bên
(Multi Party Computation)

7

ZKP

Chứng minh không tiết lộ thông tin
(Zero - Knowledge Proofs)

8

ZKPs (SM − ZKP )

Chứng minh phần tử thuộc tập hợp
không tiết lộ thông tin
(Set Membership – Zero Knowledge Proofs)

9

ZKPs (P E − ZKP )

Kiểm tra sự bằng nhau của hai bản rõ
không tiết lộ thông tin
(Plaintext Equality - Zero Knowledge Proofs)

10


DDH

Là một phương pháp trao đổi khóa
(Decisional Diffie Hellman)

1


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

DANH MỤC HÌNH VẼ
Hình vẽ

Nội dung

Ghi chú

Hình 1.1

Sơ đồ mã hóa công khai RSA

Trang 20

Hình 2.1

Tổng quan về hoạt động mạng

Trang 41


Hình 2.2

Mỗi phần i của mỗi nút nguồn

Trang 44

được gửi đến q, mã hóa với
mỗi i (điểm đến) và q (xác minh)
Hình 2.3

Ở bước 2 phần (b) của giao thức mở rộng,

Trang 45

các nút được cung cấp có thể giải mã;
họ tổng hợp và gửi kết quả đến q
bằng cách tái mã hóa các thông điệp
Hình 2.4

Ví dụ về giá trị cực đại

Trang 47

Hình 2.5

Sự so sánh của hai nút a và b

Trang 48


Hình 2.6

Sự so sánh thông qua giá trị nhị phân

Trang 50

Hình 2.7

Thứ tự của các nguy cơ bị rủi ro của một

Trang 51

phủ định sai đối với số lượng khác nhau của
các bit cho tối đa và cho các giá trị ngẫu nhiên
Hình 2.8

Tính toán giá trị là 11111b thay vì 11010b

2

Trang 52


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

LỜI MỞ ĐẦU
1. Lý do chọn đề tài
Trong cuộc sống ngày nay, công nghệ thông tin và truyền thông đã có mặt

ở nhiều phương diện trong cuộc sống hàng ngày của chúng ta, giờ đây điện
thoại di động, máy tính để bàn, thư điện tử và việc sử dụng Internet đã trở
thành tâm điểm trong văn hóa và cộng đồng của chúng ta, qua đó nhu cầu
trao đổi thông tin dữ liệu giữa các công ty, cơ quan, doanh nghiệp ngày
càng cao. Trong quá trình trao đổi thông tin thì vấn đề bảo mật thông tin
là một trong những vẫn đề được đặt lên hàng đầu, tuy nhiên trong quá
trình trao đổi giữa các bên vẫn còn có các mạng bị tấn công, bị những kẻ
gian lận đánh cắp thông tin, gây những ra tổn thất nặng nề. Khi đó nhu
cầu về bảo mật thông tin giữa các bên phải được an toàn tuyệt đối. Do đó
nó đảm bảo việc tính toán đa bên được an toàn.
Giao thức tính toán đa bên an toàn sử dụng mã đồng cấu không phải
là một lĩnh vực mới mẻ của an toàn bảo mật thông tin, nhưng hứa hẹn
sẽ mang đến những ứng dụng rộng khắp ở tất cả các lĩnh vực, các ngành
nghề cần được đảm bảo giữ bí mật riêng tư, khi có nhiều bên cùng tham
gia giải quyết một bài toán chung.
Mã đồng cấu là loại mã cho phép tái hiện lại việc kết hợp trên các bản
rõ thành phần, khi ta dùng kết quả kết hợp các bản mã tương ứng của
chúng. Từ đó, mỗi người tham gia có thể mã hoá đầu vào của mình và từ
kết quả kết hợp các bản mã thành phần đó có thể biết được kết quả của
bài toán chung. Đó là ý tưởng của các giao thức tính toán đa bên an toàn

3


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

dùng mã đồng cấu.
Được sự gợi ý của TS. Trần Văn Dũng hướng dẫn và nhận thấy tính

thiết thực của vấn đề em đã chọn đề tài “Nghiên cứu một số giao thức tính
toán đa bên an toàn sử dụng mã đồng cấu” để làm nội dung cho luận văn.
2. Mục đích nghiên cứu
Tìm hiểu một số giao thức tính toán đa bên an toàn dựa trên mã đồng
cấu, cơ sở an toàn của chúng.
3. Nhiệm vụ nghiên cứu
Hiểu cơ sở toán học của mã công khai có tính chất đồng cấu và việc áp
dụng chúng để giải một số bài toán tính toán đa bên an toàn.
4. Đối tượng và phạm vi nghiên cứu
4.1. Đối tượng nghiên cứu
Nghiên cứu cơ sở toán học của mã công khai, các giao thức an ninh.
4.2. Phạm vi nghiên cứu
Nghiên cứu trên cơ sở toán học, trường số modulo, mã đồng cấu, các giao
thức đa bên an toàn.
5. Dự kiến đóng góp mới của đề tài
Tóm tắt về mã công khai, mã đồng cấu, trình bày một số giao thức đa
bên an toàn sử dụng mã đồng cấu. Nêu các bước chi tiết của các giao thức
thông qua các số liệu của riêng mình.
6. Phương pháp nghiên cứu
Nghiên cứu cơ sở lý thuyết của các giao thức và áp dụng vào trường số
modulo để tính toán giải các bài toán.

4


Chương 1
CÁC KIẾN THỨC CƠ SỞ
Trong chương 1 luận văn trình bày những kiến thức cơ sở quan trọng
để áp dụng vào các thuật toán, giao thức chia sẻ thông tin bí mật. Cụ thể
luận văn đề cập đến một số định nghĩa cơ bản trong số học Modulo như: số

nguyên tố, nguyên tố cùng nhau, lý thuyết về đồng dư,. . . , và các định lý
quan trọng để áp dụng giải các bài toán về đồng dư trong các thuật toán,
giao thức như: định lí Euler, định lí Fermat, định lí phần dư Trung Hoa.
Ngoài ra luận văn cũng giới thiệu về logarit rời rạc và căn nguyên thuỷ,
một số giao thức mã hóa công khai như: RSA, DSA, Elgamal.

1.1
1.1.1

Số học Mudulo
Các số nguyên tố và các số nguyên tố cùng nhau

Ta nói rằng b (một số khác 0) là ước số của a nếu a = mb, với một giá
trị m nào đó, ở đây a, b, m là các số nguyên. Như vậy, b là ước số của a,
nếu như chia a cho b không còn lại số dư. Để kí hiệu b là ước số của a
thường sử dụng cách viết b| a.
Có các quan hệ sau:
5


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

(1) Nếu a| 1 thì a = 1 hoặc a = −1
(2) Nếu b| a và a| b thì a = b hoặc a = −b
(3) Số b bất kỳ khác 0 là ước số của 0
(4) Nếu b| g và b| h, thì b| (mg + nh), trong đó m, n là số nguyên bất kì.
Một số nguyên p > 1 được gọi là số nguyên tố, nếu chỉ có −1; 1; −p; p là
các ước số.

Một số nguyên bất kỳ s > 1 có thể phân tích thành các thừa số và được
trình bày dưới dạng: s = pα1 1 pα2 2 ...pαt t ,, trong đó p1 < p2 < ... < pt là các
số nguyên tố, còn các giá trị αi > 0
Một số nguyên dương c là ước chung lớn nhất của hai số nguyên a và b
nếu c thỏa mãn:
i) c là ước số của a và b
ii) Ước số bất kỳ của a và b đều là ước số của c
Khi đó ước chung lớn nhất của hai số a và b được ký hiệu là: gcd(a, b) hoặc
U CLN (a, b). Theo định nghĩa ta có c = gcd(a, b) hoặc c = U CLN (a, b).
Số nguyên a và b được gọi là hai số nguyên tố cùng nhau, nếu ước chung
lớn nhất của chúng bằng 1.
Nhận xét:
(1) UCLN của hai số nguyên là một số dương, bởi vì:
gcd(a, b) = gcd(a, −b) = gcd(−a, b) = gcd(−a, −b)
(2) Vì tất cả các số nguyên khác không đều là ước số của số 0, chúng ta
luôn luôn có: gcd(a, 0) = |a|.
(3) Số 1 là nguyên tố cùng nhau với mọi số nguyên
(4) Một số nguyên tố là một cặp số nguyên tố với tất cả những số khác
loại trừ những số là bội của số đó.
6


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

(5) Cho n số nguyên a1 , a2 , ..., an . Các số này được gọi là nguyên tố cùng
nhau nếu ước chung lớn nhất của n số đó bằng 1.
(6) Nếu a và b là hai số nguyên tố cùng nhau, khi đó tồn tại các số nguyên
x và y sao cho ax + by = 1.

1.1.2

Số học trong lớp số dư

Cho số nguyên dương b và một số nguyên a bất kỳ, khi chia a cho b ta
nhận được một số nguyên q nào đó và số dư r, phù hợp với quan hệ sau:
a = qb + r, (0 ≤ r < b)
Nếu a là một số nguyên, còn b là một số nguyên dương, thì a mod b, được
xác định như phần dư của phép chia a cho b. Như vậy, đối với một số
nguyên a bất kỳ có thể viết: a = q × b + (a mod b)
1.1.3

Lý thuyết về đồng dư

Định nghĩa 1.1. Cho a, b ∈ Z, n ∈ N . Ta nói a đồng dư với b theo
modulo n, khi a và b chia cho n có cùng số dư, và được viết dưới dạng sau:
a ≡ b mod n.
Tính chất
Tính chất 1. Nếu a1 ≡ b1 mod(n); a2 ≡ b2 mod(n) thì:
a1 ± a2 ≡ (b1 ± b2 ) mod n
Tính chất 2. Nếu a1 ≡ b1 mod(n) và a2 ≡ b2 mod(n) thì:
a1 × a2 ≡ (b1 × b2 )mod(n)
Tính chất 3. Nếu như gcd(d, n) = 1, a ≡ bmodn, a = a1 d, b = b1 d, thì:
a1 ≡ b1 modn.

7


Luận văn Thạc sĩ toán học


1.1.4

Vũ Mạnh Đạt

Các số nguyên modulo n

Các số nguyên modulo n (ký hiệu Zn ) là tập hợp các số nguyên {0, 1, 2, ..., n − 1}
bao gồm 2 phép toán cộng và nhân. Việc cộng và nhân trong Zn được thực
hiện giống như cộng và nhân các số nguyên, ngoại trừ một điểm là các kết
quả trung gian và cuối cùng sẽ được rút gọn theo modulo n.
Các định nghĩa trên phép cộng và phép nhân trong Zn thoả mãn hầu hết
các quy tắc quen thuộc trong số học. Sau đây ta sẽ liệt kê mà không chứng
minh các tính chất này:
(1) Phép cộng là đóng: a + b ∈ Zn , ∀a, b ∈ Zn
(2) Phép cộng có tính chất giao hoán: a + b = b + a, ∀a, b ∈ Zn
(3) Phép cộng có tính chất kết hợp: (a + b) + c = a + (b + c), ∀a, b, c ∈ Zn
(4) 0 là phần tử đơn vị của phép cộng: a + 0 = 0 + a = a, ∀a ∈ Zn
(5) Phần tử đối của phép cộng của một phần tử bất kì a ∈ Zn là −a, tức
là: a + (−a) = (−a) + a = 0
(6) Phép nhân là đóng: a × b ∈ Zn , ∀a, b ∈ Zn
(7) Phép nhân có tính chất giao hoán: a × b = b × a, ∀a, b ∈ Zn
(8) Phép cộng có tính chất kết hợp: (a × b) × c = a × (b × c), ∀a, b, c ∈ Zn
(9) 1 là phần tử đơn vị của phép nhân: a × 1 = 1 × a = a, ∀a ∈ Zn
(10) Phép nhân có tính chất phân phối đối với phép cộng:
(a + b) × c = a × c + b × c; a × (b + c) = a × b + a × c, ∀a, b, c ∈ Zn
1.1.5

Hàm Euler, định lý Euler, định lý Fermat

Định nghĩa 1.2. Cho n là số nguyên dương, đặt ϕ(n) là số các phần tử

của tập hợp các số nguyên trong khoảng [1, n] mà nguyên tố cùng nhau với
n, thì ϕ(n) gọi là hàm Euler.
8


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

Ta công nhận một số tính chất quan trọng của hàm Euler:
Tính chất 1. ϕ(1) = 1
Tính chất 2. Nếu p là số nguyên tố thì ϕ(p) = p − 1
Tính chất 3. Nếu như p và q là hai số nguyên tố cùng nhau thì: ϕ(pq) =
ϕ(p) × ϕ(q)
Tính chất 4. ϕ(ps ) = ps−1 (p − 1)
Tính chất 5. Nếu như n = pe11 pe22 ...pekk , trong đó p1 , p2 , ..., pk là các số
nguyên tố khác nhau thì: ϕ(n) = n 1 −

1
p1

1−

1
p2

... 1 −

1
pk


Định lý 1.1. (Định lý Euler) Cho n > 1, gcd(a, n) = 1 và ϕ(n) là
hàm Euler. Khi đó ta có: aϕ(n) ≡ 1 mod n
Chứng minh: Giả sử x1 , ..., xϕ(n) là các số tự nhiên khác nhau, nhỏ
hơn n và nguyên tố cùng nhau với n. Xét tất cả các khả năng của tích
xi a, với i ∈ 1, ϕ(n). Bởi vì a nguyên tố cùng nhau với n và xi nguyên
tố cùng nhau với n, nên tích xi a cũng nguyên tố cùng nhau với n, do
đó có xi a ≡ xj mod (n), chú ý rằng các phần dư của phép chia xi a cho
n là khác nhau. Nếu điều này không đúng, có nghĩa là tồn tại i1 = i2 ,
sao cho: xi1 a ≡ xi2 a mod (n), cho nên (xi1 − xi2 )a ≡ 0 mod n. Bởi vì
a nguyên tố cùng nhau với n, nên biểu thức cuối cùng tương đương với:
xi1 − xi2 ≡ 0 mod (n)
Điều này là mâu thuẫn, bởi các số x1 , ..., xϕ(n) là các cặp khác nhau theo
modulo n. Khi đó nhân tất cả đẳng thức xi a ≡ xj mod n thì thu được:
x1 ... xϕ(n) aϕ(n) ≡ x1 ... xϕ(n) mod n, hay x1 ...xϕ(n) (aϕ(n) − 1) ≡ 0 mod n
Bởi vì số x1 ... xϕ(n) mod n nguyên tố cùng nhau với n nên đẳng thức cuối
cùng tương đương với aϕ(n) − 1 ≡ 0 mod n hay aϕ(n) ≡ 1 mod n
Hệ quả 1.1. Cho n > 1, gcd(a, n) = 1, và ϕ(n) là hàm Euler. Khi đó ta
9


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

có: aϕ(n)+1 ≡ a mod n
Định lý 1.2. (Định lý Fermat)
Cho p là số nguyên tố, a là số nguyên dương không chia hết cho p. Khi đó
ta có: ap−1 ≡ 1 mod p
Chứng minh: Ta có ϕ(p) = p − 1, áp dụng định lý Euler ta có điều phải

chứng minh.
Hệ quả 1.2. Cho a ∈ Z p là số nguyên tố, thì ta có: ap ≡ a mod p
1.1.6

Thuật toán Euclide mở rộng

Định nghĩa 1.3. (phần tử nghịch đảo)
Cho a ∈ Zn , phần tử nghịch đảo của a là phần tử b ∈ Zn sao cho a × b ≡
b × a ≡ 1 mod n. Kí hiệu phần tử nghịch đảo của a là a−1 mod n
Định lý 1.3. Cho số nguyên a > 0 nguyên tố cùng nhau với n, thì luôn
tồn tại phần tử nghịch đảo của a theo modulo n.
Chứng minh: Xét tập hợp S = {1, 2, ..., n − 1}

(n ≥ 2). Nhân từng

phần tử của tập hợp S với a theo modulo n, nhận được tập hợp:
S = {a mod n, 2a mod n, ..., (n − 1)a mod n)}
Nhận thấy tập S bao gồm các số 1, 2, 3, , (n − 1) (vì khi chia cho n thì
số dư trong phép chia nhỏ hơn n), khi đó sẽ tồn tại một số b ∈ S sao cho
(b × a) mod n = 1.
Ta đi chứng minh b là duy nhất. Thật vậy: Giả sử tìm được hai số b; b ∈ S,
sao cho (b × a) mod n = 1 và (b × a) mod n = 1. Mặt khác do a là nguyên
tố cùng nhau với n (giả thiết) nên tồn tại số nguyên x và y sao cho:
a × x + n × y = 1. Nhân cả hai vế a × x + n × y = 1 với b rồi lấy modulo
10


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt


n ta được: (b × a × x) mod n + (b × n × y) mod n = b mod n. Suy ra
x = b mod (n). Nhân cả hai vế a × x + n × y = 1 với b rồi lấy modulo
n ta được: (b × a × x) mod n + (b × n × y) mod n = b mod n. Suy ra
x = b mod n
Từ đó suy ra: b mod n = b mod n, mặt khác b; b ∈ S nên suy ra b = b
Hệ quả 1.3. Nếu như p là số nguyên tố, thì bất kỳ số a, 0 < a < p, luôn
tồn tại phần tử nghịch đảo theo modulo p.
Thuật toán Euclide mở rộng (tìm phần tử nghịch đảo)
Ta chia a cho b theo thuật toán Euclide như sau:
a = bq1 + r1
(0 < r1 < b)
.......
rk−2 = rk−1 qk + rk
(0 < rk < rk−1 )
Khi đó rk = rk−2 − rk−1 qk , mà rk−1 = rk−3 − rk−2 qk−1 nên
rk = rk−2 − rk−1 qk = rk−2 − (rk−3 − rk−2 qk−1 )qk = rk−2 (1 + qk−1 qk ) − rk−3 qk
tương tự như thế đến cuối cùng chúng ta có được biểu thức dạng sau:
rk = a × x + b × y. Nếu như gcd(a, b) = 1, tức là a × x + b × y = 1, theo
định lý trên thì khi đó y là phần tử nghịch đảo của b theo modulo a hay
y = b−1 mod a.
Ví dụ 1.1. Tính 23−1 mod 262
Ta thực hiện phép chia 262 cho 23 ta được:
262 = 23.11 + 9; 23 = 9 . 2 + 5; 9 = 5 . 1 + 4; 5 = 4 . 1 + 1
Suy ra 1 = 5 – 4 . 1 = 5 – (9 – 5 . 1) . 1 = 5 – 9 + 5 = 5 . 2 – 9 = (23
– 9 . 2) . 2 – 9 = 23 . 2 – 9 . 5 = 23 . 2 – (262 – 23 . 11) . 5 = 23 . 2 262 . 5 + 23 . 55 = 23 . 57 – 262 . 5
Nên phần tử nghịch đảo của 23 modulo 262 là 57, hay 23−1 mod 262 = 57
11



Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

Chú ý: Có thể tìm phần tử nghịch đảo được trình bày dưới bảng sau:
1

0

262 0

1

23

11

0

1

23

1

-11

9

2


1

-11

9

-2

23

5

1

-2

23

5

3

-34

4

1

3


-34

4

-5 57

1

Nên phần tử nghịch đảo của 23 modulo 262 là 57, hay 23−1 mod 262 = 57
1.1.7

Định lý phần dư Trung Hoa

Định lý 1.4. Giả sử cho các số n1 , n2 , ..., nk là các số nguyên dương nguyên
tố cùng nhau từng đôi một và c1 , c2 , ..., ck là các số nguyên khi đó hệ phương
trình đồng dư:



x ≡ c1 mod n1




 x ≡ c mod n
2
2



........




 x ≡ c mod n
k
k
Có nghiệm duy nhất theo modulo n và nghiệm đó là:
k

x=(
i=1

ci Ni (Ni−1 mod ni ) ) mod (n), trong đó n = n1 n2 ...nk và Ni =

n
ni

Chứng minh:
Nếu ta chứng minh hệ trên tương đương với một phương trình sau: x ≡
k

x0 mod n ở đây x0 =
i=1

ci Ni (Ni−1 mod ni ) thì coi như chúng ta đã

chứng minh được định lý trên.
Ta có Ni chia hết cho ns , khi s = i. Điều này dẫn đến x0 ≡ Ni (Ni−1 mod

ni )ci (modni ), từ đó x0 ≡ ci (modni ). Điều này có nghĩa hệ trên tương
12


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

đương với hệ sau:



x ≡ x0 mod n1




 x ≡ x mod n
0
2


........




 x ≡ x mod n
0
k

Điều này tương đương với một phương trình sau: x ≡ x0 mod n. Mà ta
đã biết phương trình này có nghiệm duy nhất là: x ≡ x0 mod n
Ví dụ 1.2. Giải hệ phương trình đồng dư sau:



x ≡ 6 mod 7


x ≡ 8 mod 13



 x ≡ 9 mod 17

Lời giải:
Ta có n = 7×13×17 = 1547; N1 =

n
7

= 221; N2 =

n
13

= 119; N3 =

n
17


= 91 .

Ta đi tính phần tử nghịch đảo của Ni theo modulo ni
221−1 mod 7 = 2; 119−1 mod 13 = 7; 91−1 mod 17 = 3
Khi đó ta có được nghiệm của hệ phương trình là:
x = (6 × 221 × 2 + 8 × 119 × 7 + 9 × 91 × 3) mod 1547 = 944
Ngoài ra để tính toán nhanh modulo khi sử dụng định lý phần dư Trung
Hoa, người ta dùng thuật toán "bình phương và nhân". Nội dung của thuật
toán như sau: Để tính z = xb mod n, ta coi rằng số mũ b được biểu thị
ở dạng nhị phân như sau:
l

b i 2i

b=
i=0

13


Luận văn Thạc sĩ toán học



Vũ Mạnh Đạt

bi = 0

; 0≤i≤l−1

bi = 1
Thuật toán tính: z = xb mod n gồm các bước như sau:
Trong đó 

Bước 1: Giá trị ban đầu z = 1
Bước 2: Với i = k, k − 1, k − 2, ..., 1, 0
Bước 3: z = z 2 mod n
Bước 4: Nếu bi = 1 thì z = z ∗ x mod n
Ví dụ 1.3. Tính 97263533 mod 11413
Ta phân tích 3533 = 211 + 210 + 28 + 27 + 26 + 23 + 22 + 1 = 1101110011012
Giá trị ban đầu z = 1
i

b(i)

z mod 11413

11

1

1*1*9726 = 9726

10

1

9726*9726*9726 = 2659

9


0

2659*2659 = 5634

8

1

5634*5634*9726 = 9167

7

1

9167*9167*9726 = 4958

6

1

4958*4958*9726 = 7783

5

0

7783*7783 = 6298

4


0

6298*6298 = 4629

3

1

4629*4629*9726 = 10185

2

1

10185*10185*9726 = 105

1

0

105*105 = 11025

0

1

11025*11025*9726 = 5761

Vậy 97263533 mod 11413 = 5761

14


Luận văn Thạc sĩ toán học

1.1.8

Vũ Mạnh Đạt

Căn nguyên thuỷ và logarit rời rạc

Định nghĩa 1.4. (Căn nguyên thuỷ)
s được gọi là căn nguyên thuỷ của n, nếu s nguyên tố cùng nhau với n và
nhóm cyclic sinh bởi s trong modulo n trùng với tập số nguyên dương nhỏ
hơn n: s mod n, s2 mod n, ..., sϕ(n) mod n = {1, 2, ..., (n − 1)}
Nói cách khác, một căn nguyên thủy s modulo n là một số nguyên a mà
mọi số nguyên không có ước chung với n ngoài các lũy thừa của s (modulo
n)
Ví dụ 1.4. Cho n = 10, khi đó nhóm với phép nhân modulo n gồm các số
nguyên mà nguyên tố cùng nhau với n là: (Z10 )∗ = {m ∈ Z ∗ |gcd (m, 10) = 1}.
Nhóm Z10 là nhóm cyclic vì 10 = 2 × 51
Suy ra các phần tử của Z10 là các lớp đồng dư của 1, 3, 7, 9, trong đó
s = 3 và s = 7 là các căn nguyên thủy modulo 10 vì:
32 mod 10 = 9 ;

72 mod 10 = 9

33 mod 10 = 7 ;

73 mod 10 = 3


34 mod 10 = 1

; 74 mod 10 = 1

35 mod 10 = 3

; 75 mod 10 = 7

36 mod 10 = 9 ; 76 mod 10 = 9
(khi tăng chỉ số mũ của 3k mod 10 và 7k mod 10 thì ta được kết quả
thuộc tất cả các lớp đồng dư của 1, 3, 7, 9)
9 không phải là căn nguyên thủy modulo 10 vì:
92 mod 10 = 1; 93 mod 10 = 9; 94 mod 10 = 1; 95 mod 10 = 9
(khi tăng chỉ số mũ của 9k mod 10 thì ta được kết quả là các phần tử chỉ
15


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

thuộc các lớp đồng dư của 1 và 9, không phải là phần tử của lớp đồng dư
3 và 7)
Bảng dưới đây chỉ ra các căn nguyên thủy nhỏ nhất của một số giá trị
modulo n:
N

2 3 4 5 6 7 8 9 10 11 12 13 14


Căn nguyên thủy nhỏ nhất 1 2 3 2 5 3 x 2

3

2

x

2

3

Logarit rời rạc
Bài toán logarit trên trường số thực
Cho hai số dương x, y và cơ số a > 0; a = 1 thỏa mãn đẳng thức y = ax
thì x được gọi là logarit cơ số a của y. Kí hiệu x = loga y.
Một số tính chất của logarit:
Tính chất 1. loga 1 = 0; loga a = 1
Tính chất 2. logaβ bα =

α
β

× log a b

(0 < a = 1)
(a, b > 0, a = 1, β = 0)

Tính chất 3. loga (b.c) = loga |b| + loga |c| và loga ( cb ) = loga |b| − loga |c|
Tính chất 4. loga b =


1
logb a

Bài toán logarit trên trường hữu hạn
Cho p là một số nguyên tố và s là một căn nguyên thủy trên trường Fp∗ x
là phần tử của Fp∗ . Bài toán logarit rời rạc theo mod p là bài toán tìm, với
x là phần tử của Fp∗ , một số y (1 ≤ y ≤ p − 1) sao cho x = sy mod p, tức
là y = logs x mod p
Nhận xét:
(1) Logarit rời rạc là sự tiếp nối của phép tính logarit trên trường số thực
vào các nhóm hữu hạn.
(2) Logarit rời rạc là phép tính ngược lại, xét bài toán thuận: 75 = 16807 ≡
16


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt

11 mod 13, khi đó bài toán logarit rời rạc là bài toán nghịch, tức là tìm x
sao cho thỏa mãn: 7x ≡ 11 mod 13
(3) Logarit rời rạc có ứng dụng trong hệ mã hóa ElGamal.
Cách tính logarit rời rạc
Bài toán đặt ra: Cho p là số nguyên tố, s là phần tử nguyên thủy theo mod
p, với x là phần tử của Fp∗ . Tính y = logs x mod p
* Thuật toán “Duyệt toàn bộ”
Ta đi duyệt các số y từ 1 đến (p − 1), cho đến khi tìm được y thỏa mãn
y = logs x(modp). Tất nhiên thuật toán này không hiệu quả khi p là số
nguyên tố rất lớn.

Ví dụ 1.5. Chọn p = 11, dễ thấy s = 2 là một căn nguyên thủy theo
modulo 11
Xét bài toán thuận sau: Cho s = 2, p = 11. Tính x = 2y mod 11
Ta xét bảng sau:
y

1 2 3 4

5

6 7 8 9 10

x = 2y mod 11 2 4 8 5 10 9 7 3 6

1

Từ kết quả bảng trên ta có nhận xét sau:
i) Vì s=2 là căn nguyên thủy nên kết quả của x = 2y mod 11 đi qua hết
các phần tử của lớp đồng dư Z11 .
ii) Từ kết quả của x ta nhận thấy: 2 × 6 = 12 ≡ 1 mod 11; 4 × 3 = 12 ≡
1 mod 11; 8 × 7 = 56 ≡ 1 mod 11; 5 × 9 = 45 ≡ 1 mod 11; suy ra các phần
tử nguyên thủy của modulo 11 là: {s} = {2; 3; 4; 5; 6; 7; 8; 9}, tương ứng có
4 cặp nghịch đảo.
Xét bài toán nghịch sau: Cho s=2, p=11. Tính y = log2 8(mod11).
17


Luận văn Thạc sĩ toán học

Vũ Mạnh Đạt


Từ bảng tính ở trên, ta có các giá trị ngược sau:
y

1

2 3 4

x = 2y mod 11

2

4 8 5 10 9 7 3 6

y = log2 x(mod11) 10 1 8 2

5

4

6 7 8 9 10

9 7 3 6

1
5

Kết luận: Vậy y = log2 8(mod11) = 3
* Thuật toán “Shanks” [1, tr.52]


Đặt m =
p − 1 . Ta tìm y có dạng y = mj + i

(0 ≤ i, j ≤ m − 1).

Khi đó: y = logs x mod p ⇔ x ≡ sy mod p ⇔ x ≡ smj+i mod p ⇔ x.s−i ≡
smj mod p
Ta lập hai danh sách gồm các cặp (i, x.s−i ) và (j, smj ) với 0 ≤ i, j ≤ m − 1.
Nếu kết quả trong hai danh sách có hai phần tử bằng nhau thì ta được kết
quả y = mj + i, hay chính là giá trị y = logs x mod p cần tìm.
Nhận xét: Thuật toán “Shanks” sẽ hiệu quả khi p là số nguyên tố nhỏ, còn
đối với p là số nguyên tố lớn thì việc lập hai danh sách sẽ gặp khó khăn vì
có nhiều trường hợp của i và j. Cho nên bài toán logarit rời rạc là một bài
toán khó.
Ví dụ 1.6. Cho s=2, p=11. Tính y = log2 8(mod11)
Lời giải:
Ta có m =



p−1 =



11 − 1 = 3. Tìm y có dạng y = 3j + i (0 ≤

i, j ≤ 2). Ta lập hai danh sách gồm các cặp (i, 8 × 2−i ) và (j, 23j ) với

18



×