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

Đ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

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 công trình nghiên cứu thân hướng dẫn TS Nguyễn Tuấn Dũng – Viện Công Nghệ Thông Tin Truyền Thông – Đại học Bách Khoa Hà Nội Các số liệu, kết nêu luận văn trung thực chưa công bố công trình khác Tác giả luận văn xin chịu trách nhiệm nghiên cứu Hà Nội, ngày tháng năm 2016 Tác giả Bùi Văn Tùng Xác nhận giáo viên hướng dẫn mức độ hoàn thành luận văn tốt nghiệp 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 DANH MỤC HÌNH VẼ Hình 1: Tấn công xem trộm thông tin Hình 2: Tấn công thay đổi thông điệp Hình 3: Tấn công mạo danh Hình 4: Tấn công phát lại Hình 5: Mô hình mã hóa đối xứng 11 Hình 6: Quá trình mã hóa giải mã 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 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 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 sở liệu 40 Hình 23: Các nút chèn 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 mã hóa 43 Hình 28: Yêu cầu xác thực giải mã email 44 Hình 29: Nội dung E2EE Server trả 44 Hình 30: Thông tin mà E2EE Extension sử dụng 45 Hình 31: Nội dung email sau giải mã 45 Hình 32: Thông tin khóa khởi tạo 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 giải mã 47 Hình 35: Cấu trúc sở 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 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 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 MỤC LỤC DANH MỤC HÌNH VẼ CÁC THUẬT NGỮ VIẾT TẮT TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP CHƯƠNG – CƠ SỞ LÝ THUYẾT MÃ HÓA VÀ E2EE 1.1 Đặt vấn đề 1.1.1 Giới thiệu 1.1.2 Các loại hình công 1.1.3 Yêu cầu hệ truyền tin an toàn bảo mật 1.2 Lý thuyết mật mã học 1.2.1 Các khái niệm 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 – XÂY DỰNG MÔ HÌNH 24 2.1 Xây dựng toán 24 2.2 Phân tích đưa hướng giải 25 2.3 Xây dựng mô hình 26 2.3.1 Mô hình 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 – 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 hệ thống 54 CHƯƠNG – 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 TÓM TẮT NỘI DUNG LUẬN VĂN TỐT NGHIỆP Trong thời đại nay, mạng viễn thông Internet làm cho việc giao tiếp người dễ dàng hết, khiến cho việc theo dõi phổ biến hết lịch sử loài người Nếu bước xác thực để bảo vệ riêng tư, gọi điện, tin nhắn văn bản, email, tin nhắn nhanh, gọi VoIP, trò chuyện video, tin nhắn mạng xã hội hoàn toàn bị nghe trộm cách dễ dàng Và điều thực xảy Edward Snowden công bố cho toàn giới biết NSA theo dõi, nghe điện thoại toàn giới Ngay Mĩ châu Âu không ngoại lệ Trước WikiLeak công bố thông tin chấn động giới việc phủ Mĩ nghe điện thoại thành viên chinh phủ Đức, bao gồm Thủ tướng Angela Merkel Trong viễn cảnh đen tối, phủ nhà cung cấp dịch vụ bắt tay với thông tin riêng tư người dùng bị xâm phạm cách nghiêm trọng Vậy làm để bảo vệ thông tin người dùng trước kẻ công hay nhà cung cấp dịch vụ? Mã hóa đầu cuối (End-to-End Encryption) giải pháp để bảo vệ nội dung trao đổi qua mạng Từ lý trên, với niềm đam mê bảo mật khiến em định chọn đề tài: “Nghiên cứu xây dựng mở rộng (extension/addon) trình duyệt Chrome/FireFox cho phép mã hóa đầu cuối Email” Mục tiêu đề tài hoàn thiện phần mềm nhằm giúp trao đổi thông tin qua email cách an toàn Em hi vọng phần mềm em trường ĐHBK Hà Nội áp dụng cho hệ thống email nội trường Nội dung luận văn chia làm phần sau CHƯƠNG – CƠ SỞ LÝ THUYẾT MÃ HÓA VÀ E2EE Nội dung chương nói sở lý thuyết mã hóa, 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 – XÂY DỰNG MÔ HÌNH Chương tập trung vào việc phân tích toán, đưa giải pháp xây dựng mô hình bảo mật dựa mô hình mã hóa đầu cuối E2EE CHƯƠNG – XÂY DỰNG MÔ HÌNH VÀ KIỂM THỬ Chương đưa mô hình phần mềm, phương pháp xây dựng kết kiểm thử CHƯƠNG – Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 KẾT LUẬN Trang CHƯƠNG – CƠ SỞ LÝ THUYẾT MÃ HÓA VÀ E2EE 1.1 Đặt vấn đề 1.1.1 Giới thiệu Trước công nghệ máy tính chưa phát triển, nói đến vấn đề an toàn bảo mật thông tin (Information Security), thường hay nghĩ đến biện pháp nhằm đảm bảo cho thông tin trao đổi hay cất giữ cách an toàn bí mật Chẳng hạn biện pháp như:  Đóng dấu ký niêm phong thư để biết thư 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 để có người gửi người nhận hiểu thông điệp Phương pháp thường sử dụng trị quân  Lưu giữ tài liệu mật két sắt có khóa, nơi bảo vệ nghiêm ngặt, có người cấp quyền xem tài liệu Với phát triển mạnh mẽ công nghệ thông tin, đặt biệt phát triển mạng Internet, ngày có nhiều thông tin lưu giữ máy vi tính gửi mạng Internet Và xuất nhu cầu an toàn bảo mật thông tin máy tính Có thể phân loại mô hình an toàn bảo mật thông tin máy tính theo hai hướng sau:  Bảo vệ thông tin trình truyền thông tin mạng (Network Security)  Bảo vệ hệ thống máy tính, mạng máy tính, khỏi xâm nhập phá hoại từ bên (System Security) Một cách đảm bảo an toàn thông tin việc lưu trữ truyền tải thông tin sử dụng mật mã mã hóa thông tin cho có người gửi nhận hiểu thông điệp Đây tảng sở cho mô hình mã hóa đầu cuối (End to End Encryption) sử dụng đồ án Trong phần này, tìm hiểu mô hình công, lý thuyết mật mã học, phương pháp mã hóa thường sử dụng Cuối chương, tìm hiểu mô hình mã hóa mô hình mã hóa đầu cuối E2EE Sau tìm hiểu loại hình công phổ biến 1.1.2 Các loại hình công Để xem xét vấn đề bảo mật liên quan đến truyền thông mạng, lấy bối cảnh sau: có ba nhân vật tên Alice, Bob Trudy, Alice Bob thực trao đổi thông tin với nhau, Trudy 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 vào kênh truyền tin Alice Bob Sau loại hành động công Trudy mà ảnh hưởng đến trình truyền tin Alice Bob Để xem xét vấn đề bảo mật liên quan đến truyền thông mạng, lấy bối cảnh sau: có ba nhân vật tên Alice, Bob Trudy, Alice Bob thực trao đổi thông tin với nhau, Trudy kẻ xấu, đặt thiết bị can thiệp vào kênh truyền tin Alice Bob Sau loại hành động công Trudy mà ảnh hưởng đến trình truyền tin Alice Bob:  Xem trộm thông tin (Release of Message Content) Trong trường hợp Trudy chặn thông điệp Alice gửi cho Bob, xem nội dung 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 thông điệp Alice gửi cho Bob ngăn không cho thông điệp đến đích Sau Trudy thay đổi nội dung thông điệp gửi tiếp cho Bob Bob nghĩ nhận thông điệp nguyên ban đầu Alice mà 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  Mạo danh (Masquerade) Trong trường hợp Trudy giả Alice gửi thông điệp cho Bob Bob điều nghĩ thông điệp Alice Hình 3: Tấn công mạo danh  Phát lại thông điệp (Replay) Trudy chép lại thông điệp Alice gửi cho Bob Sau thời gian Trudy gửi chép cho Bob Bob tin thông điệp thứ hai từ Alice, nội dung hai thông điệp giống Thoạt đầu nghĩ việc phát lại vô hại, nhiên nhiều trường hợp gây tác hại không so với việc giả mạo thông điệp Xét tình sau: giả sử Bob ngân hàng Alice khách hàng Alice gửi thông điệp đề nghị Bob chuyển cho Trudy 1000$ Alice có áp dụng biện pháp chữ ký điện tử với mục đích không cho Trudy mạo danh sửa thông điệp Tuy nhiên Trudy chép phát lại thông điệp biện pháp bảo vệ ý nghĩa Bob tin Alice gửi tiếp thông điệp để chuyển thêm cho Trudy 1000$ 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 1.1.3 Yêu cầu hệ truyền tin an toàn bảo mật Phần trình bày hình thức công, hệ truyền tin gọi an toàn bảo mật phải có khả chống lại hình thức công Như hệ truyền tin phải có đặt tính sau:  Tính bảo mật (Confidentiality): Ngăn chặn vấn đề xem trộm thông điệp  Tính chứng thực (Authentication): Nhằm đảm bảo cho Bob thông điệp mà Bob nhận thực gửi từ Alice, không bị thay đổi trình truyền tin Như tính chứng thực ngăn chặn hình thức công sửa thông điệp, mạo danh, phát lại thông điệp  Tính không chối bỏ (Non-repudiation): Nhằm đảm bảo cho Alice Bob nhận thông điệp từ Alice Bob phủ nhận chưa nhận thông điệp Nó đảm bảo Bob nhận thông điệp từ Alice Alice phủ nhận chưa gửi thông điệp Mật mã hay mã hóa liệu (cryptography), công cụ thiết yếu bảo mật thông tin Mật mã đáp ứng nhu cầu tính bảo mật (confidentiality), tính chứng thực (authentication) tính không chối bỏ (nonrepudiation) hệ truyền tin Phần tiếp đây, tìm hiểu lý thuyết mật mã học 1.2 Lý thuyết mật mã học 1.2.1 Các khái niệm Crytography (mật mã học) ngành khoa học nghiên cứu phương pháp kỹ thuật đảm bảo an toàn bảo mật truyền tin liên lạc Cụ thể hơn, mật mã học ngành học nghiên cứu 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” ngược lại Cryptography giúp đảm bảo tính chất sau cho thông tin:  Tính bí mật (confidentiality): thông tin tiết lộ cho phép  Tính toàn vẹn (integrity): thông tin bị thay đổi mà không bị phát  Tính xác thực (authentication): người gửi (hoặc người nhận) xác thực danh tính họ  Tính không chối bỏ (non-repudiation): người gửi người nhận chối bỏ việc gửi nhận thông tin Có khái niệm hay bị hiểu nhầm với cryptography, steganography (che giấu thông tin) Điểm khác khái niệm là: mục đích Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang cryptography việc giấu nội dung thông tin, steganography việc giấu tồn thông tin Các yếu tố hệ thống mã hóa bao gồm:  Plaintext (cleartext): Là liệu gốc ban đầu, chưa mã hóa  Encrypt (mã hóa): trình dùng để biến thông tin từ dạng sang dạng khác ngăn người không phận tiếp cận vào thông tin Bản thân việc mã hóa không ngăn chặn việc đánh cắp thông tin, tránh cho việc thông tin bị lộ bị đánh cắp phương tiện giải mã  Cipher (hay cypher): thuật toán dùng để thực trình mã hóa hay giải mã  Ciphertext: liệu mã hóa  Decrypt (giải mã): 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 mã hóa  Key (chìa khóa): thông tin dùng cho qui trình mã hóa giải mã Có nhiều loại phương pháp mã hóa khác đời phân chia phương pháp mã hóa thành loại sau:  Mã hóa cổ điển: Đây phương pháp mã hóa đầu tiên, cố xưa nhất, dùng đến so với phương pháp khác Ý tưởng phương pháp đơn giản, bên A mã hóa thông tin thuật toán mã hóa, bên B giải mã thông tin, dựa vào thuật toán bên A mà không cần dùng đến key Do đó, độ an toàn hệ thống dựa vào độ bí mật thuật toán, cần biết thuật toán mã hóa, giải mã thông tin  Mã hóa chiều: Là phương pháp mã hóa thông tin cho từ thông tin mã hóa bị giải mã kết ban đầu Thông thường phương pháp mã hóa chiều sử dụng hàm băm (hash function) để biến chuỗi thông tin thành chuỗi hash có độ dài định Hiện cách để khôi phục (hay giải mã) chuỗi hash lại chuỗi thông tin ban đầu  Mã hóa đối xứng: phương pháp mã hóa mà key mã hóa key giải mã (Key gọi secret key) Đây phương pháp thông dụng dùng để mã hóa liệu truyền nhận hai bên Vì cần có secret key giải mã được, nên bên gửi bên nhận cần làm cách để thống secret key Vấn đề lớn phương pháp mã hóa đối xứng để “thỏa thuận” secret key bên gửi bên Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 10 Background gửi Key dùng để mã hóa file đính kèm sang cho Content-Script Email mã hóa thành khác cho người, sau ghép lại gửi cho e2ee.test.user2@gmail.com dung.nguyentuan@hust.edu.vn Email mã hóa Khóa công khai người nhận thành nội dung mã hóa, sau đính kèm tên người nhận vào cuối nội dung mã hóa mã hóa tiếp AES với key định trước Extension mã phân cách STR_SEPERATOR định nghĩa sẵn Extension để giải mã bóc tách email cho người Hình 26: Mã hóa nội dung email Hình 27: Nội dung email sau mã hóa Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 43 Trong hộp thư gửi e2ee.test.user1@gmail.com, Extension phát có email mã hóa nên chèn thêm khung gồm nút để người gửi giải mã email muốn đọc lại Giải mã email Khi e2ee.test.user2@gmail.com nhận email, có tài khoản E2EE đăng nhập từ trước nên e2ee.test.user2@gmail.com tải file đính kèm thường, sau kéo thả file vào khung Decrypt mà Extension thêm vào cuối email ấn Decrypt, Extension mở hộp thoại yêu cầu nhập mật Hình 28: Yêu cầu xác thực giải mã email Sau nhập xong, Content-Script gửi yêu cầu cho Background, yêu cầu xác thực mật với Server Server trả thông điệp: Hình 29: Nội dung E2EE Server trả Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 44 Do e2ee.test.user2@gmail.com tài khoản đăng nhập từ trước nên initialKey, Extension sinh RSA Key từ email mật e2ee.test.user2@gmail.com Hình 30: Thông tin mà E2EE Extension sử dụng Extension dùng Private Key để giải mã nội dung email lấy nội dung gốc AES Key để giải mã file đính kèm vừa người dùng kéo vào Sau thay nội dung gốc email: Hình 31: Nội dung email sau giải mã Như hình, email giải mã nguyên gốc, file đính kèm gốc giải mã tải xuống máy tính người dùng thành công Đối với dung.nguyentuan@hust.edu.vn , trước chưa đăng ký tài khoản E2EE nên chưa thể giải mã email Người dùng thực đăng ký Active tài khoản bình thường Nhưng nhấn Decrypt nhập mật khẩu, Server trả lại thông điệp cho Extension bao gồm có Initial Key sau: Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 45 Hình 32: Thông tin khóa khởi tạo người dùng chưa đăng kí Extension tạo RSA Key, từ initial Key từ email + mật người dùng: Hình 33: Khóa bí mật “tạm thời” mà E2EE Extension sử dụng Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 46 Sau Extension thử Decrypt email key thay nội dung email gốc + tải file đính kèm gốc xuống máy tình người dùng thường Hình 34: Nội dung email sau giải mã Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 47 3.3 Xây dựng phía Server Phía server cung cấp API để extension sử dụng cho hoạt động Các API mà phía server cung cấp bao gồm Đăng kí @RequestMapping(value = {"/user/register"}, method = RequestMethod.POST) public @ResponseBody JsonNode register(@RequestBody User user) { final JsonNodeFactory nodeFactory = JsonNodeFactory.instance; ObjectNode node = nodeFactory.objectNode(); String email = user.getEmail(); String password = user.getPassword(); // First, we need to check the user already exists or not user = userService.findByEmail(email); // 1st case, user's email is already registered if (user != null) { // If user is activated, send error message if (user.isActive()) { node.put("message", "Sorry, your account is already activated"); return node; } // By default, user cannot register two times if (!StringUtils.isEmpty(user.getPassword())) { node.put("message", "Sorry, your email is already registered"); return node; } } else Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 48 { user = new User(); } String activeId = UUID.randomUUID().toString(); user.setEmail(email); user.setPassword(password); user.setActiveId(activeId); user.setActive(false); userService.saveOrUpdateUser(user); new MailUtils().sendActiveEmail(email, activeId); node.put("message", "Congratulation, your registration is success"); return node; } Active account @RequestMapping(value = {"/user/active"}, method = RequestMethod.POST) public @ResponseBody JsonNode active(@RequestBody User user) { final JsonNodeFactory nodeFactory = JsonNodeFactory.instance; ObjectNode node = nodeFactory.objectNode(); // Get information from data String email = user.getEmail(); String password = user.getPassword(); String activeId = user.getActiveId(); String mainPublicKey = user.getMainPublicKey(); // First, we need to check the user already exists or not user = userService.findByEmail(email); if (user == null) { node.put("message", "Your email does not exist!"); Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 49 return node; } // In those case, the user does already exist if (user.isActive()) { node.put("message", "Your account is already activated!"); return node; } if (!user.getPassword().equals(password)) { node.put("message", "Your password is not correct!"); return node; } if (!user.getActiveId().equals(activeId)) { node.put("message", "Your activeId is not correct!"); return node; } user.setActiveTime(new Date()); user.setMainPublicKey(mainPublicKey); user.setActiveId(activeId); user.setActive(true); userService.saveOrUpdateUser(user); node.put("message", "Congratulation, your account is activated"); return node; } Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 50 Khi user yêu cầu public key người nhận API đảm nhận việc lấy public key thực công việc @RequestMapping(value = {"/key/getPublicKeys"}, method = RequestMethod.POST) public @ResponseBody JsonNode getPublicKeys(@RequestBody String[] data) { final JsonNodeFactory nodeFactory = JsonNodeFactory.instance; ObjectNode node = nodeFactory.objectNode(); User user = new User(); for (String userEmail : data) { user = userService.findByEmail(userEmail); if (user != null) { node.put(user.getEmail(), user.getMainPublicKey() != null user.getMainPublicKey() : user.getTempPublicKey()); } else { String initialKey = UUID.randomUUID().toString(); while (userService.findByInitialKey(initialKey) != null) { initialKey = UUID.randomUUID().toString(); } String tempPublicKey = KeyUtils.getTempPublicKey(initialKey); user = new User(); user.setEmail(userEmail); user.setTempPublicKey(tempPublicKey); user.setActive(false); userService.saveOrUpdateUser(user); node.put(userEmail, tempPublicKey); } } return node; Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 ? Trang 51 } Điểm đặc biệt API việc sử dụng Nashorn để chạy Javascript phía server Đây công nghệ mẻ, tiết kiệm thời gian lớn cho developer phát triển ứng dụng mà cần đồng hóa client server Ở đây, Nashorn giúp cho việc chạy cryptico js cách dễ dàng đơn giản, không công phải phát triển lại phía server Phần code chạy js biểu diễn public static String getTempPublicKey(String initialKey) { try { ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); engine.eval(new InputStreamReader(KeyUtils.class.getResourceAsStream("cryptico.js"))); Invocable invocable = (Invocable) engine; Object result = invocable.invokeFunction("getTempPublicKey", initialKey); return result.toString(); } catch (Exception e) { return null; } } Sau user đăng kí active account mình, với lần giải mã email, user cần phải xác thực lại với E2EE service API mà phía server cung cấp để xác thực sau: @RequestMapping(value = {"/user/verify"}, method = RequestMethod.POST) public @ResponseBody JsonNode verify(@RequestBody User user) { final JsonNodeFactory nodeFactory = JsonNodeFactory.instance; ObjectNode node = nodeFactory.objectNode(); Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 52 // Get information from data String email = user.getEmail(); String password = user.getPassword(); // First, we need to check the user already exists or not user = userService.findByEmail(email); if (user == null) { node.put("message", "Your email does not exist!"); return node; } if (!user.isActive()) { node.put("message", "Sorry, your account is not activated!"); return node; } if (!user.getPassword().equals(password)) { node.put("message", "Your password is not correct!"); return node; } node.put("message", "OK"); node.put("initialKey", user.getInitialKey()); node.put("activeTime", new SimpleDateFormat("hh:mm:ss yyyy").format(user.getActiveTime())); return node; } Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 dd-MM- Trang 53 Về phía DB, cần table với cấu trúc đơn giản sau Hình 35: Cấu trúc sở liệu phía E2EE Server 3.4 Đánh giá hiệu hệ thống Hệ thống cài đặt cấu sau: Server: CPU: Intel Core i5-4460 RAM: 4Gb OS: Windows Client: CPU: Intel Core i3 4100U RAM: 4Gb OS: Windows Hiệu trung bình hệ thống đánh giá qua tiêu chí thời gian mã hóa, thời gian giải mã với đoạn văn file đính kèm thời gian sinh public key Dưới bảng đánh giá chi tiết Học viên thực hiện: Bùi Văn Tùng – CAC16002 Khóa CLC2016 Trang 54 Dung lượng file Phương pháp mã hóa Thời gian mã hóa Thời gian giải mã văn Văn < 100 kí tự RSA

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

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT MÃ HÓA VÀ E2EE

  • CHƯƠNG 2 – XÂY DỰNG MÔ HÌNH PHẦN MỀM

  • CHƯƠNG 3 – XÂY DỰNG PHẦN MỀM VÀ KIỂM THỬ

  • CHƯƠNG 4 – KẾT LUẬN

  • TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan