1. Trang chủ
  2. » Luận Văn - Báo Cáo

Phân tích định lượng luồng tin trong bảo mật chương trình đa luồng

89 12 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phân tích định lượng luồng tin trong bảo mật chương trình đa luồng
Tác giả Dương Tuấn Quang
Người hướng dẫn TS. Ngô Minh Trí
Trường học Đại Học Đà Nẵng - Trường Đại Học Bách Khoa
Chuyên ngành Kỹ thuật điện tử
Thể loại Luận văn thạc sĩ kỹ thuật
Năm xuất bản 2017
Thành phố Đà Nẵng
Định dạng
Số trang 89
Dung lượng 4,5 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Luận văn nghiên cứu về vấn đề bảo mật trong chương trình đa luồng đồng thời xây dựng một công cụ mô phỏng tự động phân tích định lượng luồng tin của chương trình đa luồng Công cụ này dựa vào phương pháp phân tích định lượng trong đó người tấn công sẽ lựa chọn bộ lập lịch để thực thi chương trình đa luồng từ đó có thể suy ra được một số thông tin nhất định về dữ liệu bí mật Phương pháp lập lịch được sử dụng để xây dựng mô hình chuyển trạng thái của chương trình đa luồng và tính toán lượng tin rò rỉ của dữ liệu bí mật Luận văn này mô tả thuật toán của chương trình cũng như tổng hợp kết quả của một số ví dụ để kiểm chứng độ chính xác của chương trình

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA



DƯƠNG TUẤN QUANG

PHÂN TÍCH ĐỊNH LƯỢNG LUỒNG TIN TRONG BẢO MẬT CHƯƠNG TRÌNH ĐA LUỒNG

Chuyên ngành : Kỹ thuật điện tử

Mã số : 60.52.02.03

LUẬN VĂN THẠC SĨ KỸ THUẬT

Người hướng dẫn khoa học : TS NGÔ MINH TRÍ

Đà Nẵng, năm 2017

Trang 2

LỜI CAM ĐOAN

Tôi xin cam đoan nội dung của luận văn “Phân tích định lượng luồng tin trong bảo mật chương trình đa luồng” không phải là bản sao chép của bất cứ luận văn hoặc công trình đã có từ trước Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác

Tác giả luận văn

Dương Tuấn Quang

Trang 3

MỤC LỤC

MỞ ĐẦU 1

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT BẢO MẬT THÔNG TIN 4

1.1 Lý thuyết xác suất 4

1.2 Lý thuyết thông tin 5

1.2.1 Khái niệm thông tin 5

1.2.2 Lượng tin 6

1.3 Entropy 8

1.3.1 Shannon entropy 8

1.3.2 Min-entropy 10

1.4 Kết luận chương 1 10

CHƯƠNG 2 LƯỢNG TIN RÒ RỈ CỦA CHƯƠNG TRÌNH 11

2.1 Bảo mật luồng thông tin 11

2.1.1 Phân tích định tính luồng thông tin 12

2.1.2 Phân tích định lượng luồng thông tin 12

2.2 Lượng tin rò rỉ 14

2.2.1 Lượng tin rò rỉ theo Shannon entropy 16

2.2.2 Lượng tin rò rỉ theo min-entropy 17

2.3 Kết luận chương 2 18

CHƯƠNG 3 LƯỢNG TIN RÒ RỈ CỦA CHƯƠNG TRÌNH ĐA LUỒNG 19

3.1 Bảo mật luồng thông tin trong chương trình đa luồng 19

3.1.1 Chương trình đa luồng 19

3.1.2 Tính bảo mật của chương trình đa luồng 19

3.1.3 Ảnh hưởng của bộ lập lịch trong chương trình đa luồng 20

3.1.4 Mô hình chương trình đa luồng 21

3.2 Lượng tin rò rỉ của chương trình đa luồng 22

3.2.1 Lượng tin rò rỉ theo vệt chương trình 22

3.2.2 Lượng tin rò rỉ của chương trình đa luồng 24

3.2.3 Ví dụ minh hoạ 1 24

Trang 4

3.2.4 Ví dụ minh hoạ 2 26

3.2.5 Ví dụ minh hoạ 3 28

3.2.6 Ví dụ minh hoạ 4 30

3.3 Kết luận chương 3 34

CHƯƠNG 4 XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG PHÂN TÍCH ĐỊNH LƯỢNG LUỒNG TIN 35

4.1 Tổng quan chương trình mô phỏng 35

4.2 Cấu trúc chung của chương trình mô phỏng 35

4.3 Thuật toán chương trình mô phỏng 37

4.3.1 Thuật toán phân tích không gian trạng thái 37

4.3.2 Thuật toán tính toán lượng tin rò rỉ 39

4.4 Tính toán lượng tin rò rỉ với min-entropy 40

4.5 Tính toán lượng tin rò rỉ với Shannon entropy 41

4.6 Kết quả tính toán mô phỏng 41

4.7 Đánh giá chương trình mô phỏng 42

4.8 Kết luận chương 4 42

KẾT LUẬN VÀ KIẾN NGHỊ 43

DANH MỤC TÀI LIỆU THAM KHẢO 44 PHỤ LỤC

Trang 5

PHÂN TÍCH ĐỊNH LƯỢNG LUỒNG TIN TRONG BẢO MẬT CHƯƠNG

TRÌNH ĐA LUỒNG

Học viên: Dương Tuấn Quang Chuyên ngành: Kỹ thuật điện tử

Mã số: 60.52.02.03 Khóa: K31 KTĐT Trường Đại học Bách khoa –

ĐHĐN

Tóm tắt – Luận văn nghiên cứu về vấn đề bảo mật trong chương trình đa luồng, đồng thời xây dựng một công cụ mô phỏng tự động phân tích định lượng luồng tin của chương trình đa luồng Công cụ này dựa vào phương pháp phân tích định lượng trong

đó người tấn công sẽ lựa chọn bộ lập lịch để thực thi chương trình đa luồng, từ đó có thể suy ra được một số thông tin nhất định về dữ liệu bí mật Phương pháp lập lịch được sử dụng để xây dựng mô hình chuyển trạng thái của chương trình đa luồng, và tính toán lượng tin rò rỉ của dữ liệu bí mật Luận văn này mô tả thuật toán của chương trình cũng như tổng hợp kết quả của một số ví dụ để kiểm chứng độ chính xác của chương trình

Từ khóa – bảo mật; đo lường; định lượng luồng tin; lượng tin rò rỉ; công cụ;

QUANTITATIVE INFORMATION FLOW ANALYSIS OF

MULTI-THREADED PROGRAM

Abstract – This thesis studies the security of multi-threaded programs and presents a tool for analysing quantitative information flow (QIF) for multi-threaded programs written in a core imperative language The aim of the tool is to measure the leakage

of secret data The tool is based on a method of the quantitative analysis where the attacker is able to select the scheduling policy to attack the program The scheduling policy is used to construct the execution model of the program We outline the workings of the tool and summarise results derived from running the tool on a range

of case studies

Keywords – security; measurement; quantitative information flow; information leakage; tool;

Trang 6

DANH MỤC CÁC HÌNH

3.1 Cây trạng thái chương trình của ví dụ 1 26 3.2 Cây trạng thái chương trình của ví dụ 2 28 3.3 Cây trạng thái chương trình của ví dụ 3 29 3.4 Cây trạng thái chương trình của ví dụ 4 32

4.3 Thuật toán hàm cập nhật không gian trạng thái 39 4.4 Thuật toán hàm tính toán lượng tin rò rỉ 40

Trang 7

MỞ ĐẦU

1 Tính cấp thiết của đề tài

Cùng với sự phát triển mạnh mẽ của công nghệ thông tin, ngày càng có nhiều dữ liệu được xử lý, lưu trữ và gửi đi trong mạng truyền thông Một thực trạng không thể tránh khỏi là người tham gia hệ thống có khả năng truy cập được các dữ liệu này Vấn

đề quan trọng trong an toàn thông tin là phải đảm bảo được việc truy cập nằm trong phạm vi cho phép Những thông tin bị truy cập bởi những đối tượng không được cấp quyền đều được xem là những thông tin bị rò rỉ Hậu quả của việc rò rỉ thông tin này ảnh hưởng nghiêm trọng đến những người sử dụng và khai thác hệ thống hợp pháp

Có thể lấy một số ví dụ như các vụ việc rò rỉ thông tin cá nhân nhạy cảm bao gồm mã

số tài khoản ngân hàng, thẻ tín dụng hay sự tiết lộ các hồ sơ mang tính bí mật của công ty, quốc gia trên các mạng công cộng gần đây Chính vì vậy, điều quan trọng nhất trong truyền thông là phải đảm bảo tính an toàn, bí mật của thông tin

Có ba phương pháp được sử dụng để bảo vệ thông tin [9] đó là: điều khiển truy cập, mật mã, và điều khiển luồng tin

Điều khiển truy cập, ví dụ như tường lửa, là phương pháp phổ biến nhất để bảo mật thông tin Chỉ có những đối tượng hợp pháp mới được cấp quyền truy cập vào

dữ liệu Tuy nhiên, phương pháp này không đảm bảo được rằng các đối tượng hợp pháp sẽ không tiết lộ thông tin mật sau khi đã truy nhập được thông tin

Mật mã là kỹ thuật mã hóa dữ liệu trong quá trình truyền dẫn hoặc lưu trữ Phương pháp này có thể ngăn chăn các đối tượng không được cấp phép truy cập vào dữ liệu thông qua quá trình nghe lén hay can thiệp vào việc truyền tin trong hệ thống Cũng giống như phương pháp điều khiển truy cập, phương pháp này cũng không đảm bảo được việc người sử dụng hay chương trình phát tán dữ liệu sau khi giải mã dữ liệu

Hơn nữa, nếu kỹ thuật mã hóa sử dụng không hiệu quả, nhiều khả năng các đối tượng

truy cập bất hợp pháp có thể giải mã dữ liệu một cách dễ dàng Lúc này, chức năng

mã hóa sẽ không còn ý nghĩa

Một phương pháp bảo mật thông tin mạnh hơn đó là điều khiển luồng tin, nghĩa

là giám sát thông tin di chuyển đến đâu và như thế nào trong hệ thống Một hệ thống được xem là không an toàn khi dữ liệu mật bằng một cách nào đó lại được lưu trữ ở

những vị trí mà những đối tượng không được cấp phép có thể truy cập được Phương

pháp điều khiển luồng tin có thể phát hiện điều này Đây là điểm khác biệt cơ bản so với hai phương pháp nêu trên; phương pháp điều khiển luồng tin có thể đảm bảo

Trang 8

thông tin không bị phát tán (Smith, 2007) [10] Phương pháp điều khiển luồng tin đảm bảo mục tiêu ngăn chặn sự rò rỉ thông tin hiệu quả hơn hai phương pháp còn lại Quá trình phân tích luồng tin về cơ bản có thể được thực hiện dựa trên một trong hai phương pháp, định tính hoặc định lượng Nếu như mục đích phân tích định tính nhằm xác định một hệ thống có an toàn không bằng cách trả lời câu hỏi rằng hệ thống

có bị rò rỉ thông tin hay không, thì phân tích định lượng, ngoài việc xác định luồng

di chuyển của thông tin, còn cho phép xác định hay ước lượng lượng tin mà người tấn công có thể thu thập được khi hệ thống bị mất bảo mật Hay nói cách khác, phân tích định lượng cho phép xác định được có lượng thông tin đã bị tiết lộ ra bên ngoài trong trường hợp hệ thống rò rỉ thông tin Rõ ràng, phương pháp phân tích định lượng hiệu quả hơn ở khía cạnh bảo mật thông tin

Vì vậy, đây chính là lý do luận văn sẽ tập trung nghiên cứu phương pháp định lượng luồng tin, cụ thể áp dụng trong bảo mật chương trình đa luồng Khái niệm đa luồng sử dụng ở đây để chỉ ra trong các hệ thống hay chương trình có nhiều tiến trình hoạt động song song đồng thời với nhau

2 Mục đích nghiên cứu

- Tìm hiểu cách thức phân tích định lượng luồng tin dựa trên lý thuyết thông tin [11], với một số tham số chính như: entropy, min-entropy

- Áp dụng phân tích định lượng luồng tin cho chương trình đa luồng

- Xây dựng chương trình tính toán mô phỏng định lượng luồng tin và kiểm thử trên một số trường hợp cụ thể

3 Đối tượng và phạm vi nghiên cứu

3.1 Đối tượng nghiên cứu

- Lý thuyết thông tin (Shannon, 1948) [11]

- Lý thuyết xác suất

- Lý thuyết định lượng luồng tin

- Chương trình đa luồng

3.2 Phạm vi nghiên cứu

- Phương pháp định lượng luồng tin cho các chương trình đa luồng

- Kiểm tra ứng dụng thuật toán cho các chương trình viết trên Matlab

4 Phương pháp nghiên cứu

Phương pháp luận của luận văn là kết hợp nghiên cứu lý thuyết và mô phỏng để làm rõ nội dung đề tài Cụ thể như sau:

Trang 9

- Nghiên cứu phương pháp phân tích định lượng luồng tin dựa vào lý thuyết thông tin trên cơ sở khái niệm entropy

- Nghiên cứu mô hình chương trình đa luồng và ứng dụng thuật toán cho các chương trình này

- Sử dụng Matlab để thực hiện tính toán mô phỏng định lượng luồng tin, và áp dụng chương trình này để kiểm thử một số chương trình đa luồng đơn giản

- Đánh giá kết quả thực hiện

5 Ý nghĩa khoa học và thực tiễn của đề tài

Bên cạnh thuật toán mang ý nghĩa khoa học trong lĩnh vực bảo mật thông tin, đề tài còn đề xuất phương án xây dựng một chương trình mô phỏng, tính toán tự động giá trị thông tin bị rò rỉ, có khả năng áp dụng cho một số chương trình đơn giản trong thực tế

6 Cấu trúc của luận văn

Nội dung của luận văn gồm các 4 chương và có nội dung như sau:

Chương 1 – Cơ sở lý thuyết bảo mật thông tin, trình bày các vấn đề về lý thuyết

thông tin, xác suất, khái niệm lượng tin, khái niệm entropy làm cơ sở cho lý thuyết bảo mật thông tin

Chương 2 – Lượng tin rò rỉ của chương trình Giới thiệu hai khía cảnh bảo mật

thông tin, bao gồm định tính và định lượng luồng thông tin, chỉ ra một số phương pháp tính toán lượng tin rò rỉ của chương trình

Chương 3 – Lượng tin rò rỉ của chương trình đa luồng Định nghĩa chương trình

đa luồng, phương pháp tính toán lượng tin rò rỉ của chương trình đa luồng dựa trên

mô hình chuyển trạng thái trong thực thi chương trình đa luồng có ảnh hưởng của bộ lập lịch

Chương 4 – Xây dựng chương trình mô phỏng phân tích định lượng luồng tin Mô

tả thuật toán, hoạt động của công cụ tự động định lượng luồng tin bằng cách tính toán lượng tin rò rỉ của chương trình đa luồng Áp dụng vào một số ví dụ để kiểm chứng tính chính xác của chương trình

Trang 10

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT BẢO MẬT THÔNG TIN

1.1 Lý thuyết xác suất

Lý thuyết xác suất liên quan đến khảo sát có tính quy luật của các quá trình ngẫu nhiên Các quá trình ngẫu nhiên này có thể là một thí nghiệm cụ thể, đo đạc quan sát hay thu thập dữ liệu từ một sự kiện cụ thể nào đó, và thực hiện dựa trên một tập các điều kiện xác định trước Biến cố xảy ra của phép thử là kết quả của phép thử đó và thường có các tính chất như sau: độc lập, phân bố giống nhau và không thể dự đoán một cách chắc chắn Tần suất xuất hiện của mỗi biến cố của một quá trình ngẫu nhiên được gọi là xác suất của biến cố đó Có thể lấy ví dụ gieo đồng tiền là một phép thử ngẫu nhiên, hai biến cố có thể xảy ra là xuất hiện mặt sấp và xuất hiện mặt ngửa, với xác suất là ½ đối với số lần thử nhiều

Lý thuyết xác suất gồm hai nhánh riêng biệt: phân bố xác suất rời rạc và phân bố xác suất liên tục Định nghĩa cho phân bố xác suất rời rạc được nêu ra như bên dưới

Định nghĩa 1.1 [Biến ngẫu nhiên rời rạc] Một biến ngẫu nhiên rời rạc X là một

hàm ánh xạ các biến cố đến một tập các giá trị đếm được (ví dụ, số nguyên), với mỗi giá trị nằm trong miền giá trị có xác suất lớn hơn 0, được xác định như sau: 𝑋: 𝐷 →ℛ(𝐷), trong đó D là tập hữu hạn với phân bố xác suất xác định, và ℛ là miền giá trị

hữu hạn của X

Định nghĩa 1.2 [Phân bố xác suất rời rạc] Gọi D là tập các giá trị của biến ngẫu

nhiên rời rạc X Khi đó, phân bố xác suất rời rạc trên D được xác định sao cho

∑𝑥∈𝐷𝑃(𝑋 = 𝑥)= 1

Định nghĩa 1.3 [Xác suất liên kết] Một cặp biến ngẫu nhiên (𝑥, 𝑦) liên kết với một

sự kiện tạo thành một biến ngẫu nhiên liên kết

Nếu x, y là rời rạc, sự phân bố xác suất liên kết này được định nghĩa là 𝑝𝑖𝑗 =𝑃(𝑥 = 𝑥𝑖, 𝑦 = 𝑦𝑗)

Định nghĩa 1.4 [Xác suất có điều kiện] Xác suất của y trong điều kiện đã biết x

được gọi là xác suất có điều kiện và được định nghĩa là:

𝑝(𝑦 | 𝑥) = 𝑝(𝑥, 𝑦)

𝑝(𝑥)

Trang 11

1.2 Lý thuyết thông tin

1.2.1 Khái niệm thông tin

Khái niệm thông tin là một khái niệm trừu tượng, phi vật chất và rất khó được định nghĩa một cách chính xác Để hiểu các khía cạnh của khái niệm này, chúng ta xem xét và phân tích ví dụ sau

Ví dụ 1 Một người A đang muốn biết về một điều gì đó và hỏi người B, người B

trả lời cho người A biết Chẳng hạn người A có thể hỏi người B: “Ai thắng trong trận bóng đá ngày hôm qua?”, hoặc “Hôm nay có chuyện gì mới không?”, “Trường có

thông báo gì mới không?” Cái mà người A muốn biết là một cái nào đó hay một điều

gì đó trong một tập những cái/điều có thể Tập có thể này người A có thể biết hoặc

không Chẳng hạn trong câu hỏi đầu, “tập có thể” này người A có thể biết, còn trong hai câu hỏi sau “tập có thể” này người A có thể không biết Cho dù trong trường hợp nào, người A cũng muốn biết cái nào chính xác trong “tập có thể” này Khi người B

trả lời có nghĩa là người B đang cung cấp thông tin giúp người A nhận biết chính xác

cái/điều này Ví dụ này giúp chúng ta nhận ra rằng, thông tin là cái nhằm để giúp người nhận biết được điều chính xác trong tập những điều có thể

Định nghĩa 1.5 [Thông tin] Ở đây giới thiệu một vài định nghĩa của thông tin theo

quan niệm thông thường chứ không hoàn toàn theo quan niệm kỹ thuật

1 Thông tin là sự cảm nhận và hiểu biết của con người về thế giới xung quanh (thông qua tiếp xúc với nó) Như vậy thông tin là hiểu biết của con người, càng tiếp xúc với môi trường xung quanh, con người càng hiểu biết và làm tăng lượng thông tin thu nhận được

2 Thông tin là một hệ thống những tin báo và mệnh lệnh giúp loại trừ sự không chắc chắn trong trạng thái của nơi nhận tin

3 Thông tin là một hiện tượng vật lý, nó thường tồn tại và được truyền đi dưới dạng vật chất nào đó, chẳng hạn như âm thanh, dòng điện, sóng điện từ, sóng ánh sáng… Những dạng vật chất hay những đại lượng vật lý dùng để mang thông tin được gọi là tín hiệu

Về bản chất, thông tin có tính chất ngẫu nhiên, có nghĩa là không biết trước Thật vậy, tin tức được thông báo chỉ có ý nghĩa khi người nhận chưa biết trước, còn nếu người nhận đã biết trước thì tin tức không còn ý nghĩa nữa Vì vậy, tín hiệu mang tin tức cũng là tín hiệu ngẫu nhiên và mô hình toán học của nó là các quá trình ngẫu nhiên Lý thuyết thông tin sẽ dựa trên tính ngẫu nhiên của tin tức, có nghĩa là xét đến tính bất ngờ (hay tính bất định) của tin tức đối với nơi nhận tin

Trang 12

1.2.2 Lượng tin

Để so sánh định lượng các tin tức với nhau, người ta đưa ra khái niệm lượng đo tin tức hay nói vắn tắt là lượng tin Vậy lượng tin của một tin được định nghĩa như thế

nào? Chúng ta thấy một tin tức đối với người nhận đều mang hai nội dung, một là độ

bất định (độ bất ngờ) của tin, hai là ý nghĩa của tin Để có thể so sánh các tin với

nhau, chúng ta có thể lấy một trong hai hoặc cả hai tính chất trên làm thước đo Truy nhiên khía cạnh ngữ nghĩa của tin chỉ có ý nghĩa đối với con người chúng ta, chứ không có ý nghĩa đối với các hệ thống thông tin Thay vào đó, khía cạnh quan trọng nằm ở chỗ tin thực sự là một cái được chọn từ tập các tin có thể Hệ thống được thiết

kế để hoạt động cho mỗi khả năng được lựa chọn, vì điều này không biết trước tại thời điểm thiết kế Chúng ta xét ví dụ sau để hiểu rõ hơn về điều này

Ví dụ 2 Một người chọn ngẫu nhiên họ và tên một sinh viên trong một danh sách

gồm 16 sinh viên, và đố chúng ta làm sao để biết được anh ta đang chọn sinh viên nào Để biết được điều này, chúng ta có một số cách sau: Chúng ta sẽ hỏi các câu hỏi

“Đúng/Sai” và yêu cầu được trả lời Như vậy sau khi hỏi bốn câu hỏi “Đúng/Sai”, chúng ta sẽ biết chính xác họ tên sinh viên nào đang được chọn Chẳng hạn câu hỏi đầu tiên là “Cái được chọn có thuộc tám phần tử đầu hay không?” Nếu được trả lời

“Đúng” thì chúng ta ghi 0, ngược lại chúng ta ghi 1 Sau câu hỏi này chúng ta biết cái được chọn thuộc vào tám phần tử nào (đầu hay cuối) Tiếp tục thêm ba câu hỏi kiểu như trên, ta sẽ biết chính xác cái đang được chọn

Như vậy, để biết chính xác cái nào đang được chọn (chúng ta có thể xem mỗi cái

là một tin), chúng ta sẽ sử dụng bốn câu hỏi “Đúng/Sai” và bốn câu trả lời tương ứng

sẽ cung cấp cho ta một lượng tin 4 bit để biết chính xác cái nào đang được chọn

Tổng quát, nếu chúng ta cần biết chính xác cái nào đang được chọn trong một tập

n cái thì chúng ta có thể dùng 𝑙𝑜𝑔2𝑛 câu hỏi “Đúng/Sai”, hoặc dùng 𝑙𝑜𝑔𝑚𝑛 câu hỏi

mà mỗi câu có m câu trả lời Mỗi câu hỏi tương ứng có một câu trả lời sẽ cung cấp cho chúng ta một lượng tin để biết rõ hơn về cái đang cần biết Vì vậy chúng ta có

thể xem lượng tin chính là số lượng câu hỏi cần dùng để biết chính xác cái nào đang được chọn Ví dụ trên đây cho chúng ta thấy, nếu số tin trong tập tin càng nhiều thì

sẽ mang lại một lượng tin càng lớn khi nhận được một tin

Trong trường hợp trình bày ở trên, chúng ta đang coi các tin trong tập là bình đẳng như nhau, có nghĩa là xác suất được chọn (hay xác suất xuất hiện) là như nhau Bây giờ chúng ta xét trường hợp tổng quát hơn các tin có thể có xác suất được chọn (hay xuất hiện) không như nhau, và chúng ta được yêu cầu là dùng bao nhiêu câu hỏi để

Trang 13

nhận biết cái nào đang được chọn Do xác suất được chọn khác nhau nên số câu hỏi cho mỗi tin được chọn cũng sẽ khác nhau

Ví dụ 3 Trên một con đường có bốn loại xe lưu thông có các màu lần lượt là đỏ,

xanh, vàng, trắng Ở một trạm kiểm soát lưu thông, dựa vào tần suất xe lưu thông qua trạm, người ta thấy rằng trong một đơn vị thời gian, xác suất để xuất hiện xe đỏ là 1/2, xe xanh là 1/4, xe vàng là 1/8 và xe trắng là 1/8 Câu hỏi được đặt ra là cần tốn bao nhiêu câu hỏi nhị phân để biết được xe nào đang chạy qua trạm?

Đối với xe đỏ, do xác suất xuất hiện là 1/2, có nghĩa là một trong hai khả năng có thể Do đó chỉ cần một câu hỏi nhị phân

Đối với xe xanh, vì xác suất là 1/4, có nghĩa là một trong bốn khả năng có thể, như vậy chúng ta cần sử dụng hai câu hỏi

Tương tự như vậy, chúng ta cần có ba câu hỏi để biết được có phải xe vàng hay xe trắng chạy qua không

Tuy vậy, để trả lời câu hỏi: cần bao nhiêu câu hỏi để biết chính xác thì chúng ta có thể tính trung bình theo xác suất xuất hiện của mỗi chiếc Kết quả chúng ta cần sử dụng số câu hỏi là,

lượng tin khi nhận được tin này cũng sẽ càng lớn Như vậy, lượng tin của một tin tỷ

lệ thuận với số khả năng của một tin và tỷ lệ nghịch với xác suất xuất hiện của tin đó

Đồng thời ta cũng thấy rằng xác suất xuất hiện của một tin tỷ lệ nghịch với độ bất

định (uncertainty) khi nhận được một tin Thật vậy, nếu xác suất xuất hiện của tin

càng nhỏ thì độ bất định khi nhận được tin càng lớn

Qua những điều đã trình bày ở trên, ta thấy rằng thật hợp lý khi dùng độ bất định hay xác suất làm thước đo thông tin trong kỹ thuật Một tin có xác suất xuất hiện càng nhỏ thì có độ bất định càng lớn, lượng tin càng lớn, và ngược lại

Định nghĩa 1.6 [Lượng tin] Lượng đo thông tin của một tin được đo bằng

logarithm của độ bất định của tin hay nghịch đảo xác suất xuất hiện của tin đó

𝐼(𝑥) = 𝑙𝑜𝑔2 1

𝑝(𝑥) = − 𝑙𝑜𝑔2𝑝(𝑥)

Trang 14

Đơn vị của lượng tin tuỳ thuộc vào cách chọn cơ số của logarithm Nếu cơ số là 2 thì đơn vị là bit (cho các ký số nhị phân); nếu cơ số là e thì đơn vị là nats (cho đơn vị

tự nhiên); nếu cơ số là 10 thì đơn vị là hartley

Định nghĩa 1.6 [Lượng tin trung bình] Lượng tin trung bình của một nguồn tin 𝑋

là lượng tin trung bình chứa trong một ký hiệu bất kỳ của nguồn tin Nó thường được

ký hiệu là 𝐼(𝑋) và được tính bằng công thức sau:

Để tính toán lượng tin trung bình, lý thuyết thông tin sẽ sử dụng khái niệm entropy,

ℋ, để xác định sự bất định trong việc dự đoán giá trị của biến ngẫu nhiên Ở đây, ta

sẽ xem xét hai loại entropy và sử dụng các khái niệm này trong khía cạnh bảo mật thông tin sẽ được trình bày ở chương tiếp theo

Entropy có đơn vị tính bằng bit, và xác định độ bất định của một biến ngẫu nhiên

Về cơ bản, entropy chính là lượng bit thông tin trung bình dung để mô tả một biến ngẫu nhiên

Ví dụ 4 Entropy của một biến ngẫu nhiên mô tả quá trình tung hạt xúc xắc (với

xác suất xuất hiện của từng mặt là 1/6) là ∑ 1

6log216

𝑥∈{1,…,6} ≈ 2.58 𝑏𝑖𝑡𝑠 Giả sử hạt xúc xắc có trong lượng không đều khiến cho mặt số sáu luôn luôn xuất hiện trong mỗi lần gieo (hay phân bố xác suất gieo ra mặt số sáu là 1 và xác suất gieo ra các mặt còn lại là 0), entropy của biến ngẫu nhiên lúc này sẽ là ∑𝑥∈{1,…,5}0 log20+

Trang 15

∑𝑥∈{6}1 log21= 0 𝑏𝑖𝑡𝑠 Điều này có nghĩa là giá trị biến ngẫu nhiên là xác định, luôn dự đoán chính xác được

Định nghĩa entropy cho một biến ngẫu nhiên có thể mở rộng cho hai biến ngẫu nhiên, gọi là entropy hợp

Định nghĩa 1.8 [Entropy liên kết [10]] Entropy liên kết ℋ(𝑋, 𝑌) của hai biến ngẫu nhiên rời rạc (𝑋, 𝑌) với xác suất hợp 𝑝(𝑥, 𝑦) được định nghĩa như sau:

ℋ(𝑋, 𝑌) = ∑ ∑ 𝑝(𝑥, 𝑦) log2𝑝(𝑥, 𝑦)

𝑦∈𝑌 𝑥∈𝑋

Entropy hợp của hai biến ngẫu nhiên xác định lượng thông tin kết hợp giữa chúng Đối với hai biến ngẫu nhiên độc lập, entropy hợp là tổng của các entropy thành phần, bởi vì độ bất định của giá trị hai biến sẽ ít hơn so với trường hợp hai biến này độc lập, hay nói cách khác ℋ(𝑋, 𝑌) ≤ ℋ(𝑋) + ℋ(𝑌)

Entropy có điều kiện đo lường sự không dự đoán được của một biến ngẫu nhiên cho trước sao cho giả sử đã biết trước giá trị của một biến ngẫu nhiên khác Entropy

có điều kiện được định nghĩa dựa trên entropy hợp của hai biến ngẫu nhiên và entropy của biến ngẫu nhiên đã biết trước giá trị

Định nghĩa 1.9 [Entropy có điều kiện [10]] Giả sử (𝑋, 𝑌) tuân theo phân bố xác suất hợp 𝑝(𝑥, 𝑦), xác suất có điều kiện ℋ(𝑌|𝑋) = ∑ 𝑝(𝑥)ℋ(𝑌|𝑋 = 𝑥)𝑥 được xác định như sau:

Để tính toán lượng thông tin của một biến ngẫu nhiên chứa trong giá trị một biến ngẫu nhiên khác, chúng ta sử dụng khái niệm lượng tin tương hỗ Lượng tin tương hỗ chính là sự giảm độ bất định về một biến ngẫu nhiên khi đã biết về một biến ngẫu nhiên khác

Định nghĩa 1.10 [Lượng tin tương hỗ] Gọi 𝑝(𝑥, 𝑦) là phân bố xác suất hợp của

𝑥 ∈ 𝑋 và 𝑦 ∈ 𝑌, khi đó lượng tin tương hỗ giữa X và Y, ℐ(𝑋; 𝑌), được cho bởi công thức sau:

ℐ(𝑋; 𝑌) = ∑ ∑ 𝑝(𝑥, 𝑦) log2 𝑝(𝑥, 𝑦)

𝑝(𝑥)𝑝(𝑦)

𝑦∈𝑌 𝑥∈𝑋

Trang 16

= ℋ(𝑋) − ℋ(𝑋|𝑌) = ℋ(𝑌) − ℋ(𝑌|𝑋)

1.3.2 Min-entropy

Định nghĩa 1.11 [Min-entropy [5]] Gọi 𝑝(𝑥) là xác suất của biến X nhận được tại giá trị x, khi đó min-entropy ℋ𝑅é𝑛𝑦𝑖(𝑋) của biến ngẫu nhiên X được định nghĩa như sau:

Định nghĩa 1.12 [Min-entropy có điều kiện theo Smith [5]] Min-entropy có điều

kiện của một biến ngẫu nhiên X với biến ngẫu nhiên Y cho trước được xác định theo công thức sau:

ℋ𝑆𝑚𝑖𝑡ℎ(𝑋|𝑌) = − 𝑙𝑜𝑔2∑ 𝑝(𝑌 = 𝑦) ∙ 𝑚𝑎𝑥

𝑥∈𝑋 𝑝(𝑋 = 𝑥|𝑌 = 𝑦)

𝑦∈𝑌

Định nghĩa 1.13 [Min-entropy có điều kiện theo Cachin [7]] Min-entropy có điều

kiện của một biến ngẫu nhiên X với biến ngẫu nhiên Y cho trước được xác định theo công thức sau:

Trang 17

CHƯƠNG 2 LƯỢNG TIN RÒ RỈ CỦA CHƯƠNG TRÌNH

2.1 Bảo mật luồng thông tin

Bảo mật luồng thông tin là điều khiển và giám sát sự di chuyển của thông tin trong một chương trình hay hệ thống thông tin Một luồng thông tin được xem là bảo mật nếu luồng thông tin này thoả mãn một chính sách bảo mật nhất định Tương tự, một chương trình được xem là bảo mật nếu tất cả các luồng thông tin đều thoả mãn chính sách bảo mật này

Một chính sách bảo mật thông tin có thể xem gồm hai tính chất chính cơ bản: tính

bảo mật (confidentiality) và tính toàn vẹn (integrity) Tính bảo mật luồng thông tin

đảm bảo các thông tin có tính bảo mật cao sẽ không ảnh hưởng đến các thông tin có tính bảo mật thấp và có thể quan sát được trong hệ thống thông tin Tính chất này quy định những đối tượng nào có thể đọc được dữ liệu và xác định được hướng di chuyển

tiếp theo của luồng thông tin trong hệ thống Tính toàn vẹn luồng thông tin đảm bảo

các thông tin không tin cậy sẽ không ảnh hưởng đến sự đúng đắn của kết quả của chương trình hay hệ thống Tính chất này ràng buộc những đối tượng nào có thể ghi vào dữ liệu và xác định được luồng thông tin đến từ đâu trong hệ thống

Luận văn này chủ yếu tập trung vào tính chất bảo mật luồng thông tin, với mục tiêu chính là tìm hiểu ảnh hưởng của dữ liệu chứa thông tin bí mật lên dữ liệu chứa thông tin công cộng

Một thuộc tính lý tưởng của tính bảo mật đó là tính chất không can nhiễu

(non-interference), trong đó đảm bảo rằng không một thông tin bí mật đầu vào nào có thể

thu được bằng cách quan sát dữ liệu đầu ra công cộng của chương trình Điều này có nghĩa là các dữ liệu bí mật sẽ không bị tiết lộ thông tin của mình thông qua quá trình thực thi chương trình hay hoạt động của hệ thống thông tin

Trái lại, ta có tính chất can nhiễu (interference) Tính chất can nhiễu giữa các biến

trong một chương trình có khả năng kết thúc có thể được chỉ ra như sau: Giả sử đối

với một chương trình P có khả năng kết thúc, với tập hợp các biến có mức độ bảo

mật cao 𝐻 = ℎ1, … , ℎ𝑛 và tập các biến có mức độ bảo mật thấp 𝐿 = 𝑙1, … , 𝑙𝑛 Chương

trình P gọi là bảo mật nếu và chỉ nếu các giá trị của L tại thời điểm chương trình P kết thúc là độc lập với các giá trị khởi tạo ban đầu của H Can nhiễu xảy ra trong

trường hợp giá trị của biến này ảnh hưởng đến giá trị của biến khác trong chương trình

Trang 18

Phương pháp phân tích bảo mật luồng thông tin về cơ bản có thể được chia làm hai phương pháp chính: Phân tích định tính luồng thông tin và phương pháp phân tích định lượng luồng thông tin

2.1.1 Phân tích định tính luồng thông tin

Một phương pháp phân tích luồng tin là phương pháp phân tích định tính luồng thông tin Phương pháp này xác định thông tin bí mật có bị tiết lộ thông qua các thông tin công cộng hay không Nếu có, hệ thống này sẽ bị xem là không bảo mật

Luồng thông tin chính là luồng di chuyển của thông tin từ biến này đến biến khác trong chương trình hay hệ thống thông tin Trong phương pháp phân tích luồng thông tin, mỗi biến sẽ được gán một mức độ bảo mật Thông thường, một mô hình cơ bản

sẽ bao gồm hai mức độ bảo mật: thấp (low) (L) và cao (high) (H), hay còn gọi là thông tin công cộng có thể quan sát được (publicly observable) và thông tin bí mật (private) Phương pháp phân tích định tính luồng thông tin sẽ chỉ ra có bất kỳ luồng

thông tin nào từ mức độ bảo mật cao di chuyển đến mức độ bảo mật thấp Ví dụ với chương trình dưới đây:

𝑖𝑓 (𝑆 > 0) 𝑡ℎ𝑒𝑛 𝑂 ≔ 0 𝑒𝑙𝑠𝑒 𝑂 ≔ 1;

trong đó S là biến bí mật, O là biến công cộng

Chương trình này không thoả mãn tính chất định tính bảo mật, vì thông qua giá trị của O, người tấn công có thể biết được thông tin về S

2.1.2 Phân tích định lượng luồng thông tin

Nếu như mục đích phân tích định tính nhằm xác định một hệ thống có an toàn không bằng cách trả lời câu hỏi rằng hệ thống có bị rò rỉ thông tin hay không, thì phân tích định lượng, ngoài việc xác định luồng di chuyển của thông tin, còn cho phép xác định hay ước lượng lượng tin mà người tấn công có thể thu thập được khi hệ thống

bị mất bảo mật Hay nói cách khác, phân tích định lượng cho phép xác định được có lượng thông tin đã bị tiết lộ ra bên ngoài trong trường hợp hệ thống rò rỉ thông tin

Rõ ràng, phương pháp phân tích định lượng hiệu quả hơn ở khía cạnh bảo mật thông tin Phương pháp phân tích luồng thông tin có yêu cầu xác định có bao nhiêu lượng

thông tin bị tiết lộ được gọi là phương pháp định lượng luồng thông tin (Quantitative

Information Flow)

Như đã trình bày ở trên, tính chất không can nhiễu được sử dụng để chứng minh rằng hệ thống hoạt động an toàn, trong khi tính can nhiễu sẽ chỉ ra một số điểm không hoạt động tốt Tuy nhiên, điều này chỉ đúng trong trường hợp sự can nhiễu lớn hơn

Trang 19

một mức ngưỡng (threshold) nào đó Một ví dụ điển hình đó là hệ thống thông tin sử

dụng điều khiển truy cập Để có thể đăng nhập vào hệ thống, người sử dụng cần phải thực hiện bước chứng thực bằng cách sử dụng một khoá mật khẩu Trong quá trình này, bất kể thông tin chứng thực được nhập vào là đúng hay sai, cũng đã làm rỏ rỉ một phần nhỏ lượng thông tin Điều này có thể giải thích là dù cho người tấn công sử dụng sai mật khẩu, cũng đã chỉ ra rằng mật khẩu đó không phải là mật khẩu đúng, từ

đó làm tiết lộ một phần nhỏ thông tin bí mật Trường hợp này, hệ thống đã xuất hiện

sự can nhiễu Nếu sự can nhiễu này là đủ nhỏ, ta xem như hệ thống vẫn đảm bảo được tính bảo mật của nó

Để quá trình phân tích định lượng luồng tin được rõ ràng và sáng tỏ, chúng ta giả

sử rằng: Thứ nhất, chương trình luôn luôn kết thúc, và người tấn công biết về mã

nguồn của chương trình Chúng ta chỉ giới hạn chương trình chỉ có một đầu vào có

độ bảo mật cao S và một đầu ra có độ bảo mật thấp O Mục tiêu đó là tính toán lượng

thông tin về S đã bị thu được bằng cách quan sát O Chúng ta cũng giả sử rằng tập giá trị của dữ liệu là hữu hạn

Thứ hai, giả sử rằng có một phân bố xác suất tiền định, đã biết trước của các giá

trị của biến bí mật

Cuối cùng, mô hình sử dụng trong phân tích là mô hình một lần thử (one-try

guessing), có nghĩa là sau khi quan sát đầu ra của chương trình, người tấn công chỉ

có thể dự đoán giá trị của S một lần duy nhất Mô hình này phù hợp với nhiều trường hợp an ninh, ví dụ hệ thống sẽ kích hoạt chuông báo động hoặc khoá tài khoản nếu người tấn công bấm sai mật khẩu một lần

Xét một số ví dụ để hiểu rõ hơn về lượng tin bị tiết lộ khi các thực thi chương trình như bên dưới:

(𝑃1) 𝑂 ≔ 𝑆;

(𝑃2) 𝑂 ≔ 𝑆 𝑚𝑜𝑑 2;

(𝑃3) 𝑖𝑓 (𝑆 == 0) 𝑡ℎ𝑒𝑛 𝑂 ≔ 0 𝑒𝑙𝑠𝑒 𝑂 ≔ 1;

trong đó S là biến bí mật, O là biến công cộng

Chương trình 𝑃1, người tấn công biết hoàn toàn về thông tin bí mật của S Chương trình 𝑃2 cho biết biến S là chẵn hay lẻ thông qua biến O, hay chương trình đã làm tiết

lộ một bit thông tin của S Tương tự, chương trình 𝑃3 cũng làm một bit thông tin của

S di chuyển vào O, và O sẽ biết được biến S có bằng 0 hay không

Trang 20

Ta nhận thấy rằng quá trình thực thi chương trình đã làm giảm sự không chắc chắn

về thông tin bí mật và gây ra sự tiết lộ thông tin Phương pháp định lượng luồng thông tin sẽ cung cấp công cụ để tính toán lượng thông tin bị tiết lộ, từ đó so sánh với một mức ngưỡng cho trước để xác định chương trình có bảo mật hay không Các phương pháp tính toán định lượng luồng thông tin chủ yếu dựa trên cơ sở của lý thuyết thông tin Shannon Để tính toán định lượng thông tin, ta xem chương trình như một kênh thông tin Khi đó, lý thuyết toán học về thông tin của Shannon sẽ phù hợp để tính toán lượng thông tin qua các kênh truyền này

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,

Trang 21

23)

Trang 22

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

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

Trang 23

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

ℒ𝑆ℎ𝑎𝑛𝑛𝑜𝑛(𝑃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

2 64 =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

2 55, 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

Trang 24

Xác suất để chuỗi 𝐿𝑖𝑛 trùng với mật khẩu 𝑝(𝑂 = 1) = |𝑆|1 Do đó, 𝑝(𝑂 = 1) =

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à,

ℒ𝑆𝑚𝑖𝑡ℎ(𝑃4) = ℋ𝑅é𝑛𝑦𝑖(𝑆) − (𝑆|𝑂) = 1

2.3 Kết luận chương 2

Để tiến hành phân tích định lượng luồng thông tin, ta sử dụng một tham số được gọi là lượng tin rò rỉ Đây là một đại lượng để đo lượng tin của biến bí mật bị thu được nhờ vào việc quan sát biến công cộng Có hai phương pháp sử dụng để tính toán lượng tin này, bằng cách sử dụng Shannon entropy và min-entropy Như một số ví dụ

đã nêu ở trên, việc áp dụng công thức nào tuỳ thuộc vào từng trường hợp phân tích

và chương trình cụ thể, và không thể chỉ ra một cách khái quát hoá được

Trang 25

CHƯƠNG 3 LƯỢNG TIN RÒ RỈ CỦA CHƯƠNG TRÌNH ĐA LUỒNG

3.1 Bảo mật luồng thông tin trong chương trình đa luồng

3.1.1 Chương trình đa luồng

Có rất nhiều các hệ thống yêu cầu tính bảo mật cao hoạt động dựa trên cơ sở của

đa luồng tin (multi-threading) Khái niệm đa luồng tin sử dụng để chỉ ra trong các hệ thống này có nhiều tiến trình hoạt động song song đồng thời với nhau Một số ví dụ

về các hệ thống này đó là dịch vụ hướng web (web-based services), cơ sở dữ liệu và

hệ điều hành Cùng với sự phổ biến của các bộ vi xử lý đa nhân, hay các hệ thống song song như bộ xử lý đồ hoạ, đa luồng đang dần trở thành một tiêu chuẩn trong xử

lý thông tin Tuy nhiên, để đảm bảo được vấn đề bảo mật trong chương trình đa luồng

là một thách thức thực sự, do dữ liệu trong các chương trình này thường khó dự đoán được trong quá trình thực thi chương trình, và do đó rất khó để dự đoán được người tấn công đã quan sát được gì

Xét ví dụ về một chương trình đa luồng như bên dưới, với 𝑆 là biến lưu thông tin

bí mật, 𝑂 là biến lưu thông tin công cộng, trong đó 𝑆 ∈ 𝐻 (tập các biến có mức độ bảo mật cao, hay là thông tin bí mật), và 𝑂 ∈ 𝐿 (tập các biến có mức độ bảo mật thấp, hay là thông tin công cộng có thể quan sát được)

Ví dụ 7 (Chương trình đa luồng)

𝑂 ≔ 0;

({𝑖𝑓 (𝑂 = 1) 𝑡ℎ𝑒𝑛 𝑂 ≔ 𝑆 𝑒𝑙𝑠𝑒 𝑠𝑘𝑖𝑝} ∥ 𝑂 ≔ 1; )

𝑂 ≔ 1;

Gọi 𝐶1 và 𝐶2 là hai toán hạng ở bên trái và bên phải của toán tử song song ∥ 𝐶1 và

𝐶2 là hai luồng của chương trình đa luồng Khi thực thi chương trình này, ta thu được vệt chương trình 𝑇|𝑂 theo biến 𝑂, hay chính là các trạng thái tuần tự của 𝑂 khi thực hiện chương trình, phụ thuộc vào luồng nào được thực hiện trước

𝑇|𝑂 = {[0,1,1] 𝑛ế𝑢 𝐶1 𝑡ℎự𝑐 ℎ𝑖ệ𝑛 𝑡𝑟ướ𝑐

[0,1, 𝑆, 1] 𝑛ế𝑢 𝐶2 𝑡ℎự𝑐 ℎ𝑖ệ𝑛 𝑡𝑟ướ𝑐

3.1.2 Tính bảo mật của chương trình đa luồng

Như đã trình bày ở trên, tính chất không can nhiễu (non-interference) là một tính

chất bảo mật cơ bản thường được sử dụng trong các chương trình tuần tự Tính chất không can nhiễu sẽ chỉ ra rằng chương trình được xem là bảo mật khi một tập các giá

Trang 26

trị cuối cùng có thể có của các biến công cộng là độc lập với tập các giá trị ban đầu của các biến bí mật Tuy nhiên, tính chất này lại không phù hợp với chương trình đa luồng Có hai lý do để giải thích điều này

Thứ nhất, do sự trao đổi các kết quả trung gian trong quá trình thực thi chương trình đa luồng, việc phân tích luông thông tin cần phải xem xét them sự rò rỉ thông tin ở các trạng thái trung gian này

Xét lại Ví dụ 7 (chương trình đa luồng), chương trình được xem là bảo mật, vì giá

trị cuối cùng của 𝑂 là độc lập với giá trị ban đầu của 𝑆 Tuy nhiên, chương trình này

rò rỉ toàn bộ thông tin bí mật, vì người tấn công có thể truy cập 𝑆 thông qua trạng thái trung gian của vệt dữ liệu công cộng khi luồng 𝐶2 được thực hiện trước

Do đó, định nghĩa về tính chất không can nhiễu chỉ xét đến rò rỉ thông tin ở trạng thái cuối là chưa đủ để đảm bảo tính bảo mật của chương trình đa luồng Trong trường hợp này, cần phải đảm bảo rằng các dữ liệu bí mật cũng không bị tiết lộ trong toàn

bộ tiến trình thực thi chương trình đa luồng, hay chính là các trình tự của các trạng thái trong quá trình thực thi chương trình

Thứ hai, một chương trình đa luồng thực thi các luồng từ một tập các luồng không kết thúc Trong quá trình thực thi này, bộ lập lịch sẽ lựa chọn lập đi lặp lại luồng nào

sẽ được thực thi tiếp theo với một xác suất xác định Do đó, vệt dữ liệu của chương trình đa luồng sẽ phụ thuộc vào bộ lập lịch được áp dụng trong chương trình Trong

trường hợp này, chúng ta sử dụng khái niệm chương trình có tính xác suất (probabilistic programs), trong đó giả sử chúng ta biết trước về xác suất của bộ lập

lịch khi lựa chọn các luồng

3.1.3 Ảnh hưởng của bộ lập lịch trong chương trình đa luồng

Vì đầu ra của chương trình đa luồng phụ thuộc vào bộ lập lịch, do đó để có thể xây dựng một mô hình phù hợp cho chương trình đa luồng, chúng ta cần phải biết được người tấn công đã thu được những thông tin gì dựa trên bộ lập lịch được lựa chọn Ta xem xét ví dụ bên dưới

Ví dụ 8:

𝑂 ≔ 𝑆/2 ∥ 𝑂 ≔ 𝑆 𝑚𝑜𝑑 2 Giả sử người tấn công thực thi chương trình trên với bộ lập lịch có xác suất phân

bố đều, nghĩa là bộ lập lịch sẽ chọn một trong hai luồng để thực hiện với xác suất là bằng nhau Nếu 𝑆 có kiểu dữ liệu 2-bit có phân bố đều, sẽ có 4 vệt chương trình có thể có với cùng một xác suất xuất hiện, đó là {00,01,10,11}

Trang 27

S 0 1 2 3

𝑇|𝑂 0 0 0 1 1 0 1 1

0 0 1 0 0 1 1 1 Nếu vệt chương trình thu được là 00 hoặc 11, người tấn công biết chính xác được

𝑆 sẽ tương ứng bằng 0, hoặc 3 Tuy nhiên, nếu vệt chương trình bằng 01 hoặc 10, người này cũng chỉ có thể dự đoán được 𝑆 hoặc bằng 1 hoặc bằng 2, với cùng một xác suất chính xác Do đó, với bộ lập lịch này, thông tin bí mật không bị tiết lộ hoàn toàn

Tuy nhiên, nếu người tấn công sử dụng bộ lập lịch luôn luôn chọn luồng 𝑂 ≔ 𝑆/2

để thực hiện trước, sẽ có 4 vệt chương trình có thể có là {00,01,10,11} Tuy nhiên trong trường hợp này, người tấn công luôn biết chính xác được giá trị của 𝑆

Vì vậy, để xây dựng một mô hình phân tích định lượng luồng tin cho chương trình

đa luồng, ta cần phải xem xét một số yếu tố sau: (1) giá trị của biến công cộng ở các trạng thái trung gian có ảnh hưởng như thế nào đến dữ liệu bí mật mà người tấn công

có thể thu được, (2) ảnh hưởng của bộ lập lịch đến lượng thông tin rò rỉ của chương trình

3.1.4 Mô hình chương trình đa luồng

Mô hình chương trình đa luồng được xây dựng dựa trên bộ lập lịch có tính xác suất

Định nghĩa 3.1 (Mô hình chương trình đa luồng) Mô hình chương trình được

biểu diễn dưới dạng 𝒜 = 〈𝒮, ℐ, 𝑉𝑎𝑟, 𝒱, →〉, trong đó:

1 𝒮 là tập trạng thái có thể có trong chương trình,

2 ℐ ∈ 𝒮 là trạng thái đầu tiên

3 𝑉𝑎𝑟 = 𝐻 ∪ 𝐿 là tập hữu hạn biến của chương trình đa luồng

4 Hàm nhãn 𝒱 ∶ 𝒮 → 𝒟(𝑆), với 𝑆 ∈ 𝐻, đánh nhãn các trạng thái với phân bố xác suất của biến bí mật 𝑆, nghĩa là ánh xạ phân bố xác suất 𝜇 ∈ 𝒟(𝑆) đến từng trạng thái 𝑐 ∈ 𝒮, mô tả thông tin mà người tấn công biết được về 𝑆 tại mỗi trạng thái

5 → chỉ mối quan hệ chuyển trạng thái, → ⊆ 𝒮 → 𝒟(𝑆)

Trang 28

Phân bố xác suất của 𝑆 thay đổi từ trạng thái này sang trạng thái tiếp theo dọc theo đường thực thi chương trình, phụ thuộc vào giá trị của biến công cộng ở các trạng thái và lệnh của chương trình

Xét chương trình bên dưới:

𝑂 ≔ 𝑆/2 ∥ 𝑂 ≔ 𝑆 𝑚𝑜𝑑 2

Giả sử người tấn công biết trước được các giá trị của 𝑆 trong khoảng {0, 1, 2, 3},

và 𝑆 có phân bố xác suất đều: 𝜋 = {0 ↦14, 1 ↦ 14, 2 ↦ 14, 3 ↦14 } Với bộ lập lịch lựa chọn giữa hai luồng để thực thi trước với xác suất là như nhau, và cùng đều có chung một kết quả của 𝑂, với 𝑂 = 1

Nếu luồng 𝑂 ≔ 𝑆/2 được thực thi trước, ta có phân bố xác suất được cập nhật lại

3.2 Lượng tin rò rỉ của chương trình đa luồng

3.2.1 Lượng tin rò rỉ theo vệt chương trình

Ví dụ dưới đây chỉ ra cách tính lượng tin rò rỉ theo vệt chương trình

Trang 29

〈(000)𝑏〉 ⟶ 〈(001)𝑏〉 ⟶ 〈(011)𝑏〉 Tại trạng thái ban đầu 〈(000)𝑏〉, độ bất định của người tấn công được biểu diễn bởi phân bố xác suất của 𝑆, {0 ↦ 18, 1 ↦ 18, 2 ↦ 18, 3 ↦ 18, 4 ↦ 18, 5 ↦18, 6 ↦ 18, 7 ↦

1

8}

Tại trạng thái 〈(001)𝑏〉, người tấn công sẽ biết được bit cuỗi cùng của 𝑆 là 1, hay

𝑆 là không chẵn Lúc này, phân bố xác suất được cập nhật sẽ là {0 ↦ 0, 1 ↦ 14, 2 ↦

Dựa vào phân bố xác suất cuối cùng của 𝑆, người tấn công sẽ biết được giá trị của

𝑆 là 3 hoặc 7 Độ bất định lúc này đã giảm xuống dựa vào những giá trị biến công cộng quan sát được Vì chương trình có sự biến đổi phân bố xác suất, trong đó phân

bố xác suất của biến bí mật tại trạng thái ban đầu biểu diễn cho độ bất định ban đầu của người tấn công về thông tin bí mật, và phân bố xác suất của biến bí mật ở trạng thái cuối cùng biểu diễn độ bất định còn lại, sau khi đã quan sát chương trình được thực thi Từ đó, lượng tin rò rỉ của chương trình có thể tính bằng:

Lượng tin rò rỉ = Độ bất định ban đầu – Độ bất định còn lại

Tính độ bất định Với một phân bố xác suất của bí mật cho trước, trong mô hình

dự đoán cho một lần thử, phương án tốt nhất chính là chọn giá trị với xác suất lớn nhất, có nghĩa là xác suất cho việc dự đoán sai sẽ nhỏ nhất Gọi 𝐒 là tập giá trị có thể của 𝑆, giá trị ảnh hưởng đến độ bất định là 𝑚𝑎𝑥𝑠∈𝑺𝑝(𝑠) Nếu 𝑚𝑎𝑥𝑠∈𝑺𝑝(𝑠) = 1, mức

độ bất định phải bằng 0, lúc này người tấn công biết hoàn toàn về giá trị của 𝑆 Do

đó, biểu thức tính độ bất định sẽ bằng trừ logarithm của 𝑚𝑎𝑥𝑠∈𝑺𝑝(𝑠), hay độ bất định

= − 𝑙𝑜𝑔2𝑚𝑎𝑥𝑠∈𝑺𝑝(𝑠), trong đó dấu “-” biểu thị cho sự không âm của độ bất định Biểu thức này hoàn toàn phù hợp với công thức tính min-entropy của Rényi

Định nghĩa 3.2 Gọi 𝐗 là tập hữu hạn các giá trị của biến ngẫu nhiên 𝑋 Biểu thức

tính min-entropy Rényi của X được định nghĩa bởi:

ℋ𝑅é𝑛𝑦𝑖(𝑋) = 𝑙𝑜𝑔2 1

𝑚𝑎𝑥

𝑥∈𝑋 𝑝(𝑥)= − 𝑙𝑜𝑔2𝑚𝑎𝑥𝑥∈𝑋 𝑝(𝑥)

Trang 30

Với phân bố xác suất 𝑆 cho trước, độ bất định của người tấn công về thông tin bí mật sẽ là: Độ bất định = ℋ𝑅é𝑛𝑦𝑖(𝑆)

Do vậy, lượng thông tin rò rỉ theo vệt chương trình 𝑇, là ℒ(𝑇), được tính theo công thức,

ℒ(𝑇) = ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑖) − ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑓) trong đó ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑖) là min-entropy của 𝑆 ứng với phân bố xác suất ban đầu, và

ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑓) là min-entropy tương ứng với phân bố xác suất cuối cùng, tại thời điển trạng thái cuối cùng khi kết thúc chương trình

Xét Ví dụ 9 ở trên, áp dụng công thức trên, ta tính được lượng tin rò rỉ của chương

bị rò rỉ 2 bits thông tin bí mật

3.2.2 Lượng tin rò rỉ của chương trình đa luồng

Quá trình thực thi chương trình đa luồng 𝐶 dưới sự điều khiển của bộ lập lịch 𝛿 sẽ

có kết quả là một tập các vệt chương trình 𝑇𝑟𝑎𝑐𝑒(𝒜𝛿) Do đó, lượng tin rò rỉ của 𝐶

sẽ là giá trị rò rỉ tính trên tất cả các vệt chương trình

Trang 31

(𝑖𝑓 (𝑂 = 1) 𝑡ℎ𝑒𝑛 𝑂 ≔ 𝑆 2⁄ 𝑒𝑙𝑠𝑒 𝑂 ≔ 𝑆 𝑚𝑜𝑑 2) ∥ 𝑂 ≔ 1;

Quá trình thực thi chương trình này, với bộ lập lịch phân bố đều, ta thu được 20

trạng thái được đánh số từ 0 (trạng thái ban đầu) đến 7 Nội dung trong mỗi trạng thái

là giá trị của biến 𝑂 ở trạng thái đó Ví dụ, ở trạng thái ban đầu, trạng thái 0, giá trị của 𝑂 là 0, tương ứng với dòng lệnh đầu tiên của chương trình 𝑂 ≔ 0

Gọi 𝐶1 và 𝐶2 lần lượt là luồng chương trình bên trái và bên phải Vì áp dụng bộ lập lịch phân bố đều, do đó việc lựa chọn 𝐶1 hay 𝐶2 để thực thi trước sẽ có cùng xác suất

𝑂 ≔ 𝑆 𝑚𝑜𝑑 2 sẽ được thực hiện, trạng thái 0 sẽ chuyển sang trạng thái 1 hoặc 2 với

cùng xác suất là 1

4 Vì tập giá trị của 𝑆 là {0, 1, 2, 3, }, giá trị của 𝑂 có thể là 0 (trạng

thái 1) nếu 𝑆 ∈ {0, 2}, hoặc 1 (trạng thái 2) nếu 𝑆 ∈ {1, 3} Ở trạng thái 1, kết quả của

câu lệnh 𝑂 ≔ 𝑆 𝑚𝑜𝑑 2 sẽ cho kết quả 𝑂 = 0, phân bố xác suất ở trạng thái này sẽ là: {0 ↦ 1

2, 2 ↦ 1

2} Ở trạng thái 2, kết quả của câu lệnh 𝑂 ≔ 𝑆 𝑚𝑜𝑑 2 sẽ cho kết quả

𝑂 = 1, phân bố xác suất ở trạng thái này sẽ là: {1 ↦ 12, 3 ↦ 12} Phân bố xác suất

không thay đổi ở trạng thái 4 và trạng thái 5, do thực thi câu lệnh 𝑂 ≔ 1 không thu

được thêm thông tin nào

Nếu bộ lập lịch lựa chọn 𝐶2 để thực hiện trước, trạng thái 0 sẽ chuyển sang trạng thái 3 với xác suất 1

2, với 𝑂 = 1 Tại trạng thái 3, chương trình có thể chuyển sang trạng thái 6 hoặc trạng thái 7 với cùng một xác suất 1

2 Lúc này, vì 𝑂 = 1, nên câu lệnh 𝑂 ≔ 𝑆 2⁄ sẽ được thực hiện Do đó, giá trị của 𝑂 có thể là 0 nếu 𝑆 ∈ {0, 1}, hoặc

1 nếu 𝑆 ∈ {2, 3}

Tại trạng thái 6, kết quả của câu lệnh 𝑂 ≔ 𝑆 2⁄ là 0, người tấn công biết được giá trị thực của 𝑆 sẽ nằm trong tập {0, 1, 2, 3}, với xác suất giống nhau Do đó, phân bố xác suất cập nhật của 𝑆 ở trạng thái này sẽ là: {0 ↦1

2, 1 ↦ 1

2} Tương tự đối với trạng

thái 7, phân bố xác suất cập nhật của 𝑆 sẽ là: {2 ↦ 1

2, 3 ↦ 1

2}

Trang 32

Bốn vệt chương trình được tạo ra có độ bất định bằng 1, hay ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑓) =

Ví dụ dưới đây minh hoạ phương pháp tính lượng tin rò rỉ của chương trình đa

luồng Xét chương trình như bên dưới, trong đó 𝑆 là biến kiểu nguyên không dấu bit,

3-𝑂 ≔ 0;

(𝑖𝑓 (𝑂 = 1) 𝑡ℎ𝑒𝑛 𝑂 ≔ 𝑆 4⁄ 𝑒𝑙𝑠𝑒 𝑂 ≔ 𝑆 𝑚𝑜𝑑 2) ∥ 𝑂 ≔ 1;

𝑂 ≔ 𝑆 𝑚𝑜𝑑 4;

Quá trình thực thi chương trình này, với bộ lập lịch phân bố đều, ta thu được 20

trạng thái được đánh số từ 0 (trạng thái ban đầu) đến 19 Nội dung trong mỗi trạng

thái là giá trị của biến 𝑂 ở trạng thái đó Ví dụ, ở trạng thái ban đầu, giá trị của 𝑂 là

0, tương ứng với dòng lệnh đầu tiên của chương trình 𝑂 ≔ 0

Gọi 𝐶1 và 𝐶2 lần lượt là luồng chương trình bên trái và bên phải Vì áp dụng bộ lập lịch phân bố đều, do đó việc lựa chọn 𝐶1 hay 𝐶2 để thực thi trước sẽ có cùng xác suất

Trang 33

là 1

2 Nếu bộ lập lịch lựa chọn 𝐶2 thực hiện trước 𝐶1, trạng thái 0 sẽ chuyển sang trạng thái 1, với 𝑂 = 1 Ngược lại, nếu 𝐶1 thực hiện trước, trạng thái 0 sẽ chuyển sang trạng thái 2 hoặc 3 với cùng xác suất là 1

4 Vì giá trị của 𝑂 ở trạng thái 0 là 0, câu lệnh 𝑂 ≔

𝑆 𝑚𝑜𝑑 2 sẽ được thực hiện Vì tập giá trị của 𝑆 là {0, 1, 2, 3, 4, 5, 6, 7}, giá trị của 𝑂

có thể là 0 (trạng thái 2) nếu 𝑆 ∈ {0, 2, 4 ,6}, hoặc 1 (trạng thái 3) nếu 𝑆 ∈ {1, 3, 5, 7} Tại trạng thái 1, chương trình có thể chuyển sang trạng thái 4 hoặc trạng thái 5 với

cùng một xác suất Lúc này, vì 𝑂 = 1, nên câu lệnh 𝑂 ≔ 𝑆 4⁄ sẽ được thực hiện Do

đó, giá trị của 𝑂 có thể là 0 nếu 𝑆 ∈ {0, 1, 2, 3}, hoặc 1 nếu 𝑆 ∈ {4, 5, 6, 7}

Chương trình kết thúc khi câu lệnh cuối cùng được thực hiện, 𝑂 ≔ 𝑆 𝑚𝑜𝑑 4 Tại trạng thái ban đầu, độ bất định của người tấn công về biến 𝑆 tuân theo phân bố xác suất như sau,

Tại trạng thái 1, phân bố xác suất của 𝑆 vẫn không thay đổi, do người tấn công vẫn

chưa thu được thông tin thông qua câu lệnh 𝑂 ≔ 1 Tại trạng thái 4, kết quả của câu lệnh 𝑂 ≔ 𝑆 4⁄ là 0, người tấn công biết được giá trị thực của 𝑆 sẽ nằm trong tập {0, 1, 2, 3}, với xác suất giống nhau Do đó, phân bố xác suất cập nhật của 𝑆 ở trạng thái này sẽ là: {0 ↦1

4, 1 ↦1

4, 2 ↦ 1

4, 3 ↦1

4}

Tiếp theo, khi câu lệnh 𝑂 ≔ 𝑆 𝑚𝑜𝑑 4 được thực hiện, người tấn công biết giá trị

𝑆 chính xác hơn Ví dụ, tại trạng thái 8, vì 𝑂 = 0, phân bố xác suất của 𝑆 là: {0 ↦ 1} Tương tự đối với các trạng thái 9, …, 15, người tấn công cũng sẽ biết được giá trị

chính xác của 𝑆 dựa trên phân bố xác suất cuối cùng

Ở trạng thái 2, kết quả của câu lệnh 𝑂 ≔ 𝑆 𝑚𝑜𝑑 2 sẽ cho kết quả 𝑂 = 0, phân bố

xác suất ở trạng thái này sẽ là: {0 ↦1

4, 2 ↦ 1

4, 4 ↦1

4, 6 ↦ 1

4} Phân bố xác suất không

thay đổi ở trạng thái 6, do thực thi câu lệnh 𝑂 ≔ 1 không thu được thêm thông tin nào Tại trạng thái 16, cập nhật phân bố của 𝑆 sẽ là: {0 ↦14, 4 ↦14}, do kết quả của câu lệnh 𝑂 ≔ 𝑆 𝑚𝑜𝑑 4 bằng 0 Tương tự với trạng thái 17, 18, 19, ta cũng có được phân bố xác suất có dạng tương tự

Chương trình kết thúc với 12 vệt chương trình Trong tổng số 12 vệt chương trình này, có 8 vệt chương trình có độ bất định cuối cùng bằng 0, hay ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑓) =

Trang 34

− log21 = 0, và 4 vệt chương trình còn lại có độ bất định bằng 1, hay ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑓) =

có thể bị tiết lộ với xác suất 1

2, tuỳ thuộc vào bộ lập lịch lựa chọn thực hiện luồng 𝐶2trước hay không Chính vì vậy, đối với bộ lập lịch có phân bố đều, lượng tin rò rỉ thực

Trang 35

Hình 3.3 Cây trạng thái chương trình của ví dụ 3 Tại trạng thái ban đầu, độ bất định của người tấn công về biến 𝑆 tuân theo phân bố xác suất như sau,

4, 1 ↦ 1

4, 0 ↦1

4, 1 ↦ 1

4}

Trang 36

Rõ ràng đối với chương trình này, nếu luồng 𝐶1 được thực thi trước luồng 𝐶0, thông tin bí mật sẽ bị rò rỉ, cụ thể là giá trị của 𝑆 𝑚𝑜𝑑𝑢𝑙𝑜 2 sẽ bị tiết lộ hoàn toàn Ngược lại nếu luồng 𝐶0 thực hiện trước, độ bất định về thông tin bí mật sẽ bằng 0, tức là thông tin không bị rò rỉ

Ở các trạng thái kết thúc 11, 12, 13, 14, độ bất định cuối cùng của 𝑆 𝑚𝑜𝑑𝑢𝑙𝑜 2 sẽ

bằng 0, hay ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑓) = − log21 = 0, trong khi đó ở trạng thái kết thúc 15, 16,

17, 18, 𝑆 𝑚𝑜𝑑𝑢𝑙𝑜 2 có độ bất định bằng 1, hay ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑓) = − log212= 1 Nếu mở rộng xét trên tập giá trị của 𝑆, độ bất định thực tế sẽ là ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑓) = − log21

4= 2 Lượng tin rò rỉ của chương trình lúc này sẽ là,

Ví dụ này minh hoạ chương trình kết hợp nhiều thành phần đa luồng

Gọi 𝐶1 và 𝐶2 lần lượt là luồng chương trình bên trái và bên phải của đa luồng thứ nhất Tương tự gọi 𝐶3 và 𝐶4 lần lượt là luồng chương trình bên trái và bên phải của

đa luồng thức hai Trong trường hợp này, ta áp dụng bộ lập lịch phân bố đều, do đó việc lựa chọn 𝐶1 hay 𝐶2 để thực thi trước sẽ có cùng xác suất là 1

2, tương tự đối với việc lựa chọn 𝐶3 hay 𝐶4 để thực thi trước cũng sẽ có cùng xác suất là 1

Trang 37

thái đó Ví dụ, ở trạng thái ban đầu, giá trị của 𝑂 là 0, tương ứng với dòng lệnh đầu tiên của chương trình 𝑂 ≔ 0

Tại trạng thái ban đầu, độ bất định của người tấn công về biến 𝑆 tuân theo phân bố xác suất như sau,

4 Vì giá trị của 𝑂 ở trạng thái 0 là 0, câu lệnh 𝑂 ≔𝑆/8 sẽ được thực hiện Vì tập giá trị của 𝑆 là {0, 1, 2, … , 15}, giá trị của 𝑂 có thể là 0

(trạng thái 1) nếu 𝑆 ∈ {0, 1, 2, 3, 4, 5, 6, 7}, hoặc 1 (trạng thái 2) nếu 𝑆 ∈ {8, 9, 10, 11, 12, 13, 14, 15} Lúc này phân bố xác suất cập nhật ở trạng thái 1 là

Sau khi 𝐶1 thực hiện, 𝐶2 sẽ thực hiện, cụ thể là câu lệnh 𝑂 ≔ 1 Tại đây, trạng thái

4 và trạng thái 5 sẽ không có thông tin nào về biến bí mật được biết thêm, phân bố

xác suất không có sự thay đổi

Ở trạng thái 3, kết quả của câu lệnh 𝑂 ≔ 𝑆 𝑚𝑜𝑑 2 sẽ cho kết quả 𝑂 = 1 (trạng thái

6) hoặc 𝑂 = 0 (trạng thái 7) Phân bố xác suất ở trạng thái 6 này sẽ là:

Trang 38

Hình 3.4 Cây trạng thái chương trình của ví dụ 4 Tiếp theo, câu lệnh 𝑆 ≔ 𝑆 𝑚𝑜𝑑 2 được thực hiện sẽ làm thay đổi tập giá trị của biến 𝑆 Lưu ý, giá trị của biến công cộng 𝑂 sẽ không thay đổi Cụ thể, trạng thái 4 sẽ

chuyển sang trạng thái 8 với tập giá trị của 𝑆 𝑚𝑜𝑑 2 là {0, 1} Xác suất phân bố cập

Tại đa luồng thứ hai, nếu bộ lập lịch lựa chọn 𝐶4 thực hiện trước 𝐶3, trạng thái 8

sẽ chuyển sang trạng thái 14, trạng thái 9 sẽ chuyển sang trạng thái 17, trạng thái 10 chuyển sang trạng thái 19, và trạng thái 11 chuyển sang trạng thái 21 Tại trạng thái

này, câu lệnh 𝑂 ≔ 0 được thực hiện Phân bố xác suất của biến 𝑆 không có sự thay đổi do không có thêm thông tin nào thu được Tiếp theo, luồng 𝐶3 được thực hiện với câu lệnh 𝑂 ≔ 𝑆, trạng thái 14 sẽ chuyển sang trạng thái 24 (𝑂 = 0) hoặc trạng thái

25 (𝑂 = 1) Phân bố xác suất ở hai trạng thái này lần lượt sẽ là {0 ↦ 14, 2 ↦ 14, 4 ↦

Trang 39

4, 6 ↦14} và {1 ↦ 14, 3 ↦ 14, 5 ↦14, 7 ↦ 14} Tương tự đối với trạng thái 28 và 29 sẽ

có phân bố xác suất cập nhật lần lượt là {8 ↦1

4, 10 ↦ 1

4, 12 ↦ 1

4, 14 ↦ 1

4} và {9 ↦ 1

4, 11 ↦ 14, 13 ↦14, 15 ↦ 14} Trạng thái 31 và 33 có phân bố xác suất không

thay đổi, cụ thể lầ lượt là {1 ↦18, 3 ↦ 18, 5 ↦18, 7 ↦ 18, 9 ↦ 18, 11 ↦ 18, 13 ↦

𝑂 = 1 (trạng thái 13) Phân bố xác suất ở trạng thái 12 này sẽ là:

{0 ↦ 14, 2 ↦ 14, 4 ↦14, 6 ↦ 14} Phân bố xác suất ở trạng thái 13 này sẽ là:

{1 ↦ 1

4, 3 ↦ 1

4, 5 ↦1

4, 7 ↦ 1

4} Tương tự như vậy, trạng thái 15 sẽ có phân bố xác

suất cập nhật là {8 ↦ 14, 10 ↦14, 12 ↦ 14, 14 ↦ 14}, trạng thái 16 sẽ có phân bố xác

Tại trạng thái 10, kết quả của câu lệnh 𝑂 ≔ 𝑆 sẽ cho kết quả 𝑂 = 1 (trạng thái 18),

do đó phân bố xác suất cập nhật của biến 𝑆 sẽ không có sự thay đổi, cụ thể là {1 ↦ 1

thái 11, kết quả của câu lệnh 𝑂 ≔ 𝑆 sẽ cho kết quả 𝑂 = 0 (trạng thái 20), do đó phân

bố xác suất cập nhật của biến 𝑆 sẽ không thay đổi là {0 ↦1

Trong tổng số 12 vệt chương trình này, có 8 vệt chương trình có ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑓) =

− log214= 2, và 4 vệt chương trình còn lại có ℋ𝑅é𝑛𝑦𝑖(𝑆𝑇𝑓) = − log218 = 3

Xác suất xảy ra hai nhóm vệt chương trình này là bằng nhau Do đó, theo phân tích như trên, lượng tin rò rỉ sẽ là,

ℒ(𝐶, 𝜋) = 4 − (1

2∙ 2 +

1

2∙ 3) = 1.5 (𝑏𝑖𝑡𝑠)

Trang 40

3.3 Kết luận chương 3

Chương này đã áp dụng phân tích định lượng luồng tin vào chương trình đa luồng, phương pháp tính toán lượng tin rò rỉ, và xây dựng các ví dụ minh hoạ đơn giản Từ các ví dụ này, bằng cách thực thi chương trình đa luồng dưới sự điều khiển của bộ lập lịch theo mô hình chuyển trạng thái theo xác suất, phân bố xác suất của biến bí mật thay đổi liên tục qua từng trạng thái, phụ thuộc vào mối quan hệ của biến bí mật

và biến công cộng, cũng như các câu lệnh tác động lên biến công cộng Quá trình phân tích cũng cho ra kết quả tương đối chính xác, phù hợp với nhận định ban đầu về mức độ rò rỉ của chương trình Qua đây ta cũng nhận thấy rằng quá trình phân tích định lượng đối với chương trình đa luồng thực sự khá phức tạp, đặc biệt khi có nhiều

đa luồng được sử dụng

Trên đây là những nhận định sẽ được sử dụng để làm nền tảng cho việc xây dựng một chương trình mô phỏng tính toán tự động lượng tin rò rỉ của chương trình đa luồng

Ngày đăng: 27/04/2021, 18:15

HÌNH ẢNH LIÊN QUAN

Hình 3.1. Cây trạng thái chương trình của ví dụ 1 - Phân tích định lượng luồng tin trong bảo mật chương trình đa luồng
Hình 3.1. Cây trạng thái chương trình của ví dụ 1 (Trang 32)
Hình 3.2. Cây trạng thái chương trình của ví dụ 2 - Phân tích định lượng luồng tin trong bảo mật chương trình đa luồng
Hình 3.2. Cây trạng thái chương trình của ví dụ 2 (Trang 34)
Hình 3.4. Cây trạng thái chương trình của ví dụ 4 - Phân tích định lượng luồng tin trong bảo mật chương trình đa luồng
Hình 3.4. Cây trạng thái chương trình của ví dụ 4 (Trang 38)
Hình 4.1. Cấu trúc chương trình mô phỏng - Phân tích định lượng luồng tin trong bảo mật chương trình đa luồng
Hình 4.1. Cấu trúc chương trình mô phỏng (Trang 42)
Hình 4.2. Thuật toán chương trình mô phỏng - Phân tích định lượng luồng tin trong bảo mật chương trình đa luồng
Hình 4.2. Thuật toán chương trình mô phỏng (Trang 44)
Hình 4.3. Thuật toán hàm cập nhật không gian trạng thái - Phân tích định lượng luồng tin trong bảo mật chương trình đa luồng
Hình 4.3. Thuật toán hàm cập nhật không gian trạng thái (Trang 45)
Hình 4.4. Thuật toán hàm tính toán lượng tin rò rỉ - Phân tích định lượng luồng tin trong bảo mật chương trình đa luồng
Hình 4.4. Thuật toán hàm tính toán lượng tin rò rỉ (Trang 46)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w