Ta sẽ chứng minh hai định lý sau đây để chứng tỏ tính hợp thức của các giao thức kiểm thử và chối bỏ của lƣợc đồ chữ ký Chaum-van Antverpen.
Định lý 4.1:
a) Nếu y đúng là chữ ký của A trên x, tức y ≡xa
mod p, thì việc B chấp nhận y là chữ ký của A trên x theo giao thức kiểm thử là đúng.
b) Nếu y ≢ xa(mod p), tức y không phải là chữ ký của A trên x, thì việc B, theo giao thức kiểm thử, chấp nhận y là chữ ký của A trên x, có thể xẩy ra với xác suất 1/q.
Chứng minh:
a) Giả sử y ≡ xa mod p. Khi đó, ya-1≡ x (mod p) (các số mũ đều đƣợc tính theo mod q). Ta cũng có βa-1 ≡ α (mod p) Do đó, 1 1 1 1 2 1 2 e a e a e e a d c y x (mod p),
và theo giao thức kiểm thử, B chấp nhận y là chữ ký của A trên x, việc chấp nhận đó là đúng.
b) Bây giờ giả thử y ≢ xa (mod p). Trƣớc hết ta chú ý rằng mỗi lời mời hỏi c tƣơng ứng với đúng q cặp (e1, e2), vì y và là các phần tử của nhóm nhân G cấp q. Khi A nhận đƣợc câu hỏi c , A không có cách gì để biết là B đã dùng cặp (e1, e2) nào trong q cặp có thể đó. Ta chứng minh rằng, do y ≢ xa (mod p), nên trong q cặp đó chỉ có đúng một cặp thoả mãn đồng dƣ thức d ≡ xe1
αe2 (mod p). Thực vậy, ta có thể đặt c = αi
, d = αj , x = αk , y = αl (với i, j, k, l Zq ), vì là phần tử sinh của G, và hai đồng dƣ thức c ≡ ye1
βe2 (mod p) và d ≡ xe1αe2
(mod p) tƣơng đƣơng với hai phƣơng trình 1 2 1 2 ( ( i le ae e e q j k q . mod ) mod )
Từ giả thiết y ≢ xa (mod p) suy ra l – ak ≢ 0 (mod q), tức định thức của hệ phƣơng trình nói trên (với các ẩn số e1, e2) là ? 0 (mod q). Nhƣ vậy, mỗi d G là câu trả lời đúng (theo giao thức kiểm thử) chỉ với một cặp (e1, e2) trong q cặp có thể. Vì vậy, nếu y ≢ xa (mod p) , thì xác suất để B chấp nhận y là chữ ký của A trên
x (theo giao thức) là bằng 1/q. Định lý đƣợc chứng minh. Đối với giao thức chối bỏ, ta có định lý sau đây :
a) Nếu y ≢ xa (mod p), và cả A, B đều tuân theo giao thức chối bỏ, thì (dα- e2
)f1 ≡ (Dα-f2)e1 (mod p), tức giao thức cho kết quả chính xác. b) Nếu y ≡ xa
mod p, A và B đều tuân theo giao thức, và có d ≢ xe1αe2 (mod p)
D ≢ xf1αf2 (mod p). Khi đó, đồng dƣ thức (dα-e2
)f1 ≡ (Dα-f2)e1 (mod p) đúng với xác suất 1/q , tức nếu y đúng là chữ ký của A trên x, thì theo giao thức, B có thể kết luận rằng nó là giả mạo (một cách sai lầm) với xác suất 1/q.
Chứng minh. a) Giả thử y ≢ xa (mod p), và A,B cùng thực hiện giao thức chối bỏ. Do y không là chữ ký của A trên x nên B sẽ kiểm thử đúng các bất đồng dƣ thức trong các bƣớc 3 và 6 của giao thức. Vì β ≡ αa
(mod p), nên ta có 1 2 1 1 2 2 1 (de )f ((yee )ae )f (mod p) 1 1 1 1 2 1 2 1 a e f e a f e f y (mod p) 1 1 1 e a f y (mod p). Tƣơng tự, ta cũng có 1 2 1 1 1 (Df )e ye a f (mod p).
Nhƣ vậy, đồng dƣ thức ở điểm 7 của giao thức đƣợc nghiệm đúng, và kết luận y là chữ ký giả mạo của A trên x là chính xác, không thể bác bỏ đƣợc.
b) Bây giờ giả thiết y ≡ xa
(mod p), và A, B cùng thực hiện giao thức chối bỏ. Đặt x0= d1/e1α-e2/e1
mod p , ta có
x0 = da/e1α-ae2/e1
≢ (xe1 αe2
)a/e1 α-ae2/e1 ≡ xa ≡ y (mod p)
Theo điểm b) trong định lý 4.2, B có thể chấp nhận y là chữ ký của A trên x0, tức là có đồng dƣ thức
D ≡ x0f1 αf2 (mod p),
với xác suất 1/q. Nhƣng đồng dƣ thức đó tƣơng đƣơng với đồng dƣ thức
(dα-e2
)f1 ≡ (Dα-f2)e1(mod p),
tức đồng dƣ thức này cũng có thể xẩy ra với xác suất 1/q. Định lý đƣợc chứng minh. Ta chú ý rằng trong giao thức chối bỏ, cặp (e1, e2) đƣợc sử dụng để tạo ra x0
với x0
a ≢ y (mod p); còn cặp (f1, f2) đƣợc dùng để kiểm thử xem y có là chữ ký của A trên x0 hay không.
Trong thực tế ứng dụng, để bảo đảm tính an toàn, ta phải dùng các số p, q rất lớn, chẳng hạn phải là các số có biểu diễn nhị phân cỡ 512 bit, khi đó ta có q 2510, tức là 1/q 2-510, một xác suất rất bé, có thể bỏ qua; và vì vậy, các yêu cầu đối với các giao thức kiểm thử và giao thức chối bỏ nhƣ đề cập đến nhƣ trên có thể xem là đƣợc thoả mãn.
Năm 1991, Y. Desmedt và M. Yung đã chỉ ra một số điểm yếu của lƣợc đồ chữ ký chống chối bỏ ban đầu [29] (của D. Chaum và H.van Antwerpen), Những điểm yếu này tập trung khai thác giao thức thẩm định chữ ký trong đó có sự kết hợp giữa ngƣời ký và ngƣời thẩm định.
4.4 MỘT SỐ BIẾN THỂ CỦA LƢỢC ĐỒ CHỮ KÝ CHỐNG CHỐI BỎ
4.4.1 Chữ ký chống chối bỏ Zero-Knowledge
4.4.1.1 Giao thức Zero-Knowledge [8]
Zero-knowledge là giao thức dùng để chứng minh một phát biểu là đúng nhƣng không tiết lộ bất kì thông tin gì ngoài tính chân thực của phát biểu. Khái niệm này đầu tiên đƣợc Shafi Goldwasser đề cập đến năm 1985. Sau đó, Blum, Feldman và Micali đƣa ra khái niệm tƣơng tự là Non-interactive Zero-knowledge proof với ý nghĩa rằng một chuỗi ngẫu nhiên đƣợc chia sẻ giữa ngƣời chứng minh và ngƣời xác nhận đủ cho các tính zero-knowledge mà không cần tƣơng tác trực tiếp giữa hai ngƣời. Tính chất của Zero-knowledge phải thỏa 3 điều kiện sau:
– Completeness: Nếu phát biểu là đúng, ngƣời xác nhận chân thật sẽ bị thuyết phục.
– Soundness: Nếu phát biểu là sai, không có ngƣời chứng minh nào có thể thuyết phục ngƣời xác nhận đƣợc, ngoại trừ một xác suất rất nhỏ.
– Zero-knowledge: Nếu phát biểu là đúng, không có ngƣời xác nhận nào có thể lấy đƣợc thông tin về sự thật.
Ví dụ, bài toán tìm logarit rời rạc: Cho G là nhóm nhân hữu hạn N phần tử; b là một phần tử cố định trong G; y là một phần tử trong G. Alice đã tìm ra cách giải phƣơng trình bx
= y để tìm đƣợc x và muốn thuyết phục Bob về điều này mà không muốn tiết lộ cách giải (đƣợc biết N, y, b). Alice tiến hành nhƣ sau:
Bƣớc 1: Alice chọn một số ngẫu nhiên e < N và gửi cho Bob b‟ = be.
Bƣớc 2: Bob tung đồng xu lên: Nếu sấp thì Alice phải tiết lộ e, Bob sẽ kiểm tra có đúng b‟ = be
? Nếu ngửa thì Alice phải tiết lộ thặng dƣ của x + e mod N, Bob sẽ kiểm tra có đúng yb‟ = bx+e
?
Giải thích: Các bƣớc trên thực hiện theo giao thức Zero-knowledge vì:
- Completeness: Nếu Alice biết x thì luôn đƣa ra câu trả lời đúng dù giao thức có đƣợc thực hiện nhiều lần.
- Soundness: Nếu Alice không biết giá trị x thì không thể trả lời đƣợc khi đồng xu ngửa. Để có thể đánh khi đồng xu ngửa, Alice sẽ chọn b‟ = be
/y và chọn x + e mod N = e (tức x =0), thì Alice không thể qua mặt Bob khi đồng tiền sấp (vì b‟ = be/y ≠ be). Xác xuất để lừa là hoặc Bob luôn giao đồng xu sấp (hoặc ngửa) với xác xuất sau m lần thực hiện là 2-m.
- Zero-knowledge: Nếu Cindy biết trƣớc đồng xu sẽ xuất hiện mặt nào, Cindy có thể vƣợt qua các kiểm tra của Alice mà không biết giá trị x.
4.4.1.2 Chữ ký chống chối bỏ Zero-Knowledge [11] a. Chọn các thông số
Ngƣời ký chọn số nguyên tố p (sao cho q = 2p+1, q cũng là số nguyên tố), là một phần tử nguyên thuỷ của nhóm con Gq của Z*p cấp q. Ngƣời ký A có khoá bí mật x và khoá công khai tƣơng ứng là αx . Thông điệp m (m ≠ 1) đƣợc A ký sẽ cho ra chữ ký z: z = mx.
b. Giao thức xác thực
Ngƣời thẩm định B khi nhận đƣợc z, nếu muốn kiểm tra tính hợp lệ của chữ ký thì sử dụng giao thức sau:
Bƣớc chuẩn bị: Ngƣời ký sinh số nguyên tố q; ngƣời thẩm định sinh hai số a,
b là phần tử ngẫu nhiên của nhóm.
Bƣớc 1: Ngƣời thẩm định B tính ma αb và gửi cho ngƣời ký A
Bƣớc 2: Ngƣời ký tính [ma αb+q , (ma αb+q)x ] và gửi cho ngƣời thẩm định Bƣớc 3: Ngƣời thẩm định gửi a, b cho ngƣời ký
Bƣớc 4: Ngƣời ký gửi q cho ngƣời thẩm định
Giải thích: Để bắt đầu, mỗi bên bí mật chọn ngẫu nhiên các thông số cho mình: A chọn q và B chọn a, b. Ở bƣớc 3, khi nhận đƣợc a, b thì A có thể khôi phục đƣợc thông điệp trong bƣớc 1. Khi thông điệp khôi phục thành công, A thực hiện bƣớc 4. Cuối cùng, bằng việc thay thế z cho mx, B có thể xây dựng lại thông điệp trong bƣớc 2 và đảm bảo rằng nó đúng (Tính nhƣ sau: (ma αb+q)x = (mx)a (αx)b+q = za kUS
b+q
: kUS là khoá công khai của A). Tính an toàn của giao thức xác thực
- Giao thức xác thực trên là zero-knowledge: Nếu B gửi thông điệp trong bƣớc 3 và nhận về thông điệp trong bƣớc 4, B có thể xây dựng thông điệp trong bƣớc 2. Nếu B không gửi đúng thông điệp trong bƣớc 3, thì bƣớc 4 không đƣợc thực hiện.
- Ngay cả khi A có máy tính có khả năng vô hạn thì xác suất thành công của A không vƣợt quá p-1 để đƣa ra một phản hồi (trả lời) hợp lệ cho một chữ ký không hợp lệ. Để chứng minh điều này, về bản chất cũng tƣơng tự nhƣ chứng minh trong lƣợc đồ chữ ký chống chối bỏ ban đầu.
c. Giao thức chối bỏ
Ngƣời ký thông điệp muốn giải thích cho ngƣời thẩm định rằng thông điệp riêng tƣ z không phải là chữ ký hợp lệ tƣơng ứng với khoá công khai αx
và thông điệp m: nghĩa là z ≠ mx
. Để làm đƣợc điều này, ngƣời ký thông điệp phải phối hợp thực hiện một giao thức chối bỏ. Ngƣời ký có thể giả mạo với xác suất 1/(k+1), ở đây k là hằng số đƣợc thoả thuận trƣớc. Thực tế k có thể lấy là 1023, và cơ hội để lừa là nhỏ hơn 1/1.000.000 với 10 lần thực hiện giao thức (cơ hội nhỏ hơn 2-100
). Bƣớc chuẩn bị: Ngƣời ký A chọn một số ngẫu nhiên r; ngƣời thẩm định B sinh số số s Є {1, .., k}, và số a.
Bƣớc 1: Ngƣời thẩm định tính [ms αa , zs αxa ] và gửi cho ngƣời ký Bƣớc 2: Ngƣời ký tính blob(r,s) và gửi cho ngƣời thẩm định
Bƣớc 3: Ngƣời thẩm định gửi a cho ngƣời ký Bƣớc 4: Ngƣời ký gửi r cho ngƣời thẩm định
Giải thích: Trong một lần thực hiện giao thức, khởi đầu B chọn một số nguyên s trong khoảng {0 …k} và một số a độc lập trong các phần tử nhóm. Trong bƣớc 1, B tính cặp giá trị và gửi cho A. Để bắt đầu bƣớc 2, A xác định giá trị của s
bằng việc thử sai. Một cách hiệu quả để tìm s là nhân mũ của thành phần đầu trong giá trị mà B gửi cho A, sau đó thực hiện phép chia với thành phần thứ hai.
Cụ thể: (ms αa)x/zs αxa = [mx/z]s ≢ 1
khi biết giá trị này, và vì s trong khoảng {0 …k} nên A có thể thử và tìm ra s, việc thử đƣợc thực hiện sau k+1 lần (Nếu thực tế z = mx , thì [mx/z]s = 1 với mọi giá trị của s. Do đó, trong trƣờng hợp ngƣời ký là kẻ lừa đảo thì tỷ lệ thành công để tìm ra
s chính xác chỉ là 1/(k+1)). Nếu s không đƣợc tìm thấy thì A sử dụng một giá trị ngẫu nhiên. Bƣớc 2, A gửi thông điệp là một blob trong đó có ràng buộc giá trị s, nhƣng s đƣợc giữ bí mật cho đến khi số ngẫu nhiên r đƣợc công bố. Dựa trên việc
nhận blob trong bƣớc 2, B có thể gửi a. Và trƣớc khi kết thúc việc gửi r trong thông điệp cuối cùng, A kiểm tra a xem có thể khôi khục đƣợc thông điệp ban đầu trong bƣớc 1 không.
4.4.2 Chữ ký chống chối bỏ có thể chuyển đổi
4.4.2.1 Giới thiệu
Việc kết hợp giữa ngƣời ký và ngƣời thẩm định cần đƣợc thực hiện trong suốt quá trình thẩm định. Nếu ngƣời ký không hợp tác hoặc không có mặt thì ngƣời nhận không thể nào sử dụng chữ ký mà anh ta nhận đƣợc. Chaum đƣa ra lƣợc đồ chữ ký mà ngƣời chứng thực đƣợc chỉ định (Designated Confirmer Scheme) để khắc phục điểm yếu này. Chữ ký chống chối bỏ có thể chuyển đổi (Convertible Undeniable Signatures) cũng là dạng chữ ký để giải quyết việc vắng mặt của ngƣời ký trong quá trình thẩm định.
Quyền thẩm định chữ ký chống chối bỏ có thể đƣợc giao cho một đại diện đƣợc chỉ định. Đại diện này có quyền thẩm định một chữ ký khi ngƣời ký vắng mặt nhƣng không thể tạo ra một chữ ký hợp lệ thay ngƣời ký. Ý tƣởng này đƣợc Boyar, Chaum và Damgard đƣa ra gọi là Chữ ký chống chối bỏ có thể chuyển đổi (Convertible Undeniable Signatures) .
4.4.2.2 Chữ ký chống chối bỏ có thể chuyển đổi [13]
Trong quá trình ký yêu cầu hai khoá bí mật (Ks1 và Ks2) và một khoá công khai là Kp, khoá bí mật chính Ks1 sẽ đƣợc giữ bí mật hoàn toàn và khoá bí mật thứ hai Ks2 có thể đƣợc đƣa ra khi có yêu cầu. Sau khi khoá Ks2 đƣợc công bố thì chữ ký chống chối bỏ trên tài liệu đƣợc chuyển thành chữ ký tự xác thực thông thƣờng.
Có hai loại chữ ký chống chối bỏ có thể chuyển đổi: Một là chữ ký đƣợc chuyển đổi toàn bộ; hai là chữ ký đƣợc chuyển đổi theo sự lựa chọn. Trƣờng hợp nếu ngƣời ký sử dụng cùng một khoá cho các thông điệp khác nhau thì khi khoá Ks2
đƣợc công bố thì tất cả chữ ký chống chối bỏ đƣợc chuyển thành chữ ký tự xác thực thông thƣờng. Giả sử nếu ngƣời ký sử dụng mỗi khoá cho các thông điệp khác nhau, ngƣời ký đƣợc yêu cầu nhớ khoá bí mật thứ hai Ks2 đƣợc sử dụng để tạo chữ ký m. Sau đó, khi Ks2 đƣợc công bố thì chỉ chữ ký chống chối bỏ trên thông điệp đƣợc chuyển thành chữ ký tự xác thực thông thƣờng còn các chữ ký chống chối bỏ khác thì không bị ảnh hƣởng.
a. Bước thiết lập: Chọn hai số nguyên tố lớn q, q sao cho q|(p-1) và một phần tử sinh nhóm α (mod p) của các số nguyên có bậc q.
b. Sinh khoá: Ngƣời ký thực hiện các tính toán sau:
1. Lấy ngẫu nhiên 2 số x, z Є Zq* và giữ bí mật những số này. 2. Tính y = αx
(mod p)
3. Tính u = αz
(mod p)
4. Khoá công khai Kp là (y, u) và các khoá bí mật là (x, z) .
Chú ý: Lấy x = Ks1 và z = Ks2
c. Sinh chữ ký: Để ký lên thông điệp m, ngƣời ký thực hiện nhƣ sau: 1. Chọn hai số ngẫu nhiên t, k Є Zq*
2. Tính T = αt
(mod p)
3. Tính r = αk
(mod p)
4. Tính s = k-1 (m - xr)(mod p)
5. Chữ ký trên thông điệp m là bộ ba (T, r, s)
d. Giao thức xác thực: Lấy w = TTm và v = yr rs có thể đƣợc tính từ những thông tin công khai. Chữ ký là hợp lệ nếu wz = v. Ngƣời ký chứng minh tính tƣơng đƣơng thông qua việc chứng minh logwv = logαu sử dụng giao thức zero-knowledge.
e. Giao thức chối bỏ: Chữ ký là không hợp lệ nếu tính tƣơng đƣơng wz = v không đƣợc duy trì. Ngƣời ký cần chứng minh tính không tƣơng đƣơng thông qua logarit rời rạc logwv ≠ logαu sử dụng giao thức zero-knowledge.
f. Chuyển đổi có lựa chọn: Thông qua việc công bố giá trị bí mật t, chỉ chữ ký mà đƣợc ký bởi t có thể chuyển thành chữ ký thƣờng. Ngƣời ký có thể kiểm tra bằng việc kiểm tra:
utTm = yr ss (mod p) và T ≡ αt
(mod p) .
g. Chuyển đổi tổng thể: Thông qua việc công bố giá trị bí mật z, tất cả các chữ ký