Giao thức “Chia sẻ bí mật” Sharmir

Một phần của tài liệu Nghiên cứu và thử nghiệm mô hình bỏ phiếu thăm dò dư luận luận văn ths công nghệ thông tin 60 48 01 04 pdf (Trang 47)

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 . (adsbygoogle = window.adsbygoogle || []).push({});

Ý 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 p6 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ị alog đƣợ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. (adsbygoogle = window.adsbygoogle || []).push({});

Đặ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,...,c1,ac1 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

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. (adsbygoogle = window.adsbygoogle || []).push({});

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]: - Bảo đảm quyền đƣợc bầu cử:

+ Chỉ ngƣời có quyền bầu cử mới đƣợc tham gia bầu cử

+ Mỗi cử tri chỉ đƣợc bầu cử một lần duy nhất: Mỗi lá phiếu chỉ có một định danh duy nhất

- Bảo đảm tính bí mật:

+ Không thể biết đƣợc nội dung lá phiếu nếu không đƣợc cấp quyền hạn: lá phiếu phải đƣợc mã hóa.

+ Không thể biết đƣợc lá phiếu đó là của ai, trừ cử tri sở hữu nó: làm mù lá phiếu, chia sẻ khóa bí mật, trộn phiếu bầu,…

- Bảo đảm kết quả chính xác:

+ Ban kiểm phiếu hay cử tri có thể kiểm tra đƣợc kết quả kiểm phiếu (Không cần giải mã vẫn tính đƣợc kết quả bầu cử sử dụng mã hóa đồng cấu ElGamal).

3.1.4. Những vấn đề cần giải quyết

- Cƣỡng chế: Cử tri có thể bị cƣỡng chế bỏ phiếu cho một ứng cử viên nhất định vì bị ép buộc. Trong trƣờng hợp này cách giải quyết là cử tri không đƣợc liên kết với phiếu bầu của mình.

- Hối lộ: Cử tri có thể bị mua chuộc để bỏ phiếu cho một ứng cử viên nào đó và có thể là nghĩa vụ bầu cử dƣới sự giám sát của ngƣời hối lộ. Để giải quyết vấn đề này, các cử tri trong hệ thống này không thể chứng minh phiếu bầu của mình, khi đó ngƣời mua chuộc không biết các phiếu bầu là cho mình không.

- Truy cập trái phép: Chỉ có ngƣời quản trị hay đội ngũ lập trình đáng tin cậy mới có thể theo dõi quá trình bầu cử, họ cũng không thể thay đổi kết quả bầu cử trong các cơ sở dữ liệu trong quá trình bỏ phiếu.

3.2. Hệ mã hóa đồng cấu 3.2.1. Định nghĩa 3.2.1. Định nghĩa

3.2.1.1. Định nghĩa đồng cấu trong toán học

Một phần của tài liệu Nghiên cứu và thử nghiệm mô hình bỏ phiếu thăm dò dư luận luận văn ths công nghệ thông tin 60 48 01 04 pdf (Trang 47)