3.2.1.1. Khái quát về điều khiển truy nhập
Điều khiển truy nhập (Access control) là quá trình mà trong đó ngƣời dùng đƣợc nhận
dạng và trao quyền truy nhập đến các thông tin, các hệ thống và tài nguyên. Một hệ
thống điều khiển truy nhập có thể đƣợc cấu thành từ 3 dịch vụ: Xác thực (Authentication), Trao quyền, hoặc cấp quyền (Authorization) và Quản trị (Administration).
Xác thực là quá trình xác minh tính chân thực của các thông tin nhận dạng mà ngƣời
dùng cung cấp. Đây là khâu đầu tiên cần thực hiện trong một hệ thống điều khiển truy nhập. Cần nhớ rằng, xác thực chỉ có khả năng khẳng định các thông tin nhận dạng mà ngƣời dùng cung cấp tồn tại trong hệ thống mà thƣờng không thể xác minh chủ thể thực sự của thông tin đó. Sau khi ngƣời dùng đã đƣợc xác thực, trao quyền xác định các tài
nguyên mà ngƣời dùng đƣợc phép truy nhập dựa trên chính sách quản trị tài nguyên của cơ quan, tổ chức và vai trò của ngƣời dùng trong hệ thống. Quản trị là dịch vụ cung cấp khả năng thêm, bớt và sửa đổi các thông tin tài khoản ngƣời dùng, cũng nhƣ quyền truy nhập của ngƣời dùng trong hệ thống. Mặc dù quản trị không trực tiếp tham gia vào quá trình xác thực và trao quyền cho ngƣời dùng, quản trị là dịch vụ không thể thiếu trong một hệ thống điều khiển truy nhập.
Mục đích chính của điều khiển truy nhập là để đảm bảo tính bí mật, toàn vẹn và sẵn dùng hoặc khả dụng của thông tin, hệ thống và các tài nguyên. Tính bí mật (Confidentiality) đảm bảo chỉ những ngƣời có thẩm quyền mới có khả năng truy nhập vào dữ liệu và hệ thống. Tính toàn vẹn (Integrity) đảm bảo dữ liệu không bị sửa đổi bởi các bên không có đủ thẩm quyền. Tính sẵn dùng (Availability) đảm bảo tính sẵn sàng (đáp ứng nhanh, kịp thời) của dịch vụ cung cấp cho ngƣời dùng hợp pháp.
Các thông tin nhận dạng ngƣời dùng sử dụng trong quá trình xác thực bao gồm 3 loại, hay 3 nhân tố (factor): (i) Bạn là ai? (chứng minh nhân dân, bằng lái xe, vân tay,...), (ii) Những cái bạn biết (tên truy nhập, mật khẩu, số PIN...) và (iii) Bạn có gì? (Thẻ ATM, thẻ tín dụng, ...). Việc xác thực có thể dựa trên các thông tin từ một nhân tố, hoặc kết hợp nhiều nhân tố. Ví dụ, xác thực sử dụng tên ngƣời dùng và mật khẩu là xác thực 1 nhân tố do cả tên ngƣời dùng và mật khẩu đều thuộc nhóm (ii) – những cái bạn biết; Xác thực sử
73 dụng thẻ ATM và số PIN và xác thực 2 nhân tố. Về cơ bản, một hệ thống xác thực càng an toàn nếu nó kết hợp sử dụng nhiều nhân tố để xác thực ngƣời dùng.
3.2.1.2. Xác thực trong ứng dụng web
Tên truy nhập (username) và mật khẩu (password) là chuẩn thực tế cho xác thực trong các ứng dụng web, đặc biệt là các ứng dụng web trên nền Internet. Trong một số trƣờng hợp đặc biệt, các token phần cứng hoặc phần mềm đƣợc sử dụng kết hợp nhƣ nhân tố xác thực thứ 2 để tăng độ an toàn. Xác thực sử dụng các đặc điểm sinh trắc học ít đƣợc sử dụng trong các ứng dụng web do độ phức tạp cao và chi phí đắt. Các phƣơng pháp xác thực ứng dụng web dựa trên mật khẩu bao gồm: xác thực của giao thức HTTP (Built-in HTTP Authentication), đăng nhập một lần (Single Sign On – SSO) và các hệ xác thực tự phát triển.
a.Xác thực của giao thức HTTP
Giao thức HTTP cung cấp 2 phƣơng thức xác thực, bao gồm Basic access authentication và Digest access authentication. Basic access authentication đƣợc sử dụng khi trình duyệt yêu cầu truy nhập một tài nguyên đƣợc bảo vệ, nhƣ 1 thƣ mục hoặc file trên máy chủ web. Khi nhận đƣợc yêu cầu truy nhập, máy chủ gửi phản hồi yêu cầu xác thực (mã 401) nhƣ sau:
Hình 3.6.Form đăng nhập yêu cầu người dùng nhập username và password
Khi trình duyệt nhận đƣợc phản hồi yêu cầu xác thực của máy chủ, nó hiện form đăng nhập yêu cầu ngƣời dùng nhập username và password, nhƣ minh họa trên Hình 3.6. Nhận đƣợc username và password từ ngƣời dùng, trình duyệt tạo thông điệp trả lời, ghép username và password thành dạng username:password, mã hóa bằng base64 và đƣa vào Authentication header và gửi cho máy chủ web nhƣ sau:
74 Nhận đƣợc thông tin xác thực từ trình duyệt, máy chủ web kiểm tra username và password. Nếu hợp lệ thì máy chủ cho phép truy nhập tài nguyên, ngƣợc lại hệ thống sẽ báo lỗi hoặc yêu cầu cung cấp lại thông tin xác thực.
Ƣu điểm của Basic access authentication là đơn giản, dễ thực hiện. Tuy nhiên, nhƣợc điểm lớn nhất của phƣơng pháp này là mật khẩu truyền không an toàn do mã base64 không đảm bảo tính bí mật, có thể bị giải mã dễ dàng. Một nhƣợc điểm khác của phƣơng pháp này là mật khẩu đƣợc gửi từ trình duyệt đến máy chủ thƣờng xuyên, dễ gây lộ, mất mật khẩu. Sở dĩ có điều này là do máy chủ không duy trình phiên làm việc nên trình duyệt thƣờng lƣu username và password để tự động gửi cho máy chủ khi có yêu cầu. Ngoài ra, mật khẩu cũng đƣợc lƣu trữ không an toàn trong cookie của trình duyệt và do không tồn tại phiên làm việc nên chỉ có thể đăng nhập mà không thể đăng xuất. Để đảm bảo an toàn, khuyến nghị sử dụng SSL/TLS với Basic access authentication để truyền thông tin đăng nhập an toàn.
Digest access authentication về cơ bản tƣơng tự Basic access authentication ở lƣu trình xử lý. Điểm khác trong Digest access authentication là mật khẩu đƣợc mã hóa bằng hàm băm MD5, sau đó đƣợc đƣa vào thông điệp xác thực để gửi lên máy chủ web. Nhờ việc mật khẩu đƣợc mã hóa thành chuỗi băm, rồi gửi lên đƣờng truyền giúp giảm đƣợc nguy cơ lộ mật khẩu. Mặc dù vậy, cả Digest access authentication và Basic access authentication cung cấp bởi HTTP đều tƣơng đối yếu và nên hạn chế sử dụng.
b.Đăng nhập một lần
Đăng nhập một lần (Single Sign On - SSO) là giải pháp cho phép ngƣời dùng đăng nhập một lần thông qua một giao diện xác thực để truy nhập vào nhiều hệ thống, hoặc dịch vụ khách nhau. Với ứng dụng web, ngƣời dùng có thể đăng nhập 1 lần và có thể truy nhập nhiều trang web, hoặc dịch vụ trên nền web khác nhau có hỗ trợ SSO.
75
Hình 3.7.Giao diện SSO của Google Account
Nhiều hệ thống SSO đã đƣợc triển khai trên thực tế bởi các hãng cung cấp dịch vụ trên Internet, nhƣ Google và Microsoft. Google Account, nhƣ minh họa trên Hình 3.7 là một hệ thống SSO điển hình. Sau khi đăng nhập, ngƣời dùng có thể truy nhập hầu hết các dịch vụ của Google, nhƣ GMail, Youtube, Google Talk, Google Adwords,… Microsoft Account, nhƣ biểu diễn trên Hình 3.8 cũng là một hệ thống SSO cho phép ngƣời dùng đăng nhập một lần và truy nhập vào nhiều trang web, hoặc dịch vụ do Microsoft cung cấp, nhƣ Windows PC, Skype, Xbox Live, Outlook.com, OneDrive…
76
Hình 3.8.Giao diện SSO của Microsoft Account
c.Các hệ xác thực tự phát triển
Nhiều ứng dụng web sử dụng hệ thống xác thực và trao quyền truy nhập tự phát triển. Ƣu điểm của các hệ thống xác thực dạng này là khả năng tùy biến cho phù hợp với yêu cầu của ứng dụng cụ thể. Nói chung, một hệ thống xác thực và trao quyền truy nhập tự phát triển thƣờng gồm các thành phần sau:
- Cơ sở dữ liệu lƣu thông tin ngƣời dùng, gồm tên truy nhập và mật khẩu. - Cơ sở dữ liệu quản lý quyền truy nhập cho ngƣời dùng, nhóm ngƣời dùng. - Trang đăng nhập, trang đăng xuất.
- Thành phần kiểm tra trạng thái đăng nhập và quyền truy nhập. - Thành phần kiểm tra và quản lý phiên làm việc.
3.2.1.3. Đảm bảo an toàn cho xác thực dựa trên mật khẩu
Do xác thực dựa trên tên ngƣời dùng và mật khẩu đƣợc sử rộng rãi nhất trong xác thực ứng dụng web nhƣ đề cập ở mục 3.2.1.2, việc đảm bảo an toàn cho xác thực dựa trên mật khẩu đóng vai trò quyết định đến độ an toàn của khâu xác thực ứng dụng web. Các chỉ dẫn đảm bảo an toàn sau cho xác thực dựa trên mật khẩu cần đƣợc tuân thủ:
- Thiết lập độ dài mật khẩu tối thiểu
- Đảm bảo độ khó của mật khẩu (sử dụng nhiều bộ ký tự)
- Không lƣu mật khẩu ở dạng rõ (nên dùng dạng băm mà không phải là dạng mã hóa sử dụng khóa)
- Đổi mật khẩu định kỳ - Hạn chế dùng lại mật khẩu
- Không dùng mật khẩu giống tên ngƣời dùng - Cho phép khóa (disable) tài khoản.
3.2.1.4. Các cơ chế đảm bảo an toàn xác thực ứng dụng web
Để tăng cƣờng an toàn xác thực ứng dụng web, có thể lựa chọn áp dụng các cơ chế sau:
- Nên sử dụng giao thức SSL/TLS (HTTPS) khi thực hiện truyền thông tin xác thực để tránh nguy cơ thông tin nhạy cảm bị đánh cắp.
- Nên có cơ chế khóa hệ thống, theo đó tạm khóa hệ thống, tạm khóa tài khoản nếu ngƣời dùng đăng nhập sai một số lần.
- Sử dụng CAPTCHA để xác thực form, tránh đăng nhập, đăng ký tự động. - Khóa tài khoản không sử dụng.
- Không sử dụng các tài khoản ngầm định, nhƣ admin, guest, root,… - Không lƣu thông tin truy nhập vào mã (hardcoded).
- Tránh sử dụng tính năng nhớ mật khẩu, hoặc tự động đăng nhập (Remember Me/Stay Signed In).
77 - Không sử dụng tính năng Autocomplete với form đăng nhập.