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ệ
Trang 1LỜ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
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
Trang 2DANH 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
Trang 3CÁC THUẬT NGỮ VIẾT TẮT
Trang 4MỤ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
Trang 5TÓ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ử
Trang 6CHƯƠ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
Trang 7và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
Trang 8 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
Trang 91.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ỏ
(non-repudiation) 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
Trang 10củ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
Trang 11nhậ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
Trang 12Mô 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ả
Trang 13Dưới đây là bảng thống kê thời gian để phá mã
Thời gian thực hiện (tốc độ thử: 109
Ư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
Trang 14Loại mã hóa Độ dài khóa Kích thước khối Số lần lặp
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
Trang 15Bướ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 (2 8) 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) = 3x 3 + x 2 + x + 2 (modulo x 4 + 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
Trang 16Quá 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)
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
Trang 171.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
Trang 18Thô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
Trang 19khó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ó npq
Tính giá trị hàm Phi Euler của n: n p 1q 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:ed 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
Trang 20An 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 m e =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
Trang 21Chiề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 q1
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
q 2 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
Trang 22Mộ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 data) 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ó:
(meta- 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ĩ
Trang 23củ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
Trang 24CHƯƠ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?
Trang 252.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
Trang 262.3 Xây dựng mô hình
2.3.1 Mô hình cơ bản của hệ thống
Hình 9: Mô hình cơ bản của hệ thống
Mô hình của hệ thống bao gồm 2 phần chính:
Phía máy khách (gọi tắt là phía Client): là phần mở rộng (extension/add-on) của trình duyệt Chrome/Firefox Phần mở rộng có nhiệm vụ mã hóa và giải mã thông tin ở phía client Nó cũng có thêm các chức năng mở rộng cho phép người dùng đăng kí, đăng nhập hay kích hoạt tài khoản của mình
Phía máy chủ (gọi tắt là phía Server): là trạm trung chuyển khóa công khai của những người dùng Khóa bí mật hoàn toàn không được lưu ở phía server Ngoài
ra phía server cũng cung cấp các API cơ bản để người dùng đăng kí, đăng nhập, kích hoạt hay xác thực người dùng từ phía Client
Alice gửi một email tới cho Bob
Trước khi email được gửi đi, phần mở rộng của trình duyệt sẽ mã hóa nội dung của email Quá trình thực hiện như sau:
Phần mở rộng yêu cầu phía Server gửi lại cho mình khóa công khai của Bob
Phần mở rộng sẽ sử dụng khóa công khai của Bob để mã hóa nội dung email
Trang 27Như vậy, khi email đã được mã hóa bằng khóa công khai của Bob thì chỉ có Bob (và duy nhất Bob) là người có thể giải mã được nội dung email Google hay bất kì kẻ tấn công ở giữa nào đều không thể giải mã được nội dung email nếu không có khóa bí mật của Bob Bob nhận được email đã được mã hóa từ phía Alice
Khi Bob nhận được email đã được mã hóa từ Alice, Bob sẽ sử dụng phần mở rộng trên trình duyệt của mình để giải mã Quá trình giải mã như sau:
Phần mở rộng sẽ phải xác thực với phía Server trước khi tạo ra khóa bí mật
Sau khi việc xác thực hoàn tất, phần mở rộng sẽ sinh ra khóa bí mật của Bob dựa trên các thông tin của Bob (Chi tiết này sẽ được nói rõ ở phần sau)
Phần mở rộng sử dụng khóa bí mật của Bob để giải mã email
Khóa bí mật của Bob sau khi sử dụng sẽ KHÔNG được lưu trữ lại
Lẽ dĩ nhiên, để có thể sử dụng các tiện ích mã hóa/giải mã trên thì Alice và Bob hay bất
kì người dùng nào muốn sử dụng hệ thống trên thì người đó sẽ phải là một phần của hệ thống Dưới đây chính là mô hình đăng kí và kích hoạt tài khoản của hệ thống
2.3.2 Mô hình đăng kí
Từ giờ trở đi, chúng ta sẽ đặt tên hệ thống là E2EE service Để sử dụng E2EE service, người dùng cần đăng kí để sử dụng Mô hình đăng kí đơn giản như sau:
Hình 10: Mô hình đăng kí
Trang 28Các bước đăng kí như sau:
Alice cung cấp địa chỉ email và tạo một mật khẩu riêng của mình (mật khẩu dùng
để xác thực với E2EE Service) Việc đăng kí được thực hiện trên Extension
Extension sẽ mã hóa mật khẩu của Alice bằng phương pháp mã hóa một chiều MD5, sau đó Extension mới gửi thông tin của Alice (bao gồm email và mật khẩu
đã được mã hóa) lên cho Server Do vậy, trên thực tế E2EE Service cũng không
hề biết mật khẩu thực sự của Alice là gì
Server sẽ lưu lại thông tin của Alice vào trong cơ sở dữ liệu (Database) của mình
Sau khi Alice đăng kí thành công với E2EE Service, phía Server sẽ tạo ra một mã kích hoạt (Gọi là Activation ID) và gửi Activation ID này vào địa chỉ email của Alice Bước này được tạo ra để nhằm xác thực rằng chính Alice mới là người đăng kí với E2EE Service chứ không phải là một kẻ giả mạo nào khác
Hình 11: Mô hình kích hoạt tài khoản