1. Trang chủ
  2. » Công Nghệ Thông Tin

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

57 205 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 57
Dung lượng 2,27 MB

Nội dung

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 1

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

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 2

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

Trang 3

CÁC THUẬT NGỮ VIẾT TẮT

Trang 4

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

Trang 5

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ử

Trang 6

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

Trang 7

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

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 9

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ỏ

(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 10

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

 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 11

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

Trang 12

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ả

Trang 13

Dướ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 14

Loạ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 15

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 (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 16

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)

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 17

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

Trang 18

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

Trang 19

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:   np 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: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 20

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 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 21

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 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 22

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 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 23

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

Trang 24

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?

Trang 25

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

Trang 26

2.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 27

Như 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 28

Cá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

Ngày đăng: 25/07/2017, 21:49

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Cryptography and Network Security Principles and Practices - William Stallings [2]. https://ssd.eff.org Link
[4]. Handbook of Applied Cryptography – Alfred Menzes [5]. https://github.com/wwwtyro/cryptico Link
[3]. Applied Cryptography – Bruce Schneier’s Khác
[6]. Codes and Cryptography - Dominic Welsh Khác
[8]. End-to-End Encrypted Messaging Protocols: An Overview - Francesca Musiani, Harry Halpin Khác
[9]. End-to-End Encryption for Personal Telehealth Systems - Ollerer, Mense Khác

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w