Mục đích nghiên cứu của luận văn là tìm hiểu, thử nghiệm và đánh giá các cơ chế xác thực sử dụng OpenID và ứng dụng vào một hệ thống thông tin trên cơ sở đám mây, nơi mà các thực thể thư
Trang 1MỤC LỤC
Trang phụ bìa
Lời cam đoan 3
Danh mục các ký hiệu, các chữ viết tắt 4
Danh mục các hình vẽ, đồ thị 5
PHẦN MỞ ĐẦU 7
CHƯƠNG 1 – TỔNG QUAN VỀ XÁC THỰC VÀ GIẢI PHÁP ĐĂNG NHẬP MỘT LẦN (SINGLE SIGN-ON) 9
1.1 Xác thực trong an toàn thông tin 9
1.2 Xác thực người dùng 10
1.2.1 Các nhân tố xác thực 11
1.2.2 Xác thực đa yếu tố 11
1.2.3 Một số giải pháp xác thực phổ biến 12
1.2.4 Các giao thức xác thực 19
1.3 Giải pháp đăng nhập một lần (Single sign-on) 23
1.3.1 Đăng nhập một lần là gì ? 23
1.3.2 Phân loại đăng nhập một lần 25
1.3.3 Đặc điểm của SSO dựa trên web 31
1.3.4 Nguyên lý hoạt động của SSO dựa trên web 32
1.3.5 Các vấn đề an toàn với đăng nhập một lần dựa trên web 33
1.3.6 Tăng cường an toàn khi sử dụng SSO dựa trên web 37
1.4 Kết luận chương 38
CHƯƠNG 2 – TỔNG QUAN VỀ OPENID 39
2.1 OpenID là gì 39
2.2 Lịch sử phát triển 40
2.3 Ứng dụng 41
2.4 Hệ thống quản lý định danh 41
2.4.1 Các thành phần của một hệ thống quản lý định danh 41
2.4.2 Quy trình hoạt động chính của hệ thống quản lý định danh 43
2.5 Phương thức hoạt động của OpenID 44
2.5.1 Giao tiếp giữa các thành phần trong hệ thống OpenID 44
2.5.2 Cơ chế hoạt động 45
2.5.3 Cơ chế xác thực của OpenID 50
2.5.4 Sơ đồ quy trình giao tiếp giữa Client-Server 52
Trang 22.5.5 Quy trình xử lý các bước giao tiếp 52
2.6 Những vấn đề phát sinh với OpenID 53
2.6.1 Tính nặc danh và độ an toàn thông tin 53
2.6.2 Khả năng phòng tránh lỗi và tương thích với các chức năng vốn có của hệ thống 55
2.7 OpenID kết hợp với OAuth 56
2.8 Kết luận chương 59
CHƯƠNG 3 – ĐỀ XUẤT MÔ HÌNH ĐĂNG NHẬP MỘT LẦN TRONG HỆ THỐNG QUẢN LÝ THÔNG TIN Y TẾ TRÊN CƠ SỞ ĐÁM MÂY VÀ THỬ NGHIỆM MÔ ĐUN ĐĂNG NHẬP MỘT LẦN SỬ DỤNG OPENID 60
3.1 Giới thiệu mô hình 60
3.1.1 Hệ thống y tế trên cơ sở đám mây 60
3.1.2 Vấn đề chia sẻ thông tin giữa các bệnh viện trên cơ sở đám mây 62
3.1.3 Phân tích yêu cầu 64
3.2 Giải pháp thực thi 66
3.2.1 Mục tiêu 66
3.2.2 Cách tiếp cận 66
3.3 Phân tích và thiết kế hệ thống thông tin 70
3.4 Môi trường thử nghiệm 76
3.5 Hoạt động của mô đun 77
3.6 Đánh giá hoạt động của mô đun 83
3.7 Kết luận chương 84
KẾT LUẬN 86
TÀI LIỆU THAM KHẢO 87
PHỤ LỤC A: CÁC THÔNG ĐIỆP CỦA OPENID 89
PHỤ LỤC B: DANH SÁCH CÁC HỆ THỐNG HỖ TRỢ OPENID 98
Trang 3Lời cam đoan
Tôi là Võ Huy Hưng - tác giả của luận văn “Nghiên cứu thử nghiệm các cơ chế xác thực sử dụng OpenID và ứng dụng” Tôi xin cam đoan mình đã thực hiện luận văn một các nghiêm túc, toàn bộ nội dung luận văn cũng như kết quả nghiên cứu là do tôi thực hiện Đồng thời, việc tham khảo các tài liệu trong quá trình thực hiện luận văn tuân thủ theo đúng yêu cầu và không sao chép của bất kỳ một luận văn nào trước đó
Trang 4Danh mục các ký hiệu, các chữ viết tắt
PIN Personal Identification Number
2FA Two-Factor Authentication
3FA Three-Factor Authentication
OTP One-Time Password
SSO Single sign-on
OpenSSO Open Single sign-on
ESSO Enterprise Single sign-on
JOSSO Java Open Single Sign-On
CAS Central Authentication Service
RP Relying Party
IdP Identity Provider
OP OpenID Provider
IS Identity Selector
SASL Single Authentication and Security Layer
IDaaS Identity As A Service
SP OAuth Service Provider
SSL Secure Socket Layer
TSL Transport Layer Security
DNS Domain Name System
URI Uniform Resource Identifier
URL Uniform Resource Locator
API Application Programming Interface
APP Application
Trang 5Danh mục các hình vẽ, đồ thị
Hình 1.1 Giao thức thử thách và trả lời 20
Hình 1.2 Thiết bị OTP của RSA 21
Hình 1.3 Thẻ ma trận xác thực của ACB 22
Hình 1.4 SMS OTP của VTC Pay 22
Hình 1.5 Mô hình trước và sau khi áp dụng đăng nhập một lần 24
Hình 1.6 Mô hình Single Domain SSO 26
Hình 1.7 Mô hình Multi domain SSO 28
Hình 1.8 Mô hình OpenID 30
Hình 1.9 Mô hình OpenSSO 31
Hình 1.10 Ví dụ về session hijacking 35
Hình 1.11 Mô hình tấn công Man in the middle 36
Hình 1.12 Giả mạo DNS 37
Hình 2.1 Logo đặc trưng của OpenID 39
Hình 2.2 Các thành phần chính của hệ thống định danh 42
Hình 2.3 Ví dụ về thành phần Relying Party 42
Hình 2.4 Quy trình hoạt động chính của hệ thống quản lý định danh 43
Hình 2.5 URI là địa chỉ của Identity Provider 45
Hình 2.6 URI không phải là địa chỉ của Identity Provider 45
Hình 2.7 Quy trình xác định thành phần Identity Provider 46
Hình 2.8 Sử dụng Yadis để xác định địa chỉ của Identity Provider 47
Hình 2.9 Quy trình gởi thuộc tính định danh 47
Hình 2.10 Quy trình kiểm tra thuộc tính định danh 49
Hình 2.11 Quy trình kiểm tra thuộc tính định danh ở chế độ Dumb mode 50
Hình 2.12 Cơ chế xác thực của OpenID 50
Hình 2.13 Xác thực SASL 51
Hình 2.14 Sơ đồ giao tiếp giữa Client - Server 52
Hình 2.15 Cấu trúc giao thức bắt tay 53
Hình 2.16 Ví dụ về giá trị ngẫu nhiên nonce trong thông điệp của OpenID 54
Hình 2.17 Luồng lai OpenID/OAuth2 với Spark API 57
Hình 2.18 Luồng đăng nhập với OpenID/OAuth dành cho Google Apps 57
Hình 2.19 OpenID Connect protocol 59
Hình 3.1 Điện toán đám mây với hệ thống y tế 60
Hình 3.2 Mô hình nhiều bệnh viện cùng tham gia đám mây 62
Hình 3.3 Cở sở dữ liệu riêng của bệnh viện lưu trữ hồ sơ bệnh án 63
Hình 3.4 Quá trình xác thực và truy cập giữa hai bệnh viện 66
Trang 6Hình 3.5 Điện toán đám mây công cộng 67
Hình 3.6 IDaaS 68
Hình 3.7 IDaaS SSO 69
Hình 3.8 Mô hình khái quát hệ thống 70
Hình 3.9 Biểu đồ luồng logic đăng nhập một lần 71
Hình 3.10 Hoạt động của SSO 72
Hình 3.11 Đăng ký người dùng 73
Hình 3.12 Xác thực người dùng 74
Hình 3.13 Biểu đồ tuần tự OpenID 75
Hình 3.14 Kịch bản thử nghiệm 77
Hình 3.15 Kiến trúc 3 tầng của ứng dụng web 78
Hình 3.16 Single sign-on với OpenID 79
Hình 3.17 Giao diện web khi chưa đăng nhập 80
Hình 3.18 Google hỏi người dùng có đồng ý cho miền phụ truy cập thông tin 81
Hình 3.19 Giao diện web khi đăng nhập 82
Hình 3.20 Thông tin phiên được lưu ở cookie trình duyệt 83
Hình 3.21 Thông tin phiên được lưu trên server 84
Trang 7PHẦN MỞ ĐẦU
Ngày nay, các thông tin quan trọng được lưu trữ trên mạng càng nhiều và thường xuyên được truy nhập từ các máy tính khác trong mạng Chính những điều này đã và đang mang lại những lợi ích to lớn cho việc chia sẻ tài nguyên, kết nối trong các tổ chức doanh nghiệp Tuy nhiên, do đặc điểm nhiều người sử dụng và phân tán về mặt địa lý nên việc xác thực và kiểm soát truy cập trong môi trường mạng phức tạp hơn nhiều so với một máy tính đơn lẻ, một người sử dụng Chính vì thế việc tìm hiểu và nghiên cứu các cơ chế xác thực cho các hệ thống thông tin đang ngày càng trở nên cấp thiết
Xác thực người dùng là một yếu tố quan trọng trong quản lý định danh của một hệ thống thông tin Trong một hệ thống, khi mà nhiều dịch vụ khác nhau đều cần xác thực thì giải pháp đăng nhập một lần tỏ ra hiệu quả Chỉ cần xác thực tại một dịch vụ, ta có thể truy cập các thông tin của dịch vụ khác trong hệ thống, đây là mục tiêu chính mà OpenID hướng tới và cũng là lý do tác giả luận văn lựa chọn để nghiên cứu
OpenID không phải là một chuẩn mở mới, nó đã được phát triển và sử dụng rộng rãi từ lâu Thực tế đã cho thấy tính hiệu quả với mô hình đăng nhập một lần sử dụng OpenID Mục đích nghiên cứu của luận văn là tìm hiểu, thử nghiệm và đánh giá các cơ chế xác thực sử dụng OpenID và ứng dụng vào một hệ thống thông tin trên cơ sở đám mây, nơi mà các thực thể thường được xác thực riêng lẻ, tác giả luận văn đã đề xuất áp dụng giải pháp đăng nhập một lần giúp hệ thống có thể dễ dàng xác thực và uỷ quyền giữa các thực thể tham gia
Đối tượng nghiên cứu của luận văn bao gồm các phương pháp xác thực người dùng, các cơ chế đăng nhập một lần phổ biến và tập trung đi sâu vào một mô hình đăng nhập một lần dựa trên web là OpenID
Để thực hiện được mục đích nghiên cứu nêu trên, phương pháp nghiên cứu
sử dụng trong luận văn là phân tích lý thuyết và kết hợp với triển khai thử nghiệm
Trang 8Để có thể làm được thì tác giả phải thu thập tài liệu từ nhiều nguồn thông tin khác nhau bao gồm Internet, sách báo và những người có kinh nghiệm
Toàn bộ nội dung của luận văn được trình bày trong 3 chương với nội dung tóm tắt như sau:
Chương 1 – Tổng quan về xác thực và giải pháp đăng nhập một lần: Chương này trình bày bức tranh tổng quan về xác thực trong an toàn thông tin nói chung, cũng như xác thực người dùng nói riêng Nội dung của chương giới thiệu những nhân tố, giải pháp và giao thức phổ biến trong xác thực người dùng Qua đó tập trung phân tích và tìm hiểu cơ chế xác thực với giải pháp đăng nhập một lần Từ định nghĩa và phân loại cho đến đi sâu vào phân tích đặc điểm, nguyên ý hoạt động
và các vấn đề an toàn đối với giải pháp đăng nhập một lần dựa trên web
Chương 2 – Tổng quan về OpenID: Chương này tập trung nghiên cứu và tìm hiểu về mô hình hoạt động của một giải pháp đăng nhập một lần dựa trên web phổ biến, đó là OpenID
Chương 3 – Đề xuất mô hình đăng nhập một lần trong hệ thống thông tin y tế trên cơ sở đám mây và thử nghiệm mô đun đăng nhập một lần sử dụng OpenID: Chương này trình bày vấn đề về xác thực và kiểm soát truy cập với một hệ thống thông tin trên cơ sở đám mây, qua đó đề xuất mô hình và giải pháp thực thi cũng như phân tích thiết kế hệ thống thông tin của mô hình đề xuất Từ đó sẽ đưa ra những thử nghiệm và đánh giá mô đun đăng nhập một lần sử dụng OpenID
Từ kết quả nghiên cứu và thực hiện luận văn, tác giả đã có đóng góp mới trong việc nghiên cứu và đề xuất mô hình đăng nhập một lần cho hệ thống thông tin trên cơ sở đám mây, triển khai thử nghiệm một mô đun đồng thời đưa ra đánh giá
về kết quả thực hiện mô đun này
Trang 9CHƯƠNG 1 – TỔNG QUAN VỀ XÁC THỰC VÀ GIẢI PHÁP
ĐĂNG NHẬP MỘT LẦN (SINGLE SIGN-ON)
Chương này trình bày khái niệm về xác thực trong an toàn thông tin nói chung và xác thực người dùng nói riêng qua việc tìm hiểu các nhân tố, giải pháp và giao thức xác thực người dùng phổ biến hiện nay Từ đó tập trung đi sâu nghiên cứu
về một giải pháp xác thực đang rất phổ biến về tính tiện dụng đó là đăng nhập một lần (Single sign-on) Chi tiết đặc điểm hoạt động và những đánh giá về độ an toàn của giải pháp này sẽ được phân tích ở cuối chương
1.1 Xác thực trong an toàn thông tin
Xác thực (Authentication) là một hành động nhằm thiết lập hoặc chứng thực một cái gì đó (hoặc một người nào đó) đáng tin cậy, có nghĩa là những lời khai báo
do người đó đưa ra hoặc về vật đó là sự thật
Xác thực một đối tượng còn có nghĩa là công nhận nguồn gốc của đối tượng, trong khi xác thực một người thường bao gồm việc thẩm tra nhận dạng của họ Việc xác thực thường phụ thuộc vào một hoặc nhiều nhân tố xác thực (authentication factors) để minh chứng cụ thể
Trong an toàn thông tin máy tính nói chung, xác thực là một quy trình nhằm xác minh nhận dạng số (digital identity) của bên gửi thông tin (sender) trong liên lạc trao đổi xử lý thông tin Ngược lại sự tin cậy mù quáng hoàn toàn không thiết lập sự đòi hỏi nhận dạng, song chỉ thiết lập giới hạn quyền của người dùng hoặc của chương trình ứng dụng mà thôi
Trong một mạng lưới tín nhiệm, việc xác thực là một cách để đảm bảo rằng người dùng chính là người mà họ nói họ là, và người dùng hiện đang thi hành những chức năng trong một hệ thống, trên thực tế, chính là người đã được ủy quyền
để làm những việc đó Việc xác thực thường phụ thuộc vào một hoặc nhiều yếu tố xác thực (authentication factor) để minh chứng cụ thể
Trang 10Xác thực có thể được phân loại theo:
a Xác thực thực thể (Entity Authentication): Xác thực thực thể là xác thực định
danh của một đối tượng tham gia giao thức truyền tin Thực thể hay đối tượng có thể là người dùng, thiết bị đầu cuối Tức là một thực thể được xác thực bằng định danh của nó đối với thực thể thứ hai trong một giao thức, và bên thứ hai đã thực sự
tham gia vào giao thức
b Xác thực dữ liệu (Data Authentication): Xác thực dữ liệu là một kiểu xác thực
đảm bảo một thực thể được chứng thực là nguồn gốc thực sự tạo ra dữ liệu này ở
một thời điểm nào đó, đảm bảo tính toàn vẹn dữ liệu
1.2 Xác thực người dùng
Khi người sử dụng muốn truy nhập vào một hệ thống máy tính, thông thường, người sử dụng cần cung cấp các thông tin nhận dạng cho máy tính Khi nhận được các thông tin ấy, máy tính kiểm tra xem người sử dụng có quyền truy nhập vào hệ thống không Đây cũng là một nguyên tắc cơ bản được áp dụng cho một người khi muốn trao đổi thông tin với người khác: Trước tiên cần phải xác định người tham gia trao đổi thông tin có đúng là người muốn trao đổi không Do đó cần phải có một phương thức để cung cấp đặc điểm nhận dạng nhằm đảm bảo người trao đổi thông tin là hợp lệ Quá trình này được gọi là xác thực người sử dụng
Trên thế giới cũng như ở Việt Nam, vấn đề xác thực người dùng đang được quan tâm và đã có nhiều giải pháp được sử dụng và nghiên cứu Có rất nhiều cách
để xác thực: người sử dụng có thể cung cấp các thông tin mà chỉ có người đó mới biết: ví dụ mật khẩu, mã số cá nhân,… hoặc người đó có thể cung cấp các thông tin riêng khác như số chứng minh thư, thẻ từ, thẻ thông minh… Trong đó, mỗi giải pháp lại có những ưu điểm và nhược điểm riêng khác nhau
Xác thực người dùng là một quá trình qua đó hệ thống có thể xác minh rằng một ai đó thực sự là họ Quá trình xác thực sẽ xác định xem một người có phải là người được sử dụng hệ thống không Nó thường đi kèm với quá trình xác định quyền hạn của người đó trong hệ thống
Trang 111.2.1 Các nhân tố xác thực
Những nhân tố xác thực (authentication factors) dành cho con người (người
sử dụng) nói chung có thể được phân loại như sau:
a Những cái mà người sử dụng sở hữu bẩm sinh (Something the user is):
Chẳng hạn như dấu vân tay hoặc mẫu dạng võng mạc mắt, chuỗi DNA, mẫu dạng giọng nói, chữ ký, tín hiệu sinh điện đặc thù do cơ thể sống tạo sinh (unique
bioelectric signals), hoặc những định danh sinh trắc học (biometric identifier)
b Những cái gì người sử dụng có (Something the user possesses): Chẳng hạn
như chứng minh thư (ID card), chứng chỉ an ninh (security token), chứng chỉ phần
mềm (software token) hoặc điện thoại di động (cell phone)
c Những gì người sử dụng biết (Something the user knows): Chẳng hạn như mật
khẩu, mật ngữ (pass phrase) hoặc mã số định danh cá nhân (personal identification number - PIN)
1.2.2 Xác thực đa yếu tố
Trong thực tế, nhiều khi một tổ hợp của những yếu tố trên được sử dụng, lúc
đó người ta nói đến xác thực đa yếu tố (Multi-factor authentication)
- Chẳng hạn trong giao dịch ATM, thẻ ngân hàng và mã số định danh cá nhân (PIN) được sử dụng - trong trường hợp này đó là một trong các dạng xác thực 2 yếu tố (two-factor authentication – 2FA)
- Cũng trong ví dụ trên nếu sử dụng thêm một yếu tố nữa như dấu vân tay chẳng hạn thì ta sẽ có xác thực ba yếu tố (three-factor authentication- 3FA)
- Tương tự như vậy cho xác thực n yếu tố (n ≥ 2): n-factor authentication- nFA
Với xác thực đa yếu tố ta có thể tăng mức độ an toàn bảo mật lên rất cao nhờ việc kiểm chứng nhiều yếu tố xác thực Hiển nhiên là mức độ an toàn bảo mật sẽ càng cao khi số yếu tố xác thực càng nhiều Tuy nhiên, khi số yếu tố xác thực lớn thì hệ thống càng phức tạp kéo theo chi phí đầu tư và duy trì vận hành tốn kém, đồng thời lại bất tiện cho người sử dụng Do vậy, trên thực tế để cân bằng giữa an
Trang 12toàn bảo mật và tính tiện dụng người ta thường áp dụng xác thực hai yếu tố và xác thực ba yếu tố Nên lưu ý rằng xác thực đa yếu tố dù có mang lại mức độ an toàn bảo mật cao hơn, nhưng về lý thuyết cũng không thể là tuyệt đối an toàn nên chúng
ta không bao giờ được chủ quan trong lĩnh vực an toàn thông tin
• Một ví dụ về xác thực đa yếu tố liên quan đến giao dịch ngân hàng điện tử là xác thực chủ thẻ trong giao dịch ATM (Yếu tố xác thực đầu tiên của bạn là thẻ ATM (cái bạn có), sau khi đưa thẻ vào máy đọc bạn sẽ phải đưa tiếp yếu
tố xác thực thứ hai là PIN (cái bạn biết)
• Một ví dụ khác là xác thực người sử dụng dịch vụ giao dịch Internet Banking: Bạn đăng nhập với username + password sau đó còn phải đưa tiếp OTP (mật khẩu dùng một lần) được sinh ra trên token của riêng bạn
! Ưu điểm
Trang 13Thiết kế và sử dụng đơn giản, tốn ít tài nguyên Hệ thống chỉ gồm một cơ sở
dữ liệu người dùng với hai thông tin chủ yếu là tên truy nhập và mật khẩu Tương ứng với mỗi tên truy nhập là quyền sử dụng của người đó trong hệ thống Do đó các thông tin này không chiếm nhiều tài nguyên Người dùng dễ hiểu và dễ sử dụng Chi phí để thực hiện giải pháp này là rẻ so với các giải pháp khác Nó không phụ thuộc vào các thiết bị phần cứng mà chỉ dựa trên phần mềm Giải pháp này có khả năng làm việc trên mọi hệ điều hành Do đó, việc thực hiện giải pháp này khá dễ dàng và không tốn kém
! Nhược điểm
Giải pháp này có nhược điểm lớn nhất là không có được sự bảo mật cao Vì người dùng thường có tên đăng nhập mà nhiều người dùng có Mặt khác, người dùng thường chọn mật khẩu dễ nhớ hoặc không cẩn thận khi gõ mật khẩu, do vậy
dễ bị tấn công Kẻ tấn công có nhiều phương pháp để đạt được mật khẩu như thâm nhập vào hệ thống đọc file mật khẩu, dự đoán mật khẩu, vét cạn các từ trong từ điển
để tìm mật khẩu, hoặc có thể lừa người dùng để lộ mật khẩu
Một số biện pháp để tăng thêm tính bảo mật cho giải pháp này:
• Đặt mật khẩu phức tạp: mật khẩu phải chứa tối thiểu 6 ký tự, không trùng với tên đăng nhập, chứa các loại ký tự là chữ cái, chữ số, ký tự đặc biệt Nếu đặt như vậy thì kẻ muốn tấn công cũng sẽ rất khó đoán được mật khẩu
• Thay đổi mật khẩu: quy định sau một thời gian nhất định mật khẩu sẽ không còn tác dụng đối với hệ thống và người dùng phải đặt lại mật khẩu khác Mật khẩu sẽ được thay đổi nên khả năng kiểm soát tình trạng an toàn của mật khẩu cao hơn
• Mã hóa thông tin: Trong môi trường làm việc mạng, những nhà thiết kế thường dùng biện pháp mã hóa thông tin đăng nhập từ một máy khách nào
đó trước khi chúng được gửi đi tới máy chủ của hệ thống Do đó, khả năng bị mất cắp mật khẩu sẽ giảm đi rất nhiều khi kẻ xấu bắt gói tin đăng nhập trên đường truyền
Trang 14Hiện nay, giải pháp mật khẩu sử dụng một lần (one-time password) được sử dụng rất nhiều trong các ứng dụng Các mật khẩu trong danh sách chỉ có thể sử dụng một lần duy nhất mà không thể sử dụng lại trong những lần đăng nhập sau Có 2 cách để
hệ thống sẽ hỏi người dùng khóa thứ n-2 …
Khi dùng thuật toán MD4 để sinh ra kết quả thì từ kết quả hầu như không thể suy ngược lại giá trị đầu vào nên hệ thống không thể tìm ra được khóa thứ n-1 là gì, mặc
dù khi biết cả khóa thứ n Tuy nhiên, theo cách này kẻ xấu vẫn có thể tấn công Nếu người dùng tự thiết lập giá trị đầu vào để xây dựng hệ thống khóa thì rất có thể nó
sẽ được đoán ra theo các cách giống như khi đoán các mật khẩu thông thường Đối với những từ đoán được, kẻ tấn công sẽ áp dụng thuật toán MD4 để sinh ra các khóa
và sẽ thử hết các khóa này cho đến khi tìm được khóa người dùng đang sử dụng Còn trong trường hợp hệ thống sẽ tự sinh ra giá trị ban đầu và một lượng mật khẩu
đủ dùng trong một thời gian nào đó, người dùng sẽ có một danh sách các mật khẩu được đánh thứ tự Về phía người dùng, họ sẽ không thích phải dùng nhiều mật khẩu Điều này gây phiền toái cho người dùng và khả năng bị mất cắp danh sách khóa là rất cao Ngoài ra, kẻ tấn công còn có thể dùng phương pháp bắt gói tin đăng nhập của người dùng để lấy mật khẩu
Trang 15! Ứng dụng
Giải pháp này đã và đang được sử dụng rất nhiều Nó được ứng dụng trên máy tính và đặc biệt được ứng dụng cả trên mạng Kể cả các cơ quan, tổ chức không có điều kiện kinh tế để có thể trang bị cho mình một hệ thống mạng với các đường truyền tốc độ cao thì vẫn có thể sử dụng giải pháp này Bởi vì, thông tin truyền và lưu trữ chỉ bao gồm tên đăng nhập và mật khẩu Dung lượng truyền đi trên đường truyền nhỏ nên chỉ cần một đường truyền có băng thông không lớn thì thông tin này cũng được truyền đi trong một khoảng thời gian chấp nhận được Các ứng dụng tiêu biểu hiện nay đang sử dụng giải pháp xác thực bằng mật khẩu như:
Hệ điều hành (Windows, Unix…), các dịch vụ thư điện tử, thương mại điện tử…
b Giải pháp thẻ thông minh
Thẻ thông minh (smart cart) là một thẻ plastic có kích cỡ như thẻ tín dụng được trang bị một vi mạch dùng để chứa bộ nhớ và một mạch xử lý với hệ điều hành để kiểm soát bộ nhớ Nó có thể lưu trữ dữ liệu về thông tin cá nhân, tiền hoặc một số thông tin khác mà sự thay đổi của chúng cần được kiểm soát chặt chẽ Ngoài
ra, nó có thể lưu trữ các khóa mã hóa để người dùng có thể nhận dạng qua mạng, chữ ký điện tử … Đặc biệt, hiện nay thẻ thông minh có hỗ trợ chứng nhận số Nó
mã hóa dữ liệu và kiểm tra tính hợp lệ của các giao dịch qua mạng Đây là một giải pháp rất hiệu quả và linh động cho các vấn đề về xác thực người dùng
Hiện nay, các cơ quan tổ chức dùng thẻ rầt nhiều Đầu tiên, những thông tin cần thiết cho việc nhận dạng các nhân viên trong cơ quan, tổ chức sẽ được lưu vào
bộ nhớ của thẻ Sau đó, nó được cung cấp cho các nhân viên tương ứng với các thông tin đó Mỗi cơ quan, tổ chức khác nhau sẽ có các yêu cầu về thông tin xác thực khác nhau nhưng thường là các thông tin như tên truy nhập, mật khẩu và một
số thông tin cá nhân khác
Trong hệ thống thông tin đòi hỏi phải có xác thực người dùng, nhân viên trong tổ chức chỉ cần đưa thẻ vào thiết bị đọc thẻ và nhập vào một mã số bí mật nào
đó để xác nhận với hệ thống là chính họ là người sở hữu chiếc thẻ đó Khi đã nhập
Trang 16đúng mã này, thiết bị đọc thẻ sẽ đọc các thông tin nhận dạng được ghi trong thẻ và chuyển các thông tin này đến hệ thống, sau đó hệ thống sẽ kiểm tra chúng với cơ sở
! Nhược điểm
Tuy giải pháp này đã hạn chế được sự mất cắp thẻ bằng cách kết hợp thẻ với một số PIN nhưng vẫn có thể bị đánh cắp cả thẻ và số PIN Thêm nữa việc xác thực cần người dùng phải nhớ số PIN và sở hữu một chiếc thẻ còn các cơ quan quản lý phải trang bị thêm các thiết bị như thiết bị đọc thẻ, thiết bị ghi, các phần mềm hỗ trợ
…Số lượng và giá thành của các thiết bị này không phải là nhỏ, do đó khá là tốn kém
Trang 17Các dịch vụ hỗ trợ phổ biến cho việc xác thực bằng thẻ là chưa đầy đủ Các dịch vụ thư điện tử, các dịch vụ thương mại …cần đến xác thực trên Internet đều chưa hỗ trợ xác thực bằng thẻ Hiện nay, hầu như các nhà cung cấp giải pháp xác thực bằng thẻ đều phát triển các dịch vụ theo mô hình riêng của mình, sử dụng các thiết bị riêng chưa thống nhất, do đó khả năng liên hệ giữa các hệ thống hầu như không có
! Ứng dụng
Đây được coi là giải pháp tương đối hoàn chỉnh và được nhận định là có tiềm năng lớn Hiện nay, trên thế giới có rất nhiều công ty lớn đang phát triển những giải pháp xác thực hoàn thiện hơn về cả mức độ an toàn và khả năng linh động trong việc sử dụng thẻ Có rất nhiều quốc gia đã sử dụng công nghệ này để làm chứng minh thư, thẻ rút tiền ngân hàng… Giải pháp này ngày càng được sử dụng nhiều hơn do sự phát triển về khoa học công nghệ, giá thành của thẻ cũng như của các thiết bị có liên quan giảm đi rất nhiều trong thời gian vừa qua Tổ chức chuẩn hóa quốc tế ISO đã và đang đưa ra những tiêu chuẩn thống nhất trong việc xây dựng và phát triển thẻ
c Giải pháp xác thực sử dụng nhận dạng sinh trắc học (Biometrics)
Tuy giải pháp xác thực sử dụng thẻ thông minh khá an toàn và linh hoạt nhưng trong những lĩnh vực quan trọng cần sự an toàn chặt chẽ như ngân hàng, quân sự … đòi hỏi phải có giải pháp khác an toàn hơn Và các nhà nghiên cứu đã đưa ra giải pháp xác thực sử dụng các kỹ thuật sinh trắc học để giải quyết những vấn đề đó Đây là giải pháp xác thực có tính bảo mật cao dựa trên đặc điểm sinh học của từng cá nhân, trong đó sử dụng các thủ tục như quét dấu vân tay (fingerprint scanner), quét võng mạc mắt (retinal scanner), nhận dạng giọng nói (voice-recognition), nhận dạng khuôn mặt (face-recognition) v.v
Đây là những đặc điểm đặc trưng mà không của người nào hoàn toàn giống của người nào Để xác thực trong máy tính, chúng ta phải số hóa và lưu trữ các đặc điểm này vào một cơ sở dữ liệu Ngoài ra còn phải có các thiết bị để ghi nhận các thông tin và chuyển về để đối chiếu với cơ sở dữ liệu đã có trong hệ thống
Trang 18Ở phía máy khách, người dùng sử dụng một thiết bị đầu cuối có hỗ trợ biểu mẫu dùng cho việc đăng nhập vào hệ thống hoặc trong môi trường Internet thì sử dụng trình duyệt để mở trang đăng nhập Người dùng sẽ phải điền vào biểu mẫu mật khẩu hay một thông tin nhận dạng tương tự và cung cấp mẫu sinh trắc học như dấu vân tay, hình dạng lòng bàn tay, mắt, giọng nói, chữ ký …thông qua các thiết bị nhận dạng được tích hợp trong đó Sau đó, các thông tin này sẽ được chuyển về trung tâm xác thực của hệ thống để kiểm tra Trung tâm sẽ phân tích mẫu thu được và đối chiếu xem mẫu tương ứng với mật khẩu được lưu trong cơ sở dữ liệu có trùng hay không, nếu trùng thì người dùng đăng nhập là hợp lệ Và hệ thống sẽ đưa ra các quyền hạn, tài nguyên phù hợp cho người sử dụng
! Ưu điểm
Người dùng hầu như không thể thay đổi được đặc điểm các bộ phận như dấu vân tay, mắt … được dùng trong xác thực Người dùng cũng không thể đưa những đặc điểm này cho người khác sử dụng như thẻ hay mật khẩu được Các đặc điểm sinh trắc học này không thể bị mất cắp Ngày nay với trình độ khoa học công nghệ phát triển, việc nhận biết các thông tin sinh trắc học đã có thể phân biệt được thông tin sinh trắc học của người sống và của người chết
! Nhược điểm
Khi mà các dữ liệu sinh trắc học khó có sự thay đổi như dấu vân tay, mắt được sử dụng trong các ứng dụng khác nhau thì rất dễ bị đánh cắp Trên thế giới vẫn chưa có một chuẩn chung nào cho việc số hóa các mẫu sinh trắc học Mặt khác, các nhà sản xuất khác nhau cung cấp các thiết bị xác thực mẫu sinh trắc học theo các chuẩn khác nhau không có sự thống nhất Do đó, việc trang bị hệ thống xác thực này không có tính linh động cao Có một số thông tin có thể bị thay đổi vì nhiều lý
do Ví dụ: Dấu vân tay bị thay đối do bị chấn thương, giọng nói bị méo do bị viêm họng …Do đó, việc xác thực đúng các thông tin này thường rất thấp
Ở nhiều nơi việc đưa giải pháp này vào các ứng dụng trên Internet là không thực tế Các thông tin xác thực sinh trắc học thường khá lớn trong khi băng thông đường truyền không phải ở đâu cũng đủ rộng Dẫn đến kết quả phản hồi lại rất chậm
Trang 19! Ứng dụng
Đây là một giải pháp có mức độ an toàn cao nhất và được đánh giá là có khả năng phát triển rộng rãi Khoa học công nghệ ngày càng phát triển hiện đại sẽ làm tăng thêm sự an toàn, tính tiện lợi và giảm giá thành của các thiết bị liên quan Một
số hãng phần mềm lớn đã hỗ trợ giải pháp xác thực bằng sinh trắc học như hãng Microsoft với các phiên bản hệ điều hành Windows NT, Windows 2000… Nước Anh cũng đã bắt đầu nghiên cứu và đưa vào triển khai kế hoạch sử dụng các thông tin sinh trắc học trong công việc quản lý các thẻ dịch vụ, chứng minh thư …
1.2.4 Các giao thức xác thực
Dịch vụ xác thực đặc biệt quan trọng trong việc đảm bảo cho một hệ thống hoạt động an toàn Một hệ thống thường phải xác thực một thực thể trước khi tiến hành truyền thông với thực thể đó Nhận dạng của thực thể sau đó được sử dụng để xác định quyền truy cập hay để thực hiện chống chối bỏ Trong giao thức xác thực, hai bên thường đồng ý chia sẻ một bí mật để đảm bảo tính toàn vẹn và tính bí mật
Các kỹ thuật xác thực thường dựa trên ba mô hình: có-cái-gì-đó, biết-cái-gì-đó và bạn-là-cái-gì-đó Trong mô hình xác thực bạn-biết-cái-gì-đó, người
bạn-sử dụng đưa ra tri thức về một cái gì đó ví dụ như mật khẩu hoặc một số định danh
cá nhân Trong hướng tiếp cận bạn-có-cái-gì-đó, người sử dụng chứng minh sự chiếm hữu một vật gì đó ví dụ như một khóa vật lý, một dấu hiệu, một thẻ tự nhận dạng hoặc một khóa bí mật được lưu trữ trên thẻ thông minh Mô hình bạn-là-cái-gì-đấy dựa trên một đặc điểm không thể thay đổi của người sử dụng như giọng nói, dấu vân tay hay võng mạc.Vì các kỹ thuật này không cung cấp đủ sự đảm bảo về nhận dạng nếu được sử dụng đơn lẻ, nên các hệ thống kết hợp cả ba mô hình có thể được sử dụng Các hệ thống này yêu cầu người sử dụng đưa ra hơn một loại bằng chứng để chứng minh nhận dạng của mình Ví dụ như một máy ATM (Asynchronous Transfer Mode) yêu cầu một người chứng minh cả tri thức về số nhận dạng cá nhân và sự sở hữu một thẻ để truy cập được đến tài khoản của mình
Hệ thống xác thực có thể thực hiện các giao thức xác thực phức tạp với các thiết bị kiểm tra nhận dạng của người sử dụng Các giao thức này có thể sử dụng các thao
Trang 20tác mã hóa phức tạp và sử dụng các khóa mã hóa dài để ngăn cản nhiều loại tấn công truyền thống Sau đây là một số giao thức xác thực phổ biến:
a Giao thức thử thách và trả lời
Giao thức thử thách và trả lời cho phép người truy nhập tự xác thực mình với
hệ thống bằng cách chứng minh hiểu biết của mình về giá trị mật mã bí mật mà không yêu cầu người truy nhập tiết lộ bí mật Hệ thống xác thực đưa ra cho người truy nhập một số được tạo ra một cách ngẫu nhiên được gọi là thử thách Người truy nhập nhập số thử thách và giá trị mật để hàm mật mã tính ra câu trả lời Hệ thống xác thực nét nhận dạng của người truy nhập nếu câu trả lời là giá trị mong đợi Bởi
vì thử thách là một số ngẫu nhiên, giao thức thử thách – trả lời cung cấp một lá chắn
có hiệu quả chống lại sự tấn công lặp lại
Hình 1.1 Giao thức thử thách và trả lời
b Giao thức xác thực không tiết lộ bí mật
Cho phép người sử dụng tự xác thực với một hệ thống bằng cách chứng minh tri thức về một giá trị bí mật mà không yêu cầu người sử dụng tiết lộ bí mật Hệ
Trang 21thống xác thực gửi cho người sử dụng một số bất kỳ Người sử dụng sẽ sử dụng giá trị bất kỳ đó và giá trị bí mật để tính toán một giá trị trả lời Hệ thống xác nhận nhận dạng của người sử dụng nếu giá trị trả lời là đúng
c Giao thức biến đổi mật khẩu
Một người sử dụng xử lý mật khẩu của mình thông qua một hàm băm và gửi kết quả cho hệ thống xác thực Hệ thống so sánh giá trị băm với giá trị băm đúng
mà nó lưu trữ, người sử dụng sẽ được xác thực nếu hai giá trị này giống nhau Nếu
hệ thống lưu trữ mật khẩu thay vì lưu trữ các giá trị băm của nó, nó phải tính toán giá trị băm trước khi thực hiện so sánh Các giao thức này ngăn chặn việc ăn cắp mật khẩu trên đường truyền nhưng lại dễ bị đánh lừa bởi các cuộc tấn công lặp lại
One-time password (OTP): mật khẩu dùng một lần, chỉ có hiệu lực tại phiên hiện tại Ví dụ như các thiết bị sau:
Hình 1.2 Thiết bị OTP của RSA
Trang 22Thiết bị OTP của RSA, khi giao dịch người dùng sẽ nhập mã số hiện tại có trên thiết bị Mã số sẽ thay đổi liên tục theo thời gian
Hình 1.3 Thẻ ma trận xác thực của ACB
Đơn giản hơn như là thẻ ma trận xác thực của ACB, khi giao dịch người dùng sẽ nhập mã số tại một số ô mà hệ thống yêu cầu
Hình 1.4 SMS OTP của VTC Pay
Hay như SMS OTP của VTC Pay, khi giao dịch mã số sẽ được gửi về điện thoại của khách hàng
e Giao thức sử dụng chứng chỉ số
Là một dạng khác của giao thức xác thực không tiết lộ bí mật trong đó giá trị
mã hóa bí mật là một khóa riêng và hệ thống xác thực sử dụng khóa công khai tương ứng để kiểm tra trả lời
Khác với chứng thư (certificate) và khoá công khai (public key) được công khai, khoá bí mật (private key) của người dùng thường được chứa trong một thiết bị
Trang 23đặc biệt, có thể là usb token hoặc thẻ thông minh có chứa chip xử lý Khoá bí mật không được trích rút ra khỏi thiết bị này mà thiết bị chỉ cung cấp ra ngoài các giao diện lập trình ứng dụng (API) để thực hiện ký/mã hóa dữ liệu Dữ liệu khi ký hoặc
mã hóa sẽ được thực hiện ngay trong thiết bị này
Quá trình xác thực sử dụng chứng thư số diễn ra như sau:
• Thông tin đăng nhập bao gồm tên đăng nhập/mật khẩu được người dùng nhập vào
• Người dùng sử dụng khoá bí mật của mình để ký lên thông tin đăng nhập này
• Thông tin đăng nhập kèm theo chữ ký được gửi lên máy chủ Máy chủ sử dụng khoá công khai của người dùng để kiểm tra tính hợp lệ của chữ ký, nếu chữ ký hợp lệ mới tiếp tục kiểm tra mật khẩu được nhập vào
1.3 Giải pháp đăng nhập một lần (Single sign-on)
1.3.1 Đăng nhập một lần là gì ?
Ngày nay, một người sử dụng có thể sở hữu hay truy cập rất nhiều tài nguyên thông tin khác nhau Vấn đề phức tạp nảy sinh khi mỗi hệ thống quản lý tài nguyên lại cung cấp một cơ chế xác thực người dùng riêng Việc đăng nhập để truy xuất vào tài nguyên của người dùng có thể phát sinh các vấn đề như quên thông tin xác thực
do sử dụng nhiều tài khoản và mật khẩu trên các ứng dụng khác nhau hay việc dùng một tài khoản và mật khẩu cho nhiều hệ thống dẫn đến nguy cơ mất an toàn Đăng nhập một lần chính giải pháp để giải quyết các vấn đề trên
Đăng nhập một lần có thể được định nghĩa như là một trài nghiệm người dùng khi chỉ cần đăng nhập một lần và có thể điều hướng truy xuất nhiều ứng dụng liên tục mà không cần phải nhập thông tin cho từng ứng dụng Điều này thực sự cần thiết với những tổ chức có nhiều ứng dụng đang hoạt động trên các nền dịch vụ khác nhau Đăng nhập một lần giúp người sử dụng dễ dàng trong việc đăng nhập
Trang 24một ứng dụng và truy xuất tất cả các ứng dụng khác, làm giảm nhu cầu người sử
dụng phải nhớ rất nhiều thông tin đăng nhập và mật khẩu
Hình 1.5 Mô hình trước và sau khi áp dụng đăng nhập một lần
Ví dụ: Người dùng sử dụng nhiều dịch vụ: Email, forum, web…khi chưa có đăng
nhập một lần thì với mỗi dịch vụ ta phải nhập thông tin để xác thực Khi một tổ
chức đã thống nhất sử dụng đăng nhập một lần cho hệ thống của họ thì người dùng
chỉ phải đăng nhập một lần vào bất kì ứng dụng nào trong hệ thống thì khi dùng các
ứng dụng khác người dùng không phải đăng nhập lại
Với hệ thống có nhiều website và ứng dụng thì việc sử dụng đăng nhập một
lần là khá cần thiết nhằm đem lại nhiều thuận tiện cho người dùng và tăng tính năng
bảo mật Đăng nhập một lần giúp xác thực tập trung trên một máy chủ duy nhất
thông qua giao thức đã được mã hóa Trình duyệt sử dụng HTTP chuyển hướng
trình duyệt của người dùng giữa các ứng dụng mà không cần đăng nhập tài khoản
và mật khẩu
Đăng nhập một lần chỉ được triển khai sau khi đã xây dựng được hệ thống
xác thực và phân quyền Đăng nhập một lần có nhiệm vụ cung cấp cho người dùng
Trang 25quyền truy cập nhiều tài nguyên Web, các ứng dụng trong phạm vi cho phép chỉ với một lần đăng nhập (xác thực) Về phân quyền (Access Control), có 2 luật (rules) chính:
- Authentication (xác thực): Là quá trình để định danh một người dùng có hợp lệ hay không (Thường thể hiện qua một khung đăng nhập)
- Authorization (uỷ quyền): Là quá trình kiểm chứng một người dùng đã được xác thực có đủ quyền truy cập vào tài nguyên (mà người dùng) yêu cầu hay không Tài nguyên yêu cầu có thể phụ thuộc vào Policy domain (cấp quyền theo domain) hoặc một policy đặc biệt nào đó (ví dụ cấp quyền theo cấp)
1.3.2 Phân loại đăng nhập một lần
Hầu hết các sản phẩm đăng nhập một lần có sẵn trên thị trường có thể được phân thành hai loại dựa trên kiến trúc:
- Dựa trên web (còn gọi là Enterprise SSO hay ESSO)
- Không dựa trên web
Trong khuôn khổ của luận văn, học viên chỉ tập trung vào tìm hiểu và phân tích đăng nhập một lần dựa trên web Một SSO dựa trên web được phân loại tiếp theo:
• Đơn miền (Single Domain): ví dụ Khi xác thực thành công vào tên miền: domain.com, người dùng đồng thời được xác thực vào các miền phụ : sub-domain.domain.com tồn tại
• Đa miền (Multi Domain): ví dụ Khi xác thực thành công vào facebook.com, người dùng đồng thời được xác thực vào example.com
• Các ứng dụng và sản phẩm của bên thứ ba (Applications vs Third-Party Products): ví dụ SSO giữa Oracle Access Manager và IBM WebSphere Application Server
Ở 2 dạng đầu tiên, SSO thường sử dụng Cookie để nhận diện, máy chủ web (webserver hay webgate) gửi cookie đã được mã hóa cho trình duyệt đã xác thực
Trang 26thành công, cookie này sẽ là chìa khóa sử dụng cho các xác thực tới các tài nguyên khác hoặc cho các xác thực có cùng cấp
Phần Cookie được mã hóa có thể bao gồm các thông tin: session, distinguished name của người dùng đã xác thực thành công, IP của client đã yêu cầu, thời điểm khởi tạo cookie, thời điểm sửa đổi cookie các thành phần không mã hóa của cookie có thể bao gồm: thời gian hết hạn (expired time), domain hoạt động, SSL/ Httponly…
Thuật toán mã hóa được kiến nghị hiện nay là AES, bên cạnh là các thuật toán kém bền vững hơn nhưng thông dụng như MD5-salt, RC4, RC6 vẫn được sử dụng phổ biến trong các mã hóa cookie/ session
! Đơn miền (Single Domain)
Cookie Path được cấu hình để dùng chung cho mọi miền phụ: domain.com (bao gồm dấu ở đầu)
Hình 1.6 Mô hình Single Domain SSO
Sử dụng một miền chính và các miền phụ trợ, người dùng sẽ được xác thực chung nhưng sẽ chỉ truy cập được đến tài nguyên mà các miền ấn định chính sách
Trang 27riêng cho từng người dùng, nhóm người dùng cụ thể Nếu người dùng truy cập vào các dữ liệu không được phép thì sẽ diễn ra theo các bước:
• Bước 1: Người dùng sử dụng trình duyệt của mình để truy cập vào một nguồn tài nguyên được bảo vệ bởi một chính sách truy cập trong các miền phụ
• Bước 2: Miền phụ gửi một phản ứng để người dùng trình duyệt để chuyển hướng đến miền chính để xác thực
• Bước 3: Truy cập miền chính qua thành phần xác thực người dùng, quyền truy cập để kiểm tra và cấp phép
• Bước 4: Gửi thông tin xác thực và ủy quyền trở lại trình duyệt của người sử dụng, sau khi nhận được thông tin từ các công cụ truy cập, cookie được thiết lập trên trình duyệt của người dùng cho các tên miền chính
Khi người dùng nhấp vào nút đăng xuất trên một trang web trong miền phụ các máy chủ web trong miền phụ sẽ hủy các cookie đặt cho người sử dụng và chuyển hướng người dùng đến miền chính với các thông hủy cookie người dùng Các máy chủ web trong tên miền chính hủy các cookie của nó lưu cho người sử dụng và người sử dụng thoát khỏi ứng dụng
! Đa miền (Multi Domain)
Multi Domain SSO cho phép người dùng truy cập vào nhiều domains/hosts sau 1 lần đăng nhập Một ứng dụng xác thực chính sẽ cung cấp các cookie hợp lệ cho mỗi domain Chẳng hạn người dùng truy cập vào gmail.com, khi đó toàn bộ services của Google, như Google.com, Picasa, Blogspot… đều nhận diện tính xác thực cho người dùng đó
Tuy nhiên cookie không thể được thiết đặt cho liên miền (across domains) do chính sách bảo mật của hầu hết trình duyệt, do đó một miền chính sẽ được chọn để xác thực ở mọi quy trình, gọi chung là master domain Với mỗi miền khác mà người
Trang 28dùng thực hiện quá trình xác thực, mỗi webgate của hệ thống đó sẽ chuyển hướng tới master domain
Master domain sẽ hoạt động như quy trình của Single Domain SSO, nó chính
là *proxy* để truyền tải cookie hợp lệ về cho mỗi domain có yêu cầu xác thực
Hình 1.7 Mô hình Multi domain SSO
Hoạt động
• Ta thiết đặt master domain, login-service.domain.com
• Mỗi một domain nằm trong group SSO đều có mã thực thi đăng nhập (script login) riêng
• Mọi hệ thống trên mỗi domain đều sử dụng chung cơ sở dữ liệu phiên (Session Database)
• Khi mỗi máy khách (Client) yêu cầu người dùng xác thực, Webgate của nó
sẽ chuyển hướng tới master domain có chứa dịch vụ đăng nhập (login service) Nếu người dùng chưa đăng nhập, master domain sẽ triệu gọi script login của client để thực hiện việc login vào master domain Khi người dùng
Trang 29đã xác thực, một session sẽ được tạo trong database và master domain sẽ cung cấp session id cho client yêu cầu để có thể tạo cookie theo session đó Các thuật toán mã hóa session session id phải được dùng chung (RFC 4122) Master service chỉ xử lý & chuyển hướng tới những miền nằm trong whilelist Các domain có thể ở nhiều dạng khác nhau, login.domain.com, domain.com/service, client.abc.com…
• Đăng xuất hệ thống (logout): Đây là quá trình quan trọng vì mỗi quá trình logout ở một client chỉ có hiệu lực với cookie của client đó, cần thiết đặt một timeout phù hợp cho cookie hay thiết đặt cơ chế xoá cookie ở mọi domain liên quan, có thể xóa luôn session ở database nhưng lưu ý session có thể tạo lại bởi tính năng Ghi nhớ đăng nhập
Các SSO được sử dụng phổ biến trên web hiện nay:
• OpenID: Hệ thống đăng nhập một lần không có tính tập trung Đối với
những trang web có sử dụng OpenID thì người sử dụng không cần phải nhớ các thông tin về username và password cho riêng trang đó nữa Thay vào đó
họ chỉ cần đăng ký trước 1 tài khoản OpenID tại một trong những nhà cung cấp OpenID, hay thường gọi là i-broker Do OpenID không mang tính tập trung nên bất kỳ trang web nào cũng có thể sử dụng được OpenID như là một cách đăng nhập cho người dùng Các hệ thống lớn đang sử dụng là : Yahoo, Google…
Trang 30Hình 1.8 Mô hình OpenID
• Open Single Sign-On (OpenSSO) hoạt đông dựa trên Token: Là một sản
phẩm open source của SUN Nó là một sản phẩm đơn lẻ, kết hợp các tính năng của Sun Java System Access Manager, Sun Java System Fedearation Manager và Sun System SAML v2 Java Plugin
Trang 31Hình 1.9 Mô hình OpenSSO
• Java Open Single Sign On ( JOSSO)
• Central Authenticate Service (CAS) hoạt đông dựa trên Ticket
! Các ứng dụng và sản phẩm của bên thứ ba
Các ứng dụng và sản phẩm của bên thứ ba (Applications vs Third-Party Products) Vd: SSO giữa Oracle Access Manager và IBM WebSphere ApplicationServer
Hay phổ biến như Microsoft Office SharePoint Server
1.3.3 Đặc điểm của SSO dựa trên web
Một SSO dựa trên web đúng nghĩa phải là một dịch vụ chứng thực tập trung đáp ứng đồng thời các yêu cầu sau:
Trang 32• Đăng nhập một lần với một tài khoản duy nhất để chứng thực vào các ứng dụng web khác nhau sử dụng dịch vụ SSO Các ứng dụng web có thể chạy trên nhiều domain khác nhau
Ví dụ: khi bạn đăng nhập vào hotmail.com thì bạn sẽ không cần đăng nhập một lần nữa khi vào msn.com
• SSO dựa trên web yêu cầu một hệ thống mạng (network) ổn định và đảm bảo vận hành xuyên suốt
• Phải sử dụng SSL và các phương thức mã hóa bất đối xứng Nếu một dịch vụ chứng thực mà không dùng SSL cho các phiên chứng thực thì đều bị coi là không an toàn Và đây cũng là một mục tiêu quan trọng của một ứng dụng web khi dùng dịch vụ chứng thực tập trung
• Đăng xuất toàn bộ hệ thống SSO khi click vào nút [Đăng xuất] hoặc tự động đăng xuất khi tắt trình duyệt
• Trong SSO cũng như chứng thực thông thường, đều cần cơ sở dữ liệu để lưu trữ thông tin người dùng Còn SSO hoàn toàn không dùng cơ sở dữ liệu để lưu vết session SSO phải đảm nhiệm một nhiệm vụ rất lớn trong việc chứng thực toàn bộ người dùng cho các ứng dụng web Do vậy vấn đề bảo mật luôn đặt lên hàng đầu, nếu SSO gặp một sự cố nào đó thì toàn bộ các đối tác (ứng dụng web dùng SSO) sẽ không thể đăng nhập được
1.3.4 Nguyên lý hoạt động của SSO dựa trên web
• Bước 1: Người dùng đăng nhập vào tài khoản tại url của dịch vụ xác thực
đăng nhập một lần (SSO Authentication Service) Sau khi đăng nhập thành công sẽ chuyển sang bước 2
• Bước 2: Authentication Service sẽ thực hiện việc sinh ra Authentication
Token Đây là một chuỗi chứa thông tin chứng thực (không chứa mật khẩu)
và thông thường được mã hóa bằng DES hoặc RSA
Trang 33• Bước 3: Authentication Token sẽ được truyền tải trên http (không mã hóa
SSL) giữa ứng dụng web (đối tác - partner) và Authentication Service Trên mỗi ứng dụng web sẽ có một SSOAgent, có nhiệm vụ xử lý AuthenticationToken và kiểm tra việc chứng thực Trong quá trình này phiên của cookie sẽ được tạo tại trình duyệt của người dùng đăng nhập nếu SSOAgent kiểm tra Authentication Token thành công
• Bước 4: [Đăng xuất – Sign Out]: Khi chứng thực tự động vào một đối tác, Authentication Service sẽ lưu lại thông tin đối tác này, khi người dùng click [Đăng xuất] thì Authentication Service sẽ lần lượt Đăng Xuất (xóa toàn bộ phiên cookie của các đối tác)
1.3.5 Các vấn đề an toàn với đăng nhập một lần dựa trên web
! Lỗ hổng an ninh
Khi đề cập đến lỗ hổng bảo mật và rủi ro, mối quan tâm chủ yếu được tính đến là an toàn của hệ thống với các thuộc tính quan trọng của an toàn thông tin: Tính bí mật, tính toàn vẹn, tính xác thực, tính sẵn sàng Sự tồn tại của các lỗ hổng cho thấy hệ thống có nguy cơ bị các hacker lợi dụng lỗ hổng này có thể được khai thác các thông tin người dùng trong cuộc tấn công Các cuộc tấn công có tính chất khác nhau tùy thuộc vào mức độ nghiêm trọng của các lỗ hổng này đang được khai thác
! Các rủi ro
• Rủi ro mật khẩu yếu: Sử dụng mật khẩu là phương pháp xác thực được sử dụng phổ biến nhất hiện nay Một mật khẩu được sử dụng nhiều lần và không được thay đổi trong thời gian dài để truy cập vào các ứng dụng Một phương pháp thông thường dùng để tấn công các mật khẩu yếu là đoán mật khẩu bằng cách sử dụng phương pháp tấn công từ điển Việc sử dụng mật khẩu có ý nghĩa quan trọng khi
Trang 34cho phép người dùng đăng nhập vào các ứng dụng Có thể khắc phục bằng cách thiết lập các chính sách mật khẩu mạnh
• Rủi ro của việc triển khai ra mạng Internet: Nếu một người sử dụng sử dụng một trình duyệt để đăng nhập tài khoản dịch vụ SSO ở sân bay, bỗng dưng hệ thống bị treo làm người dùng không thể thoát ra được Người dùng bỏ đi và sau khi hệ thống máy tính hoạt động bình thường trở lại thì bất kì ai tiếp xúc vật lí với máy tính đó có thể truy cập trái phép vào các thông tin của người dùng và điều này càng đặc biệt nguy hiểm khi sử dụng cho các mục đích bất hợp pháp Có thể tránh nó bằng cách đặt thời gian kết thúc phiên đăng nhập
! Các kiểu tấn công vào hệ thống SSO
• Tràn bộ đệm
Một lỗi lập trình có thể gây ra một ngoại lệ khi truy nhập bộ nhớ máy tính và chương trình bị buộc kết thúc, khi người dùng có ý phá hoại, họ có thể lợi dụng lỗi này để phá vỡ an ninh hệ thống
Các lỗi tràn bộ đệm có thể làm cho một tiến trình đổ vỡ hoặc cho ra các kết quả sai Các lỗi này có thể được kích hoạt bởi các dữ liệu vào được thiết kế đặc biệt
để thực thi các đoạn mã phá hoại hoặc để làm cho chương trình hoạt động một cách không như mong đợi Bằng cách đó, các lỗi tràn bộ đệm gây ra nhiều lỗ hổng bảo mật (vulnerability) đối với phần mềm và tạo cơ sở cho nhiều thủ thuật khai thác (exploit)
Trang 35Kẻ tấn công lợi dụng điều này để cướp phiên đang hoạt động của người dùng
và làm cho người dùng không kết nối được với hệ thống Sau đó kẻ tấn công mạo danh người dùng bằng phiên vừa cướp được, truy cập đến máy chủ mà không cần phải đăng nhập vào hệ thống Khi cướp được phiên của người dùng, kẻ tấn công có thể vượt qua quá trình chứng thực, có thể ghi lại phiên làm việc và xem lại mọi thứ
đã diễn ra Đối với cơ quan pháp lý, có thể dùng làm bằng chứng để truy tố, đối với
kẻ tấn công, có thể dùng thu thập thông tin như định danh người dùng và mật khẩu Điều này gây nhiều nguy hại đến người dùng.Vấn đề này càng đặc biệt nghiêm trọng với hệ thống SSO vì khi chiếm được phiên kẻ tấn công có thể truy cập vào được các ứng dụng khác để khai thác thông tin
Hình 1.10 Ví dụ về session hijacking
• Man in the Middle
Trang 36Hoạt động bằng cách thiết lập các kết nối đến máy tính nạn nhân và chặn bắt các thông điệp giữa chúng Trong trường hợp bị tấn công, nạn nhân cứ tin tưởng là
họ đang truyền thông một cách trực tiếp với nạn nhân kia, trong khi đó sự thực thì các luồng truyền thông lại bị thông qua máy chủ của kẻ tấn công Và kết quả là các máy chủ này không chỉ có thể thông dịch dữ liệu nhạy cảm mà nó còn có thể gửi xen vào cũng như thay đổi luồng dữ liệu để kiểm soát sâu hơn những nạn nhân của
nó Một số kiểu tấn công Man in the Middle hay được sử dụng : ARPCache, DNS Spoofing, chiếm quyền điều khiển (hijacking) HTTPsession,
Hình 1.11 Mô hình tấn công Man in the middle
• Giả mạo DNS
Giả mạo DNS là một kỹ thuật MITM được sử dụng nhằm cung cấp thông tin DNS sai cho một máy chủ để khi người dùng duyệt đến một địa chỉ nào đó Giả mạo DNS ID: Mỗi truy vấn DNS được gửi qua mạng đều có chứa một số nhận dạng duy nhất, mục đích của số nhận dạng này là để phân biệt các truy vấn và đáp trả chúng Điều này có nghĩa rằng nếu một máy tính đang tấn công có thể chặn một truy vấn DNS nào đó được gửi đi từ một thiết bị cụ thể, thì tất cả những gì chúng ta
Trang 37cần thực hiện là tạo một gói giả mạo có chứa số nhận dạng để gói dữ liệu đó được chấp nhận bởi mục tiêu
Hình 1.12 Giả mạo DNS
1.3.6 Tăng cường an toàn khi sử dụng SSO dựa trên web
Các sản phẩm SSO có nhiều tính năng tăng cường tính bảo mật cho hạ tầng của các đơn vị Tuy nhiên các sản phẩm SSO không thể đảm bảo tất cả tính an toàn cho một tổ chức nếu thực hiện không cẩn thận SSO còn làm xuất hiện thêm các lỗ hổng bảo mật mới Do vậy một hệ thống SSO cần được tăng cường bởi các chính sách:
• Giảm sự cần thiết cho người sử dụng khi phải nhớ nhiều thông tin đăng nhập
và mật khẩu do đó làm giảm rủi ro trong việc người sử dụng tránh quên mật khẩu bằng cách viết ra giấy hoặc lưu vào một file văn bản
• Thực thi và quản lý các chính sách bảo mật trên các ứng dụng tham gia SSO một cách tập trung
• Thi hành các chính sách về mật khẩu như: Độ dài mật khẩu tối thiểu, mật khẩu phải có sử dụng kết hợp cả chữ hoa, chữ thường, chữ số và các kí tự đặc biệt…
Trang 38• Có cơ chế khôi phục mật khẩu bị quên như lựa chọn và trả lời câu hỏi bí mật
• Khóa phiên đăng nhập sau một số lần đăng nhập không thành công liên tiếp
• Thi hành chính sách đổi mật khẩu lần đầu truy nhập và sau một thời gian sử dụng nhất định với các quản trị
• Lưu giữ các mật khẩu đã được sử dụng và đảm bảo mật khẩu mới không trùng với mật khẩu đã được sử dụng
• Hết hạn mật khẩu sau một thời gian nhất định
• Phiên làm việc kết thúc sau một thời gian không sử dụng ứng dụng liên tục
• Tăng cường hệ thống giám sát và báo cáo
1.4 Kết luận chương
Như vậy, trong chương này đã trình bày một cách ngắn gọn và chi tiết về các giải pháp xác thực người dùng cũng như cơ chế đăng nhập một lần Tác giả luận văn đã tập trung đi sâu phân tích các đặc điểm, nguyên lý hoạt động cũng như những vấn đề an toàn đặt ra đối với mô hình đăng nhập một lần dựa trên web trước khi trình bày chi tiết về một mô hình đăng nhập một lần dựa trên web phổ biến đó là OpenID ở chương sau
Trang 39CHƯƠNG 2 – TỔNG QUAN VỀ OPENID
Hình 2.1 Logo đặc trưng của OpenID
Trong chương này luận văn sẽ đi sâu tìm hiểu về OpenID, một chuẩn mở dành cho việc xác thực sử dụng đăng nhập một lần Các thành phần trong hệ thống,
cơ chế hoạt động và trao đổi thông tin giữa các thành phần sẽ được trình bày chi tiết Cuối chương sẽ là giới thiệu về sự mở rộng của OpenID khi kết hợp với OAuth
2.1 OpenID là gì
OpenID là một dịch vụ chia sẻ định danh, một hệ thống đăng nhập một lần không có tính tập trung, cho phép người sử dụng đăng nhập nhiều website khác nhau chỉ bằng một định danh số, tránh việc sử dụng các tài khoản và mật khẩu khác nhau cho mỗi website OpenID là chuẩn mở, miễn phí và phân quyền cho phép người dùng điều khiển được các thông tin cá nhân của mình công khai trên Internet
Một OpenID là dạng liên kết URL, URL này có thể là tên miền của website hoặc URL của nhà cung cấp định danh OpenID Khi đăng nhập với tài khoản OpenID, bạn phải đăng nhập vào Nhà cung cấp dịch vụ định danh để kiểm tra tính hợp lệ của tài khoản OpenID là một phương thức giúp bạn xác thực tài khoản đăng
ký tại một nhà cung cấp duy nhất mà bạn tin tưởng và cho phép người dùng thực hiện việc đăng nhập vào các lần sau
Trang 40Tháng 6/2005, các cuộc thảo luận giữa người dùng cuối và nhà phát triển từ công ty phần mềm NetMesh về khả năng hợp tác giữa OpenID và LID (Một giao thức tương tự được phát triển bởi NetMesh) Kết quả của sự hợp tác đó là giao thức Yadis được phát triển và giữ tên gọi mới là OpenID Giao thức OpenID được công
bố tháng 24/10/2005, sau khi hội thảo Internet Identity Workshop diễn ra vài ngày
Tháng 12, các nhà phát triển SXIP (Simple Extensible Identity Protocol) và XRI (Một chuẩn nhận dạng mới trên Internet) và bắt đầu tích hợp vào OpenID, thay
vì nhận dạng bằng URL ban đầu, OpenID đã phát triển thành một chuẩn nhận dạng đầy đủ cho danh tính người sử dụng Phiên bản OpenID 2.0 xuất hiện
Ngày 31/1/2007, Symantec công bố hổ trợ OpenID trong trang dịch vụ và sản phẩm Một tuần sau, ngày 6/2/2007, Microsoft kết hợp với JanRain, Sxip, và VeriSign (Những tổ chức tham gia phát triển OpenID) tuyên bố hỗ trợ OpenID và xem xét khả năng tương tác giữa OpenID và MS CardSpace (Một phương thức nhận dạng của Microsoft), cùng với đó là việc xem xét các vấn đề bảo mật cho sự phát triển của OpenID Giữa tháng 2, AOL hổ trợ thử nghiệm OpenID
OpenID sau đó được các đại gia như Yahoo, Google quan tâm, kéo theo đó là các mạng xã hội và các website có lượng người sử dụng lớn cũng bắt đầu hổ trợ OpenID (Trở thành Provider hoặc WebApp hỗ trợ OpenID)
Ngày 26/02/2014, OpenID Connect (thế hệ thứ ba) chính thức được công bố,
đó là sự kết hợp giữa định danh, xác thực với OAuth 2.0 làm giao thức cơ sở