AUTHENTICATION
I.Giới thiệu authentication
1.Authentication là gì?
2.Các nhân tố cho xác thực
II.Các giao thức nền tảng cho Xác thực:
2.1. Giao thức PAP Password Authentication Protocol (PAP)
2.2. Giao thức Xác thực CHAP (Challenge Handshake
Authentication Protocol)
2.3. Giao thức TCACS và RADIUS
2.4. Giao thức xác thực Kerberos
2.5 Giao thức Xác thực LDAP(Light Weight Access Protocol)
III.Một số mô hình xác thực:
1. Mô hình user/password
2. Hệ thống đăng nhập một lần Single sign-on (SSO)
3. Mô hình PKI (Public Key Infrastructure )
Nhóm MMT1.5
I.Giới thiệu Authentication:
1.1.Authentication là gì?
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 (provenance) 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ể.
1.2.Các nhân tố dung cho xác thực:
Trong an ninh máy tính (computer security) thường dùng nhận dạng số
(digital identity)
Trong các lĩnh vực khác thường dùng các nhân tố nhận dạng đặc điểm con
người(vân tay, chứng minh nhân dân,hình…),vật(tên gọi ,số hiệu…)
Đôi khi xác thưc chỉ dùng 1 nhân tố xác thực hoặc kết hợp nhiều nhân tố lại
được sinh ngẫu nhiên vào thuật toán băm Message Digest 5 (MD5).
• Giá trị kết quả sau khi tính toán hàm băm được gửi trả lại cho Challenger
(Access server) trong một gói CHAP Response (Type 2) chứa chuỗi băm,
tên chứng thực của caller và cuối cùng là ID (Sequence Number) được lấy
từ gói Challenge.
Đồ án an toàn và bảo mật mạng Page 3
• Khi nhận được gói Response Type 2, Challenger sẽ sử dụng ID để tìm gói
Challenge nguyên thủy.
• username của caller (A) được sử dụng để tìm kiếm mã mật CHAP từ một
local database, hay một RADIUS server hoặc một TACACS+ server.
• ID, giá trị Challande gốc được sinh ngẫn nhiên và giá trị CHAP ngẫu nhiên
ban đầu và mã mật của được đưa vào xử lỷ bởi hàm băm MD5.
• Chuỗi băm kết quả sau khi tính toán sau đó được so sánh với giá trị nhận
được trong gói Response.
• Nếu 2 chuỗi là giống nhau thì quá trình chứng thực CHAP đã thành công và
các gói Type 3 được gửi đến caller chứa ID. Điều này có nghĩa là kết nối đã
được chứng thực hợp lệ.
• Nếu chứng thực CHAP thất bại, một gói tin Type 4 sẽ được gửi đến caller
trong đó chứa original ID, xác nhận quá trình chứng thực là không thành
công.
RFC1994 http://www.ietf.org/rfc/rfc1994.txt
Đồ án an toàn và bảo mật mạng Page 4
2.3 Giao thức TCACS và RADIUS
Tổng quan về TACACS
TACACS là giao thức được chuẩn hóa sử dụng giao thức hướng kết nối
(connection-oriented) là TCP trên port 49.
TACACS có các ưu điểm sau:
•Với khả năng nhận gói reset (RST) trong TCP, một thiết bị có thể lập tức báo cho
đầu cuối khác biết rằng đã có hỏng hóc trong quá trình truyền.
•TCP là giao thức mở rộng vì có khả năng xây dựng cơ chế phục hồi lỗi. Nó có thể
Một số ưu điểm của RADIUS là:
Đồ án an toàn và bảo mật mạng Page 5
•RADIUS có phần overhead ít hơn so với TACACS vì nó sử dụng UDP, trong
phần overhead không có địa chỉ đích, port đích.
•Với cách thức phân phối dạng source code, RADIUS là dạng giao thức hoàn toàn
mở rộng. Người dùng có thể thay đổi nó để làm việc với bất kì hệ thống bảo mật
hiện có.
•RADIUS yêu cầu chức năng tính cước (accounting) mở rộng.
RADIUS thường được dùng để tính cước dựa trên tài nguyên đã sử dụng. Ví dụ
như ISP sẽ tính cước cho người dùng về chi phí kết nối. Ta có thể cài đặt RADIUS
Accounting mà không cần sử dụng RADIUS để xác thực và cấp quyền. Với chức
năng accounting mở rộng, RADIUS cho phép dữ liệu được gửi từ các thiết bị xuất
phát cũng như là thiết bị đích, từ đó giúp ta theo dõi việc sử dụng tài nguyên (thời
gian, số lượng các gói tin, số lượng byte, ) trong suốt phiên làm việc.
Hoat động:
Giao thức Remote Authentication Dial In User Service (RADIUS) được định
nghĩa trong RFC 2865 được đưa ra với định nghĩa: Với khả năng cung cấp xác
thực tập trung, cấp phép và điều khiển truy cập (Authentication, Authorization, và
Access Control – AAA) cho các phiên làm việc với SLIP và PPP Dial-up – như
việc cung cấp xác thực của các nhà cung cấp dịch vụ Internet (ISP) đều dựa trên
giao thức này để xác thực người dùng khi họ truy cập Internet. Nó cần thiết trong
tất cả các Network Access Server (NAS) để làm việc với danh sách các username
và password cho việc cấp phép, RADIUS Access-Request sẽ chuyển các thông tin
tới một Authentication Server, thông thường nó là một AAA Server (AAA –
Authentication, Authoriztion, và Accounting). Trong kiến trúc cua hệ thống nó tạo
ra khả năng tập trung các dữ thông tin của người dùng, các điều kiện truy cập trên
một điểm duy nhất (single point), trong khi có khả năng cung cấp cho một hệ
thống lớn, cung cấp giải pháp NASs.
Khi một user kết nối, NAS sẽ gửi một message dạng RADIUS Access-Request tới
máy chủ AAA Server, chuyển các thông tin như username và password, thông qua
đảm bảo an toàn, chống nghe lén hay tấn công dùng lại trên mạng. Nó cũng đảm
bảo tính toàn vẹn và tính mật cho thông tin truyền đi, sử dụng mã hoá bí mật như
DES, triple DES.
Nội dung
Kerberos không xây dựng các giao thức chứng thực phức tạp cho mỗi máy chủ
mà hoạt động dựa trên một máy chủ chứng thực tập trung KDC (Key Distribution
Centre). KDC cung cấp vé cho việc chứng thực người dùng và bảo mật truyền
thông bởi khoá phiên trong vé. KDC gồm:
Đồ án an toàn và bảo mật mạng Page 7
- Máy chủ chứng thực AS (Authentication Server) biết khoá mật của tất cả
người dùng được lưu giữ trên một cơ sở dữ liệu tập trung.
- Máy chủ cấp khoá TGS (Ticket Granting Server) cung cấp vé dịch vụ cho
phép người dùng truy nhập vào các máy chủ trên mạng.
Giao thức Kerberos hoạt động khá phức tạp, về cơ bản được thực hiện qua ba
giai đoạn, hay ba pha. Trong kịch bản này, người dùng C đăng nhập vào máy trạm
client và yêu cầu truy nhập tới máy chủ V.
Pha thứ nhất: Kết nối với AS để lấy về vé xin truy nhập TGS, ticket-granting-
ticket (TGT)
Truyền thông với AS thường là giai đoạn khởi đầu của phiên đăng nhập, nhằm lấy
về dữ liệu chứng thực (TGT) cho TGS, để sau đó lấy về chứng thực cho các máy
chủ khác mà không phải nhập lại khoá bí mật của client. Khoá bí mật của client
được sử dụng cho cả việc mã hoá và giải mã.
a. Người dùng C đăng nhập vào hệ thống, nhập định danh và mật khẩu. Client sẽ
chuyển đổi mật khẩu thành khoá mật của C, lưu trữ trong biến của chương trình.
Sau đó, client gửi yêu cầu xin cấp TGT tới AS bằng thông điệp Kerberos
Authentication Service Request (KRB_AS_REQ) gồm 2 phần :
- Định danh người dùng, định danh TGS nhằm chỉ định sử dụng dịch vụ TGS
dưới dạng bản rõ.
Đồ án an toàn và bảo mật mạng Page 8
- Dữ liệu tiền chứng thực (pre-authentication data) chứng minh rằng người
Đồ án an toàn và bảo mật mạng Page 9
Pha thứ ba: Truyền thông trong chứng thực client/server, trao đổi dữ liệu
a. Bây giờ thì client sẵn sàng chứng thực với máy chủ V. Client gửi cho V một
thông điệp Kerberos Aplication Request (KRB_AP_REQ) có chứa :
- Authenticator mã hoá bởi khoá phiên SK2.
- Service ticket mã hoá bởi khoá mật của V.
- Cờ xác định client có yêu cầu chứng thực lẫn nhau không.
b. V giải mã service ticket, lấy ra SK2 giải mã authenticator, xác minh tính hợp lệ.
Nếu hợp lệ, B xem giá trị cờ yêu cầu chứng thực lẫn nhau. Nếu cờ được thiết lập,
V sử dụng SK2 mã hoá thời gian từ authenticator và gửi về cho C bằng thông điệp
KRB_AP_REP.
c. C giải mã thông điệp bằng khoá phiên dùng chung với V, xác minh thời gian
trong đó có đúng như khi gửi cho V không. Nếu hợp lệ, kết nối truyền thông sẽ
được thực hiện.
Như vậy, khoá phiên đã được chuyển tới server V và client một cách an toàn,
được sử dụng cho việc bảo mật truyền thông giữa client và server về sau. Hơn nữa,
cả client và server đều được chứng thực lẫn nhau, không xảy ra trường hợp giả
mạo một trong hai bên tham gia truyền thông.
5.Giao thức LDAP
LDAP là gì?
LDAP ( Lightweight Directory Access Protocol) được hiểu như là một giao thức
truy nhập nhanh dịch vụ thư mục.
Chúng ta sẽ phân tích rõ vì sao nó lại được gọi như vậy.(Phiên bản cuối cùng hiện
đến Version3.)
1. Lightweight
Tại sao LDAP được coi là lightweight? Lightweight được so sánh với cái gì?
Đó là những câu hỏi khi bạn muốn tìn hiểu chi tiết hơn về LDAP.
Để trả lời những câu hỏi này, bạn cần tìm hiểu nguồn gốc của LDAP.
Bản chất của LDAP là một phần của dịch vụ thư mục X.500. LDAP thực chất
được thiết kế như một giao thức nhẹ nhàng, dùng như gateway trả lời những yêu
Ở điểm này, sẽ là rất quan trọng khi đưa ra sự khác biệt giữa LDAP và một
backend sử dụng để lưu trữ dữ liệu liên tục. Nên nhớ rằng LDAP chỉ là một giao
thức, nó là một tập những bản tin cho việc xử lý các loại dữ liệu. Một giao thức
không thể biết dữ liệu được lưu trữ ở đâu. LDAP không hỗ trợ sự xử lý và những
đặc trưng khác của cơ sở dữ liệu.
Client sẽ không bao giờ thấy được hoặc biết rằng có một bộ máy lưu trữ backend.
Vì lý do này, LDAP client cần liên tác với LDAP server theo mô hình chuẩn sau:
Khuyến cáo là một LDAP server có thể được sử dụng như một backend storage
cho một máy chủ web. Mọi file HTML và file đồ họa sẽ được lưu trữ trong các
directory và có thể được truy vấn bằng nhiều máy chủ web. Sau đó, máy chủ web
sẽ đưa ra một file chỉ đọc và gửi chúng cho client và bản thân những file đó phải
Đồ án an toàn và bảo mật mạng Page 12
những file ít có sự thay đổi. Một LDAP directory có thể không là một nơi tốt cho
việc lưu trữ các spooled file khi chúng được đưa đến máy in, và khi việc sử dụng
nó được trong việc lưu trữ những cấu hình cài đặt máy in và chia sẻ cho các client
sẽ trở một thắng lợi lớn.
Hai điểm tốt về hàm của LDAP
- LDAP không là sự thay thế tổng thể cho những directory đặc biệt ví dụ như
filesystem hoặc DNS
- Khi việc lưu trữ kiểu của thông tin nhị phân( ví dụ như ảnh Jpeg) trong
directory có thể hữu dụng, LDAP không được trông chờ cho việc lưu trữ chuyên
về Binary Lumps of Bits (blobs)
3. Access Protocol
LDAP là một giao thức. Nó đưa ra một mô hình dạng cây của dữ liệu, và mô
hình dạng cây này được nhắc tới khi bạn đề cập một LDAP server. Giao thức
client/server của LDAP được định nghĩa trong RFC 2251 ( đây là lõi
LDAP là một sự thiếu đồng bộ (mặc dụ rất nhiều bộ công cụ phát triển cung cấp
cả blocking và nonblocking APIs), một client có thể đưa ra một loạt những yêu
tác bind bao gồm tên của một directory entry và uỷ nhiệm thư sẽ được sử dụng
trong quá trình xác thực, uỷ nhiệm thư thông thường là pasword nhưng cũng có
thể là chứng chỉ điện tử dùng để xác thực client.
Sau khi thư mục có được sự xác định của thao tác bind, kết quả của thao tác bind
được trả về cho client.
Đồ án an toàn và bảo mật mạng Page 15
1. Mở kết nối và bind tới server.
2. Client nhận kết quả bind.
3. Client phát ra các yêu cầu tìm kiếm.
4. Server thực hiện xử lý và trả về kết quả 1 cho client.
5. Server trả về kết quả 2 cho client.
6. Server gởi thông điệp kết thúc việc tìm kiếm.
7. Client phát ra yêu cầu unbind, với yêu cầu này server biết rằng client muốn
huỷ bỏ kết nối.
8. Server đóng kết nối
Chứng thực trong LDAP
Việc xác thực trong một thư mục LDAP là một điều cần thiết và không thể thiếu.
Hãy nhớ rằng LDAP là một kết nối theo hướng đối tượng, message dựa trên giao
thức. Các quá trình xác thực được sử dụng để thiết lập các quyền của khách hàng
cho mỗi lần sử dụng. Tất cả các công việc như tìm kiếm, truy vấn, vv… được sự
kiểm soát bởi các mức uỷ quyền của người được xác thực. Khi một người dùng
được quản lý với các thuộc tính cơ bản, bạn sẽ cần phải xác định một giá trị thuộc
tính userPassword để tiếp tục xác thực phía trong LDAP .
File LDIF sau sẽ đưa ra một vài thông tin cơ bản nhất về một đối tuợng trong
LDAP:
Đồ án an toàn và bảo mật mạng Page 16
dn: cn=gerald carter,ou=people,dc=plainjoe,dc=org
objectClass: person
cn: gerald carter
sn: carter
- Xác thực đơn giản qua SSL / TLS
- Xác thực đơn giản và Bảo mật lớp (SASL)
1. Xác thực người dùng chưa xác định (Anonymous Authentication)
Xác thực người dùng chưa xác định là một xử lý ràng buộc đăng nhập vào
directory với một tên đăng nhập và mật khẩu là rỗng. Cách đăng nhập này rất
thông dụng và đuợc thường xuyên sử dụng đối với ứng dụng client.
2. Xác thực nguời dùng đơn giản ( Simple Authtication)
Đối với xác thực nguời dùng đơn giản, tên đăng nhập trong DN được gửi kèm
cùng với một mật khẩu dưới dạng clear text tới máy chủ LDAP. Máy chủ sẽ so
sánh mật khẩu với giá trị thuộc tính userPassword hoặc với những giá trị thuộc
tính đã được định nghĩa truớc trong entry cho DN đó. Nếu mật khẩu đuợc lưu dưới
dạng bị băm( mã hoá), máy chủ sẽ sử dụng hàm băm tuơng ứng để biến đối mật
khẩu đưa vài và so sánh với giá trị đó với giá trị mật khẩu đã mã hoá từ trước. Nếu
cả hai mật khẩu trùng nhau, việc xác thực client sẽ thành công.
3. Xác thực đơn giản qua SSL/TLS
Nếu việc gửi username và mật khẩu của bạn qua mạng khiến bạn không cảm
thấy yên tâm về tính bảo mật, sẽ là an toàn hơn khi truyền thông tin trong một lớp
truyền tải được mã hóa. LDAP sẽ vượt qua lớp truyền tải đã được mã hóa này
trước khi thực hiện bất cứ hoạt động kết nối nào. Do đó, tất cả thông tin người
dùng sẽ được đảm bảo an toàn (ít nhất là trong suốt session đó)
Có hai cách sử dụng SSL/TSL với LDAPv3
- LDAP với SSL (LDAPs-tcp/636) được hỗ trợ bởi rất nhiều bởi các máy
chủ LDAP (cả phiên bản thương mại và mã nguồn mở). Mặc dù được sử dụng
thường xuyên, nó vẫn không chấp nhận quá trình mở rộng LDAP với StartTLS.
Đồ án an toàn và bảo mật mạng Page 18
- RFC 2830 đưa ra một phương thức mở rộng đối với LDAPv3 cho việc xử
lý TLS qua cổng tiêu chuẩn tcp/389. Phương thức này được biết đến như là một
StartTLS, giúp cho máy chủ có thể hỗ trợ các việc mã hóa và giải mã các phiên
giao dịch trên cùng một cổng.
ID), Google Authentication, Yahoo Authentication. Các hệ thống SSO là yêu cầu
bắt buộc của các hãng cung cấp dịch vụ trực tuyến, các viện và trường đại học lớn.
Đồ án an toàn và bảo mật mạng Page 19
WebSSO là một dịch vụ chứng thực cho các ứng dụng web vận hành trên các
platform khác nhau. Mục đích của WebSSO là đăng nhập một lần cho các ứng
dụng web sử dụng một dịch vụ chứng thực tập trung (Central Authentication
Service).
2. Đặc điểm của WebSSO;
Một WebSSO đú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:
• Đă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ụ WebSSO đó. 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.
• Web SSO yêu cầu một hệ thố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 button [Sign Out] hoặc tự
động SignOut khi tắt trình duyệt.
Trong SSO cũng như chứng thực thông thường, đều cần database để lưu trử thông
tin người dùng. Còn SSO hoàn toàn không dùng database để lưu vết session.
Như vậy, chúng ta có thể thấy rằng 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
partners (ứng dụng web dùng SSO) sẽ không thể đăng nhập được.
Để phát triển một SSO không thật sự quá khó nhưng nó có vai trò quá quan trọng
và ảnh hưởng lớn đến các ứng dụng khác nên nó thường dành cho các nhà cung
có các session cookie khác nhau do SSOAgent tạo ra trong quá trình chứng thực
của Authentication Service.
3.3 Mô hình PKI Public Key Infrastructure
PKI LÀ GÌ?
Để hiểu được về PKI (Public Key Infrastructure), chúng ta cần biết một số kiến
thức sơ lược về khoá mật mã công khai. Hệ thống này xây dựng trên cơ sở một
cặp khoá mã có liên hệ toán học với nhau trong đó một khoá sử dụng để mã hoá
thông điệp và chỉ có khoá kia mới giải mã được thông điệp và ngược lại. Khi đó
chúng ta có thể công khai hoá một khoá trong cặp khoá này. Nếu ai cần gửi cho
chúng ta các thông điệp bảo đảm, họ sẽ có thể sử dụng khoá đã được cung cấp
công khai này để mã hoá thông điệp trước khi gửi đi và bởi vì chúng ta đã giữ bí
mật khoá mã còn lại nên chỉ chúng ta mới có thể giải mã được thông điệp bảo đảm
đó.
Cặp khoá này còn dùng để xác nhận thông điệp. Người gửi sẽ tạo một đoạn mã
băm (hash) của thông điệp - một dạng rút gọn của thông điệp nguyên bản - với
một số thuật toán (ví dụ như MD5, SHA-1 ). Người gửi sẽ mã hoá đoạn mã băm
bằng khoá riêng của mình và người nhận sẽ dùng khoá công cộng của người gửi
để giai đoạn mã băm của người gửi, sau đó so sánh với đoạn mã băm của thông
điệp nhận được (được tạo bằng cùng một thuật toán). Nếu trùng nhau thì người
nhận có thể tin rằng thông điệp nhận được không bị thay đổi trong quá trình truyền
tải trên mạng và xuất phát từ người gửi xác định. Cách thực hiện này được gọi là
chữ ký điện tử. Nhưng cần nhắc lại là chung ta yêu cầu không chỉ chữ ký - chúng
ta cần một thẻ hội viên điện tử. Chính vì thế mà xuất hiện khái niệm giấy chứng
nhận điện tử. Một chứng nhận điện tử gắn tên của hội viên hay thiết bị với một cặp
khoá, tương tự như thẻ hội viên gắn tên của hội viên với chữ ký và ảnh của họ. Để
Đồ án an toàn và bảo mật mạng Page 21
đảm bảo giấy chứng nhận là hợp lệ, chúng ta thường yêu cầu giấy chứng nhận
phải được cấp do một tổ chức tin cậy. Đối với giấy chứng nhận điện tử, tổ chức
này được gọi là Trung tâm Chứng thực kỹ thuật số - CA (Certification
Authority).