Các sơ đồ chia sẻ bí mật

Một phần của tài liệu Nghiên cứu vấn đề chia sẻ bí mật và ứng dụng trong bỏ phiếu điện tử (Trang 51 - 78)

2.2.1. Sơ đồ ngƣỡng của Sharmir

Sơ đồ ngƣỡng là một sơ đồ chia sẻ bí mật đặc biệt.

Định nghĩa sơ đồ ngưỡng A(t, w)

Cho t, w là các số nguyên dƣơng, t≤w. Một sơ đồ ngƣỡng A(t, w) là một phƣơng pháp phân chia khoá K cho một tập gồm w thành viên (ký hiệu là P) 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 đó.

Giá trị K đƣợc chọn bởi một thành viên đặc biệt gọi là ngƣời phân phối (D). Ta xem rằng DP. Khi D muốn phân chia một khoá K cho các thành viên trong P, D sẽ cho mỗi thành viên một thông tin cục bộ nào đó đƣợc gọi là các mảnh. Các mảnh đƣợ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 đã trao cho thành viên khác.

Sơ đồ ngưỡng A(t, w) có tính chất như sau:

B: tập các thành viên giữ các mảnh.

P = {Pi : 1≤i≤w}: tập w thành viên.

K : tập khoá.

S : tập tất cả các mảnh.

Nếu |B| ≥ t thì họ phải có khả năng tính đƣợc giá trị K theo một hàm của các mảnh. Nếu |B| < t thì họ không thể tính đƣợc K.

Cách xây dựng sơ đồ ngưỡng Sharmir của D.

Pha khởi tạo

D chọn w phần tử khác nhau và khác không trong Zp và ký hiệu là xi, 1≤i≤w (ở đây yêu cầu w ≥ p+1). Với 1≤i≤w , D sẽ trao giá trị xi cho Pi. Các giá trị xi là công khai.

Phân phối mảnh

 Giả sử D muốn phân chia khoá K Zp, D sẽ chọn một cách bí mật (ngẫu nhiên và độc lập) t-1 phần tử của Zp là a1, …, at-1.

 Với 1≤i≤w, D tính: yi = a(xi) trong đó: 1

1 ( ) mod    t j j j a x K a x p

 Với 1≤i≤w, D sẽ trao mảnh yi cho Pi

Sơ đồ ngƣỡng của Sharmir đƣợc đƣa ra năm 1979. Trong sơ đồ này, D xây dựng một đa thức ngẫu nhiên a(x) có bậc tối đa là t-1. Trong đa thức này, thành phần hằng số là khoá K. Mỗi thành viên Pi sẽ có một điểm (xi, yi) trên đa thức này.

Cách khôi phục khoá K của các thành viên

Một tập con Bi chủ yếu gồm t thành viên có thể tạo lại khoá nhƣ thế nào? Điều này chủ yếu đƣợc thực hiện bằng phép nội suy đa thức. Có hai phƣơng pháp thực hiện:

Phƣơng pháp 1: Giải hệ phƣơng trình tuyến tính.

Giải hệ phƣơng trình tuyến tính t ẩn, t phƣơng trình. Giả sử rằng các thành viên t i i i P P P , ,..., 2

1 muốn xác định khoá K. Họ biết rằng

) (

j

j i

i a x

Y  1≤j≤t, trong đó a(x)  Zp[x] là một đa thức đƣợc D chọn.

Vì a(x) có bậc lớn nhất là (t-1) nên ta có thể viết: a(x) = a0+a1x+…+at-1xt-1 trong đó các hệ số a0,…,at-1 là các phần tử chƣa biết của Zp, còn a0 = K là khoá. Vì yij = a(xij), c nên B có thể thu đƣợc t phƣơng trình tuyến tính t ẩn a0,…, at-1, ở đây tất cả các phép tính số học đều thực hiện trên Zp. 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 và ta đƣợc giá trị khoá a0.

Ví dụ minh hoạ:

Giả sử rằng p = 17, t = 3, w = 15 và các toạ độ x công khai là xi = i, 1≤i≤5. Giả sử B={P1,P3,P5}sẽ kết hợp các mảnh của họ (tƣơng ứng là 8, 10, 11). Ta viết a(x) nhƣ sau: a(x)=a0+a1x+a2x2

tính a(1), a(3), a(5). Khi đó ta nhận đựơc 3 phƣơng trình tuyến tính sau trong Z17: a0+a1+a2 = 8

a0+3a1+9a2 = 10

a0+5a1+8a2 = 11

Hệ này có nghiệm duy nhất trong Z17 : a0 = 13, a1 = 10, a2 = 2 Bởi vậy khoá sẽ là : K = a0 = 13

Phƣơng pháp 2: Dùng công thức nội suy Lagrangre

Ta đã phân tích sơ đồ Shamir theo quan điểm giải hệ phƣơng trình tuyến tính trên Zp. Có một phƣơng pháp khác dựa trên công thức nội suy Lagrange cho các đa thức. Công thức nội suy Lagrange có dạng:

1 1 , ( )          t j t t i j j k t k j i i x x a x y x x

Một nhóm B gồm t thành viên có thể tính đƣợc a(x) bằng cách dùng công thức nội suy. Có thể tính đƣợc hằng số K = a(0):

Thay x = 0 vào công thức nội suy Lagrange:

1 1 ,         k k t i j j k t k j i x K y x x Giả sử ta định nghĩa 1 ,     k k i j k t k j i x b x x Khi đó: 1  t j j j K b y Ví dụ minh hoạ:

Các thành viên {P1, P3, P5} có thể tính đƣợc b1, b2, b3 theo công thức cho ở trên, chẳng hạn: 4 17 mod ) 4 ( * ) 2 ( * 5 * 3 ) )( ( 1 1 1 5 1 3 1 5 3        x x x x x x b . tƣơng tự, ta có: b2 = 3 và b3 = 11.

K = 4*8+3*10+11*11 mod 17 = 13

Kết quả này giống kết quả thu đƣợc khi làm theo cách giải hệ phƣơng trình tuyến tính mà ta không cần tìm hết các hệ số của đa thức bí mật.

Vấn đề cuối cùng trong phần này là một cấu trúc đơn giản cho các sơ đồ ngƣỡng trong trƣờng hợp đặc biệt w = t.

Có t thành viên, D muốn phân chia khoá K, anh ta thực hiện theo giao thức sau: Sơ đồ ngƣỡng A(t, t) trong Zm:

 D chọn một cách bí mật (độc lập và ngẫu nhiên) t-1 phần tử của Zm: y1,…,yt-1  D tính: 1 mod   t i j j y K y m

 Với 1≤ i ≤ t, D trao mảnh yi cho Pi

Ta thấy rằng t thành viên có thể tính K theo công thức:

1 mod  t j j K y m

2.2.2. Cấu trúc mạch đơn điệu

Một số ký hiệu:

 Ґ là tập các tập con của P mà các tập con trong Ґ là các tập con các thành viên có khả năng tính khoá.

 Ґ gọi là một cấu trúc truy nhập và các tập con trong Ґ đƣợc gọi là các tập con hợp thức.

Một sơ đồ chia sẻ bí mật là hoàn thiện nếu:

 Nếu một tập con hợp thức các thành viên BP góp chung các mảnh của họ thì họ có thể xác định đƣợc giá trị của K.

 Nếu một tập con không hợp thức các thành viên B P góp chung các mảnh của họ thì không thể xác định giá trị khoá K.

Giả sử Ґ0 là cơ sở của Ґ. Khi đó ta xây dựng công thức Boolean dạng tuyển chuẩn sau:  BҐ0 (  PiB Pi)

Ví dụ:

Nếu có một tập gồm các thành viên {P1, P2, P3, P4}trong đó: Ґ0 = {{P1, P2, P4}, {P1, P3, P4}, {P2, P3}}.

Khi đó ta sẽ thu đƣợc công thức Boolean sau: (P1P2 P4 ) (P1 P3 P4)(P2 P3)

Mỗi mệnh đề trong công thức Boolean ứng với một cổng “và” của mạch đơn điệu tƣơng ứng, phép tuyển cuối cùng ứng với cổng “hoặc”.

Thuật toán giúp cho D (ngƣời phân chia khoá) xây dựng sơ đồ chia sẻ bí mật hoàn thiện thực hiện Ґ nhƣ sau:

Thuật toán thực hiện phép gán một gia trị f(W)K cho mỗi dây W trong mạch. Thoạt đầu, dây ra Wout của mạch sẽ đƣợc gán giá trị khoá K. Thuật toán sẽ lặp lại một số lần cho đến khi mỗi dây có một giá trị gán vào nó. Cuối cùng, mỗi thành viên Pi sẽ đƣợc cho một danh sách các giá trị f(W) sao cho W là một dây vào của mạch có đầu vào xi .

Cấu trúc mạch đơn điệu

1. f(Wout) = K.

2. While tồn tại một dây W sao cho f(W) không đƣợc xác định do

3. Tìm một cổng G của C sao cho f(WG) đƣợc xác định, trong đó WG

là dây ra của G nhƣng f(W) không đƣợc xác định với bất kỳ dây nào của G.

4. if G là một cổng “hoặc” then

5. f(W) = f(WG) với mỗi dây vào W của G

6. else (G là một cổng “và”)

7. Cho các dây vào của G là W1, …, Wt

8. Chọn độc lập và ngẫu nhiên t-1 phần tử của Zm và ký hiệu chúng là: yG,1, …, yG,t-1. 9. Tính: yG,t = f(WG) -   1 1 t i yG,t-1 mod m. 10. for 1≤ i ≤ w do f(Wi) = yG,i Ví dụ một mạch đơn điệu

Hình 2.1: Phân chia khóa dựa vào mạch đơn điệu

    X1 X2 X3 X4 K a1 a2 K-a1-a2 b1 b2 K-b1-a2 c1 K-c1 K K K K

Căn cứ vào mạch đơn điệu trên ta có: 1. P1 nhận a1, b1

2. P2 nhận a2, c1 3. P3 nhận b2, K-c1

4. P4 nhận K-a1-a2, K-b1-b2

Nhƣ vậy, mỗi thành viên nhận 2 phần tử trong Zp làm mảnh của mình. Ta đi chứng minh sơ đồ trên là hoàn thiện.

Trƣớc hết ta thấy mỗi tập cơ sở có thể tính đƣợc K.

Tập con hợp thức {P1, P2, P4}có thể tính K = a1+a2+(K-a1-a2) mod m {P1, P3, P4} có thể tính K = b1+b2+(K-b1-b2) mod m {P2, P3} có thể tính K = c1+(K-c1) mod m

Nhƣ vậy, mọi tập con hợp thức đều có thể tính đƣợc K.

Với các tập con không hợp thức: ta kiểm tra các tập con không hợp thức tối đa: {P1, P2}, {P1, P3},{P1, P4}{P2, P4}{P3, P4}

Dễ dàng thấy rằng, trong mỗi trƣờng hợp K không thể tính đƣợc.

Có thể biến đổi công thức Boolean về dạng hội chuẩn để nhận đƣợc một sơ đồ khác thể hiện cùng một cấu trúc truy nhập bằng cách sử dụng một mạch khác.

Tốc độ thông tin

Bất kỳ một cấu trúc truy nhập đơn điệu nào đều có thể thực hiện đƣợc bằng một sơ đồ chia sẻ bí mật hoàn thiện. Bây giờ ta xét hiệu quả của các sơ đồ nhận đƣợc. Trong trƣờng hợp sơ đồ ngƣỡng (t,w), ta có thể xây dựng một mạch ứng với công thức Boolean dạng tuyển chuẩn có Ct

w cổng. Mảnh của mỗi thành viên sẽ là Cw-1

t-1 phần tử trong Zm. Ví dụ, với sơ đồ ngƣỡng (t,w) = (2,3) thì:

- Số cổng 1 + C2 3 = 4

- Mảnh cuả mỗi thành viên C1 2 = 2

Hình 2.2: Mạch đơn điệu thể hiện cấu trúc truy nhập

Dùng cấu trúc mạch đơn điệu rất kém hiệu quả vì sơ đồ ngƣỡng Sharmir (t,w) cho phép cung cấp khoá chia sẻ mà mỗi thành viên chỉ phải giữ 1 mảnh thông tin.

Giả sử ta có một sơ đồ chia sẻ bí mật hoàn thiện thể hiện cấu trúc truy nhập Ґ. Tốc độ thông tin đối với Pi là tỷ số:

ρi = log2|S(Pi)| | | 2 log K trong đó S(Pi) ký hiệu tập các mảnh có thể mà Pi có thể nhận đƣợc. Khi đó tốc độ thông tin (ký hiệu ρ) đƣợc xác định bằng :

ρ =min{ρi :1≤ i ≤ wi}

Định lý

Cho C là một mạch Boolean bất kỳ. Khi đó tồn tại một sơ đồ chia sẻ bí mật hoàn thiện thể hiện cấu trúc truy nhập Ґ(C) có tốc độ thông tin: ρ = max{1/ri :1≤ i ≤ w} trong đó ri ký hiệu số dây vào mang đầu vào xi.

    X1 X2 X3 K K K K

Với các cấu trúc truy nhập ngƣỡng, ta thấy rằng sơ đồ ngƣỡng Sharmir có tốc độ thông tin bằng 1 (đó là giá trị tối ƣu). Trong khi đó, sơ đồ ngƣỡng (t,w) dùng mạch Boolean dạng tuyển chuẩn chỉ có tốc độ thông tin là

) 1 / 1 ( 1   t w

Kết luận: với các sơ đồ ngƣỡng (w,t) thì dùng sơ đồ ngƣỡng Sharmir là đạt hiệu quả cao nhất, nhƣng với các sơ đồ chia sẻ bí mật tổng quát thì phƣơng pháp dùng cấu trúc mạch đơn điệu là dễ thực hiện và nếu có sự biến đổi thích hợp thì cũng đạt đƣợc hiệu quả tốt.

Cải thiện tốc độ thông tin của các mạch đơn điệu

Nếu có một tập gồm các thành viên {P1, P2, P3, P4}trong đó: Ґ0 = {{P1, P2}, {P2, P3}, {P2, P4}, {P3, P4}}.

Nếu xây dựng công thức Boolean dạng tuyển chuẩn nhƣ sau: (P1 P2) (P2 P3) (P2 P4) (P3 P4) (*) thì tốc độ thông tin đƣợc xác định: Ta biết: ρi = log2|S(Pi)| | | 2 log K  ρ = log2 k 2 log m m

= k trong đó k là số mảnh tối đa mà Pi có thể nhận đƣợc .

Theo công thức Boolean trên ta có: ρ = 1/3 Mạch đơn điệu tƣơng ứng là:

Hình 2.3: Cấu trúc mạch đơn điệu có tốc độ thông tin ρ = 1/3

Căn cứ vào mạch đơn điệu trên ta có: 1. P1 nhận a1

2. P2 nhận K-a1 , b1, c1 3. P3 nhận K-b1, d1 4. P4 nhận K-c1, K-d1

Nhƣ vậy, mỗi thành viên 2 nhận 3 phần tử trong Zp làm mảnh của mình. Đây là số mảnh tối đa nên ρ = 1/3.

Ta có thể xây dựng một mạch đơn điệu khác cũng thể hiện cấu trúc truy nhập trên nhƣng có tốc độ thông tin cao hơn (ρ = 1/2) bằng cách biển đổi công thức (*) về dạng hội chuẩn:

Theo yêu cầu ρ = 1/2  k = 2.

Điều đó có nghĩa là ta phải xây dựng mạch đơn điệu mà các đầu vào xi chỉ có thể nhận tối đa 2 giá trị.

Ta xây dựng công thức Boolean sau:

(*) (P1 P2) [P2 (P3P4)] (P3 P4) (**) Mạch đơn điệu tƣơng ứng với (**) là:

    X1 X2 X3 X4 K a1 K-a1 b1 K-d1 d1 K-b1 c1 K-c1 K K K K  K

Hình 2.4: Cấu trúc mạch đơn điệu có tốc độ thông tin ρ = 1/2

Căn cứ vào mạch đơn điệu trên ta có: 1. P1 nhận a1

2. P2 nhận K-a1 , b1 3. P3 nhận K-b1, c1 4. P4 nhận K-b1, K-c1

Nhƣ vậy, mỗi thành viên nhận tối đa 2 phần tử trong Zp làm mảnh của mình. Đây là số mảnh tối đa nên ρ = 1/2.

Sơ đồ lý tưởng

Các sơ đồ chia sẻ bí mật có tốc độ thông tin bằng 1 đƣợc gọi là các sơ đồ lý tƣởng. Sơ đồ ngƣỡng Shamir là một ví dụ về sơ đồ chia sẻ bí mật lý tƣởng. Không tồn tại sơ đồ lý tƣởng cho các cấu trúc truy nhập bất kỳ.

   X1 X2 X3 X4 K a1 a2 K-a1 c1 K-c1 K K K K  K-b1 b1 K-b1 K-b1 

2.2.3. Cấu trúc không gian vectơ Brickell

Giả sử Ґ là một cấu trúc truy nhập và cho (Zp)d là không gian vectơ của tất cả các bộ d trên Zp trong đó p là số nguyên tố và d ≥ 2. Giả sử tồn tại hàm:

Φ: P (Zp)d thoả mãn tính chất:

(1, 0. …, 0) <Φ(Pi): Pi  B>  B Ґ (*)

nói cách khác, vectơ (1, …, 0) có thể đƣợc biểu thị nhƣ một tổ hợp tuyến tính các vectơ trong tập {Φ(Pi): Pi B} khi và chỉ khi B là một tập con hợp thức.

Bây giờ, giả sử tồn tại một hàm Φ thoả mã tính chất (*) (Nói chung, việc tìm một hàm nhƣ vậy thƣờng phải dùng phƣơng pháp thử và sai, mặc dù có một số phƣơng pháp xây dựng hàm Φ thích hợp đối với một số cấu trúc truy nhập nhất định). Ta sẽ xây dựng một sơ đồ chia sẻ bí mật

lý tƣởng với K= S(Pi) = Zp, 1≤ i ≤ w. Các quy tắc phân phối của sơ đồ nhƣ sau: Với mỗi vectơ

_

a= (a1,…, ad) Zpd, ta xác định một quy tắc phân phối fa_ Fa1 trong đó: fa_(x)=

_

aΦ(x)

với mọi x  P và phép “.” Là phép lấy tích trong theo modulo p. Sơ đồ Brickell đƣợc trình bày nhƣ sau:

Giai đoạn khởi đầu:

Với 1≤ i ≤ w, D sẽ trao vectơ (Pi) (Zp)d cho Pi. Các vectơ này đƣợc công khai.

Phân phối mảnh:

 Giả sử D muốn chia sẻ một khoá K, D sẽ chọn một cách bí mật (ngẫu nhiên, độc lập) d-1 phần tử của Zp là a2, …, ad

 Với 1≤ i ≤ w, D tính: yi = (Pi) trong đó = (K, a2, …, ad)

 Với 1≤ i ≤ w, D sẽ trao mảnh yi cho Pi

Định lý 1

Giả sử thoả mãn tính chất (*). Khi đó, tập các quy tắc phân phối FK sẽ chứa một sơ đồ lý tƣởng thể hiện Ґ

Sơ đồ ngƣỡng Shamir (t, w) là một trƣờng hợp đặc biệt của cấu trúc không gian vectơ. Để thấy điều đó, ta đặt d = t và cho Φ(Pi) = (1, xi, xi2, … , xit-1) với 1≤ i ≤ w,

trong đó xi là toạ độ x đƣợc trao cho Pi. Sơ đồ kết quả tƣơng đƣơng với sơ đồ Shamir.

Định lý 2

Giả sử g = (V, E) là một đồ thị phân rã đầy đủ. Khi đó tồn tại một sơ đồ lý tƣởng thể hiện cấu trúc truy nhập cl(E) trên tập các thành viên V.

Môt đồ thị G = (V, E) có tập đỉnh V và tập cạnh E đƣợc gọi là một đồ thị phân rã đầy đủ nếu tập đỉnh V có thể đƣợc phân nhỏ thành các tập con V1, …, Vl sao cho

Một phần của tài liệu Nghiên cứu vấn đề chia sẻ bí mật và ứng dụng trong bỏ phiếu điện tử (Trang 51 - 78)

Tải bản đầy đủ (PDF)

(78 trang)