Xác định cây Steiner ST(u ): nối i u với gốc. i
ST(u ) gồm các nút 3 v1,v2,v5,v10. (Xem hình 3.12)
+ Đặt V(ST(ui)) là các nút thuộc ST(ui), trừ nút ui. V(ST(u ))={3 v1,v2,v5}.
+ Tìm các nút trên cây T (kể cả lá), liền kề với các nút thuộc V(ST(u )), ký hiệu i KeV(ST(u )). Các nút này thuộc cây T, nhưng không thuộc ST(i u ). i KeV(ST(u ))={3 v3,v4,v11}.
Hình 3. 11: Minh họa cây ST(u3) và các nút KeV(ST(u3))
Sinh khóa cho ui:
} Label {
Lui i,j , trong đó:
vi V(ST(ui)), vj KeV(ST(ui)) vj là con, hoặc cháu của vi
Theo giải thuật thiết lập khóa “dài” trên, tập khóa của các TBTDL u1,u2,...,u8 là: Lu {Label1,3,Label1,5,Label1,9,Label2,5,Label2,9,Label4,9}
1 .
Lu2 {Label1,3,Label1,5,Label1,8,Label2,5,Label2,8,Label4,8}. Lu {Label1,3,Label1,4,Label1,11,Label2,4,Label2,11,Label5,11}
3 .
Lu {Label1,3,Label1,4,Label1,10,Label2,4,Label2,10,Label5,10}
4 .
Lu5 {Label1,2,Label1,7,Label1,13,Label3,7,Label3,13,Label6,13}. Lu {Label1,2,Label1,7,Label1,12,Label3,7,Label3,12,Label6,12}
6 .
Lu7 {Label1,2,Label1,6,Label1,15,Label3,6,Label3,15,Label7,15}. Lu {Label1,2,Label1,6,Label1,4,Label3,6,Label3,14,Label7,4}
8 .
2) Mã hóa
a. NCCDL dùng giải thuật SD, phân hoạch P thành ba tập con gồm các TBTDL hợp pháp: (P{u1,u3,u5,u6})
Tập con 1: S4,9 S4S9 {u1,u2}{u2}{u1} sử dụng khóa “dài” L4,9. Tập con 2: S5,11S5 S11{u3,u4}{u4}{u3} sử dụng khóa “dài” L5,11. Tập con 3: S3,7 S3S7 {u5,u6,u7,u8}{u7,u8}{u5,u6} sử dụng khóa
Phân hoạch P thành các tập con:
Xác định cây Steiner ST(R): nối gốc và R. Khởi tạo S={}, T= ST(R).
+ Bƣớc 1: Tìm hai lá (vi,vj) trong T, tìm v là cha chung thấp nhất của (vi,vj). Đặt v là cha riêng của h v , i v là cha riêng của k v . j
(Nếu T chỉ có một lá, thì vi vj và vh vk v). + Bƣớc 2:
o Nếu vvh vi thì SSSh,i; Nếu vvh vi thì S không thay đổi.
o Nếu vvk vj thì SSSk,j; Nếu vvk vj thì S không thay đổi. + Bƣớc 3: T = T - {các con của v}, đánh dấu v là lá.
Tức là giữ lại cha chung thấp nhất v.
Lặp lại các bước từ 1 đến 3 cho đến khi T chỉ là 1 nút. Nếu còn v i gốc thì S=S Sgốc, i
Ví dụ: với R={u2,u4,u7,u8}:
Khởi tạo S={}, T=ST(R);
+ Bƣớc 1: Tìm hai lá (v9,v11) thuộc T, v2 là cha chung thấp nhất của (v9,v11), 4
v là cha riêng của v , 9 v là cha riêng của 5 v . 11 + Bƣớc 2:
Do v4 v9, nên SSS4,9 {S4,9}; Do v5 v11, nên SSS5,11{S4,9,S5,11};
+ Bƣớc 3: Loại bỏ v4,v9,v5,v11 khỏi T, đánh dấu v là lá. 2 Tức là giữ lại cha chung thấp nhất v . 2
+ Bƣớc 1: Tìm hai lá (v14,v15) thuộc T, v là 7 cha chung thấp nhất của (v14,v15). Đồng thời v là cha riêng của 7 v , 14 v cũng là cha riêng của 7 v . 15 + Bƣớc 2:
Do v trùng với cha riêng của 7 v , nên S không thay đổi, 14 S{S4,9,S5,11}; Do v trùng với cha riêng của 7 v , nên S không thay đổi, 15 S{S4,9,S5,11}; + Bƣớc 3: Loại bỏ v14,v15 khỏi T, đánh dấu v là lá. 7
Tức là giữ lại cha chung thấp nhất v . 7
Hình 3. 14: Cây Steiner ST(R) với R={v2, v7}
+ Bƣớc 1: Tìm hai lá (v2,v7) thuộc T, v là 1 cha chung thấp nhất của (v2,v7), 1
v là cha riêng của v , 2 v là cha riêng của 3 v . 7 + Bƣớc 2:
Do v trùng với cha riêng của 1 v , nên S không thay đổi, 2 S{S4,9,S5,11}; Do v1 v3 v7, nên SSS3,7 {S4,9,S5,11,S3,7};
+ Bƣớc 3: Loại bỏ v2,v3,v7 khỏi T, đánh dấu v là lá. 1 Tức là giữ lại cha chung thấp nhất v . 1
Kết quả: phân hoạch P là tập {S4,9,S5,11,S3,7}.
Các tập S4,9,S5,11,S3,7 có các khóa “dài” tương ứng L4,9,L5,11,L3,7, được sinh nhờ bộ sinh số ngẫu nhiên G:
L4,9 GM(Label4,9). L5,11GM(Label5,11). L3,7 GM(Label3,7). b. NCCDL chọn khóa phiên K.
c. NCCDL mã hóa khóa phiên K (một lần) với từng khóa L4,9,L5,11,L3,7 và truyền đi bản mã: [(4,9),(5,11),(3,7),E(K,L4,9),E(K,L5,11),E(K,L3,7)],FK(M) 3) Giải mã a. Tất cả 8 TBTDL nhận được bản mã: [(4,9),(5,11),(3,7),E(K,L4,9),E(K,L5,11),E(K,L3,7)],FK(M)
b. Phần đầu dùng các khóa “dài” L4,9,L5,11,L3,7 để mã hóa khóa phiên K, nên chỉ những TBTDL thuộc các tập S4,9,S5,11,S3,7 mới tính được K.
} {u
S4,9 1 , S5,11{u3}, S3,7 {u5,u6}.
3.3.2 Giải thuật SD
Giải thuật SD thực chất là giải thuật phân hoạch tập P các TBTDL hợp pháp thành các tập S , i,j Si,j SiSj. Trong đó:
S là tập các lá (TBTDL) của cây nhị phân gốc i v . i
S là tập các lá (TBTDL bất hợp pháp) của cây nhị phân gốc j v . j v là cha của nút i v . j
Giải thuật SD dùng các khóa “dài” là hàm của nhãn tại gốc các nút v để mã i hóa khóa phiên K [3].
Giả thiết có tập N gồm n TBTDL, n=2k, đã biết tập R các TBTDL làm rò rỉ khóa. NCCDL biểu diễn các TBTDL thành cây nhị phân đầy đủ, các TBTDL tương ứng với các lá của cây nhị phân, ký hiệu u1,u2,..,un. Các nút thuộc cây, kể cả lá được gán tên gọi v1,v2,...,v2n1.
1) Khởi tạo
a. NCCDL thiết lập cây nhị phân đầy đủ T gồm các nút v1,v2,...,v2n1, trong đó các nút lá tương ứng với u1,u2,...,un.
b. Các nút v1,v2,...,vn1 (không phải là lá) được gán nhãn 1
n 2
1,Label ,...,Label
Label .
c. Các TBTDL u1,u2,...,un được thiết lập tập khóa “dài” là hàm của các nhãn thuộc các nút từ gốc tới chính nó, dựa trên bộ sinh số ngẫu nhiên G.
Giải thuật thiết lập khóa:
Xác định cây Steiner nối u với gốc, ký hiệu ST(i u ). i
Đặt V(ST(u )) là các nút thuộc ST(i u ), trừ nút tương ứng i u . i
Tìm các nút (kể cả lá) liền kề với các nút thuộc V(ST(u )), ký hiệu i KeV(ST(u )). Các nút này thuộc cây T, nhưng không thuộc ST(i u ). i
Sinh khóa cho ui: } Label { Lui i,j , trong đó: i v V(ST(u )), i v j KeV(ST(u )). i j
v là con, hoặc cháu của v . i
2) Mã hóa
a. NCCDL dùng giải thuật SD, phân hoạch P thành các tập con hợp pháp [3].
Phân hoạch P thành các tập con:
Xác định cây Steiner ST(R): nối gốc với R. Khởi tạo S={}, T= ST(R).
+ Bƣớc 1: Tìm hai lá (vi,vj) trong T, tìm v là cha chung thấp nhất của (vi,vj). Đặt v là cha riêng của h v , i v là cha riêng của k v . j
+ Bƣớc 2:
Nếu vvh vi thì SSSh,i; Nếu vvh vi thì S không thay đổi; Nếu vvk vj thì SSSk,j; Nếu vvk vj thì S không thay đổi; + Bƣớc 3: T = T - {các con của v}, đánh dấu v là lá.
Tức là giữ lại cha chung thấp nhất v.
Lặp lại các bước từ 1 đến 3 cho đến khi T chỉ còn 1 nút. Nếu còn v i gốc thì S=S Sgốc, i. Kết thúc được tập S {S ,S ,...,S } m m 2 2 1 1,j i ,j i ,j i .
Các tập Si1,j1,Si2,j2,...,Sim,jm có các khóa “dài” m m 2 2 1 1,j i ,j i ,j i ,L ,...,L
L được sinh dựa
trên bộ sinh số ngẫu nhiên G: ) Label ( G Li1,j1 M i1,j1 ) Label ( G Li2,j2 M i2,j2 …. ) Label ( G Lim,jm M im,jm
Giải thuật tìm cha chung thấp nhất của 2 nút [6]:
0: Khởi tạo: T là cây nhị phân, nút v=gốc, tập con R của ít nhất hai lá trong T. 1: while v có nhiều hơn hai nút từ R do
2: if v chỉ có một con trong ST(R) then
Đặt v là con này 3: else
4: if một con của v có chính xác một con trong R then
Đặt v là anh em sinh đôi của nút này
5: else
Đặt v là con mà có ít nhất một con trong R
6: end if
7: end if
8: end do
9: while v không là cha chung nhỏ nhất do
10: đặt v là con của nó trong ST(R) 11: end do
b. NCCDL chọn khóa phiên K
c. NCCDL mã hóa khóa phiên K (một lần) với từng khóa
m m 2 2 1 1,j i ,j i ,j i ,L ,...,L L và truyền đi bản mã: [(i1,j1),(i2,j2),...,(im,jm),E(K,Li ,j ),E(K,Li ,j ),...,E(K,Li ,j )],FK(M) m m 2 2 1 1 3) Giải mã a. Tất cả các TBTDL nhận được bản mã: [(i1,j1),(i2,j2),...,(im,jm),E(K,Li1,j1),E(K,Li2,j2),...,E(K,Lim,jm)],FK(M) b. Phần đầu bản mã dùng các khóa “dài”
m m 2 2 1 1,j i ,j i ,j i ,L ,...,L L để mã hóa khóa
phiên K, nên chỉ những TBTDL thuộc các tập {Si1,j1,Si2,j2,...,Sim,jm} mới tính được K. Sau khi có khóa phiên K, các TBTDL hợp pháp này sẽ giải mã được bản tin M [3].
3.3.3 Hiệu năng của giải thuật SD
a. Độ dài phần đầu bản mã (message header)
Xét giải thuật phân hoạch tập P, tại bước 2: số lượng tập con tăng lên nhiều nhất là 2. Tại bước 3 giảm số lượng lá trong cây Steiner, trừ bước lặp cuối có thể không giảm số lượng lá nhưng tăng thêm một tập con.
Bắt đầu với r lá, tiến trình trên sẽ sinh ra nhiều nhất là 2r-1 tập con. Như vậy, số lượng tập con nhiều nhất là 2r-1 [3].
b. Số lượng các khóa “dài” tại mỗi TBTDL
Xét giải thuật sinh khóa cho mỗi TBTDL u.
Cây Steiner ST(u) nối u và gốc có chiều cao bằng chiều cao cây nhị phân đầy đủ là log(n). Tập các nút thuộc ST(u) không kể u là V(ST(u)): gồm log(n) nút, KeV(ST(u)) gồm log(n) nút.
Xét gốc: số tập con tương ứng với gốc là log(n).
Xét nút kề gốc thuộc VST(u): số tập con tương ứng là: log(n) – 1.
…
Xét nút cha của u: số tập con là: 1.
Do đó số tập con tạo ra trong giải thuật sinh khóa là:
1 ) n log( 2 1 ) n ( log 2 1 2 ) n log( ) 1 ) n (log( 1 1 k 1 1 ... ) 1 ) n (log( ) n log( 2 1 ) n log( 1 k
c. Thời gian giải mã tại TBTDL
Tại thời điểm giải mã, TTDL u tìm tập con S mà u i,j S và tính toán khóa i,j “dài” tương ứng L . i,j
Sử dụng kỹ năng tìm i được mô tả trong giải thuật CS (xem 3.2.3) cho cấu j trúc ma trận tìm kiếm, thì TBTDL u phải thực hiện O(m.log(w)) phép toán [3].
Do đó thời gian xử lý bản tin cần O(m.log(w)) phép toán và 1 phép giải mã thông điệp M.
Tóm lại, trong giải thuật SD [3]:
Độ dài phần đầu bản mã nhiều nhất là 2r-1 khóa.
Số lượng các khóa “dài” của mỗi TBTDL nhiều nhất là logn 1 2 1 n log 2 1 2 .
Thực hiện O(m.log(w)) phép toán + 1 phép giải mã thông điệp M.
3.4 SO SÁNH GIẢI THUẬT CS VÀ SD
Dựa trên phần hiệu năng của giải thuật CS và SD, ta có bảng so sánh các thông số hiệu năng như sau:
Giải thuật Độ dài phần đầu bản mã Số lƣợng khóa tại TBTDL Thời gian giải mã K Giải mã bản tin
CS r.log(n) log(n) O(m.log(w)) 1
SD 2r-1 log(n) 1 2 1 ) n ( log 2 1 2 O(m.log(w)) 1
Chƣơng 4: ĐỘ AN TOÀN CỦA GIẢI THUẬT KHUNG PHỦ TẬP CON PHỦ TẬP CON
GIỚI THIỆU
Khung phủ tập con (SCF - xem 1.2) sử dụng hai giải thuật mã hóa:
Giải thuật E:{0,1}*{0,1}*, mã hóa khóa phiên K, lần lượt với từng khóa “dài” Li1,Li2,...,Lim, nhận được các bản mã: E(K,Li1), E(K,Li2), …, ) L , K ( E m i .
Giải thuật F :{0,1}*{0,1}*, mã hóa thông điệp M sử dụng khóa phiên K, nhận được bản mã: FK(M). F phải là giải thuật “nhanh”. K
Trong một vài trường hợp, cần chọn giải thuật mã hóa F có thể đơn giản hơn giải thuật mã hóa E để:
Tăng tốc độ giải mã tại TBTDL.
Kích thước phần đầu bản mã (message header) ngắn hơn. Có nhiều cách cài đặt E và F.
Giải thuật E có thể được cài đặt bằng phương pháp mã hóa theo khối hoặc mã hóa khóa công khai. Giải thuật F có thể được cài đặt bằng phương pháp mã hóa theo dòng.
Trong chương này trình bày hai cách cài giải thuật E là phương pháp “Cắt phần đầu bản mã” (Prefix Truncation – PT – xem 4.1.1) và phương pháp mã hóa khóa công khai dựa trên định danh (xem 4.1.2). Giải thuật F dùng phương pháp “Tất cả hoặc không” (All or Nothing – AoN – xem 4.2)
4.1 CÀI ĐẶT GIẢI THUẬT E MÃ HÓA KHÓA PHIÊN K 4.1.1 Phƣơng pháp “Cắt phần đầu bản mã” (Prefix Truncation) 4.1.1 Phƣơng pháp “Cắt phần đầu bản mã” (Prefix Truncation)
Cài đặt giải thuật E có thể dùng phương pháp “Cắt phần đầu bản mã” (Prefix Truncation - PT) [5], PT làm giảm được kích thước phần đầu bản mã. Do đó, nó làm tăng tốc độ giải mã tại TBTDL, mà vẫn bảo đảm an toàn các khóa “dài” L.
Trong giải thuật SCF (xem 1.2), NCCDL truyền bản mã tới các TBTDL:
[i1,i2,...,im,E(K,Li ),...,E(K,Li )],FK(M)
m 1
Phương pháp PT thay thế E(K,Lij) trong phần đầu bản mã bằng K )] L , U ( E efix [Pr |K| ij , với j=1, 2,…,m, được bản mã: [i1,i2,...,im,U,[Prefix|K|E(U,Li )] K,...,[Prefix|K|E(U,Li )] K],FK(M) m 1 Trong đó: o là phép XOR từng bit.
o E là giải thuật mã hóa theo khối.
o K là khóa phiên của giải thuật F.
o U là chuỗi ngẫu nhiên có độ dài như độ dài khóa K .
o Prefix|K|E(U,Lij) là |K| bits đầu tiên của chuỗi E(U,Lij).
Điều này làm giảm kích thước phần đầu bản mã xuống m.|K| bit, thay thế cho kích thước nhỏ nhất m.|L|. (Do E là giải thuật mã hóa theo khối, nên |L| là kích thước nhỏ nhất của bản mã E(K,L ), j = 1,.., m). ij
4.1.2 Phƣơng pháp mã hóa khóa công khai cho E
Trong một vài trường hợp, giải thuật E có thể dùng phương pháp mã hóa khóa công khai.
NCCDL sử dụng khóa công khai để mã hóa khóa phiên K trong phần đầu bản mã (giải thuật E). Các TBTDL nhận được bản mã thông điệp, dùng các khóa bí mật tương ứng với các tập con để giải mã khóa phiên K. Sau đó dùng khóa K để giải mã thông điệp M.
Sau đây trình bày phương pháp mã hóa công khai đối với giải thuật “Cây nhị phân con đầy đủ” (Complete Subtree – CS) và “Hiệu hai tập con” (Subset Difference – SD), dựa trên giải thuật Mã hóa theo định danh (Identity-Based Encryption - IBE) và giải thuật Mã hóa theo định danh có thứ tự (Hierachical Identity-Based Encryption - HIBE) [7].
Giải thuật IBE là hệ mã hóa công khai, trong đó khóa công khai có thể là một chuỗi bit tùy ý, khóa bí mật có thể được sinh từ bộ sinh khóa bí mật (Private Key Generator - PKG).
Trong giải thuật mã hóa IBE và HIBE, mỗi TBTDL có thể dùng email hoặc các thông tin cá nhân khác mà mọi TBTDL đều biết để làm định danh ID.
Định nghĩa 4.1: Mã hóa theo định danh (IBE) [7]
Giải thuật IBE là bộ 4 giải thuật thời gian đa thức (Setup, Extract, Encrypt, Decrypt), trong đó:
Setup: là thuật toán dùng để PKG khởi tạo các tham số chung của hệ thống. Setup có đầu ra là các tham số params và khóa bí mật master-key. PKG công bố params như là khóa công khai cho giải thuật IBE, và giữ bí mật master-key.
Extract: là giải thuật dùng PKG để tạo ra khóa bí mật cho định danh tùy ý. Extract có đầu vào params, định danh ID {0,1}* và master-key. Đầu ra là khóa bí mật d, dùng để giải mã tại TBTDL, được xác định bởi định danh ID.