2.3.2.1. Sơ đồ chia sẻ bí mật sơ khai.
Một sơ đồ chia sẻ bí mật đảm bảo tính bảo mật là sơ đồ trong đó bất kỳ người nào có ít hơn t phần dữ liệu (là số lượng đủ để khôi phục bí mật) không có nhiều thông tin hơn một người không có dữ liệu.
Xem xét sơ đồ chia sẻ bí mật sơ khai trong đó các cụm từ bí mật “password” được chia thành các phần “pa…”,”ss…”,”wo…” và ”rd…”. Một người không có một trong các phần bí mật đó chỉ biết mật khẩu có 8 chữ cái. Anh ta sẽ phải đoán mật khẩu đó từ 226 = 8 tỷ khả năng có thể xảy ra.
Một người có một phần trong số 6 phần của mật khẩu đó sẽ phải đoán 6 chữ cái tương đương với 226 khả năng. Hệ thống này không phải là một sơ đồ chia sẻ
bí mật bảo mật bởi vì một người tham gia có ít hơn t phần dữ liệu thu được một phần đáng kể thông tin về bí mật. Trong một sơ đồ bảo mật, mặc dù một người tham gia chỉ thiếu một phần dữ liệu cũng có thể sẽ đối mặt với 268 = 208 tỷ khả năng.
2.3.2.2. Sơ đồ chia sẻ bí mật tầm thường.
Có một vài sơ đồ chia sẻ bí mật trong đó yêu cầu tất cả những người tham gia phải cùng nhau khôi phục lại bí mật với yêu cầu:
- Mã hóa bí mật thành một số nguyên S.
- Đưa cho mỗi người tham gia i một số ngẫu nhiên ri (trừ một người). - Đưa cho người cuối cùng một số (S- r1 - r2 -…- rn-1).
- Bí mật chính là tổng của các số của tất cả những người tham gia vào sơ đồ. - Mã hóa bí mật bằng 1 byte S. Đưa cho mỗi người tham gia i một byte bi (trừ
một người), đưa cho người cuối cùng byte (S XOR b1XOR b2 …XOR bn- 1).
2.3.2.3. Sơ đồ chia sẻ bí mật có ngưỡng giới hạn.
Mục tiêu của sơ đồ dạng này là chia một ít dữ liệu D ra thành nhiều phần D1, D2,…,Dn sao cho :
- Nếu biết k hoặc nhiều hơn các phần Di có thể dễ dàng suy ngược lại D. - Nếu biết k-1 hoặc ít hơn các phần Di không thể suy ngược lại D.
Sơ đồ này được gọi là sơ đồ ngưỡng giới hạn (k,n). Nếu k = n thì tất cả mọi thành viên phải cùng nhau mới có thể suy ngược lại bí mật.
Dưới đây là 2 sơ đồ bí mật dạng (k, n).
Sơ đồ chia sẻ bí mật Blakley.
Hai đường thẳng không song song nằm trong cùng một mặt phẳng cắt nhau tại một điểm duy nhất. Ba mặt phẳng không song song trong không gian cắt nhau tại một điểm duy nhất. Tổng quát hơn, bất kỳ n mặt siêu phẳng nào cũng cắt nhau tại một điểm cụ thể.
Bí mật có thể được mã hóa là một đơn tọa độ của giao điểm đó. Nếu bí mật được mã hóa bằng cách sử dụng tất cả các tọa độ, mặc dù chúng là ngẫu nhiên, khi đó một người tham gia (ai đó sở hữu một hoặc nhiều các siêu mặt n chiều) thu được thông tin về bí mật do anh ta biết nó nhất định phải nằm trên mặt mà anh ta sở hữu.
Nếu một người trong cuộc mà thu được nhiều thông tin hơn một người ngoài cuộc về bí mật, khi đó hệ thống này không còn bảo mật nữa. Nếu chỉ có một trong số các tọa độ được sử dụng, khi đó một người trong cuộc không biết về bí mật hơn một người ngoài cuộc (ví dụ: Bí mật phải nằm trên trục x trong hệ trục tọa đồ Decac). Mỗi người tham gia được đưa đủ thông tin để định nghĩa một siêu mặt; bí mật được khôi phục bằng cách tính toán điểm giao nhau của các mặt và lấy một tọa độ cố định của giao điểm đó.
Sơ đồ của Blakley trong hệ tọa độ không gian 3 chiều thông tin của mỗi người tham gia là một mặt phẳng và bí mật chính là giao điểm của 3 mặt phẳng đó. Thông tin của 2 người không đủ để chỉ ra được bí mật mặc dù chúng đã thu hẹp được phạm vi của bí mật là 1 điểm nằm trên giao tuyến của 2 mặt phẳng đã biết. Sơ đồ của Blakley có hiệu quả không gian ít hơn sơ đồ của Shamir dưới đây.
Trong khi với sơ đồ của Shamir, mỗi một phần chia chỉ lớn bằng bí mật ban đầu. Các phần chia của Blakley lớn hơn t lần, với t là số người tham gia vừa đủ thu được bí mật. Sơ đồ của Blakley có thể được thu gọn bằng cách giới hạn mặt nào có thể sử dụng làm phần chia.
Kết quả thu được sẽ là một sơ đồ tương đương với sơ đồ của Shamir.
Sơ đồ ngưỡng Shamir.
Ý tưởng về sơ đồ ngưỡng giới hạn của Shamir dựa trên tính chất hai điểm có thể định nghĩa một đường thẳng, 3 điểm định nghĩa được 1 parabol, 4 điểm định nghĩa được một hình lập phương, cứ như thế một cách tổng quát cần n+1 điểm để định nghĩa một đa thức bậc n.
2.3.2.4. Sơ đồ chia sẻ ngưỡng A(t, m).
Cho t, m nguyên dương, t ≤ m. Sơ đồ ngưỡng A(t, m) là phương pháp phân chia bí mật K cho một tập gồm m thành viên, sao cho t thành viên bất kỳ có thể tính được
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 đó. Người phân chia các mảnh khóa không được nằm trong số m thành viên trên.
Ví dụ: có m = 3 thủ quỹ giữ két bạc. Hãy xây dựng hệ thống sao cho bất kì 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ông thể. Đó là sơ đồ ngưỡng A(2,3).
2.3.2.5. Sơ đồ ngưỡng Shamir 1979.
Bài toán:
Chia khóa bí mật K trong Zp thành t mảnh, phân cho mỗi người giữ 1 mảnh, t ≤ m T thành viên “khớp t mảnh” sẽ nhận được K.
Khởi tạo: Chọn số nguyên tố p.
1. D chọn m phần tử xi khác nhau, ≠ 0 trong Zp, 1≤ i ≤ m (yêu cầu: m < p,Tl:
xi khác nhau, ≠ 0 trong Zp ). D trao xi cho thành viên Pi. Giá trị xilà công khai. Phân phối mảnh khóa:
2. D chọn bí mật (ngẫu nhiên,độc lập) t-1 phần tử Zp là a1, …, at-1. 3. Với 1≤ i ≤ m, D tính: yi = P(xi)
P(x) = K + ∑j=1 t -1 aj xj mod p
4. Với 1≤ i ≤ m, D sẽ trao mảnh yi cho Pi . Khôi phục khoá K từ t thành viên.
Giải hệ phương trình tuyến tính t ẩn, t phương trình. Vì P(x) có bậc lớn nhất là (t-1) nên ta có thể viết:
P(x) = K + a1 x1 + a2 x2 +…+ at-1 xt-1
Các hệ số K, a1,…,at-1 là các phần tử chưa biết của Zp, a0= K là khoá.
Vì yij = P (xi j ), nên có thể thu được t phương trình tuyến tính t ẩn a0, a1,…,at- 1,
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 = K.
Chú ý: các phép tính số học đều thực hiện trên Zp. Ví dụ:
Chia mảnh khóa K.
Khoá K = 13 cần chia thành 3 mảnh cho 3 người P1, P3, P5.
1. Chọn số nguyên tố p =17, chọn m = 5 phần tử xi = i trong Zp , i =1, 2, 3, 4, 5.
D trao giá trị công khai xi cho Pi.
a1 =10, a2 = 2.
3. D tính yi = P(xi), 1 ≤ i ≤ m, trong đó:
P(x)=K + ∑ t-1 j=1 aj xj j (mod p) = 13 + a1 x + a2 x2(mod 17).
y1 = P(x1 ) = P(1) = 13 + a1.1 + a2.12(mod 17) = 13 + 10.1 + 2 .12(mod 17) = 8 y3 = P(x3 ) = P(3) = 13 + a1.3 + a2.32(mod 17) = 13 + 10.3 + 2 .32(mod 17) = 10 y5 = P(x5 ) = P(5) = 13 + a1.5 + a2.52(mod 17) = 13 + 10.5 + 2 .52(mod 17) = 11 4. D trao mảnh yi cho Pi.
Khôi phục khoá K.
B ={P1, P3, P5} cần kết hợp các mảnh khóa của họ: y1 =8, y3 = 10, y5 = 11, để khôi phục lại khóa K.
Theo sơ đồ khôi phục khóa K, yij = P(xij), 1≤ j ≤ t.
Thay x1 = 1, x3 = 3, x5 = 5 vào P(x) = a0 + a1 x + a2 x2 (mod 17), a0 = K. Ta nhận được 3 phương trình với 3 ẩn số a0 , a1, a2.
y1 = P(x1) = P(1) = a0 + a1.1 + a2.12 = 8(mod 17). y3 = P(x3) = P(3) = a0 + a1.3 + a2.32 =10(mod 17). y5 = P(x5) = P(5) = a0 + a1.5 + a2.52 =11(mod 17).
Giải hệ 3 phương trình tuyến tính trong Z17, nghiệm duy nhất là: a0 =13,
a1=10, a2=2.
Khoá được khôi phục là: K= a0 =13. Ứng dụng
- Trong việc giữ khóa két bạc: Không nên trao khoá két bạc cho một người duy nhất. Khoá phải được chia nhỏ thành nhiều mảnh và trao cho mỗi thành viên một mảnh.
- Trong bỏ phiếu điện tử: Không thể tin hoàn toàn vào tất cả các thành viên Ban kiểm phiếu. Vì vậy, lá phiếu nên chia thành nhiều mảnh và trao cho mỗi Kiểm phiếu viên một mảnh của lá phiếu.
- Trong lưu trữ các khóa bí mật: Khoá bí mật và quan trọng không nên lưu trữ tại một Server. Nó phải được chia nhỏ và lưu trữ tại nhiều máy trạm.
2.3.3. Sơ đồ chia sẻ bí mật Shamir kết hợp với hệ mã hóa Elgamal cho bài toán loại bỏ phiếu chọn L trong K.
2.3.3.1. Sơ đồ chia sẻ bí mật Shamir kết hợp với hệ mã hóa Elgamal.
Bài toán:
Ban kiểm phiếu bầu cử của công ty X, có n thành viên (Aj). Mỗi một cử tri V cần gửi lá phiếu đã được mã hóa tới ban kiểm phiếu (lá phiếu được xem là bản tin mật gs). Vấn đề đặt ra là hãy đề xuất giải pháp bảo đảm để tất cả n thành viên nhất trí thì mới xem được thông tin mật (nội dung lá phiếu). Ít hơn n thành viên thì không thể xem được thông tin này.
Giải quyết:
Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là khó giải, g là phần tử sinh của Zp*. Trong ban kiểm phiếu mỗi thành viên Aj chọn khóa bí mật zj
và khóa công khai zj
j
h g .
Người V chia tin mật gsthành n mảnh tin khác nhau, mã hóa chúng sau đó chuyển cho mỗi thành viên Aj một mảnh của bản mã. Khi tất cả các thành viên nhất trí xem tin mật thì họ sẽ khớp các mảnh tin lại và giải mã. Cụ thể là tích của các mảnh tin đã giải mã.
Sau đây là các bước làm cụ thể:
Chia sẻ thông tin mật thành các mảnh tin – mẩu tin.
- Người V chọn đa thức ngẫu nhiên bậc n thuộc Zp: 0
( ) n k k k P x x - V chọn bí mật các hệ số s 0, iZp - Người V tính các mảnh tin mật yj P j( ),j1, 2...n - Các mảnh tin mật yj được mã hóa thành: Hj hp jj( )
và V gửi Hj cho các thành viên Aj.
Ban kiểm phiếu khớp nối các mảnh tin mật Hj khi tất cả các thành viên Aj đều nhất trí. Đầu tiên từng người trong ban kiểm phiếu giải mã Hj bằng cách tính:
1/Zj
j j
S H
Theo quá trình trên, ta nhận được 1/Z ( ) 1/Z ( ) 1/Z ( )
( ) ((( )) )
j p j j Zj P j j p j
j j j
S H h g g
Sau đó tin mật gs được xác định nhờ tính chất đặc biệt sinh ra do sự phối hợp giữa sơ đồ Shamir và hệ mã hóa Elgamal:
, , , ( ) ( ) j A (0) j A j A j A p j p j p s j j A j A S g g g g Trong đó: , { } 1 j A l A j l j là hệ số Lagrange, A = {1,2…n}.
2.3.3.2. Ứng dụng sơ đồ kết hợp giải quyết bài toán bỏ phiếu chọn L trong K.
Bài toán:
Giả sử có 3 ứng cử viên: A, B, C. Có 3 người kiểm phiếu là A1, A2, A3. Đây là cuộc bỏ phiếu chọn 2 trong 3 người, cử tri không tin vào một số thành viên trong ban kiểm phiếu, họ dùng sơ đồ chia sẻ bí mật Shamir để chia lá phiếu của mình thành các mảnh tin và gửi cho mỗi người kiểm phiếu một mảnh. Vấn đề là ban kiểm phiếu phải khớp nối các mảnh tin để biết nội dung từng lá phiếu. Nội dung lá phiếu được chia thành nhiều mảnh tin, từng mảnh lại được mã hóa – mảnh mã trước khi gửi về ban kiểm phiếu.
Giải quyết:
Hình 2.7. Sơ đồ bỏ phiếu chọn L trong K.
Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là khó giải, g là phần tử sinh của Zp*.
Sử dụng sơ đồ chia sẻ bí mật Shamir và hệ mật Elgamal. Biểu diễn sự lựa chọn ứng cử viên (nội dung phiếu bầu).
Cử tri V bầu cử cho ứng viên A và C tương ứng với lựa chọn 0 và 2. Để diễn đạt sự lựa chọn của mình, cử tri dùng cơ số 3 để biểu diễn.
Nội dung lá phiếu của V được biểu diễn là: s = 0*30+2*31 = 6 Ban kiểm phiếu chuẩn bị.
Trong ban kiểm phiếu, phần tử sinh g của Zp*, mỗi thành viên Aj chọn khóa bí mật zjvà khóa công khai là h = gzj.
A1 chọn khóa bí mật z1 và khóa công khai h1 = g z1
A2 chọn khóa bí mật z2 và khóa công khai h2 = gz2
A3 chọn khóa bí mật z3 và khóa công khai h3 = gz3
Ví dụ:
A1 chọn khóa bí mật z1 = 2 và khóa công khai h1 = 32
A2 chọn khóa bí mật z2 = 3 và khóa công khai h2 = 33
Cử tri V chia sẻ nội dung lá phiếu (tin mật) thành các mảnh tin.
Với nội dung lá phiếu là s = 6, cử tri V chọn đa thức ngẫu nhiên bí mật:
P(x) = 6 +2x + 5x2, trong đó: 0 s 6,12,2 5.
V tính các mảnh tin mật: yj = P(xj) theo đa thức trên, ta thu được: P(1); P(2); P(3). Theo ví dụ trên ta thu được: P(1) = 13; P(2) = 30; P(3) = 57.
V mã hóa các mảnh tin mật trên thành: P j( )
j j H h , cụ thể là: (1) 1 1 P H h ( 2) 2 2 P H h (3) 3 3 P H h Ứng với ví dụ trên ta có: (1) 2 13 1 1P (3 ) H h (2) 2 30 2 2P (3 ) H h (3) 2 57 3 3P (3 ) H h
Cử tri V chuyển H1, H2, H3 tương ứng cho các thành viên ban kiểm phiếu: A1, A2, A3.
Ban kiểm phiếu khối phục nội dung lá phiếu (tin mật) từ các mảnh tin.
Ban kiểm phiếu khớp nối các mảnh tin Hj khi tất cả n thành viên Aj đều nhất trí khôi phục lại nội dung lá phiếu.
Đầu tiên từng người kiểm phiếu Aj giải mã Hj bằng cách tính: 1/Zj
j j
S H Theo các quá trình trên ta nhận được:
1/ ( ) 1/ ( ) 1/ ( ) ((( )) ) j j j j j Z P j Z Z P j Z P j j j S H h g g Cụ thể là: A1 giải mã H1 thành 2 13 1/2 13 1 ((3 ) ) 3 S A2 giải mã H2 thành 3 30 1/3 30 2 ((3 ) ) 3 S A3 giải mã H3 thành 5 57 1/5 57 3 ((3 ) ) 3 S
Bí mật gs được xác định nhờ tính chất đặc biệt sinh ra do sự phối hợp giữa sơ đồ chia sẻ bí mật Shamir và hệ mã hóa Elgamal.
, , , ( ) ( ) j A (0) j A j A j A p j p j p s j S g g g g
Trong đó: , { } 1 j A l A j l j là hệ số Lagrange, A = {1,2…n}.
Trong ví dụ trên hệ số Lagrange được tính như sau: 1 2 / (2 1) 3 / (3 1) 3 2 1 / (1 2) 3 / (3 2) 3 3 1 / (1 3) 2 / (2 3) 1 3 1 2 13 3 30 3 57 1 6 1 2 3 (3 ) (3 ) (3 ) 3 s g S S S
Đây chính là nội dung lá phiếu đã được khôi phục sau khi khớp nối các mảnh tin lại với nhau.