Tải bản đầy đủ (.doc) (54 trang)

Một số giao thức chuyển giao không lộ thông tin và ứng dụng (LVThS k20)

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 (537.88 KB, 54 trang )

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

===

PHAN VĂN ĐƯƠNG

MỘT SỐ GIAO THỨC CHUYỂN GIAO
KHÔNG LỘ THÔNG TIN VÀ ỨNG
DỤNG

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

HÀ NỘI - 2018


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

===

PHAN VĂN ĐƯƠNG

MỘT SỐ GIAO THỨC CHUYỂN GIAO
KHÔNG LỘ THÔNG TIN VÀ ỨNG
DỤNG
Chuyên ngành: Toán ứng dụng
Mã số: 8 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 - 2018


LỜI CẢM ƠN

Luận văn này được thực hiện tại Trường Đại học Sư phạm Hà Nội 2. Để
hoàn thành được luận văn này tôi đã nhận được rất nhiều sự động viên, giúp
đỡ của nhiều cá nhân và tập thể.
Trước hết, tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy giáo TS. Trần
Văn Dũng – Giảng viên trường ĐHGTVT Hà Nội đã nhiệt tình giúp đỡ, trực
tiếp chỉ bảo, hướng dẫn tôi trong suốt quá trình thực hiện luận văn cao học.
Xin cùng bày tỏ lòng biết ơn chân thành tới các thầy cô giáo trong trường
Đại học Sư phạm Hà Nội 2, người đã đem lại cho tôi những kiến thức bổ trợ,
vô cùng có ích trong những năm học vừa qua.
Cũng xin gửi lời cám ơn chân thành tới Ban Giám hiệu, Phòng Đào tạo
sau đại học, Khoa Toán trường Đại học Sư phạm Hà Nội 2 đã tạo điều kiện
cho tôi trong quá trình học tập.
Cuối cùng tôi xin gửi lời cám ơn đến gia đình, bạn bè, những người đã
luôn bên tôi, động viên và khuyến khích tôi trong quá trình thực hiện đề tài
nghiên cứu của mình.
Hà Nội, ngày 06 tháng 11 năm 2018
Học viên thực hiện

Phan Văn Đương



LỜI CAM ĐOAN
Tôi xin cam đoan:
Những số liệu và kết quả nghiên cứu trình bày trong luận văn này là
hoàn toàn trung thực, của tôi không vi phạm bất cứ điều gì trong luật sở hữu
trí tuệ và pháp luật Việt Nam. 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 đều được ghi rõ
nguồn gốc. Những kiến thức tôi trình bày trong luận văn này chưa được trình
bày hoàn chỉnh trong bất cứ tài liệu nào.
Hà Nội, ngày 6 tháng 11 năm 2018
Học viên thực hiện

Phan Văn Đương


MỤC LỤC
MỞ ĐẦU........................................................................................................... 1
1. Lý do chọn đề tài ....................................................................................... 1
2. Mục đích nghiên cứu ................................................................................. 2
3. Nhiệm vụ nghiên cứu................................................................................. 2
4. Đối tượng nghiên cứu: ............................................................................... 2
5. Phương pháp nghiên cứu ........................................................................... 3
6. Dự kiến nội dung. ...................................................................................... 3
CHƯƠNG I KIẾN THỨC CƠ SỞ.................................................................... 4
1.1. Số học modulo ........................................................................................ 4
1.1.1. Các phép toán trên modulo .............................................................. 4
1.1.2. Logarit rời rạc................................................................................... 9
1.2. Hệ mật mã khóa công khai ................................................................... 13
1.2.1. Mã khoá công khai RSA ................................................................ 13
1.2.2. Khởi tạo khóa RSA ........................................................................ 13

1.2.3. Sử dụng RSA.................................................................................. 14
1.2.4. Cơ sở của RSA ............................................................................... 14
1.3. Mã Elgamal........................................................................................... 15
1.3.1. Hệ mã hóa Elgamal ........................................................................ 15
1.3.2. Khái niệm mã hóa đồng cấu........................................................... 16
1.4. Chữ ký điện tử DSA ............................................................................. 16
1.4.1. Tạo chữ ký DSA............................................................................. 17
1.4.2. Kiểm chứng chữ ký DSA ............................................................... 17
Tóm tắt chương I ......................................................................................... 18
CHƯƠNG

II MỘT SỐ GIAO THỨC CHUYỂN GIAO KHÔNG LỘ

THÔNG TIN ...................................................................................................
19


2.1. Giao thức chuyển giao không lộ thông tin ........................................... 19
2.2. Giao thức chuyển giao không lộ thông tin 1 từ 2 ................................. 21
2.3. Giao thức chuyển giao không lộ thông tin 1 từ n ................................. 24
2.4. Giao thức chuyển giao không lộ thông tin k từ n ................................. 27
Tóm tắt chương II ........................................................................................ 31
CHƯƠNG III MỘT SỐ ỨNG DỤNG CỦA GIAO THỨC CHUYỂN GIAO
KHÔNG LỘ THÔNG TIN .............................................................................
32
3.1. Lược đồ chia sẻ thông tin mật Shamir.................................................. 32
3.1.1. Phân phối mảnh cho các thành viên.............................................. 33
3.1.2. Khôi phục khoá K từ t thành viên. ................................................. 35
3.2. Giao thức ngưỡng chuyển giao không lộ thông tin 1 từ n.................... 36
1


3.3. Ví dụ Giao thức ngưỡng chuyển giao không lộ thông tin (3, 4)-OT2 .39
3.4. Ứng dụng trong lược đồ truy vấn dữ liệu riêng tư ............................... 43
3.5. Ứng dụng với truy vấn thích nghi......................................................... 44
Tóm tắt chương III....................................................................................... 46
KẾT LUẬN ..................................................................................................... 47
TÀI LIỆU THAM KHẢO............................................................................. 48


1

MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay máy tính ngày càng thể hiện rõ vai trò thiết yếu trong mọi
lĩnh vực của xã hội. Nó đã trở thành phương tiện điều hành các hệ thống giúp
cho mọi công việc rút ngắn khoảng cách về không gian và thời gian. Chữ ký
số ra đời giúp cho doanh nghiệp tiết kiệm rất nhiều thời gian, công sức trong
một số công việc giao dịch với ngân hàng, cơ quan hành chính. Hoạt động
giao dịch điện tử cũng được đẩy mạnh.
Với mạng máy tính ngày càng phổ biến trên toàn cầu người ta đã dùng
mạng Internet một cách thông dụng. Nhiều dịch vụ điện tử như: thư điện tử,
chuyển tiền, thương mại điện tử, chính phủ điện tử… đã được áp dụng rộng
rãi. Do đó yêu cầu về an toàn mạng và an ninh dữ liệu càng trở lên cấp bách
và cần thiết. Đặc biệt trên thực tế cần thực hiện các giao thức truyền dữ liệu
giữa các bên không tin cậy lẫn nhau, như chia sẻ thông tin mật giữa một số
thành viên (chìa khóa mở tài khoản), cam kết biết một thông tin mật nào đó,
chứng minh không tiết lộ thông tin (xác thực danh tính), bầu cử điện tử (lá
phiếu và kết quả bầu cử hợp lệ) hay tính toán đa bên an toàn khi các bên che
giấu thông tin đầu vào của mình (đấu thầu hợp đồng). Đó là các hướng nghiên
cứu của các giao thức an ninh nâng cao, khi các bên tham gia không tin cậy

lẫn nhau. Cần tạo ra các sơ đồ, môi trường và kỹ thuật trao đổi để các bên
phối hợp thực hiện nhiệm vụ chung, nhưng đảm bảo yêu cầu an ninh cho các
bên.
Được sự gợi ý của giáo viên hướng dẫn và nhận thấy tính thiết thực của
vấn đề em đã chọn đề tài “Một số giao thức chuyển giao không lộ thông
tin và ứng dụng” để làm nội dung cho luận văn. Bài toán có nội dung đại
thể như sau: hai người cần trao đổi thông tin, trong đó một người cung cấp một
số


2

dữ liệu khác nhau và một người được quyền lựa chọn và chỉ xem được một
hoặc một số trong số các dữ liệu đó và người cung cấp cũng không được biết
là người nhận chọn các dữ liệu nào. Cần phải thiết lập giao thức tức là các qui
tắc và các bước thực hiện để giải bài toán đó.
2. Mục đích nghiên cứu
- Nghiên cứu cách thức tạo ra một số Giao thức chuyển giao không lộ thông
tin.
- Ứng dụng vào bài toán thực tế như: truy xuất dữ liệu đảm bảo tính riêng tư,
tính toán đa bên an toàn.
3. Nhiệm vụ nghiên cứu
- Đọc hiểu tài liệu, trình bày lại một số giao thức chuyển giao không lộ thông
tin hiện đại, hiệu quả, chứng minh một số tính chất an ninh của chúng.
- Ứng dụng Giao thức chuyển giao không lộ thông tin kết hợp với một số giao
thức nâng cao khác như chia sẻ thông tin mật, cam kết và chứng minh không
tiết lộ thông tin thông qua một số ví dụ tự giải theo các bước của giao thức.
- Đối tượng và phạm vi nghiên cứu: trình bày các giao thức không lộ thông tin
1 từ 2, 1 từ n, k từ n và giao thức chuyển giao không lộ thông tin khắc phục
lỗi (t, p), ở đó hai bên chuyển giao thông qua p máy chủ, nhưng chỉ cần t máy

hoạt động.
4. Đối tượng nghiên cứu:
Nhiều khi trong quá trình trao đổi thông tin giữa hai bên không tin cậy, cần
sử dụng một giao thức với hộp đen trung gian giữa hai bên A và B như sau:
bên A gửi vào hộp đen trung gian hai thông điệp M 0 và M1, bên B lựa chọn
bit c = 0 hoặc c = 1 rồi gửi đến hộp đen trung gian, tùy thuộc vào lựa chọn c,
bên B sẽ nhận được thông điệp Mc từ hộp đen. Giao thức đảm bảo bên B chỉ
nhận được thông điệp Mc mà không được nhận thông điệp còn lại, bên A
không biết bên B nhận được thông điệp nào. Giao thức đó được gọi là giao


3

thức chuyển giao không lộ thông tin 1 từ 2. Sau này các nhà khoa học đưa ra
các định nghĩa khác nhau của giao thức chuyển giao không lộ thông tin như
Giao thức chuyển giao không lộ thông 1 từ n, k từ n, mà ở bên A gửi n thông
điệp và B nhận được 1 hoặc k thông điệp. Ngoài ra giao thức chuyển giao
không lộ thông tin (t, p) kết hợp với giao thức chia sẻ thông tin mật để khắc
phục lỗi xảy ra trên môi trường mạng. Cụ thể bên A gửi các mảnh thông điệp
cho p máy chủ, B sẽ trao đổi với ít nhất t máy chủ để nhận được thông điệp
lựa chọn của mình.
5. Phương pháp nghiên cứu
Đọc hiểu, trình bày lại một số giao thức chuyển giao không lộ thông tin
hiệu quả và đưa ra một số ví dụ của mình minh họa cho các giao thức đó,
đồng thời cũng sử dụng các giao thức chuyển giao không lộ thông tin
trong các giao thức an ninh nâng cao khác như: chia sẻ thông tin mật, chứng
minh không tiết lộ thông tin, tính toán đa bên an toàn và truy suất dữ liệu cá
nhân riêng tư.
6. Dự kiến nội dung.
Luận văn được chia làm 3 chương cộng với phần mở đầu, kết luận và tài

liệu tham khảo. Nội dung trong các dự kiến được phân bổ như sau:


4

CHƯƠNG I
KIẾN THỨC CƠ SỞ
Chương này sẽ trình bày về các lý thuyết toán học để bổ trợ và xây
dựng phương pháp bầu cử điện tử dừa trên mã đồng cấu như lý thuyết về toán
học modulo, các bài toán Logarit rời rạc, hệ mã hóa công khai, mã Elgamal
cũng như các định lý Fermat, Euler..v.v. Tiếp đó, luận văn mô tả các khái
niệm về chữ ký điện tử DSA cách tạo và cách kiểm chứng chữ ký DSA được
dùng trong việc xây dựng một số giao thức an ninh nâng cao [1, 2, 3].
1.1. Số học modulo
1.1.1. Các phép toán trên modulo
a. Định nghĩa 1.1
Cho m là số nguyên dương. Giả sử a, b là các số nguyên: Ta ký hiệu
a º b (mod m), khi và chỉ khi b = a + km trong đó k là số nguyên. Khi đó ta
nói a và b đồng dư với nhau theo modulo m. Nếu trong đó a là số nguyên
dương nhỏ hơn m, thì a được gọi là phần dư của b khi chia cho m, đôi khi a
được gọi là thặng dư của b theo modulo m.
Tập hợp các sô nguyên từ 0 đến m − 1 được gọi là tập hợp thặng dư
hoàn toàn modulo m. Điều này có nghĩa là, với mỗi số nguyên a, thặng dư
modulo m là một số từ 0 đến m − 1.
Modulo số học cũng như số học bình thường, bao gồm các phép giao
hoán, kết hợp và phân phối. Mặt khác, giảm mỗi giá trị trung gian trong suốt
quá trình tính toán.
(a + b) mod m = ((a mod m) + (b mod m)) mod m
(a - b) mod m = ((a mod m) − (b mod m)) mod m
(a ´ b) mod m = ((a mod m) ´ (b mod m)) mod m

(a ´ (b +c)) mod m = ((a ´ b) + (a ´ c)) mod m
Ví dụ 1.1:

10 º 7 (mod 3) vì 10 = 3.3 + 1 và 7 = 2.3 + 1


5

b. Quan hệ đồng dư
Quan hệ đồng dư theo modulo m trên Z là một quan hệ tương đương có
nghĩa là:
i)

a Î Z, a º a (mod m)

ii)

a, b Î Z, a º b (mod m)

b º a (mod m)

iii)

a, b, c Î Z, a º b, b º c

a º c (mod m)

(Tính phản xạ)
(Tính đối xứng)
(Tính bắc


cầu) c. Các phép toán trên modulo:
Nếu ta có: a1 º a2 (mod n)
b1 º b2 (mod n)
Thì ta có:
· (a1 + b1) º (a2 + b 2) (mod n)
· (a1 − b1) º (a2 − b 2) (mod n)
· (a1b1) º (a2b2) (mod n)
·

, với k nguyên dương

1.1.1.1 Số nghịch đảo Modulo
Số nghịch đảo của 10 là 1/10, bởi vì 10 ´ 1/10 = 1. Trong số học
modulo thì vấn đề nghịch đảo phức tạp hơn.
4 ´ x º 1 mod 7
Phương trình trên tương đương với tìm x và k sao cho:
4x = 7k + 1 với điều kiện cả x và k đều là số nguyên.
Vấn đề chung đặt ra tại đây là tìm x sao cho:
1 = (a ´ x) mod n
Có thể viết lại như sau:
-1

a º x (mod n)
Ví dụ 1.1: Nghịch đảo của 5 modulo 14 là 3 bởi:
5 ´ 3 = 15 º 1 (mod 14)


6


-1

Trong trường hợp chung a º x (mod n) chỉ duy nhất một lời giải nếu a
và n là một cặp số nguyên tố cùng nhau. Nếu a và n không phải là một cặp số
-1

nguyên tố cùng nhau, thì a º x (mod n) không có lời giải nào. Thuật toán
Euclid có thể mở rộng tính ra được số nghịch đảo của số modulo n, đôi khi
thuật toán này còn gọi là thuật toán Euclid mở rộng.
Ví dụ 1.2: Tìm nghịch đảo theo Euclide mở rộng.
Tìm số nghịch đảo (nếu có) của 30 theo môđun 101

Bước i m

a

r

q

y0

y1

y

0

101


30

11

3

0

1

-3

1

30

11

8

2

1

-3

7

2


11

8

3

1

-3

7

-10

3

8

3

2

2

7

-10

27


4

3

2

1

1

-10

27

-37

5

2

1

0

.

.

.


.

Kết quả tính toán trong bảng cho ta −37. Lấy số đối của 37 theo
mođun 101 được 64.
-1

Vậy 30 mod 101 = 64.
1.1.1.2. Định lý Fermat
Nếu m là số nguyên tố và a không phải là bội số của m thì định lý Fermat
m–1

phát biểu như sau: a

º 1 (mod m) (xem [1, 2]).

Ví dụ 1.3:
2

7-1

mod 7 = 1 (= 2 mod 7 = 64 mod 7 = 1)

6

3

5-1

mod 5 = 1 (= 3 mod 5 = 81 mod 5 = 1)


4


7

1.1.1.3. Định lí Euler
Định lí 1: Hàm Euler. Cho n là một số nguyên dương. Khi thực hiện
php tính đồng dư n của mọi số nguyên khác ta nhận được tập đầy đủ các
phần dư có thể có là: 0, 1, 2,…, n – 1.
Từ tập trên ta tìm tập rút gọn bao gồm các số nguyên tố cùng nhau với
n và quan tâm đến số lượng các phần tử như vậy đối với số nguyên dương
n cho trước.
Ví dụ 1.4: Với n = 10:
Tập đầy đủ các phần dư là {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Tập rút gọn các phần dư nguyên tố với 10 là {1, 3, 7, 9}
Số các phần tử của tập rút gọn trên là giá trị của hàm Euler Ф(n).
Như vậy, Ф(10) = 4.
Muốn tính Ф(n) việc đếm số các số nguyên tố cùng nhau với n và nhỏ
hơn n được loại bỏ vì đây là bài toán tốn nhiều công sức. Nói chung có thể
tính hàm Euler của một số dựa trên biểu thức phân tích ra thừa số của số đó.
· Dễ dàng thấy, nếu p là số nguyên tố, thì Ф(p) = p − 1
· Nếu p và q là hai số nguyên tố khác nhau, thì có thể chứng minh được
rằng: Ф (p.q) = (p − 1).(q − 1)
n

n

n-1

· Nếu p là số nguyên tố, thì Ф (p ) = p – p


· Nếu s và t là hai số nguyên tố cùng nhau, thì Ф(s.t) = Ф(s).Ф(t).
Ví dụ 1.5:
Ф(37) = 37 – 1 = 36
Ф(21) = (3–1).(7–1) = 2.6 = 12
3

2

Ф(72) = Ф(8.9) = Ф(8). Ф(9) = Ф(2 ). Ф(3 )
3

2

2

1

= (2 – 2 ).(3 – 3 ) = 4.6 = 24
Định lý Euler là tổng quát hoá của Định lý Ferma, khẳng định như sau:
a

F(n)

mod n= 1với mọi cặp số nguyên dương nguyên tố cùng nhau a và n:


8

gcd(a,n) =1.

Ví dụ 1.6:

a = 3; n = 10; Ф(10) = 4;

4

Vì vậy 3 = 81 = 1 mod 10
a = 2; n = 11; Ф(11) = 10;
10

Do đó 2 = 1024 = 1 mod 11
a = 4; n = 15; Ф(15) = 8;
8

Do đó 4 mod 15 = 1,
8

2 4

Ta có thể tính trực tiếp 4 mod 15 = (4 ) mod 15 = 1
Như vậy, cho các số nguyên dương a, n, m bất kỳ, áp dụng tính chất của php
nhân modulo và Định lý Euler ta luôn có:
m

a mod n = (a mod n)

(m modF(n))

18


Chẳng hạn: 45 mod 20 = (45 mod 20)

mod n

18 mod F(20)

2

mod 20 = 5 mod 20 = 1.

1.1.1.4. Định lí phần dư Trung Hoa
Nếu bạn biết cách tìm thừa số nguyên tố của một số n, thì bạn có thể
đã sử dụng, một số điều gọi là phần dư Trung Hoa để giải quyết trong suốt
hê phương trình. Bản dịch cơ bản của định lý này được khám phá bởi toán
học Trung Hoa vào thế k thứ nhất.
Định lí 2: Giả sử, sự phân tích thừa số của n = p1´ p2´ …´ pt thì hệ
phương trình: (x mod p i) = ai, với i = 1,2….t có duy nhất một nghiệm với x
nhỏ hơn n. Bởi vậy, với a, b tùy ý sao cho a < p và b < q (với p, q là số
nguyên tố) thì tồn tại duy nhất a, x khi x nhỏ hơn p ´ q thì: x º a (mod p) và x
º b(mod q). Để tìm ra x, đầu tiên cần sử dụng thuật toán Euclid để tìm u,
u ´ q º 1 (mod p), khi đó cần tính toán:
x = (((a − b)xu) mod p).q + b
Ví dụ 1.7: Cho hai số nguyên dương p, q nguyên tố cùng nhau. Chứng minh
n

rằng tồn tại số nguyên k sao cho (pq−1) .k + 1 là hợp số với mọi số
nguyên dương n.


9


Lời giải:
Xt hệ đồng dư
nên theo định lí phần dư Trung Hoa thì hệ này chắc chắn có nghiệm.
n

Nếu n chẵn, thì (pq−1) .k + 1 ≡ k + 1 ≡ −1 + 1= 0 (mod q),
n

suy ra (pq−1) .k + 1 là hợp số.
n

Nếu n lẻ, thì (pq−1) .k + 1 ≡ −k + 1 ≡ −1 + 1 = 0 (mod p),
n

suy ra (pq −1) .k +1 là hợp số.
n

Vậy luôn tồn tại số k sao cho (pq −1) .k + 1 là hợp số với mọi số
nguyên dương n.
1.1.2. Logarit rời rạc
1.1.2.1. Bài toán logarit trên trường số thực R
Định nghĩa 1.2: Cho hai số dương a, b với a ¹ 1. Số x thỏa mãn đẳng
thức

x

b = a được gọi là logarit cơ số a của b và được ký hiệu là x = logab.

Như vậy ta có:

x

- Bài toán thuận: b = a (a,x Î R)
- Bài toán ngược: x = log ab (a,b > 0, a ¹ 1)
Một số tính chất của hàm logarit: Với a, b, c, d > 0, a ¹ 1, a Î R, ta có:
y = loga1 = 0
y = logaa = 1
a

y = loga(a ) = a

y = loga(c.d) = log a|c| + loga|d|
y = loga(c/d) = loga|c| − loga|d|
1.1.2.2. Bài toán logarit trên trường hữu hạn
Xt vành số Zp, với p là số nguyên tố, vậy ta có Zp= GF(p). Tất cả các
phần tử a ¹ 0 của trường tạo thành nhóm nhân:

.


10

Nếu cấp của a bằng p thì ta nói a là căn nguyên thủy của Zp
Xt bài toán thuận: Cho y = a

x
x

Ví dụ 1.8: Cho p = 19, a = 2. Ta tính y = a mod 19 với x Î Zp= GF(p), dễ
dàng thấy 2 là căn nguyên thủy và các giá trị được cho bởi bảng sau:

x

Tính y = 2 mod 19, các cặp nghịch đảo Z19

x
2

1 2 3 4
x

5

6 7

8 9

10 11 12 13 14 15 16 17 18

2 4 8 16 13 7 14 9 18 17 15 11 3

6

12 5

10 1

Nhận xét:
x

- Do a là phần tử nguyên thủy nên a sẽ đi qua hết các phần tử trong

vành Zp.
- Từ phần tử nguyên thủy a = 2 đã cho ban đầu ta có thể tìm được các
i

phần tử nguyên thủy khác theo công thức b = a mod n với (i,j(n)) = 1. Vậy
tập các phần tử nguyên thủy của Z19 là: {2, 13, 14, 15, 3, 10}.
- Các phần tử nguyên thủy tạo thành các cặp nghịch đảo:
-1

2 = 10 (do2.10 mod19 = 1)
-1

13 = 3 (do 3.13mod19 = 1)
-1

14 = 15 (do14.15mod19 = 1)
Xt bài toán ngược: y = loga x với a, x Î Z * p.
Dựa trên tính chất các hàm logarit ta có:
y = loga bc = (log a b + loga c) mod (p
y = loga b/c = (log a b

log a c) mod (p

1)
1)


11

y = log a 1 = p


1= 0

Ví dụ 1.9: Cho p = 19, a =2. Ta tính y = log ax mod19 với x Î Zp= GF(p). Từ
bảng đã tính ở trên ta có các giá trị ngược:
x
2

x

1

2 3

4

2

4 8

16 13 7

Log2x 18 1 13 2

5

6

7


8 9

10 11 12 13 14 15 16 17 18

14 9 18 17 15 11 3

16 14 6

18

3 8

17 12 15 5

6

12 5

10 1

7

11 4

10 9

1

Do 2 = 1 vậy nên ta có log 2 1 = 18; 2 = 2, vậy nên ta có log 2 2 = 1,
tương tư ta tính được các phần tử y = log2 x khác.

1.1.2.3. Bài toán logarit rời rạc
Cho Zp, với p là số nguyên tố, a là phần tử nguyên thủy a Î Z p* . Hãy
tìm:

Y = logax với a, x Î Z p*

Nhận xét: với

a, x Î Z *p thì bài toán: y = log ax có nghiệm khi a là phần tử

nguyên thủy, bài toán có thể không có nghiệm khi a bất kỳ.
Ví dụ 1.10: Giải bài toán với p = 19, ta có 6 điểm nguyên thủy (3 cặp nghịch
đảo).
Tacó:

Xt cặp nguyên thủy (2, 10):
Ta có: log10 x = p −1 – log2 x với p = 19 ta lập được bảng:


12

Bảng 2.3 Tính các logarit rời rạc y = log 2 x mod 19
và y = log10 x modulo 19
x

2

x

1


2

3

2

4

8

Log 2 1
x

8

Log 1 1

1

0x

7

8

1

1


3
5

4

5

1

1

6

3

2
1
6

6
7

1

1

6

4


2

4

7
1
4

8
9

1

1

1

1

1

1

1

1

1

0


1

2

3

4

5

6

7

8

1

1

1

1

8

7

5


1

3

6

1

1

1

7

2

5

5

7

1

6

3

1


1

3

1

9

6

3

8

1

1

1

2

5

0

1
2
1

1
7

5
4
1
4

1
0
1
0
8

1
9
9

1.1.2.4. Bản chất của bài toán logarit rời rạc
Từ những ví dụ trên ta rút ra được những kết luận sau:
Logarit rời rạc là sư tiếp nối của php tính logarit trên trường số thực
vào các nhóm hữu hạn. Chúng ta đã biết với 2 số thực x, y và cơ số a > 0, a ¹
x

1, nếu a thì x được gọi là logarit cơ sô a của y, ký hiệu là: x = log a y. Tuy
nhiên trong logarit rời rạc, các số a, x, y đều là các phần tử của nhóm hữu hạn.
Logarit rời rạc có ứng dụng trong hê mã khóa công khai hê mật mã
Elgamal.
Cho p là một số nguyên tố. Xt nhóm nhân các số nguyên modulo p:
Z *p = {1,2,3,…,p-1} với phép nhân modulo p.


Nếu ta tính lũy thừa bậc k của một số trong nhóm rồi rút gọn theo
modulo p thì ta được một số trong nhóm đó. Quá trình này gọi là lũy thừa rời
4

rạc modulo p. Chẳng hạn p = 17, lấy a = 3, k = 4, ta có: 3 = 81 º 13(mod17).
k

Logarit rời rạc là php tính ngược lại: biết 3 º 13(mod17), hãy tìm k.
Để giải chúng ta phải thông qua phép thử lần lượt tính lũy thừa rời rạc, chẳng
hạn tính

2

3

4

3 mod 17 = 9, 3 mod 17 = 10, 3 mod 17 = 13 và tìm được k = 4.


13

Như vậy bài toán logarit rời rạc là bài toán khó.
1.2. Hệ mật mã khóa công khai
1.2.1. Mã khoá công khai RSA
RSA là mã công khai được sáng tạo bởi Rivest, Shamir & Adleman ở
MIT (Trường Đại học Công nghệ Massachusetts) vào năm 1977. RSA là mã
công khai được biết đến nhiều nhất và sử dụng rộng rãi nhất hiện nay. Nó
dựa trên các php toán lũy thừa trong trường hữu hạn các số nguyên theo

modulo nguyên tố. Cụ thể, mã hóa hay giải mã là các ph p toán luỹ thừa theo
modulo số rất lớn. Việc thám mã, tức là tìm khóa riêng khi biết khóa công
khai, dựa trên bài toán khó là phân tích một số rất lớn đó ra thừa số nguyên
tố. Nếu không có thông tin gì, thì ta phải lần lượt kiểm tra tính chia hết của số
đó cho tất cả các số nguyên tố nhỏ hơn căn của nó. Đây là việc làm không
khả
thi.
3

Người ta chứng minh được rằng, ph p lũy thừa cần O((log n) ) phép
toán, nên có thể coi lũy thừa là bài toán dễ. Cần chú ý rằng ở đây ta sử dụng
các số rất lớn khoảng 1024 bit, tức là cỡ 10

350

. Tính an toàn dựa vào độ khó

của bài toán phân tích ra thừa số các số lớn. Bài toán phân tích ra thừa số yêu
cầu O(e

logn log logn

) php toán, đây là bài toán khó.

Mã công khai RSA gồm hai giai đoạn: khởi tạo khóa RSA và giai đoạn
mã hóa/giải mã.
1.2.2. Khởi tạo khóa RSA
Mỗi người sử dụng A tạo một cặp khóa công khai – riêng như sau: Chọn
ngẫu nhiên hai số nguyên tố lớn p và q khác nhau.
Tính số N làm modulo của hệ thống: N = p.q. Ta đã biết Ф(N) = (p 1)(q 1).

Chọn ngẫu nhiên khóa mã e làm khóa công khai, sao cho 1 < e < Ф(N) và
gcd (e,Ф(N)) = 1, tức là e và Ф(N) là hai số nguyên tố cùng nhau.
Nghịch đảo của e theo modulo Ф(N) là khóa riêng d, vậy tìm d từ


14

phương trình (e.d) mod Ф(N) = 1, với 0 < d < Ф(N) hay d = e -1mod Ф(N).
Chú ý: Vai trò của e và d c th thay đổi cho nhau, tức là c th lấy e làm
khóa mật, khi đ tính d nghịch đảo của e làm khóa công khai.
Người sử dụng A in khóa mã công khai: KU = {e, N} và thông báo cho
mọi người biết.
Người sử dụng A giữ bí mật khóa riêng: KR = {d, p, q}.
1.2.3. Sử dụng RSA
Để mã hóa mẩu tin M, người gửi B:
Lấy khóa công khai của người nhận A: KU = {e, N}.
Mã hóa thông điệp M bằng khóa công khai của người nhận A:
C = Me mod N, trong đó 0 ≤ M < N.
Để giải mã bản mã, người sử dụng A: Sử dụng khóa riêng KR = {d, p, q}.
Giải mã thông điệp, tính M = Cd mod N.
Lưu ý rằng bản tin M < N, do đó khi cần chia khối bản rõ thành các
khối nhỏ để thỏa mãn tính chất này.
1.2.4. Cơsở của RSA
Ta sẽ chứng minh rằng: Cd mod N = M.
Thật vậy, ta có e và Ф(N) nguyên tố cùng nhau, nên tồn tại số nghịch
đảo d, tức là: (e.d) mod Ф(N) = 1,
Do đó tồn tại số nguyên dương k nào đó, sao cho e.d = 1 + k.Ф(N),
Suy ra Cd = (Me)d = M

1 + k.Ф(N)


1

= M .M k.Ф(N),

Vì dựa theo định lý Euler có thể chứng minh được rằng M
Nên Cd Mod N = M1.M

k.Ф(N)

Ф(N)

mod N = M1 mod N.(M

mod N = 1

Ф(N)

mod N)k

= M.1 mod N = M.
Ví dụ 1.11: Tạo khóa công khai cho người sử dụng A, sau đó người sử dụng B
dùng khóa công khai của A mã hóa thông điệp gửi cho A và cuối cùng A sử


dụng khóa riêng của mình để giải mã thông điệp.
Tạo bộ khóa công khai cho người sử dụng A
1. Chọn các sốnguyên tố: p = 17 và q =11.
2. Tính N = p.q, N = 17.11 = 187.
3. Tính Ф(N) = (p –1).(q – 1) = 16.10 = 160.

4. Chọn e: gcd(e,160) = 1; Lấy e = 7.
5. Xác định d: (e.d) mod 160 = 1 và d <160.
6. Giá trị cần tìm là d = 23, vì 23.7 = 161 = 10.160 + 1.
7. In khóa công khai của người sử dụng A: KU = {7, 187}.
8. Giữ khóa riêng bí mật riêng của A: KR = {23, 17, 11}.
B sử dụng kha cng khai của A để mã ha mã thng điệp gửi cho A:
7

Cho mẩu tin M = 88 (thỏa mã điều kiện 88 < 187). Mã C = 88 mod 187 =
11.
Người sử dụng A dng kha riêng của mnh để giải mã như sau:
23

M = 11 mod 187 = 88. Có thể dùng định lý phần dư Trung Hoa để giải mã
cho nhanh như sau:
23

Tính 11 mod 11 = 0
23

23

16

4

2

Tính 11 mod 17 = (-6) mod 17 = (-6) .(-6) .(-6) .(-6) mod 17 = 3
2


4

8

Vì (-6) mod 17 = 2, nên (-6) mod 17 = 4, (-6) mod 17 = -1;
16

-1

-1

(-6) mod 17 = 1; 11 mod 17 = (-6) mod 17 = 14
-1

2
nên C = 11.(11 mod 17) = 11.(14 mod 17) = 154

Vậy M = (3.154) mod 187 = 462 mod 187 = 88.
1.3. Mã Elgamal
1.3.1. Hệ mã hóa Elgamal
Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là khó giải, g là
phần tử sinh trong Zp*. Chọn tập bản rõ A = Zp, chọn tập bản mã C = {(a, b) /


a

a, b ∈ Zp}. Chọn khóa bí mật là a ∈ Zp*, khóa công khai là h = g . Để mã
k


k

hóa m, ta chọn số ngẫu nhiên bí mật k, bản mã là: (x, y) = Ek (m) = (g , h m).
a

Tài liệu được giải mã là m = y / x .
Ví dụ 1.12: Cho p = 2579, g = 2, a = 765. Khi đó h = 2

765

mod 2579 = 949

Bây giờ ta giả sử Alice muốn gửi thông báo m = 1299 tới Bob.
Giả sử số ngẫu nhiên k mà cô chọn là k = 853. Sau đó cô ta
tính:
x=2

853

mod 2579

= 435
y = 1299 × 949853 mod 2579
= 2396
Bob thu được bản mã Ek(m) = (435, 2396), anh ta tính:
m = 2396×(435

765 -1

) mod 2579


= 1299
Đó chính là bản rõ mà Alice đã mã hóa.
1.3.2. Khái niệmmãhóađồng cấu
Cho tập bản rõ P tạo thành nhóm với phép tính ⊕, tập bản mã C tạo
thành nhóm với phép tính ⊗. Ek(m) là hàm mã hoá bản rõ m theo tham số
ngẫu nhiên bí mật k. Hệ mã hóa E được gọi là có tính chất (⊕, ⊗) - đồng
cấu, nếu với tham số

k = k1 + k2, thỏa mãn công thức đồng cấu: Ek1(m1) ⊗

Ek2(m2) = Ek(m1 ⊕ m2), trong đó m1, m2 là 2 bản rõ, k 1, k2 là 2 tham số ngẫu
nhiên bí mật.
1.4. Chữ ký điện tử DSA
Sinh khóa DSA. Chia sẻ giá trị khóa công khai tổng thể (p, q, g):
L

Số nguyên tố lớn p = 2 , ở đó L = 512 đến 1024 bit và là bội của 64;
Chọn q là số nguyên tố 160 bit và là ước của p
Chọn g = h(p

1;

1)/q, ở đó h < p 1, h(p 1)/q (mod p) > 1;

Người sử dụng A chọn khóa riêng và tính khóa công khai


Chọn khóa riêng: x < q
x


Tính khóa công khai: y = g (mod p)
1.4.1. Tạo chữ ký DSA
Để ký mẩu tin M người gửi trước hết cần: Sinh khóa chữ ký ngẫu nhiên k:
k < p, k phải là số ngẫu nhiên, được xóa sau khi dùng và không bao giờ dùng
lại;
Sau đó tính cặp chữ ký:
k

r = (g (mod p)) (mod q)
-1

s = (k (SHA(M) + x.r) (mod q)
Gửi cặp chữ ký (r, s) cùng với bản tin M.
1.4.2. Kiểm chứng chữ ký DSA
Nhận được bản tin M cùng với chữ ký (r, s). Để kiểm chứng chữ ký người
nhận cần tính:
-1

w = s (mod q)
u1= (SHA(M).w) (mod q)
u2= (r.w) (mod q)
(mod q)
Nếu v = r thì chữ ký đã được kiểm chứng
Ví dụ 1.13: Tạo chữ ký điện tử: Chọn p = 23, q = 11, h = 7
2

g = h mod 23 = 3
Chọn x = 5, y = 35 mod 23 = 13,
k


k = 6, H(M) = 9
6

2

r = (g (mod p)) (mod q) = (3 mod 23) mod 11 = (4 ) mod 11 = 5
-1

-1

s = (k (H(M) + x.r)) (mod q) = (6 .(9 + 5.5)) mod 11 = 2
Vậy chữ ký điện tử là (5, 2)
Kiểm tra chữ ký điện tử
w = 2 1 mod 11 = 6
u1 = (9.6) mod 11 = 10


u2 = (5.6) mod 11 = 8
v = (310.138 mod 23) mod 11
= (43.3.138 mod 23) mod 11
= (16) mod 11 = 5
v = 5 = r, chữ ký đúng.
Như vậy, bản tin nhận được là toàn vn, không bị sửa và thư được gửi bởi
đúng người như đã tuyên bố.
Tóm tắt chương I
Trong chương này tôi đã trình bày một số kiến thức chuẩn bị là số học
modulo và những hệ mã hóa công khai.
- Các phép toán modulo, Số nghịch đảo Modulo, Định lí Fermat, Định
lí Euler, Định lí phần dư Trung hoa, Logarit rời rạc, Bài toán Logarit

rời rạc
- Mã RSA, Mã Elgamal, Chữ ký điện tử DSA


CHƯƠNG II
MỘT SỐ GIAO THỨC CHUYỂN GIAO KHÔNG LỘ THÔNG TIN
Chương I của luận văn đã trình bày về một số kiến thức chuẩn bị như số
học modulo, các hệ mã hóa công khai và chứ ký điện tử DSA. Chương II này
sẽ đi sâu vào một số giao thức chuyển giao không lộ thông tin. Tiếp đó em
trình bày một số lược đồ cam kết, chứng minh không tiết lộ thông tin và giao
thức kết hợp để bổ trợ và xây dựng nên phương pháp chuyển giao không lộ
thông tin ngưỡng ở chương sau.
2.1. Giao thức chuyển giao không lộ thông tin
Chúng ta xt tình huống sau: chúng ta có một máy chủ và một khách hàng
(hoặc người gửi và người nhận), nơi máy chủ có danh sách chuỗi n giá trị:
x 1,..., x n và khách hàng muốn biết x i. Tất nhiên khách hàng có thể chỉ cần
gửi yêu cầu đến máy chủ, nhưng khách hàng không muốn máy chủ biết là anh
ta cần giá trị thứ i đó. Bây giờ, máy chủ có thể chỉ cần gửi các chuỗi n giá trị
đến máy khách nhưng máy chủ không biết máy khách tìm hiểu x j cho j = i và
máy khách không biết các giá trị khác ngoài x i. Vấn đề này, bắt nguồn từ
Rabin, nơi máy chủ sẽ chuyển x i sang máy khách mà không cần biết i bằng
bao nhiêu và máy khách không biết giá trị nào khác ngoài x i, được gọi là
chuyển giao lãng quên hay là chuyển giao không lộ thông tin.
Ứng dụng có thể như sau: Giả sử chúng ta muốn một chương trình chuyển
tiền điện tử. Ý tưởng là Alice sẽ thiết lập một dịch vụ, nơi người dùng như
Bob có thể mua từ chứng từ kỹ thuật số (tiền điện tử) của cô ấy mà họ sau
đó có thể sử dụng để mua những thứ từ các nhà cung cấp. Các nhà cung cấp
sau đó sẽ trình bày các chứng từ này cho Alice để thu tiền. Một giải pháp
ngây thơ sẽ là như sau: Alice sẽ chuẩn bị thông điệp m = tôi sẵn sàng trả 1
và chữ ký σ trên m. Bất cứ khi nào Bob trả cho cô ấy


x Alice sẽ cung cấp


×