BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG BÁO CÁO CUỐI KÌ CHUYÊN ĐỀ AN TOÀN PHẦN MỀM Đề tài “Xây dựng server xác thực 2FA bằng Google Authenticator” Người hướng dẫn TS HUỲNH.
BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG BÁO CÁO CUỐI KÌ CHUN ĐỀ AN TỒN PHẦN MỀM Đề tài: “Xây dựng server xác thực 2FA Google Authenticator” Người hướng dẫn : Sinh viên thực : Mã số sinh viên : Lớp : Khóa : Hệ : TS HUỲNH TRỌNG THƯA NGUYỄN HOÀN NAM DƯƠNG N14DCAT032 D14CQAT01-N 2014 – 2019 ĐẠI HỌC CHÍNH QUY TP.HCM, tháng 11/2018 BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG BÁO CÁO CUỐI KÌ CHUN ĐỀ AN TỒN PHẦN MỀM Đề tài: “Xây dựng server xác thực 2FA Google Authenticator” Người hướng dẫn : Sinh viên thực : Mã số sinh viên : Lớp : Khóa : Hệ : TS HUỲNH TRỌNG THƯA NGUYỄN HOÀN NAM DƯƠNG N14DCAT032 D14CQAT01-N 2014 – 2019 ĐẠI HỌC CHÍNH QUY TP.HCM, tháng 11/2018 MỤC LỤC Chương I: ĐẶC TẢ ỨNG DỤNG .1 1.1 Những vấn đề 1.1.1 2FA ? 1.1.2 Google Authenticator gì? 1.2 Khả ứng dụng đề tài 1.3 Một số hình ảnh CHƯƠNG II : THIẾT KẾ ỨNG DỤNG 2.1 Thuật toán HMAC-Based One-Time Password Algorithm (HOTP) .5 2.1 Thuật toán TOTP (Time-based One-time Password) .7 2.3 Mơ hình ứng dụng .10 CHƯƠNG III: XÂY DỰNG ỨNG DỤNG 12 3.1 Chuẩn bị 12 3.2 Thực thi ứng dụng .12 CHƯƠNG IV: KẾT QUẢ ỨNG DỤNG 15 4.1 Đăng kí đăng nhập mã QR code 15 4.2 Người dùng nhập sai mã sai lệch không đồng thời gian .16 TÀI LIỆU THAM KHẢO 17 DANH MỤC HÌNH ẢNH Hình 1.1 Google Authenticator Hình 1.2: Giao diện trang đăng nhập Hình 1.3 Giao diện trang đăng kí .3 Hình 2.1 Thuật tốn HOTP Hình 2 Sinh OTP thuật tốn HOTP 10 Hình 2.3 Mơ hình ứng dụng tổng qt 11 Hình 2.4 Mơ hình sữ dụng thuật tốn TOTP ứng dụng 11 Hình 3.1 Code sinh khóa ngẫu nhiên .13 Hình 3.2 Hàm tạo QR code 14 Hình 3.3 Hàm tínnh OTP phía server .14 Hình 3.4 Hàm kiểm tra lại OTP người dùng nhập OTP server sinh 15 Hình 4.3 Người dùng nhập mã không hợp lệ 17 BÁO CÁO CHUYÊN ĐỀ AN TOÀN PHẦM MỀM Chương 1: Đặc tả ứng dụng Chương I: ĐẶC TẢ ỨNG DỤNG 1.1 Những vấn đề 1.1.1 2FA ? 2FA viết tắt từ Two-factor authentication, nghĩa xác thực yếu tố hay xác minh bước, tính bảo mật hiệu quả, giúp người dùng tránh khỏi nguy bị đăng nhập tài khoản mạng trái phép, chẳng hạn như: Tài khoản google (gmail), tài khoản facebook, hay tài khoản sàn giao dịch tiền mã hóa,… Thơng thường, đăng nhập vào tài khoản trang mạng đó, người dùng cần nhập tên đặng nhập địa email cộng với mật đăng nhập sử dụng tài khoản Những thông tin dễ dàng bị hacker đánh cắp tất nhiên bạn bị tài khoản, nguy hiểm Khi sử dụng bảo mật 2FA, việc sử dụng tên đặng nhập địa email mật người dùng cịn phải nhập mã bảo mật 2FA đăng nhập Mã 2FA lần đăng nhập có mã mới, nhận từ tin nhắn SMS số điện thoại hệ thống gửi đến lần đăng nhập, lấy từ ứng dụng 2FA cài thiết bị điện thoại, máy tính bảng 1.1.2 Google Authenticator gì? Hiện tình trạng đánh cắp tài khoản, liệu người dùng xảy nhiều nguy hiểm tài khoản rơi vào tay kẻ xấu Và để tăng tính bảo mật cho dịch vụ Google phát triển tính có tên Google Authenticator, tính bảo mật lớp hiệu Google dựa thuật tốn Time-Based One-Time Password (TOTP) Google Authenticator có chức tạo dãy mã code, bạn đăng nhập tài khoản có bật chức xác thực hai yếu tố Google, Facebook, Binance NGUYỂN HỒN NAM DƯƠNG N14DCAT032 Hình 1.1 Google Authenticator BÁO CÁO CHUYÊN ĐỀ AN TOÀN PHẦM MỀM Chương 1: Đặc tả ứng dụng thiết bị sau nhập mật người dùng phải nhập mã code ứng dụng Google Authenticator tạo Đặc biệt chỗ 30 giây ứng dụng Google Authenticator lại thay đổi mã code tài khoản bảo tối đa 1.2 Khả ứng dụng đề tài Ứng dụng xây dựng tảng ứng dụng cần dùng đến việc bảo vệ an toàn cho tài khỏa website thương mại điện tử, sàn giao dịch trực tuyến hay website có lưu trữ thơng tin quan trọng người dùng Ứng có khả cung cấp bảo mật thực việc xác thực tài khoản người dùng thông qua Google Authenticator sữ dụng biện pháp giúp đảm bảo an toàn cho tài khoản người dùng 1.3 Một số hình ảnh Hình 1.2: Giao diện trang đăng nhập NGUYỂN HOÀN NAM DƯƠNG N14DCAT032 BÁO CÁO CHUYÊN ĐỀ AN TỒN PHẦM MỀM Chương 1: Đặc tả ứng dụng Hình 1.3 Giao diện trang đăng kí Hình 1.4 Giao diện lần đăng nhập NGUYỂN HOÀN NAM DƯƠNG N14DCAT032 BÁO CÁO CHUYÊN ĐỀ AN TOÀN PHẦM MỀM Chương 1: Đặc tả ứng dụng Hình 1.5 Giao diện lần đăng nhập thứ trở Hình 1.6 Giao diện trang dashboard đăng nhập thành công NGUYỂN HOÀN NAM DƯƠNG N14DCAT032 BÁO CÁO CHUYÊN ĐỀ AN TOÀN PHẦM MỀM Chương 2: Thiết kế ứng dụng CHƯƠNG II : THIẾT KẾ ỨNG DỤNG 2.1 Thuật toán HMAC-Based One-Time Password Algorithm (HOTP) HOTP thuật toán sinh mật OTP dựa hàm hash SHA-1 Về cách sinh mật OTP sử dụng thuật toán HOTP: HOTP(K,C) = Truncate(HMAC_SHA-1(K,C)) (1) Trong công thức (1): K: Là giá trị chia sẻ bí mật Client Server C: Là đếm đồng Client Server, C có độ dài bytes Truncate( ): Là hàm tách chuỗi, thực việc trích xuất kết từ hàm Hash để có mật OTP Phương pháp tách chuỗi sau: HMAC_SHA-1(K,C)=SHA-1(K⊕C1… ∥ SHA-1(K⊕ C2… ∥ C)) (2) Trong công thức (2): C1 = 0x36 (36 hệ thập lục phân) C2 = 0x5c (5C hệ thập lục phân) HMAC_SHA-1(K,C) hàm tính tốn dựa thuật tốn HMAC kết hợp với hàm băm SHA-1 giá trị K đếm C Kết đầu hàm HMAC_SHA-1(K,C) cho ta giá trị có độ dài 160 bits = 20 bytes, dùng hàm tách chuỗi (Truncate) để tách từ chuổi 160 bits thành chuỗi có độ dài 32 bit, sau tính modulo để mật OTP Cụ thể sau: Từ kết đầu 160 bit hàm HMAC_SHA1(K,C), ta lấy bit thấp byte cuối chuyển sang số 10 để tìm vị trí offset, sau ta chuỗi bytes = 32 bit tính từ vị trí offset Giá trị mật tính theo cơng thức sau: HOTPvalue = HOTP(K,C) mod 10d (3) Trong công thức 3: d số chữ số OTP, thông thường mật OTP sinh có độ dài từ đến chữ số (ví dụ là: 123456, ) Ở đây, giá trị bí mật K chia sẻ máy chủ xác thực máy trạm phía người dùng qua kênh liên lạc Sau máy chủ xác thực sử dụng giá trị bí mật K, đếm C để sinh mật OTP theo cơng thức (2), máy trạm phía người dùng sử dụng thiết bị sinh mật OTP Token để sinh mật OTP (Token lưu giá trị bí mật K chia sẻ đếm NGUYỂN HOÀN NAM DƯƠNG N14DCAT032 BÁO CÁO CHUYÊN ĐỀ AN TOÀN PHẦM MỀM Chương 2: Thiết kế ứng dụng C) Để xác thực, máy chủ so sánh mật OTP sinh máy chủ với mật OTP sinh từ máy trạm phía người dùng, giống nhau, người dùng máy trạm xác thực thành cơng Phía người dùng Sữ dụng Token hay phần mềm sinh OTP (đã đồng với Server) Server xác thực chia sẻ K Sinh OTP Kênh theo thuật tốn HOTP TOTP Giá trị bí mật (K) Counter (C) 6-8 số HMAC SHA-1 160bit TRUNKCATE() Mã OTP Thuật tốn HOTP Hình 2.4 Thuật tốn HOTP Trong nhiều trường hợp, vấn đề xác thực máy chủ xác thực máy trạm phía người dùng sảy trình đồng giá trị mật vậy, muốn người dùng đăng nhập hệ thống thực thành công, phân tích q trình đồng giá trị sinh mật OTP máy chủ xác thực máy trạm phía người dùng thuật toán sinh OTP dựa kết hợp HMAC hàm băm SHA-1 sau: Thông thường, máy chủ xác thực bên cung cấp dịch vụ cho người dùng thực sinh mật OTP Trên máy trạm phía người dùng sử dụng ứng dụng sinh mật OTP, sau xác thực, máy chủ kiểm tra mật OTP sinh máy trạm từ phía người dùng có giống với mật OTP sinh máy chủ hay không Nếu mật OTP giống nhau, người dùng xác thực sử dụng dịch vụ hệ thống Trong số trường hợp, vấn đề đồng xảy người dùng sử dụng thiết bị sinh OTP Token ấn nút sinh OTP nhiều lần khơng sử dụng q trình đăng nhập bị lỗi,… dẫn đến mật OTP sinh từ phía người dùng khơng giống với mật sinh từ phía máy chủ xác thực, người dùng xác thực không thành công Để giải vấn đề này, trình đồng giá trị sinh mật OTP máy chủ xác thực máy trạm phía người dùng thực sau: NGUYỂN HOÀN NAM DƯƠNG N14DCAT032 BÁO CÁO CHUYÊN ĐỀ AN TOÀN PHẦM MỀM Chương 2: Thiết kế ứng dụng Giả sử người dùng có thiết bị phần cứng Token sinh mật OTP mật OTP hàm: HMAC_SHA1(Key, Counter_Client) Máy chủ xác thực sinh mật OTP theo công thức: HMAC_SHA1(Key,Counter_Server) Người dùng muốn xác thực sử dụng dịch vụ hệ thống phải đồng Counter máy trạm máy chủ Giả sử thời điểm tại: Counter_Client = Counter_Server + a, với a