Chƣơng 2 CƠ SỞ TOÁN HỌC TRONG BẦU CỬ ĐIỆN TỬ
2.5. Chia sẻ bí mật
2.5.1. Khái niệm chia sẻ bí mật
Thông tin quan trọng (Tin gốc) cần giữ bí mật, không nên trao cho một ngƣời nắm giữ, mà phải “chia” Thông tin đó thành nhiều mảnh và trao cho mỗi ngƣời giữ một hay một số mảnh. Thông tin gốc chỉ có thể đƣợc xem lại khi mọi ngƣời giữ các mảnh tin đều nhất trí. Các mảnh đƣợc “khớp lại” để đƣợc Tin gốc.
Ví dụ ngân hàng có một két bạc phải mở hàng ngày. Ngân hàng có 3 thủ quỹ kinh nghiệm, nhƣng họ không tin ngƣời nào. Bởi vậy họ cần xây dựng một hệ thống sao cho bất kỳ 2 thủ quỹ nào cũng có thể mở đƣợc két bạc, nhƣng riêng từng ngƣời một thì khó thể mở đƣợc. Vấn đề này có thể đƣợc giải quyết bằng phƣơng pháp “Chia sẻ bí mật”. Đó là cơ chế “Chia sẻ bí mật” “2 trong 3”.
Phƣơng pháp “Chia sẻ bí mật” đƣợc thể hiện bằng “sơ đồ” chỉ rõ cách thức “Chia sẻ bí mật” và cách thức “khớp lại” các mảnh bí mật.
Sơ đồ “Chia sẻ bí mật” dùng để chia sẻ “tin mật” cho n thành viên, sao cho chỉ những tập con “hợp thức” các thành viên mới có thể khôi phục lại “tin mật”, còn lại, bất kỳ tập con “không hợp thức” các thành viên thì khó thể làm đƣợc điều đó.
Ví dụ: “chìa khóa” mở két bạc là “chìa khóa số” (chìa khóa gốc), đƣợc chia thành 3 mảnh khóa. Mỗi thủ quĩ chỉ đƣợc giữ 1 mảnh khóa, mảnh khóa này không thể mở đƣợc két bạc. Khi 2 trong 3 ngƣời nhất trí mở két bạc, họ khớp 2 mảnh khóa của họ với nhau, sẽ nhận đƣợc chìa khóa gốc để mở két bạc.
2.5.2. Giao thức “Chia sẻ bí mật” Sharmir a) Khái niệm Sơ đồ ngƣỡng A(t, m) a) Khái niệm Sơ đồ ngƣỡng A(t, m)
Cho t, m là các số nguyên dƣơng, t ≤ m. Sơ đồ ngƣỡng A(t, m) là phƣơng pháp phân chia khoá K cho một tập P gồm m thành viên Pi , sao cho t thành viên bất kỳ có thể tính đƣợc giá trị K, nhƣng không một nhóm gồm (t-1) thành viên nào có thể làm đƣợc điều đó.
Ví dụ có m =3 thủ quĩ giữ két bạc. Hãy xây dựng sơ đồ “chia sẻ bí mật”, sao cho t = 2 thủ quĩ nào cũng có thể mở đƣợc két bạc, nhƣng từng ngƣời một riêng rẽ thì khó thể. Đó là sơ đồ ngƣỡng A(2, 3).
Cho đơn giản ta xem ngƣời phân phối khóa D không thuộc nhóm P. Khi D muốn phân chia khoá K cho các thành viên trong P , anh ta sẽ cho mỗi thành viên một thông tin “cục bộ” nào đó về K, đƣợc gọi là các “mảnh khóa”. Các mảnh khóa đƣợc phân phát một cách bí mật, để không một thành viên nào biết đƣợc mảnh khóa của thành viên khác. Sơ đồ ngƣỡng của Sharmir đƣợc đƣa ra năm 1979.
b) Chia sẻ khóa bí mật K
Khởi tạo:
(1)D chọn số nguyên tố p, và m phần tử xi (1≤ i ≤ m) khác nhau - khác 0 trong Zp. D trao giá trị xi cho mỗi thành viên Pi, xi là công khai.
Phân phối mảnh:
(2)Để chia mảnh khoá K Zp , D chọn bí mật, ngẫu nhiên t-1 phần tử của Zp là a1, …, a t-1. (3)Lập đa thức trong Z p là : P(x) = K + 1 1 t j aj xj mod p
(4)Với 1≤ i ≤ m, D tính yi = P(xi), và trao mảnh yi cho Pi
Chú ý đa thức P(x) có bậc tối đa là t-1, thành phần hằng số là khoá bí mật K. Mỗi thành viên Pi sẽ có một điểm (xi, yi) trên đa thức.
c) Khôi phục khóa bí mật K
Một tập con gồm t thành viên có thể khôi phục lại khoá nhƣ thế nào. Có hai phƣơng pháp: Giải hệ phƣơng trình tuyến tính và dùng công thức nội suy Lagrangre.
Phương pháp 1: Giải hệ phƣơng trình tuyến tính khôi phục K. Giả sử rằng các thành viên Pi muốn xác định khoá K.
Họ biết rằng , 1≤ j ≤ t, trong đó P(x) Zp [x] là đa thức bí mật do phân phối khóa D chọn.
Vì P(x) có bậc lớn nhất là (t-1) nên có thể viết :
P(x) = a0 + a1x + …+ at-1x t-1
trong đó các hệ số a0 , a1 , … a t-1 là chƣa biết của Zp, còn a0 = K là khoá.
Vì , nên ta có hệ phƣơng trình tuyến tính t ẩn số, t phƣơng trình. Ở đây các phép tính số học đều thực hiện trên Z p. Nếu các phƣơng trình độc lập tuyến tính, thì sẽ có một nghiệm duy nhất, trong đó giá trị khoá a0 = K.
Phương pháp 2: Dùng công thức nội suy Lagrangre khôi phục K.
∑ ∏ Có các tính chất nhƣ đa thức P(x) ở trên: , 1≤ j ≤ t. ∑ ∏ Nếu ta đặt ∏ thì: ∑ 2.6. Logarit rời rạc
2.6.1 Các khái niệm cơ sở Bài toán logarithm rời rạc: Bài toán logarithm rời rạc:
Giả sử G là một nhóm cyclic có phần tử sinh là g, cho h là một phần tử của G, hãy tìm logarithm cơ số g của h trong G: loggh (mod|G|).
Nghĩa là ta phải tìm phần tử x trong G thỏa mãn h ≡ gx (mod|G|).
Bài toán logarithm rời rạc có vai trò rất lớn trong ứng dụng của mật mã. Đặc biệt quan trọng trong trƣờng hợp * ) (q F G , với l p q , p là số nguyên tố, lN, tức là
trong trƣờng Galois, cũng nhƣ trong trƣờng hợp G là một nhóm điểm của đƣờng cong Elliptic trong trƣờng hữu hạn.
Ví dụ, G = Z5*, và phần tử sinh là 2, khi đó logarithm rời rạc của 3 là 3 bởi vì: 23 ≡ 3 mod 5.
2.6.2 Thuật toán bƣớc Baby và bƣớc Giant của Shank
Cho p là một số nguyên tố, thuật toán bƣớc Baby bƣớc Giant của Shank là một thuật toán tính logarithm rời rạc của số nguyên h thuộc Z*p với cơ số g và theo modulo p. Thuật toán này nhanh hơn thuật toán vét cạn với số phép toán trung bình là
( log )
O p p .
Ý tƣởng của thuật toán nhƣ sau:
Giả sử m p, khi đó nếu x là logarithm rời rạc của h ta có thể viết x = mq+r với q là số nguyên nào đó và 0 r m . Bởi vậy, ta có đẳng thức:
h = gx = gmqgr (mod p) điều này có nghĩa là :
h(g-m)q = gr (mod p). Với phân tích nhƣ vậy, chúng ta có chiến lƣợc nhƣ sau:
- Tính tất cả các lũy thừa của g theo modulo p: g0, g1, …, gm-1 (mod p), - Trƣớc hết, tính g-m
(mod p), tiếp theo, ta tính h(g-m)q (mod p) với q = 0, 1, 2, … cho đến khi xuất hiện q thỏa mãn h(g-m)q ≡ qr (mod p) với 0 r m nào đó. Khi đó, logarithm rời rạc của h trong *
p
Z theo cơ số g bằng x = mq+r.
Ví dụ: Chọn p = 31, và ta có thể kiểm tra g = 3 là phần tử nguyên thủy của * 31
Z . Giả sử ta cần tìm logarithm rời rạc của h=6.
Các bƣớc thực hiện nhƣ sau:
- Tính m p6 và tính 6 lũy thừa của g: go = 1, g1 = 3, g2 = 3, g3 = 27, g4 = 81 ≡ 19(mod31), g5 = g4 g ≡ 19*3 ≡ 26(mod31).
- Tiếp theo, chúng ta tính g-1 = 3-1 (mod31). Áp dụng thuật toán Euclide mở rộng ta có: 3-1 (mod 31) = 21. Sau đó, ta tính đƣợc 3-6 (mod 31) = 2.
Đến đây, ta tính h(g-m)q = 6.2q với các giá trị của q chạy từ 0 tăng lên: h(g-m)0 = 6.20 = 6, h(g-m)1 = 6.21 = 12, h(g-m)2 = 6.22 = 24, h(g-m)3 = 6.23 ≡ 17 (mod 31), h(g-m)4 = 6.24 ≡ 3 (mod 31),
Đến đây ta thấy h(g-m)4 = g1 (mod p). Điều nay có nghĩa là h ≡ g4m+1 ≡ g4.6+1 ≡ g25. Vậy logarithm rời rạc của h = 6 là 25.
2.6.3 Thuật toán Pollig – Hellman
Giả sử rằng:
∏
ở đây các pi là các số nguyên tố khác nhau. Giá trị alog đƣợc xác định duy nhất theo modulo n.
Trƣớc hết ta nhận thấy, nếu ta có thể tính đƣợc mod ci
i
a p với mọi i thỏa mãn 1 i k, thì ta có thể tính a mod n bằng cách áp dụng định lý phần dƣ Trung quốc.
Giả sử q là số nguyên tố thỏa mãn: n ≡ 0 (mod qc); và n ≠ 0 (mod qc+1).
Chúng ta sẽ trình bày cách tính giá trị: x = a mod qc, với 0 x qc-1, chúng ta
biểu diễn x theo cơ số q theo cách sau:
1 0 c i i i x a q , với 0 ai q-1 , 0 ≤ i ≤ c-1. Chúng ta có thể biểu diễn a theo cách nhƣ sau: a = x + sqc với s nguyên nào đó. Bởi vậy, chúng ta có thể biểu diễn
1 0 . c i c i i a a q sq
Bƣớc đầu tiên của thuật toán là tính a0. Để tính a0 ta sử dụng nhận xét sau:
0 / / a n q n q (1) Dùng hệ thức (1) ta có thể dễ dàng tính đƣợc a0 bằng cách nhƣ sau: Trƣớc tiên tính: / 2 , ,... n q cho đến khi tìm đƣợc / i n q ,
Với i ≤ q-1 nào đó. Khi điều này xảy ra, chúng ta biết ngay a0 = i.
Nhƣ vậy, với c = 1 ta đã làm xong. Bây giờ ta xét với c > 1, chúng ta tiến hành xác định a , …, a . Quá trình này tƣơng tự nhƣ khi xác định a
Đặt 0 = và xác định: 1 0 1 1 (a a q ... aj qj ) j
với 1≤ j ≤ c-1. Chúng ta sử dụng biểu thức nhận đƣợc từ việc tổng quát quát hóa hệ thức (1) nhƣ sau : 1 / / j a n qj n q j (2) Khi j = 0 thì từ (2) trở thành (1). Khi đã biết j, ta dễ dàng tính aj từ hệ thức (2).
Bằng công thức truy hồi khi biết aj và j ta có thể tính j+1 :
1 j j a q j j (3) Do đó ta có thể tính a0, , ,1 a1 2,...,c1,ac1 bằng cách áp dụng (1) và (2). Sau đây là trình bày dƣới dạng giả mã của thuật toán Pohlig – Hellman.
Thuật toán Pohlig – Hellman(G, n, , , q, c)
j←0 j← While j≤c-1 1 / / 1 1 j j j n q j in q j a q j j find i suchthat do a i j j Reurn (a0, …, ac-1)
Ví dụ: Cho số nguyên tố p = 8101, và phần tử sinh của Z8101 là a = 6. Chúng ta cần tìm x thỏa mãn ax = 7531 mod 8101.
Chúng ta dễ dàng phân tích p - 1 = 8100 = (22) (34) (52), là các nhân tử nguyên tố nhỏ. Chúng ta sẽ xác định số x2 ≡ x mod (22), x3 ≡ x mod (34) and x5 ≡ x mod (52).
Xác định x2: Do x2 là một số tính theo mod 4, nên ta có x2 = c0 + c1 (2) với các hệ số bằng 0 hoặc 1.
Chúng ta xác định các hệ số này nhƣ sau:
7531(p-1)/2 = 75314050 = -1 và số này = ac0 (p-1)/2, chúng ta có c0 = 1. Bây giờ ta chia 7531 cho ac
0 để nhận đƣợc: 7531(a-1) = 7531(6751) = 8006 mod p
8006(p-1)/4 = 80062025 = 1 và số này = ac1 (p-1)/2, từ đó c1 = 0.
Xác định x3: Do x3 tính theo mod 81, ta có x3 = c0 + c1 (3) + c2 (9) + c3 (27) với các hệ số bằng 0, 1 hoặc 2. Chúng ta có thể tính đƣợc a(p-1)/3 = 5883, và a2(p-1)/3 = 2217.
7531(p-1)/3 = 2217, vậy c0 = 2. Bây giờ ta chia 7531 cho ac
0 nhận đƣợc: 7531(a-2) = 6735 mod p. 6735(p-1)/9 = 1, vậy c1 = 0. Ta chia 6735 cho a3c1 nhận đƣợc: 6735(a0) = 6735 mod p. 6735(p-1)/27 = 2217, vậy c2 = 2.
Chia 6735 cho a9c2 nhận đƣợc 6735(a-18) = 6992 mod p. 6992(p-1)/81 = 5883, vậy c3 = 1.
x3 = 2 + 0(3) + 2(9) + 1(27) = 47.
Xác định x5: Do x5 tính theo mod 25, ta có x5 = c0 + c1 (5) với các hệ số bằng 0, 1, 2, 3 hoặc 4. Chúng ta tính đƣợc a(p-1)/5 = 3547, a2(p-1)/5 = 356, a3(p-1)/5 = 7077, a4(p-1)/5 = 5221.
7531(p-1)/5 = 5221, vậy c0 = 4. Tachia 7531 cho ac0 đi đến:
7531(a-4) = 7613 mod p. 7613(p-1)/25 = 356, vậy c1 = 2.
x5 = 4 + 2(5) = 14.
Xác định x: Chúng ta sử dụng định lý phần dƣ Trung quốc để tìm nghiệm của hệ phƣơng trình đồng dƣ sau: x ≡ 1 mod 4 x ≡ 47 mod 81 x ≡ 14 mod 25. M1 = 8100/4 = 2025; y1 = M1-1 mod 4, y1 = 1 M2 = 8100/81 = 100; y2 = M2-1 mod 81, y2 = 64. M3 = 8100/25 = 324; y3 = M3-1 mod 25, y3 = 24. Kết luận chƣơng 2
Trong chƣơng hai, tác giả đã giới thiệu cơ bản về cơ sở toán học, các hệ mã hóa đang đƣợc sử dụng phổ biến cùng các thuật toán ký số, hàm băm, lƣợc đồ chia sẻ bí mật phục vụ cho việc mã hóa thông tin, an toàn thông tin. Ở chƣơng tiếp theo, tác giả đi sâu vào nghiên cứu các thuật toán nền tảng trong bỏ phiếu điện tử và ứng dụng cơ sở lý thuyết cho mô hình bỏ phiếu điện tử. Đây là nội dung trọng tâm của luận văn.
Chƣơng 3. CÁC THUẬT TOÁN NỀN TẢNG TRONG BỎ PHIẾU ĐIỆN TỬ
Ngày nay do sự phát triển của công nghệ và nhu cầu tổng hợp nhanh kết quả bầu cử, bỏ phiếu điện tử sẽ sớm thay thế các hệ thống bầu cử truyền thống. Tuy nhiên, bỏ phiếu điện tử cũng có nhiều mối đe dọa nhƣ những lỗi lập trình (đảm bảo rằng mỗi lá phiếu đƣợc tính), hay kết quả bầu cử có thể dễ dàng sửa đổi, mua chuộc bởi các ứng cử viên. Từ đây vấn đề an toàn thông tin đƣợc đặt lên hàng đầu. Cách giải quyết duy nhất cho vấn đề bảo mật thông tin là mã hóa từng phiếu bầu để không ai dự đoán đƣợc kết quả bầu cử cho đến giai đoạn kiểm phiếu, tại giai đoạn này mới giải mã các lá phiếu.
Do vậy, với việc giúp tăng tính dân chủ và tính chính xác trong bầu cử, rất có thể trong một ngày không xa nhiều cuộc bầu cử sẽ đƣợc thực hiện qua hệ thống bầu cử dùng mật mã. Có rất nhiều hệ thống bầu cử trên thế giới sử dụng các mô hình khác nhau. Trong chƣơng này, tôi xin giới thiệu 3 thuật toán nền tảng trong bầu cử điện tử: hệ mã hóa đồng cấu, hệ mã hóa trên đƣờng cong elliptic và mô hình chữ kí vòng.
3.1. Hệ thống bầu cử
3.1.1. Khái niệm bầu cử điện tử
Bầu cử điện tử là một cuộc “bầu cử” đƣợc thực hiện từ xa trên mạng máy tính thông qua các phƣơng tiện “điện tử” nhƣ máy tính cá nhân, điện thoại di động… Với phƣơng pháp bầu cử mới này các cử tri không cần nhìn thấy nhau, không cần trực tiếp đến địa điểm tổ chức bầu cử nhƣng vẫn có thể tham gia bầu cử đƣợc.
Bầu cử điện tử cũng nhƣ tất cả các cuộc bỏ phiếu khác phải đảm bảo các yêu cầu về tính bí mật, tính toàn vẹn và xác thực của lá phiếu; mỗi cử tri chỉ đƣợc bầu một lần, mọi ngƣời đều có thể kiểm tra tính đúng đắn của cuộc bầu cử, cử tri không thể chỉ ra mình đã bỏ phiếu cho ai để tránh cơ hội bán phiếu bầu.
Bầu cử điện tử mang lại rất nhiều lợi ích :
- Tiết kiệm đƣợc tiền của, công sức, thời gian của nhà nƣớc và của nhân dân. - Nhanh chóng, thuận tiện, an toàn, trung thực .
- Đảm bảo cho việc bầu cử diễn ra khách quan, dân chủ.
3.1.2. Mô hình bài toán bỏ phiếu điện tử Các thành phần trong ban bỏ phiếu: Các thành phần trong ban bỏ phiếu:
- Ban điều hành (ĐH) - Ban đăng kí (ĐK) - Ban kiểm tra (KT) - Ban kiểm phiếu (KP)
Quy trình bầu cử điện tử:
(1)Đăng kí bỏ phiếu: Cử tri sử dụng thông tin cá nhân của mình để đăng ký tham gia bầu cử. Ban ĐK sẽ kiểm tra tính hợp lệ của cử tri. Nếu hợp lệ (đúng thông tin trong cơ sở dữ liệu và mới chỉ đăng ký lần đầu) thì tiến hành phát mã cử tri. (2)Bỏ phiếu: Chỉ những cử tri có mã cử tri hợp lệ mới đƣợc tham gia bầu cử và chỉ
đƣợc bầu cử duy nhất một lần. Cử tri sử dụng mã cử tri hợp lệ để tham gia bỏ phiếu. Ban ĐH sẽ tiến hành mã hóa là phiếu và kí trƣớc khi gửi đến ban KT (3)Kiểm phiếu: Ban KP sẽ tính toán dựa vào các là phiếu hợp lệ để tổng hợp kết
quả, sau đó công bố kết quả cuộc bầu cử.
3.1.3. Yêu cầu của hệ thống bầu cử
Một hệ thống bỏ phiếu điện tử phải đáp ứng đƣợc các yêu cầu sau [3]: