Chương 1. TỔNG QUAN VỀ XÁC THỰC Xác thực là một phần không thể thiếu được trong kiến trúc bảo mật của một hệ thống bất kì. Chương này cung cấp cái nhìn tổng quan về xác thực, phân loại các phương thức xác thực theo đặc điểm sử dụng và giới thiệu một số giao thức xác thực cơ bản. Khái niệm [11] Xác thực (Authentication) là một hành động nhằm chứng thực một cái gì đó (hoặc một người nào đó) đáng tin cậy, 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 là thẩm tra nhận dạng họ. Xác thực liên quan đến nhiều lĩnh vực nhưng trong khoa học máy tính, xác thực là quá trình mà một hệ thống xác minh danh tính của người dùng nào đó muốn truy cập vào nó, để đảm bảo quyền truy cập vào hệ thống hay dữ liệu bí mật trong nó. Xác thực có thể được thực hiện bằng thẻ thông minh, hoặc Authentication Server hoặc cơ sở hạ tầng khóa công khai. nhưng thông dụng nhất là sử dụng tài khoản với tên người dùng và mật khẩu.
Xác thực là điều cần thiết để bảo mật hệ thống hiệu quả. Các phương thức xác thực [9] Các phương thức xác thực có thể phân thành 3 loại theo đặc điểm chúng được sử dụng như trong hình 1. Phân loại các phương thức xác thực LUAN VAN CHAT LUONG download : add luanvanchat@agmail. Xác thực dựa theo tri thức Đây là phương thức sử dụng rộng rãi nhất hiện nay và đã trở nên quen thuộc với người dùng.
Phương thức này sử dụng mật khẩu bằng dãy kí tự: từ, cụm từ hay câu; mật khẩu bằng hình ảnh, nhận dạng khuân mặt hay sử dụng mã số cá nhân (PINs). Đối với mạng công cộng không bảo đảm, để xác thực thì chứng thư số và chữ kí số được sử dụng. Xác thực dựa theo sự sở hữu Xác thực dựa theo sự sở hữu (hay xác thực dựa theo thẻ) sẽ dựa vào những gì mà người dùng có, chủ yếu là các đối tượng vật lý, chẳng hạn như thẻ. Tồn tại của phương thức này là thẻ không chứng minh được quyền sở hữu vì nó dễ dàng bị đánh cắp hoặc được nhân đôi bởi các phương tiện gian lận tinh vi.
Thẻ nhớ sản xuất không tốn kém. Sử dụng thẻ nhớ với cơ chế xác thực dựa trên tri thức chẳng hạn như mã PIN sẽ bảo mật hơn nhiều so với việc dùng thẻ hay mã PIN đơn lẻ. Xác thực dựa theo sinh trắc học Đây là phương thức dựa trên các đặc điểm sinh lý hay hành vi của người dùng, đó là các thuộc tính vật lý ổn định của họ như: vân tay, võng mạc, khuân mặt, giọng nói, loại máu, những chi tiết sinh học nhỏ trên cơ thể người dùng… Phương thức này đem lại hiệu quả bảo mật rất cao vì nó không dễ dàng bị đánh cắp hoặc được chia sẻ, tuy nhiên nó không được sử dụng phổ biến và chủ yếu được sử dụng trong các hệ thống với mức độ bảo mật rất cao vì: - Tốn kém: yêu cầu phần cứng đặc biệt. - Được cho là có thể xâm lấn về quyền riêng tư.
- Có thể bị phân tích và một lần bị đánh cắp thì không thể được sử dụng nữa. Các giao thức xác thực [11] Giao thức xác thực là loại giao thức mã hóa với mục đích chứng thực các thực thể có nhu cầu giao tiếp an toàn. Hiện nay có rất nhiều các giao thức xác thực được sử dụng như: PAP, CHAP, EAP, RADIUS, HIP, KERBEROS, PEAP. Giao thức PAP (Password Authentication Protocol): là một giao thức xác thực đơn giản, trong đó tên người dùng và mật khẩu sẽ được gửi đến máy chủ truy cập từ xa dưới dạng bản rõ để xác thực.
Sử dụng PAP là không an toàn vì mật khẩu có thể dễ dàng đọc được từ các gói tin trao đổi trong quá trình xác thực. Vì thế PAP thường được LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 11 sử dụng như một phương sách cuối cùng khi các máy chủ từ xa không hỗ trợ giao thức xác thực mạnh hơn. Giao thức CHAP (Challenge-Handshake Authentication Protocol): là một giao thức bắt tay ba chiều bởi vì nó bao gồm ba bước để thực hiện kiểm tra một kết nối sau khi kết nối được khởi tạo đầu tiên, hay tại bất kỳ thời điểm nào sau khi kết nối được thiết lập. Với CHAP, máy chủ truy cập từ xa sẽ gửi một thử thách cho máy khách truy cập từ xa.
Các máy khách này sử dụng một thuật toán băm (còn gọi là hàm băm) để tính toán một Message Digest-5 (MD5) dựa vào các thử thách và kết quả băm từ mật khẩu của người dùng. Các máy khách sẽ gửi kết quả băm MD5 cho máy chủ truy cập từ xa. Các máy chủ truy cập từ xa cũng có quyền truy cập vào kết quả băm từ mật khẩu người dùng, thực hiện các tính toán tương tự bằng thuật toán băm và so sánh kết quả với kết quả mà máy khách gửi. Nếu kết quả phù hợp, các thông tin của máy khách truy cập từ xa được coi là đáng tin cậy.
Vì thuật toán băm cung cấp mã hóa một chiều, có nghĩa là tính toán kết quả băm cho một khối dữ liệu là dễ dàng, nhưng việc xác định khối dữ liệu ban đầu từ kết quả băm là không khả thi toán học, hơn nữa thử thách là ngẫu nhiên, nên giao thức CHAP 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. Giao thức KERBEROS: là một giao thức mật mã dùng để xác thực trong các mạng máy tính hoạt động trên những đường truyền không an toàn. Giao thức Kerberos có khả năng chống lại việc nghe lén hay gửi lại các gói tin cũ và đảm bảo tính toàn vẹn của dữ liệu. Mục tiêu khi thiết kế giao thức này là nhằm vào mô hình máy chủ-máy khách (Client-Server) và đảm bảo nhận thực cho cả hai chiều.
Giao thức được xây dựng dựa trên mã hóa khóa đối xứng và cần đến một bên thứ ba tham gia vào quá trình nhận thực gọi là "trung tâm phân phối khóa" (tiếng Anh: key distribution center - KDC). KDC bao gồm hai chức năng: "máy chủ xác thực" (Authentication Server - AS) và "máy chủ cung cấp vé" (ticket granting Server - TGS). "Vé" trong hệ thống Kerberos chính là các chứng thực chứng minh tính hợp lệ của người dùng. Mỗi người dùng (cả máy chủ và máy khách) trong hệ thống chia sẻ một khóa chung với máy chủ Kerberos.
Việc sở hữu thông tin về khóa chính là bằng chứng để chứng minh tính hợp lệ của một người dùng. Trong mỗi giao dịch giữa hai người dùng trong hệ thống, máy chủ Kerberos sẽ tạo ra một khóa phiên dùng cho phiên giao dịch đó. Đây là một trong những giao thức được sử dụng rộng rãi nhất trong môi trường mạng. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12 Giao thức RADIUS (Remote Authentication Dial-In Use Service): Là một trong những giao thức mạng lâu đời nhất, giúp xác thực, ủy quyền, quản lý người dùng kết nối và sử dụng dịch vụ mạng.
Nó thường được sử dụng bởi các ISP và các doanh nghiệp để quản lý truy cập vào Internet hay mạng nội bộ, mạng không dây và các dịch vụ e-mail tích hợp. Các mạng lưới này có thể kết hợp modem, DSL, các điểm truy cập, mạng riêng ảo, cổng mạng hay máy chủ web. RADIUS chạy như một chương trình phần mềm trên máy chủ. Các máy chủ thường được sử dụng dành riêng cho xác thực RADIUS.
Khi người dùng cố gắng kết nối vào mạng, chương trình máy khách RADIUS hướng tất cả dữ liệu người dùng tới máy chủ RADIUS để xác thực. Các máy chủ lưu trữ dữ liệu người dùng để xác thực dưới dạng mã hóa và gửi phản hồi lại nền kết nối. Xác thực được thiết lập hoặc bị từ chối. Nếu bị từ chối, người dùng thử lại.
Nếu xác thực được thiết lập, sự tương tác RADIUS kết thúc. Dịch vụ mạng yêu cầu xác thực được xử lý bởi các giao thức khác nếu cần thiết. Giao thức EAP (Extensible Authentication Protocol): là giao thức truyền thông được sử dụng thông qua các loại cơ chế xác thực khác nhau, chẳng hạn như thẻ token, Kerberos, mật khẩu một lần, giấy chứng nhận, xác thực khóa công khai và các thẻ thông minh. Trong giao tiếp không dây sử dụng EAP, người dùng muốn kết nối vào một mạng WLAN thông qua một AP, AP sẽ yêu cầu danh tính của người sử dụng và truyền danh tính này đến một máy chủ xác thực như RADIUS.
Các máy chủ yêu cầu AP cho các thông tin nhận được từ người sử dụng, gửi lại cho máy chủ để hoàn tất việc xác thực. Ngoài các giao thức xác thực trên còn có nhiều giao thức xác thực khác, nhưng trong các ứng dụng web thì được sử dụng phổ biến là có hai giao thức OAuth và OpenID. Hai giao thức này sẽ được trình bày ở chương kế tiếp. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 13 Chương 2.
GIAO THỨC XÁC THỰC OAUTH VÀ OPENID Có rất nhiều giao thức xác thực trên internet: Google AuthSub, AOL OpenAuth, Yahoo BBAuth, Facebook Auth, Upcoming API, Flickr API, Amazon Web Services API… cho lập trình viên khi phát triển ứng dụng web. Nhưng phổ biến hiện nay là giao thức OAuth và OpenID vì chúng tuân theo chuẩn chung và có rất nhiều ưu điểm. Giao thức xác thư ̣c OAuth 2. Khái niệm [11, 14] OAuth là một giao thức mở để xác thực.
OAuth cung cấp cho các máy khách phương pháp truy cập tài nguyên của máy chủ. Đồng thời OAuth cho phép người sử dụng xác thực việc sử dụng tài nguyên của bên thứ ba mà không làm lộ các thông tin bí mật như tên người sử dụng, mật khẩu v. OAuth cơ bản sử dụng “access token” cấp cho máy khách bởi một máy chủ ủy quyền, với sự chấp thuận của chủ sở hữu nguồn tài nguyên. Các máy khách sau đó sử dụng “access token” để truy cập các nguồn tài nguyên được bảo vệ trên máy chủ tài nguyên.
Ví dụ, một ứng dụng trò chơi có thể truy cập vào dữ liệu người sử dụng trong các ứng dụng Facebook, hoặc một ứng dụng dựa trên địa điểm có thể truy cập dữ liệu người sử dụng của ứng dụng Foursquare.1 minh họa cho khái niệm trên. Ví dụ về cách OAuth 2.0 được sử dụng để chia sẻ dữ liệu OAuth được phát triển từ 11/2006. Do sự tiện lợi, OAuth đang được phát triển lên các phiên bản cao hơn. Hiện nay, OAuth 2.0 thay thế cho OAuth 1.0 phức tạp hơn, nó yêu cầu các giấy chứng nhận liên quan.