CHƯƠNG 2. LƯỢNG TIN RÒ RỈ CỦA CHƯƠNG TRÌNH
2.2. Lượng tin rò rỉ
Phương pháp phân tích định lượng cổ điển sử dụng lý thuyết thông tin để mô hình luồng thông tin và định nghĩa luồng thông tin rò rỉ. Điều cơ bản của các phương pháp này xem chương trình như một kênh thông tin.
Cho một kênh thông tin ℳ có các thông số như sau ℳ = (𝑋, 𝑌, 𝑀) trong đó X biểu diễn một tập hữu hạn các giá trị bí mật đầu vào, Y biểu diễn một tập hữu hạn các giá trị đầu ra có thể quan sát được, và M là một ma trận kênh |𝑋| × |𝑌| chứa các xác suất có điều kiện 𝑝(𝑦|𝑥) với mỗi 𝑥 ∈ 𝑋 và 𝑦 ∈ 𝑌. Mỗi phần tử trong ma trận M là một giá trị thực trong khoảng 0 và 1, và tổng của mỗi hàng sẽ bằng 1.
Về cơ bản, phương pháp phân tích định lượng luồng tin cổ điển mô hình chương trình như một kênh đầu vào-đầu ra tiêu chuẩn với biến bí mật S là đầu vào và O là biến đầu ra công cộng. Phương pháp phân tích sẽ chỉ ra có bao nhiêu thông tin về S mà một người tấn công có thể thu được từ thông tin quan sát được từ O. Hay nói cách khác, đó chính là tính toán lượng tin rò rỉ của chương trình.
Giả sử chương trình P được mô hình như một ma trận kênh với S đầu vào và O đầu ra. Lượng tin rò rỉ của P được định nghĩa bằng hiệu giữa độ bất định mà người tấn công biết về S trước khi thực thi chương trình và độ bất định sau khi quan sát O.
Gọi ℋ(𝑆) là độ bất định ban đầu, và ℋ(𝑆|𝑂) là độ bất định sau khi chương trình đã được thực thi và các đầu ra đã được quan sát. Lúc này, lượng tin rò rỉ của chương trình được cho bởi,
ℒ(𝐶) = ℋ(𝑆) − ℋ(𝑆|𝑂)
Trong đó ℒ(𝐶) là lượng tin rò rỉ của P. ℋ sẽ được tính hoặc theo định nghĩa của Shannon hoặc định nghĩa của min-entropy. Lượng tin rò rỉ có đơn vị tính bằng bit.
Ví dụ 2. Cho biến ngẫu nhiên X cới phân bố xác suất ban đầu là 𝜋 = {𝑝(𝑋 = 𝑥1) = 2
3, 𝑝(𝑋 = 𝑥2) =1
6, 𝑝(𝑋 = 𝑥3) = 1
6}. Từ đó, ta có các entropy như sau,
ℋ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑋) = − (2
3log22 3+1
6log21 6+1
6log21 6) ℋ𝑅é𝑛𝑦𝑖(𝑋) = − log22
3 Giả sử ma trận kênh M được cho như sau,
M y1 y2 x1 1/2 1/2 x2 1/6 5/6 x3 0 1
Ma trận xác suất hợp J của được xác định bởi ma trận kênh và phân bố xác suất 𝜋, trong đó 𝐽[𝑥𝑖, 𝑦𝑖] = 𝜋(𝑥𝑖) ∙ 𝑀[𝑥𝑖, 𝑦𝑖].
M y1 y2 x1 1/3 1/3 x2 1/36 5/36 x3 0 1/36
Phân bố xác suất của Y được rút ra từ ma trận xác suất hợp J như sau, 𝑝(𝑌 = 𝑦𝑖) =
∑∀𝑥𝑖𝐽[𝑥𝑖, 𝑦𝑖]. Do đó, 𝑝(𝑌 = 𝑦1) =13+361 + 0 =1336, và 𝑝(𝑌 = 𝑦2) = 13+365 +361 =
23 36.
Vì 𝑝(𝑋 = 𝑥𝑖|𝑌 = 𝑦𝑖) = 𝐽[𝑥𝑖,𝑦𝑖]
𝑝(𝑌=𝑦𝑖), ta có:
𝑝(𝑋 = 𝑥1|𝑌 = 𝑦1) =12
13, 𝑝(𝑋 = 𝑥2|𝑌 = 𝑦1) = 1
13, 𝑝(𝑋 = 𝑥3|𝑌 = 𝑦1) = 0 𝑝(𝑋 = 𝑥1|𝑌 = 𝑦2) =12
13, 𝑝(𝑋 = 𝑥2|𝑌 = 𝑦2) = 5
13, 𝑝(𝑋 = 𝑥3|𝑌 = 𝑦2) = 6
13
Từ đó, các entropy có điều kiện được tính như sau, ℋ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑋|𝑌)
= −13 36∙ (12
13log212 13+ 1
13log2 1 13)
−23 36. (12
23log212 23+ 5
23log2 5 23+ 6
23log2 6 23) ℋ𝑆𝑚𝑖𝑡ℎ(𝑋|𝑌) = − log2(13
36∙12 13+23
36∙12 23)
ℋ𝐶𝑎𝑐ℎ𝑖𝑛(𝑋|𝑌) = − (13
36log212 13+23
36log212 23) 2.2.1. Lượng tin rò rỉ theo Shannon entropy
Nhiều tác giả đã sử dụng Shannon entropy để tính toán lượng tin rò rỉ. Xét ví dụ dưới đây minh hoạ cho tính toán lượng tin rò rỉ bằng Shannon entropy.
Ví dụ 3 (Chương trình P1). 𝑂 ∶= 𝑆 & 511;
Trong đó S là biến kiểu nguyên không dấu 64-bit có giá trị phân bố chuẩn trong khoảng 0 ≤ 𝑆 ≤ 264− 1. 031 là hằng số thập phân. Lượng tin rò rỉ sẽ được tính như sau,
ℒ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑃1) = ℋ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑆) − ℋ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑆|𝑂) = 64 − 55 = 9
Ở đây, giá trị thập phân 511 biễu diễn ở dạng nhị phân có 55 bit đầu có giá trị 0 và 9 bit cuối có giá trị 1, do đó chương trình P1 trên sẽ sao chép 9 bit tương ứng từ S sang O, từ đó làm giảm số lượng bit chưa biết trong S xuống còn 55. Lúc này, giá trị lượng tin rò rỉ sẽ bằng 9 bit.
Tuy nhiên, Smith đã chỉ ra rằng đối với mô hình một lần thử (one-try guessing), phương pháp tính bằng Shannon entropy không hoàn toàn có kết quả tốt về mặt đảm bảo bảo mật thông tin [5]. Xét chương trình dưới đây để hiểu rõ hơn về vấn đề này.
Ví dụ 4 (Chương trình P2).
𝑖𝑓 (𝑆 𝑚𝑜𝑑 8 = 0) 𝑡ℎ𝑒𝑛 𝑂 ≔ 𝑆 𝑒𝑙𝑠𝑒 𝑂 ≔ 1;
trong đó S là biến kiểu nguyên không dấu 64-bit có giá trị phân bố chuẩn trong khoảng 0 ≤ 𝑆 ≤ 264− 1.
Ta nhận thấy khi giá trị của S chia hết cho 8, giá trị của S sẽ được sao chép vào O.
Ngược lại, giá trị O sẽ được đặt bằng 1. Độ bất định ban đầu của S được tính như sau, ℋ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑆) = − ∑ 𝑝(𝑆 = 𝑠) 𝑙𝑜𝑔2𝑝(𝑆 = 𝑠)
𝑠∈{0,…,264−1}
= ∑ 1
264log2 1 264
𝑠∈{0,…,264−1} = −264 1
264log2 1
264 = 64
Chương trình P2 là luôn cho ra duy nhất một giá trị O với mỗi giá trị của S. Trong số 264 giá trị có thể của S, có 261 giá trị sẽ có đầu ra là 𝑂 ≔ 𝑆, và có 264− 261 = 7 ∙ 261 đầu vào cho kết quả đầu ra là 𝑂 ≔ 1. Lúc này, 𝑝(𝑂 = 1) = 7∙226461 =78.
Nếu giá trị của O khác 1, thông tin bí mật đã bị tiết lộ, hay lúc này 𝑝(𝑆 = 𝑠|𝑂 = 𝑠) = 1. Khi giá trị O bằng 1, người tấn công chỉ biết được rằng S không chia hết cho 8, hay là 3 bit cuối của S đều không bằng 0. Do đó, nếu 𝑂 ≔ 1, trong số 7 ∙ 261 giá trị có thể có của S, xác suất để đoán ra được giá trị của biến bí mật là 𝑝(𝑆 = 𝑠|𝑂 = 1) = 1
7∙261. Vì vậy, ℋ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑆|𝑂) = 261∙ 1
264(− log21) +7
8(− log2 1
7 ∙ 261) = 55.83 Lượng tin rò rỉ của chương trình P2 tính theo Shannon entropy sẽ là,
ℒ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑃2) = ℋ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑆) − ℋ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑆|𝑂) = 64 − 55.86 = 8.17 Đối với chương trình P2, ta nhận thấy rằng bất cứ khi nào kết quả đầu ra là 𝑂 ≠ 1, người tấn công sẽ biết được hoàn toàn giá trị của S. Do đó, xác suất để dự đoán chính xác S sẽ lớn hơn 261∙ 1
264 =1
8. Đối với chương trình P1, với bất kỳ giá trị nào của O, xác suất dự đoán S chính xác trong một lần thử sẽ là 1
255, bởi vì 55 bits đầu tiên của S là luôn chưa biết. Điều này có nghĩa là đối với mô hình một lần thử, C2 về cơ bản sẽ không bảo mật hơn C1, hay lượng tin rò rỉ dự kiến sẽ lớn hơn so với C1. Tuy nhiên, nếu áp dụng Shannon entropy, kết quả lại chỉ ra sự ngược lại.
2.2.2. Lượng tin rò rỉ theo min-entropy
Một phương pháp định lượng luồng thông tin khác được Smith phát triển dựa trên min-entropy [5]. Smith đã định nghĩa độ bất định chính là tính chất dễ bị tấn công của S trong một lần thử. Tính chất dễ bị tấn công của một biến ngẫu nhiên X chính là xác suất lớn nhất trong số các giá trị có thể có của X.
Ví dụ 5 (Chương trình P3: Kiểm tra mật khẩu)
𝑖𝑓 (𝑆 = 𝐿𝑖𝑛) 𝑡ℎ𝑒𝑛 𝑂 ≔ 1 𝑒𝑙𝑠𝑒 𝑂 ≔ 0;
trong đó 𝑆 là mật khẩu, 𝐿𝑖𝑛 là chuỗi được nhập vào, và 𝑂 là kết quả trả về, ví dụ đúng hay sai.
Giả sử S là biến kiểu nguyên không dấu với phân bố xác suất đều cho trước. Khi đó, ta có ℋ𝑅é𝑛𝑦𝑖(𝑆) = − 𝑙𝑜𝑔2|𝑆|1 = 𝑙𝑜𝑔2|𝑆|, trong đó |𝑆| là số giá trị có thể có của S.
Nếu kết quả đầu ra 𝑂 = 1, người tấn công biết được mật khẩu chính xác, hay lúc này 𝑝(𝑆 = 𝐿𝑖𝑛|𝑂 = 1) = 1. Nếu kết quả đầu ra 𝑂 = 0, người tấn công biết được mật khẩu chính xác, hay lúc này 𝑝(𝑆 = 𝑠|𝑂 = 0) =|𝑆|−11 .
Xác suất để chuỗi 𝐿𝑖𝑛 trùng với mật khẩu 𝑝(𝑂 = 1) = |𝑆|1. Do đó, 𝑝(𝑂 = 1) =
|𝑆−1|
|𝑆| . Do đó, theo công thức min-entropy của Smith, ℋ𝑅é𝑛𝑦𝑖(𝑆|𝑂) = − 𝑙𝑜𝑔2(|𝑆|1 ∙ 1 +
|𝑆−1|
|𝑆| ∙|𝑆|−11 ) = 𝑙𝑜𝑔2|𝑆| − 1.
Từ đó, lượng tin rò rỉ sẽ là,
ℒ𝑆𝑚𝑖𝑡ℎ(𝑃3) = ℋ𝑅é𝑛𝑦𝑖(𝑆) − ℋ𝑅é𝑛𝑦𝑖(𝑆|𝑂) = 1 Ví dụ 6 (Chương trình P4: Tìm kiếm nhị phân)
𝑖𝑓 (𝑆 ≥ 𝐿𝑖𝑛) 𝑡ℎ𝑒𝑛 𝑂 ≔ 1 𝑒𝑙𝑠𝑒 𝑂 ≔ 0;
trong đó 𝑆 là biến kiểu nguyên không dấu, 𝐿𝑖𝑛 =|𝑆|
2 là một tham số của chương trình.
Đối với ví dụ này, ta có 𝑝(𝑂 = 1) = 𝑝(𝑂 = 1) =1
2 và 𝑝(𝑆 = 𝑠|𝑂 = 0) = 𝑝(𝑆 = 𝑠|𝑂 = 1) = |𝑆|1
2
. Lúc này, ℋ𝑅é𝑛𝑦𝑖(𝑆|𝑂) = 𝑙𝑜𝑔2|𝑆| − 1 Lượng tin rò rỉ sẽ là,