Ví dụ minh họa chứng minh không tiết lộ thông tin

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu, nghiên cứu một số chữ ký đặc biệt dùng trong bỏ phiếu điện tử 04 (Trang 56)

Từ bây giờ chúng ta sẽ coi Peggy là Prover (ngƣời chứng minh), còn Victor là Verifier (ngƣời kiểm thử). Peggy(P) muốn chứng minh với Victor(V) rằng cô ta biết câu thần chú có thể mở đƣợc cánh cửa bí mật tại các điểm R-S, nhƣng cô ta không muốn tiết lộ bí mật đó với Victor.

Quá trình đến nơi đó diễn ra nhƣ sau: Victor đi tới P và đợi đến khi Peggy đi khỏi R hoặc S. Sau đó Victor di chuyển đến Q và gọi Peggy ra ngoài từ bên trái hoặc bên phải của đƣờng hầm(kỹ thuật cut and choose). Nếu Peggy không biết câu thần chú, cô ta chỉ có 50% khả năng ra ngoài từ bên đúng. Giao thức có thể đƣợc lặp lại nhiều lần đến khi Victor tin rằng Peggy đã biết câu thần chú. Nếu giao thức đƣợc lặp lại k lần, xác suất lừa gạt của Peggy là 2k.Và nó không có nghĩa là giao thức đã đƣợc lặp bao nhiêu lần.Victor vẫn không biết đƣợc bí mật.

Ý nghĩa chính ẩn trong nguyên nhân là: Peggy muốn chứng minh một sự thật hiển nhiên F1 nhƣng cô ta không muốn tiết lộ sự chứng minh này. Vì thế cô ta đi tìm những sự thật F2 khác, mà có thể tiết lộ công khai, nhƣ là F2 là đúngnếu F1 đúng

(điều kiện cần thiết).Vì thế cô ta “thay thế” phép chứng minh của F1 chỉ bằng chứng minh F2. Trong ví dụ, F1 là câu thần chú bí mật,và F2 là khả năng xuất hiện từ mọi phía của đƣờng hầm. Nếu Victor đồng ý rằng F2 không thể đúng nếu F1 không đúng, sau đó giao thức có thể tiến hành.

Theo quy trình trong hình 3.3 giai đoạn CT chuyển lá phiếu tới Ban KP, phải thực hiện giao thức nhƣ trong bảng 3.1. Tức là CT sẽ mã hóa lá phiếu bằng hệ mã hóa Elgamal, lá phiếu đã mã hóa đƣợc gửi tới ngƣời XMTT 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 đó. Giả sử trong cuộc bầu cử “chọn 1 trong k”, nếu cử tri nào đó chọn Gi là ứng cử viên thứ i trong danh sách thì lá phiếu

thành (x, y) = (gα, hαGi). Nhƣ vậy CT muốn chứng minh với ngƣời XMTT rằng lá phiếu (x, y) là hợp lệ, thì anh ta phải chỉ ra một trong k đẳng thức sau là đúng: (logg x = logh (y/G1))… (logg x = logh (y/Gk)). Để chứng minh đẳng thức trên là đúng mà không bị lộ Gi, CT và ngƣời XMTT thống nhất dùng giao thức “Chứng minh không tiết lộ thông tin” nhƣ sau:

Bảng 3.1. Giao thức cử tri chứng minh lá phiếu hợp lệ

Cử tri Ngƣời XMTT

- Mã hóa lá phiếu [(x, y) = (gα, hαGi)] - Chọn ngẫu nhiên wZ p Tính ai = gw, bi = hw - Với j = 1,…, i - 1, i + 1,…, k Chọn ,dj, rj Zpf(chƣa chọn di, ri) Tính a j= 𝑔𝑟𝑖𝑥𝑑𝑖, b j= ℎ𝑟𝑖(𝑦 𝐺𝑗)𝑑𝑖 - Đặt (A,B)= (a1,b1),…,(ak,bk) (Sử dụng ai, bi đã tính ở trên) (x, y), (A,B) c Chọn ngẫu nhiên c Zp - Tinh: di= c- 𝑗 ≠𝑖𝑑𝑗 r i=w-𝛼𝑑𝑗 d, r = (d1, r1),…, (dk, rk) d, r -Kiểm tra: c=d1+d2+...dk Cho j = 1,…, k aj= 𝑔𝑟𝑖𝑥𝑑𝑖 và bj=ℎ𝑟𝑖(𝑦 𝐺𝑗)𝑑𝑖 Nếu đều đúng ngƣời XMTT kết luận: Lá phiếu hợp lệ

b/. Kiểm tra tính hợp lệ khóa mã hóa của ngƣời XMTT:

Giải quyết: Dùng phƣơng pháp “Chứng minh không tiết lộ thông tin”.

Theo quy trình trong hình 3.3 ngƣời XMTT sẽ 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 XMTT làm “mù” hoặc mã hóa lá phiếu

tính hợp lệ của lá phiếu đã bị làm “mù”. Ngƣời XMTT làm “mù” hoặc mã hóa lá phiếu thông qua cặp (u, v) và dựa trên giá trị bí mật f. Để chứng minh lá phiếu bị làm “mù” hoặc đã đƣợc mã hóa vẫn hợp lệ, ngƣời XMTT phải chứng minh đƣợc là anh ta sở hữu giá trị bí mật  thỏa mãn u=g, v=h. Nhƣng mặt khác ngƣời XMTT không muốn để lộ . Có một giao thức hiệu quả để ngƣời XMTT làm việc này: giao thức ∑. Trong sơ đồ sau đây, ngƣời XMTT là ngƣời chứng minh (P), ngƣời kiểm tra (V) là CT, ban KP,..

Bảng 3.2. Chứng minh lá phiếu đã làm mù hoặc mã hóa hợp lệ

Ngƣời XMTT (P) Ngƣời kiểm tra (V)

- Có [(u, v)= (g, h)] - Chọn wZp -Tính (a,b) = (gw,hw) (a,b) c - V chọn cZp - Tính r := w +c r - Kiểm tra: gr =a.uc, hr=b.vc

Nếu đều đúng V thừa nhận với P sở hữu giá trị 

3.3.5. Kỹ thuật trộn các lá phiếu (mixing the votes)

3.3.5.1. Khái niệm:

Khi bỏ phiếu từ xa, để đám bảo tính bí mật, cử tri phải mã hóa nội dung lá phiếu. Ban kiểm phiếu phải giải mã mới biết lá phiếu ghi gì. Có thể có một ngƣời hay một nhóm ngƣời trong ban kiểm phiếu muốn biết nội dung cũng nhƣ tác giả của lá phiếu, điều đó có thể dẫn đến rắc rối đối với cử tri sau này.

Để tránh những rắc rối trên, ngƣời ta sử dụng kĩ thuật “Trộn các lá phiếu”.

Theo kĩ thuật này thì danh tính của cử tri (ví dụ: nhƣ số định danh) không cần phải ẩn đi, vì số định danh cử tri và lá phiếu đã bị xáo trộn.

Với kỹ thuật này, cuộc bỏ phiếu đảm bảo đƣợc bí mật và kiểm soát đƣợc kết quả bỏ phiếu.

3.3.5.2. Kỹ thuật trộn các lá phiếu

1/. Giai đoạn bỏ phiếu:

Giả sử có n cử tri ghi ý kiến của mình vào lá phiếu, ban kiểm phiếu gồm m

ngƣời.

CT sử dụng khóa công khai của m ngƣời để mã hóa lá phiếu của mình. Nhƣ vậy mỗi cử tri phải mã hóa lá phiếu m lần (m bậc)

2/. Giai đoạn kiểm phiếu:

Ngƣời kiểm phiếu 1: Có n lá phiếu đã mã hóa.

- Anh ta chỉ giữ 1 khóa giải mã của mình nên chỉ giải mã bậc 1, không thể biết đƣợc nội dung lá phiếu nhƣng có thể biết ai đã gửi lá phiếu đó

- Sau khi giải mã bậc 1, anh ta hoán vị các lá phiếu đó một cách ngẫu nhiên. - Anh ta gửi hoán vị này cho các cử tri, họ sẽ biết hành trình của các lá phiếu để kiểm tra kết quả có đúng nhƣ lựa chọn của họ hay không.

- Mặt khác anh ta chuyển hoán vị các lá phiếu trên cho ngƣời kiểm phiếu thứ 2

Ngƣời kiểm phiếu 2: Thực hiện tƣơng tự các công việc nhƣ ngƣời kiểm phiếu 1. - Tức là giải mã bậc 2 cho các lá phiếu. Hoán vị các lá phiếu này một cách ngẫu nhiên gửi chúng cho ngƣời kiểm phiếu số 3

- Ngƣời kiểm phiếu tiếp theo sẽ thực hiện các việc tƣơng tự nhƣ ngƣời kiểm phiếu trƣớc đó.

Ngƣời kiểm phiếu thứ m: Nhận đƣợc toàn bộ các phiếu với đầy đủ nội dung. - Do thứ tự của các lá phiếu đã đƣợc thay đổi nên ngƣời kiểm phiếu 1 không nhận ra lá phiếu của ai mặc dù trƣớc đây anh đã biết [4].

3.3.5.3. Ví dụ “Trộn các lá phiếu” : + Có ba ứng cử viên: 1. Nguyễn Văn A 2. Đỗ Văn B 3. Lê Thị C + Có ba cử tri là : CT1, CT2, CT3

+ Ban kiểm phiếu gồm ba ngƣời là: KP1, KP2, KP3 Cuộc bỏ phiếu chọn một trong ba ngƣời

Ban kiểm phiếu dùng hệ mã hóa RSA cho việc mã hóa và giải mã nội dung lá phiếu.Mỗi thành viên trong ban kiểm phiếu đều có một khóa công khai b và một khóa bí mật a.

Cử tri sẽ dùng ba khóa công khai b để mã hóa ba lần lá phiếu của mình.

* Công việc chuẩn bị của ban kiểm phiếu :

+ Kiểm phiếu 1 chọn p1 = 3, q1 = 17  n1 = 51, (n1) = 32 Chọn b1 = 13 ngẫu nhiên nguyên tố cùng nhau với (n1)

Tìm a1=5 là nghịch đảo của b1 theo công thức a*b=1mod((n1)). Công khai (n1,b1) bí mật a1.

+ Kiểm phiếu 2 chọn p2 = 17, q2 = 31  n2 = 527, (n2) = 480 Chọn b2 = 91 ngẫu nhiên nguyên tố cùng nhau với (n2)

Tìm a2=211 là nghịch đảo của b1 theo công thức a*b=1mod(n). Công khai (n2,b2) bí mật a2.

+ Kiểm phiếu 3 chọn p3 = 577, q3 = 673  n3 = 388321, (n3) = 387072 Chọn b3 = 107 ngẫu nhiên nguyên tố cùng nhau với (n3)

Tìm a3=7235 là nghịch đảo của b1 theo công thức a*b=1mod(n).Công khai (n3,b3) bí mật a3

* Công việc của cử tri:

Bƣớc 1: Ghi nội dung lá phiếu. CT dùng hệ cơ số 5 để biểu diễn: + CT1 chọn ông A ông B tƣơng ứng với lựa chọn 1 và 2 Lá phiếu của cử tri 1 có dạng là v1 = 1*50 + 2*51 = 11 + CT 2 chọn ông A bà C tƣơng ứng với lựa chọn 1 và 3 Lá phiếu của cử tri 1 có dạng là v1 = 1*50 + 3*51 = 17 + CT 3 chọn ông B bà C tƣơng ứng với lựa chọn 2 và 3 Lá phiếu của cử tri 1 có dạng là v1 = 2*50 + 3*51 = 26 Bƣớc 2: Mã hóa nội dung lá phiếu

+ CT mã hóa lá phiếu của mình bằng khóa công khai của ba ngƣời kiểm phiếu. Do không gian thực hiện các phép tính của các thành viên trong ban kiểm phiếu là khác nhau (Tùy thuộc vào số n họ chọn) nên việc mã hóa lá phiếu theo thứ tự từ thấp đến cao của n (Bởi vì kết quả mã hóa thực hiện trong không gian lớn thì không

Trong ví dụ trên ta có n1<n2<n3 nên việc mã hóa lá phiếu theo thứ tự bằng khóa công khai của KP1, KP2 và KP3

+ CT1 mã hóa lá phiếu 11 thành 1113 mod 51 = 41 mã hóa tiếp thành 4191 mod 527 = 320 mã hóa tiếp thành 320107 mod 388321= 237827

Đây là giá trị lá phiếu sẽ đƣợc gửi tới ban kiểm phiếu

+ CT2 mã hóa lá phiếu 17 thành 1713 mod 51 = 17 mã hóa tiếp thành 1791 mod 527 = 17 mã hóa tiếp thành 17107 mod 388321= 328336

Đây là giá trị lá phiếu sẽ đƣợc gửi tới ban kiểm phiếu

+ CT3 mã hóa lá phiếu 26 thành 2613 mod 51 = 8 mã hóa tiếp thành 891 mod 527 = 70 mã hóa tiếp thành 70107 mod 388321= 370057

Đây là giá trị lá phiếu sẽ đƣợc gửi tới ban kiểm phiếu

Danh sách các lá phiếu đã đƣợc mã hóa nhƣ sau: {237827, 328336, 370057} * Công việc giải mã phiếu của ban kiểm phiếu:

Việc giải mã sẽ đƣợc thực hiện theo thứ tự ngƣợc lại với việc mã hóa.

Trong ví dụ trên do n1<n2<n3 nên việc giải mã lã phiếu theo thứ tự bằng khóa bí mật của KP3, KP2 và cuối cùng bằng khóa bí mật của KP1.

KP3 giải mã bậc 1:

Anh ta biết ai đã gửi những lá phiếu đã mã hóa đó.

Đó là những lá phiếu đã đƣợc mã hóa bằng khóa công khai của ba ngƣời kiểm phiếu nên anh ta không thể tự mình giải mã cả ba lần để biết nội dung lá phiếu

+ KP3 giải mã bậc 1: bằng khóa a3 = 7235 nhƣ sau Giải mã phiếu CT1: 2378277235mod388321 = 320 Giải mã phiếu CT2:3283367235mod388321 = 17 Giải mã phiếu CT3:3700577235mod388321 = 70

KP3 thu đƣợc danh sách các lá phiếu sau lần giải mã bậc 1 là {320,17,70} KP3 hoán vị danh sách này một cách ngẫu nhiên ví dụ thành {17,320,70} Danh sách này đƣợc chuyển đến ngƣời kiểm phiếu KP2

+ KP2 giải mã bậc 2: bằng khóa a2 =211 nhƣ sau 17211 mod 527 = 17

KP2 thu đƣợc danh sách các lá phiếu sau lần giải mã bậc 2 là {17,41,8} KP2 hoán vị danh sách này một cách ngẫu nhiên ví dụ thành {8,41,17} Danh sách này đƣợc chuyển đến ngƣời kiểm phiếu KP1

+ KP1 giải mã bậc 3 bằng khóa a1 = 5 nhƣ sau: 85 mod 51 = 26

415 mod 51 = 11 175 mod 51 = 17

KP1 thu đƣợc danh sách các lá phiếu sau lần giải mã bậc 3 là {26, 11, 17} Đó là sự lựa chọn của các cử tri.

Chương 4. THỬ NGHIỆMCHƢƠNG TRÌNH KÝ MÙ RSA

4.1. BÀI TOÁN LẬP TRÌNH

Chƣơng trinh đƣợc viết theo thuật toán ký số mù RSA đƣợc viết bằng ngôn ngữ lập trình C# trên nền .NET 3.5. Gồm có hai chức năng chính: chắc năng thứ nhất cho phép ký mù lên một số nguyên, chức năng thứ hai cho phép ký mù lên một văn bản ngắn. Cụ thể về các chức năng con của từng chức năng chinh nhƣ sau:

+ Cho phép tạo khóa + Làm mù thông điệp

+ Ký lên thông điệp đã làm mù + Xóa mù

4.2. CẤU HÌNH HỆ THỐNG 4.2.1. Yêu cầu phần cứng 4.2.1. Yêu cầu phần cứng

Bộ xử lý: Intel Pentium lớp 133 MHz trở lên

RAM: 128 MB trở lên

Không gian đĩa cứng cần thiết để cài đặt: 600 MB

Không gian đĩa cứng yêu cầu: 370 MB

Video: 800 x 600, 256 màu

4.2.2. Yêu cầu phần mềm

-Để chạy chƣơng trình này thì máy tính cần đƣợc cài đặt Microsoft.NET Framework 3.5 trở lên.

- Hệ điều hành: Windows Vista//Server 2008/7/8/Server 2012.

4.3. GIỚI THIỆU

Để khởi động chƣơng trình ta nhấn mở tệp chƣơng trình có tên là: WindowsFormApplication1.exe trong thƣ mục chương trình đã biên dịch nhƣ trong hình 4.1.

Hình 4.1.Hướng dẫn khởi động chương trình ký mù RSA

Giao diện chƣơng trình ký mù RSA xuất hiện gồm 2 menu tƣơng ứng với 2 chức năng chính: Ký mù trên một số bất kỳ và ký mù trên một văn bản.

* Chức năng ký mù lên một số có các chức năng con như sau:

- Tạo khóa: Cho phép tạo khóa (bí mật, công khai).

- Làm mù: Cho phép làm mù thông điệp là một số nguyên - Ký mù: Cho phép lý lên thông điệp đã đƣợc làm mù

- Tách chữ ký: Cho phép tách chữ ký ra khỏi số đã đƣợc ký mù. - Xóa mù: Cho phép xóa mù để lấy lại bản rõ

Khi nhấp vào menu ký mù trên một sốxuất hiện giao diện nhƣ trong hình 4.2:

* Chương trình ký mù lên một văn: bản gồm có 5 chức năng con nhƣ sau: + Tạo khóa: Chức năng này cho phép tạo khóa bí mật và công khai.

+ Làm mù văn bản: Chức năng này cho phép làm mù văn bản + Ký mù: Chức năng này cho phép Ký lên văn bản đã đƣợc làm mù + Tách chữ ký: Cho phép tách chữ ký ra khỏi văn bản đã đƣợc Ký mù

+ Xóa mù: Chức năng này cho phép xóa mù văn bản đã đƣợc tách chữ ký để lấy lại bản rõ.

4.4. MÔ TẢ HOẠT ĐỘNG

4.4.1. Chức năng ký mù lên một số 1/. Chức năng tạo khóa: 1/. Chức năng tạo khóa:

Bƣớc 1: Nhập vào hai số nguyên tố p và q

Bƣớc 2: Nhấn vào nút n=p*q= chƣơng trình sẽ tự động tính toán và xuất ra giá trị n.

Bƣớc 3: Nhấn vào nút Pn=(p-1)(q-1)= chƣơng trình sẽ tự động tính toán và xuất ra giá trị (n).

Bƣớc 4: Nhập khóa công khai b sao cho phải nguyên tố cùng nhau với (n), nếu nhập sai chƣơng trình sẽ thông báo “khong nguyen to cung nhau”.

Bƣớc 5: Nhấn vào nút tạo khóa bí mật a = chƣơng trình sẽ xuất ra giá trị khóa bí mật a.

2/. Chức năng làm mù:

Bƣớc 1: Nhập số cần ký x

Bƣớc 2: Nhập khóa công khai bchính là khóa công khai đã chọn khi tạo khóa Bƣớc 3: Nhập số rngẫu nhiên sao cho nguyên tố cùng nhau với n, nếu nhập sai chƣơng trình sẽ thông báo “khong nguyen to cung nhau”.

Bƣớc 4: Nhấn vào nút làm mù số để tiến hành làm mù và thu đƣợc số mù nhƣ trong hình 4.4:

Hình 4.4. Làm mù số cần ký

3/. Chức năng ký mù:

Bƣớc 1: Nhập số mù cần ký u

Bƣớc 2: Nhập khóa bí mật a chính là khóa bí mật đã tạo trong mục tạo khóa. Bƣớc 3: Nhập số n đã đƣợc tính trong bƣớc tạo khóa

Bƣớc 4: Nhấn vào nút ký số mù để tiến hành ký lên số mù u và thu đƣợc kết quả ký v nhƣ trong hình 4.5.

Hình 4.5. Ký mù lên một số

4/. Chức năngtách chữ ký và xóa mù

Bƣớc 1: Nhập kết quả ký mù v, số ngẫu nhiên r và tích hai số nguyên tố n.

Bƣớc 2: Nhấn vào nút lấy lại chữ ký chƣơng trình sẽ xuất ra giá trị số của chữ ký Bƣớc 3: Nhấn vào nút lấy lại số rõ chƣơng trình sẽ xóa mù để lấy lại số rõ

4.4.2. Chức năng ký mù lên một văn bản

Giao diện chính của chức năng ký mù RSA lên thông điệp dạng văn bảnđƣợc thể hiện nhƣ hình 4.7.

Hình 4.7. Giao diện của chức năng ký mù lên văn bản

1/. Chức năng tạo khóa:

Bƣớc 1: Nhấn vào menu tạo khóa để tiến hành tạo khóa xuất hiện giao diện cho phép tạo khóa nhƣ trong hình 4.8.

Bƣớc 2: Nhập hai số nguyên tố p và q

Bƣớc 3: Nhấn vào nút tính n và tính (p-1)(q-1) để tính n và (n)

Bƣớc 4: Nhập khóa công khai b sao cho nguyên tố cùng nhau với (n), nếu nhập

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu, nghiên cứu một số chữ ký đặc biệt dùng trong bỏ phiếu điện tử 04 (Trang 56)