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 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO 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 3LỜ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
Trang 4LỜ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
Trang 5MỞ ĐẦ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 khai 12
1.2.1 Mã khóa công khai RSA 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 TIN 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 6MỞ ĐẦ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 trao đổi, mua bán trê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 nơi 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” trong 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 73 Đố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 8CHƯƠNG I: CÁC KHÁI 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 b) mod n = ((a mod n) (b mod n)) mod n (a (b +c)) mod n = ((a b) + (a c)) mod n
Ví dụ 1.1: (1+ 6) mod 5 = ((1 mod 5) + (6 mod 5)) mod 5
(8 14) mod 6 = ((8 mod 6) (14 mod 6)) mod 6
Trang 9tố 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
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:
Trang 10a-1 x (mod n)
Sư ̣ thu nhỏ vấn đề modulo là rất khó giải quyết Đôi khi nó là một vấn đề, nhưng đôi khi lại không phải vậy
Trong trường hợp chung a-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 1135-1 mod 5 = 1 (= 34 mod 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 Ф(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:
Trang 12Ta có thể tính trực tiếp 48 mod 15 = (42)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 phép nhân modulo và Định lý Euler ta luôn có:
am mod n = (a mod n)(n mod (n)) mod n
Chẳng hạn: 4518 mod 20 = (45 mod 20)18 mod (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 = p1 p2 … pt thì hệ phương trình:
(x mod pi) = ai, với i=1,2….t
có duy nhất một nghiệm với x nhỏ hơn n
Trang 13Bở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 pq thì:
xa (mod p) và xb(mod q)
Để tìm ra x đầu tiên cần sử dụng thuật toán Euclid để tìm u, ví dụ:
uq 1 (mod p)
Khi đó cần tính toán:
x=(((a – b) u) mod p).q + b Dưới đây là đoạn mã định lý phần dư trung hoa trong ngôn ngữ C:
Ví dụ 1.8:Cho S={p1,…,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),∀n∈N
Chứng minh:
Ta phản chứng điều ngược lại, tức là với mỗi pi trong S tồn tại ai sao cho p P(ai), khi đó bằng phép xét x thỏa mãn hệ đồng dư xai(mod pi) Theo định lí Trung Hoa luôn tồn tại x 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 pi thỏa mãn bài toán, đó là điều cần chứng minh
int chineseRemainder(size t r, int *m, int *u)
Trang 141.1.3 Logarit rời rạc
1.3.1 Bài toán logarit trên trường số thực R
Định nghĩa logarit: Cho hai số dương a, b với a 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 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 1,R, ta có:
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ử a0
p
Z a a n 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
thấy 2 là căn nguyên thủy và các giá trị được cho bởi bảng sau:
Tính y = 2x mod19, các cặp nghịch đảo Z19
Các cặp nghịch đảo
Trang 15Nhậ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 = ai mod n với (i, (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:
y = logabc = (logab+ logac) mod p-1
y = logab/c = (logab- logac) mod p-1
y loga 1x loga x p 1 loga x
y = loga1 = p – 1= 0
bảng đã tính ở trên ta có các giá trị ngược:
Do 218 =1 vậy nên ta có log21 = 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ố, là phần tử nguyên thủy *
Trang 16Ta có: log10x = p – 1 – log2x với p=19 ta lập được bảng:
1.1.3.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 phép 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ố > 0, 1, nếu ax, thì x được gọi là logarit 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
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ố Xét nhóm nhân các số nguyên modulo p:
*
p
Z ={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 rạc modulo p Chẳng hạn p=17, lấy =3, k=4, ta có:
34 = 81 13 (mod17) 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 1732 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 O((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 O(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.1 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ừ phương trình
(e.d) mod Ф(N) = 1, với 0< d < Ф(N) hay d = e-1 mod Ф(N)
Trang 18Chú ý: 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ụ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
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 19Ngườ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 định lý phần dư Trung Hoa để giải mã cho nhanh như sau:
Tính 1123 mod 11 = 0
Tính 1123 mod 17 = (-6)23mod 17 = (-6)16(-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
11-1 mod 17 = (-6)-1mod 17 = 14 nên c2 = 11.(11-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 Ф(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
1.2.2.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, b ∈ Zp } Chọn khóa bí mật là a ∈ 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 201.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 (⊕, )- đồ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õ, k1, k2 là 2 tham số ngẫu nhiên bí mật
Ví dụ 1.13:
Cho p=2579, =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=k1+k2, ta có:
= Ek (m1 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=1 Bởi vì:
Trang 211.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 α 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 = x A
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à KAB
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)
Trang 23Kiểm tra chữ ký điện tử
Trang 24CHƯƠ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 trong những tập {giấy, kéo, đá} Sau đó, kết quả trò 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
Trang 25H(RA giấy) Nếu 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 trò chơi, vì kéo cắt giấy
Chúng ta hãy nhìn vào lập luận trê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 trong 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à tró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 Để đơ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 trình 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 Để xác nhận một cam kết người cam kết chỉ đơn
Trang 26giả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ò chơi 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’ 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ò chơi sau đây:
• Đối thủ tạo ra hai thông điệp x0 và x1 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 ∈{0, 1}
• Người thách thức tính c = C (xb, r), và truyền c cho đối phương
• 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à trói buộc thông tin về mặt
lý thuyết
Chứng minh Để 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ương ứ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 đồ trê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 trô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à trong 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 , 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 *
p
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):
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 28B(x) = gx,
Ea(x)=(ga, x · ha),
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
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 29Bổ đề 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) = hxga muố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:
y
b f h
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) = hxga muố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 Để 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 trên lược đồ cam kết có tính chất đồng cấu:
Trang 30(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 đơn 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ôṭ 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 V đượ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 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á tri ̣để chứng tỏ một điều gì đó
V gửi lại cho P một giá tri ̣ngẫu nhiên như là giá tri ̣dùng để kiểm thử
Trang 31 P gửi đáp lại V: một giá tri ̣
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ưc ̣, 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ị G1 và G2, mỗi đồ thị có tập đỉnh {1…n}
Trang 32Thông tin bí mật của Lan: Phép hoán vị σ đưa G2 trở thành G1
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 của {1…n} cô ta tính H là ảnh của G1
theo 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ị đưa H trở thành Gi Lan sẽ gửi cho Nam (nếu i=1 thì Lan sẽ xác định , nếu i=2 thì Lan sẽ xác định là . hợp của và )
- Nam sẽ kiểm tra xem H có phải là ảnh của Gi theo hay không
Một phép đẳng cấu từ G2 sang G1 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ị = (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=1, thì Lan sẽ cho Nam phép hoán vị và Nam sẽ kiểm tra xem ảnh của G1 theo 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
= . = (3,2,1,4) và Nam sẽ kiểm tra xem ảnh G2 của có phải là H không
Trang 33
Tính ứng dụng của Chứng minh không tiết lô ̣thông tin
Người xác minh không thể tiếp thu được bất cứ một điều gì từ giao thức này
Verifier không học thêm được bất cứ điều gì từ giao thức này, bởi anh ta không thể
tự mình tìm hiểu mà không có người chứng minh Đây chính là nội dung chính của
giao thức chứng minh không tiết lộ thông tin (giống như không có tri thức nào được
trao đổi ở đây) Không có thuộc tính này, giao thức này sẽ được gọi là giao thức tiết
lộ tối thiểu, tức là nó yêu cầu hoàn toàn không có thông tin nào có thể để lộ trong
trường hợp này
Prover sẽ không gian lận Verifier: nếu Peggy không biết bí mật đó, rõ ràng xác
suất thành công của cô ấy là rất nhỏ Sau số vòng lặp tương đối lớn của giao thức
này, tỉ lệ Prover gian lận sẽ được làm nhỏ nhất khi cần thiết Giao thức này cũng
được cắt và chọn lựa, tức là chỉ cần lần đầu tiên Prover thất bại, Victor có thể biết
được ngay rằng Peggy gian lận Như vậy, với mỗi vòng lặp của giao thức này, xác
suất thành công sẽ cao hơn rất nhiều Giao thức này có thể làm việc tốt ngay cả khi
xác suất may mắn của Prover gian lận cao, vì ta có thể tăng số lần vòng lặp của giao
thức Nói cách khác, khả năng nắm bắt của Verifier rất cao, có thể bảo vệ bản thân
tránh khỏi bị thuyết phục bởi những vấn đề sai (không có vấn đề gì mà Prover có
thể đánh lừa được Verifier)
Verifier không thể gian lận Prover được: Victor không có thêm được bất cứ
thông tin nào từ giao thức, thậm chí, nếu anh ta không tuân theo những chỉ dẫn đó
Điều duy nhất Victor có thể làm để thuyết phục chính anh ta rằng Peggy biết bí mật
đó Điều mà Prover tiết lộ chỉ là một giải pháp của trong rất nhiều giải pháp cho một