TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
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
Sinh viên thực hiện : Nguyễn Quang Đức
Lớp Công Nghệ Phần Mềm – K51
Giáo viên hướng dẫn: TS Nguyễn Khanh Văn
HÀ NỘI 5-2011
2
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:
Lớ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
4. Lời cam đoan của sinh viên
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
3
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 tồn văn của bất
kỳ cơng trình nào khác.
Hà Nội, ngày tháng năm
Tác giả ĐATN
Nguyễn Quang Đức
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép
bảo vệ:
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
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
4
TÓ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ười
tham gia.Việc thu hút được nhiều người tham gia như vậy khiến cho các nhà phát
triể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 tồ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ào
mạng địa xã hội Foloyu. Bên cạnh đó, để có thể triển khai và thử nghiệm giải pháp
một cách hiệu quả, trong đồ án, tác giả cũng sẽ trình bày việc xây dựng Profile
Engine được triển khai dưới dạng Web Service.Profile Engine này vừa có chức
nă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ện
giải pháp Kerberos.
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
5
ABSTRACT OF THESIS
Nowadays, social network has been developing very rapidly and there are
millions of people joining this network. Attracting a lot of people makes developers
never stop expanding their services to provide various functions and features for
their social network.In addition, such a large number of people taking part in their
network make them pay more attention to some security problems of social
network.
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 exchanging
message.
Through studying and researching, I have identified that Kerberos is the best
solution to meet the requirement of authentication mechanism and secure protocol.
Based on Kerberos, I wil build a solution to the problem mentioned above and
apply this solution to the geo-social network Foloyu. Beside, in order to test and
deploy the solution effectively, in this thesis, I will build a Profile Engine which is
deployed as Web Service.This Engine will provide some services for Foloyu and
some services for Kerberos-based solution.
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
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
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
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,
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,
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
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.
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
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
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
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
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
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
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.
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
Đồ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
Đạ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á
trong nhóm dự án Foloyu đã giúp đỡ mình rất nhiều trong quá
trình thực hiện đồ án.
trình thực hiện đồ án.
Hà Nội, ngày 27 tháng 05 năm 2011
Hà Nội, ngày 27 tháng 05 năm 2011
Sinh viên
Sinh viên
Lớp
Lớp
Viện
Viện
Thông
Thông
: : Nguyễn Quang Đức
Nguyễn Quang Đức
: : Công nghệ phần mềm ––K51
Công nghệ phần mềm K51
: : Công nghệ Thông tin Và Truyền
Công nghệ Thông tin Và Truyền
Đại học Bách Khoa Hà Nội
Đại học Bách Khoa Hà Nội
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
7
Mụ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
ABSTRACT OF THESIS.............................................................................................5
LỜI CẢM ƠN...............................................................................................................6
Mục lục.........................................................................................................................7
Danh mục các hình.......................................................................................................8
Danh mục các bảng.....................................................................................................10
Danh mục từ viết tắt và thuật ngữ..............................................................................12
Phần mở đầu...............................................................................................................13
Phần 1: Đặt vấn đề và định hướng giải pháp.............................................................15
Tổng quan đề tài và định hướng giải pháp.................................................................15
Cơ sở lý thuyết............................................................................................................21
Phần 2: Các kết quả đạt được.....................................................................................36
Phân tích thiết kế hệ thống.........................................................................................36
Cài đặt, triển khai và thử nghiệm hệ thống................................................................53
Kết Luận......................................................................................................................68
Phụ lục........................................................................................................................70
TÀI LIỆU THAM KHẢO..........................................................................................79
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
8
Danh mục các hình
Hình 1-1: Kiến trúc của mạng xã hội.........................................................................16
Hình 1-2: Kiến trúc của Foloyu..................................................................................18
Hình 1-3: Mơ tả hoạt động của Kerberos...................................................................19
Hình 1-4: Kiến trúc mạng xã hội Foloyu...................................................................20
Hình 2-5: Chi tiết hoạt động giao thức Kerberos.......................................................26
Hình 2-6: Cấu trúc chung của SOAP.........................................................................31
Hình 2-7: Mơ tả End-point.........................................................................................33
Hình 2-8: Thành phần tham gia Web Service............................................................34
Hình 3-9: Kiến trúc Foloyu áp dụng Kerberos..........................................................36
Hình 3-10: Message AS_REQ...................................................................................38
Hình 3-11: Message AS_REP....................................................................................39
Hình 3-12: Message TGS_REQ.................................................................................39
Hình 3-13: Message TGS_REP..................................................................................40
Hình 3-14: Message AP_REQ...................................................................................41
Hình 3-15: Message AP_REP....................................................................................42
Hình 3-16: Use Case tổng quát cho Profile................................................................42
Hình 3-17: Use Case quản lý tài khoản người dùng..................................................43
Hình 3-18: Use Case quản lý thơng tin cá nhân người dùng.....................................44
Hình 3-19: Use Case quản lý thiết lập riêng tư về thơng tin.....................................45
Hình 3-20: Use Case quản lý bạn bè..........................................................................45
Hình 3-21: Database Diagram....................................................................................47
Hình 4-22: Sơ đồ hoạt động của Foloyu....................................................................54
Hình 4-23: Các lớp cài đặt cho bài tốn bảo mật.......................................................54
Hình 4-24: Sơ đồ lớp cài đặt cho Profile Engine.......................................................56
Hình 4-25: Sơ đồ các lớp cài đặt ở Foloyu Server.....................................................61
Hình 4-26: Sơ đồ hoạt hộng của Foloyu....................................................................64
Hình 4-27: Màn hình trang chủ phía Profile..............................................................65
Hình 4-28: Màn hình chức năng xem danh sách bạn bè............................................65
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
9
Hình 4-29: Màn hình chức năng xem danh sách yêu cầu kết bạn.............................66
Hình 4-30: Màn hình chức năng xem danh sách gợi ý kết bạn.................................66
Hình 4-31: Màn hình chức năng Edit Account..........................................................66
Hình 4-32: Màn hình chức năng Edit Privacy...........................................................67
Hình 5-33: Use Case quản lý tài khoản người dùng..................................................71
Hình 5-34: Use Case quản lý thơng tin cá nhân người dùng.....................................73
Hình 5-35: Use Case quản lý thiết lập riêng tư về thông tin.....................................74
Hình 5-36: Use Case quản lý bạn bè..........................................................................76
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
10
Danh mục các bảng
Bảng 3-1: Mô tả bảng User........................................................................................48
Bảng 3-2: Mô tả bảng Friend.....................................................................................49
Bảng 3-3: Mô tả bảng SuggestFriend.........................................................................49
Bảng 3-4: Mô tả bảng ChallengeQuestion.................................................................50
Bảng 3-5: Mô tả bảng Answer...................................................................................50
Bảng 3-6: Mô tả bảng PrivacyCategory.....................................................................51
Bảng 3-7: Mô tả bảng UserPrivacyType....................................................................51
Bảng 3-8: Mô tả bảng UserPrivacySetting................................................................52
Bảng 3-9: Mô tả bảng Principal.................................................................................52
Bảng 4-10: Các hàm chức năng quản lý tài khoản người dùng.................................58
Bảng 4-11: Các hàm chức năng quản lý thông tin người dùng.................................59
Bảng 4-12: Các hàm cho chức năng thiết lập riêng tư về thông tin cá nhân.............59
Bảng 4-13: Các hàm cho chức năng quản lý bạn bè..................................................60
Bảng 4-14: Các hàm chức năng khác.........................................................................61
Bảng 5-15: Đặc tả chức năng đăng kí........................................................................71
Bảng 5-16: Đặc tả chức năng đăng nhập...................................................................71
Bảng 5-17: Đặc tả chức năng đăng xuất....................................................................72
Bảng 5-18: Đặc tả chức năng thay đổi mật khẩu.......................................................72
Bảng 5-19: Đặc tả chức năng phục hồi mật khẩu......................................................72
Bảng 5-20: Đặc tả chức năng kích hoạt/vơ hiệu hóa tài khoản.................................73
Bảng 5-21: Đặc tả chức năng xem thông tin cá nhân của người khác......................73
Bảng 5-22: Đặc tả chức năng chỉnh sửa thông tin người dùng.................................74
Bảng 5-23: Đặc tả chức năng xem thiết lập thông tin riêng tư..................................75
Bảng 5-24: Đặc tả chức năng Thay đổi thiết lập thông tin riêng tư..........................75
Bảng 5-25: Đặc tả chức năng gửi yêu cầu kết bạn.....................................................76
Bảng 5-26: Đặc tả chức năng xem yêu cầu kết bạn...................................................76
Bảng 5-27: Đặc tả chức năng trả lời yêu cầu kết bạn................................................77
Bảng 5-28: Đặc tả chức năng gợi ý bạn bè................................................................77
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
11
Bảng 5-29: Đặc tả chức năng xem danh sách gợi ý bạn bè.......................................77
Bảng 5-30: Đặc tả chức năng gợi ý kết bạn...............................................................78
Bảng 5-31: Đặc tả chức năng xem danh sách bạn bè................................................78
Bảng 5-32: Đặc tả chức năng tìm kiếm bạn bè..........................................................78
Bảng 5-33: Đặc tả chức năng xóa bạn bè...................................................................79
Bảng 5-34: Đặc tả chức năng tìm kiếm người dùng..................................................79
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
12
Danh mục từ viết tắt và thuật ngữ
STT
Từ viết tắt
/thuật ngữ
Mơ tả
1
KDC
Key Distribution Center – Trung Tâm phân phối
khóa
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 tố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
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
13
Phầ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ên
nhữ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 trong
và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ấp
cho 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ích
hợ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ều
má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ác
thự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ừa
gâ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ỗi
dị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ía
ngườ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ác
má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ụng
cá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ền
thơ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 Profile
Engine đóng vai trị là một máy chủ cung cấp dịch vụ cho mạng xã hội Foloyu.
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
14
Đồ á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ết
chính để giải quyết vấn đề trong đồ án.Đó là giao thức Kerberos và Web
Service
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ệc
phâ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ựng
Profile 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
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
15
Phần 1: Đặt vấn đề và định hướng giải pháp
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
1.1.
Tổng quan về mạng xã hội
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ơng
phâ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ành
viên tìm kiếm bạn bè, đối tác: dựa theo group, theo thông tin cá nhân (như địa
chỉ 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...
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
16
1.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 bao
gồ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ẽ cung
cấ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ăng
củ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ải
xác thực xem người dùng đó có được quyền sử dụng dịch vụ hay khơng. Các
má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ên
kế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ười
dù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ều
nà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ực
cũ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ết
nố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 để đảm
bả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ụ.
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
17
1.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 ngồi các chức năng của
mộ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ểm
liê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ới
bạ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ếm
theo 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:
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
18
Hì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 Foloyu
Server sẽ là các Engine bao gồm Profile Engine, Feed Engine, Location Engine
cung cấp các dịch vụ cho Foloyu Server để đáp ứng được các yêu cầu gửi đến
của người dùng. Ngoài ra, hệ thống còn sử dụng các dịch vụ của Google maps
server để 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ông
thườ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ụ.
1.2.
Các vấn đề cần giải quyết
Dựa vào đặc điểm và kiến trúc của mạng xã hội phân tích ở phần trên, có 3
vấn đề chính cần phải giải quyết trong đồ án:
Xây dựng cơ chế đăng nhập một lần và xác thực để người sử dụng có thể
sử dụng tất các dịch vụ mà hệ thống cung cấp.
Xây dựng một cơ chế bảo mật đường truyền giữa các lần liên lạc giữa
phía người dùng và phía máy chủ dịch vụ.
Xây dựng các máy chủ dịch để có thể cung cấp các dịch vụ cho mạng xã
hội, cụ thể nhiệm vụ trong đồ án của em là xây dựng Profile Engine.
1.3.
Định hướng giải quyết các vấn đề đặt ra
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.
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
19
Hì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ức
Kerberos, có một trung tâm tên là Key Distribution Center (KDC) bao gồm 2
server: 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ải
quyết được vấn đề đăng nhập một lần để người dùng có quyền xin vé để sử dụng
cá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ười
dù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ác
má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ẽ cung
cấ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ảo
mậ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 u cầu trong việc
xâ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.
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
20
1.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ậ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 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êu
cầ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ối
bạ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ùng
Location 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… Ngồ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 qua
Gmaps API sẽ trả trực tiếp về cho phía client file KML và phía client sẽ tự thực
hiệ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à Key
Distribution Center (KDC) chứa cả Authentication Server và Ticket Granting
Server.Ở phía Engine, do Profile Engine có cơ sở dữ liệu chứa các thông tin liên
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
21
quan đế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ười
dùng. Người dùng sau khi đã đăng nhập thành công sẽ được Ticket Granting Server
cấ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 khi
nhậ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ội
Foloyu.
Cơ sở lý thuyết
Nội của chương này sẽ trình bày các vấn đề sau:
o Giao thức Kerberos
o Lý thuyết về Web Service
1.4.
Giao thức Kerberos
Như đã trình bày ở định hướng giải pháp, giao thức Kerberos được áp dụng để giải
quyết vấn đề bảo mật cho mạng xã hội. Phần này, tác giả sẽ trình bày sâu hơn về
giao thức Kerberos và cách thức hoạt động của giao thức này.
1.4.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 tồn:
Nguyễn Quang Đức – Lớp Cơng nghệ phần mềm – K51
22
Kerberos an tồn bởi vì nó khơng bao giờ truyền password qua mạng dưới
dạ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ủa
ngườ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ực
với Kerberos ở đầu một phiên đăng nhập, định danh của người đấy sẽ được
truyề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ống
trong mạng đều tin tưởng.Tất cả các yêu cầu xác thực đều được điều chuyển
thô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ác
thự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ảo
mậ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 đang
liên lạc là chính xác.
1.4.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 hay
service. 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áy
tí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
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
23
Đố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ụ:
ducnq/
Đối với các dịch vụ trong hệ thống: servicename/domain-name@REALM.
Thành phần đầu tiên là tên của service còn thành phần
thứ hai là tên của host cung cấp service đó.Ví dụ:
authenticate/
c. Ticket
Ticket được server trung tâm cấp phát cho người dùng và người dùng sẽ
dùng ticket này để chứng minh với các server dịch vụ mình được quyền sử dụng
các dịch vụ.Ticket có 2 vai trị sau: xác nhận định danh của các bên tham gia và
để 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 đảm
bả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ó u cầu (thường chính là tên đăng
nhậ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 q 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 ở trong
Kerberos 5 khơng định ra một kiểu mã hóa nào cả mà tùy vào từng
trườ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:
Nguyễn Quang Đức – Lớp Cơng nghệ phần mềm – K51
24
Password của người dùng và của các dịch vụ sẽ được băm bởi 1 hàm băm
mộ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ép
nối sau đó sẽ được đưa vào hàm string2key để tạo nên khóa
băm.Kerberos 5 sử dụng tên principal để làm salt.
Ví dụ: Kpippo = string2key (Ppippo + "" )
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ùng
password 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.
Ngồ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:
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
25
Authentication Server (AS) có nhiệm vụ cấp phát một Ticket Granting
Ticket (TGT) đã được mã hóa bởi khóa bí mật của Ticket Granting
Server (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êu
cầu bởi người dùng. TGS nhận 2 dữ liệu từ người dùng: 1 vé yêu cầu
bao gồm tên của principal đại diện cho dịch vụ mà người dùng muốn
kết nối đến và TGT hợp lệ được cấp phát bởi Authentication Server
cho 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 được
gọ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ật
giữa người dùng và server dịch vụ bằng cách dùng khóa phiên mã hóa các
message 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 được
thơ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ên
cạ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ực
authenticator gồm có principal của người dùng và nhãn thời gian, mã hóa bởi
khóa phiên.Sau khi nhận được gói tin 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 được
nhãn thời gian. Nếu nhãn thời gian chênh lệch với thời gian server khơng q 2
phút, q 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 authenticator
nếu chúng được lặp lại.
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51