- vừa được xem lúc

Authentication overview

0 0 8

Người đăng: Nguyễn Thành Tài

Theo Viblo Asia

Authentication overview

I. Định nghĩa

Authentication là quá trình xác nhận danh tính của 1 đối tượng, thường là một cá nhân hoặc một hệ thống, đảm bảo rằng đối tượng này chính là đối tượng được xác thực bởi hệ thống. Thông thường, authentication sẽ đi cùng với authorization, là bước tiếp theo của authentication, xác nhận đối tượng này có quyền gì trên các tài nguyên nào.

Ví dụ, anh Nguyễn Văn A đến ngân hàng để xin sao kê tài khoản. Anh cần cung cấp căn cước và chữ ký để xác định danh tính.
Là một người dùng dịch vụ ngân hàng, anh có quyền kiểm tra và thay đổi thông tin tài khoản của mình. Tuy nhiên, anh không thể thay đổi thông tin tài khoản của người khác hoặc tự ý thay đổi lãi suất cho khoản vay 1 tỉ của mình.

II. Phân loại

1. Single-factor authentication (SFA)

Single-factor authentication sử dụng đúng một phương pháp duy nhất để xác thực người dùng.
Ưu điểm của SFA là sự đơn giản, giảm sự khó chịu cho người dùng. Ngược lại, phương pháp này được xem là chưa đủ bảo mật khi ứng dụng cho các tổ chức yêu cầu mức bảo mật cao.
Phù hợp với các mô hình chỉ yêu cầu mức xác thực cơ bản. Các phương pháp có thể gộp lại thành 3 nhóm chính sau

  • What you remember: mật khẩu, câu hỏi mật khẩu, mã pin
  • What you have: Smartcard, USB xác thực, mã OTP gửi về điện thoại, ứng dụng được cài đặt trên điện thoai
  • What you are: Sinh trắc học như vân tay, nhận diện khuôn mặt, phân tích mống mắt.
  • Where you access: địa chỉ IP, GPS
  • What you do: thói quên gõ phím, pattern di chuột

2. Two-factor authentication (2FA)

Two-factor authentication sử dụng 2 phương pháp xác thực khác nhau để gia tăng độ tin cậy của hệ thống. So sánh với SFA, 2FA vượt trội hơn về mức độ bảo mật, giảm thiểu nguy cơ bị đánh cắp, lừa đảo hoặc các truy cập trái phép.
Mặc dù vậy, 2FA có thể gây bất tiện cho người dùng và gặp các vấn đề tương thích với các thiết bị cũ

Cần tránh việc nhầm lẫn 2FA là việc sử dụng 2 phương thức bảo mật.
Ví dụ, xác thực bằng cách cung cấp username/password sau đó lại nhập thêm ngày sinh để xác thực

2FA nên hiểu là việc sử dụng 2 phương thức bảo mật thuộc 2 kiểu phương thức bảo mật khác nhau
Ví dụ, sau khi xác thực bằng username/password (what you remember), người dùng nhập OTP gửi về điện thoại (what you have) để hoàn tất xác thực

3. Multi-factor authentication (MFA)

MFA đôi khi còn được hiểu là 2FA, vì bản chất 2FA cũng sử dụng nhiều hơn một phương pháp xác thực.
MFA mang ý nghĩa rộng hơn 2FA, MFA có thể kết hợp nhiều hơn 2 phương thức bảo mật để đạt được mục tiêu bảo mật của hệ thống.
Mặc dù có tính an toàn cao nhất trong 3 phương pháp nhưng kĩ sư thiết kế cần cân đối giữa tính bảo mật và độ thân thiện với người dùng.
Chỉ nên sử dụng khi 2FA vẫn chưa đủ đáp ứng yêu cầu về bảo mật của hệ thống vì nhược điểm của MFA thấy rõ là sự bất tiện cho người dùng để có được quyền truy cập.

III. Các phương thức xác thực cơ bản

1. Password authentication

Xác thực bằng mật khẩu là phương pháp xác thực cơ bản và lâu đời nhất. Phương pháp này yêu cầu người dùng cung cấp một chuỗi ký tự mà chỉ họ biết (what you remember). Bạn có thể thấy phương pháp này trong hầu hết các hệ thống, như mật khẩu đăng nhập máy tính, điện thoại, hoặc wifi.

Best practice cho một mật khẩu mạnh:

  • Tối thiểu 12 ký tự
  • Bao gồm tối thiểu một chữ hoa, chữ thường, sô và ký tự đặc biệt

Ngoài ra, người dùng cũng nên thay đổi mật khẩu thường xuyên và sử dụng các công cụ tạo mật khẩu để tăng cường bảo mật.

2. Single sign on (SSO)

Là phương thức xác thực cho phép người dùng đăng nhập vào nhiều ứng dụng hoặc hệ thống trong 1 hệ sinh thái bằng cách đăng nhập 1 lần duy nhất trong hệ sinh thái đó.
Đặc biệt phù hợp với mô hình SaaS, microservices nhằm đảm bảo tính bảo mật và tăng trải nghiệm người dùng trên hệ sinh thái.
Ví dụ đăng nhập vào Gmail, bạn có thể access tất cả các dịch vụ khác trong hệ sinh thái của Google.
Các công nghệ và giao thức thường được sử dụng

  • SAML (Security Assertion Markup Language)
  • OAuth 2.0 (Chỉ dùng cho authorization not authentication)
  • OpenId Connect xây dựng trên nền OAuth 2.0 (authentication & authorization)

3. Biometric

Xác thực sinh trắc học là phương pháp xác thực dựa trên các đặc điểm sinh học hoặc hành vi của con người. Phương pháp này đang được áp dụng rộng rãi trên các thiết bị di động với các tính năng như nhận diện khuôn mặt, vân tay, mống mắt hoặc giọng nói.

Ưu điểm

  • Tính bảo mật cao và khó giả mạo
  • Nhanh chóng và tiện lợi, không cần nhớ mật khẩu

Nhược điểm

  • Chi phí cao
  • Tính chính xác: Đôi khi không chính xác do tình trạng cơ thể hoặc tổn thương vật lý
  • Quyền riêng tư: Quan ngại về quyền riêng tư khi các thông tin này là thông tin nhạy cảm của cá nhân.

4. CAPTCHA & reCAPTCHA

Completely Automated Public Turing Test to tell Computers and Humans Apart, là phương thức xác thực nhằm phân biệt người dùng là con người hay chương trình tự động bởi máy tính.
Các loại CAPTCHA cơ bản

  • Hình ảnh
  • Âm thanh
  • Thử thách giải đố
  • reCAPTCHA sử dụng các phương pháp phân tích hành vi và đánh giá điểm số tương đồng với 1 người dùng bình thường.
    Năm 2018, Google đã tung ra phiên bản reCAPTCHA v3, sử dụng trí tuệ nhân tạo để phân tích hành vi người dùng nhằm đưa ra yêu cầu xác thực khi thực sự cần thiết, tăng trải nghiệm người sử dụng dịch vụ.

5. Adaptive authentication

Adaptive authentication sử dụng nhiều yếu tố khác nhau để đánh giá và đưa ra yêu cầu xác thực tương ứng nếu cần thiết.
Các yếu tố thường được xem xét bao gồm

  • Vị trí địa lí
  • Thiết bị
  • Địa chỉ IP thực hiện yêu cầu
  • Số lần request trong 1 khoảng thời gian
  • Hành vi bất thường của người dùng Từ đó đưa ra các yêu cầu xác thực bổ sung ví dụ như mã OTP, xác thực sinh trắc, etc.

Ngoài ra còn có các phương thức xác thực khác chưa được nhắc đến ở đây, tôi sẽ quay lại và bổ sung thêm sau khi đã nắm rõ các phương thức xác thực cơ bản kể trên.


Kiến thức là vô tận, đôi khi có sự nhầm lẫn, nếu bạn thấy chỗ nào chưa hợp lý hoặc cần giải thích thêm hãy comment cho tôi biết.

Bạn có thể tham khảo các bài viết khác của tôi tại Blog cái nhân hoặc kết nối với tôi qua Linkedin

Bình luận

Bài viết tương tự

- vừa được xem lúc

Có thực sự an toàn với Authentication và Authorization , mật khẩu có nên lưu ở dạng text ?

Có thực sự an toàn với Authentication và Authorization , mật khẩu có nên lưu ở dạng text . Hơn nữa, vì chúng ta đang lưu trữ thông tin đăng nhập và hỗ trợ quy trình đăng nhập, chúng ta biết rằng sẽ có thông tin xác thực được gửi qua hạ tầng mạng.

0 0 58

- vừa được xem lúc

Login LINE với Firebase Authentication

Ngày nay, khi sử dụng một dịch vụ online online, chúng ta có xu hướng sử dụng một tài khoản liên kết (Google, Facebook, Twitter... tạm gọi là bên thứ 3) để đăng nhập vào dịch vụ đó thay vì cứ mỗi một dịch vụ, ta lại tạo một account/passord riêng. Lúc này Firebase Authentication (từ đây sẽ gọi tắt là

0 0 46

- vừa được xem lúc

Bài 17: Phân quyền trong Laravel

Chào mừng các bạn quay trở lại với series học Laravel với VueJS của mình, ở bài này mình sẽ hướng dẫn các bạn các phân quyền bằng Laravel và VueJS mà không cần cài đặt thêm bất kì package hay library

0 0 95

- vừa được xem lúc

Phân biệt sự khác nhau giữa Authentication và Authorization

Có lẽ trong quá trình lập trình bạn đã được nghe rất nhiều về 2 khái niệm authentication và authorization nhưng liệu bạn đã phân biệt được sự khác nhau giữa 2 khái niệm này? hay đôi khi bạn vẫn mập mờ

0 0 48

- vừa được xem lúc

[Node JS + React JS] - Phần 2 - Authentication server

Hôm nay chúng ta sẽ tiếp tục serie Node JS + React JS với chủ đề là authentication + authorization. Hôm nay chúng ta cùng đi tìm hiểu hai khái niệm cơ bản là Authentication và Authorization, cũng như

0 0 404

- vừa được xem lúc

API với Postman (Phần 3)

Sau 2 bài viết, chúng ta đã hiểu thế nào là client và server, cách chúng sử dụng HTTP để nói chuyện với nhau và việc xác định định dạng dữ liệu để hiểu nhau. Có lẽ trong đầu chúng ta sẽ có câu hỏi: Là

0 0 85