Giao thøc này để cho ngời kiểm tra bị thuyết phục rằng chữ ký là phù hợp nhng cũng không cho phép ngời kiểm tra đi thuyết phục ngêi kh¸c. Giao thøc nh sau:
Ch÷ ký sè ngời xác nhận khơng thể chối bỏ
1. Ngêi kiÓm tra Veronica chän u, v ngÉu nhiên và tính: k = gu.av. Råi gưi k cho Colin.
2. Colin chän p ngẫu nhiên và tính: l = gp, n = (k.l)z
Sau ®ã gưi l, n cho ngêi kiĨm tra Veronica. 3. Ngêi kiĨm tra gưi u, v cho Colin
4. Colin kiÓm tra nÕu gu.av = k th× Colin göi p cho ngêi kiÓm tra Veronica.
5. Ngêi kiÓm tra Veronica sÏ kiĨm tra nÕu gp = l vµ n.hp = hu.bv thì chữ ký là tin cậy. Ngợc lại, chữ ký là khơng tin cËy.
ë bíc 5, ngêi kiĨm tra Veronica kiĨm tra đẳng thức n.hp = hu.bv cịng chÝnh lµ kiĨm tra b = az. Ta cã: n.hp = hu.bv ⇒ bv = n. hp. h-u (1) Mặt khác: n = (k.l)z k = gu.av l = gp ⇒ n = (gu.av.gp)z (2) Tõ (1) vµ (2) ⇒ bv = (gu.av.gp)z. hp. h-u = guz.avz.gzp.g-uz.g−zp ⇒ bv = av.z⇒ b = az.
V.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 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 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ố c«ng khai h cđa Colin kh«ng xt 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 w ngẫu nhiên và tính: r = aw
Chữ ký số ngời xác nhận khơng thĨ chèi bá
y = w + z.F(a, r)
Sau ®ã gưi r, y cho ngêi kiÓm tra Veronica.
2. Ngêi kiÓm tra Veronica kiĨm tra nÕu ay = r. bF(a, r) thì chữ ký là tin cậy. Ngợc lại, chữ ký là 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.
V.6. Tỉng qu¸t
Lợc đồ chữ ký cơ sở có thể đợc tổng quát hoá bằng cách bao gồm nhiều ngời xác nhận. Hơn một khố 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 các khố 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. Và nếu khố của Simon đợc kết hợp vào thì kết quả là sự tiết lé tèi thiĨu.
Chơng VI
Chữ ký ngời xác nhận khơng thể chối bá
VI.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 đ-
Chữ ký số ngời xác nhận không thĨ chèi bá
ỵ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ỏ chỉ gồm 2 thành phần tham gia là ngời ký và ngời xác nhận (hc ngêi kiĨm tra). Do vËy, nÕu ngêi ký tõ chối cộng tác đồng nghĩa với việc 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 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ý nhng cơ ta (anh ta) khơng có khả năng giả mạo mọi 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 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 cộng tác của ngời xác nhận. Sau đó ngời sư dơng cã thĨ trả lời ngời ký sự kim 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ý tõ chèi 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 cả 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 ngời sử dụng mạng nên đợc bảo vƯ trong khi kiĨm dut sù mua b¸n cđa c¸c dấu hiệu mua bán dài hạn cần phải đợc ngăn chặn.
VI. 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 trng 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.
Chữ ký số ngời xác nhận khơng thể chối bỏ
Để đơn gi¶n, chóng ta dïng S chØ ngêi ký, C chØ ngời xác 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 toán tạo khố: tạo 2 khố GENS vµ GENC nhËn 1l là đầu vào (1l nghÜa lµ mét d·y cã l sè 1), trong đó l là tham số an tồn và lần lợt là 2 cặp đầu ra (SS, PS) vµ (SC, PC). Tht to¸n GENS đợc thùc hiƯn bëi S, GENC đợc thực hiện bởi C. (SS, PS), (SC, PC) lần lợt là các cặp khố bí mật và cơng khai của S và C. Khố bí mật S đợc sử dụng để tạo ra các chữ ký. Ngoµi ra SS, SC đợc lần lợt sử dụng bởi ngời ngời ký và ngời xác nhận trong các giao thức xác nhận và giao thức chèi bá.
- Thuật toán ký đa thức theo xác suất SIGN nhËn kho¸ 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ố 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ố 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 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 an tồn của các thành phần trong giao thức:
- Tính khơng thể phân biệt đợc 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ố cơng khai PS, PC là đầu vào và 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 đối với bất kỳ ngời nào mà chỉ 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ố cơng khai PS cña ngêi ký; khoá bí mật SC, kh cng khai PC
Chữ ký số ngêi xác nhận không thể chối bỏ
của ngời xác nhận và truy cập đến chữ ký ngêi tin cËy SIGN, cho ra mét cỈp 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 lu ý tới sự dÝnh lÝu cña mét trong hai ngời là 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 cặp thơng báo – ch÷ ký (m, σ) tin cậy, hoặc là 0 nÕu (m,
σ) là không tin cậy.
VI.3. Các lợc đồ chữ ký và phép chứng minh tơng tác
VI.3.1. Ký hiệu
+ Ký hiƯu biĨu thÞ sù ghép nối của 2 dÃy nhị phân.
+ Lấy p, q là các số ngun tè lín vµ xem r»ng p - 1 chia hÕt cho q + Cho g là phần tử sinh của phân nhóm nhân G của Z*
p bËc q. + Hàm Hash chịu đựng sự va chạm H: {0, 1}* → Z*
p (k =q, k > 160).
VI.3.2. Lợc đồ chữ ký Schnorr
Định nghĩa : Cho y = gx modp, ch÷ ký Schnorr trên thơng báo m kiểm tra sử dụng khố cơng khai (g, y) là cặp (u, v) ∈ Z*
q × Z*
q thoả mÃn u = H(myggvyu).
Chữ ký nh vậy có thể đợc tính nếu biết khố bí mËt x b»ng c¸ch chän r ∈
R Z*
q (chän r ngẫu nhiên thuộc Z*
q ) và tính:
u = H(myggr) 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ố bí mật x và có thể kiểm tra với khố cơng khai y.
VI.3.3. Chữ ký Chaum-Petersen dựa vào đẳng thức của thuật toán rời rạc
Định nghĩa 2: Cho y1 = gx
1 vµ y2 = gx
2, ch÷ ký Chaum-Petersen dùa vào đẳng thức của thut toỏn rời rạc y1 và y2 vi c s là g1, g2 trên thông báo m là cặp (u, v) Z* q ì Z* q thoả mÃn: u = H(my1y2g1g2gv 1yu 1gv 2yu 2)
Ch ký s ngời xác nhận khơng thể chối bỏ
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ố bí mËt x tho¶ m·n y1 = gx 1 vµ y2 = gx 2. Chữ ký sau đó đợc tính bằng c¸ch chän r ∈R Z* q, tÝnh: u = H(my1y2g1g2gv 1yu 1 gv 2yu 2) vµ v = r – ux mod q.
Ta cã thĨ viÕt l¹i u nh sau:
Tõ v = r – ux modq ⇒ r = v + ux modq Theo gi¶ thiÕt: y1 = gx
1 ⇒ 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 2)
Để đơ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ố bí mật x thoả 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.
VI.3.4. Phép chứng minh ký tơng tác Fujioka-Okamoto-Ohta của đẳng thức
Phép chứng minh ký đẳng thøc logg1(y1) ≡ logg2(y2) là giao thức hoặc chøng minh logg1(y1) ≡ logg2(y2) hc 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 tố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 ' 1 k ; r' 2= g ' 2 k ←r,r,r ,r',w 2 2 ' 1 1 → u,v
Ch÷ ký số ngời xác nhận không thể chối bỏ a = gu 1yv 1? z = k – (v + w) c z’ = k’ – (v + w) k ←z,z' gz 1yv+w 1 = r1 g ' 1z 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, w ngẫu nhiên Zqvµ tÝnh r1 = gk 1; r2 = gk 2; r' 1 = g ' 1k ; 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 C 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.
NÕu ®óng, C gưi cho V hai giá trị z, z đợc tính nh sau: 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 ' 1z 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), tr¶ vỊ 0 nÕu logg1(y1) ≠ logg2(y2).
Ch÷ ký số ngời xác nhận khơng thể chối bỏ
Bi – Proof[logg1(y1) ≡ logg2(y2)] Chú ý: ở đây y1, y2 đợc tính nh sau:
y1 = g1c mod p, y2 = g2c mod p
VI.4. Cấu trúc lợc đồ chữ ký ngời xác nhận khơng thể chối bỏ
VI.4.1. Tạo kho¸
+ Ngêi ký chän s ∈R Zq, thiết lập cặp khố bí mật và c«ng khai (S S, PS) víi SS = s, PS = gs modp.
+ Ngêi x¸c nhËn chän c ∈R Zq, thiết lập cặp khố bí mật và cơng khai (SC, PC ) víi SC = c, PC = gc modp.
VI.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 ®ã S 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).
VI.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 toá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.