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
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
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
Lớp : Công nghệ phần mềm – K51
Viện : Công nghệ Thông tin Và Truyền
Thông
Đại học Bách Khoa Hà Nội
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
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 toá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
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 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
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
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,
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 ngoà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
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 yê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
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 toàn:
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51
22
Kerberos an toà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:
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 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 ở 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ụ: K
pippo
= string2key (P
pippo
+ "" )
P
pippo
là khóa chưa được băm của user. K
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 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 đượ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 quá 2
phú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 authenticator
nếu chúng được lặp lại.
Nguyễn Quang Đức – Lớp Công nghệ phần mềm – K51