1. Trang chủ
  2. » Công Nghệ Thông Tin

Nghiên cứu thử nghiệm các cơ chế xác thực sử dụng OpenID và ứng dụng

98 566 3

Đ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

Định dạng
Số trang 98
Dung lượng 8,65 MB

Nội dung

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 1

MỤ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 2

2.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 3

Lờ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 4

Danh 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 5

Danh 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 6

Hì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 7

PHẦ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 9

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)

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 10

Xá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 11

1.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 12

toà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 13

Thiế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 14

Hiệ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 17

Cá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 20

tá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 21

thố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 22

Thiế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 24

mộ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 25

quyề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 26

thà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 27

riê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 28

dù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 30

Hì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 31

Hì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 34

cho 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 35

Kẻ 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 36

Hoạ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 37

cầ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 39

CHƯƠ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 40

Thá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ở

Ngày đăng: 25/07/2017, 21:47

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Gail-Joon Ahn, John Lam (2005), Managing privacy preferences for federated identity management. New York, USA: ACM Press Sách, tạp chí
Tiêu đề: Managing privacy preferences for federated identity management
Tác giả: Gail-Joon Ahn, John Lam
Năm: 2005
[2] JA. Stanko (2007), Single sign-on over the internet using public-key cryptography, US Patent 7,246,230 Sách, tạp chí
Tiêu đề: Single sign-on over the internet using public-key cryptography
Tác giả: JA. Stanko
Năm: 2007
[3] Stefan Brands (2007), The problem(s) with OpenID, http://www.untrusted.ca/cache/openid.html Link
[4] Sxip Identity (2011), Schema for OpenID Attribute Exchange http://www.axschema.org/types/ Link
[5] Secure implementation of Enterprise single sign-on product in an organization, http://www.sans.org/reading-room/whitepapers/authentication/secure-implementation-enterprise-single-sign-on-product-organization-1520 Link
[6] Tim Berners-Lee (2005), Uniform Resource Identifier (URI): Generic Syntax, http://www.apps.ietf.org/rfc/rfc3986.html Link
[8] LiveJournal Inc (1999), Live Journal: http://www.livejournal.com/identity/login.bml?type=openid Link
[9] D. Recordon (2008), Openid provider authentication policy extension 1.0, http://www.immagic.com/eLibrary/TECH/OPENIDUS/O081230P.pdf[10] E. Rescorla (1999), Diffie-Hellman Key Agreement Method RFC-2631:http://www.ietf.org/rfc/rfc2631.txt Link
[11] Leveraging OpenID within an IDaaS Model http://openid.net/2012/07/26/leveraging-openid-within-an-idaas-model/ Link
[12] A high-level IDaaS metric: if and when moving ID in the Cloud http://cloudbestpractices.net/a-high-level-idaas-metric-if-and-when-moving-id-in-the-cloud/ Link

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