Bên cạnh đó, các mạng xã hội tíchhợp các dịch vụ địa điểm và bản đồ số giúp cho chúng ta thông báo vị trí hiện tạiđến bạn bè, chia sẻ thông tin và đánh giá địa điểm… Việc phát triển và n
Trang 1VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Trang 2HÀ NỘI 5-2011
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1 Thông tin về sinh viên
Họ và tên sinh viên: Nguyễn Quang Đức
Điện thoại liên lạc: 0904666787 Email: ducnq135@gmail.comLớp:Công nghệ phần mềm – K51 Hệ đào tạo: Đại học
Đồ án tốt nghiệp được thực hiện tại:Bộ môn Công nghệ phần mềm – Viện Công nghệ thông tin và truyền thông – Đại học Bách Khoa Hà Nội
Thời gian làm ĐATN: Từ ngày 27 / 02 / 2011 đến 27 / 05/ 2011
2 Mục đích nội dung của ĐATN
Xây dựng giải pháp xác thực và bảo mật ứng dụng mô hình Kerberos cho mạng xã hội Áp dụng giải pháp vừa xây dựng vào mạng xã hội Foloyu
Xây dựng Profile Engine cung cấp các dịch vụ cho mạng xã hội Foloyu
3 Các nhiệm vụ cụ thể của ĐATN
Nghiên cứu lý thuyết về Kerberos
Nghiên cứu lý thuyết về Web Service
Xây dựng giải pháp áp dụng mô hình Kerberos để xác thực và bảo mật
Xây dựng Profile Engine
Áp dụng giải pháp sử dụng Kerberos và Profile Engine vào mạng xã hội Foloyu
Trang 34 Lời cam đoan của sinh viên
Tôi – Nguyễn Quang Đức - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của Tiến sĩ Nguyễn Khanh Văn
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn
Tiến sĩ Nguyễn Khanh Văn
Trang 4TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Ngày nay, mạng xã hội đang phát triển rất nhanh chóng và có hàng triệu ngườitham gia.Việc thu hút được nhiều người tham gia như vậy khiến cho các nhà pháttriển không ngừng phát triển các các dịch vụ để cung cấp các chức năng cho mạng
xã hội Bên cạnh đó, việc có một số lượng lớn người tham gia như vậy khiến cho hộcũng phải quan tâm đến các vấn đề liên quan đến xác bảo mật trong mạng xã hội
Đề tài tốt nghiệp có tên “Giải pháp xác thực và bảo mật cho mạng xã hội ứng
dụng mô hình Kerberos” với mục đích tạo ra 1 cơ chế xác thực người dùng và
thiết lập một kênh truyền thông tin an toàn trong mạng xã hội
Qua tìm hiểu và nghiên cứu lý thuyết, tác giả nhận thấy rằng mô hình Kerberosđáp ứng được các yêu cầu về cơ chế xác thực và bảo mật kênh truyền đặt ra.Từ đó,tác giả sẽ xây dựng một giải pháp ứng dụng mô hình Kerberos và áp dụng nó vàomạng địa xã hội Foloyu Bên cạnh đó, để có thể triển khai và thử nghiệm giải phápmột cách hiệu quả, trong đồ án, tác giả cũng sẽ trình bày việc xây dựng ProfileEngine được triển khai dưới dạng Web Service.Profile Engine này vừa có chứcnăng cung cấp một số dịch vụ cho mạng xã hội, vừa cung cấp dịch vụ để thực hiệngiải pháp Kerberos
Trang 5ABSTRACT OF THESIS
Nowadays, social network has been developing very rapidly and there aremillions of people joining this network Attracting a lot of people makes developersnever stop expanding their services to provide various functions and features fortheir social network.In addition, such a large number of people taking part in theirnetwork make them pay more attention to some security problems of socialnetwork
The title of my thesis is “A solution to authentication and secure protocol
for social network applying Kerberos” The goal of my thesis is building a
authentication mechanism and establishing a security protocol for exchangingmessage
Through studying and researching, I have identified that Kerberos is the bestsolution to meet the requirement of authentication mechanism and secure protocol.Based on Kerberos, I wil build a solution to the problem mentioned above and applythis solution to the geo-social network Foloyu Beside, in order to test and deploythe solution effectively, in this thesis, I will build a Profile Engine which isdeployed as Web Service.This Engine will provide some services for Foloyu andsome services for Kerberos-based solution
Trang 6
LỜI CẢM ƠN
Trước tiên em xin gửi lời cảm ơn chân thành sâu sắc đến các thầy cô giáo trong trường đại học Bách Khoa Hà nội nói
chung và các thầy cô giáo trong khoa Công nghệ Thông tin,
bộ môn Công nghệ phần mềm nói riêng đã tận tình giảng dạy,
truyền đạt cho em những kiến thức, kinh nghiệm quý báu
trong suốt năm năm học vừa qua
Em xin gửi lời cảm ơn đến thầy giáo Tiến sĩ Nguyễn Khanh Văn đã định hướng và tận tình giúp đỡ em rất nhiều
trong suốt quá trình làm đồ án tốt nghiệp Dưới sự hướng dẫn
của thầy, em đã tiếp thu được rất nhiều kiến thức, bao gồm
những kiến thức lý thuyết và những kinh nghiệm thực tế trong
quá trình tham gia dự án Foloyu Em xin được gửi tới Thầy
lòng biết ơn sâu sắc
Đồng thời em xin chân thành cảm ơn thầy Trịnh Tuấn Đạt đã cho em những lời khuyên quý báu cũng như các bạn
trong nhóm dự án Foloyu đã giúp đỡ mình rất nhiều trong quá
trình thực hiện đồ án
Hà Nội, ngày 27 tháng 05 năm 2011
Sinh viên : Nguyễn Quang Đức
Viện : Công nghệ Thông tin Và Truyền Thông
Đại học Bách Khoa Hà Nội
Trước tiên em xin gửi lời cảm ơn chân thành sâu sắc đến các thầy cô giáo trong trường đại học Bách Khoa Hà nội nói
chung và các thầy cô giáo trong khoa Công nghệ Thông tin,
bộ môn Công nghệ phần mềm nói riêng đã tận tình giảng dạy,
truyền đạt cho em những kiến thức, kinh nghiệm quý báu
trong suốt năm năm học vừa qua
Em xin gửi lời cảm ơn đến thầy giáo Tiến sĩ Nguyễn
Khanh Văn đã định hướng và tận tình giúp đỡ em rất nhiều
trong suốt quá trình làm đồ án tốt nghiệp Dưới sự hướng dẫn
của thầy, em đã tiếp thu được rất nhiều kiến thức, bao gồm
những kiến thức lý thuyết và những kinh nghiệm thực tế trong
quá trình tham gia dự án Foloyu Em xin được gửi tới Thầy
lòng biết ơn sâu sắc
Đồng thời em xin chân thành cảm ơn thầy Trịnh Tuấn
Đạt đã cho em những lời khuyên quý báu cũng như các bạn
trong nhóm dự án Foloyu đã giúp đỡ mình rất nhiều trong quá
trình thực hiện đồ án
Hà Nội, ngày 27 tháng 05 năm 2011
Trang 7Mục lục
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 2
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 4
1.1.1 Khái niệm mạng xã hội 18
1.1.2 Kiến trúc căn bản của mạng xã hội 19
1.1.3 Dự án mạng địa xã hội Foloyu 20
1.2 Các vấn đề cần giải quyết 21
1.3 Định hướng giải quyết các vấn đề đặt ra 22
1.3.1 Giải pháp 22
a Cho bài toán bảo mật cho mạng xã hội 22
b Cho việc xây dựng các Engine cung cấp dịch vụ 23
1.3.2 Áp dụng giải pháp vào mạng xã hội Foloyu 23
a Kiến trúc mạng xã hội Foloyu 23
b Giải pháp áp dụng vào Foloyu: 24
CHƯƠNG 2: Cơ sở lý thuyết 25
2.1 Giao thức Kerberos 25
2.1.1 Khái niệm Kerberos 25
2.1.2 Các thành phần và thuật ngữ được dùng trong Kerberos: 26
a Realm 26
Trang 8b Principal 26
c Ticket 26
d Mã hóa trong Kerberos: 27
e Trung tâm phân phối khóa (Key Distribution Center): 28
f Khóa phiên (Session Key) 29
g Authenticator29
i Credential cache 29
2.1.3 Mô tả giao thức Kerberos 29
2.2 Lý thuyết về Web Service 34
2.2.1 Định nghĩa Web Service 34
2.2.2 Ưu, nhược điểm của Web Service 34
2.2.3 Một số khái niệm cơ bản trong Webservice 35
a Simple Object Access Protocol (SOAP) 35
b Web Services Description Language (WSDL) 36
2.2.4 Các thành phần tham gia trong Web Service 38
2.2.5 Nguyên lý hoạt động của các thành phần tham gia web service 38Phần 2: Các kết quả đạt được 40
CHƯƠNG 3: Phân tích thiết kế hệ thống 40
3.1 Phân tích thiết kế cho bài toán bảo mật 40
3.1.1 Thiết kế kiến trúc của mạng Foloyu áp dụng Kerberos 40
3.1.2 Mô tả cấu trúc các thông điệp trong hệ thống 41
a Chú thích một số kí hiệu 41
b Authentication Server Request (AS_REQ) 41
c Authentication Server Reply (AS_REP) 42
d Ticket Granting Server Request (TGS_REQ) 43
e Ticket Granting Server Reply (TGS_REP) 44
f Application Request (AP_REQ) 45
g Application Reply (AP_REP) 45
3.2 Phân tích và thiết kế cho Profile Engine 47
Trang 93.2.1 Mô tả các chức năng yêu cầu ở phía Profile của người dùng 47
a Đặc tả Use Case Quản lý tài khoản người dùng 48
b Đặc tả Use Case quản lý thông tin cá nhân người dùng 49
c Đặc tả Use Case quản lý thiết lập riêng tư về thông tin 49
d Đặc tả Use Case quản lý bạn bè 50
3.2.2 Thiết kế cơ sở dữ liệu 51
a Database Diagram: 51
b Mô tả các bảng trong cơ sở dữ liệu 52
CHƯƠNG 4: Cài đặt, triển khai và thử nghiệm hệ thống 58
4.1 Cài đặt 58
4.1.1 Công cụ và công nghệ sử dụng 58
4.1.2 Tổng quan hoạt động của hệ thống Foloyu 58
4.1.3 Cài đặt cho bài toán bảo mật áp dụng Kerberos 59
4.1.4 Cài đặt Profile Engine 60
a Sơ đồ lớp 60
b Profile API 62
4.1.5 Cài đặt phía Foloyu Server 66
4.2 Triển khai và kết quả thử nghiệm hệ thống 68
4.2.1 Triển khai thử nghiệm hệ thống Foloyu 68
5.1 Đặc tả các Use Case của chứ năng Profile 76
5.1.1 Đặc tả Use Case Quản lý tài khoản người dùng 76
5.1.2 Đặc tả Use Case quản lý thông tin cá nhân người dùng 795.1.3 Đặc tả Use Case quản lý thiết lập riêng tư về thông tin 805.1.4 Đặc tả Use Case quản lý bạn bè 82
Trang 10TÀI LIỆU THAM KHẢO 86
Trang 11Danh mục các hình
Hình 1-1: Kiến trúc của mạng xã hội 19
Hình 1-2: Kiến trúc của Foloyu 21
Hình 1-3: Mô tả hoạt động của Kerberos 22
Hình 1-4: Kiến trúc mạng xã hội Foloyu 23
Hình 2-1: Chi tiết hoạt động giao thức Kerberos 30
Hình 2-2: Cấu trúc chung của SOAP 35
Hình 2-3: Mô tả End-point 37
Hình 2-4: Thành phần tham gia Web Service 38
Hình 3-1: Kiến trúc Foloyu áp dụng Kerberos 40
Hình 3-2: Message AS_REQ 42
Hình 3-3: Message AS_REP 43
Hình 3-4: Message TGS_REQ 43
Hình 3-5: Message TGS_REP 44
Hình 3-6: Message AP_REQ 45
Hình 3-7: Message AP_REP 46
Hình 3-8: Use Case tổng quát cho Profile 47
Hình 3-9: Use Case quản lý tài khoản người dùng 48
Hình 3-10: Use Case quản lý thông tin cá nhân người dùng 49
Hình 3-11: Use Case quản lý thiết lập riêng tư về thông tin 49
Hình 3-12: Use Case quản lý bạn bè 50
Hình 3-13: Database Diagram 51
Hình 4-1: Sơ đồ hoạt động của Foloyu 58
Hình 4-2: Các lớp cài đặt cho bài toán bảo mật 59
Hình 4-3: Sơ đồ lớp cài đặt cho Profile Engine 61
Hình 4-4: Sơ đồ các lớp cài đặt ở Foloyu Server 66
Hình 4-5: Sơ đồ hoạt hộng của Foloyu 69
Hình 4-6: Màn hình trang chủ phía Profile 70
Trang 12Hình 4-7: Màn hình chức năng xem danh sách bạn bè 70
Hình 4-8: Màn hình chức năng xem danh sách yêu cầu kết bạn 71
Hình 4-9: Màn hình chức năng xem danh sách gợi ý kết bạn 71
Hình 4-10: Màn hình chức năng Edit Account 71
Hình 4-11: Màn hình chức năng Edit Privacy 72
Hình 5-1: Use Case quản lý tài khoản người dùng 76
Hình 5-2: Use Case quản lý thông tin cá nhân người dùng 79
Hình 5-3: Use Case quản lý thiết lập riêng tư về thông tin 80
Hình 5-4: Use Case quản lý bạn bè 82
Trang 13Danh mục các bảng
Bảng 3-1: Mô tả bảng User 53
Bảng 3-2: Mô tả bảng Friend 53
Bảng 3-3: Mô tả bảng SuggestFriend 54
Bảng 3-4: Mô tả bảng ChallengeQuestion 54
Bảng 3-5: Mô tả bảng Answer 55
Bảng 3-6: Mô tả bảng PrivacyCategory 55
Bảng 3-7: Mô tả bảng UserPrivacyType 56
Bảng 3-8: Mô tả bảng UserPrivacySetting 56
Bảng 3-9: Mô tả bảng Principal 57
Bảng 4-1: Các hàm chức năng quản lý tài khoản người dùng 63
Bảng 4-2: Các hàm chức năng quản lý thông tin người dùng 64
Bảng 4-3: Các hàm cho chức năng thiết lập riêng tư về thông tin cá nhân 64
Bảng 4-4: Các hàm cho chức năng quản lý bạn bè 65
Bảng 4-5: Các hàm chức năng khác 66
Bảng 5-1: Đặc tả chức năng đăng kí 77
Bảng 5-2: Đặc tả chức năng đăng nhập 77
Bảng 5-3: Đặc tả chức năng đăng xuất 77
Bảng 5-4: Đặc tả chức năng thay đổi mật khẩu 77
Bảng 5-5: Đặc tả chức năng phục hồi mật khẩu 78
Bảng 5-6: Đặc tả chức năng kích hoạt/vô hiệu hóa tài khoản 78
Bảng 5-7: Đặc tả chức năng xem thông tin cá nhân của người khác 79
Bảng 5-8: Đặc tả chức năng chỉnh sửa thông tin người dùng 80
Bảng 5-9: Đặc tả chức năng xem thiết lập thông tin riêng tư 81
Bảng 5-10: Đặc tả chức năng Thay đổi thiết lập thông tin riêng tư 81
Bảng 5-11: Đặc tả chức năng gửi yêu cầu kết bạn 82
Bảng 5-12: Đặc tả chức năng xem yêu cầu kết bạn 83
Bảng 5-13: Đặc tả chức năng trả lời yêu cầu kết bạn 83
Trang 14Bảng 5-14: Đặc tả chức năng gợi ý bạn bè 83
Bảng 5-15: Đặc tả chức năng xem danh sách gợi ý bạn bè 84
Bảng 5-16: Đặc tả chức năng gợi ý kết bạn 84
Bảng 5-17: Đặc tả chức năng xem danh sách bạn bè 84
Bảng 5-18: Đặc tả chức năng tìm kiếm bạn bè 85
Bảng 5-19: Đặc tả chức năng xóa bạn bè 85
Bảng 5-20: Đặc tả chức năng tìm kiếm người dùng 85
Trang 15Danh mục từ viết tắt và thuật ngữ
2 AS Authentication Server – Server xác thực
3 TGS Ticket Granting Server – Server phân phối vé dịch
vụ
4 Sesion Key Khóa Phiên
5 Authenticator Phần xác thực
6 SOAP Simple Object Access Protocol – Giao thức truy
nhập đối tượng đơn giản
7 WSDL Web Service Definition Language - Ngôn ngữ đặc
tả Web Service
8 AES Advanced Encryption Standard – Thuật toán mã
hóa khối
9 MD5 Message Diggest Alorithm 5 – Hàm băm mật mã
với gí trị băm dài 128 bit
Trang 16Phần mở đầu
Thập niên vừa qua chứng kiến sự phát triển và sự bùng nổ của mô hình mạng xãhội Mạng xã hội ra đời và ngày càng chiếm vai trò quan trọng Chúng đang tạo nênnhững giá trị lớn lao, làm thay đổi một cách căn bản cách giao tiếp, cách sống vàlàm việc của con người Các trang web mạng xã hội bắt đầu phát triển mạnh trongvài năm nay và hiện có hàng trăm trang web mạng xã hội trên thế giới Một sốmạng xã hội nổi tiếng và có nhiều thành viên tham gia là facebook, twitter,myspace… Nội dung và chức năng của mạng xã hội rất phong phú Nó cung cấpcho chúng ta rất nhiều dịch vụ khác nhau như giúp chúng ta kết nối bạn bè, chia sẻtin tức, hình ảnh, các video clip, chơi game Bên cạnh đó, các mạng xã hội tíchhợp các dịch vụ địa điểm và bản đồ số giúp cho chúng ta thông báo vị trí hiện tạiđến bạn bè, chia sẻ thông tin và đánh giá địa điểm…
Việc phát triển và ngày càng nâng cao, mở rộng các dịch vụ là mục tiêu của tất
cả các nhà phát triển mạng xã hội.Tuy nhiên, trong quá trình phát triển đó, chúng ta
có thể thấy một số vấn đề mà các nhà phát triển gặp phải.Thứ nhất, việc có rất nhiềumáy chủ dịch vụ cung cấp các dịch vụ khác nhau cho mạng xã hội làm cho việc xácthực người dùng trở nên phức tạp hơn.Mỗi một máy chủ trước khi cung cấp dịch vụcần phải xác thực người dùng đó có được sử dụng dịch vụ hay không Điều này vừagây bất tiện cho người sử dụng, vừa không tối ưu hóa hệ thống Do đó, cần một cơchế để người dùng chỉ phải đăng nhập một lần vào hệ thống và xác thực với mỗidịch vụ để có thể có quyền sử dụng các dịch vụ đó.Thứ hai, các mạng xã hội đều làcác dịch vụ hoạt động trên Internet.Các thông tin gửi đi và truyền về giữa phíangười dùng và các máy chủ dịch vụ có nguy cơ bị nghe lén, đánh cắp và thay đổi
Vì vậy, chúng ta cần một kênh truyền các thông tin này một cách bảo mật giữa cácmáy chủ dịch vụ và người dùng để có thể ngăn ngừa các nguy cơ trên
Qua phân tích ở phần trên, chúng ta có thể thấy có hai vấn đề của mạng xã hội.Vấn đề thứ nhất là cơ chế đăng nhập một lần xác thực để người dùng có thể sử dụngcác dịch vụ của mạng xã hội Vấn đề thứ hai chính là cần phải có một kênh truyềnthông tin bảo mật giữa người dùng và các máy chủ dịch vụ Trong đồ án này, em sẽtrình bày giải pháp áp dụng mô hình Kerberos để giải quyết hai vấn đề nêu trên.Sau
đó, giải pháp này sẽ được áp dụng vào dự án mạng địa xã hội Foloyu, một mạng xãhội với các chức năng liên quan đến vị trí và địa điểm Bên cạnh đó, để giải pháp cóthể được thử nghiệm và triển khai, tác giả cũng sẽ trình xây dựng một ProfileEngine đóng vai trò là một máy chủ cung cấp dịch vụ cho mạng xã hội Foloyu
Trang 17Đồ án được thực hiện trong dự án mạng địa xã hội Foloyu cùng với một sốthành viên của lớp Công nghệ phần mềm K51 dưới sự hướng dẫn của Tiến sĩNguyễn Khanh Văn.
Bố cụ đồ án tốt nghiệp như sau:
Phần mở đầu gồm có các nội dung sau:
o Tóm tắt các nhiệm vụ trong đồ án tốt nghiệp
o Môi trường thực hiện đồ án tốt nghiệp
o Nêu bố cục đồ án
Phần 1: Đặt vấn đề và định hướng giải pháp
o Chương 1 – Tổng quan đề tài và định hướng giải quyết các vấn đề đặt ra: Mô
tả đề tài và các vấn đề cần giải quyết trong đề tài cũng như định hướng đểgiải quyết các vấn đề đó
o Chương 2 – Cơ sở lý thuyết: Chương này sẽ trình bày về 2 cơ sở lý thuyếtchính để giải quyết vấn đề trong đồ án.Đó là giao thức Kerberos và WebService
Phần 2: Các kết quả đạt được
o Chương 3: Phân tích và thiết kế hệ thống: Chương này sẽ trình bày về việcphân tích và thiết kế cho bài toán bảo mật cho Foloyu và cho việc xây dựngProfile Engine
o Chương 4: Cài đặt, triển khai và thử nghiệm hệ thống
Phần kết luận: Đánh giá về kết quả thực hiện đồ án, phân tích những thuận lợi,khó khăn khi thực hiện đồ án, định hướng phát triển đồ án trong tương lai
Chương 5: Phần phụ lục
Trang 18Phần 1: Đặt vấn đề và định hướng giải pháp
CHƯƠNG 1: Tổng quan đề tài và định hướng giải pháp
Nội của chương này sẽ trình bày các vấn đề sau:
o Tổng quan về mạng xã hội và các vấn đề của mạng xã hội
o Các vấn đề cần phải giải quyết
o Định hướng giải quyết các vấn đề đặt ra
Phần này chúng ta sẽ tìm hiểu mạng xã hội là gì, kiến trúc của mạng xã hội
và các vấn đề của nó Đồng thời, chúng ta cũng sẽ tìm hiểu về mạng xã hội Foloyu, một mạng xã hội mà các giải pháp trình bày trong đồ án sẽ được áp dụng vào
1.1.1 Khái niệm mạng xã hội
Mạng xã hội (tiếng Anh: social network) là dịch vụ nối kết các thành viên
cùng sở thích trên Internet lại với nhau với nhiều mục đích khác nhau khôngphân biệt không gian và thời gian
Mạng xã hội đổi mới hoàn toàn cách cư dân mạng liên kết với nhau và trởthành một phần tất yếu của mỗi ngày cho hàng trăm triệu thành viên khắp thếgiới Mạng xã hội có những tính năng như chat, e-mail, phim ảnh, voice chat,chia sẻ file, blog và xã luận.Các dịch vụ này có nhiều phương cách để các thànhviên tìm kiếm bạn bè, đối tác: dựa theo group, theo thông tin cá nhân (như địachỉ e-mail hoặc screen name), hoặc dựa trên sở thích (như thể thao, phimảnh…), lĩnh vực quan tâm: kinh doanh, mua bán
Trang 191.1.2 Kiến trúc căn bản của mạng xã hội
Hình 1-1: Kiến trúc của mạng xã hội
Kiến trúc xã hội được mô tả trong hình 1-1 Kiến trúc của mạng xã hội baogồm tập hợp nhiều máy chủ đằng sau máy chủ chính Máy chủ chính có nhiệm
vụ nhận và hồi đáp một số yêu cầu từ phía client Các máy chủ dịch vụ sẽ cungcấp các chức năng và dịch vụ cho mạng xã hội Mỗi lần sử dụng các chức năngcủa mạng xã hội, người dùng phải kết nối với máy chủ cung cấp chức năng đó.Mỗi lần nhận lời gọi dịch vụ từ phía người sử dụng, các máy chủ dịch vụ phảixác thực xem người dùng đó có được quyền sử dụng dịch vụ hay không Cácmáy chủ dịch vụ thường hoạt động độc lập và tách biệt, thường không có sự liênkết chặt chẽ với nhau, do đó mà các thông tin đăng nhập và xác thực của ngườidùng đối với một máy chủ dịch vụ không thể dùng với các máy chủ khác Điềunày gây bất tiện cho người dùng khi phải nhập đi nhập lại thông tin xác thựccũng như không tối ưu hóa hiệu năng của hệ thống Do đó cần phải có một cơchế đăng nhập và xác thực tập trung mà tất cả các máy chủ dịch vụ đều tin tưởng
để người sử dụng có thể sử dụng được những dịch vụ mà mình mong muốn.Bên cạnh vấn đề xác thực người dùng, trong những lần người sử dụng kếtnối với các máy chủ dịch vụ, cần có một cơ chế bảo mật đường truyền để đảmbảo an toàn cho những thông điệp hay dữ liệu được truyền đi giữa người dùng
và máy chủ dịch vụ
Trang 201.1.3 Dự án mạng địa xã hội Foloyu
Mạng địa xã hội Foloyu là một mạng xã hội lấy địa điểm làm trung tâm đểkết nối mọi người với nhau Mạng địa xã hôi Foloyu ngoài các chức năng củamột mạng xã hội thông thường như kết bạn, cập nhật thông tin bạn bè, chia sẻ…còn có các chức năng liên quan đến vị trí của người dùng cũng như các địa điểmliên quan
Các chức năng chính của Foloyu gồm có:
Liên quan đến khía cạnh xã hội:
o Đăng kí, tạo lập trang cá nhân
o Tìm kiếm, kết bạn
o Cập nhật, chia sẻ, bình luận, đánh dấu (tag) các thông tin, hình ảnh, sựkiện, bài viết với bạn bè
Liên quan đến khía cạnh vị trí, địa điểm:
o Xác định địa điểm hiện tại của người dùng và chia sẻ vị trí của mình vớibạn bè
o Cho phép người dùng “check-in” vào một địa điểm
o Cho phép người dùng bình luận, đánh giá, đăng hình ảnh, video về địađiểm để tất cả người dùng trong hệ thống có thể tham khảo
o Tìn kiếm địa điểm dựa theo các tiêu chí của người dùng như tìm kiếmtheo khoảng cách hay theo mục đích
Hình 1-2 dưới đây là kiến trúc của mạng xã hội Foloyu:
Trang 21Hình 1-2: Kiến trúc của Foloyu
Mạng xã hội Foloyu có Foloyu Server đóng vai trò trung tâm có nhiệm vụnhận các yêu cầu và hồi đáp lại các yêu cầu của người dùng Phía sau FoloyuServer sẽ là các Engine bao gồm Profile Engine, Feed Engine, Location Enginecung cấp các dịch vụ cho Foloyu Server để đáp ứng được các yêu cầu gửi đếncủa người dùng Ngoài ra, hệ thống còn sử dụng các dịch vụ của Google mapsserver để thực hiện một số chức năng liên quan đến địa điểm Chúng ta có thểthấy rằng kiến trúc của Foloyu tương tự như kiến trúc của mạng xã hội thôngthường, do đó nó cũng sẽ cần có những giải pháp về vấn đề xác thực người dùng
và bảo mật kênh truyền giữa người dùng và các máy chủ dịch vụ
Phần này, tác giả sẽ trình bày về giải pháp để giải quyết các vấn đề đặt ra trong đồ án đó là giải pháp bảo mật cho mạng xã hội cũng như giải pháp để xây dựng các Engine cung cấp dịch vụ Sau đó, tác giả sẽ trình bày về việc áp dụng các giải pháp này vào trong mạng xã hội Foloyu
1.3.1 Giải pháp
a. Cho bài toán bảo mật cho mạng xã hội
Để giải quyết các vấn đề về cơ chế xác thực và bảo mật kênh truyền nêu trên,giải pháp được đưa ra là áp dụng giao thức Kerberos vào hệ thống mạng xã hội
Trang 22Hình 1-3: Mô tả hoạt động của Kerberos
Hình 1-3 mô tả tổng quan về cách hoạt động của Kerberos.Ở giao thứcKerberos, có một trung tâm tên là Key Distribution Center (KDC) bao gồm 2server: Authentication Server (AS) và Ticket Granting Server (TGS) và một cơ sở
dữ liệu Cơ sở dữ liệu chứa các thông tin về người dùng và các dịch vụ có trong hệthống AS sẽ có nhiệm vụ xác thực người dùng cho toàn bộ hệ thống Do đó sẽ giảiquyết được vấn đề đăng nhập một lần để người dùng có quyền xin vé để sử dụngcác dịch vụ trong hệ thống TGS sẽ có nhiệm vụ cung cấp các vé dịch vụ cho ngườidùng đã được xác thực Người sử dụng sẽ dùng các vé này để chứng thực với cácmáy chủ dịch vụ rằng mình có quyền sử dụng dịch vụ, do đó sẽ giải quyết được vấn
đề xác thực người dùng Bên cạnh đó, trong mỗi lần xin vé dịch vụ, TGS sẽ cungcấp một khóa phiên để người sử dụng cũng như các máy chủ dịch vụ dùng để mãhóa và giả mã các thông điệp trao đổi với nhau, do đó giải quyết được vấn đề bảomật kênh truyền
b. Cho việc xây dựng các Engine cung cấp dịch vụ
Các Engine cung cấp các dịch vụ cho mạng xã hội phải có tính độc lập, riêng biệt và không phụ thuộc vào nhau Bên cạnh đó, các engine cần phải có tính tái sử dụng cao, nghĩa là các engine không chỉ phục vụ cho một mạng xã hội nào đó mà còn có thể cung cấp dịch vụ cho các bên thứ ba khác nữa Những yêu cầu trong việcxây dựng các Engine đó chính là những ưu điểm nổi bật của Web Service Do đó, các Engine sẽ được triển khai thành các Web Service
Trang 231.3.2 Áp dụng giải pháp vào mạng xã hội Foloyu
a. Kiến trúc mạng xã hội Foloyu
Kiến trúc của mạng địa xã hội Foloyu được mô tả ở hình 1-4:
Hình 1-4: Kiến trúc mạng xã hội Foloyu
Mạng xã hội Foloyu có 1 server trung tâm là Foloyu Server có nhiệm vụ nhậncác yêu cầu và hồi đáp lại các yêu cầu của người dùng Phía sau Foloyu Server sẽ làcác Engine bao gồm Profile Engine, Feed Engine, Location Engine Các Engine này
sẽ cung cấp các dịch vụ cho Foloyu Server để Foloyu server đáp ứng được các yêucầu gửi đến của người dùng cũng như cung cấp các chức năng cho mạng Foloyu.Profile Engine cung cấp các dịch vụ như thiết lập trang cá nhân, quản lý và kết nốibạn bè, quản lý các thông tin cá nhân và tài khoản…Feed Engine cung cấp các dịch
vụ liên quan đến đăng các câu nói, bình luận, đăng hình ảnh, video…Cuối cùngLocation Engine cung cấp các dịch vụ liên quan đến địa điểm bao gồm xác định vịtrí người dùng,”check in” địa điểm, tìm kiếm địa điểm… Ngoài ra hệ thống có sửdụng các API của Google Map server cho 2 việc: thứ nhất là hiển thị bản đồ số; thứhai là thực hiện chỉ dẫn tìm đường đi giữa hai địa điểm Việc tìm chỉ dẫn thông quaGmaps API sẽ trả trực tiếp về cho phía client file KML và phía client sẽ tự thựchiện truy xuất thông tin để hiển thị trên Gmaps từ file KML này
b. Giải pháp áp dụng vào Foloyu:
Do kiến trúc của Foloyu là Foloyu Server đóng vai trò trung tâm nhận và hồiđáp lại các yêu cầu của người dùng nên Foloyu Server sẽ đóng vai trò là KeyDistribution Center (KDC) chứa cả Authentication Server và Ticket GrantingServer.Ở phía Engine, do Profile Engine có cơ sở dữ liệu chứa các thông tin liên
Trang 24quan đến người dùng cũng như các dịch vụ có trong hệ thống nên ProfileEngine sẽcung cấp các dịch vụ cho Authentication Server để có thể xác thực được ngườidùng Người dùng sau khi đã đăng nhập thành công sẽ được Ticket Granting Servercấp vé sử dụng các dịch vụ có trong hệ thống mà mình muốn Người dùng sau khinhận vé sẽ sử dụng dich vụ đó.
Bên cạnh đó, các Engine như Profile Engine, Location Engine, Feed Engine sẽđược triển khai dưới dạng web service cung cấp các dịch vụ cho Foloyu Server đápứng các yêu cầu của người dùng và thực hiện các chức năng của mạng xã hộiFoloyu
CHƯƠNG 2: Cơ sở lý thuyết
Nội của chương này sẽ trình bày các vấn đề sau:
2.1.1 Khái niệm Kerberos
Kerberos cung cấp một dịch vụ an toàn, đăng nhập một lần, tin cậy và xác thựcđược lẫn nhau
An toàn:
Trang 25Kerberos an toàn bởi vì nó không bao giờ truyền password qua mạng dướidạng bình thường Kerberos sử dụng các vé (ticket), các thông điệp mã hóa cógiới hạn thời gian để chứng tỏ định danh của người dùng đến 1 server nào đó màkhông cần phải gửi password qua mạng hay caching password trên ổ cứng củangười dùng.
Đăng nhập một lần (Single-Sign-on)
Single-sign-on có nghĩa là người dùng chỉ phải đăng nhập một lần để có thểtruy nhập vào tài nguyên và dịch vụ trên mạng Một khi người dùng đã xác thựcvới Kerberos ở đầu một phiên đăng nhập, định danh của người đấy sẽ đượctruyền đến các tài nguyên khác mà người dùng truy nhập đến
Tin cậy (Trusted Third party):
Kerberos làm việc thông qua một server trung tâm mà tất cả các hệ thốngtrong mạng đều tin tưởng.Tất cả các yêu cầu xác thực đều được điều chuyểnthông qua server trung tâm này
Xác thực lẫn nhau(Mutual Authentication)
Xác thực lẫn nhau đảm bảo rằng không chỉ xác thực người dùng mà còn xácthực cả server mà người dùng đang kết nối đến Xác thực lẫn nhau bảo vệ tính bảomật của các thông tin nhạy cảm bằng cách bảo đảm dịch vụ mà người dùng đangliên lạc là chính xác
2.1.2 Các thành phần và thuật ngữ được dùng trong Kerberos:
a. Realm
Realm để chỉ một domain quản trị xác thực Realm dùng để thiết lập giới hạn
mà trong đó một server xác thực có quyền được xác thực người dùng, host hayservice Sự xác thực không chỉ diễn ra giữa user và service trong cùng 1 realm
mà còn có thể giữa các realm với nhau
Tên của realm thường viết in hoa và phân biệt chữ hoa chữ thường
b. Principal
Tất cả các thực thể tồn tại trong hệ thống Kerberos bao gồm người dùng, máytính và các dịch vụ chạy trên các server đều có các principal gắn với các thực thể
đó Các principal này sẽ được lưu vào cơ sở dữ liệu của server xác thực
Một principal ở trong Kerberos 5 có dạng như sau:
component1/component2/ /componentN@REALM
Trang 26 Đối với người dùng :username[/instance]@REALM Instance là tùy
chọn và dùng để chỉ ra kiểu user(như admin, location manager) Ví dụ:
để thiết lập khóa phiên để các bên tham gia có thể liên lạc với nhau an toàn.Thời gian sống của Ticket khoảng từ 8 đến 24 giờ Thời gian sống này đảmbảo sự tiện lợi của đăng nhập một lần và sự an toàn cho hệ thống
Một số trường chính trong ticket:
Tên principal của người dùng có yêu cầu (thường chính là tên đăngnhập)
Tên dịch vụ mà người dùng muốn sử dụng
Thời gian có hiệu lực và thời gian hết hạn
Thời gian sống tối đa của 1 ticket
Một list các địa chỉ IP của các máy phía client mà ticket có thể được sửdụng
Khóa phiên cho quá trình liên lạc giữa người dùng và server dịch vụ
d. Mã hóa trong Kerberos:
Kiểu mã hóa:
Kerberos 4 chỉ sử dụng kiểu mã hóa DES 56 bit Tuy nhiên ở trongKerberos 5 không định ra một kiểu mã hóa nào cả mà tùy vào từngtrường hợp cài đặt Một số kiểu mã hóa được Kerberos 5 hỗ trợ như làRC4-HMAC, 3DES, AES128, AES256
Khóa băm:
Trang 27Password của người dùng và của các dịch vụ sẽ được băm bởi 1 hàm bămmột chiều có tên là string2key tạo thành khóa băm.
Khái niệm salt:
Salt là một chuỗi được ghép vào password chưa được băm, chuỗi ghépnối sau đó sẽ được đưa vào hàm string2key để tạo nên khóabăm.Kerberos 5 sử dụng tên principal để làm salt
Ví dụ: Kpippo = string2key (Ppippo + "pippo@EXAMPLE.COM" )
Ppippo là khóa chưa được băm của user Kpippo là khóa đã được băm.Mục đích của Salt:
o Hai principal trong cùng 1 realm, cùng 1 password có thể có khóađược mã hóa khác nhau
o Một người dùng có 2 tài khoản ở 2 realm khác nhau có cùngpassword sẽ có khóa được mã hóa khác nhau
e. Trung tâm phân phối khóa (Key Distribution Center):
Trung tâm phân phối khóa (KDC) đóng một vai trò rất quan trọng trong hệ thống Kerberos KDC chứa 3 thành phần: cơ sở dữ liệu, Authentication Server
và Ticket Granting Server
Cơ sở dữ liệu:
Cơ sở dữ liệu chứa các dữ liệu liên quan đến người dùng và các dịch vụ
có trong hệ thống.Mỗi một entry chứa các thông tin sau:
o Tên của principal mà entry liên kết đến
o Khóa đã được băm
Ngoài ra cón có thể chứa các thông tin sau:
o Thời gian tồn tại tối đa của một vé gắn với principal
o Thời gian tối đa một vé gắn với principal có thể được làm mới
o Các thuộc tính hay các cờ xác định trạng thái của vé
o Thời gian hết hạn của password
o Thời gian hết hạn của principal
Authentication Server:
Trang 28Authentication Server (AS) có nhiệm vụ cấp phát một Ticket GrantingTicket (TGT) đã được mã hóa bởi khóa bí mật của Ticket GrantingServer (TGS) cho người dùng khi người dùng đăng nhập vào hệthống Người dùng sau đó sẽ dùng TGT để gửi các yêu cầu đến TGS
để được cấp phát các vé dịch vụ
Ticket Granting Server:
Ticket Granting Server (TGS) cấp phát các vé dịch vụ khi được yêucầu bởi người dùng TGS nhận 2 dữ liệu từ người dùng: 1 vé yêu cầubao gồm tên của principal đại diện cho dịch vụ mà người dùng muốnkết nối đến và TGT hợp lệ được cấp phát bởi Authentication Servercho người dùng
f. Khóa phiên (Session Key)
Khóa được tạo ra bởi KDC được chứa trong các ticket được cấp phát đượcgọi là khóa phiên Khóa phiên được dùng để thiết lập một kênh truyền bảo mậtgiữa người dùng và server dịch vụ bằng cách dùng khóa phiên mã hóa cácmessage trao đổi giữa người dùng và server dịch vụ
g. Authenticator
Ngay cả khi người dùng có ticket và chỉ có server dịch vụ có thể lấy ra đượcthông tin, điều đó cũng không đảm bảo tính xác thực của người dùng Một kẻmạo danh có thể lấy được ticket khi nó được gửi đến server dịch vụ và sau đó,đến một thời điểm thích hợp, kẻ mạo danh này lại gửi ticket này để có thể sửdụng dịch vụ.Để giải quyết vấn đề này, người ta áp dụng giải pháp sau: bêncạnh việc gửi yêu cầu bao gồm ticket, người dùng còn thêm 1 gói tin xác thựcauthenticator gồm có principal của người dùng và nhãn thời gian, mã hóa bởikhóa phiên.Sau khi nhận được gói tin yêu cầu, phía server dịch vụ sẽ giải mãticket và lấy ra khóa phiên, sau đó sẽ giải mã authenticator để có thể lấy ra đượcnhãn thời gian Nếu nhãn thời gian chênh lệch với thời gian server không quá 2phút, quá trình xác thực thành công
h. Replay Cache
Khả năng để kẻ giả mạo có thể đánh cắp cả ticket và authenticator và sửdụng trong khoảng thời gian 2 phút là có thể xảy ra Để giải quyết vấn đề này,người ta sử dụng Replay Cache Ở phía server dịch vụ, có 1 bộ nhớ lưu trữ tất cảcác authenticator trong khoảng thời gian 2 phút và sẽ từ chối các authenticatornếu chúng được lặp lại
Trang 29i. Credential cache
Credential cache là nơi lưu trữ các ticket được cấp phát Những thông tin màcredential cache bao gồm: principal của người dùng, một tập các service ticket
mà người dùng nhận được trong một phiên đăng nhập
2.1.3 Mô tả giao thức Kerberos
Hình 2-5: Chi tiết hoạt động giao thức Kerberos
Dưới đây là mô tả một phiên hoạt động của trong giao thức Kerberos
Trong quá trình mô tả, chúng ta có một số kí hiệu cần chú ý như sau:
o AS = Máy chủ chứng thực (authentication server)
o TGS = Máy chủ cấp vé (ticket granting server)
o SS = Máy chủ dịch vụ (service server).
o A= (B,C): Gói tin A chứa 2 dữ liệu B và C
o A = B || C: Gói tin A có gồm có 2 gói tin B và C
o {D}K: Gói tin D được mã hóa bởi khóa K
Trang 30Hoạt động của giao thức Kerberos có thể tóm tắt như sau: đầu tiên, người sửdụng chứng thực mình với máy chủ chứng thực AS, sau đó chứng minh với máychủ cấp vé TGS rằng mình đã được chứng thực để nhận vé sử dụng dịch vụ, cuốicùng chứng minh với máy chủ dịch vụ SS rằng mình đã được chấp thuận để sửdụng dịch vụ.
Bước 1: Người sử dụng nhập tên và mật khẩu tại máy tính của mình (máy
khách) Sau đó, phần mềm máy khách thực hiện hàm băm một chiều trên mậtkhẩu nhận được Kết quả sẽ được dùng làm khóa bí mật của người sử dụng
Bước 2: Phần mềm máy khách gửi một gói tin (không mật mã hóa) AS_REQ tới
máy chủ dịch vụ AS để yêu cầu dịch vụ Nội dung của gói tin là:
AS_REQ = (Principal Client , Principal Service , IP_list , Lifetime )
Trong đó:
o PrincipalClient là principal gắn với người dùng
o PrincipalService là principal gắn với service được yêu cầu vé (chính là TGS),thường là:krbtgt/REALM@REALM
o IP_list là một danh sách các địa chỉ IP nơi có thể sử dụng các ticket đượccấp phát này.IP_list có thể rỗng
o Lifetime là thời gian tồn tại được yêu cầu của ticket
Bước 3: AS kiểm tra PrincipalClient và PrincipalService có nằm trong cơ sở dữliệu của mình không Nếu có thì AS thực hiện công việc sau:
o Tạo ra khóa phiên giữa TGS và máy khách kí hiệu là SKTGS
o Tạo ra Ticket Granting Ticket (TGT bao gồm các dữ liệu sau:
TGT = (Principal Client , Principal Service , IP_list , Timestamp , Lifetime ,
SK TGS )
Trong đó:
+ PrincipalClient , PrincipalService, IP_list lấy ở AS_REQ
+ Timestamp: thời gian tạo vé (lấy theo thời gian của KDC)
+ Lifetime: thời gian sống của TGT
o Tạo ra gói tin AS_REP gửi cho máy khách với nội dung sau:
AS_REP = {Principal Service , Timestamp , Lifetime , SK TGS }K User || { TGT }K TGS
Trang 31Trong đó: KUser là khóa bí mật của user, KTGS là khóa bí mật của TGS.
Bước 4: Khi nhận được gói tin AS_REP trên, phần mềm máy khách giải mã
một phần của gói tin để có khóa phiên với TGS bằng password của mình cònTGT được lưu trong credential cache của người dùng Tại thời điểm này,người dùng có thể lấy vé TGT để gửi đến TGS để xin vé dịch vụ
Bước 5: Khi yêu cầu vé dịch vụ, phần mềm bên phía người dùng phải làm các
công việc sau:
o Tạo ra phần xác thực authenticator (bao gồm định danh người sử dụng vàthời điểm yêu cầu), mật mã hóa với "Khóa phiên TGS/máy khách"
Authenticator = {Principal Client , Timestamp }SK TGS
o Tạo ra gói tin TGS_REQ bao gồm: principal của dịch vụ cần kết nối, thờigian tồn tại của vé mong muốn, phần xác thực và TGT được mã hóa bởikhóa của TGS
TGS_REQ = (Principal Service , Lifetime , Authenticator) || { TGT }K TGS
Bước 6: Khi nhận được gói tin TGS_REQ, TGS kiểm tra service được yêu
cầu có ở trong cơ sở dữ liệu của KDC hay không.Nếu tồn tại TGS sẽ mởTGT bằng khóa của nó và lấy được khóa phiên SKTGS,khóa này dùng để giải
mã phần xác thực authenticator Để có thể cấp phát được service ticket, cácđiều kiện sau phải thỏa mãn:
o Vé TGT chưa hết hạn
o PrincipalClient ở trong authenticator phải khớp với ở trong TGT
o Authenticator không có trong replay cache và chưa hết hạn
o Nếu IP_List không rỗng thì nó sẽ kiểm tra địa chỉ IP nguồn của gói tinTGS_REQ phải có trong IP_List
Tất cả các điều kiện trên thỏa mãn chứng tỏ rằng TGT thực sự thuộc vềngười dùng gửi yêu cầu này và do đó TGS bắt đầu tiến trình phản hồi lại nhưsau:
o Tạo ra khóa phiên giữa máy khách và máy chủ dịch vụ.Kí hiệu là SKService
o Tạo ra một service ticket có các nội dung sau: PrincipalClient lấy trongauthenticator, PrincipalService lấy trong AP_REQ, danh sách các địa chỉIP,thời gian tạo vé,thời gian sống của vé, khóa phiên với service server
Trang 32T Service = (Principal Client , Principal Service , IP_list ,Timestamp , Lifetime ,
SK Service )
o TGS gửi lại máy khách gói tin TGS_REP với nội dung sau:
TGS_REP = {Principal Service , Timestamp , Lifetime , SK Service }SK TGS ||{
T Service }K Service
Trong đó: KService là khóa bí mật của server dịch vụ mà người dùng muốn
sử dụng
Bước 7: Khi nhận được gói tin TGS_REP, người dùng giải mã một phần
của gói tin bằng SKTGS lấy trong credential cache để có được khóa phiên
SKService và lưu trữ khóa này cùng với vé dịch vụ nhận được Đến lúc này,người dùng đã đủ thông tin để gửi yêu cầu đến máy chủ dịch vụ bằng cách:
o Tạo ra phần xác thực authenticator mới, bao gồm chỉ danh người sử dụng,thời điểm yêu cầu và được mật mã hóa với khóa phiên máy chủ dịch vụ/máy khách SKService
Authenticator = { Principal Client , Timestamp }SK Service
o Tạo ta gói tin AP_REQ gửi đến cho máy chủ dịch vụ với nội dung baogồm:phần xác thực authenticator và service ticket nhận được ởTGS_REP
AP_REQ = Authenticator || {T Service }K Service
Bước 8: Máy chủ dịch vụ SS giải mã service ticket bằng khóa bí mật của
mình để có được khóa phiên, khóa phiên này lại được dùng để mở phầnauthenticator Để xác định người dùng có quyền sử dụng dịch vụ, các điềukiện sau phải thỏa mãn:
o Service ticket chưa hết hạn
o PrincipalClient ở trong authenticator phải khớp với ở trong vé dịch vụ
o Authenticator không có trong replay cache và chưa hết hạn
o Nếu IP_List ở trong service ticket không rỗng thì nó sẽ kiểm tra địa chỉ
IP nguồn của gói tin AP_REQ phải có trong IP_List
Sau khi các điều kiện trên được thỏa mãn, SS sẽ gửi lại gói tin AP_REP vớinội dung: Thời điểm trong gói tin AP_REQ cộng thêm 1, mật mã hóa vớikhóa phiên máy chủ dịch vụ/máy khách SKService
AP_ REP = {Timestamp + 1} SK Service
Trang 33 Bước 9: Máy khách giải mã gói tin xác nhận và kiểm tra thời gian có được
cập nhật chính xác Nếu đúng thì người sử dụng có thể tin tưởng vào máychủ SS và bắt đầu gửi yêu cầu sử dụng dịch vụ
Bước 10: Máy chủ cung cấp dịch vụ cho người sử dụng thông qua kênh
truyền thiết lập bởi SKService
2.2.1 Định nghĩa Web Service
Theo định nghĩa của W3C (World Wide Web Consortium), dịch vụ Web làmột hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứngdụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và sựgắn kết của nó được mô tả bằng XML
2.2.2 Ưu, nhược điểm của Web Service
o Nâng cao khả năng tái sử dụng
o Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phépcác tiến trình/chức năng nghiệp vụ đóng gói trong giao diện dịch vụ Web
o Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phầntrong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán
o Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thànhhoạt động, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thốngcủa các doanh nghiệp khác
Nhược điểm:
o Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của Dịch vụWeb, giao diện không thay đổi, có thể lỗi nếu một máy khách khôngđược nâng cấp, thiếu các giao thức cho việc vận hành
o Có quá nhiều chuẩn cho dịch vụ Web khiến người dùng khó nắm bắt
o Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật
Trang 342.2.3 Một số khái niệm cơ bản trong Webservice
a. Simple Object Access Protocol (SOAP)
SOAP là một giao thức đơn giản nhằm mục đích trao đổi thông tin trong môitrường ứng dụng phân tán SOAP dựa trên nền công nghệ XML và bao gồm 2 thànhphần:
Một “bì thư” (envelope) để quản lý các thông tin mở rộng và mang tínhđiều khiển
Một chuẩn mã hóa quy định cách thể hiện thông tin trong envelope.SOAP có thể được sử dụng kết hợp với các giao thức chuẩn khác như SMTP,HTTP/HTTPS, FTP… Tuy nhiên hiện nay chỉ mới có HTTP/HTTPS được xem nhưgiao thức chuẩn để trao đổi gói tin SOAP Việc sử dụng SOAP như một giao thứctrao đổi dữ liệu chuẩn khiến WebService có khả năng hoạt động trên nhiều môitrường lập trình khác nhau như Java, NET,…
Gói tin SOAP là một phương tiện giao tiếp một chiều từ nơi gửi đến nơi nhận.Gói tin SOAP được gửi bên trong một gói tin HTTP request hoặc gói tin HTTPresponse Cấu trúc chung của một gói tin SOAP được mô tả ở hình 2-2 dưới đây:
Hình 2-6: Cấu trúc chung của SOAP
Protocol Header: Cho biết thông tin về các chuẩn giao thức được sử dụng
SOAP Envelope: Phần Envelope là node gốc của gói tin SOAP dưới dạngtài liệu XML SOAP Envelope có 2 thành phần sau:
Trang 35o SOAP Header: Phần Header thường là nơi được dùng để thêm cácthông tin bổ sung phục vụ cho mục đích riêng của chương trình Cácthông tin thường được thêm vào phần Header là authentication,authorization, quản lý transaction… Phần Header không bắt buộc phải
có trong mọi gói tin SOAP
o SOAP body: Phần Body chứa các thông tin về lời gọi hàm, ví dụ nhưtên hàm cần gọi, các tham số đầu vào, giá trị trả về … để phục vụ choviệc gọi hàm từ xa Ngoài ra còn có trường lỗi được dùng để gửi cácweb service exception
b. Web Services Description Language (WSDL)
Khi chúng ta đã xây dựng hoàn thành WebService cần phải cung cấp tài liệu mô
tả để các nhà phát triển client có thể sử dụng được WebService trên Tài liệu mô tảWebService cần mô tả được vị trí WebService, các hàm nó cung cấp, tham số kèmtheo…
Tài liệu WSDL là một tài liệu thỏa mãn các nhu cầu trên WSDL (WebServiceDefinition Language) là một ngôn ngữ dựa trên cú pháp XML dùng để định nghĩamột WebService Nói cách khác, một file WSDL như một người trung gian đứnggiữa WebService và ứng dụng WebService client Trong tài liệu WSDL, chúng ta sẽđịnh nghĩa các phương thức được WebService hỗ trợ, các kiểu dữ liệu được xửdụng trong các phương thức cùng các thông điệp đượ trao đổi giữa client và serverứng với mỗi phương thức Chúng ta chỉ phải định nghĩa các kiểu dữ liệu phức tạpnhư mảng, các lớp được khai báo thêm trong chương trình, mảng các lớp … còn cáckiểu dữ liệu cơ bản như int, string, float … đã được hỗ trợ sẵn Sau đó, chúng ta gộpchung các định nghĩa này kết hợp với các giao thức mạng bên dưới để hình thànhmột end-point
Trang 36Hình 2-7: Mô tả End-point
Một endpoint interface (gọi tắt là một endpoint) gồm có nhiều ports, mỗi portquy định một cách liên lạc với WebService khác nhau ứng với mỗi giao thức bêndưới khác nhau Sự kết hợp của WebService với một giao thức mạng như thế đượcgọi là một binding, như trên hình 2-3 chúng ta thấy có 3 binding khác nhau Port 1
sử dụng SOAP/HTTP binding, Port 2 sử dụng SOAP/HTTPS binding, Port 3 sửdụng các dạng binding khác Như vậy ứng với WebService trên, ta có đến 3 phươngtiện khác nhau để triệu gọi các hàm Các hình thức binding thông dụng nhất hiệnnay vẫn là SOAP/HTTP POST và SOAP/HTTPS (hỗ trợ bảo mật thông qua SSL).Một tài liệu WSDL thực chất chỉ là một danh sách các định nghĩa Trong mộtfile WSDL, phần tử gốc được đặt tên là "definitions" Phần tử này chứa năm phần
tử con chính để định nghĩa WebService Thứ tự xuất hiện của các phần tử con này:
Phần tử "types": định nghĩa các kiểu dữ liệu dùng để trao đổi giữa client
và server (chỉ định nghĩa các kiểu dữ liệu phức tạp như structure,class…)
Phần tử "message": định nghĩa các thông điệp được trao đổi
Phần tử "portType": định nghĩa một tập các chức năng WebService hỗtrợ
và thông điệp tương ứng đối với mỗi chức năng đó
Phần tử "binding": Sau khi đã định nghĩa các port, ta cần chỉ rõ ràng buộcgiữa các ports này và các giao thức tầng dưới Phần tử binding sẽ đảmnhiệm chức năng này
Phần tử "service": Có tác dụng gom các ports đã định nghĩa thành từngnhóm
2.2.4 Các thành phần tham gia trong Web Service
Hình 2-4 cho ta thấy các thành phần tham gia vào Web Service
Trang 37Hình 2-8: Thành phần tham gia Web Service
Bên đăng ký và lưu trữ dịch vụ(Service Registry): Chứa thông tin về các dịchvụ
Bên cung cấp dịch vụ (Service Provider): Chính là phía tạo ra dịch vụ vàmuốn đưa dịch vụ đến xã hội Nhà cung cấp cần cung cấp các thông tin vềdịch vụ của mình và đăng ký tại bên lưu trữ dịch vụ (Service Registry)
Bên sử dụng dịch vụ (Service Consumer): Chính là những đối tượng sử dụngcác dịch vụ được tạo ra và triển khai bởi phía nhà cung cấp Phía bên sử dụng
sẽ phải thực diện các giao dịch, thỏa thuận với phía nhà cung cấp để được sửdụng dịch vụ Bên sử dụng có thể tìm kiếm các thông tin về dịch vụ tại nơilưu trữ (Service Registry)
2.2.5 Nguyên lý hoạt động của các thành phần tham gia web service
Bên cung cấp dịch vụ (Service Provider): Dùng Web ServicesDescription Language (WSDL) để mô tả dịch vụ mà mình có thể cungcấp cho Service Registry
Bên đăng ký và lưu trữ dịch vụ (Service Registry): Lưu trữ thông tin vềcác service được cung cấp bởi các Service Provider Cung cấp chức năngtìm kiếm hỗ trợ Service Requester (Service Consumer) trong việc xácđịnh Service Provider phù hợp Thành phần chính của Service Broker làUniversal Discovery, Description, and Integration (UDDI) repositories
Trang 38 Bên sử dụng dịch vụ (Service Consumer): Dùng WSDL để đặc tả nhu cầu
sử dụng (loại service, thời gian sử dụng, resource cần thiết, mức giá ) vàgửi cho Service Registry Bằng việc sử dụng UDDI và chức năng tìmkiếm của Service Registry, Service Consumer có thể tìm thấy ServiceProvider thích hợp Ngay sau đó, giữa Service Consumer và ServiceProvider thiết lập kênh giao tiếp sử dụng SOAP để thương lượng giá cả
và các yếu tố khác trong việc sử dụng service
Trang 39Phần 2: Các kết quả đạt được
CHƯƠNG 3: Phân tích thiết kế hệ thống
Nội của chương này sẽ trình bày các vấn đề sau:
o Phân tích và thiết kế cho bài toán bảo mật cho mạng xã hội Foloyu
o Phân tích và thiết kế cho Profile Engine
3.1.1 Thiết kế kiến trúc của mạng Foloyu áp dụng Kerberos
Ta có sơ đồ kiến trúc mạng Foloyu áp dụng giao thức Kerberos được thể hiện ở hình 3-1 dưới đây:
Hình 3-9: Kiến trúc Foloyu áp dụng Kerberos
Authentication Server (AS) và Ticket Granting Server (TGS) sẽ được đặt
ở Foloyu Server trong đó AS sẽ làm nhiệm vụ xác thực người dùng cònTGS sẽ làm nhiệm vụ cấp phát vé dịch vụ cho người dùng đã được chứngthực
Trang 40 Profile Engine có cơ sở dữ liệu chứa thông tin về người dùng trong hệthống và các dịch vụ được cung cấp trong hệ thống Do đó, ProfileEngine sẽ cung cấp dịch vụ để AS có thể xác thực được người dùng.
Các Engine như Profile, Location, Feed cung cấp các dịch vụ cho FoloyuServer khi có yêu cầu
Ở phía client, các vé dịch vụ và các khóa phiên dùng để giải mã và mãhóa các thông điệp trong các phiên giao dịch với các máy chủ dịch vụ sẽđược lưu trong cookie bởi web browser.Thuật toán dùng để mã hóa vàgiải mã các thông điệp là thuật toán AES (Advanced EncryptionStandard), là một thuật toán mã hóa khối được chính phủ Hoa Kỳ ápdụng làm tiêu chuẩn mã hóa
Ở phía Foloyu Server, các khóa phiên cũng như các khóa bí mật của cácmáy chủ dịch vụ sẽ được lưu trong bộ nhớ của Foloyu Server để có thểgiải mã và mã hóa các thông điệp
3.1.2 Mô tả cấu trúc các thông điệp trong hệ thống
Sau khi đã có một cái nhìn tổng quan về cách giao thức Kerberos xác thực vàthiết lập bảo mật kênh truyền, phần này chúng ta sẽ đi sâu hơn về việc mô tả cácthông điệp được trao đổi giữa Foloyu Server và phía client
a. Chú thích một số kí hiệu
Kí hiệu Mô tả
A= (B,C) Gói tin A chứa 2 dữ liệu B và C
A = B || C Gói tin A có gồm có 2 gói tin B và C
{D}K Gói tin D được mã hóa bởi khóa K
b. Authentication Server Request (AS_REQ)
Tại màn hình đăng nhập vào hệ thống, người dùng sẽ gõ tên đăng nhập vàmật khẩu của mình vào Mật khẩu của người dùng sẽ được băm ra đểdùng làm khóa bí mật của người dùng Thuật toán băm được sử dụng làthuật toán băm MD5 với giá trị băm dài 128 bit