1. Trang chủ
  2. » Luận Văn - Báo Cáo

818 nghiên cứu và ứng dụng google authenticator để triển khai xác thực đa nhân tố trong ứng dụng mobile banking,khoá luận tốt nghiệp

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

Tiêu đề Nghiên Cứu Và Ứng Dụng Google Authenticator Để Triển Khai Xác Thực Đa Nhân Tố Trong Ứng Dụng Mobile Banking
Tác giả Nguyễn Thị Hồng Vân
Người hướng dẫn ThS. Nguyễn Thanh Thụy
Trường học Học viện Ngân hàng
Chuyên ngành Hệ thống thông tin quản lý
Thể loại khóa luận tốt nghiệp
Năm xuất bản 2020
Thành phố Hà Nội
Định dạng
Số trang 78
Dung lượng 2,57 MB

Cấu trúc

  • LỜI CẢM ƠN

  • LỜI CAM KẾT

  • MỤC LỤC

  • DANH MỤC CÁC CHỮ VIẾT TẮT

  • DANH MỤC BẢNG BIỂU •

  • DANH MỤC HÌNH ẢNH •

    • 1.1. Giới thiệu và khái niệm về xác thực

    • 1.2. Phân loại xác thực

    • 1.3. Các nhân tố xác thực

    • 1.4. Một vài công cụ xác thực

    • 1.5. Xác thực đa nhân tố

    • 1.6. Trình xác thực Google Authenticator

    • Shared secret

    • Input (Current time)

    • Signing Function

    • TỔNG KẾT CHƯƠNG 1

    • 2.1. Mô tả hiện trạng

    • 2.2. Mô tả webservice xác thực OTP sử dụng trình xác thực Google Authenticator

    • Core Container

    • Intrustment

    • 2.3. Mô tả hệ thống hoạt động xác thực OTP tích hợp trên mobile banking

    • 2.4. Biểu đồ hoạt động

    • 2.5. Biểu đồ ca sử dụng

    • TỔNG KẾT CHƯƠNG 2

    • 3.1. Cơ chế lập trình dịch vụ web sử dụng trình xác thực Google Authenticator

    • 3.2. Diễn giải lập trình một số module chính

    • 3.3. Thử nghiệm ứng dụng

    • TỔNG KẾT CHƯƠNG 3

  • TÀI LIỆU THAM KHẢO

Nội dung

TỔNG QUAN VỀ XÁC THỰC ĐA NHÂN TỐ VÀ TRÌNH XÁC THỰC GOOGLE A U T H ENTICATOR

Giới thiệu và khái niệm về xác thực

Xác thực (Authentication) là quá trình thiết lập độ tin cậy của một đối tượng hoặc cá nhân, thường diễn ra trong các tình huống giao tiếp giữa hai hoặc nhiều bên Quá trình này bao gồm việc xác minh danh tính của bên kia để đảm bảo họ đúng như thông tin đã cung cấp, nhằm ngăn chặn hành vi giả mạo Xác thực không chỉ công nhận nguồn gốc của đối tượng mà còn bao gồm việc kiểm tra nhận dạng của cá nhân Thông thường, việc xác thực dựa vào một hoặc nhiều yếu tố để chứng minh tính chính xác.

Trong lĩnh vực máy tính, các chủ thể tham gia bao gồm các chương trình phần mềm và tiến trình, hoạt động dưới sự điều khiển của các thực thể bên ngoài, thường là người sử dụng Cơ chế xác thực đóng vai trò quan trọng trong việc gắn kết danh tính của thực thể bên ngoài với chủ thể bên trong Để hệ thống xác minh danh tính, người dùng cần cung cấp thông tin như username và password Nếu thông tin xác thực khớp, quyền truy cập sẽ được cấp dựa trên tập quyền của người dùng đó.

Phân loại xác thực

Nguyễn Thị Hồng Vân - K19HTTTA điệp bao hàm cả tính toàn vẹn dữ liệu, nhưng không đảm bảo tính duy nhất và phù hợp về thời gian của nó.

Xác thực giao dịch không chỉ xác thực thông điệp mà còn đảm bảo tính duy nhất và thời gian của nó Quá trình này sử dụng các tham số thời gian, do đó, xác thực giao dịch được coi là mạnh mẽ hơn so với xác thực thông điệp thông thường.

Xác thực khóa đảm bảo rằng chỉ bên thứ hai và các bên tin cậy có quyền truy cập vào khóa mật Điều này giúp xác nhận rằng bên thứ hai đã sở hữu khóa và có thể nhận diện đúng bên sở hữu khóa đã cấp quyền.

1.2.2 Xác thực thực thể (Entity Authentication)

Xác thực thực thể là quá trình đảm bảo danh tính của một thực thể tham gia vào giao thức, có thể là người dùng hoặc thiết bị đầu cuối Để đạt được sự đảm bảo này, người yêu cầu thường phải cung cấp bằng chứng về danh tính cho người xác minh Danh tính cần xác minh có thể được trình bày trong giao thức hoặc được giả định dựa trên ngữ cảnh.

Các nhân tố xác thực

Các nhân tố xác thực dành cho thực thể nói chung bao gồm:

Xác thực dựa vào những gì bạn biết, chẳng hạn như mật khẩu, mã PIN cá nhân, hoặc câu trả lời cho các câu hỏi bí mật, là một phương pháp bảo mật quan trọng Những thông tin này chỉ người dùng mới biết, giúp bảo vệ tài khoản và thông tin cá nhân khỏi các truy cập trái phép.

Xác thực dựa vào những gì bạn có (Something you have) là một phương pháp an ninh yêu cầu người dùng cung cấp thông tin thuộc sở hữu cá nhân để đăng nhập, như mã thông báo bảo mật, mã OTP, khóa fob, thẻ ID nhân viên hoặc thẻ SIM điện thoại Đặc biệt, trên di động, smartphone thường hỗ trợ yếu tố sở hữu này, kết hợp với các ứng dụng để tăng cường bảo mật.

Xác thực dựa vào Những gì là chính bạn (Somethingyou are) Bất kỳ đặc điểm

Nguyễn Thị Hồng Vân - K19HTTTA

Khóa luận tốt nghiệp của GVHD Ths Nguyễn Thanh Thụy tập trung vào các phương pháp nhận dạng sinh trắc học, bao gồm quét tĩnh mạch ngón tay, nhận dạng khuôn mặt, nhận dạng giọng nói, hình học tay và hình học dái tai Những công nghệ này không chỉ nâng cao tính bảo mật mà còn cải thiện khả năng xác thực danh tính trong nhiều lĩnh vực.

Ngoài các yếu tố xác thực truyền thống, yếu tố vị trí (Location factor) và yếu tố thời gian (Time factor) ngày càng được coi là quan trọng trong việc xác thực danh tính người dùng Sự phổ biến của điện thoại thông minh với GPS cho phép xác minh vị trí đăng nhập, giúp giảm bớt gánh nặng xác thực Hơn nữa, việc kiểm tra thời gian hiện tại có thể ngăn chặn các cuộc tấn công chiếm đoạt tài khoản, ví dụ như một khách hàng không thể sử dụng thẻ ATM ở hai quốc gia khác nhau trong khoảng thời gian ngắn Những biện pháp này góp phần quan trọng trong việc ngăn chặn gian lận trực tuyến.

Một vài công cụ xác thực

1.4.1 Tên đăng nhập và mật khẩu

Phương pháp xác thực này yêu cầu người dùng nhập tên và mật khẩu khi truy cập hệ thống, sau đó hệ thống sẽ kiểm tra thông tin với cơ sở dữ liệu Nếu thông tin khớp, quá trình xác thực thành công; nếu không, quyền truy cập sẽ bị từ chối Mặc dù phương pháp này tiện lợi và có chi phí phát triển thấp, nhưng độ bảo mật không cao, phụ thuộc vào độ phức tạp của mật khẩu và dễ bị đánh cắp qua mạng.

Chữ ký số là công cụ xác thực thông điệp kỹ thuật số, đảm bảo rằng văn bản được gửi bởi người gửi đã biết và không bị thay đổi trong quá trình truyền tải Để chữ ký số được công nhận hợp lệ, các điều kiện tiên quyết cần phải được thỏa mãn, mang lại sự tin cậy cho người nhận về tính xác thực và tính toàn vẹn của thông tin.

Nguyễn Thị Hồng Vân - K19HTTTA

Chữ ký số, sử dụng mật mã bất đối xứng, cung cấp một lớp xác thực và bảo mật cho các tin nhắn gửi qua kênh không an toàn Khi được triển khai đúng cách, chữ ký số giúp người nhận tin tưởng rằng tin nhắn đến từ người gửi Mặc dù tương tự như chữ ký viết tay, chữ ký số khó giả mạo hơn và dựa vào các lược đồ mật mã để đảm bảo hiệu quả Ngoài ra, chữ ký số còn mang lại tính không thoái thác, nghĩa là người ký không thể phủ nhận việc đã ký tin nhắn, trong khi khóa riêng của họ vẫn được giữ bí mật Một số chương trình chữ ký số còn cung cấp dấu thời gian, giúp giữ tính hợp lệ của chữ ký ngay cả khi khóa riêng bị lộ Tin nhắn được ký điện tử có thể là bất kỳ nội dung nào được biểu thị dưới dạng chuỗi bit, như email, hợp đồng hoặc tin nhắn qua các giao thức mã hóa khác.

Chứng chỉ số, hay còn gọi là chứng chỉ khóa công khai hoặc chứng chỉ nhận dạng, là tài liệu điện tử sử dụng chữ ký số để kết nối khóa công khai với thông tin nhận dạng của một thực thể Nó tương tự như bằng lái xe, hộ chiếu hay chứng minh thư, đóng vai trò quan trọng trong việc xác minh danh tính Để có được chứng minh thư, cá nhân cần phải được cơ quan Công An địa phương cấp phát.

Chứng chỉ số được cấp bởi cơ quan chứng thực (CA - Certificate Authority), đóng vai trò như một bên thứ ba đáng tin cậy trong việc xác thực thông tin giữa hai bên CA xử lý các yêu cầu từ người hoặc tổ chức đăng ký, xác minh thông tin và ký chứng chỉ cho các thực thể dựa trên thông tin đã xác minh Để thực hiện nhiệm vụ này hiệu quả, CA cần sở hữu một hoặc nhiều chứng chỉ gốc đáng tin cậy hoặc chứng chỉ trung gian cùng với các khóa riêng tương ứng.

Nguyễn Thị Hồng Vân - K19HTTTA

Khóa luận tốt nghiệp dưới sự hướng dẫn của Ths Nguyễn Thanh Thụy cần có thời gian sử dụng nhất định và phải được thu hồi khi cần thiết Việc thu hồi này cần được công khai trong toàn hệ thống thông qua danh sách chứng chỉ thu hồi.

Chứng chỉ số có thể được sử dụng cho nhiều giao dịch điện tử bao gồm e-mail, thương mại điện tử, phần mềm nhóm và chuyển tiền điện tử.

1.4.4 Challenge Handshake Authentication Protocol (CHAP)

Giao thức xác thực bắt tay thử thách (CHAP) là phương pháp xác minh danh tính không dựa vào việc gửi bí mật chung giữa bên yêu cầu truy cập và bên xác thực Khi người dùng yêu cầu truy cập, trình xác thực gửi một thông báo thách thức, và bên yêu cầu sẽ phản hồi bằng giá trị được tính từ hàm băm một chiều Trình xác thực sẽ so sánh phản hồi với giá trị băm mà nó tính toán, và nếu khớp, xác thực thành công; ngược lại, xác thực sẽ thất bại Sau khi kết nối được xác thực, trình xác thực có thể gửi thách thức cho bên yêu cầu theo các khoảng thời gian ngẫu nhiên.

Phương thức CHAP thường được áp dụng khi người dùng đăng nhập vào các máy chủ từ xa của công ty, như RAS server Dữ liệu chứa mật khẩu được mã hóa dưới dạng password băm (hash password), sử dụng hàm băm, một dạng mã hóa không thể giải mã.

Kerberos là một giao thức xác thực mạng sử dụng mật mã mạnh, cho phép khách hàng xác minh danh tính của mình với máy chủ và ngược lại qua các kết nối mạng không an toàn Sau khi khách hàng và máy chủ thiết lập kết nối, quá trình xác thực diễn ra để đảm bảo an toàn thông tin.

Kerberos là một giao thức giúp chứng minh danh tính và mã hóa thông tin liên lạc, đảm bảo quyền riêng tư và toàn vẹn dữ liệu trong quá trình làm việc Giao thức này được thiết kế nhằm mục tiêu hỗ trợ mô hình máy chủ-máy khách (client-server) và cung cấp xác thực cho cả hai bên Để ngăn chặn khả năng phát lại hoặc giả mạo thông tin đăng nhập, Kerberos sử dụng tem thời gian trong quá trình triển khai.

Nguyễn Thị Hồng Vân - K19HTTTA

Tokens là phương thức xác thực tồn tại dưới hai dạng: vật lý (hard token) và kỹ thuật số (soft token) Chúng là dữ liệu kết hợp với hệ thống bảo mật, đảm bảo quyền truy cập của người dùng vào các ứng dụng và hệ thống Trong xác thực bằng mã thông báo, mã được sử dụng để xác minh mọi yêu cầu đến máy chủ, tương tự như mật khẩu Mã thông báo vật lý có nhiều dạng, bao gồm thiết bị USB và mã ngẫu nhiên cho người dùng nhập thủ công, có kích thước nhỏ gọn, dễ mang theo Đây là phương pháp bảo mật an toàn nhất trong giao dịch ngân hàng, giúp giảm thiểu rủi ro mất tiền Mã OTP là loại mã sử dụng một lần, nếu bị lộ sẽ không có hiệu lực cho các giao dịch sau Sử dụng máy Token rất đơn giản và phổ biến trong các ngành nghề có giao dịch tài chính trực tuyến như ngân hàng, Facebook và Cơ quan Thuế.

Sinh trắc học là phương pháp xác thực dựa trên đặc điểm sinh học của từng cá nhân, bao gồm dấu vân tay, tĩnh mạch lòng bàn tay, nhận diện khuôn mặt, DNA và quét võng mạc mắt Ngoài ra, đặc điểm hành vi như cử chỉ và giọng nói cũng được sử dụng trong xác thực Hình thức này ngày càng phổ biến trên các thiết bị di động, với máy quét vân tay thường thấy trên thiết bị Android, trong khi Apple đã chuyển sang sử dụng xác thực khuôn mặt Sinh trắc học mang lại trải nghiệm người dùng tối ưu, cho phép xác thực nhanh chóng và thuận tiện Tuy nhiên, nhiều hệ thống sinh trắc học hiện nay vẫn gặp phải vấn đề về độ chính xác trong nhận dạng.

Nguyễn Thị Hồng Vân - K19HTTTA

Khóa luận tốt nghiệp của GVHD Ths Nguyễn Thanh Thụy đề cập đến vấn đề xác thực thông tin người dùng, đặc biệt là mật khẩu và mã định danh Xác thực dựa vào một yếu tố (Single-Factor) được ưa chuộng do tính đơn giản, nhưng lại tiềm ẩn nhiều rủi ro Mặc dù việc tạo mật khẩu phức tạp hơn được khuyến nghị, việc này lại gây khó khăn trong việc ghi nhớ, nhất là khi người dùng có ít nhất 10 tài khoản khác nhau Việc tự lưu thông tin đăng nhập có thể dẫn đến việc lộ thông tin nếu thiết bị bị người khác sử dụng Hơn nữa, thông tin đăng nhập thường được sử dụng lặp lại, tạo cơ hội cho kẻ gian lợi dụng Do đó, cần có giải pháp an toàn hơn cho việc sử dụng thông tin đăng nhập nhiều lần Xác thực đa nhân tố được ví như một cánh cửa được bảo vệ bởi nhiều ổ khóa, giúp tăng cường bảo mật cho người dùng.

Hình 1 Hình ảnh minh họa kết hợp xác thực đa nhân tố

Xác thực đa nhân tố là một phương thức bảo mật, trong đó người dùng cần cung cấp nhiều hình thức xác thực khác nhau để được cấp quyền truy cập Phương thức này giúp tăng cường bảo vệ thông tin và ngăn chặn truy cập trái phép.

Nguyễn Thị Hồng Vân - K19HTTTA hoạt động trong hệ thống xác thực đa yếu tố, yêu cầu người dùng cung cấp ít nhất hai bằng chứng để xác nhận danh tính Các yếu tố xác thực bao gồm kiến thức (thông tin chỉ người dùng biết), sở hữu (vật phẩm chỉ người dùng có) và kế thừa (thông tin người dùng đang sở hữu) Việc áp dụng nhiều yếu tố này nhằm ngăn chặn truy cập trái phép, vì kẻ xâm nhập không thể cung cấp đầy đủ thông tin cần thiết Nếu một trong các yếu tố xác thực không chính xác hoặc thiếu, quyền truy cập vào dữ liệu sẽ bị từ chối Một số kịch bản điển hình của xác thực đa yếu tố có thể được áp dụng trong thực tiễn.

- Quẹt thẻ và nhập mã PIN

Trình xác thực Google Authenticator

Google Authenticator là ứng dụng xác thực của Google, cung cấp dịch vụ xác minh hai bước bằng cách sử dụng thuật toán mật khẩu một lần dựa trên thời gian (TOTP) và thuật toán mật khẩu một lần dựa trên HMAC (HOTP) Các thuật toán này được quy định trong RFC 6238, giúp tăng cường bảo mật cho tài khoản người dùng.

Google Authenticator là ứng dụng quan trọng trong việc xác thực người dùng khi đăng nhập hoặc thực hiện giao dịch, yêu cầu mã code 6 số ngẫu nhiên bên cạnh mật khẩu Ứng dụng này không chỉ hỗ trợ bảo mật cho các tài khoản mà còn được sử dụng rộng rãi cho Gmail, Facebook và nhiều dịch vụ khác.

Google Authenticator là ứng dụng hiện thực hóa thuật toán Time-Based One.

Nó bao gồm các thành phần sau:

- Một khóa bí mật chia sẻ (shared secret - một dãy các byte)

- Một đầu vào là thời gian hiện tại

Để thiết lập tài khoản trên điện thoại, trước tiên bạn cần sử dụng một khóa bí mật Bạn có thể chụp ảnh mã QR bằng điện thoại hoặc nhập khóa bí mật theo cách thủ công Khi nhập thủ công, khóa bí mật của dịch vụ sẽ được hiển thị theo định dạng cụ thể.

Nguyễn Thị Hồng Vân - K19HTTTA

Khóa luận tốt nghiệp GVHD: Ths Nguyễn Thanh Thụy

Với x là các kí tự chữ cái từ a->z và số từ 0->9

Mã QR chứa thông tin đăng ký tương tự là 1 URL: otpauth://totp/Google%3hongvan@gmail.com?secret=xxxx&issuer=Google

Giá trị input đơn giản là thời gian hiện tại trên điện thoại, không cần tương tác giữa client và server khi đã có khóa bí mật Tuy nhiên, thời gian trên điện thoại phải khớp với thời gian trên server, vì server sẽ lặp lại chính xác những gì xảy ra trên điện thoại với input là thời gian hiện tại của server.

Một điều dễ nhận thấy ở Google Authenticator là mã sinh ra thường hợp lệ trong

Trong một khoảng thời gian nhất định trước khi sinh ra một giá trị mới, nếu giá trị này thay đổi liên tục mỗi giây, người dùng sẽ gặp khó khăn trong việc đọc hay sao chép Giá trị mặc định được thiết lập là 30 giây, do đó, để đảm bảo giá trị input không thay đổi trong khoảng thời gian này, ta sử dụng công thức: input = CURRENTUNIXTIME() / 30.

Server sẽ so sánh giá trị token mà người dùng gửi với tất cả các token được tạo ra trong khoảng thời gian nhất định, từ vài chục giây đến 1 phút Nếu token trùng khớp, token người dùng nhập sẽ được xem là hợp lệ và vượt qua vòng xác thực thứ hai.

HMAC - SHA1 là hàm mã hóa được sử dụng, trong đó HMAC là viết tắt của Hash-based Message Authentication Code Thuật toán này sử dụng hàm mã hóa một chiều, cụ thể là SHA1, để mã hóa giá trị Sử dụng HMAC mang lại độ an toàn cao, vì chỉ có khóa bí mật mới tạo ra được giá trị output giống nhau cho cùng một đầu vào.

Nguyễn Thị Hồng Vân - K19HTTTA

Chương 1 của khóa luận đã giới thiệu tổng quan về xác thực, đưa ra định nghĩa, phân loại xác thực, các nhân tố xác thực, biết được một số phương pháp xác thực hiện tại cũng như ưu, nhược điểm của chúng Tại chương này khóa luận cũng đã giới thiệu về xác thực đa nhân tố và trình xác thực Google Authenticator Chương 2 khóa luận sẽ trình bày về bày toán thực tế về xác thực Đưa ra những vấn đề về xác thực trong

Nguyễn Thị Hồng Vân - K19HTTTA

Khóa luận tốt nghiệp GVHD: Ths Nguyễn Thanh Thụy

PHÂN TÍCH HỆ THỐNG XÁC THỰC GOOGLE

Mô tả hiện trạng

2.1.1 Sự phát triển dịch vụ Mobile banking hiện nay

Nghiên cứu gần đây chỉ ra rằng công nghệ thông tin, dịch vụ điện tử và ngân hàng trực tuyến, cùng với mobile banking, đang phát triển mạnh mẽ và thu hút sự quan tâm của nhiều người, trở thành xu hướng chủ đạo trong tương lai.

Theo khảo sát của The Economist năm 2017, 82% ngân hàng bán lẻ toàn cầu tin rằng trong 5 năm tới, thiết bị di động sẽ trở thành kênh giao dịch chính cho khách hàng trẻ tuổi Tại các nước phát triển như Mỹ, Canada và Australia, số lượng người dùng dịch vụ Mobile Banking đã vượt xa Internet Banking và giao dịch trực tiếp Juniper Research dự đoán rằng số người dùng Mobile Banking sẽ tăng từ 800 triệu lên 1,75 tỷ vào năm 2019 Giá trị giao dịch thanh toán di động tại Hoa Kỳ đạt 78,09 tỷ USD vào năm 2018 và dự kiến tăng lên 189,97 tỷ USD vào năm 2021 Các ngân hàng hàng đầu đã đầu tư gần 80 triệu USD để phát triển ứng dụng ngân hàng di động Sự tăng trưởng này chủ yếu nhờ vào tỷ lệ người sử dụng smartphone ngày càng cao và sự phổ biến của phương thức thanh toán thương mại điện tử trên toàn cầu.

Tại Việt Nam đến nay, có khoảng 45 ngân hàng cung cấp dịch vụ SMS banking,

Internet Banking và 32 ngân hàng phát triển ứng dụng Mobile Banking Theo báo cáo

Nguyễn Thị Hồng Vân - K19HTTTA

2.1.2 Một số hình thức xác thực trên ứng dụng Mobile Banking hiện nay Như đã được đề cập, với sự phát triển không ngừng của các dịch vụ ngân hàng, việc cung cấp các dịch vụ bảo mật đi kèm là vô cùng quan trọng và cần thiết Các ngân hàng đã và đang coi vấn đề bảo mật là mối quan tâm hàng đầu trong hoạt động của mình Hàng loạt các phương pháp bảo mật, xác thực được ra mắt và nhanh chóng đưa vào trong chuỗi các sản phẩm cung cấp cho khách hàng Đăng nhập bằng user và password vẫn là hình thức xác thực đang được áp dụng tại tất cả các ứng dụng ngân hàng hiện nay, đi cùng với nó là các hình thức xác thực OTP dùng để xác thực khi thực hiện giao dịch chuyển tiền, thanh toán hóa đơn qua ứng dụng Hiện nay có

3 hình thức xác thực OTP được dùng phổ biến trong giao dịch trực tuyến là SMS OTP, Token key và Smart OTP.

SMS OTP là phương thức xác thực phổ biến, trong đó mã OTP được gửi qua tin nhắn SMS đến số điện thoại đã đăng ký của khách hàng Nhiều ngân hàng và doanh nghiệp lớn áp dụng SMS OTP để tăng cường bảo mật cho tài khoản Tuy nhiên, nhược điểm của phương thức này là không hoạt động khi điện thoại mất sóng hoặc không có dịch vụ chuyển vùng quốc tế khi ra nước ngoài.

Token key là thiết bị tạo mã OTP không cần Internet, nhưng do kích thước nhỏ gọn, dễ bị mất hoặc đánh cắp, nên cần bảo quản cẩn thận Mỗi tài khoản ngân hàng yêu cầu một Token key riêng, và người dùng cần đổi Token key sau khoảng thời gian quy định.

Smart OTP là phương thức xác thực kết hợp giữa SMS OTP và Token key, được tích hợp trên các thiết bị di động như smartphone và máy tính bảng Hiện nay, nhiều ngân hàng lớn tại Việt Nam như BIDV, VietinBank và Vietcombank đã áp dụng Smart OTP, dần thay thế SMS OTP Để sử dụng dịch vụ này, người dùng cần đăng ký với ngân hàng Một trong những ưu điểm nổi bật của Smart OTP là khả năng bảo mật cao, khi mỗi ứng dụng tạo mã OTP chỉ có thể sử dụng trên một thiết bị duy nhất.

Nguyễn Thị Hồng Vân - K19HTTTA

Khóa luận tốt nghiệp của GVHD Ths Nguyễn Thanh Thụy nhấn mạnh rằng các ngân hàng và tổ chức thanh toán khuyến cáo khách hàng không nên thực hiện giao dịch thanh toán trên máy tính lạ và không chia sẻ mật khẩu hay mã OTP với bất kỳ ai Nếu phát hiện mật khẩu bị lộ hoặc điện thoại bị mất, khách hàng cần thông báo ngay cho ngân hàng để khóa chức năng thanh toán online của tài khoản, nhằm đảm bảo an toàn cho tài khoản của mình.

Xác thực sinh trắc học, đặc biệt là xác thực bằng dấu vân tay, đang được áp dụng ngày càng nhiều trên các ứng dụng Mobile Banking của các ngân hàng như Vietcombank và Ngân hàng TMCP Hàng Hải Việt Nam (MSB) Dấu vân tay là đặc trưng riêng biệt của mỗi người, ngay cả giữa các cặp song sinh giống hệt nhau, điều này giúp phân biệt người dùng một cách hiệu quả Mặc dù kẻ trộm có thể đánh cắp mật khẩu hay mã PIN, nhưng họ không thể giả mạo dấu vân tay Bảo mật bằng dấu vân tay không chỉ an toàn hơn mà còn thuận tiện hơn, vì người dùng không cần lo lắng về việc quên hay bị lộ mật khẩu Tuy nhiên, hình thức này cũng gặp một số hạn chế, như sự cố mà Vietcombank đã phải tạm dừng dịch vụ xác thực vân tay vào ngày 26/10/2019 do lỗi nhận diện sai trên các thiết bị Samsung Galaxy mới Một số thiết bị kém chất lượng cũng có thể gặp khó khăn trong việc nhận diện dấu vân tay khi tay người dùng ướt hoặc bẩn Hơn nữa, việc triển khai hệ thống xác thực này đòi hỏi công nghệ phức tạp và chi phí cao hơn.

Mặc dù việc áp dụng các biện pháp xác thực,bảo mật dữ liệu đang được triển

Nguyễn Thị Hồng Vân - K19HTTTA, một cá nhân liên quan đến các cuộc xâm phạm dữ liệu bất hợp pháp, đã gây ra vụ việc nghiêm trọng tại Capital One, ngân hàng thương mại lớn thứ bảy của Mỹ Vào năm 2019, ngân hàng này đã công bố rằng dữ liệu của 100 triệu thẻ tín dụng, 140.000 số an sinh xã hội và 80.000 số tài khoản khách hàng đã bị đánh cắp Những khách hàng đã đăng ký mở thẻ tín dụng tại Capital One từ năm 2005 có thể bị ảnh hưởng Theo thông tin, hacker đã lấy cắp dữ liệu của hơn 100 triệu người Mỹ và 6 triệu người Canada, bao gồm tên, địa chỉ, mã bưu chính, số điện thoại, email và ngày sinh mà người dùng cung cấp cho ngân hàng.

Mức độ an toàn bảo mật thông tin tại Việt Nam hiện nay còn thấp, với chỉ số an toàn thông tin của các tổ chức tín dụng và ngân hàng chỉ đạt 59,9% vào năm 2017 Trong khi đó, Việt Nam xếp thứ 100 trong bảng xếp hạng an toàn bảo mật thông tin toàn cầu, cho thấy vị trí trung bình yếu Đầu tư cho an toàn thông tin trong các dự án CNTT tại Việt Nam chỉ chiếm khoảng 5%, thấp hơn nhiều so với mức 15-25% của các tổ chức trên thế giới Hệ thống pháp lý về an toàn thông tin còn thiếu hoàn thiện, làm tăng nguy cơ rủi ro Người dùng Internet tại Việt Nam chưa coi trọng bảo mật thông tin cá nhân, yêu cầu các ngân hàng cần nâng cao trách nhiệm xã hội và bảo vệ thông tin khách hàng Sự phát triển của ngân hàng số mà không có biện pháp quản lý rủi ro an ninh mạng hiệu quả sẽ gia tăng nguy cơ mất an toàn thông tin.

Khóa luận tốt nghiệp GVHD: Ths Nguyễn Thanh Thụy

Ngân hàng di động mang đến sự tiện lợi cho người dùng khi thực hiện giao dịch mà không cần đến ngân hàng trực tiếp, nhưng cũng tạo cơ hội cho tội phạm công nghệ thông tin lợi dụng để lừa đảo và chiếm đoạt thông tin tài khoản Các hình thức lừa đảo ngày càng tinh vi, điển hình là việc giả danh cơ quan nhà nước gửi email liên quan đến COVID-19, chứa các tệp tin virus hoặc đường link độc hại Khi người nhận mở tệp tin hoặc truy cập vào link, mã độc sẽ được cài đặt trên thiết bị, đánh cắp thông tin và thực hiện giao dịch trái phép Những hành động này gây ra tâm lý hoang mang và mất lòng tin cho khách hàng sử dụng dịch vụ ngân hàng.

2.1.4 Đề xuất giải pháp Để khắc phục những được những rủi ro ở mức tối thiểu có thể xảy ra, các Ngân hàng cũng đã và đang đưa ra các cảnh báo cho khách hàng của mình Đồng thời cũng đưa ra các biện pháp bảo mật, an toàn thông tin, nâng cấp, cải tiến hệ thống giao dịch để khách hàng có thể yên tâm khi sử dụng dịch vụ Lựa chọn biện pháp xác thực cũng được coi là một giải pháp tối ưu, hiện tại, công nghệ xác thực đã trở thành một nền công nghiệp phát triển và chúng ta không gặp khó khăn khi lựa chọn công nghệ tin cậy từ công nghệ sinh trắc và công nghệ số Vấn đề nằm ở chỗ ngân hàng sẽ sử dụng mô hình định danh điện tử nào và triển khai đồng bộ để khách hàng dễ dùng và các cơ quan chính phủ chấp nhận Ngoài việc đơn thuần là xác thực bằng cách nhập username,

Nguyễn Thị Hồng Vân - K19HTTTA sinh trắc học vân tay đang áp dụng công nghệ tiên tiến để xác thực bảo mật cho các ngân hàng Tại ngân hàng Bảo Việt, nhóm dự án FSS đang triển khai phương pháp xác thực mới qua Google Authenticator, được gọi là TOTP, tương tự như SMART OTP Google Authenticator là phần mềm miễn phí trên thiết bị di động, giúp người dùng chủ động lấy mã xác thực, khắc phục nhược điểm của SMS OTP và Token hiện tại, giảm thiểu rủi ro bảo mật cho tài khoản khách hàng Theo chuyên gia công nghệ ngân hàng, SMS OTP dễ bị thất thoát do nhiều lớp trung gian và nhà mạng, trong khi đó, phần mềm đọc trộm SMS có thể chuyển mã OTP đến số điện thoại khác mà khách hàng không hay biết Ngoài ra, SMS OTP còn phụ thuộc vào bảo mật của nhà mạng và yêu cầu khách hàng phải roaming khi ở nước ngoài Bài viết sẽ tiếp tục tìm hiểu quy trình hoạt động và mô tả chi tiết về hệ thống xác thực này.

Mô tả webservice xác thực OTP sử dụng trình xác thực Google

Trước khi triển khai hệ thống xác thực, cần nắm rõ module xác thực tích hợp Webservice xác thực OTP được phát triển bằng ngôn ngữ Java và sử dụng Spring Framework, bao gồm ba chức năng chính: đăng ký xác thực, hủy đăng ký xác thực và thực hiện xác thực Hệ thống này được xây dựng theo kiến trúc REST.

API với định dạng dữ liệu JSON.

REST, viết tắt của Representational State Transfer, không phải là một chuẩn hay giao thức, mà là một phương pháp tiếp cận và kiến trúc để phát triển API Web service là tập hợp các giao thức và chuẩn được áp dụng cho các mục đích cụ thể.

Nguyễn Thị Hồng Vân - K19HTTTA

Khóa luận tốt nghiệp của GVHD Ths Nguyễn Thanh Thụy tìm hiểu về webservice RESTful, một kiểu dịch vụ web sử dụng phương thức HTTP để triển khai kiến trúc REST Các ứng dụng được thiết kế theo kiểu REST thường được gọi là Restful Trong thực tế, thuật ngữ REST và Restful thường được sử dụng thay thế cho nhau.

API (Giao diện lập trình ứng dụng) là công cụ cho phép các ứng dụng tương tác và trao đổi dữ liệu, giúp cải thiện trải nghiệm người dùng Nhờ vào API, lập trình viên có thể dễ dàng truy cập và hiển thị dữ liệu từ máy chủ trên ứng dụng hoặc website của họ, tạo ra sự tiện lợi và hiệu quả trong việc phát triển phần mềm.

RESTful API là một tiêu chuẩn thiết kế API cho ứng dụng web nhằm quản lý tài nguyên, được sử dụng rộng rãi hiện nay Nó tập trung vào việc sử dụng các phương thức HTTP như GET, POST, PUT, DELETE và cách định dạng URL cho ứng dụng web RESTful không quy định logic mã nguồn của ứng dụng và không bị giới hạn bởi ngôn ngữ lập trình nào.

Hình 2 Cấu trúc REST API

REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng.

• GET (SELECT): Lệnh đọc/lấy một dữ liệu, thông tin mới

• POST (CREATE): Có chức năng tạo dữ liệu, thông tin mới.

• PUT (UPDATE): Cập nhật thông tin và dữ liệu đã có.

• DELETE (DELETE): Xóa thông tin và dữ liệu đã có.

Nguyễn Thị Hồng Vân - K19HTTTA

2.2.2 Giới thiệu về Spring Framework.

Spring Framework là một nền tảng mã nguồn mở cho Java, được phát triển bởi Rod Johnson Phiên bản đầu tiên của nó được phát hành vào tháng 3 năm 2004 dưới giấy phép Apache 2.0.

Vào năm 2003, Spring đã trở thành khung phát triển ứng dụng phổ biến nhất cho Java trong lĩnh vực doanh nghiệp Hàng triệu lập trình viên toàn cầu sử dụng Spring Framework để phát triển mã nguồn hiệu suất cao, dễ kiểm tra và có khả năng tái sử dụng Kiến trúc của Spring Framework được tổ chức theo dạng xếp lớp, bao gồm nhiều mô-đun khác nhau, tạo nên một nền tảng vững chắc cho việc phát triển ứng dụng.

Hình 3 Kiến trúc tổng thể của Spring Framework

Container này có 4 modules sau:

Spring Core is the foundational module of the Spring Framework, offering essential implementations for features such as Inversion of Control (IoC) and Dependency Injection, utilizing the singleton design pattern.

- Spring Bean: Cung cấp triển khai cho mẫu thiết kế nhà máy thông qua

Nguyễn Thị Hồng Vân - K19HTTTA

Khóa luận tốt nghiệp GVHD: Ths Nguyễn Thanh Thụy

Module Spring này được xây dựng dựa trên nền tảng vững chắc của các module Core và Beans, cung cấp phương tiện truy cập cho bất kỳ đối tượng nào đã được xác định và cấu hình.

Ngôn ngữ biểu thức Spring (SpEL) là một phần mở rộng cho ngôn ngữ biểu thức hỗ trợ bởi các trang máy chủ Java Nó cung cấp một công cụ mạnh mẽ để truy vấn và thao tác với biểu đồ đối tượng trong thời gian thực.

Nó bao gồm 5 modules sau:

- JDBC: Module này cung cấp lớp trừu tượng JDBC giúp loại bỏ nhu cầu xử lý ngoại lệ lặp đi lặp lại và không cần thiết.

ORM, hay Object Relational Mapping, là một module giúp đảm bảo tính nhất quán và tính di động cho mã nguồn của chúng ta, bất kể công nghệ truy cập dữ liệu nào được sử dụng, dựa trên khái niệm ánh xạ hướng đối tượng.

OXM, viết tắt của Object XML Mappers, là công nghệ chuyển đổi giữa các đối tượng và định dạng XML Spring OXM cung cấp một API thống nhất, giúp dễ dàng truy cập và làm việc với nhiều khung OXM khác nhau.

- JMS: JMS là viết tắt của Java Messaging Service Module này chứa các tính năng để tạo và tiêu thụ tin nhắn giữa các khách hàng khác nhau.

Module này hỗ trợ quản lý giao dịch theo chương trình, cho phép khai báo các lớp thực hiện giao diện đặc biệt và tất cả các POJO Tất cả các khái niệm giao dịch cấp doanh nghiệp có thể dễ dàng được triển khai trong Spring thông qua module này.

Lớp web bao gồm các module sau:

- Web: Module này sử dụng trình nghe servlet và ngữ cảnh ứng dụng hướng

Nguyễn Thị Hồng Vân - K19HTTTA

- Web-Socket: Module này cung cấp hỗ trợ cho giao tiếp hai chiều và dựa trên WebSocket giữa máy khách và máy chủ trong các ứng dụng web.

Web-Portlet là một module, còn được biết đến với tên gọi module Spring MVC Portlet, cung cấp hỗ trợ cho các Portlet dựa trên Spring Module này phản ánh các chức năng tương tự như module Web Servlet.

Aspect Oriented Programming (Lập trình hướng đối tượng - AOP)

Ngôn ngữ AOP là công cụ mạnh mẽ giúp các nhà phát triển tích hợp các chức năng doanh nghiệp như giao dịch và bảo mật vào ứng dụng AOP cho phép viết mã ít hơn và tách biệt logic mã, nhờ vào việc sử dụng các mối quan tâm xuyên suốt.

Module này cung cấp hỗ trợ thiết bị đo lớp và triển khai trình nạp lớp được sử dụng trong các máy chủ ứng dụng nhất định.

Mô tả hệ thống hoạt động xác thực OTP tích hợp trên mobile banking 26 2.4 Biểu đồ hoạt động

Hệ thống hoạt động bao gồm 5 thành phần chính:

- Client: Bao gồm người dùng, ứng dụng mobile.

- Ứng dụng Google Authenticator: Nơi lấy mã OTP được sinh ra sau khi đăng ký.

- Application Server (Máy chủ ứng dụng): Điều khiển tất cả các hoạt động ứng dụng giữa những người sử dụng và các ứng dụng tầng cuối.

- Authentication Server (Máy chủ xác thực): Cung cấp trình xác thực cho hệ thống.

- Database: Nơi lưu trữ thông tin người dùng, thông tin hệ thống.

Hình 5 Sơ đồ mô hình hoạt động hệ thống

Quy trình hoạt động của hệ thống xác thực bắt đầu khi người dùng gửi yêu cầu đăng ký TOTP lên Application Server Ứng dụng này sẽ chuyển tiếp yêu cầu đến Authentication Server kèm theo thông tin người dùng như id và username Authentication Server kiểm tra xem tài khoản đã đăng ký TOTP hay chưa; nếu chưa, nó sẽ tạo ra một khóa bí mật và gửi lại cho Application Server Cuối cùng, Application Server sẽ chuyển khóa bí mật về cho Client, cho phép người dùng sử dụng ứng dụng Google Authenticator để nhập hoặc quét mã QR chứa khóa bí mật.

Nguyễn Thị Hồng Vân - K19HTTTA

Mô tả quy trình đăng kí dịch vụ xác thực

T Tác nhân Nội dung thực hiện

1 Người dùng Khi muốn thực hiện đăng kí hình thức xác thực đa nhân tố

Google Authenticator trong việc thực hiện các giao dịch chuyển tiền hoặc thanh toán, người dùng chọn chức năng Đăng kí xác thực trong menu của app.

HĐ2 Hệ thống Thực hiện kiểm tra trong cơ sở dữ liệu xem tài khoản của khách hàng đã đăng kí hình thức xác thực hay chưa.

+ Neu tài khoản đã đăng kí, hệ thống hiển thị thông báo

“ Quý khách đã đăng ký dịch vụ này”.

+ Nếu tài khoản chưa đăng ký, cho phép khách hàng chọn tiep tục để thực hiện đăng ký.

HĐ3 Người dùng Chọn Tiếp tục để xác nhận đăng ký.

HĐ4 Hệ thống Lấy id và username của tài khoản để sinh khóa bí mật hiển thị dưới dạng mã QR code hoặc một chuỗi kí tự văn bản.

Người dùng sử dụng ứng dụng Google Authenticator để quét mã QR hoặc nhập mã xác thực theo dạng văn bản mà hệ thống cung cấp Sau đó, hệ thống yêu cầu người dùng nhập mã xác thực từ ứng dụng để hoàn tất quá trình xác minh.

Google Authrnticator thực hiện ở hoạt động 4.

Khóa luận tốt nghiệp của GVHD Ths Nguyễn Thanh Thụy đề cập đến việc ứng dụng Google Authenticator tạo ra mã OTP (One-Time Password) mỗi 30 giây khi người dùng nhập mã bí mật.

Khi xác thực, người dùng nhập mã OTP từ ứng dụng Google Authenticator, mã này được gửi lên Application Server và yêu cầu xác thực tới Authentication Server Tại đây, Authentication Server kiểm tra thông tin người dùng trong bộ nhớ cache; nếu người dùng đã đăng ký TOTP, hệ thống sẽ lấy khóa bí mật từ id của người dùng và tạo mã OTP tương tự như trên Google Authenticator Sau đó, mã vừa tạo sẽ được so sánh với mã người dùng nhập vào Nếu hai mã khớp nhau, quá trình xác thực thành công, ngược lại sẽ thất bại.

Nguyễn Thị Hồng Vân - K19HTTTA

Khóa luận tốt nghiệp GVHD: Ths Nguyễn Thanh Thụy

2.4.1 Quy trình đăng ký xác thực

+ Nếu nhập sai mã, hệ thống yêu cầu nhập lại.

+ Nếu nhập đúng mã, chuyển sang hoạt động 8.

HĐ8 Hệ thống Lưu khóa bí mật và thông tin đăng ký vào cơ sở dữ liệu.

HĐ9 Hệ thống Đăng kí thành công, hệ thống trả thông báo xác nhận đăng ký dịch vụ xác thực thành công cho người dùng.

Bảng 1 Mô tả quy trình đăng kí dịch vụ xác thực

Nguyễn Thị Hồng Vân - K19HTTTA

Mô tả quy trình hủy đăng kí dịch vụ xác thực

T Tác nhân Nội dung thực hiện

Hình 6 Biểu đồ hoạt động quy trình đăng ký xác thực

2.4.2 Quy trình hủy đăng ký xác thực

Khi người dùng muốn hủy đăng ký xác thực đa nhân tố Google Authenticator cho các giao dịch chuyển tiền và thanh toán, họ cần chọn chức năng "Hủy đăng ký xác thực" trong menu của ứng dụng Mobile Banking Hệ thống sẽ hiển thị thông báo yêu cầu người dùng xác nhận xem họ có chắc chắn đồng ý hủy đăng ký hay không.

HĐ3 Người dùng + Xác nhận hủy đăng kí ->chuyển tới hoạt động 4

+ Không xác nhận hủy đăng ký -> kết thúc quy trình.

HĐ4 Hệ thống Yêu cầu nhập mã xác thực của người dùng từ ứng dụng

HĐ5 Người dùng Nhập mã xác thực vào app mobile banking:

+ Nếu nhập sai mã, hệ thống yêu cầu nhập lại.

+ Nếu nhập đúng mã, chuyển sang hoạt động 8 hệ thống xóa thông tin đăng ký của người dùng khỏi cơ sở dữ liệu.

Hệ thống xóa thông tin đăng ký của người dùng khỏi cơ sở dữ liệu và hủy đăng ký thành công sẽ gửi thông báo xác nhận hủy đăng ký dịch vụ đến người dùng.

Nguyễn Thị Hồng Vân - K19HTTTA

Mô tả quy trình xác thực chuyển tiền

T Tác nhân Nội dung thực hiện

HĐ1 Người dùng Nhập các thông tin của giao dịch chuyển tiền

HĐ2 Hệ thống Thực hiện kiểm tra các thông tin đã hợp lệ chưa:

+ Neu chưa hợp lệ, hiển thị thông báo cho người dùng, quay lại hoạt động 1.

+ Nếu các thông tin đã nhập hợp lệ, chuyển tới hoạt động 3.

Hệ thống Yêu cầu nhập mã xác thực của người dùng nhận được từ ứng

Khóa luận tốt nghiệp GVHD: Ths Nguyễn Thanh Thụy

Hình 7 Biểu đồ hoạt động quy trình hủy đăng ký xác thực

Nguyễn Thị Hồng Vân - K19HTTTA 31

Khóa luận tốt nghiệp GVHD: Ths Nguyễn Thanh Thụy

2.4.3 Quy trình xác thực giao dịch chuyển tiền

HĐ5 Hệ thống Lấy id của tài khoản

HĐ6 Hệ thống Lấy thông tin đã đăng kí dịch vụ từ cơ sở dữ liệu.

Hệ thống sẽ sinh ra mã xác thực dựa trên thông tin đăng ký của người dùng Sau đó, hệ thống sẽ đối chiếu mã xác thực được sinh ra với mã xác thực mà người dùng đã nhập ở hoạt động trước đó.

+ Nếu trùng nhau, trả về thông báo xác nhận giao dịch thành công cho người dùng và kết thúc quy trình.

+ Nếu không trùng nhau, yêu cầu người dùng nhập lại mã ở hoạt động 4.

Bảng 3 Mô tả quy trình xác thực giao dịch chuyển tiền

Nguyễn Thị Hồng Vân - K19HTTTA

Hình 8 Biểu đồ hoạt động quy trình hủy đăng ký xác thực

Khóa luận tốt nghiệp GVHD: Ths Nguyễn Thanh Thụy

Biểu đồ ca sử dụng

Từ biểu đồ hoạt động, chúng ta sẽ xây dựng biểu đồ ca sử dụng để cung cấp cái nhìn tổng thể về chức năng của hệ thống và người dùng của nó Điều này tạo cơ sở cho việc xác định giao tiếp giữa người và máy Chúng ta sẽ mô hình hóa các chuỗi hành động mà hệ thống thực hiện, nhằm cung cấp kết quả rõ ràng, giúp khách hàng hiểu và giao tiếp hiệu quả với hệ thống.

Hình 9 Biểu đồ ca sử dụng quy trình đăng ký xác thực

Nguyễn Thị Hồng Vân - K19HTTTA

2.5.2 Quy trình hủy đăng ký xác thực

Hình 10 Biểu đồ ca sử dụng quy trình hủy đăng ký xác thực

Nguyễn Thị Hồng Vân - K19HTTTA

Khóa luận tốt nghiệp GVHD: Ths Nguyễn Thanh Thụy

2.5.3 Quy trình xác thực giao dịch chuyển tiền

Hình 11 Biểu đồ ca sử dụng quy trình xác thực chuyển tiền

Nguyễn Thị Hồng Vân - K19HTTTA

Trong chương 2 của khóa luận, thực trạng sử dụng Mobile Banking hiện nay được nêu rõ, đồng thời đề xuất một bài toán cần triển khai Bài viết giới thiệu công cụ nhằm giải quyết bài toán này và tiến hành phân tích hệ thống cùng cơ chế hoạt động của công cụ xác thực Google.

Hệ thống xác thực trong Mobile banking được phân tích từ cấu trúc web tổng quát, sau đó đi sâu vào các chức năng cụ thể Chương 3 sẽ giải thích cơ chế lập trình tạo nên hệ thống này, trình bày kết quả đạt được qua các bản demo và đánh giá hiệu quả của hệ thống xác thực.

Nguyễn Thị Hồng Vân - K19HTTTA

Nhận 1 trong các giá trị sau {register, unregister, auth] requestid String

Khóa luận tốt nghiệp GVHD: Ths Nguyễn Thanh Thụy

LẬP TRÌNH PHÁT TRIỂN, THỬ NGHIỆM DỊCH VỤ WEB XÁC THỰC O T P S Ử DỤNG GOOGLE AUTHENTICATOR TÍCH HỢP VÀO ỨNG DỤNG MOBILE BANKING

Ngày đăng: 07/04/2022, 13:03

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w