Tải bản đầy đủ (.pdf) (57 trang)

Nghiên cứu và xây dựng một mở rộng (ExtensionADD ON) trong trình duyệt chromefirefox cho phép mã hóa đầu cuối email

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.27 MB, 57 trang )

LỜI CAM ĐOAN
Tôi – Bùi Văn Tùng, học viên lớp Cao học CLC2016A Trường Đại học Bách
Khoa Hà Nội – cam kết luận văn này là công trình nghiên cứu của bản thân tôi dưới sự
hướng dẫn của TS. Nguyễn Tuấn Dũng – Viện Công Nghệ Thông Tin và Truyền
Thông – Đại học Bách Khoa Hà Nội. 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 xin chịu trách nhiệm về nghiên cứu của mình.
Hà Nội, ngày

tháng năm 2016
Tác giả

Bùi Văn Tùng

Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của luận văn tốt nghiệp và
cho phép bảo vệ:
Hà Nội, ngày tháng năm 2016
Giảng viên hướng dẫn

TS. Nguyễn Tuấn Dũng

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 1


DANH MỤC HÌNH VẼ
Hình 1: Tấn công xem trộm thông tin............................................................................... 7
Hình 2: Tấn công thay đổi thông điệp .............................................................................. 7
Hình 3: Tấn công mạo danh .............................................................................................. 8
Hình 4: Tấn công phát lại.................................................................................................. 8


Hình 5: Mô hình mã hóa đối xứng .................................................................................. 11
Hình 6: Quá trình mã hóa và giải mã của phương pháp mã hóa AES ............................ 14
Hình 7: Mô hình mã hóa đầu cuối End-to-End Encryption ............................................ 22
Hình 8: Quá trình gửi email thông thường ..................................................................... 24
Hình 9: Mô hình cơ bản của hệ thống............................................................................. 26
Hình 10: Mô hình đăng kí ............................................................................................... 27
Hình 11: Mô hình kích hoạt tài khoản ............................................................................ 28
Hình 12: Mô hình mã hóa ............................................................................................... 30
Hình 13: Mô hình giải mã ............................................................................................... 31
Hình 14: Trường hợp tổng quát ...................................................................................... 32
Hình 15: Form đăng kí .................................................................................................... 35
Hình 16: Người dùng đăng kí thành công....................................................................... 36
Hình 17: Người dùng nhận được mã kích hoạt............................................................... 37
Hình 18: Form kích hoạt ................................................................................................. 37
Hình 19: Người dùng kích hoạt tài khoản thành công .................................................... 38
Hình 20: Form đăng nhập ............................................................................................... 39
Hình 21: Người dùng đăng nhập thành công .................................................................. 39
Hình 22: Thông tin người dùng trong cơ sở dữ liệu ....................................................... 40
Hình 23: Các nút được chèn trong thanh công cụ........................................................... 40
Hình 24: Form mã hóa file đính kèm .............................................................................. 40
Hình 24: E2EE Server đăng kí hộ người dùng ............................................................... 41
Hình 25: Nội dung email ban đầu ................................................................................... 42
Hình 26: Mã hóa nội dung email .................................................................................... 43
Hình 27: Nội dung email sau khi đã mã hóa................................................................... 43
Hình 28: Yêu cầu xác thực khi giải mã email ................................................................. 44
Hình 29: Nội dung E2EE Server trả về........................................................................... 44
Hình 30: Thông tin mà E2EE Extension sử dụng ........................................................... 45
Hình 31: Nội dung email sau khi giải mã ....................................................................... 45
Hình 32: Thông tin về khóa khởi tạo khi người dùng chưa đăng kí ............................... 46
Hình 33: Khóa bí mật “tạm thời” mà E2EE Extension sử dụng ..................................... 46

Hình 34: Nội dung email sau khi giải mã ....................................................................... 47
Hình 35: Cấu trúc cơ sở dữ liệu ở phía E2EE Server ..................................................... 54

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 2


CÁC THUẬT NGỮ VIẾT TẮT
E2EE
Extension
Public Key
Private Key
Activation ID
Initial Key
API

End to End Encryption
Mở rộng của trình duyệt
Khóa công khai
Khóa bí mật
Mã kích hoạt tài khoản
Khóa khởi tạo
Application Programming Interface

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 3



MỤC LỤC
DANH MỤC HÌNH VẼ ........................................................................................................... 2
CÁC THUẬT NGỮ VIẾT TẮT 3
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP ................................................................. 5
CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT MÃ HÓA VÀ E2EE ............................................... 6
1.1 Đặt vấn đề ........................................................................................................................... 6
1.1.1 Giới thiệu ................................................................................................................... 6
1.1.2 Các loại hình tấn công .............................................................................................. 6
1.1.3 Yêu cầu của một hệ truyền tin an toàn và bảo mật ................................................. 9
1.2 Lý thuyết cơ bản về mật mã học ....................................................................................... 9
1.2.1 Các khái niệm cơ bản ............................................................................................... 9
1.2.2 Mã hóa đối xứng ..................................................................................................... 11
1.2.3 Phương pháp mã hóa AES ..................................................................................... 13
1.2.3 Mã hóa công khai (mã hóa bất đối xứng).............................................................. 17
1.2.3 Phương pháp mã hóa RSA ..................................................................................... 19
1.3 End to End Ecryption (E2EE) ......................................................................................... 21
CHƯƠNG 2 – XÂY DỰNG MÔ HÌNH ............................................................................. 24
2.1 Xây dựng bài toán ............................................................................................................ 24
2.2 Phân tích và đưa ra hướng giải quyết ............................................................................. 25
2.3 Xây dựng mô hình ............................................................................................................ 26
2.3.1 Mô hình cơ bản của hệ thống ................................................................................. 26
2.3.2 Mô hình đăng kí ...................................................................................................... 27
2.3.3 Mô hình mã hóa ...................................................................................................... 30
2.3.4 Mô hình giải mã ...................................................................................................... 31
2.3.5 Trường hợp tổng quát ............................................................................................. 32
CHƯƠNG 3 – XÂY DỰNG PHẦN MỀM VÀ KIỂM THỬ ........................................... 34
3.1 Môi trường phát triển ....................................................................................................... 34
3.2 Xây dựng phía Client ....................................................................................................... 34
3.3 Xây dựng phía Server ...................................................................................................... 48
3.4 Đánh giá hiệu năng hệ thống ........................................................................................... 54

CHƯƠNG 4 – KẾT LUẬN ................................................................................................... 56
TÀI LIỆU THAM KHẢO .................................................................................................... 57
Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 4


TÓM TẮT NỘI DUNG LUẬN VĂN TỐT NGHIỆP
Trong thời đại hiện nay, mạng viễn thông và Internet đã làm cho việc giao tiếp
giữa con người dễ dàng hơn bao giờ hết, nhưng nó cũng khiến cho việc theo dõi phổ
biến hơn bao giờ hết trong lịch sử loài người. Nếu không có những bước xác thực để
bảo vệ sự riêng tư, các cuộc gọi điện, tin nhắn văn bản, email, tin nhắn nhanh, cuộc
gọi VoIP, trò chuyện video, và tin nhắn mạng xã hội hoàn toàn có thể bị nghe trộm
một cách dễ dàng. Và điều này đã thực sự xảy ra.
Edward Snowden đã công bố cho toàn thế giới biết rằng NSA đã theo dõi, nghe lén
điện thoại trên toàn thế giới. Ngay cả Mĩ và châu Âu cũng không ngoại lệ. Trước đó
WikiLeak cũng đã công bố một thông tin chấn động thế giới về việc chính phủ Mĩ
nghe lén điện thoại của những thành viên chinh phủ Đức, bao gồm cả Thủ tướng
Angela Merkel.
Trong một viễn cảnh đen tối, khi chính phủ và những nhà cung cấp dịch vụ bắt tay
với nhau thì những thông tin riêng tư của người dùng sẽ bị xâm phạm một cách
nghiêm trọng. Vậy làm thế nào để bảo vệ thông tin của người dùng trước những kẻ tấn
công hay chính những nhà cung cấp dịch vụ? Mã hóa đầu cuối (End-to-End
Encryption) chính là một giải pháp để bảo vệ những nội dung trao đổi qua mạng.
Từ những lý do trên, cùng với niềm đam mê về bảo mật đã khiến em quyết định
chọn đề tài: “Nghiên cứu và xây dựng một mở rộng (extension/addon) trong trình
duyệt Chrome/FireFox cho phép mã hóa đầu cuối Email”. Mục tiêu chính của đề tài
là hoàn thiện phần mềm nhằm giúp trao đổi thông tin qua email một cách an toàn. Em
cũng hi vọng rằng phần mềm của em sẽ được trường ĐHBK Hà Nội áp dụng cho hệ
thống email nội bộ của trường.

Nội dung của luận văn được chia ra làm các phần chính như sau.
CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT MÃ HÓA VÀ E2EE
Nội dung chương 1 nói về cơ sở lý thuyết về mã hóa, các phương pháp mã hóa
chính, đồng thời giới thiệu mô hình mã hóa đầu cuối E2EE.
CHƯƠNG 2 – XÂY DỰNG MÔ HÌNH
Chương 2 tập trung vào việc phân tích bài toán, đưa ra giải pháp và xây dựng mô
hình bảo mật dựa trên mô hình mã hóa đầu cuối E2EE.
CHƯƠNG 3 – XÂY DỰNG MÔ HÌNH VÀ KIỂM THỬ
Chương 3 đưa ra mô hình phần mềm, phương pháp xây dựng và các kết quả kiểm
thử.
CHƯƠNG

4



Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

KẾT

LUẬN

Trang 5


CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT MÃ HÓA VÀ E2EE
1.1 Đặt vấn đề
1.1.1 Giới thiệu
Trước đây khi công nghệ máy tính chưa phát triển, khi nói đến vấn đề an toàn bảo mật
thông tin (Information Security), chúng ta thường hay nghĩ đến các biện pháp nhằm

đảm bảo cho thông tin được trao đổi hay cất giữ một cách an toàn và bí mật. Chẳng
hạn là các biện pháp như:
 Đóng dấu và ký niêm phong một bức thư để biết rằng lá thư có được

chuyển nguyên vẹn đến người nhận hay không.
 Dùng mật mã mã hóa thông điệp để chỉ có người gửi và người nhận hiểu
được thông điệp. Phương pháp này thường được sử dụng trong chính trị
và quân sự.
 Lưu giữ tài liệu mật trong các két sắt có khóa, tại các nơi được bảo vệ
nghiêm ngặt, chỉ có những người được cấp quyền mới có thể xem tài liệu.
Với sự phát triển mạnh mẽ của công nghệ thông tin, đặt biệt là sự phát triển của mạng
Internet, ngày càng có nhiều thông tin được lưu giữ trên máy vi tính và gửi đi trên
mạng Internet. Và do đó xuất hiện nhu cầu về an toàn và bảo mật thông tin trên máy
tính. Có thể phân loại mô hình an toàn bảo mật thông tin trên máy tính theo hai hướng
chính như sau:
 Bảo vệ thông tin trong quá trình truyền thông tin trên mạng (Network
Security)
 Bảo vệ hệ thống máy tính, và mạng máy tính, khỏi sự xâm nhập phá hoại từ
bên ngoài (System Security)
Một trong những cách đảm bảo an toàn thông tin trong việc lưu trữ và truyền tải
thông tin chính là sử dụng mật mã mã hóa thông tin sao cho chỉ có người gửi và nhận
hiểu được thông điệp. Đây cũng chính là nền tảng cơ sở cho mô hình mã hóa đầu cuối
(End to End Encryption) được sử dụng trong đồ án.
Trong phần đầu tiên này, chúng ta sẽ đi tìm hiểu các mô hình tấn công, lý thuyết
cơ bản về mật mã học, và các phương pháp mã hóa thường được sử dụng. Cuối
chương, chúng ta sẽ tìm hiểu một trong những mô hình mã hóa là mô hình mã hóa đầu
cuối E2EE.
Sau đây chúng ta sẽ đi tìm hiểu các loại hình tấn công phổ biến.
1.1.2 Các loại hình tấn công
Để xem xét những vấn đề bảo mật liên quan đến truyền thông trên mạng, chúng ta

hãy lấy một bối cảnh sau: có ba nhân vật tên là Alice, Bob và Trudy, trong đó Alice và
Bob thực hiện trao đổi thông tin với nhau, còn Trudy là kẻ xấu, đặt thiết bị can thiệp
Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 6


vào kênh truyền tin giữa Alice và Bob. Sau đây là các loại hành động tấn công của
Trudy mà ảnh hưởng đến quá trình truyền tin giữa Alice và Bob.
Để xem xét những vấn đề bảo mật liên quan đến truyền thông trên mạng, chúng ta
hãy lấy một bối cảnh sau: có ba nhân vật tên là Alice, Bob và Trudy, trong đó Alice và
Bob thực hiện trao đổi thông tin với nhau, còn Trudy là kẻ xấu, đặt thiết bị can thiệp
vào kênh truyền tin giữa Alice và Bob. Sau đây là các loại hành động tấn công của
Trudy mà ảnh hưởng đến quá trình truyền tin giữa Alice và Bob:
 Xem trộm thông tin (Release of Message Content)
Trong trường hợp này Trudy chặn các thông điệp Alice gửi cho Bob, và xem được nội
dung của thông điệp.

Hình 1: Tấn công xem trộm thông tin

Thay đổi thông điệp (Modification of Message)
Trudy chặn các thông điệp Alice gửi cho Bob và ngăn không cho các thông điệp này
đến đích. Sau đó Trudy thay đổi nội dung của thông điệp và gửi tiếp cho Bob. Bob
nghĩ rằng nhận được thông điệp nguyên bản ban đầu của Alice mà không biết rằng
chúng đã bị sửa đổi.

Hình 2: Tấn công thay đổi thông điệp
Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 7




Mạo danh (Masquerade)
Trong trường hợp này Trudy giả là Alice gửi thông điệp cho Bob. Bob không biết điều
này và nghĩ rằng thông điệp là của Alice.

Hình 3: Tấn công mạo danh
 Phát lại thông điệp (Replay)
Trudy sao chép lại thông điệp Alice gửi cho Bob. Sau đó một thời gian Trudy gửi bản
sao chép này cho Bob. Bob tin rằng thông điệp thứ hai vẫn là từ Alice, nội dung hai
thông điệp là giống nhau. Thoạt đầu có thể nghĩ rằng việc phát lại này là vô hại, tuy
nhiên trong nhiều trường hợp cũng gây ra tác hại không kém so với việc giả mạo
thông điệp. Xét tình huống sau: giả sử Bob là ngân hàng còn Alice là một khách hàng.
Alice gửi thông điệp đề nghị Bob chuyển cho Trudy 1000$. Alice có áp dụng các biện
pháp như chữ ký điện tử với mục đích không cho Trudy mạo danh cũng như sửa thông
điệp. Tuy nhiên nếu Trudy sao chép và phát lại thông điệp thì các biện pháp bảo vệ
này không có ý nghĩa. Bob tin rằng Alice gửi tiếp một thông điệp mới để chuyển
thêm cho Trudy 1000$ nữa.

Hình 4: Tấn công phát lại

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 8


1.1.3 Yêu cầu của một hệ truyền tin an toàn và bảo mật
Phần trên đã trình bày các hình thức tấn công, một hệ truyền tin được gọi là an toàn và
bảo mật thì phải có khả năng chống lại được các hình thức tấn công trên. Như vậy hệ

truyền tin phải có các đặt tính sau:
 Tính bảo mật (Confidentiality): Ngăn chặn được vấn đề xem trộm thông điệp.
 Tính chứng thực (Authentication): Nhằm đảm bảo cho Bob rằng thông điệp
mà Bob nhận được thực sự được gửi đi từ Alice, và không bị thay đổi trong quá
trình truyền tin. Như vậy tính chứng thực ngăn chặn các hình thức tấn công sửa
thông điệp, mạo danh, và phát lại thông điệp.
 Tính không chối bỏ (Non-repudiation): Nhằm đảm bảo cho Alice rằng nếu
Bob nhận được thông điệp từ Alice thì Bob không thể phủ nhận rằng mình
chưa nhận được thông điệp. Nó cũng đảm bảo rằng nếu Bob nhận được thông
điệp từ Alice thì Alice cũng không thể phủ nhận rằng mình chưa gửi thông điệp
đó đi.
Mật mã hay mã hóa dữ liệu (cryptography), là một công cụ cơ bản thiết yếu của
bảo mật thông tin. Mật mã đáp ứng được các nhu cầu về tính bảo mật
(confidentiality), tính chứng thực (authentication) và tính không chối bỏ (nonrepudiation) của một hệ truyền tin.
Phần tiếp đây, chúng ta sẽ đi tìm hiểu về lý thuyết cơ bản về mật mã học.
1.2 Lý thuyết cơ bản về mật mã học
1.2.1 Các khái niệm cơ bản
Crytography (mật mã học) là ngành khoa học nghiên cứu về các phương pháp và
kỹ thuật đảm bảo an toàn và bảo mật trong truyền tin liên lạc. Cụ thể hơn, mật mã học
là ngành học nghiên cứu về những cách chuyển đổi thông tin từ dạng “có thể hiểu
được” thành dạng “không thể hiểu được” và ngược lại. Cryptography giúp đảm bảo
các tính chất sau cho thông tin:
 Tính bí mật (confidentiality): thông tin chỉ được tiết lộ cho những ai được
phép
 Tính toàn vẹn (integrity): thông tin không thể bị thay đổi mà không bị phát
hiện
 Tính xác thực (authentication): người gửi (hoặc người nhận) có thể xác thực
được danh tính của họ
 Tính không chối bỏ (non-repudiation): người gửi hoặc người nhận không thể
chối bỏ việc đã gửi hoặc đã nhận thông tin.

Có 1 khái niệm hay bị hiểu nhầm với cryptography, đó là steganography (che
giấu thông tin). Điểm khác nhau căn bản nhất giữa 2 khái niệm này là: mục đích chính
Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 9


của cryptography là việc giấu nội dung của thông tin, trong khi steganography là
việc giấu sự tồn tại của thông tin đó.

Các yếu tố cơ bản trong một hệ thống mã hóa bao gồm:
 Plaintext (cleartext): Là dữ liệu gốc ban đầu, chưa được mã hóa.
 Encrypt (mã hóa): là quá trình dùng để biến thông tin từ dạng này sang dạng
khác và ngăn những người không phận sự tiếp cận được vào thông tin đó. Bản
thân việc mã hóa không ngăn chặn được việc đánh cắp thông tin, nhưng nó
tránh cho việc thông tin không thể bị lộ ra ngay cả khi nó bị đánh cắp nếu như
không có phương tiện giải mã.
 Cipher (hay cypher): là thuật toán dùng để thực hiện quá trình mã hóa hay giải
mã.
 Ciphertext: dữ liệu đã được mã hóa.
 Decrypt (giải mã): là quá trình ngược lại với mã hóa, dùng để khôi phục lại
thông tin ban đầu từ thông tin đã được mã hóa.
 Key (chìa khóa): là thông tin dùng cho qui trình mã hóa và giải mã.
Có rất nhiều loại phương pháp mã hóa khác nhau đã ra đời. nhưng có thể phân chia
các phương pháp mã hóa thành 4 loại chính như sau:
 Mã hóa cổ điển: Đây là phương pháp mã hóa đầu tiên, và cố xưa nhất, và hiện
nay rất ít được dùng đến so với các phương pháp khác. Ý tưởng của phương
pháp này rất đơn giản, bên A mã hóa thông tin bằng một thuật toán mã hóa, và
bên B giải mã thông tin, dựa vào thuật toán của bên A mà không cần dùng đến
bất kì key nào. Do đó, độ an toàn của hệ thống sẽ chỉ dựa vào độ bí mật của

thuật toán, vì chỉ cần biết được thuật toán mã hóa, thì sẽ có thể giải mã được
thông tin.
 Mã hóa một chiều: Là phương pháp mã hóa thông tin sao cho từ thông tin đã
được mã hóa không thể bị giải mã để cho ra kết quả ban đầu. Thông thường
phương pháp mã hóa một chiều sử dụng một hàm băm (hash function) để biến
một chuỗi thông tin thành một chuỗi hash có độ dài nhất định. Hiện tại không
có bất kì cách nào để khôi phục (hay giải mã) chuỗi hash về lại chuỗi thông tin
ban đầu.
 Mã hóa đối xứng: là phương pháp mã hóa mà key mã hóa và key giải mã là
như nhau (Key này được gọi là secret key). Đây là phương pháp thông dụng
nhất hiện nay dùng để mã hóa dữ liệu truyền nhận giữa hai bên. Vì chỉ cần có
secret key là có thể giải mã được, nên bên gửi và bên nhận cần làm một cách
nào đó để cùng thống nhất về secret key này. Vấn đề lớn nhất của phương pháp
mã hóa đối xứng là làm sao để “thỏa thuận” secret key giữa bên gửi và bên
Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 10


nhận, vì nếu truyền secret key từ bên gửi sang bên nhận mà không dùng một
phương pháp bảo vệ nào thì bên thứ ba cũng có thể dễ dàng lấy được secret key
này.
 Mã hóa bất đối xứng: (Hay còn gọi là mã hóa khóa công khai) là phương
pháp mã hóa mà key mã hóa (lúc này gọi là public key – khóa công khai) và
key giải mã (lúc này gọi là private key – khóa bí mật) khác nhau. Nghĩa là key
ta sử dụng để mã hóa dữ liệu sẽ khác với key ta dùng để giải mã dữ liệu. Tất cả
mọi người đều có thể biết được public key (kể cả hacker), và có thể dùng
public key này để mã hóa thông tin. Nhưng chỉ có người nhận mới nắm giữ
private key, nên chỉ có người nhận mới có thể giải mã được thông tin.
Dưới đây chúng ta sẽ đi sâu về hai loại mã hóa chính là mã hóa đối xứng và mã hóa

công khai, cũng như các ưu, nhược điểm của chúng.
1.2.2 Mã hóa đối xứng
Trong mật mã học, mã hóa đối xứng là hình thức mã hóa sử dụng các thuật toán
khóa đối xứng (symmetric-key algorithms) - là một lớp các thuật toán mật mã hóa
trong đó các khóa dùng cho việc mật mã hóa và giải mã có quan hệ rõ ràng với nhau
(có thể dễ dàng tìm được một khóa nếu biết khóa kia). Mã khóa loại này không thể sử
dụng được một cách công khai.
Khóa dùng để mã hóa có liên hệ một cách rõ ràng với khóa dùng để giải mã có nghĩa
chúng có thể hoàn toàn giống nhau, hoặc chỉ khác nhau nhờ một biến đổi đơn giản
giữa hai khóa. Trên thực tế, các khóa này đại diện cho một bí mật được phân hưởng
bởi hai bên hoặc nhiều hơn và được sử dụng để giữ gìn sự bí mật trong kênh truyền
thông tin.
Về mặt khái niệm, phương pháp mã hóa đối xứng tổng quát được biểu diễn bằng mô
hình sau:

Hình 5: Mô hình mã hóa đối xứng
Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 11


Mô hình trên gồm 5 yếu tố:


Bản rõ P (plaintext)



Thuật toán mã hóa E (encrypt algorithm)




Khóa bí mật K (secret key)



Bản mã C (ciphertext)



Thuật toán giải mã D (decrypt algorithm)

Trong đó: C = E (P, K)
P = D (C, K)
Thuật toán mã hóa và giải mã sử dụng chung một khóa, thuật toán giải mã là phép toán
ngược của thuật toán mã hóa. Vì vậy mô hình trên được gọi là phương pháp mã hóa đối
xứng.
Bản mã C được gởi đi trên kênh truyền. Do bản mã C đã được biến đổi so với bản rõ P,
cho nên những người thứ ba can thiệp vào kênh truyền để lấy được bản mã C, thì không
hiểu được ý nghĩa của bản mã. Đây chính là đặc điểm quan trọng của mã hóa, cho phép
đảm bảo tính bảo mật (confidentiality) của một hệ truyền tin.
Một đặc tính quan trọng của mã hóa đối xứng là khóa phải được giữ bí mật giữa người
gởi và người nhận, hay nói cách khác khóa phải được chuyển một cách an toàn từ người
gởi đến người nhận. Có thể đặt ra câu hỏi là nếu đã có một kênh an toàn để chuyển
khóa như vậy thì tại sao không dùng kênh đó để chuyển bản tin, tại sao cần đến chuyện
mã hóa? Câu trả lời là nội dung bản tin thì có thể rất dài, còn khóa thì thường là ngắn.
Ngoài ra một khóa còn có thể áp dụng để truyền tin nhiều lần. Do đó nếu chỉ chuyển
khóa trên kênh an toàn thì đỡ tốn kém chi phí.
Thuật toán sử dụng trong mã hóa đối xứng có thể được chia ra làm hai thể loại, mật mã
luồng (stream ciphers) và mật mã khối (block ciphers). Mật mã luồng mã hóa từng bit

của thông điệp trong khi mật mã khối gộp một số bit lại và mật mã hóa chúng như một
đơn vị. Tuy nhiên, ngày này, mật mã khối được ưa chuộng sử dụng hơn. Trong mật mã
khối, các tham số quan trọng là kích thước (độ dài khối) và kích thước khóa.
Điều kiện cần cho mật mã khối an toàn là:
+) Kích thước khối phải đủ lớn để chống lại các loại tấn công phá hoại bằng
phương pháp thống kê. Tuy nhiên cần lưu ý rằng kích thước khối lớn sẽ làm thời gian
trễ lớn hơn.
+) Không gian khóa phải đủ lớn (nghĩa là chiều dài khóa phải đủ lớn) để chống
lại tìm kiếm vét cạn. Tuy nhiên mặt khác, khóa cần phải đủ ngắn để việc làm khóa,
phân phối và lưu trữ được hiệu quả.

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 12


Dưới đây là bảng thống kê thời gian để phá mã
Kích thước
khóa
32 (bít)
56
128
168

Số lượng khóa

Thời gian thực hiện
Thời gian thực hiện
(tốc độ thử: 103
(tốc độ thử: 109

232 ≈ 4.3 x 109 35.8
phút
2.15 mili giây
khóa/giây)
khóa/giây)
256 ≈ 7.2 x 1142 năm
10.01 giờ
16 ≈ 3.4 x
210128
5.4 x 1024 năm
5.4 x 1018 năm
38 ≈ 3. 7 x 5.9 x 1036 năm
10
2168
5.9 x 1030 năm
1050

Một số thuật toán nối tiếng trong mã hóa đối xứng: AES (còn được gọi là Rijndael),
Blowfish, CAST5,RC4, Tam phần DES (Triple DES), và IDEA (International Data
Encryption Algorithm - Thuật toán mật mã hóa dữ liệu quốc tế).
Ưu điểm lớn nhất của mã hóa đối xứng nói chung là thuật toán đòi hỏi khả năng tính
toán ít hơn các thuật toán khóa bất đối xứng (asymmetric key algorithms). Trên thực tế,
một thuật toán khóa bất đối xứng có khối lượng tính toán nhiều hơn hằng trăm, hằng
ngàn lần một thuật toán khóa đối xứng có chất lượng tương đương.
Nhưng cũng dễ thấy, hạn chế lớn nhất của các thuật toán khóa đối xứng bắt nguồn
từ yêu cầu về sự phân phối khóa bí mật, mỗi bên phải có một bản sao của khóa. Do khả
năng các khóa có thể bị phát hiện bởi kẻ tấn công, nên chúng thường phải được bảo
mật trong khi phân phối và trong khi dùng. Do đó, yêu cầu về việc lựa chọn, phân phối
và lưu trữ các khóa một cách không có lỗi, không bị mất mát là một việc làm khó khăn,
khó có thể đạt được một cách đáng tin cậy.

Hơn thế nữa, mã hóa đối xứng không thể dùng cho mục đích xác thực
(authentication) hay mục đích chống thoái thác (non-repudiation) được.
1.2.3 Phương pháp mã hóa AES
Trong các loại mã hóa đối xứng hiện đại thì AES là một thuật toán mã hóa rất nổi
tiếng. AES (Advanced Encryption Standard, hay Tiêu chuẩn mã hóa tiên tiến) là một
thuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa. AES có
thể làm việc với các khối dữ liệu (đầu vào và đầu ra) 128 bit và khóa có độ dài 128, 192
hoặc 256 bit.
Nguyên tắc mã hóa AES sử dụng dữ liệu đầu vào và key là hệ Hex, do đó bản rõ và
key phải được chuyển từ hệ ASCII sang hệ Hex. Tùy thuộc vào độ dài của key khi sử
dụng mà AES có các cách mã hóa với số lần lặp khác nhau, cụ thể như sau

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 13


Loại mã hóa
AES-128
AES-196
AES-256

Độ dài khóa
128 bit
196 bit
256 bit

Kích thước khối
4
4

4

Số lần lặp
10
12
14

Quá trình mã hóa và giải mã có thể được mô tả như sau:

Hình 6: Quá trình mã hóa và giải mã của phương pháp mã hóa AES
Quá trình mã hóa (Encryption) bao gồm các bước:
Bước 1: Khởi động vòng lặp
+) AddRoundKey: cộng  mã khóa của chu kỳ vào trạng thái hiện hành. Độ dài
của mã khóa của chu kỳ bằng với kích thước của trạng thái.

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 14


Bước 2: Thực hiện vòng lặp (Round 1  round 9)
+) SubBytes – phép thế, các byte được thế thông qua bảng tra S-box. Đây chính
là quá trình phi tuyến của thuật toán. Hộp S-box này được tạo ra từ một phép biến đổi
khả nghịch trong trường hữu hạn GF (28) có tính chất phi tuyến. Để chống lại các tấn
công dựa trên các đặc tính đại số, hộp S-box này được tạo nên bằng cách kết hợp phép
nghịch đảo với một phép biến đổi affine khả nghịch. Hộp S-box này cũng được chọn để
tránh các điểm bất động (fixed point).
+) ShiftRows - dịch chuyển, các hàng được dịch vòng một số bước nhất định.
Đối với AES, hàng đầu được giữ nguyên. Mỗi byte của hàng thứ 2 được dịch vòng trái
một vị trí. Tương tự, các hàng thứ 3 và 4 được dịch vòng 2 và 3 vị trí. Do vậy, mỗi cột

khối đầu ra của bước này sẽ bao gồm các byte ở đủ 4 cột khối đầu vào. Đối với
Rijndael với độ dài khối khác nhau thì số vị trí dịch chuyển cũng khác nhau.
+) MixColumns - quá trình trộn làm việc theo các cột trong khối theo một phép
biến đổi tuyến tính. Bốn byte trong từng cột được kết hợp lại theo một phép biến đổi
tuyến tính khả nghịch. Mỗi khối 4 byte đầu vào sẽ cho một khối 4 byte ở đầu ra với tính
chất là mỗi byte ở đầu vào đều ảnh hưởng tới cả 4 byte đầu ra. Mỗi cột được xem như
một đa thức trong trường hữu hạn và được nhân với đa thức c(x) = 3x3 + x2 + x + 2
(modulo x4 + 1). Vì thế, bước này có thể được xem là phép nhân ma trận trong trường
hữu hạn.
+) AddRoundKey - Tại bước này, khóa con được kết hợp với các khối. Khóa con
trong mỗi chu trình được tạo ra từ khóa chính với quá trình tạo khóa con Rijndael; mỗi
khóa con có độ dài giống như các khối. Quá trình kết hợp được thực hiện bằng
cách XOR từng bít của khóa con với khối dữ liệu
Bước 3: Vòng lặp cuối
+) SubBytes
+) ShiftRows
+) AddRoundKey
Tại chu trình cuối thì bước MixColumns không thực hiện.

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 15


Quá trình giải mã (Decryption) sẽ được làm ngược lại như sau
Bước 1: Khởi động vòng lặp giải mã
+) AddRoundKey đầu tiên trước khi thực hiện các vòng lặp giải mã
Bước 2: Thực hiện vòng lặp (từ round 1 -> round 9)
+) Thực hiện các vòng lặp giải mã, mỗi vòng lặp bao gồm bốn biến đổi liên tiếp
nhau: InvShiftRows, InvShiftRows, AddRoundKey, InvMixColumns. Trong đó

InvShiftRows, InvShiftRows, InvMixColumns lần lượt là các phép biến đối ngược của:
ShiftRows, SubBytes, MixColumns trong quá trình encryption
+) Cũng như trong bước mã hóa, trong vòng lặp giải mã cuối cùng, thao tác
InvMixColumns được bỏ qua
Ưu điểm của AES:
+) AES đã được chính phủ Hoa kỳ tuyến bố là có độ an toàn cao, và đã được sử
dụng thông tin mật.
+) AES có mô tả toán học đơn giản.
+) AES có cấu trúc rõ ràng, đơn giản.
Nhược điểm của AES:
+) Cấu trúc toán học của AES có mô tả toán học khá đơn giản. Tuy điều này
chưa dẫn đến mối nguy hiểm nào nhưng một số nhà nghiên cứu sợ rằng sẽ có người lợi
dụng được cấu trúc này trong tương lai
+) AES chưa đủ an toàn đối với hình thức tấn công side channel attack (tấn công
kênh bên)
Ứng dụng:
+) Hiện nay, AES được sử dụng phổ biến trên toàn thế giới để bảo vệ dữ liệu ở
các tổ chức ngân hàng, tài chính, chính phủ, thương mại điện tử, chữ ký điện tử…
+) Mã hóa AES được ứng dụng nhanh đối với cả phần cứng và phần mềm, và chỉ
yêu cầu một không gian lưu trữ nhỏ, lý tưởng để sử dụng cho việc mã hóa những thiết
bị cầm tay nhỏ như ổ USB flash, ổ đĩa CD…
+) Có thể được sử dụng để xây dựng các hàm băm. Hàm băm Whilrpool là một ví dụ
điển hình.
Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 16


1.2.4 Mã hóa công phai (mã hóa bất đối xứng)
Mã hóa đối xứng dù rằng đã phát triển từ cổ điển đến hiện đại, vẫn tồn tại hai điểm yếu

sau:
 Vấn đề trao đổi khóa giữa người gửi và người nhận: Cần phải có một kênh

an toàn để trao đổi khóa sao cho khóa phải được giữ bí mật chỉ có người gửi
và người nhận biết. Điều này tỏ ra không hợp lý khi mà ngày nay, khối
lượng thông tin luân chuyển trên khắp thế giới là rất lớn. Việc thiết lập một
kênh an toàn như vậy sẽ tốn kém về mặt chi phí và chậm trễ về mặt thời
gian.
 Tính bí mật của khóa: không có cơ sở quy trách nhiệm nếu khóa bị tiết lộ.

Vào năm 1976 Whitfield Diffie và Martin Hellman đã tìm ra một phương pháp mã hóa
khác mà có thể giải quyết được hai vấn đề trên, đó là mã hóa khóa công khai (public key
cryptography) hay còn gọi là mã hóa bất đối xứng (asymetric cryptography). Đây có thể
xem là một bước đột phá quan trọng nhất trong lĩnh vực mã hóa.
Mã hóa bất đối xứng hay mã hóa công khai được định nghĩa như sau.
Định nghĩa mã hóa bất đối xứng: là hệ mật mã bao gồm một tập hợp các phép biến
đổi mã hóa {E,e} và một tập hợp các phép biến đổi giải mã {D,d} được gọi là mật mã
khóa công khai hoặc mật mã bất đối xứng nếu với mỗi cặp khóa (e, d) trong đó khóa mã
hóa e được gọi là khóa công khai (có giá trị mà ai cũng biết), khóa giải mã d được gọi là
khóa riêng hay khóa bí mật. Hệ mật mã này phải đảm bảo an toàn để không có khả năng
tính được d từ e.
Nguyên tắc hoạt động: Người nhận B sinh ra cặp khóa gồm: khóa công khai Kr và
khóa bí mật Kp. Sau đó B sẽ gửi Kr cho A và khóa này được công khai ai cũng có thể
biết. A sẽ dùng Kr để mã hóa thông điệp và gửi thông điệp đã mã hóa cho B. Lúc này, B
sẽ dùng Kp để giải mã thông điệp mà A gửi.
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được.
Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật
nào đó hay không.
Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên.


Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 17


Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính toán
nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang lại
khiến cho chúng được áp dụng trong nhiều ứng dụng.
Về khía cạnh an toàn, các phương pháp mã hóa bất đối xứng cũng không khác nhiều
với các phương pháp mã hóa đối xứng. Có những thuật toán được dùng rộng rãi, có
thuật toán chủ yếu trên lý thuyết, có thuật toán vẫn được xem là an toàn, có thuật toán đã
bị phá vỡ... Cũng cần lưu ý là những thuật toán được dùng rộng rãi không phải lúc nào
cũng đảm bảo an toàn. Một số thuật toán có những chứng minh về độ an toàn với những
tiêu chuẩn khác nhau. Nhiều chứng minh gắn việc phá vỡ thuật toán với những bài toán
nổi tiếng vẫn được cho là không có lời giải trong thời gian đa thức. Mặc dù vậy, độ an
toàn của các thuật toán mật mã hóa khóa công khai cũng tương đối đảm bảo. Nếu thời
gian để phá một mã (bằng phương pháp duyệt toàn bộ) được ước lượng là 1000 năm
thì thuật toán này hoàn toàn có thể dùng để mã hóa các thông tin về thẻ tín dụng - Rõ
ràng là thời gian phá mã lớn hơn nhiều lần thời gian tồn tại của thẻ (vài năm). Nhìn
chung, chưa có thuật toán nào được chứng minh là an toàn tuyệt đối (như hệ thống mật
mã sử dụng một lần). Vì vậy, cũng giống như tất cả các thuật toán mật mã nói chung,
các phương pháp mã hóa công khai cần phải được sử dụng một cách thận trọng.
Phương pháp mã hóa bất đối xứng có một số nhược điểm như sau:
+) Khối lượng tính toán: Để đạt được độ an toàn như phương pháp mã hóa đối
xứng, phương pháp mã hóa bất đối xứng đòi hỏi khối lượng tính toán nhiều hơn đáng kể
so với phương pháp mã hóa đối xứng. Vì thế trong thực tế hai dạng phương pháp mã hóa
này thường được dùng bổ sung cho nhau để đạt hiệu quả cao. Trong mô hình này, một
bên tham gia trao đổi thông tin tạo ra một khóa đối xứng dùng cho phiên giao dịch.
Khóa này sẽ được trao đổi an toàn thông qua hệ thống mã hóa khóa bất đối xứng. Sau đó

2 bên trao đổi thông tin bí mật bằng hệ thống mã hóa đối xứng trong suốt phiên giao
dịch.
+) Các vấn đề liên quan tới thời gian thực: Một khóa công khai nào đó có thể liên
quan tới một số lượng lớn và khó xác định người sử dụng. Vì thế sẽ tốn rất nhiều thời
gian khi muốn thu hồi hoặc thay thế một khóa vì lý do an ninh. Do vậy, các hệ thống
hoạt động trong thời gian thực khi áp dụng mã hóa khóa công khai cần phải hết sức thận
trọng. Có ít nhất 4 vấn đề cần quan tâm được đề cập sau đây
+) Một điểm yếu tiềm tàng trong việc sử dụng khóa bất đối xứng là khả năng bị
tấn công dạng kẻ tấn công đứng giữa (man in the middle attack): kẻ tấn công lợi dụng
việc phân phối khóa công khai để thay đổi khóa công khai. Sau khi đã giả mạo được
Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 18


khóa công khai, kẻ tấn công đứng ở giữa 2 bên để nhận các gói tin, giải mã rồi lại mã
hóa với khóa đúng và gửi đến nơi nhận để tránh bị phát hiện. Dạng tấn công kiểu này có
thể phòng ngừa bằng các phương pháp trao đổi khóa an toàn nhằm đảm bảo xác
thực người gửi và toàn vẹn thông tin. Một điều cần lưu ý là khi các chính phủ quan tâm
đến dạng tấn công này: họ có thể thuyết phục (hay bắt buộc) nhà cung cấp chứng thực
số xác nhận một khóa giả mạo và có thể đọc các thông tin mã hóa.
1.2.5 Phương pháp mã hóa RSA
Phương pháp RSA là một phương pháp mã hóa khóa công khai. RSA được xây dựng bởi
các tác giả Ron Rivest, Adi Shamir và Len Adleman tại học viện MIT vào năm 1977, và
ngày nay đang được sử dụng rộng rãi. Về mặt tổng quát RSA là một phương pháp mã
hóa theo khối. Trong đó bản rõ M và bản mã C là các số nguyên từ 0 đến 2i với i là số
bít của khối. Kích thước thường dùng của i là 1024 bít. RSA sử dụng hàm một chiều là
vấn đề phân tích một số thành thừa số nguyên tố.
Quá trình tạo khóa cho hệ mật RSA được mô tả như sau.
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví

dụ như Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm
khóa công khai và khóa bí mật theo 6 bước sau:
Chọn 2 số nguyên tố lớn khác nhau p, q thỏa mãn điều kiện p  q
Tính tích của nó n  p  q .
Tính giá trị hàm Phi Euler của n:  n    p  1q  1 .
Chọn một số tự nhiên e sao cho 1  e   n  và là số nguyên tố cùng nhau với  n 
Tính giá trị d thỏa mãn điều kiện: e  d  1 mod  n  .
Khóa công khai bao gồm: n và e. Khóa mật:d còn p,q và  (n) thường là xóa sau khi tính
toán khóa.
Quá trình mã hóa:
Giả sử Bob muốn gửi đoạn thông tin mc  me (mod n)

Cuối cùng Bob gửi c cho Alice.

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 19


Quá trình giải mã:
Alice nhận c từ Bob và khóa bí mật d. Alice có thể tìm được m từ c theo công thức sau:
m  c d (mod n)

Quá trình giải mã hoạt động vì ta có
c d  (me )d  med (mod n)

Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), theo Định lý Fermat nhỏ nên:
med  m(mod p)


med  m(mod q)

Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý phần dư Trung hoa, chúng ta
có:
med  m(mod pq)

Hay
c d  m(mod n)

Một số chú ý quan trọng về RSA
An ninh: Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán phân
tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA. Nếu 2 bài toán trên là khó
(không tìm được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc
phá mã toàn bộ đối với RSA. Phá mã một phần phải được ngăn chặn bằng các phương
pháp chuyển đổi bản rõ an toàn. Bài toán RSA là bài toán tính căn bậc e môđun n (với n
là hợp số): tìm số m sao cho me=c mod n, trong đó (e, n) chính là khóa công khai và c là
bản mã. Hiện nay phương pháp triển vọng nhất giải bài toán này là phân tích n ra thừa số
nguyên tố. Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ bí mật d từ khóa
công khai và có thể giải mã theo đúng quy trình của thuật toán. Nếu kẻ tấn công tìm
được 2 số nguyên tố p và q sao cho: n = pq thì có thể dễ dàng tìm được giá trị (p-1)(q-1)
và qua đó xác định d từ e. Trong số học chúng ta đã biết chưa có một phương pháp nào
được tìm ra trên máy tính để giải bài toán này trong thời gian đa thức (polynomial-time).
Tuy nhiên người ta cũng chưa chứng minh được điều ngược lại (sự không tồn tại của
thuật toán).
Tốc độ: RSA có tốc độ thực hiện chậm hơn đáng kể so với các thuật toán mã hóa đối
xứng. Trên thực tế, Bob sử dụng một thuật toán mã hóa đối xứng nào đó để mã hóa văn
bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa ngắn
hơn nhiều so với văn bản). Phương thức này cũng tạo ra những vấn đề an ninh mới. Một
ví dụ là cần phải tạo ra khóa đối xứng thật sự ngẫu nhiên. Nếu không, kẻ tấn công
(thường ký hiệu là Eve) sẽ bỏ qua RSA và tập trung vào việc đoán khóa đối xứng.

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 20


Chiều dài khóa: Số n cần phải có kích thước không nhỏ hơn 512 bít. Năm 2006 hệ mật
RSA được cho là hiệu quả với kích thước n phải từ 1024. Và họ khuyến cáo là tương lai
thì chiều dài n phải từ 2048 bít.
Chọn tham số công khai:
Để nâng cao tốc độ mã hóa, thì chúng ta nên chọn e với giá trị không lớn, thường là 3, 7
hay 65537. Các số này khi biểu diễn ở dạng nhị phân chỉ có 2 chữ số 1, nên khi thực
hiện lệnh lũy thừa sẽ giảm đi lệnh nhân.
Chọn tham số mật.
p và q còn cần được chọn không quá gần nhau để phòng trường hợp phân tích n bằng
phương pháp phân tích Fermat. Ngoài ra, nếu p-1 hoặc q-1 có thừa số nguyên tố nhỏ thì
n cũng có thể dễ dàng bị phân tích theo phương pháp p-1 Pollaid và vì thế p và q cũng
cần được thử để tránh khả năng này. Chúng ta có thể chọn như sau. Trước tiên tìm số
nguyên tố p1 sao cho p=2p1+1 cũng là số nguyên tố, tương tự chọn số nguyên tố lớn q 1
sao cho q=2q1+1 cũng là số nguyên tố.
Giá trị d cần phải đủ lớn. Năm 1990 Michael J. Wiener đã chứng minh rằng nếu như
q  p  2q và d  n1 / 4 / 3 , thì có phương pháp hiệu quả để tính d theo n và e.

1.3 Mã hóa đầu cuối (End to end encryption)
End to End Encryption (E2EE – mã hóa từ đầu-đến-cuối) là một hệ thống giao tiếp đặc
biệt nhằm đảm bảo rằng thông tin được chuyển sang dạng bí mật từ người gửi ban đầu
và chỉ có thể được giải mã duy nhất bởi người nhận cuối cùng. Trên lý thuyết, E2EE sẽ
ngăn ngừa tối đa việc nghe trộm. Ngay cả nhà mạng, các công ty cung cấp dịch vụ
Internet, và cả những công ty cung cấp dịch vụ cũng không thể truy cập được các key
dùng để giải mã thông tin. Hệ thống E2EE được thiết kế để chống lại sự giám sát và giả
mạo thông tin vì không có một bên thứ ba nào có thể giải mã những thông tin đó, trừ

người dùng.

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 21


Một mô hình đơn giản của E2EE như sau:

Hình 7: Mô hình mã hóa đầu cuối End-to-End Encryption
Về mặt lý thuyết, E2EE là sự áp dụng của các phương pháp mã hóa để đạt được mục
đích sao cho thông tin trước khi gửi sẽ chỉ có thể giải mã bởi người nhận mà thôi.
Trên thế giới, một số công ty lớn đang đua nhau đi theo mô hình này để bảo vệ người
dùng. Apple đã công bố về mô hình E2EE của mình áp dụng cho iMessage, WhatsApp
mới đây cũng đã áp dụng E2EE (với một giao thức riêng của chính WhatsApp) cho toàn
bộ hệ thống chat, Facebook cũng đang chuẩn bị áp dụng,…
Câu hỏi đặt ra là liệu E2EE có bảo vệ đầy đủ an toàn thông tin không? Câu trả lời là
CHƯA.
E2EE nhằm mục đích là bảo vệ thông tin được trao đổi, nhưng với siêu dữ liệu (metadata) thì không. Hãy xem xét coi siêu dữ liệu để lộ ra những gì đối với chính quyền và
công ty thu thập nó:
 Họ biết bạn gọi đến một đường giây điện đàm chuyện tình dục lúc 2:24 sáng và
nói chuyện 18 phút. Nhưng họ không biết bạn nói chuyện gì.
 Họ biết bạn gọi đường giây nóng ngăn ngừa tự tử từ cây cầu Golden Gate. Nhưng
nội dung cú gọi thì vẫn là bí mật.
 Họ biết bạn nhận được email từ một dịch vụ thử nghiệm HIV, rồi gọi cho bác sĩ
Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 22



của bạn, rồi truy cập vào trang mạng của nhóm hỗ trợ HIV nội trong vòng một
giờ. Nhưng họ không biết nội dung email là gì và bạn nói gì trên điện thoại.
 Họ biết bạn nhận email từ một nhóm hoạt động cho quyền tự do mạng với tiêu đề
“Còn 52 tiếng đồng hồ để ngưng SOPA” và bạn gọi vị dân cử của mình liền sau
đó. Nhưng nội dung của các trao đổi đó vẫn an toàn không bị chính phủ dòm ngó.
 Họ biết bạn gọi một bác sĩ phụ khoa, nói chuyện nửa tiếng, rồi tìm kiếm trên
mạng số điện thoại của văn phòng phá thai ở địa phương sau đó trong ngày.
Nhưng không ai biết bạn nói chuyện gì.
Bảo vệ siêu dữ liệu để không bị thu thập từ phía ngoài là một vấn đề rất khó về mặt
kỹ thuật, bởi vì các phe thứ ba thường cần đến siêu dữ liệu để có thể nối kết thành công
việc thông tin liên lạc của bạn. Cũng như nhân viên bưu điện phải đọc được bên ngoài
phong thư, các thông tin liên lạc số thường cần được đánh dấu với nguồn gửi và điểm
đến. Công ty điện thoại di động cần biết ước lượng điện thoại bạn đang ở đâu để mới có
thể nối cuộc gọi đến đó.
Những dịch vụ như Tor và các chương trình còn đang thử nghiệm như Ricochet hy
vọng giới hạn lại số lượng siêu dữ liệu sản sinh ra bởi các phương cách thông tin liên lạc
trên mạng.
Trong tương lai, E2EE sẽ phải tìm cách để hạn chế tối đa được sự phát sinh của
meta-data trong quá trình trao đổi.

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 23


CHƯƠNG 2 – XÂY DỰNG MÔ HÌNH PHẦN MỀM
2.1 Xây dựng bài toán
Nhưng phần mở đầu đã giới thiệu, vấn đề bảo mật thông tin cá nhân trên internet nói
chung và bảo mật gmail nói riêng rất cần thiết trên thế giới hiện nay. Hãy xem xét một ví
dụ đơn giản sau:


Hình 8: Quá trình gửi email thông thường
Chúng ta có 2 người dùng là Alice và Bob. Alice muốn gửi một email cho Bob thông
qua Google Mail (Gmail). Email của Alice sẽ được gửi đến máy chủ của Google, và sau
đó Google sẽ chuyển email này đến cho Bob. Google sử dụng giao thức https để bảo vệ
email của Alice trên Internet. Với giao thức https, sẽ rất khó để có thể tấn công trên
đường truyền. Nhưng vấn đề ở đây là Google là người cung cấp dịch vụ và có thể đọc
được thư của Alice trước khi gửi đến cho Bob. Điều này vi phạm về tính riêng tư của
người dùng.
Thêm nữa, trong trường hợp Alice bị lộ ra thông tin về tài khoản của mình, thì bất kì
ai có được thông tin đấy đều có thể đọc được nội dung email mà Alice gửi cho Bob. Đây
chính là một trong những nguy cơ tiềm ẩn về an toàn thông tin.
Từ những điều ở trên, chúng ta cần đặt ra bài toán: Làm sao chỉ có Alice và Bob biết
được nội dung của email? Và Google, cũng như kẻ thứ ba sẽ hoàn toàn không thể biết
được nội dung (dưới dạng bản rõ) của email?

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 24


2.2 Phân tích và đưa ra hướng giải quyết
Trong bài toán được nêu ra ở phần trước, rõ ràng nếu chỉ sử dụng Gmail để gửi email
thì Google hoàn toàn có thể nhìn thấy bản rõ của email. Tính bảo mật cá nhân của người
dùng đã bị phá vỡ.
Khi xem xét bài toán nên ra ở phần trên, chúng ta sẽ cần phải thực hiện thêm một
bước mã hóa email về dạng mà Google không thể nhìn thấy được bản rõ của email trước
khi email được gửi đến Server của Google. Bước này phải thực hiện ở phía máy khách
(Client) để đảm bảo rằng bản rõ của email hoàn toàn không được đưa lên một kênh công
cộng (public channel) nào. Vì nếu bản rõ của email bị lộ ra ngoài ở một kênh công cộng

(không an toàn) thì công việc mã hóa email là vô ích.
Xuất phát từ ý tưởng trên, tác giả đưa ra giải pháp để giải quyết bài toàn trên cụ thể
như sau:
 Nội dung email sẽ được phải được mã hóa trước khi gửi đi. Việc mã hóa này bắt
buộc phải được thực hiện ở trên phía Client.
 Nội dung email đã được mã hóa cũng sẽ được giải mã ở phía Client.
 Phương pháp mã hóa được sử dụng cho việc mã hóa nội dung email là phương
pháp mã hóa công khai (đảm bảo được tính xác thực và không chối bỏ).
 Mỗi người dùng sẽ được cấp phát một cặp khóa công khai/khóa bí mật của riêng
mình.
Khóa bí mật của mỗi người sẽ có một cách riêng để tạo ra, và khóa bí mật này sẽ
không được phép lưu trữ dưới bất kì hình thức nào.
Giải pháp trên ta cho thấy rằng Google, cũng như bên thứ ba (bao gồm cả phần mở
rộng) không thể nhìn thấy được bản rõ của email. Và bản rõ của email hoàn toàn chỉ
xuất hiện ở phía Client mà thôi.
Dưới đây chính là mô hình áp dụng của giải pháp trên.

Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016

Trang 25


×