BÁO CÁO BÀI TẬP LỚN LÝ THUYẾT MẬT MÃ Đề tài: A NEURAL CRYPTOGRAPHY BASED ON COMPLEXVALUED NEURAL NETWORK MỤC LỤC CHƯƠNG 1. GIỚI THIỆU VỀ NEURAL CRYPTOGRAPHY 3 1.1. Tổng quan về Neural Network 3 1.2. Ứng dụng Neuron Network vào mật mã học 4 CHƯƠNG 2. HỆ MẬT CVTPM 5 2.1. Network 5 2.2. Learning rules 6 2.3. Khảo sát tính bảo mật của CVTPM 9 2.4. Một số cách thức tấn công hệ mật CVTPM 10 2.4.1. Brute Force 10 2.4.2. Geometric Attack 10 CHƯƠNG 3. MÔ PHỎNG 11 3.1. Kiểm tra quá trình đồng bộ 11 3.2. Tiến hành mô phỏng 11 CHƯƠNG 4. KẾT LUẬN 14 TÀI LIỆU THAM KHẢO 15 BTL
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
BÁO CÁO BÀI TẬP LỚN
LÝ THUYẾT MẬT MÃ
Đề tài:
A NEURAL CRYPTOGRAPHY BASED ON COMPLEX-VALUED NEURAL NETWORK
Hà nội, 5-2021
Sinh viên thực hiện: Nguyễn Thái Dương 20182456
Giảng viên hướng dẫn: TS Hán Trọng Thanh
Trang 2MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU VỀ NEURAL CRYPTOGRAPHY 3
1.1 Tổng quan về Neural Network 3
1.2 Ứng dụng Neuron Network vào mật mã học 4
CHƯƠNG 2 HỆ MẬT CVTPM 5
2.1 Network 5
2.2 Learning rules 6
2.3 Khảo sát tính bảo mật của CVTPM 9
2.4 Một số cách thức tấn công hệ mật CVTPM 10
2.4.1 Brute Force 10
2.4.2 Geometric Attack 10
CHƯƠNG 3 MÔ PHỎNG 11
3.1 Kiểm tra quá trình đồng bộ 11
3.2 Tiến hành mô phỏng 11
CHƯƠNG 4 KẾT LUẬN 14
TÀI LIỆU THAM KHẢO 15
Trang 3CHƯƠNG 1 GIỚI THIỆU VỀ NEURAL CRYPTOGRAPHY
1.1 Tổng quan về Neural Network
Neural Network (NN) là một mạng lưới xử lý thông tin sử dụng các mô hình tính toán phức tạp dựa trên sự hoạt động của các neuron trong hệ thần kinh của con người Mô hình tổng quát của một NN có dạng như sau:
Hình 1.1 Mô hình tổng quát của một Neural Network
Một NN gồm có 3 layer: input, hidden và output Trong đó ouput layer sẽ được tính toán từ input và hidden layer thông qua các thuật toán phi tuyến Các đường kết nối giữa các neuron ở các layer được gọi là edge, ứng với mỗi neuron và mỗi edge sẽ có một giá trị weight, giá trị weight này sẽ thay đổi trong quá trình huấn luyện (train) của mạng
Để train cho một mạng NN, cần có một lượng lớn thông tin là tập hợp các cặp dữ liệu đầu vào – đầu ra Khi đã được huấn luyện với lượng dữ liệu đáng kể, mạng sẽ phân loại các dữ liệu trong tương lai dựa trên những gì nó phát hiện được trong các lớp khác nhau
Neuron Network có nhiều ứng dụng trong thời đại hiện nay như: nhận dạng chữ viết, dự đoán giao dịch chứng khoán, nén hình ảnh, …
Trang 41.2 Ứng dụng Neuron Network vào mật mã học
Hệ mật mã khóa công khai là một hệ mật do Diffie và Hellman phát triển Thông qua hệ mật này, 2 bên A và B có thể tạo ra một khóa bí mật chung, trong khi thông tin họ trao đổi với nhau lại ở trên một kênh truyền với tính bảo mật không cao
Một hệ mật được gọi là lý tưởng khi mà kẻ tấn công không thể truy được khóa của
hệ, ngay cả khi kẻ đó biết được thuật toán tạo khóa và quan sát được mọi dữ liệu trên kênh truyền Sự đồng bộ giữa các Neural Network đã mở ra cơ hội để đạt được điều này Với sự phát triển của Neural Network trong những năm trở lại đây, Neural Network đang được ứng dụng rất nhiều vào mật mã học Hệ mật mã này được biết đến với tên gọi Neural Cryptography
Neural Cryptography là một hệ mật mã khóa công khai dựa trên tính đồng bộ của Neural Network Tại đây, 2 bên A và B có thể thống nhất được một khóa bí mật chung thông qua việc trao đổi thông tin trên một kênh truyền, trong khi kẻ tấn công dù biết thuật toán và biết được thông tin trao đổi giữa 2 bên nhưng gần như không thể biết được khóa
bí mật
Việc đồng bộ của hệ mật không tiêu tốn quá nhiều tài nguyên của hệ thống, vì vậy Neural Cryptography nhận được rất nhiều sự quan tâm Một số ứng dụng của hệ mật đó là: mạng sensor không dây, UAV, điện toán đám mây, …
Tính đến hiện tại, các nghiên cứu về Neural Cryptography chủ yếu dựa trên Neural Network với số thực (gọi là Tree Parity Machine – TPM) Vì vậy, bài báo đề xuất hệ mật Neural Cryptography dựa trên Tree Parity Machine với số phức (CVTPM)
Trong CVTPM, các giá trị input, output và weight của mỗi bên sẽ là các giá trị phức Có thể coi CVTPM là bản mở rộng của TPM CVTPM có 2 ưu điểm như sau:
1 CVTPM bảo mật tốt hơn so với TPM có cùng các tham số K, N, L
2 2 bên trong hệ mật có thể trao đổi khóa cho nhau trong một lần đồng bộ
Trang 5CHƯƠNG 2 HỆ MẬT CVTPM
2.1 Network
Kiến trúc của CVTPM được mô tả như hình bên dưới, nó là một tree neural network
Hình 2.1 CVTPM với K=3, N=4
Giống với TPM có 3 lớp: input, hidden và output, với các giá trị là số phức Lớp input có KxN neuron vào Lớp hidden có K hidden neuron Mỗi neuron được coi như là một perceptron độc lập Lớp output có một neuron ra Trọng số weight của CVTPM là một giá trị phức, nó được định nghĩa như sau:
ωk, j = ak, j + bk, j i
Trong đó: ak, j ∈ {-L, -L + 1, …, L},
Hệ số k = 1,2…M kí hiệu cho hidden unit thứ k của network
Hệ số j = 1,2…N kí hiệu cho các phần tử của vector
L là hệ số synaptic depth của CVTPM
Một vector đầu vào xk, j được định nghĩa như sau:
xk, j = ax + bxi
Trang 6Trong đó: ax ∈ {-1, 1}, bx ∈ {-1, 1}
Hidden unit thứ k được định nghĩa như sau:
h k= 1
j=1
N
(a k , j a x)+i∑
j=1
N
(b k , j b x) )
Và σi = aσi + bσii
Trong đó: a σi = sgn(Re(h i))
b σi = sgn(Im(h i))
Khi x=0 thì hàm sgn(x) được điều chỉnh để trả về giá trị là -1.
Output của CVTPM là:
τ =∏
i=1
K
ℜ(σ i)+i∏
i=1
K
ℑ(σ i)
Nhận xét:
Nếu bx = 0, bω = 0 và bσ = 0 thì CVTPM sẽ thành TPM TPM là một trường hợp đặc biệt của CVTPM
Khi hai network được đồng bộ, chúng có cùng weight Lúc này, weight có thể được sử dụng như là một khóa bí mật Vì weight của CVTPM là một giá trị phức, CVTPM có thể trao đổi hai nhóm khóa trong cùng một quá trình đồng bộ (thu được một bộ khóa cho phần thực và một bộ khóa cho phần ảo)
Hidden unit thứ k có thể được định nghĩa như sau:
h k= 1
j=1
N
(a k , j a x −b k , j b x)+i∑
j=1
N
(a k , j a x +b k, j b x) )
Và σi = aσi + bσi i
Trong đó: a σi = sgn(Re(h i))
b σi = sgn(Im(h i))
Với cách tính này, hidden unit không làm tăng thêm tính bảo mật mà còn làm tăng thời gian đồng bộ
2.2 Learning rules
Giả sử có hai bên A và B muốn trao đổi một khóa bí mật thông qua một kênh truyền công khai Cả A và B đều được cài đặt CVTPM Sau đó, chúng ta đưa ra một thuật toán học lẫn nhau (mutual learning algorithm) của CVTPM như sau:
(1)
(2)
Trang 71 CVTPM của A và B (cùng K, N, L) khởi tạo weight ω i A và ωi B với giá trị phức
ngẫu nhiên một cách độc lập với nhau
2 Ở mỗi bước, A và B nhận chung một input vector xij, được tạo ra một cách ngẫu nhiên và tính toán đầu ra τ A/B bằng (1) và (2) Sau đó, A và B trao đổi τ A và τ B
với nhau thông qua kênh truyền công khai
3 Khi A (B) nhận được τ B (τ A), sau đó A (B) cập nhật weight bằng cách sau:
a. Nếu τre A ≠ τreB và τim A ≠ τimB thì weight ωi A/B không được cập nhật
b Nếu τ re A = τ reB = Re(σ i A/B ) và τ im A = τ imB = Im(σ i A/B ) thì cập nhật weight
ω i, j của σi A/B
c Nếu τ re A = τ reB = Re(σ i A/B ) và τ im A = τ imB ≠ Im(σ i A/B ) thì chỉ cập nhật phần
thực của weight ωi, j của σi A/B
d Nếu τ re A = τ reB ≠ Re(σ i A/B ) và τ im A = τ imB = Im(σ i A/B ) thì chỉ cập nhật phần
ảo của weight ωi, j của σi A/B
4 Dùng một trong những learning rules sau được sử dụng để cập nhật giá trị weight:
Theo công thức trong bài báo:
a Hebbian learning rules
b Anti-Hebbian learning rules
c Random walk learning rules
Trong đó σ i R = Re(σ i ), σ i I = Im(σ i ), ω i, j I+ = Im (ω i, j + ), ω i, j R+ = Re (ω i, j + ) và hàm g(ω) được sử dụng để đảm bảo rằng các phần tử của ω A/B thuộc đoạn [-L, +L], hàm này
được định nghĩa như sau:
Và θ(xy) là hàm bước Heaviside, được định nghĩa như sau:
Θ(xy) = 1, với x = y
= 0, với x ≠ y
Trang 8Nhận xét:
Ta thấy, θ(σ i R τℜ)θ(τℜA τℜB) chỉ nhận giá trị là 0 hoặc 1, trong khi τre cũng chỉ nhận các giá trị là -1 và 1, nên giá trị của ω sau khi được update chỉ nhận được 3 giá trị là 0, ω và 2ω Tức là, một khi giá trị của một weight nào đó bằng 0 sau quá trình update, nó sẽ tiếp tục bằng 0 trong toàn bộ quá trình update sau đó, do tham số của hàm g lúc này sẽ luôn là 0
Sau một vài quá trình update, tất cả giá trị của ωi sẽ bằng 0 Lúc này, khóa
bí mật giữa 2 bên A và B sẽ là tập các giá trị 0 Điều này khiến hệ mật trở nên vô nghĩa Khi mô phỏng trong phần mềm MATLAB, chúng em nhận
được kết quả giống như nhận xét trên Như vậy, công thức của các luật
học dùng để update các giá trị weight được nêu trong bài báo là không hợp lý.
Chúng em tiến hành so sánh quá trình update của 2 hệ mật CVTPM và TPM, chúng em thấy có điểm khác biệt, đó là hàm update của hệ mật TPM
có sử dụng các giá trị input, ví dụ như Hebbian learning rules của TPM:
Dễ thấy rằng giá trị của ωi sau khi update được trải đều trong đoạn [-L, +L] Công thức này hợp lý hơn rất nhiều so với công thức được đưa ra trong bài
báo Khi tiến hành mô phỏng, chúng em nhận được kết quả như mong
Vì vậy, công thức đúng cho luật học của hệ mật sẽ như bên dưới đây, cũng
sẽ là công thức được chúng em áp dụng trong quá trình mô phỏng ở chương sau:
a Hebbian learning rules
ω i , j R+¿= g(ωi, j
R+ (x i , j R τℜ )Θ(σ i R τℜ )Θ(τℜA τℜB) )¿
ω i , j I +¿= g(ωi, j
I
+ (x i ,j I τℑ )Θ(σ i τℑ )Θ(τℑτℑ ) )¿
b Hebbian learning rules
ω i , j R+¿= g(ωi, j
R− (x i, j R τℜ )Θ(σ i R τℜ )Θ(τℜA τℜB) )¿
ω i , j I +¿= g(ωi, j I − (x i, j I τℑ )Θ(σ i τℑ )Θ(τℑτℑ ) )¿
c Random walk learning rules
ω i , j R+¿= g(ωi, j R + x i, j R Θ(σ i R τℜ )Θ(τℜA τ Bℜ ) )¿
ω i , j I +¿= g(ωi, j
I
+ x i, j I Θ(σ i τℑ )Θ(τℑτℑ ) )¿
5 Lặp lại các bước từ 2-4 cho tới khi đạt được đồng bộ (ω A = ω B) Vector weight
ω A/B lúc này có thể được sử dụng như là một khóa bí mật giữa A và B
Trang 9Trong toàn bộ quá trình đồng bộ, trạng thái của vector σ A/B là hoàn toàn không
thể truy cập từ bất cứ bên nào khác Do vậy, có bốn khả năng khi cập nhật là:
a Nếu τ re A = τ reB = Re(σi A/B ) thì phần thực của ω A/B được cập nhật Phần
thực của weight của 2 bên có thể được đồng bộ khi trường hợp này xuất hiện liên tục
b Nếu τ im A = τ imB = Im(σi A/B ) thì phần ảo của ω A/B được cập nhật Phần ảo
của weight của 2 bên có thể được đồng bộ khi trường hợp này xuất hiện liên tục
c Nếu τre A = τ reB, Re(σi A ) ≠ Re(σ i B ) thì chỉ phần thực của weight của 1 trong
2 bên A hoặc B được cập nhật Tốc độ đồng bộ phần thực có thể giảm
khi trường hợp này xuất hiện liên tục
d Nếu τim A = τ imB, Im(σi A ) ≠ Im(σ i B ) thì chỉ phần ảo của weight của 1 trong 2 bên A hoặc B được cập nhật Tốc độ đồng bộ phần ảo có thể giảm khi
trường hợp này xuất hiện liên tục
2.3 Khảo sát tính bảo mật của CVTPM
Trong chương này, nhóm tác giả của bài báo khảo sát tính bảo mật của CVTPM Một hệ mật Neural Cryptography bảo mật cần phải đáp ứng các điều kiện sau:
1 Độ sâu synaptic L của CVTPM tỉ lệ thuận với thời gian đồng bộ trung bình giữa hai Neural Network theo hàm đa thức
2 Thời gian đồng bộ trung bình của kẻ tấn công E với cùng kiến trúc mạng và thuật toán learning rule tăng theo hàm số mũ
Tính bảo mật của CVTPM bị ảnh hưởng bởi quá trình đồng bộ hóa CVTPM Mức
độ đồng bộ của một hệ CVTPM là hệ số overlap (chồng lẫn) Hệ số overlap ρ của σ i được
tính theo công thức:
ρ= ρℜ+ ρℑ
2 Trong đó:
ρℜ = ℜ(ω i A)ℜ(ω i B)
√ℜ(ω i A)ℜ(ω i A) √ℜ(ω i B)ℜ(ω i B),ρℜ∈[0,1]
ρℑ= ℑ(ω i A)ℑ(ω i B)
√ℑ(ω i A)ℑ(ω i A) √ℑ(ω i B)ℑ(ω i B),ρℑ∈[0,1] Khi bắt đầu đồng bộ, do các vector weight ban đầu của A và B là ngẫu nhiên, ta có thể coi ρ = 0 Khi weight của 2 bên A và bên được đồng bộ thì ρ = 1
Trang 10Dễ thấy quá trình đồng bộ phần thực (phần ảo) của CVTPM giống với quá trình đồng bộ của TPM, nên khả năng bảo mật của phần thực (phần ảo) của CVTPM so với khả năng bảo mật của TPM là như nhau Kẻ tấn công cần biết cả phần thực và phần ảo của weight thì mới có được khóa chung của 2 bên Do quá trình đồng bộ phần thực và phần ảo của weight là độc lập, ta có công thức sau:
P CVTPM E =P Eℜ× P Eℑ<P E TPM
Trong đó, Pℜ / ℑE là xác suất để kẻ tấn công biết được toàn bộ phần thực/ảo của weight của hệ khi quá trình đồng bộ hoàn tất Vì PℜE và PℑE có giá trị nhỏ hơn 1 nên CVTPM bảo mật tốt hơn so với TPM có cùng hệ số K, N, L
2.4 Một số cách thức tấn công hệ mật CVTPM
Có một số phương pháp được đưa ra để tấn công hệ mật CVTPM Tại đây, ta giả
sử rằng kẻ tấn công E có được toàn bộ thông tin trên đường truyền của 2 bên trong hệ mật (bao gồm giá trị input, giá trị ouput, luật học và các giá trị K, L, N) và tạo ra một neural network với thông số tương đương, chỉ có các hệ số weight là khác vì chúng không xuất hiện trên đường truyền Sau đây chúng em giới thiệu 2 cách đó là Brute Force và Geometric Attack
2.4.1 Brute Force
Do các giá trị weight không có trên đường truyền nên E sẽ phải thử với toàn bộ giá trị weight Mỗi bên A và B sẽ có KxN giá trị weight, mỗi giá trị weight là một số phức với phần thực và phần ảo nằm trong đoạn [-L, +L], nghĩa là để thử tất cả các giá trị của weight, E sẽ phải thử (2L+1)2KN trường hợp, điều này là bất khả thi vì nó quá sức với mọi
hệ thống tính toán trên thế giới ở thời điểm hiện tại
2.4.2 Geometric Attack
Khi τE = τA = τB, E chỉ cần thực hiện bước update các giá trị weight Trong trường hợp khác nhau, E không thể ngăn việc A và B update các giá trị ωA và ωB Thay vào đó, E
sẽ cố gắng điều chỉnh các giá trị σ của hệ mình dựa trên một tập gồm K giá trị từ h1 đến
hK Khi giá trị tuyệt đối của hi càng nhỏ thì xác suất σ i E ≠ σ i A là càng lớn E sẽ thay đổi giá trị σ i E tương ứng với giá trị |h i| nhỏ nhất và tính lại giá trị của τE trước khi tiến hành bước update
Việc ước lượng các giá trị của σ i A không phải dễ dàng và rất khó để làm được Trong trường hợp có rất nhiều giá trị σ i E ≠ σ i A thì việc chỉ thay đổi một giá trị σ i E tương ứng
Trang 11với giá trị |h i| nhỏ nhất là không đủ Thậm chí trong trường hợp giá trị σ i E =σ i A tại vị trí |h i|
nhỏ nhất thì việc thay đổi lại gây ra tác dụng ngược lại
Tuy vẫn còn các hạn chế nêu trên, Geometric Attack vẫn được coi là phương pháp tấn công ổn nhất khi tấn công hệ mật CVTPM Điều này chỉ ra rằng việc tấn công hệ mật CVTPM vẫn sẽ là một bài toán khó ở hiện tại
Trang 12CHƯƠNG 3 MÔ PHỎNG
Trong chương này, chúng em tiến hành mô phỏng trên MATLAB với hệ mật CVTPM sử dụng luật học Hebbian learning rules, công thức của luật học là công thức đã được chỉnh sửa như trong phần nhận xét ở chương trước
3.1 Kiểm tra quá trình đồng bộ
Ở chương trước, ta biết được khi quá trình đồng bộ hoàn tất, weight của 2 bên A và
B sẽ có giá trị như nhau và giá trị này được sử dụng làm khóa chung của 2 bên Do đó, để kiểm tra quá trình đồng bộ trong khi mô phỏng, ta sẽ dùng công thức sau đây:
ED=∑
i=1
K
∑
j=1
N
‖ω i , j A −ω i , j B‖ Với ED là khoảng cách Euclidean giữa 2 weight của 2 bên A và B Khi quá trình đồng bộ hoàn tất thì ED có giá trị là 0
3.2 Tiến hành mô phỏng
Dưới đây là giao diện của phần mềm mô phỏng hệ mật CVTPM:
Hình 3.1 Giao diện GUI cho việc mô phỏng hệ mật CVTPM
Trang 13Chúng em tiến hành mô phỏng với các hệ số giống với ví dụ được nêu trong bài báo, với K=3, N=1000, L=9 Dưới đây là giao diện phần mềm sau khi các giá trị ban đầu được khởi tạo:
Hình 3.2 Khởi tạo các giá trị
Khi ấn RUN, phần mềm sẽ tiến hành quá trình đồng bộ 2 hệ mật Đồ thị bên phải
là đồ thị của giá trị ED và số bước update Kết quả cuối cùng sau khi chạy như sau:
Hình 3.3 Kết thúc quá trình đồng bộ
Trang 14Ở đồ thị ta thấy 2 đường, đường màu xanh là hệ số ED của hệ mật CVTPM theo số
số lần update, đường màu đỏ là của hệ mật TPM
Khi so sánh với kết quả trong bài báo với kết quả mô phỏng được (các hệ số K, N,
L giống nhau), chúng em thấy 2 kết quả là tương đồng:
Hình 3.4 Kết quả mô phỏng của bài báo
Trang 15CHƯƠNG 4 KẾT LUẬN
Nhóm chúng em đã hoàn thành mục tiêu đề ra, đó là mô phỏng hệ mật CVTPM và viết một phần mềm cho việc mô phỏng bằng ngôn ngữ lập trình MATLAB
Trong quá trình thực hiện, chúng em đã nhận thấy sự không hợp lý trong các công thức về luật học của bài báo mà thầy giao cho Chúng em đã tham khảo các tài liệu về hệ mật TPM và sửa lại các công thức trên Kết quả mô phỏng sau đó là hợp lý hơn và khớp với kết quả tại phần mô phỏng của bài báo
Chúng em xin cảm ơn thầy Hán Trọng Thanh đã giúp đỡ để chúng em có thể hoàn thiện bài tập lớn này