- Tinh xác thực: Tính xác thực trong mật mã học đảm bảo rang cả người gửi lẫn người nhận có thé xác nhận danh tính của đối tác giao tiếp và đảm bảo rằng thôngtin không bị giả mạo.. Người
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIÊN THÔNG
KHOA AN TOÀN THÔNG TIN
ĐỎ ÁN TÓT NGHIỆP
ĐÈ TÀI:
NGHIÊN CỨU KỸ THUẬT
Giảng viên hướng dẫn: PGS TS Dé Xuân Chợ
Sinh viên: Phạm Công Trường
Mã sinh viên: B19DCAT202
Lớp: DI9CQAT02_B
2019 - 2024
Hà Nội, tháng 12 năm 2023
Trang 2LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành đến Thầy Đỗ Xuân Chợ — Giảng viên Khoa Antoàn thông tin, Học viện Công nghệ Bưu chính Viễn thông đã nhiệt tình hướng dẫn emtrong suốt thời gian làm đồ án Thầy đã tạo nhiều điều kiện thuận lợi, định hướng, chỉ bảotận tình và cho những lời khuyên giúp em giải quyết được những khó khăn trong việcthực hiện đồ án Đồng thời, thầy đã giúp em hiểu được những kiến thức quan trọng, giúp
em tiếp cận với cách tư duy, giải quyết và trình bày dé có thé tìm hiểu và hoàn thành đồ
án đúng thời hạn.
Em cũng xin gửi lời cảm ơn chân thành với các thầy cô giáo trong Học viện Côngnghệ Bưu chính Viễn thông nói chung, các thầy cô trong Khoa An toàn thông tin nóiriêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức và tạo điều kiện giúp đỡtrong suốt quá trình học tập trong những năm học vừa qua, là hành trang giúp em tự tin
hơn trong công việc, cuộc sông và những mục tiêu trong tương lai.
Em xin chân thành cảm on!
Sinh viên thực hiện
Trường
Phạm Công Trường
Trang 3LỜI CAM ĐOAN
Em xin cam đoan đô án: “Nghiên cứu kỹ thuật mã hóa dau cuôi và ứng dụng”
do chính cá nhân em nghiên cứu và thực hiện tat cả.
Kêt quả bai làm của đô án “Nghiên cứu kỹ thuật mã hóa dau cuôi và ứng dụng”
là trung thực và không sao chép từ bât cứ khóa luận, đô án, luận văn của cá nhân/ nhóm khác.
Cac tài liệu tham khảo, tài liệu được sử dụng trong tiêu luận có nguôn gôc va xuat
xu ro rang.
Em xin cam doan.
Trang 41.1 TỔng quati ceccecccccesccssessessesssssessessessessessssusssessessessessessussussessssessesesesssetees 10
1.2 Vai trò của mã hÓa E1 2221111122311 111211 1112011111111 11g02 111k xe 10
1.3 Phân loại mã hóa - - -G E2 11122211 11112531 11119211 1111811111991 0 223111111 ke 111.4 Một số ứng dụng của mật mã hỌc - 2 3+ 1113323 EEssrreeerrrres 16CHƯƠNG 2: MÃ HÓA ĐẦU CUỐI 2 2 2+2E+2E+EE£2E2EE2E2EEEEEE2EEEzrrrree 182.1 TỔng quan 2: ¿252222 ‡SE9EE9EE921121121122117127171121121121111112111211 11111 xe 182.2 Giao thức mã hóa đầu cuối OTR 2: + ++2+££+E£2EE2EE+EEtEEtrEerxrrrreee 192.3 Giao thức mã hóa đầu cuối Zalo c ceccccccssessesssessessessessesstsssessessessessessessseeees 302.4 Thực hành giao thức mã hóa đầu cuối OTR -2- 2 s+zs+s+z++sze: 41CHƯƠNG 3: XÂY DUNG UNG DỤNG WEB CHAT MÃ HOA DAU CUOI 523.1 Ý tưởng, mục tiêu xây dung ứng dụng 2¿¿+2+2++zz+zx+zszxerxzxee 523.2 6i ái (ái a 533.3 Thiết kế ứng Cun g esecceceeccececscscesessessesscsscsscseseesscsscscsesessesecsversecsvsvsnsaeeees 553.4 Cơ chế triển khai mã hóa đầu cuối - ¿5-52 t+E+E+ESEEEE+E+EEEEEEeEeErrrrrrsez 65
3.5 Hoạt động các chức năng chính của ứng dụng .- + + ss+++sss+2 66
KẾT LUAN u.cccccccsccscscsececsesesececsvsucecscsvsucecevsveeuceravsvsusesavavsusacasecucvavavavsvasasatereeetees 75
TÀI LIEU THAM KHẢO 5-5: Sc St E2E9EE2E9E12E5512E5121112111211121112E11 E1 xeE 76
Trang 5MỞ ĐÀU
1 Lý do chọn đề tài
Trong thời đại công nghệ thông tin và không gian mạng phát triển nhanh chóng,
việc trao đổi thông tin trên không gian mạng ngày càng yêu cầu được tính bi mật và riêng
tư tuyệt đối dé tránh được tat cả các nguy cơ tiềm tàng từ tội phạm và các cuộc tấn công
nhăm vào người dùng.
Mã hóa đầu cuối (End-to-End Encryption - E2EE) là một phương pháp mạnh mẽ
dé bảo vệ thông tin khỏi bat kỳ nguy cơ nao từ thời điểm mà nó được tạo ra đến thời điểm
nó được sử dụng Với ngày càng nhiều đữ liệu cá nhân được truyền tải qua mạng, việchiểu và nghiên cứu về kỹ thuật mã hóa đầu cuối giúp bảo vệ quyền riêng tư của người sửdụng Điều này có ứng dụng rộng rãi trong các ứng dụng như tin nhắn, giao dịch tàichính, và nhiều lĩnh vực khác Nghiên cứu về kỹ thuật này sẽ giúp hiểu rõ cách bảo vệthông tin truyền tải qua mạng Việc sử dụng mã hóa đầu cuối giúp ngăn chặn nguy cơ mat
mát dữ liệu khi đữ liệu đi qua môi trường mạng Điều này đặc biệt quan trọng trong môi trường mà việc chống thất thoát dữ liệu ngày càng trở nên quan trọng.
Các ứng dụng sử dụng E2EE ngày càng trở nên phô biến, từ các ứng dụng nhắn tin đến giao dịch trực tuyến Hiểu rõ về kỹ thuật mã hóa đầu cuối là cơ hội dé đóng góp vào
sự phát triển của các công nghệ an toàn thông tin trong thế giới kỹ thuật số ngày nay
Chương 2 sẽ trình bày tông quát các yêu yêu câu và tiêu chuân của một hệ mã hóa
đầu cuối Trình bày bày hoạt động của giao thức mã hóa đầu cuối OTR và Zalo
Chương 3.
Tiên hành xây dựng ứng web chat mã hóa đâu cuôi và đáp ứng được các tiêu chuân
chuẩn của một hệ giao thức trao đôi thông điệp an toàn
2 Mục đích nghiên cứu
Trang 6- Hiểu rõ về kỹ thuật mã hóa đầu cuối, đặc biệt là giao thức mã hóa đầu cuối
Off-the-Record Messaging (OTR)
- Thử nghiệm với ứng dụng web chát mã hóa đầu cuối sử dụng các hệ mã hóathông dụng
3 Phương pháp nghiên cứu
Phương pháp nghiên cứu là nghiên cứu lý thuyết kết hợp với thực nghiệm và triểnkhai ứng dụng
Trang 7DANH MỤC CÁC TU VIET TAT
E2EE End-to-End Encryption Mã hóa đầu cudi
OTR Off-the-Record Messaging | Giao thức mã hóa đầu cuối
Off-the-Record Messaging
AES Advanced Encryption Standard Chuẩn mã hóa nâng cao
SHA Secure Hash Algorithm Thuat toan bam an toan
Trang 81 Mật mã đối xứng - 2 2© +E2EE2E12E19E1E71711211211217111 111.1 ye 11
2 Mật mã bat đối XUN ceecccceccecsecsesssessessessessessessesessesessesesseseeseeeteess 12
3 Hoạt động của ham băm G0 31312111911 1511 11118111111 111 re, 13
4 Mô tả quá trình tạo và kiểm tra chữ ký sỐ - 2-5: 5+ z+s+sz+s+5+2 14
1 Trao đồi thông điệp trong giao thức OTR 2 +cs+sezx+xczxscez 21
2 Giao thức trao đổi khóa Diffie Hellman 22
3 Tan công “Main-in-the-middÏe” s- + s2s2+E+E++ExeExzEerxrrrrerxes 23
4 Xác thực danh tính trong khi thống nhất khóa bí mật chung 24
5 Xác minh tính toàn vẹn của thông điỆp 55c + s‡+++ssssxs+2 25
6 Cơ chế tạo khóa ký trong OTTR - ¿2 s+S2+E++E££E£EE£EE2EE2EerEerxererxee 26
7 Giải mã và xác thực thông điệp trong OTTR 55525 < sex 28 S860 8.0 1 32
9 Giải thuật DH Ratchet - c1 2220111112211 111 1221111118511 11111111 ke 33
10 Giải thuật Symmetric Key Ratchet - 5c csssssssskkresek 34
11 Giải thuật DH Ratchet dé tạo đầu vào cho KDE - s5 c2 35
12 Sử dung Symmetric Key Ratchet với Sending Chain Key 35
13 Quy trình tạo khóa TmỚII - c1 322011211112 1111111111811 EErrve 36
14 Giải thuật Double Ratchet - c 5 2222111132552 211 11x xxkrres 37
15 Quá trình thiết lập mã hóa đầu cuối 2 ¿2 s22 2+E+£xszszxze+ 39
1 Kết nỗi Web Sockets ¿- ¿5s tt 21 21121122121127127121211 1e 54
2 Biểu đồ usecase ứng dUNg c eee eececcsseeseesessessesseseesessessesseseetsesesseseeeeees 56
3 Biểu đồ CSDL ứng dụng - 2 + +s+Sx2EE2EE2E£EEEEEEEE2EEEE2EEEEErrrree 57
4 Các kiêu dit liệu ứng với các trường dữ liệu trong ứng dụng 58
5 Triển khai trao đôi khóa và xác thực danh tính ¿2s =szszzzzs+z 65
6 Gửi thông điệp và xác thực thông điỆp - 2-25 3S se 66
7 Dang ky tai Khoa eee eeeceeseceseeeseeeseeeseeeeeeeeeeeeeeeeeeeeeeneeeeeeeeensas 67
Trang 9h 3 11 Tạo cuộc trò chuyện nhóm - - - ¿+ +2 +32 E332 EE*EEEE++seeeersrreerese 69
h 3 12 Thực hiện trao đôi thông điệp trong nhóm với các thành viên 70h3 13 Trao đổi thông tin cá nhân không bảo mật - - 2-5522 +2s+52 71h3 14 Server có thé đọc và hiểu các thông điệp của client 71
h 3 15 Kích hoạt tính năng mã hóa đầu cuối - 2+ 2+s+2z+£e£xz£zzxd 72
h 3 16 Cuộc trò chuyện được bảo mậtt - ¿+ 21+ +23 **ksrirrserrrve 72
h 3 17 Trao đổi tin nhắn một cách an toàn + xxx vEvEvEErErtzxexereed 73
h 3 18 Server không thé đọc hiểu tin nhắn được mã hóa đầu cuối 73
Trang 10CHƯƠNG 1: TONG QUAN VE MÃ HÓA
1.1 Tổng quan
Trong thời đại thông tin số hiện nay, mã hóa là một khía cạnh quan trọng và khôngthé thiếu trong thé giới kỹ thuật số ngày nay, đặc biệt là khi dữ liệu di chuyên qua cácmạng không an toàn Chức năng cơ bản của mã hóa là biến đổi thông tin từ dang ban đầuthành một dạng khác sao cho chỉ có những người được ủy quyền mới có thé đọc được nó
Mã hóa bao gồm các thành phần:
- Thong tin trước khi mã hóa (Plaintext)
- Thong tin sau khi được mã hóa (Ciphertext)
- Khóa (Key)
- Phuong phap giai ma (Encryption/Decryption)
Quá trình mã hóa được tiến hành băng cách sử dụng các hàm toán học Encryptionlên thông tin Plaintext, von được biểu diễn dưới dạng số, dé trở thành thông tin mã hóaCiphertext Trong khi đó giải mã là phương pháp đưa thông tin ở dang mã hóa về dangthông tin ban đầu, đây là quy trình ngược của mã hóa Quá trình giải mã được tiến hànhthông qua các hàm toán học Decryption lên thông tin CipherText để được thông tin đãgiải mã Plaintext và từ đó người được ủy quyên có thé đọc được thông tin
1.2 Vai trò của mã hóa
Mật mã học có vai trò rất lớn trong việc dam bảo an toàn cho hệ thống thông tin
cũng như các ứng dụng hiện nay Việc ứng dụng mật mã học nhằm đảm bảo các tính chất:
- Tinh bí mật: Tính bí mật trong mật mã học là một thuộc tính quan trọng đánh giá
mức độ an toàn của một hệ thống mật mã Nó đảm bảo rằng thông tin bí mật được bảo vệ khỏi sự tiếp cận trái phép hay xâm phạm từ bất kỳ bên nào không được ủy
quyền, thông tin chỉ được phép truy cập bởi những đối tượng hợp lệ, những đối
tượng được cấp phép.
- Tinh toàn vẹn thông tin: Tính toàn vẹn thông tin trong mật mã học đảm bảo rang
thông tin không bị thay đổi trái phép trong quá trình truyền tải hoặc lưu trữ Điềunày bao gồm khả năng phát hiện bất kỳ sự thay đổi nào của đữ liệu và đảm bảo
răng người nhận có thê biệt được nêu có bat kỳ sự thay đôi nao đã xảy ra.
10
Trang 11- Tinh sẵn sàng: đảm bảo thông tin phải luôn luôn sẵn sàng khi cần thiết Điều đó có
nghĩa rằng mật mã học cung cấp một cơ chế bảo mật tốt, có thé tránh được nhữngrủi ro cả về phân cứng, phân mêm và tránh được các cuộc tân công của tin tặc.
- Tinh xác thực: Tính xác thực trong mật mã học đảm bảo rang cả người gửi lẫn
người nhận có thé xác nhận danh tính của đối tác giao tiếp và đảm bảo rằng thôngtin không bị giả mạo Điều này bao gồm việc chứng minh răng thông điệp đến từnguồn mong đợi và chưa bị thay đối trong quá trình truyền
- Tinh chống chối bỏ: Tính chống chối bỏ trong mật mã học đảm bảo rằng người gửi
không thé phủ nhận việc gửi một thông điệp cụ thé Nếu người gửi đã tạo ra mộtchữ ký số hoặc một hệ thống xác thực khác, họ không thể sau đó phủ nhận rằng họ
đã tạo ra hoặc gửi thông điệp đó.
1.3 Phân loại mã hóa
Mã hóa có thé được phân loại theo nhiều tiêu chí khác nhau, tùy thuộc vao mục
đích sử dụng và cách thức thực hiện Dưới đây là một số cách phổ biến dé phân loại mã
hóa:
1.3.1 Dựa trên khóa mã hóa
1.3.1.1 Mã Hóa Đối xứng
Mã hóa đối xứng là một phương thức mã hóa sử dụng cùng một khóa cho cả quá
trình mã hóa và giải mã dữ liệu Trong quá trình mã hóa đối xứng, thông điệp đượcchuyền đổi thành dang ban mã bằng cách sử dụng một khóa, và dé giải mã, khóa dùng dé
mã hóa trước đó cũng được sử dụng dé khôi phục lại thông điệp gốc.
II
Trang 12Các thuật toán mã hóa đối xứng phổ biến bao gồm DES (Data Encryption
Standard), AES (Advanced Encryption Standard), Các thuật toán này thường sử dụng cácphép thay thé và hoán vi dé thực hiện quá trình mã hóa và giải mã [1]
Ưu điểm của mã hóa đối xứng bao gồm:
- _ Tốc độ: mã hóa và giải mã nhanh chóng vì cùng một khóa được sử dụng cho cả hai
gọi là khóa công khai (public key) và khóa bí mật (private key) Dữ liệu được mã hóa
băng khóa công khai có thể chỉ được giải mã bằng khóa bí mật tương ứng và ngược
lại.Các thuật toán mã hóa bat đối xứng phô biến bao gồm RSA (Rivest-Shamir—Adleman)
va Rabin.
Khác với hệ mật mã hóa đối xứng khi sử dung cùng một khóa cho cả quá trình mã
hóa và giải mã dữ liệu, hệ mật bat đối xứng sử dụng một cặp khóa công khai và bí mật Khóa công khai được chia sẻ rộng rãi và có thé được công bố mà không ảnh hưởng đến
12
Trang 13tính an toàn của hệ thống trong khi Khóa bí mật được giữ bí mật và chỉ người nhận được
khóa này có thể giải mã dữ liệu được mã hóa bằng khóa công khai.
do vậy loại hệ mật này thường được sử dụng cho các mục đích như xác thực va quản lý
giải mã Mã hóa dữ liệu đóng vai trò quan trọng trong việc bảo vệ thông tin nhạy cảm,
như thông tin tài khoản ngân hàng, mật khẩu, và dữ liệu cá nhân Nó cũng là một phần
13
Trang 14quan trọng của việc bảo vệ tính toàn vẹn va quyền riêng tư của dữ liệu trong các hệ thống
Đâu vào Giá trị băm
một nguôn được xác định.
1.3.2.3 Chữ ký số
14
Trang 15Chữ ký số là một phần quan trọng của hệ thống mã hóa và bảo mật dữ liệu Chữ ky
số giúp xác minh nguồn gốc của thông điệp và đảm bảo tính toàn vẹn của nó Chữ ký số dam bảo tính chất xác thực và không thé chối bỏ của mã hóa.
Tạo chữ ký Kiểm tra chữ ký
Hình 1 4 Mô tả quá trình tạo và kiểm tra chữ ký số
Chữ ký số thường được tạo ra bằng cách sử dụng một thuật toán băm (hashingalgorithm) dé tao giá trị băm (hash value) của thông điệp Sau đó, giá trị băm được kýbăng khóa riêng của người gửi, tạo ra chữ ký số Chữ ký số thường sử dụng cặp khóacông khai và riêng tư (public-key cryptography) Người gửi sử dụng khóa riêng tư dé ký
số, trong khi người nhận sử dụng khóa công khai dé xác minh chữ ký từ đó có thé xácminh danh tính của người gửi thông điệp Bên cạnh đó, chữ ký số cũng giúp đảm bảo tính
toàn ven của thông điệp do nếu thông điệp bị sửa đôi sau khi được ký số, quá trình xác
minh chữ ký sẽ thất bại
1.3.3 Dựa trên cơ chế thực hiện.
a Ma hóa dòng
Mã hóa dòng (stream encryption) là quá trình mã hóa dữ liệu một cách liên tục
(dong) thay vi mã hóa toàn bộ tệp tin hoặc khối đữ liệu Dữ liệu được mã hóa và giải mã
15
Trang 16một cách liên tục và không cần phải chờ đến khi toàn bộ đữ liệu được tạo ra hoặc nhận do
đó giúp giảm độ trễ và tăng hiệu suất so với việc mã hóa toàn bộ tệp tin hoặc khối dữ liệu.
Do những đặc tính ké trên, mã hóa dòng thường được sử dụng dé mã hóa với dữ liệu códung lượng lớn va cần cải thiện về vấn đề hiệu suất Một số thuật toán mã hóa dòng phôbiến hiện nay bao gồm: A5/1, RC4, vv
b Mã hóa khối
Mã hóa khối (block cipher) là một loại thuật toán mã hóa mà dữ liệu được chiathành các khối có định và sau đó mỗi khối được mã hóa độc lập Dé xây dựng thuật toán
mã hóa khối an toàn băng cách sử dụng kết hợp các thao tác mã hóa tạo ra tính hỗn loạn
và tính khuếch tán thông tin Tính hỗn loạn sẽ giúp phá vỡ mối quan hệ giữa thông điệp
và bản mã, tạo ra mối quan hệ phức tạp và chặt chẽ giữa khóa và bản mã trong khi sự
khuếch tán giúp phá vỡ và phân tán các phần tử trong các mã xuất hiện trong thông điệp
dé không thé phát hiện ra các mẫu này trong ban mã
1.4 Một số ứng dụng của mật mã học
1.4.1 PGP
PGP (Pretty Good Privacy) PGP là công cụ dùng để mật mã hóa dữ liệu và xác
thực Phiên ban PGP đầu tiên do Phil Zimmermann được công bố vào năm 1991 Ké từ
đó, phần mềm này đã có nhiều cải tiến và hiện nay tập đoàn PGP cung cấp nhiều phần
mêm dựa trên nên tảng này.
Chức năng đầu tiên của PGP là mã hóa Nó cho phép mã hóa thông tin hoặc dữliệu nhạy cảm ké cả đó là file, email hay SMS Người dùng PGP sẽ mã hóa dé bao mật dữliệu và nó chỉ có thé được giải mã bang private key của người nhận Ngoài ra PGP cònxác thực chữ ký điện tử, người dùng sẽ sử dung public key của người ky dé xác thực chữ
ký đó.
Nhìn chung phần mềm PGP giúp người dùng thực hiện những giao dịch PGP cơbản như tạo cặp public key, thu hồi cặp public key, chỉ định server public key, mã hóa va
giải mã dữ liệu, ký điện tử vào SMS hoặc file, xác thực chữ ký điện tử,
PGP được dùng chủ yếu để mã hóa hoặc ký chữ ký điện tử ở file, email Tuynhiên, nó còn có vai trò quan trong trong những việc như mã hóa và ký số truyền trong
các ứng dụng SMS, mã hóa và ký kỹ thuật số ô đĩa
1.4.2 Các giao thức bảo mật SSL/TLS, SSH, IPSec
16
Trang 17SSL/TLS (Secure Sockets Layer/Transport Layer Security) là một ứng dụng quan
trọng của mật mã đối mới trong lĩnh vực bảo mật truyền thông qua mạng SSL/TLS được
thiết kế để bảo vệ tính bảo mật và toàn vẹn của dữ liệu trong quá trình truyền thông giữa
máy khách và máy chủ trên mạng, đặc biệt là trong ngữ cảnh của ứng dụng web.
Một trong những chức năng chính của SSL/TLS là cung cấp mã hóa dữ liệu Khikết nối được thiết lập giữa trình duyệt web và máy chủ, thông tin được truyền tải giữachúng được mã hóa, làm cho nó trở nên khó khăn cho bất kỳ bên thứ ba nào theo dõi vàhiểu được thông tin SSL/TLS sử dụng quy trình xác thực dé đảm bảo rang máy chủ màtrình duyệt kết nối đến là đích đến chính xác Điều này giúp ngăn chặn tan công giả mao
và đảm bảo tính toàn vẹn của trang web SSL/TLS sử dụng chứng chỉ số SSL (SSL certificates) để chứng minh xác thực của máy chủ Các tổ chức cung cấp chứng chỉ số SSL như Let's Encrypt, DigiCert cung cấp các chứng chỉ này cho các trang web dé chứng
minh tính đáng tin cậy của họ.
SSL/TLS được sử dụng rộng rãi trong lĩnh vực thương mại điện tử, Internet
banking, truyền thông trực tuyến và nhiều ứng dụng web khác dé đảm bảo an toàn và bảo
mật trong việc truyền thông dữ liệu do đó SSL/TLS đã trở thành một tiêu chuẩn quan
trọng trong việc bảo vệ thông tin trực tuyến và xác thực các trang web
Bên cạnh SSL/TLS, SSh và IPSec là một trong những ứng dụng rất lớn nhờ vàomật mã.
1.4.3 VPN
VPN (Virtual Private Network) là một công nghệ cho phép tạo ra một mạng riêng
ảo trên Internet Mật mã hóa được tích hợp chặt chẽ trong VPN để bảo vệ thông tin khitruyền tải qua mạng VPN có tác dụng bảo mật đữ liệu đảm bảo an toàn cho dữ liệu truyềntải qua mạng công cộng và xác thực được người dùng giữa các nút trong mạng VPN Điềunày giúp ngăn chặn các cuộc tấn công giả mạo và đảm bảo rang chỉ những người dùngđược ủy quyền mới có thê kết nối và truy cập vào mạng
1.4.4 Mã hóa đầu cuối
Mã hóa đầu cuối là công nghệ bao mật giúp bảo vệ toàn điện nội dung tin nhắn khi
trao đổi tin nhắn giữa 2 người với nhau Các tin nhắn được mã hóa trước khi gửi và sẽ ởdạng mã hóa trong toàn bộ quá trình gửi và nhận Ngoài thiết bị của người gửi và ngườinhận, tin nhắn sẽ không thé được giải mã trên thiết bị nào khác Điều này giúp mã hóa
17
Trang 18dau cuôi bảo mật hơn so với công nghệ mã hóa tin nhăn hiện tại Chi tiệt các tính chat của một ứng dụng mã hóa đâu cuôi an toàn và cách hoạt động sẽ được trình bày ở phân sau.
18
Trang 19CHƯƠNG 2: MA HÓA DAU CUOI
2.1 Tổng quan
Mã hóa đầu cuối hay còn gọi là mã hoá end-to-end, tiếng anh là end-to-end
encryption (viết tắt E2EE) là một hệ thống giao tiếp an toàn ngăn chặn bên thứ ba truy
cập đữ liệu trong khi nó được truyền từ một hệ thống hoặc thiết bị một đầu đến hệ thống
hoặc thiết bị khác Trong E2EE, dữ liệu được mã hóa trên hệ thống hoặc thiết bị củangười gửi, và chỉ người nhận mới có thê giải và đọc nội dung thông điệp Khi đữ liệu dichuyền đến thiết bị của người nhận, thông điệp không thé được đọc hoặc thay đổi bởi bat
kỳ nhà cung cấp dịch vụ internet (ISP), nhà cung cấp dịch vụ ứng dụng, hacker hoặc bất
kỳ thực thé hoặc dịch vụ nào khác
Cách hoạt động của mã hóa đầu cuối:
1 Trước khi gửi đi, nội dung gốc của tin nhắn được mã hóa trên máy của người
gui.
2 Tin nhắn đã mã hóa được gửi đến máy chủ của nhà phat triển ứng dụng
3 Máy chủ nhà phát triển gửi tin nhắn đã mã hóa đến người nhận
4 Tin nhắn mã hóa được giải mã trên máy của người nhận và trở về nội dung gốc
Mã hoá end-to-end ngăn những kẻ nghe lén tiềm năng - bao gồm nhà cung cấpdịch vụ viễn thông, nhà cung cấp Internet, và thậm chí cả nhà cung cấp dịch vụ liên lạc
Họ không thé truy cập vào các khóa mật mã đề giải mã cuộc trò chuyện
Mã hóa end-to-end nhằm ngăn chặn việc đọc hoặc sửa đôi bí mật dữ liệu, không phải bởi người gửi và người nhận thực sự Các tin nhắn được mã hóa bởi người gửi nhưng bên thứ ba (ví dụ như nhà cung cấp ứng dụng) không có phương tiện để giải mã chúng Người nhận lay dữ liệu được mã hóa va tự giải mã.
Ưu điểm của mã hóa đầu cuối:
- Thong tin dữ liệu truyén di được bao vệ hoàn toàn, không ai có thé đọc hay nghe
được nội dung cuộc trò chuyện của trừ khi thiết bị cuối, hệ thống cuối hoặc tài
khoản của người gửi hoặc người nhận bị người khác lấy và truy cập vào ứng dụngbăng thông tin tài khoản Ngay cả nhà cung cấp ứng dụng - đơn vị mà lưu trữ nội
dung cũng không có cách nảo can thiệp hay nghe trộm thông điệp.
19
Trang 20Moi sự thay đổi hay can thiệp vào dit liệu trong quá trình truyền tai sẽ làm cho dữliệu trở nên không đọc được, giúp phát hiện và ngăn chặn các cuộc tấn công.
Tuân Thủ Quy Định và Chuan Mực: Mã hóa đầu cuối thường tuân thủ các quy
định và chuẩn mực về bảo mật đữ liệu, giúp tổ chức tuân thủ các quy định pháp lý.
Bên cạnh đó, mã hóa dau cuôi cũng có thê có những nhược điêm sau:
Không sử dụng được các dịch vụ của nhà cung cấp ứng dụng, ví dụ như dịch vụ tựđộng đặt lịch hẹn Bởi vì nhà cung cấp ứng dụng cần biết nội dung tin nhắn haylịch sử trò chuyện thì mới có thể cung cấp các dịch vụ cho người dùng.Mặc dù tinnhắn của người dùng được mã hoá, nhưng thời gian, địa điểm và thông tin ngườinhận thì nhà cung cấp dịch vụ vẫn biết
Việc mã hóa và giải mã dữ liệu có thể tạo ra gánh nặng cho hệ thống, đặc biệt là
trên các thiết bị có tài nguyên hạn chế Điều này có thể dẫn đến sự giảm hiệu suất
và tăng độ trễ
Quản lý và bảo quản các khóa mã hóa có thể trở nên phức tạp, đặc biệt là trong các
hệ thống lớn hoặc có nhiều người dùng
2.2 Giao thức mã hóa đầu cuối OTR 2.2.1 Tính chất của một giao thức trao đổi thông điệp an toàn
Một giao thức trao đổi tin nhắn an toàn không chỉ bảo vệ người sử dụng tránh khỏi
các cuộc tân công mà còn bảo vệ người dùng ngay cả khi bị tân công Yêu câu của một
giao thức trao đổi tin nhắn an toàn bao gồm:
Confidentiality (Tính bí mật): khả năng giữ cho thông tin tin nhắn được bảo vệkhông bị tiết lộ cho bất kỳ bên thứ ba nào không được ủy quyền Mục tiêu chínhcủa tính bi mật là đảm bảo rằng người không được phép sẽ không thé đọc hay hiểuđược thông tin được mã hóa.
Authenticity (Tính xác thực): khả năng xác định nguồn gốc của thông điệp, đảmbảo rằng thông điệp không chỉ không bị thay đổi trong quá trình truyền tải, mà còn
được tạo ra bởi một bên đã được xác nhận.
Forward secrecy (Tính chuyên tiếp bí mật): Tính năng đảm bảo khi một mã khoá bị
lộ thì cũng không ảnh hưởng tới các tin nhắn trước
Deniability (Tính chối bỏ): Chỉ với các tin nhắn đã được mã hóa, bên thứ ba (thirdparty) không thể chứng minh được là cả hai bên tham gia giao thức đã thực sự trao
20
Trang 21đổi thông tin với nhau Nói cách khác, mỗi bên tham gia giao thức đều có thể phủ
nhận dữ liệu đã mã hóa trên là của họ, hoặc phủ nhận họ có khả năng giải mã nó,
mà không có bên nào khác có thé chứng minh được (deniable)
2.2.2 Tổng quan giao thức OTR và cách hoạt động
2.2.2.1 Tổng quan
Off-the-Record Messaging (OTR) là một giao thức mật mã hóa cung cấp tính năng
mã hóa cho các cuộc trò chuyện qua tin nhắn tức thì OTR sử dụng sự kết hợp của thuậttoán đối xứng AES với chiều dài khóa 128 bit, trao đổi khóa Diffie-Hellman với kíchthước nhóm 1536 bit, và hàm băm SHA-1 Ngoàải việc cung cấp xác thực và mã hóa, OTRcòn đảm bao tính bí mật về phía trước (forward secrecy) và mã hóa có thé biến đổi được(malleable encryption) OTR đảm bảo tính Deniability là một trong những ưu điểm nỗitrội hơn với giao thức PGP Do đó OTR là một giao thức đã bảo trao đổi thông tin an toàn
ngay cả khi bị tấn công
2.2.2.2 Cách hoạt động.
Các bước hoạt động của giao thức OTR:
1 Người gửi và người nhận đồng ý và thống nhất được khóa phiên bí mật Sử dụng
giao thức trao đổi khóa Diffie-Hellman dé trao đổi khóa cho 2 bên.
2 Người gửi và người nhận chứng minh danh tính của mình bằng cách ký các giá trị
trung gian lúc trao đối khóa bằng giao thức Diffie-Hellman.
3 Người gửi sử dụng khóa mã hóa từ bước 1 để mã hóa tin nhắn.
4 Người gửi ký tin nhắn được mã hóa bằng HMAC với khóa là giá trị băm của khóa
phiên bí mật đã trao đôi ở bước 1
Người gửi gửi bản mã đã được mã hóa và chữ ký cho người nhận.
Người nhận giải mã ban mã và xác minh chữ ký kèm theo.
yn ® Người gửi public khóa HMAC.
8 Người gửi và người nhận quên khóa phiên của họ.
Dé trao déi một tin nhắn OTR, người gửi và người nhận phải:
- Đồng ý về khóa phiên bí mật.
- _ Xác minh danh tinh của nhau.
21
Trang 22Sau đó, người gửi phải:
- Ma hóa tin nhắn
- Ky tin nhan
- Gửi tin nhắn đến người nhận
Và người nhận phải:
- _ Giải mã tin nhắn và xác minh chữ ký trên tin nhắn
Sau đó người gửi phải:
- _ Xuất bản khóa phiên bí mật đã dùng dé ký
Cuối cùng, cả hai bên người gửi và người nhận phải:
- _ Quên khóa phiên bí mật để đảm bảo tính forward secrecy
2.2.3 Chỉ tiết cách hoạt động của giao thức OTR
2.2.3.1 Dong ý về khóa phiên bí mật
Cả Alice và Bob đều thống nhất và đồng ý một khóa phiên chung, đối xứng vàkhóa này là tạm thời Sau đó, họ sẽ sử dụng khóa này để mã hóa một tin nhắn bang một
hệ mã hóa đối xứng Đề đảm bảo thuộc tinh “preserve forward secrecy”, khi họ đã traođổi xong một tin nhắn, họ sẽ quên đi khóa phiên mà họ đã sử dụng để gửi nó và lại thốngnhất một khóa mới Với phạm vi đồ án này sẽ giả định khóa phiên này được “xoay vòng”
môi tin nhăn.
22
Trang 232 1 Alice và Bob thống nhất khóa bí mật chung
2 Alice sử dụng khóa bí mật ngày dé mã hóa thông điệp +
và gửi thông điệp
—————————>
3 Alice và Bob thống nhất khóa bí mật khác tại phiên
trao đôi mới
-——ễ¬.
4 Bob sử dụng khóa bí mật ngày dé mã hóa thông điệp
và gửi thông điệp
Hình 2 1 Trao déi thông điệp trong giao thức OTR
Alice va Bob thống nhất một cách an toàn về từng khóa bí mật chung được chia sẻ
mà không cho phép Eve (người thứ 3, hacker) phát hiện ra chúng bằng cách sử dụng traođổi khóa Diffie-Hellman Dưới đây sẽ trình bày rõ hơn về giao thức trao đổi khóa Diffie -
Hellman.
Phuong pháp trao đổi khóa Diffie-Hellman cho phép hai bên (người, thực thé giao tiếp)thiết lập một khóa bí mật chung để mã hóa dữ liệu sử dụng trên kênh truyền thôngkhông an toàn mà không cần có sự thỏa thuận trước về khóa bí mật giữa hai bên Khóa
bí mật tạo ra sẽ được sử dụng dé mã hóa dữ liệu với phương pháp mã hóa khóa đốixứng Diffie-Hellman thiết lập bí mật chung để sử dụng cho trao đổi dữ liệu an toàntrên một kênh truyền thông công cộng không an toàn Sơ đồ sau đây minh họa ý tưởng
cơ ban của việc trao đôi khóa thông qua ví dụ vé mau son.
23
Trang 24a p.g.A g?modp=A A> p.g b
a p,g.A +—E g° mod p =B p.g,A, B b
a,s p.gA,B BÊmodp=s AP modp=s p.gAB b,s
Hình 2 2 Giao thức trao déi khóa Diffie Hellman
2.2.3.2 Xác mình danh tính của nhau.
Ở bước đầu tiên chúng ta đã trình bày việc Alice và Bob sử dụng thuật toán trao
đổi khóa diffie hellman dé đồng ý về khóa phiên bí mật được chia sẻ mà họ có thé sử
dụng dé mã hóa bằng một hệ mã hóa đối xứng và ta chưa xem xét cách họ có thể xác
minh danh tính của người mà họ đã đồng ý khóa phiên đó Nếu 2 người họ không thựchiện xác minh danh tính thì họ có thể bị tấn công kiểu tấn công: “man-in-the-middle
attack” Cụ thể, một người thứ 3 là Eve có thể chặn tất cả lưu lượng đường truyền của
Alice hoặc/và Bob và giả mạo trao đổi khóa diffie hellman với chính mỗi người Trong
24
Trang 25khi đó, Alice va Bob đều đồng ý với khóa bí mật giữa 2 người họ được chia sẻ bí mật
nhưng thực tế là 2 người mỗi người đều thống nhất khóa với người thứ 3 là Eve Do đó
Eve có thé đọc được thông điệp mà Alice/Bob gửi đi và có thé giả mạo danh tính dé gửi
lại cho người khác.
Tan công “Man-in-the-middle”
2 Eve thực hiện giả mao tương
1 Alice nghĩ răng cô ây đã tự với Bob
đồng ý khóa với Bob, tuy nhiên
Eve đã đứng ở giữa và giả mạo
Bob dé trao đôi khóa với Alice
— /( “=>
¬-=- aX
3 Bây giờ Alice va Bob đều vô tinh gửi thông điệp của họ cho Eve thay vì cho nhau Eve có thể đọc và
thao tác với thông điệp trước khi chuyển tiếp chúng
cho Alice va Bob
Hình 2 3 Tan công “Main-in-the-middle”
Điều này dẫn đến bắt buộc phải xác minh danh tính được của nhau trong lúc trao
đổi khóa Diffie hellman dé xác minh được đúng người cần trao đôi thông điệp
Theo như cách thức trao đổi khóa ở bước đầu tiên, để chứng minh danh tính của
nhau, Alice và Bob ký lên giá trị trung gian trong giao thức trao đôi khóa Diffie Hellman
mà họ đã gửi cho đối phương bằng khóa bí mật của minh (trong hệ mã hóa bat đối xứng)
Sau khi nhận được gia tri trung gian đó, người nhận sẽ xác minh chữ ky của người gửi
băng khóa công khai của người gửi (trong hệ mã hóa bất đối xứng) Nếu chữ ký củangười gửi không xuất hiện thì chắc chắn rang người gửi là một người đang cố gắng maodanh, còn nếu chữ ký xuất hiện thì sẽ xác minh danh tính được người gửi là đúng người
ma mình muốn trao đôi Sau khi cả 2 xác minh được danh tính lẫn nhau rồi thì họ có thé
sử dụng giá trị trung gian đó kết hợp với giá trị bí mật của riêng mình để mã hóa và giải
mã thông điệp bằng hệ mật đối xứng
25
Trang 26Người thứ 3 là Eve vẫn có thể chặn tất cả lưu lượng đường truyền của Alice
hoặc/và Bob và giả mạo trao đôi khóa diffie hellman với chính mỗi người Tuy nhiên, cô
ay sẽ không thé khiến Alice va Bob chấp nhận gia trị Diffie-Hellman trung gian do EVEtạo ra vi EVE sẽ không thé tao ra chữ ky hợp lệ Do đó, EVE sẽ không thể lừa họ dé tao
một một kết nôi được mã hóa với cô ay.
Xác thực quá trình thống nhất khóa bí mật chung
@ ®
1 Alice khởi tạo giá I Xk
trị Diffie Hellam bí 3 Alice gửi giá trị trung gian
mật và giá trị trung và chữ ký cho Bob
glen Gia tri trung Gia tri trung
gian Alice gian Alice
l cv
as) mã hóa giải mã =
(khóa bí mật Alice » , Khóa công khai Alice)
+ _ ký sag 697ebefla 697ebefla M a xac pi
ri trung gian bang chữ ký của Alice
khóa bí mật của 5 Bob thực hiện quy trình sử dụng khóa
mình tương tự khi gửi giá trị trung công khai của cô
gian cho Alice Do đó cả 2 ấy
bây giờ đã có thê xác thực
được đối phương và thống nhất khóa bí mật an toàn
Hình 2 4 Xác thực danh tính trong khi thống nhất khóa bí mật chung
Hiện tại, Alice và Bob đã đồng ý về một khóa dùng chung, đối xứng, xác minh danh tính của nhau Tiếp theo, Alice cần mã hóa tin nhắn của minh.
2.2.3.3 Mã hóa tin nhắn.
Tại thời điểm này, Alice và Bob đã đồng ý về một khóa phiên đối xứng, bí mật.Bây giờ cần chỉ định một hệ mã hóa đối xứng dé họ có thé dùng khóa đã thống nhất dé
mã hóa và giải mã thông điệp của họ Nhiều thuật toán mã hóa đối xứng đã tồn tại và
OTR có thể sử dụng một thuật toán có từ trước mà không cần phát minh ra thuật toán
riêng.Cụ thé, ở day OTR sử dụng hệ mật mã AES với đầu vào khóa là khóa phiên đã được
chia sẻ và xác thực trước đó.
Tuy nhiên, ở bước này,Alice và Bob hoàn toàn van có thê bị giả mạo Do đó can một cách kiêm tra vừa thỏa mãn đê đảm bảo cả 2 không bị giả mạo, xác thực được thông tin trao đôi lan nhau va còn phải dam bảo tính choi bỏ - một trong những yêu câu của một giao thức mã hóa đâu cuôi cân có.
2.2.3.4 Ký tin nhắn
26
Trang 27Dé xác thực nội dung của một tin nhắn, nguoi gửi cần phải có khả năng ký và
người nhận cần có thé xác thực chữ ký này Tuy nhiên, khác với giao thức PGP, Alice va
Bob không muốn ký trực tiếp tin nhăn của họ bằng khóa ký riêng tư của họ vì nếu kýbăng khóa riêng tư này thì sẽ không đảm bảo được tính chối bỏ Do đó, OTR khắc phụcđược điểm yếu không thê chối bỏ của PGP
OTR phải chứng minh được tính toàn vẹn các thông điệp bằng cách sử dụng mộtloại chữ ký mật mã khác Chúng ta đã biết rằng OTR sử dụng một thuật toán mã hóa đốixứng để mã hóa các thông điệp trong khi nó vẫn phải giữ được tính “forwardsecrecy”.Tương tự, nó cũng sử dụng thuật toán ky đối xứng dé xác thực thông điệp của nó
trong khi vẫn bảo toàn thuộc tính “Chối bỏ” của nó Trong khi thuật toán ký bất đối xứng
(chang hạn như thuật toán được PGP sử dụng) sử dụng một khóa trong cặp khóa để tạo
chữ ký và khóa còn lại dé xác minh, OTR sử dụng một thuật toán đối xứng sử dụng cùng
một khóa đê tạo và xác minh.
OTR sử dụng thuật toán ký đối xứng được gọi là HMAC, viết tắt của ( Hashed
Message Authentication Code - Mã xác thực thông báo dựa trên băm ).
Dé tạo chữ ky HMAC cho một thông điệp, người ký chuyên cả thông điệp và khóa
ký bí mật, được chia sẻ, đối xứng của họ vào thuật toán HMAC Thuật toán tra về chữ ký
HMAC, sau đó người ký gửi thông điệp và chữ ký HMAC cho người nhận.
Xác minh tính toàn vẹn của thông điệp
1 Alice và Bob thống nhất được
l khóa ký nhờ giao thức Diffie
2 Alice ký thông Hellman trước đó 4 Bob sử dụng
điệp sử dụng khóa ký chung để
khóa ký cả 2 đã
thống nhất ¡ am a cat IsntaGEi xác thực chữ ký
(Khóa ký chung) | —e ký chung) b3198ee0 [Em
dce708dcd [Em3 Alice gửi Bob thông
điệp đã được mã hóa và chữ ký tạo ra
Hình 2 5 Xác minh tính toàn vẹn của thông điệp
27
Trang 28Đề xác minh chữ ký HMAC, người nhận thực hiện quy trình tương tự Họ chuyênthông điệp và cùng một khóa ký (mà họ cũng biết) vào thuật toán HMAC và lấy lại chữ
ký HMAC Nếu chữ ký mà họ tính toán khớp với chữ ký mà họ nhận được từ người gửithì có thé tin tưởng rằng thư không bị giả mạo Điều nay cho thay cách chữ ký HMACcung cấp tính xác thực
Cách 2 bên thông nhất khóa ký đối xứng
Đề sử dụng chữ ký HMAC dé xác thực tin nhắn lẫn nhau, người gửi và người nhậncần phải đồng ý về một khóa ký bi mật được chia sẻ mà họ có thé chuyên vào thuật toán
HMAC Trong OTR, họ sử dụng giá trị băm của khóa mã hóa bi mật đã được chia sẻ ở
bước 1 bằng giao thức diffie hellman làm khóa ký bí mật được chia sẻ của họ
~©
Khóa bímật dùng đề mã hóa, được
thông nhất nhờ giao thức trao đôi khóa
Diffie Hellman
Hàm băm —— Ce)
Khóa dùng dé ký
Hình 2 6 Cơ chế tạo khóa ký trong OTR
Hàm băm là một hàm tạo ra đầu ra có vẻ ngẫu nhiên nhưng nhất quán cho mỗi đầu
vào Với một đầu vào, rất dễ dàng dé tính toán đầu ra băm Ngược lại, với một đầu ra củahàm băm sẽ không thé tính toán đầu vào tạo ra nó Với một đầu vào thì sau khi băm sẽ cómột giá trị nhất định Chỉ cần giá trị đầu vào thay đổi một giá trị dù là rất nhỏ thì đâu ra sẽ
bị thay đổi hoàn toàn
Điều này dẫn đến việc hàm băm rất hữu ích cho việc kiểm tra tính toàn vẹn TrongOTR, Alice và Bob sử dụng một hàm băm mật mã (một hàm băm với một số thuộc tính
bảo mật cụ thé) dé tao khóa ký được chia sẻ của họ từ khóa mã hóa được chia sẻ của họ.
Bây giờ Alice và Bob đã sẵn sàng trao đổi một tin nhắn một cách an toàn
2.2.3.5 Gửi tin nhắn
Alice mã hóa tin nhắn của mình băng cách sử dụng hệ mật mã AES với đầu vàokhóa là khóa mã hóa đối xứng mà Alice và Bob đã đồng ý với nhau bằng cách sử dụngtrao đối khóa Diffie-Hellman ở bước thứ nhất
28
Trang 29Sau đó, Alice tính giá trị băm của khóa mã hóa đối xứng dùng dé mã hóa tin nhắn
ra, đầu ra là khóa dùng dé ky Alice sau đó sử dụng thuật toán HMAC với đầu vào là bản
mã của tin nhắn đã mã hóa phía trên và khóa ký (đầu ra sau khi băm khóa bí mật mã hóa)
để tạo ra chữ ký.
Xong xuôi, Alice gửi cho Bob tin nhắn đã được mã hóa mà chữ ký cho Bob
2.2.3.6 Giải mã và xác thực thông điệp
Khi Bob nhận được tin nhắn và chữ ký của Alice Anh ta sẽ:
- _ Giải mã tin nhắn bi mã hóa bằng khóa bi mật đã được chia sẻ trước đó bằng giao
thức trao đôi khóa Diffie hellman
- Tinh toán giá tri băm của khóa bí mật đó dé lay giá trị khóa ký
- Bob tính toán chữ ký của Alice băng thuật toán HMAC với đầu vào là tin tin nhắn
đã mã hóa sau khi nhận và khóa ký vừa được khởi tạo.
- Sau khi tự minh tạo được chữ ký của Alice để kiểm chứng thì Bob sẽ so sánh chữ
ký đấy với chữ ký mà anh ta đã nhận từ Alice Nếu 2 giá trị đều được so khớp thì
sẽ xác thực được Alice và đảm bảo tin nhắn toàn vẹn
Alice và Bob hiện đã trao đổi một thông điệp đầy đủ các thuộc tính bí mật, đượcxác thực, chuyên tiếp bí mật và phủ nhận
29
Trang 30Sau khi quá trình gửi nhận và xác nhận thông tin thành công ở bước 5,6 Alice công
bố khai ký chung của cô và Bob với mọi người Điều này là an toàn dé thực hiện, bởi vihiện tại Bob đã xác minh tin nhắn của Alice, không thành vấn đề nếu Eve có quyền truycập vào khóa ký mà anh ay da su dung dé thuc hién viéc nay
Việc công khai khóa ký giúp cho OTR mang tinh chối bỏ, kế cả khi Eve lay đượckhóa mã hóa chung của Alice và Bob thi cũng không thé chứng minh tin nhắn là chínhxác do Alice gửi hay không vì khóa ký đã được công khai, bất kỳ ai cũng có thê sử dụng
khóa đó.
Ngược lại, việc Alice công bố khóa mã hóa được chia sẻ của họ sẽ rất không an toản, bởi
vì néu Eve đã lưu trữ lưu lượng được mã hóa của họ thì cô ay sẽ có thé sử dụng khóa mã
hóa để giải mã nó Rất may, vì khóa ký mà Alice xuất bản chỉ là một băm mật mã của
khóa mã hóa, nó không thé được sử dụng để tạo lại chính khóa mã hóa
2.2.3.8 Quên di khóa phiên mã hóa.
Cuôi cùng, khi Bob đã nhận, giải mã và xác minh tin nhăn va Alice đã xuât bản khóa ký riêng tư, những người tham gia sẽ quên và xóa khóa mã hóa phiên của họ.
30
Trang 31Bước này là cần thiết để đảm bảo tính “chuyên tiếp bí mật” và khiến kẻ tấn công
không thé đọc được các thông điệp trong quá khứ, ngay cả khi chúng xâm nhập máy tính của họ Alice và Bob sau đó bắt đầu lại quy trình, thương lượng khóa mã hóa phiên dùng chung mới cho mỗi lần thực hiện tin nhắn.
2.3 Giao thức mã hóa đầu cuối Zalo
2.3.1 Tổng quan
Zalo là ứng dụng nhắn tin và gọi điện miễn phí hoạt động trên nền tang di động vamáy tính Với nhiều tinh năng và đặc điểm nổi bật, Zalo dé dang đáp ứng nhu cầu liên lạcthường xuyên của người dùng Hiện nay đây là một ứng dụng được sử dụng rất rộng rãivới người dùng Việt và không thé phủ nhận được những đóng góp to lớn của ứng dụngnày đến với đời sống người Việt
Từ đầu năm 2022 trở đi, Zalo đã nghiên cứu và xây dựng giao thức mã hóa đầucuối dé đảm bảo tinh an toàn và riêng tư của người dùng Người dùng Zalo đã có thé baomật trò chuyện 2 người và trò chuyện nhóm bang giao thức mã hóa đầu cuối Giao thứcnày hỗ trợ mã hóa tin nhắn bằng mã khóa Các mã khóa này chỉ được lưu trữ trên máy của
người dùng và không được lưu trữ tại bất cứ nơi nào khác (kế cả trên máy chủ Zalo).
Ngoài người dùng trong trò chuyện, không ai có thể giải mã được tin nhắn mã hóa đầu
cudi.
Zalo xây dựng giao thức mã hóa đầu cuối dựa trên các giải thuật Double Ratchet,Diffie-Hellman, Elliptic curve DH, v.v Đây là các giải thuật mã nguồn mở, được nhiều cánhân, tổ chức uy tín kiểm định
Phần tiếp theo sẽ đưa ra định nghĩa các thuật ngữ và ký hiệu được dùng, phục vụcho phần giới thiệu các giải thuật được sử dụng bên cạnh việc mô tả giao thức mã hóa đầucuối của Zalo
2.3.2 Các giải thuật và giao thức được sử dụng.
2.3.2.1 Thuật ngữ và ký hiệu
Tên viết tắt Ý nghĩa
I Identity Key
Cặp khoá 256 bits được tạo ra theo giải thuật Curve25519, được sử
dụng dé định danh cho một tài khoản Zalo, sinh ra bởi thiết bị
31
Trang 32chính (thiết bị di động) của người dùng.
S Signed PreKeys
Cặp khoá được tạo ra theo giải thuật Curve25519, đã được xácthực bởi Identity Key, khoá này được thay thế định kỳ (1 ngày,tuần, tháng, v.v.)
O One-Time Prekeys
Cac cặp khoá được tao ra theo giải thuật Curve25519, là loại khoá
chỉ được sử dụng 1 lần, liên tục được tạo ra khi có yêu cầu
E Ephemeral Key cho việc khởi tạo phiên.
D Ephemeral Key cho việc tao ra Chain Key.
HKDF(X) - HMAC-based Key Derivation Function.
HMAC-SHA256(K,P) - Tính toán HMAC sử dụng SHA256 va khoá K của thông tin.
2.3.2.2 Các giải thuật và giao thức
a Giao thức đồng thuận khóa X3DH
X3DH là một giao thức đồng thuận dùng dé thiết lập một mã khóa chung giữa 2 bênkhi muốn xác thực lẫn nhau dựa trên các cặp khoá công khai (Public Keys) Giao thức nàycung cấp hai tính năng [3]:
32
Trang 33- Forward secrecy: Tính năng đảm bảo khi một mã khoá bị lộ thì cũng không ảnh
hưởng tới các tin nhăn trước.
- Phu định mã hoá (cryptographic deniability) Chỉ với các tin nhắn đã được mã hóa,
bên thứ ba (third party) không thé chứng minh được là cả hai bên tham gia giaothức đã thực sự trao đổi thông tin với nhau Nói cách khác, mỗi bên tham gia giaothức đều có thé phủ nhận dữ liệu đã mã hóa trên là của họ, hoặc phủ nhận họ cókhả năng giải mã nó, mà không có bên nào khác có thể chứng minh được
(deniable).
X3DH là là giao thức đồng thuận khoá bất đồng bộ Người gửi tạo tin nhắn khởi tạosession mã hoá và dùng session đó để mã hoá tin nhắn khởi tạo cho người nhận, ngay cảkhi người nhận không trực tuyến Người nhận sau đó có thể xử lý tin nhắn khởi tạo này vàdùng nó dé tính toán ra session tương ứng dùng cho giải mã tin nhắn
Đê thiệt lập một session mới:
- Bước 1: Người thiết lập session (A) lấy bộ mã khóa gồm Is, Ss, và Op nếu có từ
máy chủ.
- A tiếp tục tạo ra 1 cặp key E nhờ vào giải thuật Curve25519 và tinh ra R từ công
thức:
DH1=DH(I,,Sz) DH2=DH(E,,1I,)
DH 1=DH(E,,Sz) Master SK = KDF (DH 1V¿DH2V¿DH3)
Nếu có O; thì sẽ tinh thêm DH4 bang công thức:
DH 1=DH(E,,O,;) Master SK = KDF(DH 1V¿DH2V¿ DH 3Vi DH 4)
Các công thức trên miêu tả quá trình tinh toán khoá sử dung giao thức DH DHI va
DH2 dùng để tạo ra xác thực chung, trong khi đó DH3, DH4 dùng để tạo ra tính “forwardsecrecy” của giao thức.
Sau khi có được SK, A có thé dùng trực tiếp SK dé mã hóa tin nhắn gửi cho Bhoặc dùng dé tăng cường bảo mật thông qua các giải thuật như DH Ratchet và DoubleRatchet.
33
Trang 3434
Trang 35c Giải thuật Double Ratchet
KDF (Key Derivation Function) là một hàm mã hoá có đầu vào là một khoá bao
mật và ngẫu nhiên (secure and random) và đữ liệu để tạo ra 1 chuỗi dit liệu mới có thé dùng làm mã khóa cho các giải thuật mã hoá khác Tuy nhiên nếu chuỗi dữ liệu này
không ngẫu nhiên thì KDF phải cung cấp 1 hàm băm (hash) bảo mật mã khoá và dit liệuđầu vào (HKDF) có thé đáp ứng đầy đủ tiêu chuẩn của KDF [3]
KDF key
Key Input In KDF
Out
KDF key Output key
Key Input In KDF
Out
Key Input In KDF
Out
KDF key Output key
Hinh 2 8 Giai thuat KDF
35
Trang 36DH Ratchet: trong quá trình trao đổi tin nhắn giữa A và B, nếu A vô tinh dé lộ SK
từ việc trao đổi mã khóa (như mã khóa được tạo từ giải thuật X3DH), tất cả các tin nhắn
cũ đều có thể bị bên thứ ba đọc được Đề giải quyết vấn đề này, DH Ratchet được sử dụng như hình đưới dưới đây SK sẽ được thay đôi trong 1 lượt gửi nhận tin nhắn.
A’s DH ratchet step
Private Key Public Key
Hinh 2 9 Giai thuat DH Ratchet
Symmetric Key Ratchet: mỗi tin nhắn gửi nhận được mã hóa với 1 MK duy nhất
MK này là dau ra từ chuỗi gửi nhận KDF, thường được gọi là Chain Keys Đầu vào của
KDF thường là hang số (có thé là 0), do đó không đảm bảo được tính khôi phục khi bi thâm nhập, mà chỉ đảm bảo MK dùng để mã hóa hoặc giải mã tin nhắn được xóa ngay
lúc đó.
36
Trang 37Vi MK không được dùng dé sinh ra mã khóa kế tiếp, có thé lưu trữ MK mà không ảnh hưởng tới bảo mật của bất kỳ tin nhắn nào khác, tránh mất và tin nhắn tới không
Out
Chain key Message key
Hình 2 10 Giải thuật Symmetric Key Ratchet
Double Ratchet: việc kết hợp 2 giải thuật DH Ratchet và Symmetric Key Ratchet
sẽ tạo nên giải thuật Double Ratchet như sau:
- _ Khi tin nhắn được gửi và nhận, Symmetric Key Ratchet được áp dung dé tính toán
ra MK dé mã hóa hoặc giải mã
- Khi nhận Ratchet Public Key mới, thực hiện DH Ratchet với Symmetric Key
Ratchet trước đó để tạo ra một Chain Key hoàn toàn mới.
Các giải thuật Ratcheting như Double Ratchet cho phép 2 bên cập nhật Session
Key khi trao đổi tin nhắn với nhau, đảm bảo được tính chất “forward secrecy”
37
Trang 38Khi bat đầu trao đối tin nhắn, A tạo ra 1 cặp khóa mới và lấy Public Key của B.
Sử dụng giải thuật DH Ratchet dé tạo đầu vào cho KDF, tính toán ra Root Key (RK) và
Sending Chain Key (CK).
RATCHET ROOT SENDING RECEIVING
() Cac khóa cũ được xóa
Hình 2 11 Giải thuật DH Ratchet để tạo đầu vào cho KDE
Khi A gửi tin nhắn đầu tiên Al, A sử dụng Symmetric Key Ratchet với SendingChain Key (chuỗi key dùng cho việc gửi tin nhắn mã hoá) và đồng thời tạo ra một MK
mới Chain Key nay sẽ được lưu lại MK va Chain Key cũ sẽ bị xóa.
RATCHET ROOT SENDING RECEIVING
Symmetric Key
Ratchet
L) Các khóa cũ được xóa
Hình 2 12 Sử dụng Symmetric Key Ratchet với Sending Chain KeyKhi A nhận tin nhắn trả lời B1 từ B, tin nhắn này đính kèm Public Key mới từ B:
- A áp dung DH Ratchet với Private Key hiện tại dé tạo ra Receiving Chain Key
mới, đồng thời sử dụng KDF tạo ra MK cho việc giải mã tin nhắn BI
38