này tên hình thức sẽ được gọi là TOTP. Tương tự như xác thực bằng SMART OTP, Google Authenticator là một phần mềm miễn phí được cài đặt trên thiết bị di động, cho phép người dùng chủ động lấy mã xác thực. Phương pháp này khắc phục được nhược điểm của việc xác thực qua tin nhắn SMS OTP và qua Token hiện tại đang áp dụng trên ứng dụng BaoViet Bank, hạn chế tối đa việc kẻ gian lợi dụng lỗ hổng bảo mật để tấn công tài khoản khách hàng. Theo chuyên gia công nghệ ngân hàng, SMS OTP được gửi thông qua nhiều lớp trung gian và nhà mạng dẫn đến dễ bị thất thoát. Chẳng hạn, khi điện thoại của khách hàng bị cài phần mềm đọc trộm SMS, số OTP gửi đến điện thoại khách hàng đăng ký được tự động chuyển đến số điện thoại khác mà khách hàng không biết. SMS OTP còn bị lệ thuộc vào bảo mật của các nhà mạng, đòi hỏi khách hàng phải roaming khi đi nước ngoài...
Để hiểu rõ hơn về cơ chế hoạt động cũng như cách thức xác thực của ứng dụng ra sao, phần dưới đây khóa luận sẽ đi vào phần tìm hiểu quy trình hoạt động và mô tả rõ hơn về hệ thống này.
2.2. Mô tả webservice xác thực OTP sử dụng trình xác thực GoogleAuthenticator Authenticator
Trước khi xây dựng hệ thống xác thực, chúng ta cần tìm hiểu module xác thực được tích hợp. Webservice xác thực OTP được viết bằng ngôn ngữ lập trình Java sử dụng Spring Framework. Bao gồm ba chức năng chính là đăng ký xác thực, hủy đăng ký xác thực và xác thực. Webservice xác thực OTP được xây dựng theo cấu trúc REST
API với định dạng dữ liệu JSON. 2.2.1. Giới thiệu REST API
REST (viết tắt của từ Representational State Transfer). REST không phải là một chuẩn hay một giao thức, đây là một cách tiếp cận, một kiểu kiến trúc để viết API. Một web service là một tập hợp các giao thức và chuẩn được sử dụng cho mục đích
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
biết như Resful webservice . Những webservice này sử dụng phương thức HTTP để triển khai các định nghĩa kiến trúc REST. Các ứng dụng sử dụng kiểu thiết kế REST thì được gọi là Restful. Trên thực tế ta hay sử dụng thuật ngữ REST thay
cho Restful và ngược lại
API (Application Programming Interface) tức giao diện lập trình ứng dụng. Đây là phương tiện cho hai hoặc nhiều ứng dụng trao đổi, tương tác với nhau, tạo ra tương tác giữa người dùng với ứng dụng hiệu quả và tiện lợi hơn. Với API, các lập trình viên có thể tiếp cận, truy xuất dữ liệu từ máy chủ thể hiện chúng trên ứng dụng phần mềm hoặc website của mình một cách dễ dàng hơn.
Nhìn chung, Restful API [9] là một tiêu chuẩn dùng trong việc thết kế các thiết kế API cho các ứng dụng web để quản lý các resource. RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến nhất ngày nay. Trọng tâm của REST quy định cách sử dụng các HTTP method (như GET, POST, PUT, DELETE...) và cách định dạng các URL cho ứng dụng web để quản các resource. Restful không quy định logic code ứng dụng và không giới hạn bởi ngôn ngữ lập trình ứng dụng.
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ó.
2.2.2. Giới thiệu về Spring Framework.
Spring Famework [10] là một nền tảng Java mã nguồn mở. Nó ban đầu được viết
bởi Rod Johnson và được phát hành lần đầu tiên theo giấy phép Apache 2.0 vào tháng 6 năm 2003. Spring là khung phát triển ứng dụng phổ biến nhất cho Java doanh nghiệp. Hàng triệu nhà phát triển trên khắp thế giới sử dụng Spring Framework để tạo
mã hiệu suất cao, dễ kiểm tra và có thể sử dụng lại. Kiến trúc Spring Framework là một kiến trúc xếp lớp được sắp xếp bao gồm các mô-đun khác nhau, bên dưới là sơ
Spring Framework Runtime
Hình 3. Kiến trúc tổng thể của Spring Framework
Core Container
Container này có 4 modules sau:
- Spring Core: Module này là cốt lõi của Spring Framework. Nó cung cấp triển khai
cho các tính năng như IoC (Inversion of Control) và Dependency Injection với mẫu thiết kế singleton.
- Spring Bean: Cung cấp triển khai cho mẫu thiết kế nhà máy thông qua
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
- Spring context: Module này được xây dựng trên cơ sở vững chắc được cung cấp
bởi các module Core và Beans và là phương tiện để truy cập bất kỳ đối tượng nào
được xác định và định cấu hình.
- Spring Expression Languages (SpEL): Đây là phần mở rộng cho ngôn ngữ biểu
thức được hỗ trợ bởi các trang máy chủ Java. Nó cung cấp một ngôn ngữ biểu thức
mạnh mẽ để truy vấn và thao tác biểu đồ đối tượng, trong thời gian chạy.
Spring Data Access/ Integration
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: ORM là viết tắt của Object Relatic Mapping . Module này cung cấp tính nhất quán / tính di động cho mã của chúng tôi bất kể công nghệ truy cập dữ liệu dựa trên khái niệm ánh xạ hướng đối tượng.
- OXM: OXM là viết tắt của Object XML Mappers. Nó được sử dụng để chuyển đổi các đối tượng thành định dạng XML và ngược lại. Spring OXM cung cấp API thống nhất để truy cập vào bất kỳ khung OXM nào trong số này.
- 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.
- Giao dịch: Module này hỗ trợ quản lý giao dịch theo chương trình và khai báo
cho các lớp thực hiện giao diện đặc biệt và cho tất cả POJO của bạn. Tất cả các khái niệm thực hiện giao dịch cấp doanh nghiệp có thể được thực hiện trong Spring bằng cách sử dụng module này.
Spring web
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
- 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: Module này còn được gọi là module Spring MVC Portlet. Nó cung cấp hỗ trợ cho các Portlet dựa trên Spring và phản ánh chức năng của module Web Servlet.
Aspect Oriented Programming (Lập trình hướng đối tượng - AOP)
Ngôn ngữ AOP là một công cụ mạnh mẽ cho phép các nhà phát triển thêm chức
năng doanh nghiệp vào ứng dụng như giao dịch, bảo mật, vv Nó cho phép chúng ta viết ít mã hơn và tách biệt logic mã. AOP sử dụng mối quan tâm xuyên suốt.
Intrustment
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.
Aspect
Module này hỗ trợ kiểm tra các thành phần Spring với JUnit hoặc TestNG. Nó cung cấp tải nhất quán Spring ApplicationContexts và bộ nhớ đệm của các bối cảnh đó. Nó cũng cung cấp các đối tượng giả mà chúng ta có thể sử dụng để kiểm tra mã riêng lẻ.
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
2.2.3. Cơ chế hoạt động của dịch vụ web xác thực OTP
Webservice chứa dịch vụ xác thực OTP được xây dựng dựa trên thuật toán mật khẩu một lần dựa theo thời gian TOTP (được chỉ định trong RFC 6238). Nó sử dụng chung thuật toán và hàm mã hóa như trên ứng dụng Google Authenticator được cài trên máy người dùng.
Hình 4. Cơ chế xác thực của webservice
Cơ chế hoạt động của trình xác thực được diễn giải như sau:
- Để xác thực, người dùng cần nhập vào mã token được lấy từ ứng dụng Google Authenticator.
- Mã id định danh của người dùng sẽ được gửi kèm mã token này vào máy chủ xác
thực.
- Sau khi nhận được yêu cầu xác thực kèm dữ liệu của người dùng, máy chủ xác thực
sẽ tiến hành lấy khóa bí mật từ CSDL của người dùng kèm theo id người dùng
- Máy chủ xác thực sẽ so sánh mã token của người dùng nhập vào và mã token do chính máy chủ xác thực tính toán ra có trùng khớp hay không. Neu dữ liệu trùng khớp, quá trình xác thực hoàn tất.
2.3. Mô tả hệ thống hoạt động xác thực OTP tích hợp trên mobile banking
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:
Đối với yêu cầu đăng ký từ phía người dùng, client gửi yêu cầu lên Application Server để đăng ký xác thực TOTP. Application Server sẽ tiến hành gửi yêu cầu lên Authentication Server kèm theo thông tin người dùng bao gồm id, username để đăng ký. Authentication Server kiểm tra trong bộ nhớ cache xem tài khoản này đã đăng ký TOTP hay chưa, nếu chưa thì sẽ sinh ra khóa bí mật và trả về cho Application Server, Application Server trả về cho phía Client để người dùng có thể sử dụng ứng dụng Google Authenticator thực hiện thao tác nhập hoặc quét mã QR chứa khóa bí mật. Sau
Mô tả quy trình đăng kí dịch vụ xác thực
ST
T Tác nhân Nội dung thực hiện
HĐ
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. HĐ5 Người dùng Sử dụng ứng dụng Google Authenticator để quét mã QR
hoặc
nhập mã dưới dạng văn bản mà hệ thống đã trả ra HĐ6 Hệ thống Yêu cầu nhập mã xác thực của người dùng từ ứng dụng
Google Authrnticator thực hiện ở hoạt động 4.
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
khi người dùng nhập mã bí mật vào ứng dụng Google Authenticator, ứng dụng này sinh ra mã OTP mỗi 30 giây một lần.
Mỗi lần tiến hành xác thực, người dùng nhập mã OTP được lấy từ trong ứng dụng Google Authenticator, mã xác thực này sẽ được gửi lên Application Server và gửi yêu cầu xác thực lên Authentication Server. Authentication Server tiến hành kiểm tra thông tin người dùng trong bộ nhớ cache, nếu người dùng với id đã được đăng ký xác thực TOTP thì hệ thống sẽ lấy ra khóa bí mật từ id của người dùng được lưu trong
bộ nhớ và tạo ra một mã OTP với hàm mã hóa và tạo mã tương tự như trên ứng dụng Google Authenticator. Nó sẽ tiến hành đối chiếu mã vừa sinh ra này với mã được người dùng nhập vào. Nếu hai mã trùng nhau thì quá trình xác thực là thành công, ngược lại quá trình xác thực 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. Biểu đồ hoạt động
+ 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ý
Bảng 1. Mô tả quy trình đăng kí dịch vụ xác thực
Mô tả quy trình hủy đăng kí dịch vụ xác thực
ST
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
HĐ
1 Người dùng Khi muốn thực hiện hủy đăng kí hình thức xác thực đanhân tố Google Authenticator trong việc thực hiện các giao dịch chuyển tiền, thanh toán người dùng chọn chức năng Huỷ đăng kí xác thực trong menu của app Mobile Banking. HĐ2 Hệ thống Hiển thị thông báo yêu cầu người dùng xác nhận có chắc
chắn đồng ý hủy đăng ký xác thực 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
Google Authrnticator.
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Đ6 Hệ thống Xóa thông tin đăng ký của người dùng khỏi cơ sở dữ liệu. HĐ7 Hệ thống Hủy đăng kí thành công, hệ thống trả thông báo xác nhận
Mô tả quy trình xác thực chuyển tiền
ST
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Đ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
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Đ7 Hệ thống Sinh ra mã xác thực từ thông tin đăng kí của người dùng. HĐ8 Hệ thống Đối chiếu mã xác thực được sinh ra từ hệ thống và mã xác
thực người dùng nhập ở hoạt động 4:
+ 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
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy 2.5. Biểu đồ ca sử dụng
Từ biểu đồ hoạt động chúng ta sẽ đi xây dựng biểu đồ ca sử dụng với mục đích cung cấp một cái nhìn tổng thể về những gì hệ thống làm và ai sẽ dùng nó. Đưa ra cơ
sở để xác định giao tiếp người - máy với hệ thống. Mô hình hóa các chuỗi hành động
mà hệ thống sẽ thực hiện nhằm cung cấp một kết quả nào đó giúp khách hàng có thể hiểu được và có thể giao tiếp được với hệ thống một cách tổng thể.
Hình 9. Biểu đồ ca sử dụng quy trình đăng ký xác thực
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