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

Luận văn một số giao thức chứng minh không tiết lộ thông tin và ứng dụng xác thực tài khoản trực tuyến

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 (2.28 MB, 65 trang )

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

LẠI THỊ THÚY

MỘT SỐ GIAO THỨC CHỨNG MINH
KHÔNG TIẾT L ộ THÔNG TIN VÀ ỨNG DỤNG
XÁC THựC TÀI KHOẢN TRựC TUYẾN

LUẬN VĂN THẠC s ĩ TOÁN HỌC

HÀ NỘI, 2016


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

LẠI THỊ THÚY

MỘT SỐ GIAO THỨC CHỨNG MINH
KHÔNG TIẾT L ộ THÔNG TIN VÀ ỨNG DỤNG
XÁC THựC TÀI KHOẢN TRựC TUYÉN
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, 2016


LỜI CAM ĐOAN

Tôi xin cam đoan:
Những 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,
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.
Trong quá trình làm luận văn tôi có tham khảo các tài liệu có liên quan và đã ghi rõ
nguồn tài liệu tham khảo đó. 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.

TÁC GIẢ LUẬN VĂN


LỜI CẢM ƠN
Đầu tiên, tôi xin gửi lời cảm ơn chân thành sâu sắc đến các thầy cô giáo trong
trường Đại học Sư Phạm Hà Nội 2 nói chung và các thầy cô trong khoa Toán
nói riêng đã tận tình dạy bảo, truyền đạt lại những kiến thức và kinh nghiệm quý
báu trong suốt thời gian qua.
Tôi xin trân trọng gửi lời cảm ơn tới thầy giáo TS Trần Văn Dũng, ngườ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. Trong quá trình làm việc với thầy, tôi đã tiếp thu thêm được
nhiều kiến thức bổ ích, những kinh nghiệm trong việc bảo mật dữ liệu, kinh nghiệm
trong việc thực hiện luận văn cùng thái độ làm việc nghiêm túc, hiệu quả. Đây là
những kinh nghiệm cần thiết, quý báu giúp tôi áp dụng vào thực tiễn sau này khi
làm việc.

Sau cùng, cho phép tôi cảm ơn các bạn bè, gia đình đã giúp đỡ, ủng hộ tôi rất
nhiều trong toàn bộ quá trình học tập cũng như nghiên cứu hoàn thành luận văn này.

Hà Nội, ngày

tháng

năm 2016

Học viên thực hiện

Lại Thị Thúy


MUC
• LUC

MỞ Đ Ầ U ..................................................................................................................... 1
CHƯƠNG 1: CÁC KHÁI NIỆM VÀ KIẾN THỨC c ơ SỞ ..................................... 3
1.1. Số học modulo................................................................................................ 3
1.1.1. Khái niệm .................................................................................................. 3
1.1.2. Các phép toán trên modulo........................................................................4
1.1.3. Logarit rời rạc ............................................................................................9
1.2. Hệ mã khóa công kha i................................................................................. 12
1.2.1. Mã khóa công khai R SA .......................................................................... 12
1.2.2. Mã Elgamal............................................................................................. 14
1.2.3. Trao đổi khóa Diffie - Hellman............................................................. 16
1.2.4. Chữ ký điện tử DSA................................................................................. 16
CHƯƠNG 2: CÁC GIAO THỨC CHÚNG MINH KHÔNG TIẾT LỘ THÔNG TIN
................................................................................................................................... 19

2.1. Cam kết....................................................................................................... 19
2.2. Khái niệm chứng minh không tiết lộ thông tin........................................... 25
2.3. Giao thức Sigma............................................................................................ 29
2.3.1. Giao thức định danh Schorr....................................................................... 30
2.3.2. Giao thức Chaum - Pederson.................................................................... 33
2.3.3. Giao thức “hoặc” ........................................................................................ 36
2.3.4. Giao thức kết hợp....................................................................................... 39
CHƯƠNG III: XÁC THựC TÀI KHOẢN TRựC TUYẾN D ựA TRÊN CHÚNG
MINH KHÔNG TIẾT LỘ THÔNG T IN .................................................................. 43
3.1. Vấn đề an ninh của xác thực tài khoản trực tuyến...................................... 43
3.2. Lược đồ hệ thống xác thực tài khoản trực tuyến......................................... 44
3.3. Đặc tả các thành phần của hệ thống............................................................. 47
3.4. Minh họa các bước triển khai........................................................................50
3.5. Đánh giá......................................................................................................... 53
KẾT LUẬN, KIẾN NGHỊ VÀ HẠN CHẾ HIỆN TẠI........................................... 54
TÀI LIỆU THAM KHẢO..........................................................................................56


1
M Ở ĐÀU
1. Lý do chọn đề tài
Ngày nay Internet đã trở thành một phần không thể thiếu trong mỗi người dân
Việt Nam nói riêng cũng như mỗi người dân trên thế giới nói chung. Thông tin
không ngừng ữao đổi, mua bán ưên mạng Internet, do đó việc bảo mật, đảm bảo an
toàn thông tin đang là nhu cầu cấp thiết. Trước các yêu cầu cần thiết đó, lý thuyết
mật mã thông tin ra đời nhằm đảm bảo tính an toàn dữ liệu tại noi lưu trữ cũng như
khi dữ liệu được truyền trên mạng.
Luận văn này tập trung vào nghiên cứu các khái niệm cơ bản, cơ sở lý thuyết
toán học modulo sử dụng trong bảo mật thông tin, các phương pháp “chứng minh
không tiết lộ thông tin” là một trong các giao thức an ninh nâng cao mà ở đó các

bên tham gia giao thức không tin cậy lẫn nhau và đặc biệt là ứng dụng của “chứng
minh không tiết lộ thông tin” ừong xác thực đăng nhập người dùng trên internet.
Chứng minh không tiết lộ thông tin đã được nghiên cứu từ những năm
80, là phương pháp chứng minh không có nghĩa là “không để lộ thông tin” mà “để
lộ thông tin ở mức ít nhất” về sự vật, sự việc cần chứng minh. Với việc “không để
lộ” người xác minh sẽ không có nhiều hiểu biết về sự vật sự việc, họ chỉ thu được
chút ít thông tin (coi như là không) về đặc điểm tính chất của nó.
Ngành mật mã học luôn phát triển không ngừng, trong phạm vi khóa luận này,
tôi chỉ trình bày một vấn đề nhỏ về phương pháp “chứng minh không tiết lộ thông
tin” đồng thời tìm hiểu một số ứng dụng thực tế của cơ sở lý thuyết này.
2. Mục đích nghiên cứu
- Nghiên cứu các lý thuyết cơ bản làm nền tảng cho xây dựng hệ thống chứng
minh không tiết lộ thông tin.
- Nghiên cứu một số giao thức chứng minh không tiết lộ thông tin, với các yêu
cầu và kỹ thuật khác nhau.
- ứng dụng vào bài toán xác thực trực tuyến, mà không cần truyền mật khẩu trên
môi trường mạng không tin cậy.


2
3. Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: lý thuyết toán học về hệ mã khoá công khai, số học
modulo, logarit rời rạc, giao thức an ninh nâng cao và ứng dụng.
- Phạm vi nghiên cứu: cơ sở toán học của chứng minh không tiết lộ thông tin
và đưa ra lược đồ xác thực trực tuyến an toàn.
4. Phương pháp nghiên cứu
- Nghiên cứu lý thuyết
- Trình bày qua các ví dụ
- Thực nghiệm qua bài toán thực tế
5. Dự kiến đóng góp mới

- Trình bày cơ sở lý thuyết rõ ràng, có ví dụ minh hoạ và lược đồ xác
thực trực tuyến chi tiết.


3
CHƯƠNG I: CÁC KHẮT NIỆM VÀ KIÉN THỨC c ơ SỞ
Nội dung chương này bao gồm: lý thuyết về modulo, Định lý Fecma, Định lý Euler,
Định lỷ phần dư Trung hoa, logarithm rời rạc, mã công khai RSA và chữ ký điện tử
DSA.
1.1.

Số học modulo

1.1.1. Khái niệm
1.1.1.1. Modulo sổ học
Cho n là số nguyên dương. Giả sử a, b là các số nguyên: ta ký hiệu a = b(mod n),
khi và chỉ khi b = a + kn ữong đó k là số nguyên. Khi đó ta nói a và b đồng dư với
nhau theo modulo n. Nếu trong đó a là số nguyên dương nhỏ hơn n, thì a được gọi
là phần dư của b khi chia cho n, đôi khi a được gọi là thặng dư của b theo modulo n.
Tập họp các số nguyên từ 0 đến n - 1 được gọi là tập họp thặng dư hoàn toàn
modulo n. Điều này có nghĩa là, với mỗi số nguyên a, thặng dư modulo n là một số
từ 0 đến n - 1 .
Modulo số học cũng như số học bình thường, bao gồm các phép cộng và nhân
giao hoán với các tính chất 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 n = ((a mod n) + (b mod n)) mod n
(a - b) mod n = ((a mod n) - (b mod n)) mod n
(a X b) mod n = ((a mod n) X (b mod n)) mod n
(a X (b +c)) mod n = ((a X b) + (a X c)) mod n


Ví dụ 1.1: (1+ 6) mod 5 = ((1 mod 5) + (6 mod 5)) mod 5
(8x 14) mod 6 = ((8 mod 6) X (14 mod 6)) mod 6
1.1.1.2. Số nguyên tố
Số nguyên tố là một số nguyên dương lớn hơn 1, nhưng chỉ chia hết cho 1 và
chính nó, ngoài ra không còn số nào có thể chia hết nữa. số 2 là một số nguyên tố.
Do vậy 7, 17, 53, 73, 2365247734339 cũng là một số nguyên tố. số các số nguyên


4
tố vô tận. Hệ mật mã thường dùng số nguyên tố cỡ 512 bits và thậm chí lớn hơn
vậy.
1.1.1.3. ước số chung lớn nhất
Hai số được gọi là cặp số nguyên tố cùng nhau khi mà chúng không có thừa số
chung nào khác 1, hay nói một cách khác, nếu ước số chung lớn nhất của a và n
bằng 1, chúng ta có thể viết như sau:
Gcd(a,n) = 1
Một cách dễ nhất để tính toán ra ước số chung lớn nhất của hai số là nhò vào thuật
toán Euclid Knuth.
Thuật toán:
int UCLN(int a,int b)
{
return (b=0)?a:UCLN(b, a%b);
}
int ucln3(int a,int b,int c)
{
return UCLN(UCLN(a,b),c)
}
Ví dụ 1.2: G cd(3,5)=l
1.1.2. Các phép toán trên modulo
1.1.2.1. Số nghịch đảo Modulo

Số nghịch đảo của 10 là 1/10, bởi vì 10x1/10 = 1. Trong số học modulo thì
vấn đề nghịch đảo phức tạp hơn:
4

X JC =

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 x) mod n
Có thể viết lại như sau:


5
a'1 = X (mod n)
Sự ứiu nhỏ vấn đề modulo là rất khó giải quyết. Đôi khi nó là một vấn đề, nhung
đôi khi lại không phải vậy.
Trong trường họp chung ã 1 = 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ố nguyên tố
cùng nhau, thì a 1 = X (mod n) không có lời giải nào. Thuật toán Euclid có thể 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.
static void update (int *un, int *vn, int q)
{
int tn;
tn=*un —vn*q;
*un = *vn;
*vn —tn;

}
int extended euclidianậnt u, int V, int ul out, ỉnt
u2_out)
{
int ul —1;
int u3 —u;
int v l = 0; int v3 = v;
int q;
while (v3>0)
{
q = u3/v3;
Update(&ul, &vl, q);
Update(&u3, &v, q);
}


6
*ul_out —ul;
*u2_out — (u3 - u l *u)/v;
return u3
}
Ví dụ 1.3: Nghịch đảo của 5 modulo 14 là 3 bởi:
5 X 3 = 15 = 1 (mod 14)
Định lý Fermat
Neu m là số nguyên tố, và a không phải là bội số của m thì định lý Fermat phát biểu
như sau:
aml = l(mod m)
Ví dụ 1.4: 27'1mod 7 =1 (= 26 mod 7 = 64 mod 7 = 1 )
35'1 mod 5 = 1 (= 34mod 5 = 81 mod 5 = 1)
1.1.2.2. Định lý Euler

Hàm Euler. Cho n là một số nguyên dương. Khi thực hiện phép 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.5: V ớ in= 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 0(n). Như vậy,
0(10) = 4.
Muốn tính 0(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 ữê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ì 0(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:


7
- ®(p.q) = ( p - l ) . ( q - l )
Neu P là số nguyên tố, thì ®(pn) = pn - pn_1

-

- Nếu s và t là hai số nguyên tố cùng nhau, thì ®(s.t) = ®(s).®(t)
Ví dụ 1.6:
0(37) = 3 7 - 1 =36
0(21) = (3 -l)x (7 -l) = 2x6 = 12
0(72) = 0(8.9) = 0(8). 0(9) = ®(23). ®(32)
= (23- 22).(32- 3 ') = 4.6 = 24
Định lý Euler là tổng quát hoá của Định lý Ferma, khẳng định như sau:

a®(n) mo(j n = I
với mọi cặp số nguyên dương nguyên tố cùng nhau a và n: gcd(a,n) =1.
Ví dụ 1.7:

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

Vì vậy 34 = 81 = 1 mod 10
a = 2; n =11; ®(11)=10;
Do đó 210= 1024= 1 mod 11
a =4; n=15; 0(15)=8;
Do đó 48 mod 15 = 1,
Ta có thể tính trực tiếp 48 mod 15 = (42)4mod 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 phép nhân
modulo và Đinh lý Euler ta luôn có:
ammod n = (a mod n)(nmod° (n)) mod n
Chẳng hạn: 4518 mod 20 = (45 mod 20)18modíD(20) mod 20 = 52 mod 20 = 1.
1.1.2.3. Đị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,
đ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.
Giả sử, sự phân tích thừa số của n =

Pi X

p2 X

...X

pt thì hệ phương trình:


(x mod P i) = ai, với i= l,2 ....t


duy nhất một nghiệm với X nhỏ hơn n.


8
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 pxq thì:
x=a (mod p) và x=b(mod q)
Đe tìm ra X đầu tiên cần sử dụng thuật toán Euclid để tìm u, ví dụ:
uxq = 1 (mod p)
Khi đó cần tính toán:
x=(((a - b)

X

u) mod p).q + b

Dưới đây là đoạn mã định lý phần dư trung hoa trong ngôn ngữ C:
int chineseRemainderfsize t r, int *m, int *u)
{
size t i;
int modulus;
int n;

modulus = 1;
for(i=0; imodulus *=m[i];
n =0

for(i=0; i
Ví dụ 1.8: Cho s={pi,.. .,pr} là tập r số nguyên tố phân biệt,và p là đa thức hệ số
nguyên sao cho với mọi n đều tồn tại Pi trong s sao cho Pi\P(n). Chứng minh rằng
tồn tại i sao cho pi\P(n),Vn£N.
Chứng minh’.
Ta phản chứng điều ngược lại, tức là với mỗi P i trong s tồn tại ai sao cho p P(ai),
khi

đó

bằng

phép

xét

X

thỏa

Theo định lí Trung Hoa luôn tồn tại

X

mãn

hệ

đồng




x=ai(mod

P i).

thỏa mãn bài toán, ta suy ra P(x) không có

ước nguyên tố trong s và từ đó ta có sự vô lí nghĩa là phải tồn tại P i thỏa mãn bài
toán, đó là điều cần chứng minh.


9
1.1.3.

Logarit ròi rạc

1.3.1.

Bài toán ỉogarit trên trường sẳ thực R

Định nghĩa logarit: Cho hai số dương a, b với a 5* 1. s ố

X

thỏa mãn đẳng thức

b = ax được gọi là logarit cơ số a của b và được kí hiệu là X = logab. Như vậy ta có:
- Bài toán thuận: b = ax (a,x e R)

- Bài toán ngược:

= logab (a,b > 0, a * 1)

X

Một số tính chất của hàm logarit: Với a, b, c, d > 0, a * l,a e R , ta có:
y=logal = 0
y=logaa= 1
y=loga(aa) = a
y = alữ**b=b
y=loga(c.d)= loga|c|+ loga|d|
y = ^ẽa^=ỈOga \c\-ỈOga \d\
đ
1.1.3.2. Bài toán logarit trên trường hữu hạn
Xét 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^o
của trường tạo thành nhóm nhân: z* = {a 11< a < »-1}.
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.
Xét bài toán thuận: Cho y = ax
Ví dụ 1.9: Cho p =19, a= 2. Ta tính y=ax mod 19 với x e Zp= GF(p), dễ dàng
thấy 2 là căn nguyên thủy và các gỉá trị được cho bởi bảng sau:
Tính y = 2Xmodl9, các cặp nghịch đảo Zi9
X

1

2* 3

2


3

4

4

8

16

f

Các cặp nghịch đảo

5

6

7

7

9

9

8

9


10

9

18

17

n

12

11

13

9

1

___ __

14

15

IẺ

6


12

5

17

yr
___

18
1


10
Nhận xét:
- Do a là phần tử nguyên thủy nên ax 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 phần
tử nguyên thủy khác theo công thức b = a* mod n với (i, các phần tử nguyên thủy của z19là: {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:
2=10■' (do 2.10 modl9=l),

13 = 3 ' (do 3.13modl9=l),
14 = 15'1(do 14.15modl9 =1)
Xét bài toán ngược: jpTogaX veri a, X G Z*.
Dựa trên tính chất các hàm logarỉt ta có:
• y = logabc = (logab+ logaC) mod p-1
• y = logab/c = (logab- logac) mod p-1
• y = \oga_1x = -ìo g ax = p - ì - ì o g itx


• y = logal = p - 1= 0
Ví dụ 1.10: Cho p = 19, a =2. Ta tính y = logaX mod 19 với x e Zp= GF(p). Từ
bảng đã tính ở trên ta có các giá trị ngược:
X

1

2

3

4

5

6

7

8

9

10

11

12

13


14

15

16

17

18

2*

2

4

8

16

13

7

14

9

18


17

15

11

3

6

12

5

10

1

1

13

2

16

14

6


3

8

17

12

15

5

7

II

4

10

9

lO f a X

IS

Do 218=1 vậy nên ta có log2l = 18; 21= 2 vậy nên ta có log22 =1, tương tự ta tính
được các phần tử y = log2x khác.
1.1.3.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 CX€ Z*. Hãy tìm:
y = lo g a X

với a , xe Z*


11
Nhận xét: Với Va, x e Z* thi bài toán: y = logaX 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.11: 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).
Áp dụng:
y = lo g a_, X = - l o g a X = p - 1 - l o g a X

lo g a_, x + \ o g a x = p - 1

Xét cặp nguyên thủy (2,10):
Ta có: logiox = p - 1 - log2x với p=19 ta lập được bảng:
Bảng 2.3. Tinh các logitrit rỏi rạc y = lo g 2x m o d 19 vả y =

m o d l9 .

X

1

2


3

4

5

6

7

8

9

10

11

12

13

14

15 16

17

18


2*

2

4

8

16

13

7

14

9

18

17

15

11

3

6


12

5

10

1

iog2x 18

1

13

2

16

14

6

3

8

17

12


15

5

7

II

4

10

9

ỉogỈOx 18

17

5

16

2

4

12

15


10

1

6

3

13

11

7

14

8

9

1.1.3.4. Bản chất của bài toán logarỉt rời rạc
Từ những ví dụ trên ta rút ra được những kết luận sau:
Logarỉt rời rạc là sự tiếp nổi của phép tính logarỉt 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 * l, nếu ax, thì X
được gọi là logarỉt cơ số a của y, kí hiệu là:

X

= logay. 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.
Logarỉt 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ế. Xét nhóm nhân các sổ nguyên modulo p:
Z* ={1,2,3,..., p - l}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 rạc modulo p.
Chẳng hạn P=17, lấya=3, k=4, tacó:
34= 81 = 13 (modi 7)
Logarit rời rạc là phép tính ngược lại: biết 3k - 13 (mod 17), 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


12
32 mod 17 = 9, 33 mod 17 = 10, 34 mod 17 = 13 và tìm được k = 4. Như vậy bài toán
logarit rời rạc là bài toán khó.
1.2. Hệ 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
phép 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.
Người ta chứng minh được rằng, phép lũy thừa cần 0((log n)3) 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ỡ 10350.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 0(elognloglogn)

phép 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.1.L 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 - l)(q -1)
Chọn ngẫu nhiên khóa mã e làm khỏa công khai, sao cho lgcd(e,0(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ừ phương trình
(e.d) mod ®(N) = 1, với 0< d < ®(N) hay d = e'1 mod ®(N)


13
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.1.2. SửdụngRSA
Để 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 = cdmod 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.

Ví dụ 1.12: 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 —l).(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
Giá trị cần tìm là d = 23, vì 23.7 = 161 = 10.160 + 1
6. In khóa công khai của người sử dụng A: KU={7, 187}
7. Giữ khỏa riêng bí mật riêng của A: KR={23, 17, 11}
B sử dụng khóa công khai của A để mã hóa mã thông điệp gửi cho A:
Cho mẩu tin M = 88 (thỏa mã điều kiện 88 < 187)
Mã c = 887 mod 187 = 11


14
Người sử dụng A dùng khóa riêng của mình để giải mã như sau:
M = 1123 mod 187 = 88
Có thể dùng đinh lý phần dư Trung Hoa để giải mã cho nhanh như sau:
Tính l l 23 mod 11 = 0
Tính 1123 mod 17 = (-6)23mod 17 = (-6)lố(-6)4 (-6)2 (-6) mod 17 = 3
Vì (-6)2 mod 17 = 2, nên (-6)4 mod 17 = 4, (-6)8 mod 17 = -1;
(-6)16 mod 17 =1
ì r 1mod 17 = (-ó^m od 17 = 14 nên c2 = l ự l l ' 1 mod 17) = 11.(14 mod 17) = 154
Vậy M = (3.154) mod 187 = 462 mod 187 = 88.
Giải mã hiệu quả:
Như chúng ta thấy qua ví dụ trên, nếu biết N = p.q, thì ta có thể giải mã nhanh
bằng cách sử dụng định lý phần dư Trung Hoa tính toán theo các modulo p và q.

Sau đó kết họp lại để tìm ra bản rõ. Vì ở đây người sử dụng sở hữu khóa riêng, nên
biết được p và q, do đó có thể sử dụng kỹ thuật này. Nếu sử dụng định lý phần dư
Trung Hoa để giải mã thì hiệu quả là nhanh gấp bốn lần so với giải mã tính trực
tiếp.
Sinh khóa RSA
Người sử dụng RSA cần phải xác định ngẫu nhiên hai số nguyên tố rất lớn,
thông thường khoảng 512 bit. Do đó việc sinh ra ngẫu nhiên p, q và kiểm tra xác
suất tính nguyên tố của chúng có nhiều giải pháp khác nhau với độ tin cậy cao. Sau
khi chọn được một khóa e hoặc d nguyên tố cùng nhau với 0(N), dễ dàng tính được
khóa kia chính là số nghịch đảo của nó qua thuật toán Euclide mở rộng.
1.2.2. MãElgamal
I.2.2.I. Hệ mã hóa Elgamal
Chọn số nguyên tố p sao cho bài toán logarit rời rạc ừong 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, b G Zp }. Chọn

khỏa bí mật là a G Zp*, khóa công khai là:

h = ga. Để mã hóa m, ta chọn số ngẫu nhiên bí mật k, bản mã là:
(x,y) = Ek (m) = (gk, hk m). Tài liệu được giải mã là m= y / xa.


15
1.2.2.2. Khái niệm mã 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 (© ,
thỏa mãn công thức đồng cấu: Ekl (nix)


)- đồng cấu, nếu với tham số k=k! +k2,
Ek2(m2) = Ek (mt © m2), trong đó ml5 m2

là 2 bản rõ, kl, k2 là 2 tham số ngẫu nhiên bí mật.
Ví dụ 1.13:
Cho p=2579, a=2, a=765. Khi đó:
ß=2765 mod 2579= 949
Bây giờ ta giả sử Alice muốn gửi thông báo x=1299 tới Bob. Giả sử số ngẫu nhiên k
mà cô chọn là k=853. Sau đó cô ta tính:
yi=2853mod 2579 =435
y2= 1299x949853 mod 2579= 2396
Khi đó Bob thu được bản mã y =(435, 2396), anh ta tính
X

= 2396

X

(435765)'1mod 2579 = 1299

Đó chính là bản rõ mà Alice đã mã hóa.
1.2.2.3. Hệ mã hóa Elgamal có tính chất đồng cẩu
Hệ mã hóa Elgamal có tính chất đồng cấu vì, với k=kx+k2, ta có:
E .J n u M g M ^ m O
E k2 (m2)= (g k2, hk2m2)
Thỏa mãn công thức đồng cấu:
E ki (nil)* E k2 (m2) = (g kl gk2 ,h kl h k2mj m2)
= (gkl+k2,h kl+k2 m im2)
= (gk, hk m l m2)
= Ek (mi m2).

Phép toán © ,

ở đây chính là tổng và tích của các tham số.

- Trường họp chọn thông tin m=gv, trong đó v=0 hoặc v=l. Bởi vì:


16
E l l (g v') = (xi,y1) = ( g \ h V ) , i = l , 2.
Do đó:
(xb yi)* (x2, y2) = (xi x2, yi y2) = (g kl+kz ,h kl+kzgVl+V2).
1.2.3. Trao đỗi khoá Diffie - Hellman
Mọi người dùng thỏa thuận dùng tham số chung: Lấy số nguyên tố rất lớn q;
Chọn a là căn nguyên tố của q.
Mỗi người dùng (A chẳng hạn) tạo khoá của mình:
Chọn một khoá mật (số) XA < q;
Tính khoá công khai yA= a XAmod q
Mỗi người dùng thông báo công khai khóa của mình yA.
Khóa bộ phận dùng chung cho hai người sử dụng A, B là Kàb
Kab = (xXa'Xbmod q
= yXBmod q (mà B có thể tính)
= yXAmod q (mà A có thể tính)
Ví dụ 1.14. Hai người dùng A và B muốn trao đổi khoá phiên: Đồng ý chọn số
nguyên tố q = 11 và a = 2;
A chọn khoả riêng XA = 9; Tính các khoá công khai:
yA= a XAmod q = 29 mod 1 1 = 6
B chọn khỏa riêng XB = 3; Tính các khoá công khai:
yB= a XBmod q = 23 mod 11=8
A tính khoá phiên chung:


= y XAmod q = 89 mod 11 = 7

B tính khoá phiên chung: Kàb = y XBmod q = 63 mod 1 1 = 7 (B)
1.2.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):
Số nguyên tố lớn p = 2L, ở đó 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-1;


17
Chọn g = h(p-l)/q, ở đó h < p-1, h(p-l)/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
Tính khóa công khai: y = gx (mod p)
1.2.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ý: r = (gk(mod p)) (mod q)
s = (k_1(SHA(M)+ x.r) (mod q)
Gửi cặp chữ ký (r, s) cùng với bản tin M.
1.2.4.2. Kiểm chứng chữkýDSA
Nhận được bản tin M cùng với chữ ký (r, s)
Đe kiểm chứng chữ ký người nhận cần tính:
w = s_1(mod q)
Ui = (SHA(M).w) (mod q)
u2= (r.w) (mod q)
v = ỊgUl.y“2(m odp) )(m odq)
Neu V = r thì chữ ký đã được kiểm chứng

Ví dụ 1.15. Tạo chữ kỷ điện tử:
Chọn p = 23, q = 11, h = 7
g = h2 mod 23 = 3
Chọn X = 5, y = 35 mod 23 = 13
k = 6, H(M) = 9
r = (gk (mod p))(mod q)
r = (36 mod 23) mod 11 = (42) mod 11 = 5
s = (k 1 (H(M)+ x.r))(mod q)
s = (6'\(9 + 5.5))mod 1 1 = 2
Chữ ký điện tử (5,2)


18
Kiểm ưa chữ ký điện tử
w = 2 - 1 mod 1 1 = 6
Ux = (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 vẹn, 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ưorng 1, luận văn đã giới thiệu được các lý thuyết đại số căn bản được
dùng để bổ ượ và xây dựng nên khung cơ sở lý luận cho các bài toán chứng minh
không tiết lộ thông tin như lý thuyết về toán học modulo và mô hình bài toán

Logarith rời rạc, các loại mã hóa, cũng như các định lý Fermat, Euler..v.v. Tiếp đó,
luận văn cũng đã mô tả và đi sâu vào các khái niệm về chữ ký điện tử và một số các
chuẩn chữ ký điện tử được dùng ưong việc xây dựng và áp dụng chứng minh không
tiết lộ thông tin vào thực tế. Ngoài ra, luận vãn cũng đã đi sâu phân tích từng kĩ
thuật trong các loại mô hình chữ ký điện tử đã nêu. Trong chương tiếp theo, luận
văn sẽ tiếp tục phân tích và đánh giá cụ thể hơn về khái niệm chính của chứng minh
không tiết lộ thông tin.


19
CHƯƠNG II: CÁC GIAO THỨC CHỨNG MINH KHÔNG TIÉT LỘ
THÔNG TIN
Nội dung chương này bao gồm: khái niệm cam kết, trình bày các giao thức mã hóa
dự liệu trong chứng minh không tiết lộ thông tin: giao thức định danh Schnorr, giao
thức Chaum-Pederson và các giao thức nâng cao khác
2.1. Cam kết
Giả sử Alice muốn chơi 'giấy-kéo-đá' qua điện thoại với Bob. Ý tưởng của trò
chơi này là Alice và Bob cả hai lựa chọn đồng thời là một ương những tập {giấy,
kéo, đá}. Sau đó, kết quả ưò chơi được quyết định bởi các quy tắc:


Giấy bọc đá. Do đó nếu Alice chọn giấy và Bob chọn đá khi đó Alice
thắng.



Đá làm cùn kéo. Do đó nếu Alice chọn đá và Bob chọn kéo khi đó Alice
thắng.




Kéo cắt giấy. Do đó nếu Alice chọn kéo và Bob chọn giấy khi đó Alice
thắng.

Nếu cả Alice và Bob chọn mục giống nhau khi đó trò chơi được công bố là một
trận hòa. Khi tiến hành qua điện thoại, chúng tôi có bài toán mà bất cứ ai đi đầu tiên
sẽ thua các ữò chơi.
Một giải pháp cho vấn đề này là dành cho bên những người đi đầu tiên “cam
kết” cho lựa chọn của họ, theo cách mà các bên khác không thể xác định những gì
đã cam kết. Sau đó, hai bên có thể tiết lộ sự lựa chọn của họ, với ý tưởng rằng bên
kia sau đó có thể xác minh rằng các bên tiết lộ đã không thay đổi sự lựa chọn của
mình giữa lúc cam kết và giai đoạn tiết lộ. Một hệ thống như vậy được gọi là một
lược đồ cam kết. Một cách dễ dàng để làm điều này là sử dụng một hàm băm mật
mã như sau:
A —►B; hA= H(Ra | giấy),
B—►A; kéo,
A—►B; Ra, giấy.
Yào cuối của giao thức Bob cần phải xác minh rằng hAgửi bởi Alice bằng


20
H(Ra || giấy). Neu các giá trị đồng nhất, anh ấy biết rằng Alice đã không lừa dối.
Kết quả của giao thức này là Alice thua ữò choi, vì kéo cắt giấy.
Chúng ta hãy nhìn vào lập luận ữên từ quan điểm của Alice. Cô lần đầu tiên
cam kết giá trị giấy bằng cách gửi Bob giá trị băm hA. Điều này có nghĩa rằng Bob
sẽ không thể để xác định rằng Alice đã cam kết với giá trị là giấy, vì Bob không biết
giá trị ngẫu nhiên của RA sử dụng và Bob là không thể đảo ngược các hàm băm.
Thực tế là Bob không thể xác định những giá trị đã được cam kết, đó được gọi là
che giấu, hoặc tính chất che giấu của một lược đồ cam kết.
Ngay sau khi Bob gửi giá trị kéo cho Alice, cô ấy biết cô đã bị thua nhưng không

thể ăn gian, khi đó để lừa gạt cô ấy sẽ cần phải đưa ra một giá trị khác nhau của RA,
tuyên bố R’A, thỏa mãn
H(Ra | giấy) = H(R’a đá).
Nhưng điều này có nghĩa rằng Alice có thể tìm thấy các xung đột ừong hàm băm,
mà đối với một hàm băm chọn thích họp được cho là không thể. Trên thực tế chúng
ta có yêu cầu hàm băm là bền vững trong trường họp này. Tính chất này của lược
đồ cam kết, mà Alice không thể thay đổi suy nghĩ của mình sau quy trình cam kết,
được gọi là hói buộc.
Bây giờ chúng ta nghiên cứu các đặc tính che giấu và ràng buộc một cách chi
tiết hơn. Nhớ lại rằng một hàm mã hóa có thông tin bảo mật về mặt lý thuyết, nếu
một kẻ thù có sức mạnh tính toán vô hạn không thể phá vỡ lược đồ này, trong khi
một hàm mã hóa được gọi là an toàn tính toán, nếu nó chỉ được bảo đảm khi phải
đối mặt với một kẻ thù có sức mạnh tính toán đa thức bị chặn. Sự phân chia tương
tự có thể được thực hiện với lược đồ cam kết, nhưng bây giờ chứng ta có hai tính
chất an ninh là che giấu và ràng buộc. Một công cụ bảo vệ quyền lợi của người gửi,
và một công cụ bảo vệ quyền lợi của người nhận. Đe đơn giản hóa trình bày của
chứng tôi, chúng tôi sẽ biểu thị chương trinh cam kết trừu tượng của chúng tôi bằng
một thuật toán, c =

c ( x , r) trong đó có một giá trị X cần cam kết và một số ngẫu

nhiên r và tạo ra một cam kết c. Đe xác nhận một cam kết người cam kết chỉ đơn


×