“CHỨNG MINH KHÔNG TIẾT LỘ THÔNG TIN” VÀ ỨNG DỤNG CHỨNG MINH TÍNH HỢP LỆ CỦA LÁ PHIẾU “ĐIỆN TỬ” Trịnh Nhật Tiến, Trương Thị Thu Hiền, Nguyễn Đình Nam Tóm tắt Trong [1], [2], chúng tôi đã
Trang 1“CHỨNG MINH KHÔNG TIẾT LỘ THÔNG TIN” VÀ ỨNG DỤNG
CHỨNG MINH TÍNH HỢP LỆ CỦA LÁ PHIẾU “ĐIỆN TỬ”
Trịnh Nhật Tiến, Trương Thị Thu Hiền, Nguyễn Đình Nam
Tóm tắt
Trong [1], [2], chúng tôi đã trình bày một số kỹ thuật bỏ phiếu từ xa (bỏ phiếu điện
tử - Electronic Voting) Cử tri giữ bí mật lá phiếu khi truyền từ xa tới ban kiểm phiếu bằng cách mã hoá nội dung lá phiếu Theo kỹ thuật “mã hoá đồng cấu”, ban kiểm phiếu có thể tính được kết quả bầu cử mà không cần phải giải mã nội dung lá phiếu Vấn đề nảy sinh là
cử tri phải chứng minh được với ban kiểm phiếu rằng lá phiếu của mình là hợp lệ nhưng nội dung lá phiếu thì không được tiết lộ với họ Để thực hiện điều này, hiện nay người ta
dùng kỹ thuật “Chứng minh không tiết lộ thông tin” (Zero-knowledge proof) Trong báo cáo này, chúng tôi trình bày ý tưởng trên để thực hiện bỏ phiếu loại “Chọn 1 trong k”
1 MỘT SỐ KHÁI NIỆM
1 1 Vấn đề ''Bỏ phiếu điện tử'' (Electronic Voting).
Nghiên cứu về ''Bỏ phiếu điện tử'' là một chủ đề quan trọng đóng góp cho sự tiến bộ của xã hội dân chủ Nếu một hệ thống bỏ phiếu điện tử an toàn và tin cậy, nó sẽ được sử dụng thường xuyên để thu thập ý kiến của mọi người cho nhiều quyết định về chính trị và
xã hội thông qua hệ thống tự động hóa “Bỏ phiếu điện tử'” cũng phải đạt được các tính chất như “bỏ phiếu truyền thống” (xem [1]) Một qui trình bỏ phiếu gồm một số giai đoạn (công đoạn) Hiện nay có nhiều kỹ thuật mật mã để thực hiện hợp lý trong từng giai đoạn
Trong báo cáo này chúng tôi xin trao đổi về giai đoạn Cử tri (CT) chuyển lá phiếu
tới Ban kiểm phiếu (Ban KP) cho Sơ đồ bỏ phiếu loại “Chọn 1 trong k” Trong giai
đoạn này người ta sử dụng kỹ thuật “Mã hóa đồng cấu - Chia sẻ bí mật” (Homomorphic Encryption – Secret Sharing) (xem [2]), kỹ thuật “Chứng minh không tiết lộ thông tin” (Zero-knowledge proof)
1 2 Giai đoạn Cử tri chuyển lá phiếu tới Ban kiểm phiếu.
Theo suy nghĩ thông thường, khi Cử tri (CT) chuyển lá phiếu tới Ban kiểm phiếu (Ban KP) thì họ chỉ cần mã hóa nội dung lá phiếu là đủ Vì tiếp theo Ban KP chỉ cần giải
mã nội dung lá phiếu là tính được kết quả (kiểm phiếu)
Nhưng trên thực tế có thể xảy ra các tình huống sau:
- Ban KP hay một nhóm thành viên Ban KP không trung thực đã gian lận phiếu bầu, ví dụ sửa lại nội dung lá phiếu sau khi giải mã (trước khi kiểm phiếu) Để khắc phục tình hình này, người ta dùng kỹ thuật “Mã hóa đồng cấu - Chia sẻ bí mật” Với giải pháp này Ban
KP không phải giải mã từng lá phiếu nhưng vẫn tính được kết quả
- Để bảo đảm công khai kiểm phiếu, lá phiếu đã mã hóa khi tới Ban KP phải được niêm yết công khai Như vậy nhìn trên bảng niêm yết này, CT sẽ nhận ra lá phiếu của mình và họ có
thể “bán” phiếu bầu” Để khắc phục tình trạng này, người ta dùng một “Người xác minh
trung thực” (TT - honest verifier) làm trung gian giữa CT và Ban KP Cử tri gửi lá phiếu từ
xa tới Ban KP thông qua người trung gian TT Sau khi xác minh lá phiếu hợp lệ, anh ta làm
“mù “ lá phiếu (mã hóa lá phiếu lần thứ 2), tiếp đó gửi nó về Ban KP Trên bảng niêm yết
công khai, CT không thể nhận ra lá phiếu của mình để có thể “bán” phiếu bầu”
Trang 2Khi giải quyết 2 tình huống trên lại xuất hiện hai vấn đề khác:
- Một là CT phải chứng minh cho TT biết lá phiếu của họ là hợp lệ, tức là nội dung lá phiếu
chỉ ghi tên 1 trong số k ứng cử viên (loại bầu cử “chọn 1 trong k”), không cần phải chỉ rõ
lá phiếu ghi đích danh ứng cử viên nào Cách chứng minh như vậy gọi là “Chứng minh không tiết lộ thông tin” Với cách chứng minh này, nội dung lá phiếu không bị tiết lộ, trong khi mọi người đủ bằng chứng tin được rằng lá phiếu này là hợp lệ
- Hai là TT phải chứng minh cho CT, Ban KP,…biết rằng lá phiếu bị làm “mù“ vẫn hợp lệ (theo nghĩa trên) bằng cách chỉ ra rằng anh ta sở hữu giá trị β để là “mù” lá phiếu
TT chứng minh điều này cũng bằng phương pháp “Chứng minh không tiết lộ thông tin”, tức là không cần phải tiết lộ chính giá trị β
Sau đây là sơ đồ giai đoạn Cử tri (CT) chuyển lá phiếu tới Ban kiểm phiếu:
Giao thức 1: CT mã hóa lá phiếu bằng hệ mã hóa Elgamal, CT gửi nó tới TT kèm theo
“Chứng minh không tiết lộ thông tin” cho tính hợp lệ của lá phiếu đó
Giao thức 2: Sau khi xác minh lá phiếu hợp lệ, TT làm “mù“ lá phiếu và gửi nó về Ban KP
kèm theo “Chứng minh không tiết lộ thông tin” cho tính hợp lệ của lá phiếu đã bị làm
“mù“ Cụ thể Chứng minh quyền sở hữu giá trị bí mật β dùng để làm “mù“ lá phiếu
Trang 3Người xác minh
trung thực TT
Lựa chọn ứng cử viên
Mã hóa
lá phiếu
Gửi tới TT lá phiếu đã mã
hóa và “Chứng minh
không tiết lộ thông tin” cho
tính
hợp lệ của lá phiếu
Xác minh tính hợp lệ của lá phiếu
Làm mù
lá phiếu
- Kiểm phiếu
- Niêm yết Công khai Các lá phiếu
đã mã hóa
2 lần
Trang 4“Chứng minh không tiết lộ thong
tin” tính hợp lệ của
lá phiếu mới (đã bị làm mù)
Lá phiếu đã mã hóa
(x, y)
Lá phiếu mã hóa đã bị làm mù
1 3 Khái niệm “Chứng minh không tiết lộ thông tin” và Giao thức ∑.
Trong mục trước ta đã có ví dụ về khái niệm “Chứng minh không tiết lộ thông tin”
Ta xét tiếp ví dụ đơn giản hơn nữa về khái niệm này Giả sử P, V tham gia trò chơi với các
quân bài P đưa ra 2 quân bài úp sấp và nói đó là “át”, “2” P yêu cầu V chọn quân “át” Trước khi chọn quân bài “át”, V muốn kiểm tra chắc chắn 2 quân bài đó đích thực là
“át” và “2” V yêu cầu P chứng minh điều này Nếu P lật 2 quân bài đó lên để coi như một
cách chứng minh thì trò chơi kết thúc vì V đã nhìn thấy chúng, anh ta chọn được ngay được
quân bài “át”
Có một cách khác để P chứng minh được đó là quân bài “át” và “2” mà không phải
lật 2 quân bài đó lên, tức là không làm lộ thông tin về 2 con bài trên tay P Rất đơn giản
anh ta đưa 50 quân bài còn lại cho V Nếu V kiểm tra thấy thiếu một quân “át” và một quân
“2”, thì có thể coi 2 quân bài P đưa ra là đúng như anh ta nói
Qua hai ví dụ trên có thể 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à nghĩa là “để 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ộ”, người xác minh không có nhiều hiểu biết (knowledge) về sự vật sự việc, họ chỉ thu được chút ít thông tin (coi như “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á trị ngẫu nhiên
- V gửi lại P một giá trị ngẫu nhiên như là giá trị dùng để kiểm thử
Trang 5- 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
1 4 Mã hóa đồng cấu Elgamal.
Hệ mã hóa Elgamal xét trong Z p (p là số nguyên tố lớn)
Nếu khóa bí mật là s thì khóa công khai tương ứng là h= g s , g là phần tử sinh của Zp Bản rõ m∈Z pđược mã hóa thành cặp (x,y)=(gα,hαm), trong đó α ngẫu nhiên do người
thực hiện mã hóa chọn Để giải mã, người sở hữu khóa bí mật s tính: s
x
y
Chú ý
Bản Mã là (x,y)=(gα,hαm), Bản Rõ là s
x
y
Trong cuộc bầu cử “chọn 1 trong k”, k là số ứng cử viên, lựa chọn người thứ i là G i
Lá phiếu mã hóa sẽ là (x,y)=(gα,hαG i)
Lá phiếu mã hóa Elgamal (x, y) được làm mù nhờ cặp (u, v)=( gβ, hβ ), β là phần tử ngẫu nhiên bí mật do TT chọn
Sau khi đã làm mù, lá phiếu có dạng: (xu,yv)=(gα +β, hα +βG i)
1 5 Chia sẻ bí mật ngưỡng Shamir và Mã hóa Elgamal.
Theo sơ đồ chia sẻ bí mật Shamir ngưỡng ( n t, ), khóa bí mật s có thể được chia sẻ cho
n thành viên Aj (1≤ j≤n), mỗi người sở hữu một mảnh sj Việc khôi phục khóa bí mật
s chỉ có thể được thực hiện khi có ít nhất t thành viên nhất trí
Khóa bí mật s được khôi phục lại theo công thức j A
A
s
∈
trong đó
} {
∏
=
j A l A j
j l
l
\ ,
λ là hệ số Lagrange.
Mỗi thành viên Ajgiữ bí mật mảnh khóa sj, nhưng công khai giá trị h j s j
g
=
Không cần khóa gốc s, Bản rõ m có thể tính được từ các mảnh khóa s j theo giao thức: 1) Mỗi thành viên A công khai j s j
w = và chứng minh không tiết lộ thông tin về sj, bằng cách cho biết: logg h j =logx w j
(Chú ý: s j
w = suy ra logx w j =logx x s j =s j
s j
h = suy ra logg h j =logg g s j =s j )
2) Tính Bản rõ m theo công thức :
∏
∏
∈
∈
=
=
∑
=
=
∈
A j
j A
j
s s
A j A j
y x
y x
y x
y
m
, ,
Trang 6Trong đó A là tập con các thành viên truyền các chứng minh không tiết lộ thông tin.
Trang 72 GIAO THỨC “CHỨNG MINH KHÔNG TIẾT LỘ THÔNG TIN”
DÙNG TRONG QUÁ TRÌNH BỎ PHIẾU
2 1 Chứng minh tính hợp lệ của lá phiếu (x, y) (Giao thức 1).
Theo sơ đồ giai đoạn Cử tri (CT) chuyển lá phiếu tới Ban kiểm phiếu, phải thực
hiện Giao thức 1 Tức là CT mã hóa lá phiếu bằng hệ mã hóa Elgamal, lá phiếu đã mã hoá
được gửi tới người xác minh trung thực (TT) kèm theo “Chứng minh không tiết lộ thông tin” cho tính hợp lệ của lá phiếu đó
Trong cuộc bầu cử “Chọn 1 trong k”, nếu cử tri nào đó chọn ccc là ứng cử viên thứ
Bằng mã hóa Elgamal, lựa chọn G được mã hóa thành i (x,y)=(gα, hαG i)
Như vậy cử tri muốn chứng minh với người xác minh trung thực TT rằng lá phiếu (x,y) là hợp lệ thì anh ta phải chỉ ra một trong số k đẳng thức sau là đúng
))
/ ( log ((log
)) / ( log
(logg x= h y G1 ∨ ∨ g x= h y G k (1)
Để chứng minh (1) mà không bị lộ G , CT và TT thống nhất dùng giao thức i
“Chứng minh không tiết lộ thông tin” như sau:
- Mã hóa lá phiếu [(x,y)=(gα, hαG i)]
- Chọn ngẫu nhiênw∈Z p
Tính a i =g w, b i =h w
- Với j = 1,…, i-1, i+1,…, k
chọn d , j r j∈Zp (Chưa chọn di , ri )
Tính r j d j
j
r
- Đặt (A,B)=(a1,b1), ,(a k,b k)
(Sử dụng ai , bi đã tính ở trên)
( ,y), (A,B)
- CT tính: (Trước đó chưa chọn di , ri )
) , ( ), , , ( )
,
i i
i j j i
r d r
d R
D
d w
r
d c
d
=
−
=
−
≠ α
←c
→
(D,R)
- TT chọn ngẫu nhiên c∈Z p
- TT kiểm tra:
j j
j j
d j
r j
d r j
k
G y h b
x g a
k j
cho
d d
c
) / (
, , 1
?
?
1
?
=
=
=
+ +
=
Nếu đều đúng TT kết luận:
Lá phiếu hợp lệ
Trang 8Chú ý
Nếu không biết G , người chứng minh P không thể tạo ra i j d j
j
r
để kiểm tra
Ví dụ 1: Chứng minh tính hợp lệ của lá phiếu đã mã hóa (x,y)=(gα, hαG i)
Giả sử cuộc bầu cử “chọn 1 trong 3” Các lựa chọn là 1 hoặc 2 hoặc 3
Ký hiệu lựa chọn ứng cử viên thứ i là G i Để chứng minh tính hợp lệ của lá phiếu, cử tri phải chứng minh: (logg x=logh(y/G1))∨ ∨((logg x=logh(y/G k)). (1)
Chú ý
Vì x = gα nên α = logg x
Vì y = h /α G i nên α = logh(y/G i)
Do đó ta có tính chất (1): α = α hay logg x = logh(y/G i)
Để chứng minh (1), CT và TT thống nhất dùng giao thức “Chứng minh không tiết
lộ thông tin” như sau:
Chọn phần tử sinh g=3, α=5, khóa bí mật s =7, khóa công khai h=gs=37
Ký hiệu 3 ứng cử viên G1=1, G2=2, G3=3 Giả sử cử tri CT chọn Gi=2
Trang 9Cử tri CT Người xác minh TT
- CT mã hóa lá phiếu [(x,y)=(35,(37)5.2]
- CT chọn ngẫu nhiên w=2
Tính 7 2
2
2
2 =3 ,b =(3 )
- Với j = 1, 3
Chọn d1=8, r1=9 và tính:
a1 = 39 (35)8
8 5 7
9
7
1
2 ) 3
(
(
)
3
(
=
b
Chọn d3=10, r3=11 và tính:
a3 = 311 (35)10
10 5 7 11
7
3
2 ) 3
(
(
)
3
(
=
b
(A, B) = (39 (35)8, 7 5 7 5 )8
1
2 ) 3 ( ( ) 3 ( ), (32, (37)2),
(311 (35)10, 7 11 7 5 )10
3
2 ) 3 ( ( ) 3
( ,y), (A,B) TT chọn ngẫu nhiên c=13 ←c
- CT tính d2 = c - ∑
≠i
j j
d
= c - (d1+d3) = 13-(8+10) = -5
- CT tính r2 = w – α di
= 2 – 5 d2 = 2 -5.(-5) = 2 + 25 = 27
- CT đặt (D,R)=(8, 9),(-5, 27),(10, 11)
( →D,R) TT kiểm tra: thấy đều đúng
c=d1+d2+d3=8+(-5)+10=13
j j
j j
d j
r j
d r j
G y h b
x g a
) / (
=
=
j=1,2,3
=>Kết luận: lá phiếu hợp lệ
2 2 Chứng minh quyền sở hữu giá trị bí mật β (Giao thức 2).
Theo sơ đồ giai đoạn Cử tri (CT) chuyển lá phiếu tới Ban kiểm phiếu (Ban KP),
phải thực hiện Giao thức 2 Tức là sau khi xác minh lá phiếu của CT là hợp lệ, người xác
Trang 10minh trung thực (TT) làm “mù“ lá phiếu và gửi nó về Ban KP kèm theo “Chứng minh không tiết lộ thông tin” cho tính hợp lệ của lá phiếu đã bị làm “mù“
TT làm “mù” lá phiếu thông qua cặp (u, v) dựa trên giá trị bí mật β Như vậy để chứng minh lá phiếu đã bị làm “mù“ vẫn hợp lệ, TT phải chứng minh rằng anh ta sở hữu giá trị bí mật β thõa mãn u=gβ, v=hβ Nhưng mặt khác TT không muốn để lộβ
Có một giao thức hiệu quả để anh ta làm việc này: giao thức ∑ (đã trình bày ở mục trên) Trong sơ đồ dưới đây, TT là người chứng minh (P), người kiểm tra (V) là CT, Ban KP,…
- P có [(u,v)=(gβ, hβ)]
- P chọn w∈Zp
Tính (a,b):=(g w,h w) →( b a)
P gửi V giá trị ngẫu nhiên w thông qua (a, b)
←c
V gửi lại P giá trị ngẫu nhiên c - V chọn p
Z
- P tính r:=w+βc →r
P đáp lại V bằng r
- Kiểm tra:
c r
c r
bv h
au g
?
?
=
=
Nếu đều đúng
V thừa nhận P
sở hữu giá trị β
Chú ý
Nếu không biếtβ, người chứng minh P không thể tạo ra r:=w+βc để kiểm tra.
c c w c
w
r
c c w c
w
r
bv h
h
h
h
au g
g g
g
=
=
=
=
=
=
+
+
β β
β
Ví dụ 2:
Người chứng minh P chọn g=3, s=7, h=gs=37 Anh ta có β=5 sử dụng trong
) ,
(
)
,
(u v = gβ hβ =(35, (37)5), cặp số này dùng để làm “mù” lá phiếu đã mã hoá của cử tri
Trang 11P muốn chứng minh với V rằng anh ta sở hữu β mà không muốn để lộ giá trịβ.
P thực hiện giao thức ∑ với người xác minh V như sau:
Trang 12Nếu người nào đó giả mạo rằng đã biếtβ để tạo (u,v)=(g β , h β ) thì “khó” có thể tính
được r=w+βc, tức là bước kiểm thử g r
?
= au c , h r
?
= bv c “khó” có thể thực hiện được
Vì a, b, c, r, g, h, u, v đều công khai nên ai cũng có thể xác minh được r = w+βc.
Nhờ giao thức trên mọi người tin rằng người xác minh TT đã dùngβ để làm “mù” lá phiếu
2.3 Giai đoạn Cử tri chuyển lá phiếu tới Ban kiểm phiếu với phương án 2
Trong mục 1.2 báo cáo đã trình bày giai đoạn Cử tri (CT) chuyển lá phiếu tới Ban
kiểm phiếu (Ban KP) Nó được thực hiện bằng Giao thức 1 và Giao thức 2, xin gọi là
phướng án 1 Có phướng án khác (tạm gọi là 2) cũng để thực hiện giai đoạn này bằng 2 giao thức Giao thức 1 như trong phướng án 1 Giao thức 2 có thay đổi như sau:
Sau khi TT xác minh lá phiếu của CT là hợp lệ, sau khi CT xác minh TT sở hữu giá trị β
thì chính CT làm “mù“ lá phiếu và gửi nó về Ban KP (thay vì TT làm “mù“ lá phiếu và gửi
nó về Ban KP như theo giao thức 2 của phương án 1) Trong phương án này chúng tôi đề nghị: mỗi lần xử lý một lá phiếu, tại mỗi bước thử điều kiện, nếu không thoả mãn, công việc xử lý dừng lại với lá phiếu này để chuyển ngay sang lá phiếu tiếp theo
KẾT LUẬN
Báo cáo đã trình bày hai giao thức “Chứng minh không tiết lộ thông tin” để giải quyết hai vấn đề trong giai đoạn Cử tri chuyển lá phiếu tới Ban kiểm phiếu Như vậy trong giai đoạn này lá phiếu đã bị mã hoá 2 lần, nhưng kết quả giải mã lá phiếu đúng như nội dung ban đầu của nó, bởi vì:
- Nội dung lá phiếu: chọn ứng cử viên Gi
- Lá phiếu sau khi mã hoá lần 1: (x,y)=(gα, hαG i).
- Lá phiếu sau khi làm “mù” (mã hoá lần 2): (xu,yv)=(gα +β, hα +βG i)
- Sau khi giải mã lá phiếu:
i s s
i
g
h g
G h
xu
yv
) ( ) (
)
β β
α
β
α
=
β ) (g s
h
Gi = β
β )
(h
h
Gi = Gi
Chú ý rằng theo mã hoá Elgamal, khoá bí mật là s, thì khoá công khai h = gs
TÀI LIỆU THAM KHẢO
[1] Trịnh Nhật Tiến, Nguyễn Đình Nam, Trương Thị Thu Hiền, “Một số kỹ thuật Bỏ phiếu
từ xa”, Hội thảo Một số vấn đề chọn lọc của Công nghệ thông tin, Thái Nguyên, tháng 8
năm 2003