Chương 4 : CHỮ KÝ NGƯỜI XÁC NHẬN ĐƯỢC CHỈ ĐỊNH
5. Giao thức chuyển đổi:
Đây là một giao thức xác nhận khác của Colin, giao thức này là cách để Colin chuyển chữ ký người xác nhận được chỉ định thành chữ ký số tự xác thực.
Ở đây, Colin lập nên một chứng minh không tương tác rằng một người nào đó biết cách biểu diễn b như lũy thừa của a.
Ý tưởng cơ bản của sự chuyển đổi này là phải biết cách biểu diễn b như lũy thừa của a để thành lập cặp (r, y) sao cho ay = r.bF(a,r), trong đó F là hàm một chiều thích hợp. Ta thấy rằng khóa cơng khai h của Colin không xuất hiện ở đây, h chỉ xuất hiện trong giao thức ký. Do vậy, sau khi Colin thực hiện giao thức chuyển đổi thì bất kỳ người nào cũng có thể kiểm tra chữ ký mà khơng cần sự có mặt của người ký hay người xác nhận. Giao thức tiến hành như sau:
1. Colin chọn ngẫu nhiên w rồi tính: r = aw
y = w + z.F(a, r).
Sau đó gửi r, y cho người kiểm tra Veron.
2. Người kiểm tra Veron kiểm tra nếu ay = r. bF(a, r) thì chữ ký là tin cậy. Ngược lại là chữ ký không tin cậy.
Chứng minh: ay = r. bF(a, r) thì chữ ký là tin cậy. Ta có: ay = r. bF(a, r)
⇔ aw + z.F(a, r) = aw.bF(a, r) ⇔ aw.az.F(a, r) = aw.bF(a, r) ⇒ az.F(a, r) = bF(a, r) ⇒ az = b hay b = az ⇒ chữ ký là tin cậy. 6. Tổng quát:
Lược đồ chữ ký cơ sở có thể được tổng quát hóa bằng cách bao gồm nhiều người xác nhận. Hơn một khóa cơng khai của người xác nhận có thể được tổ hợp trong chữ ký chống chối bỏ (như lấy tích của khóa cơng khai), sao cho sự cộng tác của tất cả những người xác nhận sẽ là cần thiết cho sự xác nhận bất kỳ. Càng u cầu nhiều người xác thực thì càng khó khăn để nhận sự xác thực và theo một nghĩa trực quan thì lược đồ chữ ký càng tiếp cận gần hơn với giao thức tri thức không.
Chương 5
CHỮ KÝ NGƯỜI XÁC NHẬN KHÔNG THỂ CHỐI BỎ
1.Giới thiệu:
Ở các chương trước chúng ta đã làm quen với khái niệm về chữ ký chống chối bỏ và chữ ký người xác nhận. Lược đồ chữ ký người xác nhận đã giải quyết được một số yếu điểm của lược đồ chữ ký chống chối bỏ. Trong lược đồ chữ ký chống chối bỏ gồm 2 thành phần tham gia là người ký và người xác nhận (hoặc người kiểm tra). Do vậy, nếu người ký từ chối cộng tác đồng nghiã với chữ ký không được kiểm tra. Trong lược đồ chữ ký người xác nhận, khả năng kiểm tra các chữ ký là người đại diện được thêm vào thực thể gọi là người xác nhận. Sự kiểm tra của người xác nhận chính xác hơn của người ký, cơ ta (anh ta) có khả năng xác nhận hoặc từ chối độ tin cậy của chữ ký nhưng cơ ta (anh ta) khơng có khả năng giả mạo chữ ký.
Trong nhiều lược đồ chữ ký người xác nhận, người ký khơng thể xác nhận chữ ký của mình là tin cậy. Nếu người xác nhận từ chối cộng tác dẫn đến chữ ký không thể kiểm tra. Trong thực tế, sự tin cậy của những người tham gia giữ vai trị rất quan trọng, vì vậy giảm tình trạng rắc rối của bất kỳ người tham gia nào là mong muốn cao dựa vào cả các lý do kỹ thuật và các lý do tiết kiệm. Điều này được thực hiện nếu chữ ký có thể kiểm tra với sự cộng tác của người ký hoặc người xác nhận. Sau đó người sử dụng có thể trả lời người ký sự kiểm tra chữ ký. Như một sự bảo vệ an tồn, người xác nhận cịn có thể kiểm tra chữ ký nếu người ký cộng tác.
Chương này giới thiệu lược đồ chữ ký người xác nhận không thể chối bỏ, đưa ra chức năng kiểm tra chữ ký của người ký và người xác nhận. Lược đồ này là sự biến đổi của chữ ký người xác nhận. Lược đồ cung cấp một cách linh hoạt đối với người ký và người sử dụng cũng như bao hàm các biến đổi của người xác nhận được chỉ định – người thường được tin tưởng trong thực tế. Sự bổ sung vào lược đồ nhằm mục đích đánh lạc hướng nghĩa là các chữ ký người xác nhận không thể chối bỏ có thể sinh ra với mục đích đánh lừa. Các chữ ký người xác nhận khơng thể chối bỏ mù qng có lợi ích trong nhiều ứng dụng như các hệ thống trả tiền trước với mạng lớn của các dịch vụ nơi mà quyền riêng tư của mỗi người sử dụng mạng nên được bảo vệ trong khi kiểm duyệt sự mua bán.
2. Mơ hình của chữ ký người xác nhận không thể chối bỏ:
Phần này cung cấp một kiểu đặc trưng của các chữ ký người xác nhận không thể chối bỏ. Nó cung cấp sự định nghĩa khơng đổi cho các giao thức giải mã, sử dụng các
khái niệm chuẩn của máy Turing tương tác, hệ thống chứng minh tương tác và tri thức không.
Để đơn giản, chúng ta dùng S chỉ người ký, C chỉ người nhận và V là người kiểm tra. Lược đồ chữ ký người xác nhận không thể chối bỏ bao gồm các thuật toán và các giao thức sau:
- Thuật tốn tạo khóa: Tạo 2 khóa GENS và GENC nhận 1l là đầu vào ( 11 nghĩa là một dãy số có một số 1), trong đó 1 là tham số an toàn và lần lượt 2 cặp đầu ra (SS, PS) và
(SC, PC). Thuật toán GENS thực hiện bởi S, GENC thực hiện bởi C. (SS, PS), (SC, PC) lần lượt là các cặp khóa bí mật và cơng khai của S và C. Khóa bí mật S được sử dụng để tạo ra chữ ký. Ngoài ra SS, SC được lần lượt sử dụng bởi người ký và người xác nhận trong giao thức xác nhận trong và giao thức chối bỏ.
- Thuật toán ký đa thức theo xác suất SIGN nhận khóa bí mật SS, thơng báo m và các đầu ra của chữ ký σ.
- Giao thức kiểm tra chữ ký tương tác (CVer , VVer). Đây là cặp đầu vào của máy Turing thời gian đa thức tương tác giữa người xác nhận và người kiểm tra:
( CVer (SC), VVer ())(m, σ, PS, PC) → v
Đầu vào chung gồm thơng báo m, chữ ký σ, 2 khóa cơng khai PS, PC.
Người xác nhận có SC là đầu vào riêng. Sự trả về của giao thức là giá trị logic v. Nếu đầu ra là 1 nghĩa là chữ ký σ tin cậy trên thông báo m, đầu ra là 0 thì ngược lại.
- Giao thức kiểm tra chữ ký tương tác (SVer , VVer). Đây là cặp đầu vào của máy Turing thời gian đa thức tương tác giữa người ký và người kiểm tra:
(SVer(SS), VVer())(m, σ, PS, PC) → v
Đầu vào chung gồm thông báo m, chữ ký σ và 2 khóa cơng khai PS, PC. Người ký
có SS là đầu vào riêng. Sự trả về của giao thức là giá trị logic v. Nếu đầu ra là 1 có nghĩa là chữ ký σ tin cậy trên thơng báo m, đầu ra là 0 thì ngược lại.
+ Các yêu cầu trong giao thức:
Tính khơng thể phân biệt của chữ ký: Chữ ký mô phỏng SIGNsim được tạo bằng
thuật toán thời gian đa thức theo xác suất, nó nhận thơng báo m, 2 khóa cơng khai PS,
PC là đầu vào cho ra một phần tử được gọi là chữ ký mô phỏng trong không gian ký. Chữ ký mô phỏng này không thể phân biệt so với chữ ký thực với bất kỳ người nào mà chỉ cần hiểu các thông tin công khai. Dựa vào một thơng báo và một chữ ký có nghĩa, một người nào đó khơng thể tự mình xác định được chữ ký là tin cậy.
Tính khơng thể giả mạo của chữ ký: Khơng tồn tại thuật tốn thời gian đa thức nhận khóa cơng khai PS của người ký; khóa bí mật SC, khóa cơng PC của người nhận và truy cập đến chữ ký người tin cậy SIGN, cho ra một thông báo – chữ ký (m’, σ’) không được tạo bởi SIGN với xác suất đáng kể.
Tính chính xác của sự kiểm tra: khơng lưu ý tới sự dính líu của một trong 2 người ký hoặc người xác nhận, các giao thức kiểm tra là nhất quán. Ngoại trừ xác suất không đáng kể, giao thức kiểm tra trả về 1 như là đầu ra của người kiểm tra nếu gặp thông báo – chữ ký (m, σ) tin cậy, hoặc 0 nếu (m, σ) là không tin cậy.
3. Các lược đồ chữ ký và phép chứng minh tương tác:
3.1. Ký hiệu:
+ Kí hiệu || biểu thị sự nối của 2 dãy nhị phân.
+ Lấy p, q là các số nguyên tố lớn và xem rằng p – 1 chia hết cho q. + Cho g là phần tử sinh của nhóm nhân G của Z*p bậc q.
+ Hàm Hash chịu đựng sự va chạm mạnh H: {0, 1}* Z*p (k = | q |, k > 160).
3.2. Lược đồ chữ ký Schnorr:
Định nghĩa: Cho y = gx mod p, chữ ký Schnorr trên thông báo m kiểm tra sử dụng khóa cơng khai (g, y) là cặp (u, v) ∈ Z*
q × Z*
q thỏa mãn u = H(myggvyu).
Chữ ký như vậy có thể được tính nếu biết khóa bí mật x bằng cách chọn r ∈R Z*q
(chọn r ngẫu nhiên thuộc Z*p ) rồi tính:
u = H(m ||y ||g ||gr ) và v = r – ux mod q.
Để đơn giản, ta dùng S(x, y)(m) biểu thị chữ ký Schnorr trên thông báo m đã được tạo với khóa bí mật x và có kiểm tra với khóa cơng khai y.
3.3. Chữ ký Chaum – Petersen dựa vào đẳng thức toán rời rạc:
Định nghĩa 2: Cho y1 = gx1 và y2 = gx2, chữ ký Chaum – Petersen dựa vào đẳng thức
của thuật toán rời rạc y1, y2 với cơ số là g1, g2 trên thông báo m là cặp (u, v) ∈ Z*
q × Z* q thỏa mãn: u = H(my1y2g1g2gv 1yu 1 gv 2yu 2)
Dưới mơ hình Oracle ngẫu nhiên, chữ ký như thế có thể được thành lập nếu biết khóa bí mật x thỏa mãn y1 = g1xvà y2 = g2x. Chữ ký sai đó được tính bằng cách chọn r ∈R Z
* q, tính: u = H(my1y2g1g2gv 1yu 1 gv 2yu 2) và r = r – ux mod q.
Ta có thể viết lại như sau:
Từ v = r – ux mod q => r = v + ux mod q. Theo giả thiết : y1 = g1x
gv 1yu 1 = gv 1(gx 1)u = gv+ux 1 = gr 1 Tương tự: y2 = gx 2 ⇒ gv 2yu 2= gv 2(gx 2)u = gv+ux 2 = gr 2
Vậy: u = H(my1y2g1g2gr
1gr
Để đơn giản, ta dùng CP(x, y1, y2, g1, g2 )( m ) biểu thị chữ ký Chaum – Petersen trên thông báo m đã được tạo ra với khóa bí mật x thỏa mãn đẳng thức của thuật toán rời rạc y1, y2 với cơ số lần lượt là g1, g2.
3.4. Phép chứng minh tương tác Fujioka – Okamoto – Ohta đẳng thức:
Phép chứng minh đẳng thức logg1(y1) ≡ logg2(y2) là giao thức hoặc chứng minh log
1
g (y1) ≡ logg2(y2) hoặc chứng minh logg1(y1) ≠ logg2(y2). Giao thức của Fujioka – Okamoto – Ohta chứng minh đẳng thức (hoặc không là đẳng thức) của thuật toán rời rạc y1, y2 với cơ số lần lượt là g1, g2. Giao thức như sau:
V (Người kiểm tra) C (Người xác nhận) u, v ∈R Zq a = gu 1yv 1modp → a k, k’, w ∈R Zq r1 = gk 1 ; r2 = gk 2 r' 1 = g ' 1k ; r' 2= g ' 2 k ←r,r,r ,r',w 2 2 ' 1 1 → u,v a = gu 1yv 1mod p? z = k – (v + w) c z’ = k’ – (v + w) k ←z,z' gz 1yv+w 1 = r1 g ' 1 z rv+w 1 = r' 1 g ' 2 z rv+w 2 = r' 2 γ = ( g2z yv+w 2 ≡ r2)
Ta có thể diễn giải giao thức trên thành các bước sau: 1. Người kiểm tra V chọn u,v ngẫu nhiên ∈ Zq và tính
a = gu
1yv
1modp, rồi gửi a cho người xác nhận C 2. Người xác nhận C chọn k, k’, ngẫu nhiên ∈ Zq và tính
r1 = gk 1 ; r2 = gk 2; r' 1 = g ' 1 k ; r' 2= g ' 2 k
Sau đó gửi r1, r2, r1’, r2’ cho V
3. Khi nhận được r1, r2, r1’, r2’ do C gửi, V gửi lại hai giá trị u, v 4. Người xác nhận, nhận được u, v thì kiểm tra đẳng thức
a = gu
1yv
1modp.
z = k – (v + w) c z’ = k’ – (v + w) k
5. Người kiểm tra V sẽ kiểm tra xem các đẳng thức sau có xảy ra hay không? gz 1yv+w 1 = r1 g ' 1 z rv+w 1 = r' 1 g ' 2 z rv+w 2 = r' 2 γ = ( g2z yv+w 2 ≡ r2)
Kết thúc giao thức đầu ra của người kiểm tra là γ . Phép chứng minh trả về 1
nếu logg1(y1) ≡ logg2(y2) và trả về 0 nếu logg1(y1) ≠ logg2(y2). Giao thức được ký hiệu như sau:
Bi – Proof[logg1(y1) ≡ logg2(y2)] Chú ý: ở đây y1, y2 được tính như sau:
y1 = g1c mod p, y2 = g2c mod p
4. Cấu trúc lược đồ chữ ký người xác nhận không thể chối bỏ:
4.1. Tạo khóa:
+ Người ký chọn s ∈R Zq, thiết lập cặp khóa bí mật và cơng khai (SS, PS) với SS = s, PS = gs mod p.
+ Người xác nhận chọn c ∈R Zq, thiết lập cặp khóa bí mật và cơng khai (SC, PC) với SC = c, PS = gc mod p.
4.2. Tạo chữ ký:
Để tạo chữ ký σ trên thông báo m, người ký S chọn r ∈R Zq, tạo:
α : = gr, αs : = Pr
S, αs+c : = (PSPC)r, gs : = PS, gs+c : =PSPC Sau đó tính σ1 = CP(r, α, αs+c, g, gs+c)(m) và σ2 = S(sr, g, αs)(σ1).
=> Chữ ký σ của người ký trên thông báo m là: σ = (σ1, σ2).
4.3. Kiểm tra chữ ký:
Đầu tiên người kiểm tra sẽ kiểm tra độ tin cậy của (σ1, σ2) với σ1 là chữ ký Chaum – Petersen đẳng thức của thuật tốn rời rạc tin cậy trên thơng báo m và σ2 là chữ ký Schnorr tin cậy trên σ1. Người kiểm tra dừng nếu mọi sự kiểm tra đều dẫn đến kết quả không tin cậy. Ngược lại, người kiểm tra tiếp tục kiểm tra chữ ký như sau:
- Đối với người ký:
Đầu ra v của người kiểm tra của (SVer (SS), VVer())(m, σ, PS, PC) được tính: v = Bi-Proof [logα(αs) ≡ logg(gs)]
Trong giao thức này người ký đóng vai trò người chứng minh. - Đối với người xác nhận:
Đầu ra v của người kiểm tra của (CVer(SC), VVer())(m, σ, PS, PC) được tính: v = Bi-Proof [logg (gc ) ≡ logα(αc)]
Trong giao thức phép chứng minh ký này, người xác nhận giữ nhiệm vụ như người chứng minh và αc = αs+c /αs.
Trong cả 2 sự kiểm tra của người ký và người xác nhận, người kiểm tra chấp nhận chữ ký khi và chỉ khi v = 1.
4.4. Giải thích cấu trúc bằng trực giác:
Ta thấy rằng trong các cấu trúc này, người ký có khóa bí mật s, khóa cơng khai g, người xác nhận có khó bí mật c, khóa cơng khai gc.
Giá trị gs+c được tính:
gs+c = PS . PC = gsgc (vì gs = PS, gc = PC )
Chữ ký người xác nhận không thể chối bỏ σ gồm 2 chữ ký là σ1, σ2.
Trong đó σ1 là chữ ký Chaum – Petersen được tạo với khóa bí mật r1 = r, kiểm tra với
khóa cơng khai α = gr và αs+c = gr c
s+ ; σ2 là chữ ký Schnorr được tạo với khóa bí mật r2 = rs, kiểm tra với khóa cơng khai αs = gr
s.
Bằng trực giác thấy rằng, chữ ký là luận chứng của tri thức khóa bí mật. Như vậy, nếu một người nào đó có thể tạo ra σ1, σ2 thì người đó phải có tri thức của r1, r2. Nếu
người đó có thể chứng minh rằng r2 = r1s nghĩa là chữ ký đó là tin cậy. Có 2 cách để chứng minh r2 = r1s như sau:
* Cách 1: Chứng minh rằng: logg(gs) ≡ logα(αs). Cách này u cầu tri thức của
logg(gs), vì vậy chỉ có thể thực hiện bởi người ký.
* Cách 2: Chứng minh rằng: logg(gc ) = logα(αs+c /αs). Cách này yêu cầu tri thức
logg(gc ), vì vậy chỉ có thể thực hiện bởi người xác nhận.
5. Phép phân tích an tồn:
Để chỉ ra rằng cấu trúc là an toàn, chúng ta giả sử rằng lược đồ chữ ký Schnorr và chữ ký Chaum – Petersen dựa vào đẳng thức của thuật toán rời rạc là an toàn. Phép chứng minh ký tương tác Fujioka – Okamoto – Ohta của đẳng thức là an toàn, đúng đắn và chứng cớ không phân biệt được. Phép chứng minh an tồn này có thể được chứng minh trong mơ hình Oracle ngẫu nhiên. Dưới đây là các chứng minh chỉ ra rằng cấu trúc của chữ ký người xác nhận không thể chối bỏ là không giả mạo, không thể