1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

65 233 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 65
Dung lượng 2,28 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 t

Trang 1

TRƯỜNG ĐẠI HỌC s ư PHẠM HÀ NỘI 2

Trang 2

TRƯỜNG ĐẠI HỌC s ư PHẠM HÀ NỘI 2

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

Trang 3

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

Trang 4

Đầ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

Trang 5

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 S A 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

Trang 6

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

Trang 7

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

Trang 8

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.

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

Trang 9

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) = 1Mộ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

Phương trình trên tương đương với tìm X và k sao cho:

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:

Trang 10

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)

Trang 11

Ví dụ 1.4: 27' 1 mod 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à:

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:

Trang 12

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ó:

am mod n = (a mod n)(nmod ° (n)) mod n Chẳng hạn: 4518 mod 20 = (45 mod 20)18 modí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 = P i X p2 X X pt thì hệ phương trình:

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

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

Trang 13

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 + bDướ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)

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.

Trang 14

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: X = logab (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 * l,a e R , ta có:

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:

Trang 15

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, <p(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:

2=10■' (do 2.10 m odl9=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

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 , x e Z*

Trang 16

Nhận xét: Với V a, 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 = l o g a_, X = - l o g a X = p - 1 - l o g a X l o 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:

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

Trang 17

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 (elogn log logn) 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 l<e<0(N) và gcd(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)

Trang 18

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 = 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

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

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

Trang 19

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 1 mod 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

Trang 20

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ómvới phép tín h 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=k! +k2,thỏa mãn công thức đồng cấu: Ekl (nix) 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:

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ó:

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ì:

Trang 21

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 XA mod 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

B chọn khỏa riêng XB = 3; Tính các khoá công khai:

yB= a XB mod q = 23 mod 1 1 = 8

A tính khoá phiên chung: = y XA mod q = 89 mod 11 = 7

B tính khoá phiên chung: Kàb = y XB mod 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;

Trang 22

Để 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:

Trang 23

Kiểm ưa chữ ký điện tử

Trang 24

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

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 hA gửi bởi Alice bằng

Trang 25

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

Trang 26

giản cho thấy các giá trị của X và r Người nhận sau đó sẽ kiểm tra rằng hai giá trị

tạo ra cam kết ban đầu

Định nghĩa 2.1 (Trói buộc) Một lược đồ cam kết được cho là trói buộc thông tin

về mặt lý thuyết (cũng như tính toán) nếu không có đối thủ có sức mạnh vô hạn (cũng như bị chặn tính toán) có thể giành chiến thắng trong trò choi sau đây:

• Đối thủ xuất ra một giá trị c, cộng với giá trị X và r mà tạo ra cam kết này.

• Đối thủ sau đó cần phải tạo ra một giá trị X V X và giá trị r ’ mà

C(x,r) = C(x’, r ’)

Định nghĩa 2.2 (Che giấu) Một lược đồ cam kết được cho là che giấu thông tin

về mặt lý thuyết (cũng như tính toán), nếu không đối thủ có sức mạnh vô hạn (cũng như bị chặn tính toán) có thể giành chiến thắng trong trò choi sau đây:

• Đối thủ tạo ra hai thông điệp x0 và Xi chiều dài bằng nhau

• Người thách thức sinh ra r ngẫu nhiên và bit ngẫu nhiên b E {0, 1}.

• Người thách thức tính c = c (xb, r), và truyền c cho đối phưcmg

• Mục tiêu đối thủ là bây giờ đoán bit b

Chú ý, cách định nghĩa che giấu này là hầu như giống hệt cách chúng ta định nghĩa về tính không phân biệt được của mã hoá Một số kết quả hiển nhiên suy ra

từ hai định nghĩa này

B ổ đề 2.1 Không tồn tại lược đồ mà là cả che giấu và ữói buộc thông tin về mặt

lý thuyết

Chứng minh Đe là trói buộc hoàn toàn một lược đồ phải được xác định, vì cần

phải có một ánh xạ một - một giữa không gian của các cam kết và không gian của các giá trị cam kết Nhưng một lược đồ xác định rõ ràng sẽ không đáp ứng được định nghĩa che giấu

B ố đề 2.2 Sử dụng lược đồ cam kết được xác định như:

H(R\\C)với một giá trị ngẫu nhiên R, giá trị cam kết c và một hàm băm mật mã H, là tốt nhất:

• Trói buộc tính toán,

Trang 27

• Che giấu thông tin về mặt lý thuyết

Chứng minh Tất cả các hàm băm mật mã, chứng ta đã gặp chỉ là an toàn tính toán

để chống lại kháng cự tìm thông điệp hoặc khoá băm tưorng ứng với giá trị băm cho trước

Tính chất trói buộc của lược đồ trên chỉ được đảm bảo bởi các kháng cự thứ hai của hàm băm Do đó, tính chất trói buộc là chỉ an toàn tính toán

Tính chất che giấu của lược đồ ữên chỉ được đảm bảo bởi kháng cự đầu của hàm băm Do đó, tính chất che giấu ưông giống như nó chỉ là an toàn tính toán Tuy nhiên, nếu chúng ta giả định rằng giá trị R được chọn từ một tập đủ lớn, sau đó thực

tế là hàm băm có thể có nhiều va chạm như chúng ta thường làm và ữong thực tế chúng ta nhận được một cái gì đó gần với che giấu thông tin về mặt lý thuyết Mặt khác, nếu chúng ta giả định rằng H cho một kết quả ngẫu nhiên, thì lược đồ cam kết

rõ ràng là che giấu thông tin về mặt lý thuyết

Bây giờ chúng ta quay về với ba phương án cam kết thực tế xảy ra trong các giao thức khác nhau Tất cả đều dựa trên một nhóm abel hữu hạn G bậc q nguyên

tố, được sinh ra bởi g Chúng ta hãy để h G (g ), trong đó logarit rời rạc của h trên cơ

sở g là chưa biết đối với bất kì người sử dụng nào trong hệ thống Tính chất này là

khá dễ dàng để đảm bảo, ví dụ cho một lĩnh vực hữu hạn F *, q chia p - 1, chúng ta

tạo ra g như sau (vói một thủ tục tương tự được sử dụng để xác định h):

• Chọn ngẫu nhiên r G z.

• Tính f = H (r) G F* cho một hàm băm mật mã H.

• Đặt g = f (p"1)/q (mod p) Nếu g = 1 sau đó quay trở lại giai đoạn đầu tiên, tạo đầu

ra khác (r, g)

Điều này tạo ra một phần tử ngẫu nhiên của nhóm con của F* bậc q, với tính

chất mà nó được tạo ra kiểm chứng là ngẫu nhiên từ một mồi r cho đầu ra được sử dụng để tạo ra phần tử ngẫu nhiên

Với g, h chúng ta định nghĩa hai lược đồ cam kết, B(x) và Ba(x), cam kết với một

số nguyên X modulo q, và một Ea(x) phải cam kết một số nguyên X modulo p:

Trang 28

B(x) - gx,Ea(x)=(ga, X ■ h a) ,

Ba(x) = hxga,Trong đó a là một số nguyên ngẫu nhiên modulo q Lược đồ được đưa ra bởi Ba(x) được gọi là Lược đồ cam kết Pedersen Giá trị a được gọi là số làm mù, vì nó làm

mù mắt giá trị của cam kết X ngay cả với một kẻ thù có khả năng tính toán vô hạn

Để lộ các cam kết mà người dùng công bố về giá trị X trong lược đồ đầu tiên và các cặp (a, x) trong các lược thứ hai và thứ ba

Bổ đề 2.3 Lược đồ cam kết B(x) là trói buộc thông tin về mặt lý thuyết.

Chứng minh Giả sử Alice đã tạo lập c = B(x) = gx muốn thay đổi suy nghĩ của

mình về phần tử của Z/qZ cô ấy muốn cam kết Tuy nhiên, đối với Alice không có vấn đề về sức mạnh tính toán, về mặt toán học cô ấy đã có chỉ là một phần tử trong Z/qZ, cụ thể là X mà là logarit rời rạc của cam kết c trên cơ s ở g Do đó, lược đồ này rõ ràng là trói buộc thông tin về mặt lý thuyết

Lưu ý lược đồ cam kết Pederson không thoả mãn định nghĩa mạnh của chúng ta

về bảo mật cho tính chất che giấu Nếu không gian của các giá trị mà từ đó X được chọn là lớn, sau đó lược đồ cam kết này có thể thoả mãn một định nghĩa an ninh yếu liên quan đến tính chất như một chiều

Bổ đề 2.4 Các lược đồ cam kết Ea(x) là trói buộc thông tin về mặt lý thuyết và che

giấu về mặt tính toán

Chứng minh Lược đồ này chính xác là mã hóa Elgamal với một khóa công khai h

Lưu ý rằng chúng ta không cần phải biết khóa riêng gắn kết để sử dụng một lược đồ cam kết Thật vậy bất kỳ lược đồ mã hóa khóa công khai về ngữ nghĩa an toàn có thể được sử dụng theo cách này như một lược đồ cam kết

Sự an toàn ngữ nghĩa tiềm ẩn ngụ ý rằng lược đồ cam kết nhận được là che giấu

về mặt tính toán Trong khi thực tế là giải mã là duy nhất, nghĩa là lược đồ cam kết này là trói buộc thông tin về mặt lý thuyết

Trang 29

B ổ đề 2.5 Lược đồ cam kết Ba(x) là trói buộc thông tin về mặt tính toán và che

giấu thông tin về mặt lý thuyết Đó là trói buộc thông tin tính toán có chỉ đúng nếu người cam kết không biết logarit rời rạc của h trên cơ sở g

Chứng minh Bây giờ giả sử Alice, sau khi đã cam kết:

b = Ba(x) hxgamuốn thay đổi suy nghĩ của mình, để cam kết y thay thế Tất cả những gì Alice cần làm là tính toán:

Alice sau đó tính logarit rời rạc a’của f trên cơ sở g Khi Alice bây giờ được hỏi

để lộ sự cam kết của mình, cô đưa kết quả đầu ra (a’, y) thay vì (a, x) Do đó lược

đồ này là hầu như trói buộc tính toán

Chứng ta cũng có thể thấy rằng nếu Alice, sau khi đã cam kết:

b = Ba(x) = hxgamuốn thay đổi suy nghĩ của mình, thì cách duy nhất cô có thể làm điều này là bằng cách tính logarit rời rạc của h trên cơ sở g Đe thấy điều này, giá trị cô thay đổi suy nghĩ của mình, chọn y, thì cô vẫn phải có khả năng cam kết đến Do đó, ta cần phải biết cách chọn b không ngẫu nhiên dưới đây Do đó Alice phải biết X, y, a và b sao cho:

X, có một giá trị của a mà làm cho một cam kết hợp lệ, ngay cả một đối thủ tính toán

vô hạn không thể xác định được thông tin Do đó, lược đồ này là che giấu thông tin

về mặt lý thuyết

Chúng ta kết thúc phần này bằng cách nhận ra rằng hai logarit rời rạc dựa ưên lược đồ cam kết có tính chất đồng cấu:

Trang 30

B (Xl).B (x 2) = g \ g X2 = g Xl+X2 = B ( x j +x2)

Bai ( xt ).Ba2 (*2) = h Xl gai hX2 g“2 = h Xl+X2 gai+a2 = Bai+a2 (x, + x 2)

(Xem tài liệu [6])

2.2 Khái niệm Chứng minh không tiết lộ thông tin

Định nghĩa chứng minh không tiết lộ thông tin (Zero Knowledge Protocol - ZKP)

ZKP là một giao thức mà cho phép một đối tượng chứng minh A có thể thuyết phục một chủ thể B là A biết một thông tin mật mà không cho B biết chính xác là A biết cái gì

Nói một cách đom giản, hệ thống chứng minh không tiết lộ thông tin cho phép một đối tượng thuyết phục một đối tượng khác tin vào một điều gì đó mà không để

lộ thông tin cần phải chứng minh Đối tượng chứng minh (prover) p là môt thưc thể

sẽ xác nhận tính bí mật của thông tin Đối tượng xác minh (verifier) V sẽ xác nhận rằng hành động của p là đúng hay sai

Có 3 bước để xác nhận thông tin giữa p và V, đầu tiên một thông điệp (message) được gửi từ p đến Y được gọi là một nhân chứng hoặc một cam kết (commitment) về việc biết thông tin mật nào đó Thông điệp thứ 2 được V gửi ngược lại một thông điệp cho p gọi là thách đố (challenge), thường là một thông tin ngẫu nhiên mà nếu p cam kết đứng thì p sẽ có trả lời phù họp và sau đó p sẽ gửi thông tin phúc đáp về lại cho V còn gọi là một response

Qua ví dụ trên, chứng ta tạm hiểu “Chứng minh không tiết lộ thông tin” 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 những thông tin để lộ, đối tượng xác minh không có đầy

đủ hiểu biết (zero knowledge) về sự vật, sự việc Họ chỉ có chút thông tin (xem như

là “zero knowledge”) về đặc điểm tính chất của nó

Giao thức z là giao thức “Hỏi - Đáp” 3 bước, để p chứng minh cho V một vấn đề nào đó:

• p gửi cho V một giá trị để chứng tỏ một điều gì đó

• V gửi lại cho p một giá trị ngẫu nhiên như là giá trị dùng để kiểm thử

Trang 31

• p gửi đáp lại V: một giá trị

Kết quả: V thừa nhận hoặc bác bỏ vấn đề p chứng minh

Các thành phần trong Chứng minh không tiết lộ thông tin.

Có 2 thành phần quan trọng trong phép chứng minh này:

• Peggy Power (người chứng minh): Peggy có thông tin muốn chứng minh cho Victor thấy nhưng Peggy không nói thẳng vấn đề cho Victor

• Victor Verifier (người xác minh): Victor sẽ hỏi Peggy một loạt câu hỏi, cố gắng tìm ra được Peggy có thực sự biết được bí mật đó hay không Victor sẽ không thu được gì từ bí mật đó, ngay cả khi anh ta gian lận hay không tuân theo chỉ dẫn của giao thức

• Chứng ta không quan tâm đến những gì xảy ra nếu người xác minh không trung thưẹ, chúng ta tin vào người xác minh (verifier)

dụ trước khi định nghĩa

Hệ thống CMKTLTT hoàn thiện cho tính đẳng cấu của đồ thị:

Đầu vào:

Thông tin công khai: Hai đồ thị Gi và G2, mỗi đồ thị có tập đỉnh {1 n}

Trang 32

Thông tin bí mật của Lan: Phép hoán vị ơ đưa G2 trở thành Gi.

Thực hiện:

Lặp lại các bước sau n lần:

- Lan chọn một phép hoán vị ngẫu nhiên 71 của {l n} cô ta tính H là ảnh của Gi theo 71 và gửi H cho Nam

- Nam chọn một số nguyên ngẫu nhiên i = 1 hoặc 2 và gửi nó cho Lan

- Lan tính một phép hoán vị p đưa H trở thành Gj Lan sẽ gửi p cho Nam (nếu i=l thì Lan sẽ xác định P=7I, nếu i=2 thì Lan sẽ xác định p là Ơ.7Ĩ hợp của ơ và 7ĩ)

- Nam sẽ kiểm tra xem H có phải là ảnh của Gi theo p hay không

Một phép đẳng cấu từ G2 sang Gi là hoán vị ơ = (4, 1, 3, 2)

Bây giờ giả sử ở trong vòng nào đó của giao thức, Lan chọn hoán vị 7Ĩ = (2,4,1,3) Khi đó H có tập cạnh {12, 13, 23, 24}

Nếu yêu cầu của Nam là i=l, thì Lan sẽ cho Nam phép hoán vị 7Ĩ và Nam sẽ kiểm tra xem ảnh của Gi theo 71 có phải là H không

Nếu yêu cầu của Nam là i=2, thì Lan sẽ cho Nam phép hợp

p = 7I.Ơ = (3,2,1,4) và Nam sẽ kiểm tra xem ảnh G2 của p có phải là H không

Ngày đăng: 09/09/2016, 15:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w