Tài liệu Luận văn Bảo mật tính riêng tư của dữ liệu trong mạng ngang hàng P2P: ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
---------o0o---------
Nguyễn Văn Khoa
BẢO MẬT TÍNH RIÊNG TƯ CỦA DỮ LIỆU TRONG
MẠNG NGANG HÀNG P2P
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Các hệ thống thông tin
HÀ NỘI – 2010
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-----------o0o----------
Nguyễn Văn Khoa
BẢO MẬT TÍNH RIÊNG TƯ CỦA DỮ LIỆU TRONG
MẠNG NGANG HÀNG P2P
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Các hệ thống thông tin
Cán bộ hướng dẫn : ThS. Trương Thị Thu Hiền
Cán bộ đồng hướng dẫn : CN. Phạm Cẩm Ngọc
HÀ NỘI – 2010
ii
LỜI CẢM ƠN
Khóa luận tốt nghiệp này được hoàn thành với sự giúp đỡ của các thầy cô giáo và các bạn
sinh viên lớp K51CHTTT, những người đóng vai trò quan trọng cho sự thành công của khóa
luận.
Trước hết em xin gửi lời cảm ơn tới cô giáo ThS. Trương Thị Thu Hiền, người đã trực
tiếp hướng dẫn, cũng như động viên, giúp đỡ em hoàn thành khóa luận này. Mặc dù, phải đi công
tác xa nhưng cô...
91 trang |
Chia sẻ: haohao | Lượt xem: 1477 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Bảo mật tính riêng tư của dữ liệu trong mạng ngang hàng P2P, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
---------o0o---------
Nguyễn Văn Khoa
BẢO MẬT TÍNH RIÊNG TƯ CỦA DỮ LIỆU TRONG
MẠNG NGANG HÀNG P2P
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Các hệ thống thông tin
HÀ NỘI – 2010
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-----------o0o----------
Nguyễn Văn Khoa
BẢO MẬT TÍNH RIÊNG TƯ CỦA DỮ LIỆU TRONG
MẠNG NGANG HÀNG P2P
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Các hệ thống thông tin
Cán bộ hướng dẫn : ThS. Trương Thị Thu Hiền
Cán bộ đồng hướng dẫn : CN. Phạm Cẩm Ngọc
HÀ NỘI – 2010
ii
LỜI CẢM ƠN
Khóa luận tốt nghiệp này được hoàn thành với sự giúp đỡ của các thầy cô giáo và các bạn
sinh viên lớp K51CHTTT, những người đóng vai trò quan trọng cho sự thành công của khóa
luận.
Trước hết em xin gửi lời cảm ơn tới cô giáo ThS. Trương Thị Thu Hiền, người đã trực
tiếp hướng dẫn, cũng như động viên, giúp đỡ em hoàn thành khóa luận này. Mặc dù, phải đi công
tác xa nhưng cô vẫn thương xuyên liên lạc, hỏi thăm và hướng dẫn em hoàn thành khóa luận một
cách chi tiết.
Đồng thời, em xin gửi lời cảm ơn tới thầy giáo CN. Phạm Cẩm Ngọc, người đã đồng
hướng dẫn và luôn sát cánh để động viên, giúp đỡ em nghiên cứu hoàn thành khóa luận.
Em xin cảm ơn các thầy cô giáo trong bộ môn Các hệ thống thông tin nói riêng và các
thầy cô giáo trong khoa Công nghệ thông tin nói chung. Nếu không có các thầy, các cô và khoa
thì chắc chắn em không thể hoàn thành tốt khóa luận như ngày hôm nay.
Em xin gửi lời cảm ơn tới các thành viên lớp K51CHTTT, những người đã cùng em tìm
hiểu cơ sở lý thuyết cũng như ứng dụng để hiểu rõ và hoàn thành khóa luận.
Sau tất cả, em xin gửi lời cảm ơn gia đình cùng toàn thể các thầy cô giáo, những người đã
sinh thành, nuôi dưỡng và giáo dục em có được ngày hôm nay.
Cuối cùng, em xin gửi lời chúc sức khỏe và hạnh phúc tới tất cả các thầy cô giáo. Xin
chúc thầy cô đạt được nhiều thành tựu hơn nữa trong sự nghiệp đào tạo tri thức cho đất nước
cũng như trong các công việc nghiên cứu khoa học.
Chúc tất cả các bạn sức khỏe, hoàn thành xuất sắc công việc học tập và nghiên cứu của
mình. Chúc các bạn một tương lai tươi sáng và một cuộc sống thành đạt.
Trân trọng cảm ơn!
Hà Nội, ngày 21 tháng 5 năm 2010
Sinh viên
Nguyễn Văn Khoa
iii
TÓM TẮT KHÓA LUẬN
Khái niệm mạng ngang hàng đã trở nên phổ biến. Các mạng như BitTorrent và eMule
giúp cho mọi người dễ dàng hơn trong việc chia sẻ dữ liệu. Nếu tôi có thứ bạn cần và bạn có
thứ mà tôi muốn thì tại sao chúng ta không thể chia sẻ cho nhau? Có điều, các file được chia
sẻ trên máy tính của bạn cho những người dùng không quen biết trên mạng Internet công
cộng có thể khiến máy tính của bạn gặp nhiều nguy hiểm về độ an toàn và bảo mật. Vì thế,
vấn đề bảo mật tính riêng tư của dữ liệu trong mạng ngang hàng là rất đáng được quan tâm.
Khóa luận này bao gồm 4 chương, chủ yếu tập trung đến các vấn đề bảo mật dữ liệu
chia sẻ trong mạng ngang hàng.
Chương 1 trình bày những vấn đề tổng quan nhất của mạng ngang hàng như các định
nghĩa, lịch sử phát triển, các lĩnh vực ứng dụng, phân loại các mạng ngang hàng, tổng quan
về kiến trúc của các mạng ngang hàng.
Chương 2 trình bày những nguyên lý cơ bản của bảo mật trong mạng ngang hàng. Các
vấn đề được quan tâm ở đây bao gồm: các dạng tấn công vào hệ thống (tấn công định tuyến,
tấn công lưu trữ và phục hồi, tấn công từ chối dịch vụ); tính xác thực và tính toàn vẹn của dữ
liệu, xác thực tính toàn vẹn của các tính toán; vấn đề chia sẻ giữa các nút trong mạng ngang
hàng; và cuối cùng của chương sẽ trình bày về bảo mật dựa vào hạ tầng cơ sở khóa công
khai.
Chương 3 trình bày về các mô hình tin cậy: mô hình tin cậy dựa vào chứng thực và
mô hình tin cậy dựa vào uy tín; một vài hệ thống cộng tác ứng dụng các mô hình tin cậy đó.
Chương 4 trình bày ứng dụng mã nguồn mở PeerSim – một công cụ để mô phỏng
mạng ngang hàng trên đó người ta đã xây dựng một số ứng dụng chạy trên nền mạng ngang
hàng. Cụ thể sẽ tìm hiểu về ứng dụng BitTorrent – trên đó cài đặt giao thức bittorrent cho ứng
dụng trong việc chia sẻ dữ liệu.
Với sự phát triển mạnh mẽ của các tài nguyên máy tính và các kho dữ liệu trên các
máy tính cá nhân, sử dụng môi trường P2P để chia sẻ tài nguyên giữa các người dùng trên
Internet sẽ đem lại hiệu quả cao. Do đó, việc áp dụng những kiến thức tìm hiểu trong khóa
luận này vào thực tiễn rất có ý nghĩa.
iv
MỤC LỤC
LỜI CẢM ƠN............................................................................................................................. ii
TÓM TẮT KHÓA LUẬN.......................................................................................................... iii
MỤC LỤC ................................................................................................................................. iv
DANH SÁCH CÁC TỪ VIẾT TẮT........................................................................................... vi
DANH SÁCH CÁC HÌNH VẼ ................................................................................................. vii
Chương 1: TỔNG QUAN VỀ MẠNG NGANG HÀNG ............................................................. 1
1.1. Định nghĩa mạng ngang hàng ........................................................................................... 1
1.1.1. Giới thiệu .................................................................................................................. 1
1.1.2. Định nghĩa mạng ngang hàng..................................................................................... 1
1.1.3. Lịch sử phát triển của mạng ngang hàng P2P ............................................................. 2
1.2. So sánh mô hình P2P với mô hình Client/Server truyền thống .......................................... 3
1.3. Các lĩnh vực ứng dụng của mạng ngang hàng ................................................................... 3
1.3.1. Giao tiếp .................................................................................................................... 3
1.3.2. Chia sẻ File................................................................................................................ 4
1.3.3. Băng thông ................................................................................................................ 5
1.3.4. Không gian lưu trữ..................................................................................................... 5
1.3.5. Các chu trình xử lý .................................................................................................... 6
1.4. Kiến trúc mạng ngang hàng .............................................................................................. 6
1.4.1. Phân loại mạng ngang hàng ....................................................................................... 6
1.4.2. Kiến trúc mạng ngang hàng ....................................................................................... 7
Chương 2: BẢO MẬT TRONG HỆ THỐNG MẠNG NGANG HÀNG .................................... 13
2.1. Tấn công định tuyến ....................................................................................................... 13
2.1.1. Tấn công làm sai lệch đường đi trong định tuyến ..................................................... 13
2.1.2. Tấn công làm cập nhật sai bảng định tuyến .............................................................. 14
2.1.3. Phân vùng mạng định tuyến không chính xác .......................................................... 14
2.2. Tấn công lưu trữ và phục hồi .......................................................................................... 15
2.3. Tấn công từ chối dịch vụ ................................................................................................ 17
2.3.1. Quản lý các cuộc tấn công ....................................................................................... 18
2.3.2. Phát hiện và phục hồi từ các cuộc tấn công .............................................................. 19
2.4. Xác thực và toàn vẹn dữ liệu .......................................................................................... 21
2.4.1. Các truy vấn xác thực trong cớ sở dữ liệu quan hệ ................................................... 22
2.4.2. Tự xác thực dữ liệu với mã Erasure ......................................................................... 26
2.5. Xác thực tính toàn vẹn của tính toán ............................................................................... 27
2.6. Chia sẻ dữ liệu giữa các nút trong mạng ngang hàng....................................................... 28
2.6.1. Hệ thống dựa vào hạn ngạch .................................................................................... 30
2.6.2. Hệ thống dựa vào trao đổi........................................................................................ 31
2.6.3. Kiểm soát sự phân bổ............................................................................................... 32
2.6.4. Kỹ thuật dựa vào sự khích lệ.................................................................................... 33
2.6.5. Topo mạng phù hợp ................................................................................................. 35
2.7. Bảo mật dựa vào hạ tầng cơ sở khóa công khai PKI........................................................ 37
Chương 3: CÁC MÔ HÌNH TIN CẬY ...................................................................................... 38
3.1. Các khái niệm................................................................................................................. 38
3.1.1. Định nghĩa sự tin cậy ............................................................................................... 38
v
3.1.2. Các dạng tin cậy ...................................................................................................... 39
3.1.3. Biểu diễn sự tin cậy bởi giá trị ................................................................................. 40
3.1.4. Đặc tính của sự tin cậy............................................................................................. 42
3.2. Các mô hình tin cậy........................................................................................................ 44
3.2.1. Tin cậy dựa vào sự chứng thực ................................................................................ 44
3.2.2. Tin cậy dựa vào uy tín ............................................................................................. 45
3.3. Các hệ thống tin cậy dựa vào chứng thực........................................................................ 46
3.3.1. Hệ thống PolicyMaker ............................................................................................. 46
3.3.2. Hệ thống Trust-X..................................................................................................... 48
3.4. Hệ thống tin cậy dựa trên uy tín cá nhân......................................................................... 50
3.4.1. Hệ thống P2PRep .................................................................................................... 50
3.4.2. Hệ thống XRep ........................................................................................................ 53
3.4.3. Mô hình tin cậy NICE.............................................................................................. 54
3.4.4. Hệ thống PeerTrust .................................................................................................. 56
3.5. Hệ thống tin cậy dựa vào uy tín cá nhân và uy tín dưới khía cạnh xã hội......................... 58
3.5.1. Hệ thống Regret....................................................................................................... 58
3.5.2. Hệ thống NodeRanking ........................................................................................... 60
3.6. Quản lý sự tin cậy........................................................................................................... 62
3.6.1. Hệ thống XenoTrust ................................................................................................ 64
3.6.2. Hệ thống EigenRep.................................................................................................. 67
3.6.3. Quán lý tin cậy với P-Grid ....................................................................................... 70
Chương 4: MÔ PHỎNG MẠNG NGANG HÀNG VỚI PEERSIM........................................... 73
4.1. Tổng quan về PeerSim.................................................................................................... 73
4.1.1. Giới thiệu về PeerSim .............................................................................................. 73
4.1.2. Các gói dịch vụ trong PeerSim................................................................................. 73
4.2. Ứng dụng BitTorrent ...................................................................................................... 74
4.2.1. Giới thiệu về BitTorrent........................................................................................... 74
4.2.2. Cách thức hoạt động của BitTorrent......................................................................... 74
4.2.3. Tạo và phát hành tệp Torrent lên mạng .................................................................... 75
4.2.4. Tải tệp Torrent và chia sẻ tệp ................................................................................... 76
KẾT LUẬN .............................................................................................................................. 78
TÀI LIỆU THAM KHẢO ........................................................................................................... 1
vi
DANH SÁCH CÁC TỪ VIẾT TẮT
TỪ VIẾT TẮT TỪ CHƯA VIẾT TẮT
CBS Commitment-Based-Sampling
DoD Denial-of-Service
DS Drop Strategy
IAS Incoming Allocation Strategy
JXTA Juxtapose
P2P Peer-to-Peer
PIPE Peer-to-Peer Information Preservation and Exchange network
RDP Random Discovery Ping
SGL Sercure Group Layer
SLIC Selfish Link-based InCentives
TTL Time-To-Live
VB Verifiable B
XIS XenoServer Information Service
vii
DANH SÁCH CÁC HÌNH VẼ
Hình 1.1: Mô hình mạng overlay................................................................................................. 2
Hình 1.2: Phân loại mạng P2P theo mức độ tập trung .................................................................. 7
Hình 1.3: Mạng ngang hàng tập trung ......................................................................................... 8
Hình 1.4: Mạng ngang hàng tập trung thế hệ thứ nhất (Napster) .................................................. 9
Hình 1.5: Mạng ngang hàng cơ bản (Gnutella 4.0, FreeNet) ...................................................... 10
Hình 1.6: Mạng ngang hàng lai ................................................................................................. 11
Hình 1.7: Mạng ngang hàng có cấu trúc .................................................................................... 12
Hình 2.1(a): Cây băm Merkle.................................................................................................... 22
Hình 2.1(b): Miền xác thực liên tục........................................................................................... 23
Hình 2.2: Cây VB .................................................................................................................... 25
Hình 2.3: Quá trình tính đối tượng xác minh VO ...................................................................... 26
Hình 2.4: Chương trình tự xác minh .......................................................................................... 27
Hình 2.5: Trao đổi N bước ........................................................................................................ 32
Hình 3.1: Phân loại mô hình tin cậy .......................................................................................... 46
Hình 3.2: Kiến trúc hệ thống PolicyMaker ................................................................................ 47
Hình 3.3: Các giai đoạn trong quá trình đàm phán của hệ thống Trust-X ................................... 50
Hình 3.4: Giao thức bỏ phiếu cơ bản ......................................................................................... 51
Hình 3.5: Đồ thị tin cậy Nice..................................................................................................... 55
Hình 3.6: Uy tín dưới khía cạnh xã hội...................................................................................... 59
Hình 3.7: Bản thể luận .............................................................................................................. 60
Hình 3.8. Mạng xã hội .............................................................................................................. 61
Hình 3.9. Phân loại các phương pháp quản lý tin cậy................................................................. 64
Hình 3.10. Nền tảng mở XenoServer trong hệ thống XenoTrust ................................................ 66
Hình 3.11: Thuật toán Distributed ............................................................................................. 70
Hình 3.12: Hệ thống quản lý tin cậy dựa vào P-Grid ................................................................. 71
Hình 4.1: Mô hình mạng sử dụng trong BitTorrent.................................................................... 74
1
Chương 1: TỔNG QUAN VỀ MẠNG NGANG HÀNG
1.1. Định nghĩa mạng ngang hàng
1.1.1. Giới thiệu
Chúng ta đã biết rằng, hầu như mọi dịch vụ mà Internet cung cấp ngày nay đều dựa
trên mô hình client/server. Theo mô hình này thì một máy khách (client) sẽ kết nối với
một máy chủ thông qua một giao thức nhất định (WWW, FTP, Telnet, email ...). Nói
chung, mô hình client/server có nhiều ưu điểm, nổi bật là mọi xử lý sẽ nằm trên máy chủ
do đó sẽ tránh cho máy khách phải xử lý những tính toán nặng nề.
Tuy nhiên, khi Internet phát triển với tốc độ nhanh chóng như hiện nay thì mô hình
client/server gặp phải một vài nhược điểm lớn. Nếu số lượng máy khách tăng đến một
mức độ nào đó thì nhu cầu tải file và băng thông tăng lên dẫn đến máy chủ không có khả
năng cung cấp dịch vụ cho các máy khách, hiện tượng đó được gọi là hiện tượng thắt nút
cổ chai.
Để giải quyết các nhược điểm của mô hình client/server, công nghệ mạng ngang
hàng P2P được tin tưởng sẽ là lời giải cho các vấn đề trên.
1.1.2. Định nghĩa mạng ngang hàng
Định nghĩa: mạng ngang hàng (tiếng Anh: Peer-to-Peer network hay gọi tắt là
P2P) là mạng mà trong đó hai hay nhiều máy tính chia sẻ tập tin và truy cập các thiết bị
như máy in mà không cần thông qua máy chủ hay phần mềm máy chủ. Hay ở dạng đơn
giản nhất, mạng P2P được tạo ra bởi hai hay nhiều máy tính được kết nối với nhau và chia
sẻ tài nguyên mà không phải thông qua một máy chủ dành riêng.
Mạng ngang hàng không có khái niệm máy chủ (server) hay máy khách (client),
mà chỉ có khái niệm các nút (peer) đóng vai trò như cả máy chủ và máy khách.
Mạng overlay: là mạng máy tính được xây dựng trên nền của một mạng khác. Các
nút trong mạng overlay được xem là nối với nhau bằng liên kết ảo (logical link), mỗi liên
kết ảo có thể bao gồm rất nhiều các liên kết vật lý của mạng nền.
Rất nhiều các mạng P2P được gọi là mạng overlay vì nó được xây dựng và hoạt
động trên nền Internet, ví dụ như: Gnutella, Freenet, DHTs ….
2
Hình 1.1: Mô hình mạng overlay
1.1.3. Lịch sử phát triển của mạng ngang hàng P2P
Lịch sử ra đời và phát triển của P2P gắn liền với phần mềm ứng dụng Napster.
Năm 1999, Shawn Fanning một sinh viên ở tuổi 18 đã rời bỏ trường Đại học để bắt
đầu xây dựng phần mềm mang tên Napster do bức xúc với việc rất khó khăn để đưa và
chia sẻ các file nhạc trực tuyến trên Internet mặc dù mọi người đều có nguồn tài nguyên
trong đĩa cứng của mình.
Napster được xây dựng thành công và trở thành cách chia sẻ file chính vào thời
điểm lúc bấy giờ. Nó đã làm thay đổi cách tải các file nhạc và dung lượng file chia sẻ
cũng lớn hơn nhiều so với các chương trình chia sẻ file trước đó.
Khoảng 60 triệu người trên thế giới đã sử dụng phần mềm Napster vào thời điểm
đó (trong đó có khoảng 1 triệu người Nhật). Tuy nhiên, do có quá đông người dùng và
vấn đề bản quyền âm nhạc nên công ty Napster đã bị cấm hoạt động. Phần mềm Napster
không còn được sử dụng kể từ năm 2003.
Sau Napster, rất nhiều các chương trình khác như Gnutella, KaZaa và WinMP đã
xuất hiện. Công nghệ P2P không chỉ dừng lại ở ứng dụng chia sẻ file nhạc mà còn mở
rộng cho tất cả các loại file. Nó còn được ứng dụng để chia sẻ các tiến trình rỗi của CPU
tại các nút trong mạng.
Sau sự ra đời của Napster, công nghệ P2P phát triển một cách nhanh chóng. Cho
đến hiện nay các ứng dụng P2P đã chiếm khoảng 50% và thậm chí lên đến 75% băng
thông trên mạng Internet.
3
1.2. So sánh mô hình P2P với mô hình Client/Server truyền thống
1.3. Các lĩnh vực ứng dụng của mạng ngang hàng
Sự ra đời của mạng ngang hàng đã tạo ra cách thức quản lý mới cho hàng loạt các
lĩnh vực ứng dụng. Trong phần này chúng ta sẽ đưa ra một cách nhìn tổng quát cho vấn đề
các lĩnh vực ứng dụng của mạng ngang hàng như: giao tiếp, chia sẻ file, băng thông,
không gian lưu trữ, các chu trình xử lý của CPU.
1.3.1. Giao tiếp
Đóng vai trò quan trọng trong các ứng dụng mạng ngang hàng.
Là nhân tốt quyết định trong các mạng ngang hàng vì nó cung cấp thông tin về các
nút và các nguồn tài nguyên nào là sẵn sàng trên mạng.
P2P Client/Server
Tổng quan
- Một mạng ngang hàng cho phép các
nút đóng góp, chia sẻ nguồn tài nguyên
với nhau. Tài nguyên riêng rẽ của các
nút (ổ cứng, CD-ROM, máy in …). Các
nguồn tài nguyên này có thể được truy
cập từ bất cứ nút nào trong mạng.
- Các nút đóng vai trò như cả máy
khách và máy chủ.
- Dữ liệu được lưu tại một máy chủ
trung tâm, tốc độ cao.
- Khi một máy khách yêu cầu lấy
thông tin về thời gian nó sẽ phải gửi
một yêu cầu theo một tiêu chuẩn do
máy chủ định ra, nếu yêu cầu được
chấp nhận thì máy chủ sẽ trả về
thông tin mà máy khách yêu cầu.
Ưu điểm
- Không cần máy chủ.
- Các máy khách tự chia sẻ tài nguyên
cho nhau.
- Khi mạng càng được mở rộng thì khả
năng hoạt động của hệ thống càng tốt.
- Chi phí thấp.
- Dễ cài đặt và bảo trì.
- Thuận lợi cho việc chia sẻ file, máy in,
ổ đĩa quang, ….
- Tốc độ truy cập nhanh.
- Khả năng mở rộng cao.
- Hoạt động với bất kì loại ứng dụng
nào.
- Sử dụng được với các ứng dụng
chia sẻ cơ sở dữ liệu.
- Đáng tin cậy hơn (có máy chủ
riêng).
- Mức độ an toàn cao.
Nhược điểm
- Chậm.
- Không tốt cho các ứng dụng cơ sở dữ
liệu.
- Độ tin cậy thấp.
- Cần máy chủ riêng.
- Dễ gặp hiện tượng thắt cổ chai.
- Chi phí cao.
- Phức tạp trong việc bảo trì, duy trì
hoạt động của mạng.
4
Tạo ra khả năng cho các nút kết nối trực tiếp với các nút khác và yêu cầu các
nguồn tài nguyên.
Một ví dụ điển hình về ứng dụng mạng ngang hàng trong giao tiếp là hệ thống
chuyển tin nhắn trực tiếp: thông thường, máy chủ trung tâm lưu trữ thông tin và danh sách
người dùng đăng ký. Khi có sự giao tiếp giữa các nút, việc tìm kiếm nút khác được thực
hiện trên máy chủ. Trong trường hợp nút đó không trưc tuyến, hệ thống sẽ phải lưu trữ
các tin nhắn cho đến khi nút này trực tuyến lại. Các dịch vụ tin nhắn điển hình: Napster,
ICQ, Jabber.
1.3.2. Chia sẻ File
Có thể nói ứng dụng được sử dụng nhiều nhất của mạng ngang hàng đó là chia sẻ
file. Theo ước tính khoảng 70% lưu lượng mạng trên Internet được cho là để trao đổi các
file đặc biệt là các file âm nhạc (hơn 1 tỷ các file âm nhạc được tải mỗi tuần).
Đặc điểm của vấn đề chia sẻ file là các nút có các file được tải với vai trò là một
máy khách làm cho chúng luôn sẵn sàng với các nút khác trong vai trò của một máy chủ.
Vấn đề chủ yếu cho mạng ngang hàng nói chung và cho vấn đề chia sẻ file nói
riêng là vấn đề tìm kiếm. Trong ngữ cảnh của hệ thống chia sẻ file, có ba mô hình khác
nhau được phát triển: mô hình flooded request, mô hình thư mục trung tâm và mô hình
hướng tài liệu. Các mô hình này được minh họa qua các ứng dụng thực của mạng ngang
hàng: Gnutella, Naspter và FreeNet.
Trong hệ thống Gnutella, không có sự tập trung hóa, các file được lưu trữ trên các
nút của hệ thống, khi có yêu cầu tìm kiếm một file, máy tính sẽ gửi yêu cầu này tới tất cả
các nút láng giềng của nó cho tới khi tìm thấy máy lưu giữ file cần tìm. Tiếp theo là quá
trình trao đổi file trực tiếp giữa hai máy tính trong mạng.
Trong hệ thống Naspter, có sự tập trung hóa. Khi một máy tham gia vào mạng,
danh sách các file sẽ được đăng ký và lưu trữ trên máy chủ trung tâm, khi có yêu cầu tìm
kiếm, máy tính sẽ hỏi máy chủ trung tâm về vị trí của file. Sau đó việc trao đổi file được
thực hiện giữa hai máy tính với nhau.
Trong hệ thống Freenet, các file chia sẻ không được lưu trữ trên đĩa cứng của các
máy cung cấp mà chúng được lưu trữ ở các máy khác nhau trong mạng. Mục đích của
việc phát triển mạng Freenet là làm cho thông tin được lưu trữ và truy cập mà không cần
5
biết định danh. Với các tổ chức như vậy, chủ sở hữu của một nút mạng cũng không biết
được tài liệu gì được lưu trữ trên đĩa cứng của máy anh mình. Vì lý do này mà các nút và
các file được gắn các số định danh khác nhau. Khi một file được tạo, nó được truyền qua
các nút láng giềng tới các nút có số định danh gần với số định danh của file nhất và được
lưu trữ ở đó.
1.3.3. Băng thông
Do yêu cầu về khả năng truyền dẫn của các mạng ngày càng đòi hỏi cao đặc biệt là
khi một số lượng lớn dữ liệu đa phương tiện tăng nhanh, hiệu quả của việc sử dụng băng
thông ngày càng trở nên quan trọng. Hiện nay, hướng tiếp cận tập trung trong đó các file
được lưu trữ trên một máy chủ và được truyền từ nó tới máy khách đang được sử dụng
chủ yếu. Trong trường hợp này khi số lượng các yêu cầu tăng nhanh sẽ dẫn tới tình trạng
thắt nút cổ chai. Với hướng tiếp cận theo mạng ngang hàng vấn đề cân bằng tải sẽ đạt
được sự tối ưu nhất vì nó tận dụng tối đa các hướng truyền dẫn trong hệ thống.
Tăng khả năng cân bằng tải trong mạng: khác với kiến trúc client/server các mạng
ngang hàng lai có thể nhận được sự cân bằng tải tốt hơn. Với mô hình client/server thì cả
yêu cầu truy vấn thông tin và việc truyền dữ liệu đều được thực hiện giữa máy chủ và
máy khách, việc đó sẽ làm mất sự cân bằng tải khi có nhiều yêu cầu kết nối tới máy chủ.
Với kiến trúc ngang hàng, chỉ có yêu cầu truy vấn được thực hiện giữa máy tính trong
mạng với máy chủ, còn vấn đề truyền file được thực hiện giữa hai máy tính trong mạng
với nhau, điều này sẽ giúp cân bằng tải thông qua việc phân bố tải đều trên toàn hệ thống.
Chia sẻ băng thông: mạng ngang hàng có thể làm tăng khả năng tải và truyền các
file do cơ chế tận dụng đường truyền thông qua các nút trong mạng. Một file dữ liệu lớn
được chia thành các phân mảnh dữ liệu nhỏ độc lập nhau, các mảnh dữ liệu này được
chuyển đồng thời đến các nút khác nhau và cuối cùng đến nút yêu cầu chúng. Tại nút yêu
cầu các mảnh dữ liệu được phép lại thành file dữ liệu ban đầu. Các phần mềm tải file điển
hình cho việc chia sẻ băng thông, chẳng hạn như: BitTorrent, FlashGet, vv.
1.3.4. Không gian lưu trữ
Ngày nay, khi các dữ liệu càng ngày càng lớn, kích thước file cũng càng lớn, với
các máy tính có tài nguyên đĩa cứng hạn hẹp sẽ gặp khó khăn trong việc lưu trữ các file
dữ liệu lớn trên máy tính của mình. Phát huy ưu điểm của mạng ngang hàng để chia sẻ
không gian lưu trữ giữa các máy tính trong hệ thống thì điều đó không còn là một điều
đáng lo ngại. Bằng cách này, dữ liệu sẽ được chia nhỏ thành các phần và lưu trữ mỗi phần
6
trên các máy trong mạng. Mỗi khi cần lấy lại dữ liệu, máy đó sẽ nhận lại các phần của dữ
liệu trên các máy và ghép chúng lại để nhận được dữ liệu ban đầu. Với việc chia sẻ không
gian lưu trữ, hệ thống P2P càng ngày càng được mở rộng với nhiều máy tính tham gia vào
hệ thống.
1.3.5. Các chu trình xử lý
Có thể nhận thấy rằng trong các ứng dụng đòi hỏi cần phải có sức mạnh tính toán
người ta thường tìm cách xây dựng các máy tính mạnh, đắt tiền chứ chưa chú trọng vào
việc tận dụng khả năng tính toán của các máy tính được nối mạng. Ngày nay do những
yêu cầu đòi hỏi tính toán hiệu năng cao như các thao tác tính toán trong tin sinh học, trong
tài chính, trong đo lường mà nhiều nghiên cứu ứng dụng mạng ngang hàng vào xử lý tính
toán đã được đưa ra. Bằng việc sử dụng các ứng dụng mạng ngang hàng để bó cụm các
chu trình xử lý có thể nhận được khả năng tính toán ngang bằng với một siêu máy tính đắt
tiền. Trong một mạng mỗi máy tính là trong suốt với các máy tính khác và tất cả các nút
được kết nối mạng sẽ tạo thành một máy tính logic.
1.4. Kiến trúc mạng ngang hàng
1.4.1. Phân loại mạng ngang hàng
Trong mô hình client/server, máy chủ là nơi cung cấp các dịch vụ, thông tin cho hệ
thống, chẳng hạn như máy chủ Web, máy chủ cơ sở dữ liệu, vv. Máy khách là máy yêu
cầu nội dung thông tin, yêu cầu dịch vụ từ máy chủ. Địa chỉ IP của máy chủ phải được
cung cấp cho các máy khách, nội dung thông tin chứa trên máy chủ có thể là các file âm
thanh, hình ảnh, file cơ sở dữ liệu, vv. Máy khách không cung cấp bất kỳ nội dung hoặc
dịch vụ nào để chạy hệ thống.
Mạng ngang hàng có thể được phân loại theo mục đích sử dụng, ví dụ:
- Chia sẻ file.
- Điện thoại VoIP.
- Đa phương tiện.
- Diễn đàn thảo luận.
….
7
Mạng ngang hàng có thể được phân loại theo mức độ tập trung của mạng như
trong hình vẽ dưới đây:
Hình 1.2: Phân loại mạng P2P theo mức độ tập trung
1.4.2. Kiến trúc mạng ngang hàng
1.4.2.1. Mạng ngang hàng không cấu trúc
Nơi lưu trữ nội dung hoàn toàn không liên quan gì đến cấu trúc hình học của mạng.
Kỹ thuật tìm kiếm chủ yếu là sử dụng flooding với các giải thuật tìm kiếm ưu tiên
theo chiều rộng (breadth – first), hoặc ưu tiên theo chiều sâu (depth – first) cho đến khi
nội dung được tìm thấy. Các kỹ thuật khác phức tạp hơn gồm bước nhảy ngẫu nhiên
(random walk) và chỉ số routing (routing indices).
Các hệ thống không cấu trúc thường phù hợp trong trường hợp các nút ra vào
mạng thường xuyên, tùy ý.
1.4.2.1.1. Mạng ngang hàng tập trung
8
Đây là mạng ngang hàng thế hệ thứ nhất, đặc điểm là vẫn còn dựa trên một máy
chủ tìm kiếm trung tâm, chính vì vậy nó còn được gọi là mạng ngang hàng tập trung. Cấu
trúc Overlay của mạng ngang hàng tập trung có thể được mô tả như một mạng hình sao:
Hình 1.3: Mạng ngang hàng tập trung
Nguyên tắc hoạt động:
Mỗi client lưu trữ file định chia sẻ với các nút khác trong mạng.
Một bảng lưu trữ thông tin kết nối của người dùng đăng ký (địa chỉ IP, kết nối
băng thông, …).
Một bảng liệt kê danh sách các file mà mỗi người dùng định chia sẻ (tên file, dung
lượng, thời gian tạo file …).
Mọi máy tính tham gia mạng được kết nối với máy chủ tìm kiếm trung tâm, các
yêu cầu tìm kiếm được gửi tới máy chủ trung tâm phân tích, nếu yêu cầu được giải quyết
máy chủ sẽ gửi trả lại địa chỉ IP của máy chứa tài nguyên trong mạng và quá trình truyền
file được thực hiện theo đúng cơ chế của mạng ngang hàng, giữa các host với nhau mà
không cần qua máy chủ trung tâm.
Ưu điểm:
- Dễ xây dựng.
- Tìm kiếm file nhanh và hiệu quả.
Nhược điểm:
- Vấn đề luật pháp, bản quyền.
9
- Dễ bị tấn công.
- Server tập trung.
Napster là mạng ngang hàng được đặc trưng cho hệ thống mạng ngang hàng của
thể hệ thứ nhất, chúng được dùng cho việc chia sẻ file giữa các người dùng Internet, được
sử dụng rộng rãi, tuy nhiên nhanh chóng bị mất thị trường bởi yếu tố về luật pháp. Khái
niệm và kiến trúc của Napster vẫn còn được sử dụng trong các ứng dụng khác như:
Audiogalaxy, WinMX.
Hình 1.4: Mạng ngang hàng tập trung thế hệ thứ nhất (Napster)
Với Napster, việc tìm kiếm file bị thất bại khi bảng tìm kiếm trên máy chủ vì lý do
nào đó không thực hiện được. Chỉ có các file truy vấn và việc lưu trữ được phân tán, vì
vậy máy chủ đóng vai trò là một nút cổ chai. Khả năng tính toán và lưu trữ của máy chủ
tìm kiếm phải tương xứng với số nút mạng trong hệ thống, do đó khả năng mở rộng mạng
bị hạn chế rất nhiều.
1.4.2.1.2. Các mạng ngang hàng cơ bản
Mạng ngang hàng cơ bản là một dạng khác của thế hệ thứ nhất trong hệ thống các
mạng ngang hàng. Không còn máy chủ tìm kiếm tập trung như trong mạng Napster, nó
khắc phục được vấn đề nút cổ chai trong mô hình tập trung. Tuy nhiên vấn đề tìm kiếm
trong mạng ngang hàng cơ bản lại sử dụng cơ chế Flooding, yêu cầu tìm kiếm được gửi
cho tất cả các nút mạng là láng giềng với nó, điều này làm tăng đáng kể lưu lượng trong
10
mạng. Đây là một yếu điểm của mạng ngang hàng cơ bản. Các phần mềm tiểu biểu cho
mạng ngang hàng dạng này là Gnutella 4.0, FreeNet.
Hình 1.5: Mạng ngang hàng cơ bản (Gnutella 4.0, FreeNet)
Ưu điểm:
- Dễ xây dựng.
- Đảm bảo tính phân tán hoàn toàn cho các nút tham gia mạng, các nút tham
gia và rời khỏi mạng một cách tùy ý mà không ảnh hưởng đến cấu trúc của mạng.
Nhược điểm:
- Tốn băng thông.
- Phức tạp trong tìm kiếm.
- Các nút có khả năng khác nhau (sức mạnh bộ vi xử lý, băng thông, không
gian lưu trữ) đều có thể phải chịu tải như nhau.
1.4.2.1.3. Các mạng ngang hàng lai
Để khắc phục nhược điểm của mạng ngang hàng cơ bản, một mô hình mạng ngang
hàng mới được phát triển với tên gọi là mạng ngang hàng lai. Đây được gọi là mạng
ngang hàng thế hệ thứ 2. Phần mềm tiêu biểu cho mạng ngang hàng kiểu này là Gnutella
0.6 và JXTA (Juxtapose). JXTA được bắt đầu phát triển bới SUN từ 2001 (Đây là giao
thức P2P mã nguồn mở). JXTA được sử dụng cho máy tính cá nhân, máy tính lớn, điện
11
thoại di động, các thiết bị cầm tay khác – để giao tiếp theo cách không tập trung. Skype
cũng được xây dựng dựa trên cấu trúc này.
Hình 1.6: Mạng ngang hàng lai
Trong mô hình mạng ngang hàng lai tồn tại một trật tự phân cấp bằng việc định
nghĩa các SuperPeer. Các SupperPeer tạo thành một mạng không cấu trúc, có sự khác
nhau giữa SupperPeer và ClientPeer trong mạng, mỗi SupperPeer có nhiều kết nối đến
các ClientPeer.
Mỗi SupperPeer chứa một danh sách các file được cung cấp bởi các ClientPeer và
địa chỉ IP của chúng vì vậy nó có thể trả lời ngay lập tức các yêu cầu truy vấn từ các
ClientPeer gửi tới.
Ưu điểm:
Hạn chế việc tràn ngập các truy vấn, làm giảm lưu lượng trong mạng,
nhưng vẫn tránh được hiện tượng thắt cổ chai (do có nhiều SupperPeer).
Khắc phục được nhược điểm về sự khác nhau về khả năng xử lý của CPU,
băng thông, … ở mạng ngang hàng cơ bản, các SupperPeer sẽ chịu tải chính, các
nút khác chịu tải nhẹ.
1.4.2.2. Mạng ngang hàng có cấu trúc
Cấu trúc hình học của mạng được kiểm soát chặt chẽ.
12
File (hoặc con trỏ trỏ tới file) được đặt ở một vị trí xác định.
Điều quan trọng đối với những hệ thống có cấu trúc là cung cấp sự liên kết giữa
nội dung (ví dụ: id của file) và vị trí của nút (ví dụ: địa chỉ nút). Việc này thường dựa trên
một cấu trúc dữ liệu bảng băm phân tán (Distributed Hash Table).
Dựa trên cấu trúc bảng băm phân tán đã có nhiều nghiên cứu và đề xuất ra các mô
hình mạng ngang hàng có cấu trúc, điển hình là cấu trúc dạng vòng (hình 1.7): Chord,
Pastry, …. Và cấu trúc không gian đa chiều: CAN, Viceroy.
Hình 1.7: Mạng ngang hàng có cấu trúc
Ưu điểm:
Khả năng mở rộng hệ thống mạng trong mô hình không cấu trúc thường bị
hạn chế bởi các kỹ thuật trong việc xây dựng mạng chẳng hạn như: Mô hình tập
trung dẫn tới việc thắt nút cổ chai khi mở rộng, kỹ thuật Flooding dẫn tới việc tăng
lưu lượng mạng khi mở rộng mạng. Trong khi đó khả năng mở rộng với mô hình
mạng có cấu trúc được nâng cao rõ rệt.
Nhược điểm:
Việc quản lý cấu trúc của topo mạng gặp khó khăn, đặc biệt trong trường
hợp tỷ lệ vào/ra mạng của các nút cao.
Vấn đề cân bằng tải trong mạng.
13
Chương 2: BẢO MẬT TRONG HỆ THỐNG MẠNG NGANG
HÀNG
Để hệ thống P2P được chấp nhận và áp dụng rộng rãi thì chúng phải được bảo mật
tốt. Bảo mật trong môi trường P2P đặt ra nhiều thách thức lớn so với bảo mật trong môi
trường client/server. Trong hệ thống P2P, một nút có thể tham gia hoặc rời khỏi mạng bất
cứ lúc nào. Vấn đề này có thể gây ra tiềm năng của nhiều mối đe dọa (như tấn công từ
chối dịch vụ) làm gián đoạn hoạt động của hệ thống. Một nút độc hại có thể thay đổi định
danh của nó bất cứ lúc nào khi nó gia nhập lại vào mạng, điều này sẽ là trờ ngại để xác
định một nút có phải là nút độc hại hay không khi nó vừa mới gia nhập vào mạng.
Trong chương này chúng ta sẽ tìm hiểu về các vấn đề của bảo mật trong mạng
ngang hàng, cụ thể sẽ gồm các phần sau: tấn công định tuyến, tấn công lưu trữ và phục
hồi, tấn công từ chối dịch vụ, xác thực dữ liệu và tính toán, riêng tư và ẩn danh và bảo
mật dựa vào hạ tầng cơ sở khóa công khai (PKI).
2.1. Tấn công định tuyến
Các hệ thống P2P có cấu trúc như Chord[8], CAN[9], Pastry[10] và BATON[11]
áp dụng nguyên lý tương tự như quá trình xử lý truy vấn: khi một nút nhận một yêu cầu
truy vấn, nếu nó không chứa kết quả truy vấn thì nó sẽ chuyển tiếp truy vấn tới một nút
trong bảng định tuyến mà gần hơn với nút lưu kết quả truy vấn và tiến trình kết thúc khi
có một nút phản hồi. Điều này có nghĩa, trong một mạng phủ cố định, không có các nút
mới tham gia và cũng không có các nút rời khỏi mạng, với cùng một truy vấn bắt đầu từ
cùng một nút thì luôn luôn theo cùng một tuyến đường nhất định (thông qua các nút trung
gian). Trong các hệ thống như thế, điều quan trọng là phải đảm bảo tính đúng đắn của
chức năng định tuyến và các trường hợp tấn công định tuyến phải được xử lý kịp thời.
Trong các cuộc tấn công định tuyến, các nút xấu hoạt động tích cực trong hệ thống, chúng
không chỉ tham gia định tuyến mà thông tin của chúng còn được lưu ở trong các bảng
định tuyến của các nút khác. Tấn công định tuyến được chia làm 3 dạng chính như sau:
2.1.1. Tấn công làm sai lệch đường đi trong định tuyến
Tấn công làm sai lệch đường đi trong định tuyến là dạng tấn công mà một nút xấu
chuyển tiếp yêu cầu truy vấn đến một nút không chính xác hoặc trả về một kết quả không
chính xác cho nút yêu cầu truy vấn (ví dụ như: trả về một nút ngẫu nhiên và xem như nút
14
đó giữ kết quả truy vấn). Đối với trường này, giải pháp để giải quyết vấn đề là: cho nút
yêu cầu truy vấn theo dõi quá trình truy vấn. Với cách này, nếu một nút chuyển tiếp xâu
truy vấn tới một nút khác mà không có xu hướng “gần” sang nút đích, trong trường hợp
đó nó bị coi như một nút xấu. Để khôi phục lại hệ thống sau cuộc tấn công này, nút yêu
cầu truy vấn có thể quay lại nút tin cậy sau cùng trên đường định tuyến và yêu cầu nút đó
cung cấp một tuyến đường khác. Đối với trường hợp tấn công thứ hai, nút yêu cầu truy
vấn có thể kiểm tra vùng giá trị được quản lý bởi nút đích để xác minh kết quả. Ví dụ, nút
yêu cầu truy vấn có thể kiểm tra định danh để xác minh chính xác là nút đích.
2.1.2. Tấn công làm cập nhật sai bảng định tuyến
Tấn công làm cập nhật sai bảng định tuyến là dạng tấn công mà một nút xấu muốn
làm hỏng bảng định tuyến của các nút khác bằng cách cung cấp thông tin định tuyến sai
lệch. Hậu quả gây ra từ dạng tấn công này là làm cho các nút “tốt” trong hệ thống truy
vấn sai lệch điểm đích dẫn đến kết quả trả về không chính xác, hoặc truy vấn đến một nút
không tồn tại. Giải pháp để loại bỏ các cuộc tấn công dạng này là kiểm tra các nút ở xa
trước khi tích hợp chúng vào trong bảng định tuyến của các nút. Một cách thức tấn công
tinh vi hơn có thể xảy ra khi hệ thống cung cấp thêm tính linh hoạt bằng cách cho phép
lựa chọn máy chủ. Cách thức tấn công này có thể không ảnh hưởng đến việc định tuyến
nhưng nó có thể ảnh hưởng đến chất lượng của dịch vụ. Ví dụ, thay vì chọn nút nhanh
nhất thì một nút xấu sẽ định tuyến xâu truy vấn đến một nút mà ở đó băng thông rất thấp
và có thể độ tin cậy vào nút đó là rất thấp.
2.1.3. Phân vùng mạng định tuyến không chính xác
Phân vùng định tuyến không chính xác xảy ra khi một nút mới gia nhập vào mạng
và hình thành một phân vùng mạng khác bằng một nhóm các nút độc hại. Điều này có thể
xảy ra bởi vì, khi một nút mới gia nhập vào hệ thống, nó cần được kích hoạt thông qua
một vài nút trong hệ thống. Một nút như thế có thể là thành viên của phân vùng mạng độc
hại. Ngoài ra, một nút xấu ở trong một phân vùng mạng chính đáng cũng có thể định
tuyến các nút mới vào phân vùng mạng độc hại. Các cuộc tấn công như vậy không chỉ có
thể từ chối các dịch vụ đối với các nút mới mà quan trọng là chúng còn có thể quan sát
các hành vi của các nút đó. Một giải pháp cho vấn đề này là chỉ cho các nút mới kích hoạt
đến các nút đáng tin cậy. Bằng giải pháp này, mỗi nút phải duy trì một danh sách các nút
đáng tin cậy mà chúng đã được xác định trước và chỉ liên lạc với các nút trong danh sách
15
đó khi tham gia vào mạng (nếu nút vừa mới tham gia vào mạng lần đầu tiên và nó chưa
biết danh sách các nút tin cậy thì nó có thể lấy thông tin từ một vài nút đáng tin cậy đã
được xác nhận). Ngoài ra, nút mới tham gia có thể kiểm tra bảng định tuyến để phát hiện
phân vùng độc hại. Điều này có thể được thực hiện bằng cách khởi tạo các truy vấn ngẫu
nhiên tại các nút láng giềng ngẫu nhiên và so sánh các kết quả trả về. Nếu hai kết quả
không giống nhau, có khả năng nút đó sẽ rơi vào phân vùng độc hại. Trên thực tế, như
được thảo luận bởi Sit và Morris[12], một giải pháp đơn giản và hiệu quả để tránh các nút
độc hại là cấp định danh cho các nút bằng cách sử dụng khóa công khai của chúng. Mặc
dù chi phí cho giải pháp này có thể rất cao nhưng với giải pháp này các nút độc hại không
thể dễ dàng làm tê liệt hệ thống.
2.2. Tấn công lưu trữ và phục hồi
Hệ thống P2P (có cấu trúc và không có cấu trúc) được triển khai là nơi lưu trữ dữ
liệu phân tán và đó cũng là môi trường thuận lời cho các cuộc tấn công lưu trữ và phục
hồi xảy ra, bao gồm các vấn đề dưới đây:
- Một nút xấu có thể từ chối việc lưu trữ dữ liệu mà đáng lẽ ra nó phải chịu trách
nhiệm lưu trữ.
- Một nút xấu có thể thỏa thuận để lưu trữ dữ liệu nhưng sau đó nó sẽ xóa dứ liệu.
Đây là một vấn đề nghiêm trọng nếu như dữ liệu bị xóa vĩnh viễn.
- Một nút xấu có thể chấp nhận trách nhiệm lưu trữ dữ liệu nhưng có thể nó sẽ từ
chối các yêu cầu của client hoặc tệ hơn nó có thể thay thế bằng các bản sao có sự
thay đổi.
- Một nút xấu có thể hợp tác với các nút khác để cùng tấn công.
- Một nút xấu có thể giả mạo danh tính của một nút khác.
Các dạng tấn công trên cũng xảy ra trong các hệ thống khác, nơi mà những siêu dữ
liệu được lưu trữ. Đặc biệt, các siêu dữ liệu phổ biến nhất là những dữ liệu được sử dụng
trong các chỉ số định tuyến và rất quan trọng, chúng cần được bảo đảm tính chính xác và
đầy đủ. Một giải pháp để chặn các cuộc tấn công này được đề xuất trong hệ thống
PIPE[13] (Peer-to-Peer Information Preservation and Exchange network - hệ thống mạng
bảo tồn và trao đổi thông tin ngang hàng). Hệ thống PIPE về cơ bản là một hệ thống phân
tán được thiết kế để bảo vệ tài nguyên từ các bản đã bị sửa đổi hoặc bị làm hỏng gây ra
16
bởi các nút xấu. Giả sử có k nút thất bại và m nút là xấu, hệ thống PIPE cung cấp một vài
dịch vụ cho các nút như sau:
- Discover(): dịch vụ này sử dụng một nút mới gia nhập vào hệ thống. Nhiệm vụ
của nó là thông báo cho hệ thống biết các nút mới vừa gia nhập để thống kê các nút đang
trực tuyến, và hỗ trợ các nút mới có được một danh sách ít nhất k nút, những nơi có thể
lưu trữ tài liệu. Để chắc chắn bất cứ tài liệu nào được lưu trữ tại các nút khác là không bị
mất, ít nhất (m + 1) nút phải được giao tiếp để bảo đảm ít nhất một trong số các nút đó là
không phải nút xấu. PIPE giả định nút mới đã biết danh tính của những nút đó để kích
hoạt quá trình học hỏi danh tính của các nút khác trong hệ thống. Trong thực tế, có thể nó
cần giao tiếp với (m + k + 1) nút khác nếu k nút bị thất bại. Từ (m + 1) nút (hoặc lớn
hơn), nút mới gia nhập sẽ hợp nhất các danh sách các nút được cung cấp bởi mỗi nút để
có được danh sách các nút mà nó có thể lưu trữ tài liệu trên đó để tải về một bản có giá trị
vào một thời điểm sau.
- publish(D, i): dịch vụ này có nhiệm vụ lưu giữ tài liệu D tại nút i. Vì các nút xấu
có thể xóa D hay thậm chí từ chối phục vụ D, vì thế các nút có thể thất bại, P phải tạo ra ít
nhất (m + k + 1) nút. Bằng cách này, sẽ có ít nhất một bản sao có giá trị tại ít nhất một nút
có hiệu lực.
- recover(D, i): dịch vụ này được sử dụng để xuất bản thêm số bản sao của tài liệu
vào hệ thống PIPE khi các nút xấu hoặc các nút thất bại đã xóa tài liệu, do đó sẽ luôn có ít
nhất một bản sao có hiệu lực được lưu giữ đâu đó trong mạng.
- search(q): dịch vụ này sẽ gửi quảng bá truy vấn tìm kiếm q đến tất cả các nút.
Các nút chứa tài liệu phù hợp với q sẽ trả lại id của tài liệu đó và id của chính nó. Vấn đề
thách thức ở đây là bằng cách nào có thể chọn lọc ra các bản sao bị thay đổi.
- retrieve(D, i): dịch vụ này sẽ lấy id của tài liệu D từ nút i. Để đảm bảo tài liệu
được lấy ra là một bản sao hợp lệ (không phải là bản bị thay đổi), một trong những giải
pháp an toàn đó là ràng buộc id của tài liệu với nội dung của tài liệu. Điều này có thể thực
hiện bằng cách đại diện id của tài liệu như một chữ ký (bằng cách sử dụng hàm băm một
chiều như SHA hoặc MD5). Một tài liệu được xác thực bằng cách kiểm tra chữ ký của nó
trùng với id của nó (thu được từ hoạt động search()).
Hiệu quả của hệ thống PIPE phụ thuộc vào mức độ chính xác của sự dự báo về m
và k. Trong khi hầu hết các giải pháp đơn giản sử dụng phương pháp lưu trữ dư thừa
17
(nhân rộng tài liệu trên một số lượng lớn các nút), một giải pháp thay thế là hạn chế ảnh
hưởng của các nút xấu, càng thấp càng tốt. Cách này có thể đạt được bằng cách sử dụng
các kỹ thuật để phát hiện một số hành vi nguy hiểm rõ ràng. Trong hệ thống PIPE, hai kỹ
thuật đã được đề xuất để yêu cầu challenger truy vấn đến nút bị coi là giả mạo lưu giữ tài
liệu. Kỹ thuật đầu tiên, kỹ thuật phát hiện giả mạo lưu giữ tài liệu: yêu cầu nút đó (nút bị
coi là giả mạo) cung cấp tài liệu mà nó đã được phân phát lưu giữ. Rõ ràng, nếu nó không
có khả năng trả lại tài liệu thì nó bị coi là nút xấu. Kỹ thuật thứ hai, kỹ thuật phát hiện bản
sao không hợp lệ yêu cầu một nút đang giữ tài liệu trả lại một phần của tài liệu (lựa chọn
ngẫu nhiên bởi challenger). Một lần nữa, nếu nút đó trả lại phần tài liệu có nội dung
không như mong đợi thì nút đó cũng bị coi là nút xấu. Khi một nút xấu được phát hiện, hệ
thống sẽ phục hồi bằng cách tạo thêm các bản sao.
2.3. Tấn công từ chối dịch vụ
Trong một mạng ngang hàng, các nút tham gia nên sẵn sàng đóng góp các dữ liệu
hoặc các tài nguyên của chúng cho các nút khác. Tuy nhiên, một nút có thể trở nên không
sẵn sàng vì lý do nó bị tấn công. Một trong những hình thức tấn công đó là tấn công từ
chối dịch vụ (denial-of-service – DoS). Trong một vụ tấn công từ chối dịch vụ, một nút bị
quá tải bởi các tin nhắn vô ích và lãng phí tài nguyên của nó để thực hiện các công việc
vô nghĩa, do đó nó không thể đáp ứng đúng mục đích. Ví dụ, một nút xấu có thể gửi liên
tục các tin nhắn đến một nút duy nhất. Bằng cách này, nó sẽ làm cho băng thông của một
nút bị tiêu thụ chỉ để chuyển tin nhắn, làm cho các tài nguyên mà nó chia sẻ (như CPU, bộ
nhớ) không sẵn sàng cho các nút khác trong mạng. Tấn công từ chối dịch vụ được chia
thành hai dạng: tấn công tầng mạng và tấn công tầng ứng dụng. Trong khi các cuộc tấn
công tầng mạng cố gắng để làm tê liệt một nút bằng cách làm ngập và sau đó làm tràn với
một số lượng lớn giao thông trong mạng, các cuộc tấn công tầng ứng dụng làm cho một
nút không sẵn sàng cho một số lượng lớn các yêu cầu ứng dụng. Sau đó nút đó có thể hư
hỏng do phải sử dụng cạn nguồn tài nguyên để phục vụ các yêu cầu vô ích.
Trong phần này chúng ta sẽ xem xét một số phương pháp hiện nay được xây dựng
để (a) phát hiện khi một cuộc tấn công từ chối dịch vụ diễn ra, (b) quản lý các cuộc tấn
công để các nút có thể duy trì dịch vụ của nó cho các nút khác. (c) phục hồi từ cuộc tấn
công bằng cách ngắt kết nối với các nút nguy hiểm.
18
2.3.1. Quản lý các cuộc tấn công
Daswani và Garcia-Molina[14] đã nghiên cứu tấn công dịch vụ ở tầng ứng dụng
trong phạm vi của một mạng ngang hàng sử dụng kiến trúc siêu nút. Trong một kiến trúc
như vậy, các nút được phân loại thành hai cấp: nút cục bộ kết nối với mạng ngang hàng
thông qua một siêu nút; các nút siêu nút giao tiếp trong một bộ Gnutella-like, nơi mà một
truy vấn được gửi quảng bá từ một siêu nút đến tất cả các siêu nút láng giềng của nó.
Công việc tập trung vào việc quản lý các cuộc tấn công từ chối dịch vụ, rất khó để phân
biệt giữa các truy vấn hợp lệ với các truy vấn nhằm mục đích tấn công. Giải pháp cơ bản
là cân bằng hệ thống bằng cách chia sẻ công bằng tài nguyên cho mỗi nút, tức là không
quan tâm bao nhiêu thông điệp, bao nhiêu yêu cầu được xử lý từ một nút mà nút phục vụ
chỉ dành ra một con số cụ thể các tài nguyên cho nút đó. Bằng cách này, mức độ nguy
hiểm của các cuộc tấn công vào một nút sẽ được hạn chế.
Với kiến trúc siêu nút, mỗi siêu nút có 2 cấp truy vấn: truy vấn cục bộ và truy vấn
liên bộ. Để hạn chế tác hại của một cuộc tấn công từ chối dịch vụ mà không có thể nhận
biết một truy vấn có phải là truy vấn nhằm mục đích tấn công hay không, các tác giả đã
đưa ra một tham số được gọi là tỷ lệ hạn chế ρ (0 <= ρ <=1), để xác định tỷ lệ của các
truy vấn cục bộ và các truy vấn liên bộ. Ví dụ, nếu một nút có khả năng phục vụ k truy
vấn trong một đơn vị thời gian, sau đó nó chấp nhận ρ * k truy vấn cục bộ, và (1 – ρ) * k
truy vấn liên bộ trong một đơn vị thời gian. Ngoài ra, vì một nút sẵn sàng chấp nhận chỉ
(1–ρ) * k truy vấn liên bộ, điều này làm phát sinh hai vấn đề: vấn đề đầu tiên là có bao
nhiêu truy vấn mà một nút nên chấp nhận từ một nút láng giềng; vấn đề thứ hai là phải
làm gì nếu số lượng truy vấn liên bộ lớn hơn (1 – ρ) * k. Để giải quyết hai vấn đề này,
một lý thuyết đã đề xuất hai chiến lược: chiến lược incoming allocation strategy - IAS và
chiến lược drop strategy – DS.
- Chiến lược IAS: có hai kỹ thuật được sử dụng trong chiến lược này. Kỹ thuật thứ
nhất là kỹ thuật Weighted IAS, trong đó tập hợp xác suất được chấp nhận của các truy vấn
là bằng nhau. Vì thế, nếu các nút láng giềng gửi nhiều truy vấn sẽ chỉ có một tỷ lệ các truy
vấn được chấp nhận. Ví dụ, nếu một nút có n nút láng giềng và mỗi nút gửi αi truy vấn
(1<= i <= n), sau đó nút đó sẽ nhận ( )*)1(
1
kn
j j
i
truy vấn từ nút láng giềng thứ i.
Kỹ thuật thứ hai là kỹ thuật Fractional IAS, nó xử lý công bằng đối với mỗi nút láng
19
giềng. Nói cách khác, một nút có n nút láng giềng sẽ chấp nhận
n
k*)1( truy vấn từ mỗi
nút láng giềng. Với nút láng giềng có ít hơn
n
k*)1( truy vấn, thì khả năng xử lý còn lại
được nhường cho các nút láng giềng khác.
- Chiến lược DS: Trong khi một nút áp dụng chiến lược IAS chấp nhận m truy vấn
từ nút láng giềng gửi (m + δ) truy vấn thì chiến lược DS xác định m truy vấn (trong số m
+ δ truy vấn) nên được lựa chọn để chấp nhận (hay đúng hơn là nên loại bỏ δ truy vấn).
Nút X là nút mà nó chấp nhận truy vấn từ nút láng giềng Y của nó. Có j truy vấn riêng biệt
từ Y và số lượng mỗi truy vấn riêng biệt là q1, …, qj. Có ba kỹ thuật được sử dụng trong
chiến lược này. Kỹ thuật Proportional DS: mỗi loại truy vấn được thiết lập một trọng số
như nhau, và do đó X sẽ chấp nhận ( m
q
q
j
l l
i *
1
) truy vấn từ truy vấn loại i. Kỹ thuật
Equal DS: các truy vấn được lựa chọn dựa vào nút nguồn (nút phát ra truy vấn) và mỗi
nút nguồn đều được lựa chọn bằng nhau. Vì vậy, nếu có s nút nguồn khác nhau, thì X sẽ
chấp nhận
s
m truy vấn từ mỗi nút nguồn đó. Khả năng xử lý truy vấn còn lại sẽ chuyển
cho các truy vấn từ các nút nguồn. Cuối cùng, kỹ thuật OrderbyTTL DS: được sử dụng để
loại bỏ các truy vấn dựa trên giá trị thời gian sống (time-to-live – TTL) của chúng. Có hai
cơ chế sử dụng trong kỹ thuật này: PreferHighTTL sẽ loại bỏ những truy vấn có thời gian
sống thấp nhất đầu tiên và PreferLowTTL sẽ loại bỏ những truy vấn với thời gian sống
cao nhất đầu tiên.
2.3.2. Phát hiện và phục hồi từ các cuộc tấn công
Trong một hệ thống mạng ngang hàng P2P, quan sát thấy rằng topo của hệ thống
tuân theo luật phân phối lớn, nơi một phần nhỏ các nút giữ một số lượng lớn các kết nối
đến các nút khác trong khi số lượng lớn các nút còn lại chỉ duy trì một số lượng nhỏ các
kết nối. Điều này có nghĩa, một phần lớn lưu thông trong mạng đi qua một số nhỏ các nút
kết nối cao. Kết quả là các cuộc tấn công vào các nút này có thể dễ dàng phân vùng mạng
thành các vùng cô lập, làm cho hệ thống hoạt động kém hiệu quả. Để trành và phục hồi từ
các cuộc tấn công, kỹ thuật phát hiện và phục hồi từ các cuộc tấn công là rất đáng quan
tâm. Các cuộc tấn công nhằm mục đích phân vùng mạng khác với sự thất bại. Sự thất bại
của các nút là kết quả từ việc các nút bị loại bỏ khỏi mạng một cách bất ngờ (hoặc do các
20
nút rời khỏi mạng hay các hình thức tấn công khác, như tấn công DoS ở tầng ứng dụng).
Còn đối với các cuộc tấn công nhằm mục đích phân vùng mạng thường để ý vào các nút
có kết nối cao. Như vậy, kỹ thuật phát hiện thất bại cơ bản xem xét một nút láng giềng là
thất bại nếu nó ngừng đáp ứng dịch vụ. Keyani[15] đã đề xuất một giải pháp để phát hiện
một cuộc tấn công bằng cách quan sát sự kết nối giữa các nút có bị giảm hay không.
Trong giải pháp này, cần có một nút duy trì thông tin của cả các nút láng giềng trực tiếp
và các nút láng giềng gián tiếp. Giải pháp này dựa vào sự quan sát một cuộc tấn công vào
một nút sẽ loại bỏ nút láng giềng có kết nối mạnh nhất của nút đó với xác suất cao và do
đó ngắt kết nối một số lượng lớn của các nút láng giềng của nút láng giềng bị loại bỏ. Như
vậy, để phát hiện một cuộc tấn công, trong một khoảng thời gian, mỗi nút giám sát số nút
láng giềng trực tiếp và gián tiếp đang bị hủy kết nối. Nếu tỉ lệ các nút láng giềng trực tiếp
bị ngắt kết nối lớn hơn tỷ lệ các nút láng giềng gián tiếp bị ngắt kết nối và lớn hơn một
ngưỡng nhất định (đã được xác định trước), có khả năng là một cuộc tấn công đang xảy
ra. Lý do của việc đưa ra ngưỡng là để lọc ra các sai sót do các lỗi ngẫu nhiên. Để khôi
phục lại mạng sau khi phát hiện thấy tấn công, Keyani đã đề xuất một kỹ thuật phục hồi.
Ý tưởng cơ bản rất đơn giản nhưng lại hiệu quả: hệ thống duy trì một mạng ảo thay thế
lớp phủ bên ngoài mạng hoạt động để khi mạng hoạt động bị phá vỡ, các nút từ mạng phủ
ảo có thể được sử dụng thay thế các liên kết bị phá vỡ. Để cung cấp như một sự thay thế
lớp phủ ảo, một vài vấn đề đã được giải quyết: (a) Mạng ảo nên được thiết kế như thế
nào? (b) làm thế nào để duy trì mạng ảo này? Làm thế nào để sử dụng mạng ảo trong một
cuộc tấn cống. Keyani cũng đề xuất một mạng lũy thừa [15]. Trong loại mạng này, tất cả
các nút có khoảng chừng bằng nhau số lượng các liên kết. Điều này có nghĩa, một cuộc
tấn công vào một số lượng nhỏ các nút không thể dễ dàng phân vùng mạng. Để đảm bảo
một mạng lũy thừa có thể duy trì mà không cần quá nhiều chi phí, một kỹ thuật phát hiện
nút ngẫu nhiên đã được đề xuất: một nút phát ra một thông điệp kiểm tra kết nối, được gọi
là một khám phá ngẫu nhiên (random discovery ping – RDP), chọn ngẫu nhiên một nút
láng giềng để gửi thông điệp. Quá trình này lặp đi lặp lại cho đến khi thông điệp đã được
chuyển đi với một số bước xác định trước. Nút cuối cùng nhận được RDP sẽ trả lời một
thông điệp pong cho nút gửi thông điệp ping, qua đó nút cuối cùng nhận được RDP sẽ
được xác định. Để phục hồi toàn bộ mạng, số lượng các bước phải đủ lớn để khôi phục
vùng mạng lớn. Hai chiến lược áp dụng việc chọn những nút láng giềng để gửi RDP.
Chiến lược thứ nhất áp dụng số lượng các bước ban đầu và lựa chọn các nút láng giềng
21
một cách ngẫu nhiên với xác suất tỉ lệ với số lượng các nút láng giềng. Chiến lược này
cho phép thông điệp được truyền đi xa tới mức có thể từ nút nguồn để ngăn chặn vòng lặp
tuần hoàn. Chiến lược thứ hai áp dụng số lượng các bước còn lại và ủng hộ các nút mà có
ít láng giềng. Sử dụng chiến lược này có thể giảm thiểu tính chất ưu đãi luôn đi kèm trong
mạng hoạt động. Như vậy, mỗi nút trong mạng sẽ duy trì số láng giềng có hiệu lực cho
mạng hoạt động và số láng giềng ảo cho mạng ảo.
Trong trường hợp mạng bị gián đoạn, mạng ảo sẽ được sử dụng: một nút sẽ chọn
từ danh danh sách các nút láng giềng ảo để tahy thê láng giềng bị lỗi của nó. Lưu ý rằng,
trong quá trình thay thế, hệ thống không tìm láng giềng ảo mới vì làm việc này hệ thống
sẽ gánh thêm lưu lượng truy cập trong mạng và do đó đặt thêm gánh nặng cho hệ thống
mạng đã thực sự thất bại. Việc tìm láng giềng ảo có thể thực hiện sau đó khi mạng không
còn “bận rộn”.
Nghiên cứu mô phỏng cho thấy, việc đề xuất phương pháp phát hiện và phục hồi
có thể hạn chế sự phân vùng mạng giảm xuống 25 lần so với cách tiếp cận thông thường.
Kết quả cho thấy hiệu quả của truy vấn cũng được cải thiện cả trong và sau vụ tấn công.
Với chi phí 20% lưu thông trong mạng được cọi là có thể chấp nhận được nếu nhìn về
những lợi ích nó mang lại cho hệ thống.
Đối với hệ thống mạng ngang hàng, Sit và Morris[12] đã nêu ra rằng, các cuộc tấn
công DoS vào một nút duy nhất được coi là thất bại để hệ thống có thể sử dụng các kỹ
thuật phục hồi nhằm cô lập nút mục tiêu. Tuy nhiên, để giảm thiểu tác hại của cuộc tấn
công, một vài mức độ nhân rộng là cần thiết.
2.4. Xác thực và toàn vẹn dữ liệu
Với sự gia tăng nhanh chóng của các tài nguyên có giá trị trên các máy tính cá
nhân hiện nay, các hệ thống P2P như Freenet [16], Publis [17], OceanStore [18] và CFS
[19] cung cấp giải pháp với chi phí rất thấp, việc lưu trữ sẵn sàng ở mức độ cao và không
cần đến máy chủ tập trung. Tuy nhiên, môi trường P2P là môi trường dễ phát sinh các
mối nguy hiểm chủ yếu theo nghĩa một nút có thể trở thành một nút độc hại (ngay cả khi
phần lớn các nút đều là các nút có thể tin cậy). Một nút độc hại có thể làm hỏng nội dung,
thay thế nó bằng một nội dung có hại (có chứa virus), hoặc có thể không trả lại đầy đủ các
câu trả lời cho nút yêu cầu (ví dụ: trong các ứng dụng cơ sở dữ liệu, nó có thể chọn ra k
22
đối tượng để trả lại kết quả phản hồi trong khi câu trả lời đầy đủ chứa (k+j) đối tượng với
(j >=1)).
Một giải pháp đơn giản là chỉ lưu giữ dữ liệu trên các nút tin cậy, tức là nút đó đã
được xác thực là tin cậy bởi một vài người có thẩm quyền. Một giải pháp khả thi hơn mà
có thể không cần đến phải tin cậy bất kỳ nút nào. Thay vào đó, một nút sẽ tạo ra một số
đối tượng xác minh để đáp ứng truy vấn. Các đối tượng xác minh được sử dụng bởi các
nút truy vấn để xác nhận rằng các câu trả lời là chính xác. Hai điểm quan trọng trong một
kỹ thuật như vậy là: (a) nó phải cho phép các nút truy vấn để xác minh các câu trả lời
được trả về bởi nút không tin cậy thực sự thuộc về tập các câu trả lời; (b) nó phải cho
phép các nút truy vấn để xác minh các câu trả lời đầy đủ.
2.4.1. Các truy vấn xác thực trong cớ sở dữ liệu quan hệ
Devanbu [20] đề xuất một ý tưởng mà có thể thuận lời để lưu giữ cơ sở dữ liệu
quan hệ trên các nút không tin cậy. Ý tưởng cở bản như sau:
- Người sở hữu dữ liệu gửi quảng bá một thông điệp đến các nút mà họ sẽ truy vấn
quan hệ. Thông điệp này được lấy từ gốc của một cây băm Merkle xây dựng trên quan hệ
này. Một cây băm Merkle là một cây nhị phân mà nút lá thứ i có giá trị băm Hi thu được
bằng cách áp dụng hàm băm h trên bộ thứ i. Tức là Hi = h(h(ti . A1) || h(ti . A2) || ... h(ti .
An)) đối với một quan hệ có n thuộc tính. Các nút khác trên cây cũng được tạo ra bằng
cách tính giá trị băm của các nút con của nó. Hình 2.1 cho thấy một ví dụ về một cây băm
Merkle. Ở đây, có 4 bộ. H1 đến H4 là những giá trị băm của bốn bộ tương ứng từ t1 đến t4.
Nút cha của t1 và t2 có giá trị băm được tính: H12 = h(H1|| H2). Thông điệp cho 4 bộ là Hr.
Hình 2.1(a): Cây băm Merkle
23
- Đối với một truy vấn, nút không tin cậy đánh giá truy vấn và trả về cùng với các
bộ trả lời một đối tượng xác minh gọi là VO. Về bản chất, VO là một cây con được tạo ra
từ cây băm Merkle trên quan hệ này. Để một truy vấn chính xác được trả về từ một bộ
đơn cần tìm đường đi từ bộ đó đến gốc tương đương với việc tìm các nút trung gian giữa
bộ đó với nút gốc, đó là một dạng của VO. Ví dụ, để tìm được t2, VO gồm các nút H1 và
H34. Đối với một truy vấn phức tạp, như có thể thấy truy vấn q trong hình 2.1(b), VO cũng
rất phức tạp. Ở đây GLB(q) và LUB(q) biểu thị giá trị lớn nhất nhỏ hơn so với câu trả lời
của q và giá trị nhỏ nhất lớn hơn các câu trả lời của q. LCA(q) là giá trị giao nhau của các
cây con và nó giới hạn những câu trả lời từ GLB(q) đến LUB(q). VO trong trường hợp này
bao gồm các nút cần thiết để xác định 3 đường: từ GLB(q) đến LCA(q), từ LUB(q) đến
LCA(q) và từ LCA(q) đến gốc.
- Khi nhận được câu trả lời và VO, nút truy vấn sẽ xác minh tính đúng đắn của câu
trả lời bằng cách tính lại thông điệp sử dụng câu trả lời và VO.
Hình 2.1(b): Miền xác thực liên tục
Chúng ta lưu ý rằng các giá trị GLB(q) và LUB(q) cần thiết để xác minh tính đầy
đủ của các câu trả lời. Nếu kết quả thu được giống với kết quả cung cấp bởi chủ sở hữu,
thì câu trả lời trả về bởi nút không tin cậy là chính xác và đầy đủ. Tiếp tục với ví dụ trên,
để xác minh t2 không bị giả mạo, client làm các công việc sau: đầu tiên nó tính H2’; với
H1 và H2’ có thể xác định được H12’; và cuối cùng, kết hợp H12’ và H34 để tính Hr’. Nếu
Hr = Hr’ thì t2 không bị giả mạo. Lưu ý ở đây là client đã được giả định là đã có Hr từ chủ
sở hữu. Ngoài ra, Hr có thể được ký bởi chủ sở hữu (với khóa riêng của họ) và được coi
như một phần của VO; trong trường hợp này, client có thể tự xác minh xem Hr’ có giống
với chữ ký Hr (với khóa công khai của chủ sở hữu) hay không.
24
Davanbu[20] và các đồng nghiệp của mình cũng trình bày cách xác định VO cho
các thao tác SQL như selection, projection, join và set có thể được tính bằng cách sử dụng
kỹ thuật này. Tuy nhiên với kỹ thuật này cũng đặt ra 3 điểm hạn chế:
1. Do các cách sắp xếp khác nhau của các bộ trong một bảng dẫn đến các cây băm
Merkle khác nhau, khi sự sắp xếp các bộ thay đổi, nó cần tái tạo lại cây băm
Merkle theo sự sắp xếp trong bảng. Kết quả là hệ thống phải chịu chi phí cao cho
việc cập nhật dữ liệu. Hơn nữa, nếu bảng được sắp xếp theo các cách khác nhau,
nó sẽ tạo ra các cây băm Merkle khác nhau, vì thế tổng phí để lưu trữ các cây băm
Merkle là rất lớn.
2. Vì đối tượng xác minh VO cho một kết quả truy vấn chứa tất cả các nút trong
đường đi từ nút chứa kết quả truy vấn đến nút gốc dẫn đến kích thước của VO là tỷ
lệ thuận với kích thước của kết quả truy vấn và bằng logarit kích thước của bảng.
Kết quả là nếu kích thước của kết quả truy vấn lớn thì kéo theo kích thước của VO
cũng sẽ lớn.
3. Vì hàm băm được áp dụng trên tất cả các bộ, để xác định VO của một kết quả truy
vấn, nó cần gửi tất cả các bộ của kết quả truy vấn đến nơi phát ra truy vấn. Do đó
việc xác minh được thực hiện tại nơi phát ra truy vấn có thể gây ra sự tiêu thụ tài
nguyên rất lớn bộ lọc lọc ra các thuộc tính. Ngoài ra, yêu cầu gửi tất cả các bộ của
kết quả truy vấn làm giới hạn kỹ thuật này trong việc hỗ trợ kiểm soát truy cập ở
mức cột, tức là không thể cho phép một người dùng truy cập một số cột trong khi
không cho người khác truy cập.
Để khắc phục những hạn chế trên, Pang và Tan [21] đã đưa ra một cây B xác thực
(Verifiable B-Tree – VB-Tree). Giải pháp này có thể tạo ra một đối tượng VO của một
truy vấn không phụ thuộc vào kích thước của kết quả truy vấn và độc lập với kích thước
của bảng và cho phép việc xác minh được thực hiện tại các nút cung cấp kết quả truy vấn
thay vì ở các nút phát ra truy vấn. Ngoài ra, giải pháp này cũng cho phép việc cập nhật
được thực hiện tự động không vi phạm tính nhất quán của dữ liệu. Một ví dụ về một cây
VB được thể hiện trong hình 2.2. Cấu trúc cây này được xây dựng trên ba ý tưởng cơ bản
sau:
- Thứ nhất, cây VB tạo các ký tự chữ ký cho tất cả các thuộc tính trong một bộ và
sử dụng các ký tự chữ ký để tính toán các ký tự chữ ký của bộ đó. Đặc biệt, để tạo ra một
25
ký tự chữ ký cho một thuộc tính, đầu tiên hệ thống sử dụng hàm băm một chiều như MD5
hoặc SHA-1 để băm chuỗi (tên của cơ sở dữ liệu, bảng, bộ, khóa của bộ, giá trị của thuộc
tính). Giá trị của kết quả này sau đó được ký với khóa bí mật của cơ sở dữ liệu. Bằng cách
này, hệ thống cần có một máy chủ đáng tin cậy để lưu giữ các khóa công khai của cơ sở
dữ liệu và một nguồn chứng thực như chứng thực cơ sở hạ tầng khóa công khai X.509 và
CRL Profile [22], cho phép người dùng lấy khóa công khai của cơ sở dữ liệu để sử dụng
trong việc tính ngược.
Hình 2.2: Cây VB
- Thứ hai, giải pháp này sử dụng hàm băm h(x) = gx mod q để tạo ra giá trị băm
cho các nút trong cây VB. Vì hàm băm này có tính chất quan trọng đó là h(x+y) = h(y+x),
bằng cách sử dụng hàm băm này cho phép hệ thống tính các thông điệp của các nút trên
cây ở một bậc tùy ý, do đó tránh được vấn đề đầu tiên trong hệ thống sử dụng cây băm
Merkle để thực hiện tại nút giữ kết quả truy vấn và vì thế tránh được vấn đề thứ ba của hệ
thống sử dụng cây băm Merkle.
- Cuối cùng, để giảm bớt vấn đề thứ hai của cây băm Merkle, đối tượng VO của
một kết quả truy vấn trong một cây VB chỉ cần chứa các nút trên cây thuộc cây con nhỏ
nhất bao gồm tất cả các kết quả truy vấn. Giải pháp này rất khả thi do hệ thống duy trì
một thông điệp chữ ký cho mỗi nút trong cây VB. Một ví dụ để làm rõ cách mà một đối
tượng xác minh VO được tạo ra như thế nào được thể hiện trong hình 2.3.
26
Hình 2.3: Quá trình tính đối tượng xác minh VO
2.4.2. Tự xác thực dữ liệu với mã Erasure
Weatherspoon [23] tích hợp các khái niệm về một cây băm Merkle và mã erasure
để thiết kế một chương trình tự thẩm tra cho dữ liệu lưu trữ trong một môi trường P2P.
Dữ liệu có thể là một tài liệu, một đối tượng hoặc một khối. Chúng ta sẽ sử dụng đối
tượng dữ liệu ở đây. Với mã erasure [24], một đối tượng dữ liệu có thể được chia thành m
mảnh nhỏ và sau đó mã hóa lại vào n mảnh nhỏ (n > m) sao cho nó có thể tái tạo lại đối
tượng dữ liệu gốc từ sự kết hợp bất kỳ m mảnh vỡ nào. Trong môi trường P2P, mỗi mảnh
được lưu giữ trong một nút, nơi đó cũng có thể là một nút độc hại. Trong trường hợp đó,
các nút độc hại có thể sửa đổi các mảnh để làm hỏng nó (một bộ phận bị hỏng được gọi là
erasure). Rõ ràng, nếu hệ thống không thể nhận ra các mảnh vỡ bị hư hỏng, quá trình xây
dựng tính toán trở nên phức tạp, nghĩa là chúng ta cần thử tổ hợp của nm .
Một giải pháp cho vấn đề này là xây dựng một cây băm Merkle cho các đối tượng
dữ liệu và các phân mảnh của nó, tức là các đối tượng dữ liệu và các phân mảnh của nó
tạo thành lá của cây. Hình 2.4(a) cho thấy một ví dụ về một cây băm Merkle cho đối
tượng dữ liệu với 4 phân mảnh. Ở đây, mảnh Fi có giá trị băm Hi và đối tượng dữ liệu có
giá trị băm Hd. GUID là định danh duy nhất mà có thể được dùng để nhận biết và xác
nhận đối tượng. Mỗi phân mảnh được thực hiện tự kiểm chứng bằng cách lưu trữ trong
mỗi mảnh tất cả các thông tin cần thiết để xác minh giá trị băm của các phân mảnh, tức là
giá trị băm của các nút sibling trong đường đi từ mảnh lá đến gốc. Hình 2.4(b) cho thấy tự
27
kiểm chứng nội dung của phân mảnh cho ví dụ trong hình 2.4(a). Khi một nút nhận được
một phân mảnh để tái tạo đối tượng, nút đó xác minh phân mảnh đó bằng cách đầu tiên
tính giá trị băm của phân mảnh đó, sau đó lặp lại quá trình băm kết quả tính toán ở bước
trước với giá trị băm tương ứng trong cây Merkle cho đến khi thu được giá trị băm của
nút gốc. Nếu giá trị băm cuối cùng phù hợp với GUID, phân mảnh đó là phân mảnh hợp
lệ và có thể sử dụng để tái tạo đối tượng; nếu không, néo là một phiên bản đã bị hỏng và
cần phải tìm kiếm một phân mảnh khác.
Hình 2.4: Chương trình tự xác minh
2.5. Xác thực tính toàn vẹn của tính toán
Chúng ta đã chứng kiến việc triên khai thành công của công nghệ P2P để phân bổ
việc tính toán. Các dự án đáng chú ý như: SETI@home [25] (BOINC [26]) và the
Folding@home [27] là các các dự án mà các tính toán chuyên sâu được phân chia cho các
nút. Ví dụ, số lượng người tham gia trong SETI@home là hơn 4,5 triệu người. Họ đóng
góp sức mạnh máy tính của họ để xử lý trung bình 65 TeraFLOPS.
Không chắc chắn rằng các tính toán của các nút là đáng tin cậy. Ví dụ, một số nút
có thể chỉ thực hiện một tập nhỏ các nhiệm vụ được giao và cho rằng nó đã làm tất cả các
tính toán. Trên thực tế, đã có báo cáo về các nhà tài trợ tài nguyên cho SETI@home đã
giả mạo số lượng thời gian họ đã đóng góp. Mục đích của việc giả mạo này là để tăng thời
gian đóng góp của một nút để nó được liệt kê vào một trong những đóng góp hàng đầu
cho website của SETI. Một ví dụ khác, một số nút có thể cố ý trả lại các câu trả lời sai
(ngay cả khi chúng đã thực hiện các tính toán). Nếu không bị phát hiện, hậu quả có thể
28
nói là một thảm họa. Một giải pháp đơn giản để phát hiện câu trả lời không chính xác là
phân công mỗi công việc cho nhiều nút khác nhau cùng làm, sau đó so sánh kết quả trả
về. Nhược điểm của phương pháp này là nó phải gánh chịu chi phí cao trong tính toán vì
nó phải lãng phí một số chu trình và băng thông để lặp lại các tính toán. Một giải pháp cải
thiện là chỉ cần kiểm tra lại các tính toán của một số mẫu được lựa chọn ngẫu nhiên các
nhiệm vụ. Với sự lựa chọn đúng đắn của số lượng mẫu, chúng ta có thể làm giảm xác suất
mà một nút không tin cậy có thể lấy đi mà không bị phát hiện là rất thấp. Ví dụ, nếu nút
không trung thực chỉ tính toán một nửa của 1000 công việc được giao và 50 mẫu được
chọn, thì xác suất của lấy đi chỉ là 1/ 250. Bằng cách chọn một kích thước mẫu đủ lớn, nó
gần như không thể bỏ qua mà không bị phát hiện gian lận. Tuy nhiên, kỹ thuật này vẫn
còn đòi hỏi một phí lưu thông cao để truyền tải tất cả các kết quả.
Một vài công việc đã được làm để giải quyết vấn đề gian lận. Du [28] đã đề xuất
một mẫu dựa trên cam kết (commitment-based sampling – CBS) mà có thể làm giảm phí
trong lưu thông, thay vì phải trả về kết quả của tất cả các nhiệm vụ thì chỉ những kết quả
của mẫu mới cần được trả về. Kỹ thuật CBS hoạt động trong bốn giai đoạn (giả sử nút A
giao nhiệm vụ cho nút B): (a) B thực hiện nhiệm vụ được giao; xây dựng một cây băm
Merkle trong đó mỗi nút lá tương ứng với mỗi công việc, các giá trị băm tại các nút tương
ứng với việc áp dụng một hàm băm một chiều trên các kết quả của nhiệm vụ; B truyền giá
trị băm của nút gốc của cây băm Merkle đến A. (b) A lựa chọn ngẫu nhiên m mẫu nhiệm
vụ cho B để làm bằng chứng cho sự trung thực. (c) Đối với mỗi nhiệm vụ (trong số m
nhiệm vụ), B xác định đường P từ nút là tương ứng với nhiệm vụ đó đến nút gốc, sau đó
với mỗi nút v thuộc P, giá trị băm của các nút “anh chị em” được gửi từ A. Giá trị băm
của kết quả của nhiệm vụ cũng được truyền đến A. (d) Đỗi với mỗi công việc, A có thể dễ
dàng xác minh liệu B có trung thực hay không bởi việc tính lại các giá trị băm của gốc:
Nếu giá trị băm của gốc tính được giống với giá trị băm gốc theo cam kết thì B là trung
thực đối với nhiệm vụ này; nếu không, B là không trung thực.
2.6. Chia sẻ dữ liệu giữa các nút trong mạng ngang hàng
Cộng tác là thế mạnh chính của mạng ngang hàng. Các nút tham gia trong mạng sẽ
chia sẻ tài nguyên của chúng (như dữ liệu, chu trình xử lý, băng thông, không gian lưu
trữ) tạo nên những lợi ích tiềm năng của công nghệ mạng ngang hàng. Tuy nhiên, trên
thực tế, nhiều người sử dụng các tài nguyên của hệ thống P2P mà không chia sẻ tài
29
nguyên của họ cho người khác sử dụng. Hơn nữa, trở ngại khách quan của việc cộng tác
cho phép một số nút khác sử dụng tài nguyên có thể làm giảm công suất xử lý trên máy
tính của mình. Ví dụ, trong ứng dụng chia sẻ file Gnutella, việc cho phép upload của một
nút có thể tăng thêm sự chậm trễ trong việc download của nó. Một ví dụ khác, việc chia sẻ
chu trình xử lý của CPU trên máy tính của một người sẽ mất một thời gian lâu hơn để
chạy các công việc trên máy tính của người đó. Được chỉ ra bởi Feldman và các đồng
nghiệp của ông [29], một trở ngại cho việc hợp tác sẽ dẫn tới “tấm thảm kịch chung” [30]
khi mà việc tự nguyện tham gia dựa trên cảm hứng cá nhân sẽ ảnh hưởng tới hiệu năng
chung của hệ thống (ngay cả khi việc tự nguyện tham gia này chính là thứ làm nên ưu
điểm của hệ thống). Cụ thể hơn, nghiên cứu của Feldman đã chỉ ra ba kết quả:
- Mức độ hợp tác tăng lên thì hiệu năng của hệ thống cũng tăng theo; tuy nhiên chắc
chắn có một “sweet-pot” nào đó mà khiến cho việc nâng cao hiệu năng trở nên
không còn quan trọng.
- Sự trở ngại cho việc chia sẻ tiềm ẩn cao tại những thành viên có băng thông không
đồng nhất. bởi vì khi những thành viên này cho phép dữ liệu được upload thì họ
phải chịu độ trễ nghiêm trọng trong việc download.
- Quyền ưu tiên của các gói tin TCP ack trên số gói tin dữ liệu giúp cho loại trừ chi
phí vốn tiềm ẩn của việc chia sẻ, do đó nó có thể có khả năng tăng mức độ chia sẻ
của hệ thống.
Kết quả của nghiên cứu chỉ rõ sự cần thiết của việc thiết kế các cách thức khuyến
khích nhằm khích lệ sự hợp tác. Các công trình trước đó đã xác định ra những vần đề hợp
tác thông qua các trò chơi tiếp cận lý thuyết [31, 32] và các lý thuyết “kỹ thuật thiết kế”
[33, 34] có giá trị kinh tế. Tuy nhiên, một hệ thống P2P phải chấp nhận một vài thách
thức riêng cần phải nhắm tới:
- Tính bất cân đối về quyền lợi: tính mất cân đối về quyền lợi xuất hiện khi các nút
nhận được quyền lợi khác nhau khi yêu cầu các tài nguyên từ các nút khác. Theo
cách này, nó có thể khó khăn cho server trong việc quyết định xem có lợi cho hệ
thống không nếu nó phục vụ các yêu cầu đó.
- Xác định nút xấu: một nút trong hệ thống P2P có thể liên tục thay đổi định danh
của nó. Như vậy, rất khó để theo dõi một nút mới gia nhập có phải là nút thực sự
30
muốn nhận các dịch vụ hay nó là một nút gia nhập nhằm khai thác các lỗ hổng
trong hệ thống.
- Các dạng tấn công và sự cấu kết: các nút trong hệ thống có thể cấu kết xác nhận
cho nhau nhằm tạo ra uy tín cao (ví dụ, tuyên bố rằng chúng đã chia sẻ nguồn tài
nguyên giữa chúng nhưng thực tế chúng không hề chia sẻ). Khả năng đối phó với
các dạng tấn công là rất đáng quan tâm.
Để khai thác khả năng của công nghệ P2P mang lại thì cần có cơ chế để khuyến
khích các thành viên trong hệ thống đóng góp tài nguyên, cũng như cơ chế để thi hành
việc chia sẻ công bằng giữa các nút cần được chú ý. Các mục tiếp theo trong phần này sẽ
tìm hiểu về các phương pháp, các kỹ thuật đã được áp dụng để giải quyết các vấn đề nêu
trên.
2.6.1. Hệ thống dựa vào hạn ngạch
Trong các hệ thống hạn ngạch, mỗi thành viên được liên kết với một hạn ngạch
phản ánh số lượng tài nguyên mà một thành viên có thể sử dụng từ hệ thống. Khi một
thành viên cung cấp một dịch vụ, hạn ngạch của thành viên đó có thể được tăng lên và khi
thành viên đó sử dụng tài nguyên của hệ thống thì hạn ngạch của thành viên đó sẽ giảm.
Ví dụ, các thành viên chia sẻ không gian lưu trữ, thì hạn ngạch có thể phản ánh được
lượng không gian mà một thành viên có thể sử dụng từ hệ thống. Các vấn đề quan trọng
nằm trong việc quản lý thông tin hạn ngạch.
- Một mô hình quyền lực tập trung đáng tin cậy có thể được triển khai để quản lý
hạn ngạch. Với mô hình này, mọi yêu cầu về dịch vụ sẽ tạo ra một truy vấn đến các
máy chủ tập trung. Bên cạnh các ưu điểm mà mô hình này đem lại thì cũng có những
điểm hạn chế như: hiện tượng thắt cổ chai và đó là nguyên nhân duy nhất khiến hệ
thống sụp đổ.
- Thẻ thông minh (smart card) có thể được sử dụng để quản lý hạn ngạch. Trong hệ
thống sử dụng thẻ thông minh, mỗi nút trong mạng có một thẻ thông minh riêng để
quản lý việc sử dụng tài nguyên của một nút và tài nguyên cục bộ mà nút đó chia sẻ
cho các nút khác trong mạng. Cụ thể, khi một nút yêu cầu một dịch vụ (hoặc tài
nguyên) từ một nút khác, hạn ngạch của nó được giữ trong một thẻ thông minh sẽ
giảm. Ngược lại, khi nút này cung cấp một dịch vụ (hoặc tài nguyên) cho một nút
khác, hạn ngạch của nó sẽ tăng lên. Tuy nhiên, tính thực tiễn của đề án này gặp phải
31
vấn đề: việc cấp cho mọi người dùng một thẻ thông minh có thể không khả thi. Hơn
nữa, tính toàn vẹn của dữ liệu lưu trong thẻ thông minh có thể bị xâm nhập bởi những
người dùng xấu.
- Một đề án khác được đưa ra là sử dụng các nút trong hệ thống như là các nhà quản
lý hạn ngạch. Một nút sẽ phân phát hoặc tái tạo thông tin hạn ngạch của nó thông qua
các nhà quản lý hạn ngạch đó. Các nhà quản lý hạn ngạch quản lý tất cả các dịch vụ
(tài nguyên) mà một nút cung cấp cho các nút khác giống như cách thức quản lý sử
dụng thẻ thông minh. Để đưa ra quyết định nên sử dụng đề án nào hệ thống cần áp
dụng quy luật số đông. Tức là bất kỳ quyết định nào liên quan đến hạn ngạch của một
nút đều phải được sự đồng ý của đa số các nút quản lý. Tuy nhiên, nhược điểm của đề
án này là hệ thống phải gánh thêm một khoản chi phí.
2.6.2. Hệ thống dựa vào trao đổi
Trong đề án này, hệ thống được cấu trúc như một nền kinh tế hàng đổi hàng, hoặc
trao đổi. Về cơ bản, Các tài nguyên trao đổi của các thành viên sẽ được tập hợp để mỗi
một thành viên trong nhóm có thể sử dụng. Một trong những đề án trao đổi cho các hệ
thống chia sẻ file thực thi N lần trao đổi như một vòng của N thành viên, mỗi thành viên
sẽ trao đổi với thành viên kế nhiệm của nó trong vòng và lần lượt được trao đổi bởi thành
viên tiên nhiệm của nó. Trong hình 2.5, giả sử thành viên Pi yêu cầu đối tượng oi+1 sở hữu
bởi thành viên Pi+1 (và oi+1 cũng được lưu giữ tại đây) (với 1 <= i <= n-1); thành viên Pn
yêu cầu đối tượng o1 sở hữu bởi P1. Như vậy, mặc dù Pi không phải hưởng lợi trực tiếp từ
Pi-1 nhưng mỗi thành viên cuối cùng thì cũng sẽ nhận được đối tượng mà nó cần. Chú ý
rằng, chu kỳ N bước chỉ có lực nếu mỗi thành viên đủ băng thông để đáp ứng các yêu cầu.
Vấn đề trong đề án này là làm sao để một nút thành viên P xác định khi nào chu
trình sẽ xảy ra. Điều này có thể được giải quyết bằng cách xây dựng một cây yêu cầu như
sau: mỗi yêu cầu từ một láng giềng được gắn thẻ với cây yêu cầu của nó. Một cây yêu cầu
là rỗng nếu không có yêu cầu nào được gửi đến; nếu không, cây yêu cầu của P có một nút
gốc đáp ứng như gốc của các cây yêu cầu từ các yêu cầu gửi đến từ các cây tương ứng của
chúng.
32
Hình 2.5: Trao đổi N bước
2.6.3. Kiểm soát sự phân bổ
Trong các hệ thống dựa vào hạn ngạch và trao đổi, sự gian lận vẫn có thể xảy ra.
Ví dụ, xét đến việc chia sẻ không gian lưu trữ trên đĩa. Giả sử một nút đồng ý để lưu trữ
một file, bằng cách này hạn ngạch của nó có thể được tăng lên hiệu quả nhưng sau đó nó
có thể xóa file, giải phóng không gian lưu trữ để đáp ứng cho người dùng khác. Do đó cần
thiết phải có một hệ thống kiểm soát. Một đề án về kiểm soát việc phân tán được đề xuất
bởi Ngan, Wallach, và Druschel [35] để chia sẻ không gian lưu trữ. Trong đề án này, mỗi
nút duy trì một tệp chứa thông tin sử dụng (gọi là tệp usage) bao gồm (a) số lượng không
gian lưu trữ thiết lập riêng cho hệ thống, (b) một danh sách cục bộ của các bộ (ID, F) đối
với file F được lưu giữ tại một nút có định danh là ID, (c) một danh sách từ xa chứa các
file mà các nút khác lưu giữ cho nút đó. Trong một số trường hợp, chúng ta có thể xem
hai danh sách tương tự như các khoản tín dụng và ghi nợ vào tài khoản của nút đó. Một
nút được phép lưu trữ các file mới trên các nút từ xa nếu kích thước của tất cả các file
trong danh sách từ xa nhỏ hơn không gian lưu trữ đã được thiết lập riêng cho hệ thống,
nghĩa là nút đó được sử dụng không gian lưu trữ từ xa ít hơn không gian lưu trữ mà nó
cung cấp.
Khi một nút L muốn lưu giữ một file F trên một nút từ xa R, R phải kiểm soát tệp
usage của L để xác minh rằng L thực sự được cho phép để lưu trữ một file từ xa. Nếu vậy,
hai thực thể mới được tạo ra: L thêm F vào danh sách từ xa của nó và R thêm bộ (id của
33
L, F) vào danh sách cục bộ. Rõ ràng, cả L và R có thể giả mạo. L có thể giả mạo các nội
dung của tệp usage của nó, bằng cách “thổi phồng” khả năng lưu trữ của nó hoặc lạm phát
số lượng các thực thể trong danh sách cục bộ. Mặt khác, R có thể loại bỏ F một cách lặng
lẽ sau khi tuyên bố đồng ý lưu trữ nó.
Vì các nút chia sẻ không gian lưu trữ cho nhau nên đó là động lực để các nút đó
loại bỏ các phần tử xấu. Một thủ tục kiểm soát có thể được sử dụng để ngăn chặn hành vi
gian lận. Khi một nút R lưu trữ một file F cho một nút L, thì R được khuyến khích (bằng
cách trả thêm chi phí) cho không gian từ xa. Nếu L không thêm file F vào danh sách từ
xa, thì nó không được trả chi phí cho việc lưu trữ của nó, và R có thể xóa F. Để quá trình
kiểm soát có hiệu lực, mỗi nút có mối quan hệ với L phải đánh giá nó một cách ngẫu
nhiên và tất cả các thông tin cần được ẩn danh. Tương tự như vậy, L thu được bằng cách
kiểm soát R: để đảm bảo R thực sự lưu trữ tệp tin thay vì lặng lẽ loại bỏ nó. Để ngăn chặn
sự cấu kết giữa các nút, ví dụ, A yêu cầu để lưu trữ một số file cho B, B cho C, như vậy
việc kiểm soát toàn diện hơn bao gồm việc kiểm tra các nút truy cập từ danh sách cục bộ
được yêu cầu đệ quy.
2.6.4. Kỹ thuật dựa vào sự khích lệ
Sun và Garcia-Molina [36] đề xuất một kỹ thuật khích lệ gọi là SLIC (Selfish
Link-based InCentives). Mục đích là để cho phép mỗi thành viên tự cư xử coi lợi ích bản
thân lên hàng đầu, như vậy thành viên đó sẽ chia sẻ tài nguyên của mình với những thành
viên đã từng giúp họ (cung cấp tài nguyên/dịch vụ cho thành viên đó) và tẩy chay những
thành viên mà họ không được hưởng lợi nhiều từ những thành viên đó. SLIC hoạt động
trong phạm vi một mạng ngang hàng không cấu trúc và dựa vào thuộc tính khóa trong hầu
hết các truy vấn: như truy vấn làm tràn ngập trong mạng không cấu trúc, láng giềng của
một nút sẽ kiểm soát việc gia nhập vào mạng của nó. Nói cách khác, một thành viên có
thể (a) từ chối phục vụ yêu cầu của nút láng giềng (nếu nó chứa tài nguyên mà nút láng
giềng yêu cầu), (b) Loại bỏ các yêu cầu của nút láng giềng của nó (nếu nó không chứa tài
nguyên mong muốn nhưng cũng không cho tài nguyên đó được chuyển qua nó), (c) nó
cũng có thể đáp ứng yêu cầu hoặc cho phép truy vấn yêu cầu được truyền qua nó. SLIC
khai thác mối quan hệ này như sau: Nút N đánh giá nút láng giềng M của nó dựa vào số
lượng các đáp ứng của M đóng góp cho N (M đáp ứng các truy vấn trực tiếp hoặc gián
tiếp thông qua các nút láng giềng của nó). Nếu M được đánh giá tốt thì N sẽ đáp ứng các
34
yêu cầu của M một cách thuận lợi. Ngược lại, nếu M được đánh giá là không mang lợi
cho N (M không đáp ứng các yêu cầu của N) thì N cũng không chia sẻ nhiều đối với M.
Do đó, các nút được khích lệ để cung cấp nội dung và kết nối đến các nút cung cấp nội
dung.
SLIC hoạt động dựa trên một chương trình đã có hiệu lực. Xét một nút N với M
nút láng giềng của nó. Mỗi nút láng giềng được cấp một trọng số Wi với 0 <= Wi <= 1 (1
<= i <= M) dựa vào chất lượng dịch vụ được cung cấp bởi N. Wi = 1 nghĩa là nút láng
giềng cung cấp dịch vụ rất tốt. Ngược lại, Wi = 0 ngụ ý một láng giềng vô dụng. Tài
nguyên hoặc dịch vụ mà N sẽ cung cấp cho nút láng giềng thứ i tỷ lệ thuận với Wi. Chú ý
rằng, khả năng của N được sử dụng cho cả các yêu cầu cục bộ và các yêu cầu gửi đến từ
xa, chỉ có phần khả năng còn lại sau khi đáp ứng các truy vấn cục bộ được giành cho các
nút láng giềng. Một cách định kỳ, các trọng số đó được cập nhật để theo dõi sự thay đổi
trạng thái của các nút láng giềng. Để kỹ thuật SLIC hoạt động một cách hiệu quả, một vài
vấn đề cần lưu tâm tới. Đầu tiên, cần xác định rõ trọng số của các láng giềng để phân biệt
giữa láng giềng tốt và láng giềng xấu và cập nhật các trọng số đó một cách định kỳ. Trong
SLIC, dịch vụ cung cấp bởi một láng giềng được đo bởi phần truy vấn được đáp ứng, ví
dụ, số lượng dữ liệu có thể đáp ứng cho truy vấn tìm kiếm. Có 3 phương pháp để thiết lập
trọng số cho các nút láng giềng mới: average – trọng số của một nút láng giềng mới được
thiết lập là giá trị trung bình của các trọng số giữ bởi nút đó; average_inverse – trọng số
được tính bằng cách nhân giá trị trung bình với
iAvgHits
1
, trong đó AvgHitsi là giá trị
trung bình đáp ứng mỗi truy vấn được gửi bởi một nút trong suốt giai đoạn thứ i;
average_exponential – trọng số được tính bằng cách nhân giá trị trung bình với iAvgHitse .
Phương pháp average đảm bảo tính công bằng cho các nút mới gia nhập, nhưng phương
pháp này có thể dễ mắc phải hiện tượng tải tự do – một nút có thể dễ dàng ngắt kết nối và
gia nhập lại hệ thống mỗi lần để khai thác những dịch vụ tốt từ các nút láng giềng mới.
Ngược lại, phương pháp average_inverse và average_exponential dựa vào số lượng dịch
vụ mà một nút được đáp ứng từ láng giềng hiện tại của nó. Về cơ bản, nếu các láng giềng
hiện tại thực sự cung cấp dịch vụ tốt thì nó có thể không gặp rủi ro để phải chấp nhận
thêm một láng giềng mới; ngược lại nếu một nút không hài lòng với các dịch vụ mà nút
láng giềng mang lại thì một nút láng giềng mới có thể được thay thế để cải thiện mức độ
hài lòng của nút đó. Hai phương pháp đó khác nhau trong việc thu nhận một nút láng
35
giềng mới. Trọng số được thay đổi đơn giản trong SLIC bằng cách sử dụng một cơ chế
phân rã theo hàm mũ để cập nhật các trọng số đó.
Ví dụ: Wi(t) = α * Wi(t - 1) + (1 – α) * I(t). Trong đó, Wi(t) biểu thị trọng số của
nút thứ i trong suốt thời gian t, I(t - 1) biểu thị chất lượng của dịch vụ trong suốt thời gian
t -1; (0<α<1).
2.6.5. Topo mạng phù hợp
Trong một mạng P2P không có cấu trúc, cấu trúc tổng quan của mạng luôn thay
đổi và topo mạng phù hợp cũng được thay đổi dựa vào tác động qua lại giữa các nút nhằm
duy trì và cải thiện hệ thống. Ví dụ, nếu một nút luôn tìm những file hữu ích từ nút khác
(nút không kết nối trực tiếp) thì nút này sẽ tiếp tục tìm các file hữu ích đó từ những nút
khác trong hệ thống. Do đó, sẽ thuận lợi cho hệ thống nếu hai nút cùng liên kết trong một
mạng để những tìm kiếm tiếp theo không cần phải đi qua các nút trung gian khác. Hơn
nữa, khả năng thích ứng của mạng phủ cho phép các nút thay đổi định kỳ láng giềng của
chúng để thay đổi quyền lợi của chúng. Trong khi các công trình trước tập trung vào các
vấn đề hiệu quả, Condie [37] cho thấy, bằng cách triển khai một topo phù hợp, hệ thống
P2P có thể ưu tiên cho các nút hoạt động tích cực và ngược đãi các nút xấu, do đó hệ
thống có thể đạt hiệu quả bằng cách tăng khả năng ngăn chặn các loại tấn công. Cụ thể,
mỗi nút trong hệ thống nên duy trì một lịch sử trước đó, cho phép các nút ước tính tiềm
năng của việc tải các tập tin về từ các nút khác trong tương lai. Một kết quả cho thấy, khi
một nút gia nhập lại hệ thống sau khi bị ngắt kết nối, nó có thể chọn kết nối với các nút có
xác suất cao nhất chứa tập tin cần được tải về. Thông tin lịch sử của một nút được mã hóa
thành một véc tơ tin cậy cục bộ, trong đó thực thể thứ i trong véc tơ biểu thị sự tin cậy của
một nút (đo bằng tỉ lệ giữa các giao dịch thành công và các giao dịch không thành công)
của nút thứ i. Giao thức tối đa hóa tính tin cậy của hệ thống mạng được biểu thị bởi công
thức:
k
i
k
j
jisjiconnectionQ
1 1
,*),(
Trong đó, k là số lượng các nút trong hệ thống, connection(i,j) = 1 nếu nút i kết nối
trực tiếp với nút j và bằng 0 nếu nó không kết nối trực tiếp; si,j là giá trị tin cậy mà nút i
đánh già về nút j. Khi một nút i gia nhập vào hệ thống, nó thử kết nối với N kết nối ngẫu
nhiên. Khi có ít nhất một kết nối, nút i sẽ tải một file từ nút j (nút j phải là một láng giềng
36
trực tiếp của i), sau khi nhận được một tập tin xác thực, nút i sẽ kết nối với nút j. Chú ý
rằng, nếu nút i chỉ được phép kết nối với một số lượng tối đa nhất định, gọi là Ti, nếu đã
có Ti kết nối thì kết nối với j chỉ được tạo ra khi nút j có độ tin cậy cao hơn một trong các
nút láng giềng hiện tại của i. Rõ ràng, nút j chỉ chấp nhận kết nối nếu nút i có lợi cho nó:
hoặc j có số kết nối hiện tại ít hơn số lượng tối đa các kết nối Tj hoặc giá trị tin cậy mà nút
i đánh giá về nút j, sji lớn hơn giá trị tin cậy của các láng giềng hiện tại của nút j. Trong
trường hợp này, nút j sẽ thay thế một láng giềng của nó bằng nút i. Tuy nhiên, phương
pháp này hoạt động chưa hiệu quả do nó gặp phải hai điểm hạn chế sau:
- Có khẳ năng một nút xấu sẽ gieo rắc các tập tin phi chứng thực. Một kịch bản được
đề xuất bởi Condie, Kamvar và Garcia-Molina [37] là chog một nút xấu i kết nối
đến một nút j (j có lòng khoan dung cao). Lòng vị tha của nút j ở đây theo nghĩa nó
đáp ứng các truy vấn đến nó nhưng nó không gửi đi các truy vấn từ nó. Ví dụ, nó
cho phép nút khác tải file từ nó nhưng nó không tải file từ các nút khác. Kết quả là
tất cả các véc tơ tin cậy cục bộ đều có giá trị bằng 0, và nó sẽ chấp nhận kết nối từ
tất cả các nút. Thông qua kết nối từ nút j, nút i nhận được các truy vấn được
chuyển tiếp bởi nút j, vì thế nó có thể trả lời các truy vấn đó với các file phi chứng
thực. Các giải pháp được đề xuất nhằm liên kết mỗi kết nối giữa hai nút với một
giá trị tin cậy của kết nối. Giá trị tin cậy của kết nối ci,j phản ánh bao nhiêu lợi ích
mà nút i thu lợi thông qua nút j, và được xác định từ số lượng các câu trả lời xác
thực (hoặc phi xác thực) thu được từ các nút mà sự đáp ứng lại của nó của chúng là
kết quả truy vấn được chuyển đến thông qua nút j. Do đó, nút i có thể ngắt kết nối
giữa nó với nút j nếu các nút kết nối với j (trực tiếp hoặc gián tiếp) là các nút xấu.
Nút j cũng có thể giải phóng các kết nối từ các nút xấu bằng cách loại bỏ tất cả các
kết nối với các nút bắt đầu lại quá trình xây dựng kết nối của nó. Bây giờ, để
phương pháp này được hoạt động, các truy vấn gửi ra bởi nút i thông qua nút j phải
được gắn với một định danh đã được mã hóa bởi nút j. Các nút liên quan đến j
(quen biết j) phải tríc xuất cả thẻ này và trả lại nó cung với các câu trả lời. Bằng
cách này nút i sẽ biết được các nút có liên quan với nút j. Hơn nữa, một câu trả lời
không có thẻ gắn kết thì không thể tin cậy vào câu trả lời đó.
- Cũng có thể một nút sẽ bị kẹt trong nội bộ, nơi mà nút đó liên tục bị trì hoãn lâu
dài trong việc nhận các câu trả lời cho các truy vấn của nó. Giải pháp cho trong
trường hợp này là thay thế các kết nối có vấn đề bởi các kết nối mới đến các nút
37
ngẫu nhiên. Trong trường hợp xấu nhất, một nút có thể loại bỏ tất cả các kết nối
hiện tại và tạo ra một tập hoàn toàn mới của các kết nối.
2.7. Bảo mật dựa vào hạ tầng cơ sở khóa công khai PKI
Để cung cấp tính bảo mật, tính toàn vẹn, và tính ủy quyền của dữ liệu, kỹ thuật dựa
trên hạ tầng cơ sở khóa công khai X.509 có thể được sử dụng. Một cách tiếp cận như vậy
được thông qua trong hệ thống scishare [38] để tạo điều kiện hợp tác an toàn trong môi
trường P2P. Hệ thống scishare nhằm vào hai mục tiêu chính: (a) đảm bảo an toàn các truy
vấn được quảng bá đến một nhóm nút (từ là, cả thông điệp truy vấn và thông điệp đáp ứng
truy vấn sẽ được giữ bí mật), (b) thông điệp yêu cầu vận chuyển và vận chuyển thông tin
được bảo vệ. Để đảm bảo an toàn cho thông tin liên lạc trong nhóm, Sercure Group Layer
[39] (SGL) được sử dụng. SGL sử dụng khóa chia sẻ nhóm để bảo vệ thông điệp, trong
khi cung cấp một kỹ thuật hiệu quả để tạo ra và phân phối khóa mới bất cứ khi nào các
thành viên của nhóm thay đổi. Truyền thông giữa các cặp nút được đảm bảo thông qua
TLS [40]. Cùng một nhóm chính sách ủy quyền có thể được thi hành trên toàn bộ nhóm.
Để tạo thuận lợi cho việc kiểm soát truy cập tốt hơn mà cho phép các nút khác có các đặc
quyền khác nhau, kỹ thuật ủy quyền Akenti [41] đã được sử dụng. Trong Akenti, chủ sở
hữu nguồn tài nguyên có thể truy cập từ xa và xác định độc lập các ràng buộc cần thiết để
đáp ứng người sử dụng tài nguyên của họ. Trong khi các nút có chứng thực X.509 được
đưa ra bởi một cơ quan cấp chứng thực đáng tin cậy, người dùng giảo mạo làm giảm độ
trễ trong việc tiếp cận các nguồn tài nguyên. Một người dùng giả mạo là người có đặc
quyền cơ bản và được tạo ra tự động khi có yêu cầu truy cập tài nguyên công cộng.
38
Chương 3: CÁC MÔ HÌNH TIN CẬY
3.1. Các khái niệm
3.1.1. Định nghĩa sự tin cậy
3.1.1.1. Tin cậy là gì
Sự tin cậy có thể được định nghĩa đơn giản như là “niềm tin hay sự tin cậy vào tính
trung thực, lòng tốt, hay sự chắc chắn của một người, một tổ chức”. Tuy nhiên, với nhiều
cách tiếp cận khác nhau, quan điểm khác nhau mà có nhiều định nghĩa về sự tin cậy. Để
có một sự hiểu biết sâu hơn về sự tin cậy, trong phần còn lại chúng ta sẽ tìm hiểu các định
nghĩa chính xác về sự tin cậy trong một số lĩnh vực khác nhau như: tâm lý học, xã hội
học, sinh vật học, và kinh tế học. Những định nghĩa từ Morton Deutsch[42, 43], Niklas
Luhmann[44], Bernard Barber[45] và Diego Gambetta[46], những người đã nghiên cứu
các khía cạnh chính của sự tin cậy.
3.1.1.2. Sự tin cậy trong tâm lý học
Có lẽ trong nhiều định nghĩa về sự tin cậy thì định nghĩa của Morton Deutsch đưa ra
vào năm 1962 là định nghĩa phổ biến nhất. Định nghĩa này dựa trên quan điểm của tâm lý
học. Theo đó sự tin cậy được định nghĩa là: “một hành vi tin cậy xảy ra khi một cá nhân
phải đối mặt với một sự lựa không rõ ràng, một sự lựa chọn có thể dẫn đến kết quả tốt đẹp
và cũng có thể dẫn đến hậu quả khó lường. Trong nhận thức của người này, sự xuất hiện
của những sự kiện này còn tùy theo hành vi của người khác và độ tin cậy vào sự kiện có
hại có lớn hơn độ tin cậy của sự kiện có lợi hay không. Nếu người này gặp phải sự lựa
chọn không rõ ràng, họ sẽ tìm một người giúp đỡ họ trong việc lựa chọn và tin cậy vào sự
giúp đỡ đó. Người đó tin một người khác có thể lựa chọn được hành động dẫn đến kết quả
tốt. Nếu không, người đó phải mạo hiểm lựa chọn một hành động mà không có một sự tin
cậy nào”. Sau đó, trong cuốn “The Resolution of Conflict” [47] đồng tác giả, định nghĩa
về sự tin cậy tiếp tục được mở rộng như là sự tin rằng sẽ tìm thấy những gì được mong
muốn từ người khác, hơn là những điều đáng lo ngại. Định nghĩa của Morton Deutsch[42,
43] cho thấy một đặc tính đáng quan tâm của sự tin cậy đó là tính cá thể hóa. Mỗi người
đều có nhận thức riêng của mình về sự tin cậy. Nói cách khác, sự tin cậy mang tính chủ
quan phụ thuộc vào quan điểm của cá nhân.
39
3.1.1.3. Sự tin cậy trong xã hội học
Tiếp cận sự tin cậy từ lĩnh vực xã hội học, Niklas Luhmann[44] chỉ ra một vấn đề
của xã hội: sự phức tạp của mối quan hệ xã hội như là toàn bộ và đặc tính cá nhân trong
đó. Theo đó, định nghĩa sự tin cậy được đưa ra: “như là một phương tiện để giảm độ phức
tạp xã hội; phức tạp được tạo ra bằng cách tương tác cá nhân với các mục tiêu và nhận
thức khác nhau”. Giống như Niklas Luhmann[44], Bernard Barber[45] cũng dựa vào xã
hội học trong định nghĩa của ông. Đặc biệt, ông nói niềm tin đó là “phần lớn như một
hiện tượng của sự biến thiên văn hóa và cấu trúc xã hội, không phải là một chức năng của
sự biến thiên cá nhân. Nói chung, những định nghĩa này vượt được những định nghĩa của
Morton Deutsch[42, 43] kể từ khi họ cho thấy rằng sự tin cậy được nhìn từ cả 2 khía
cạnh: khía cạnh cá nhân và khía cạnh xã hội.
3.1.1.4. Sự tin cậy ở góc nhìn rộng hơn
Diego Gambetta[46] đã nhìn nhận quan điểm tin cậy ở những lĩnh vực khác nhau từ
sinh học cho đến lĩnh vực kinh tế. Ông đã đưa ra định nghĩa về sự tin cậy “như một mức
độ cụ thể của xác suất chủ quan mà một người sẽ thực hiện một hành động cụ thể cả trước
khi người đó có thể theo dõi hành động và cả trong khung cảnh mà trong đó nó ảnh hưởng
đến hành động của chính mình”. Định nghĩa này củng cố lại định nghĩa sự tin cậy là sự
chủ quan của cá nhân. Nói cách khác, cùng một niềm tin nhưng có thể có mức độ tin cậy
khác nhau đối với từng cá nhân, hay ngắn gọn hơn, độ tin cậy là một xác suất. Định nghĩa
này cũng ngụ ý rằng các thông tin, mà một cá nhân có thể giám sát, có hiệu lực vào mức
độ tin cậy của mình.
3.1.2. Các dạng tin cậy
Thông thường có 2 dạng tin cậy: tin cậy vào hành động của một người hoặc tin cậy
vào sự giới thiệu của một người.
3.1.2.1. Tin cậy dựa vào hành động
Dạng đầu tiên của sự tin cậy phản ánh định nghĩa cơ bản của tin cậy: tin cậy vào một
hành vi của người khác. Ví dụ, chúng ta tin cậy các bác sỹ phẫu thuật về các hành động
khám sức khỏe cho chúng ta hay tin cậy vào các hành động mà các kỹ sư cơ khí sẽ bảo trì
xe cho chúng ta. Một lưu ý quan trọng ở đây là sự tin cậy dựa vào hành động là luôn xác
40
định đối với một hành động cụ thể. Ví dụ, chúng ta không tin cậy vào hành động bác sỹ
sửa xe, hay chúng ta không tin cậy vào hành động giải phẩu của các kỹ sư cơ khí.
3.1.2.2. Tin cậy dựa vào sự giới thiệu
Dạng thứ 2 của sự tin cậy sẽ đưa vào sự đánh giá mối quan hệ giữa các cá thể trong
xã hội: tin cậy vào sự giới thiệu. Một người có thể tin cậy hành động của người khác,
nhưng không phải tin cậy hoàn toàn vào lời giới thiệu đó. Ví dụ, chúng ta có thể tin cậy
vào một bác sỹ nếu đó đúng là một bác sỹ giỏi. Tuy nhiên nếu bác sỹ giới thiệu cho chúng
ta gặp một bác sỹ khác mà chúng ta chưa bao giờ biết đến thì chúng ta không thể tin cậy
vào sự giới thiệu của bác sỹ. Dạng tin cậy này có thể chia thành 2 dạng nhỏ hơn: tin cậy
vào sự giới thiệu của một người và tin cậy vào sự giới thiệu của một người mà họ được
giới thiệu bởi một người đại diện.
Lưu ý: mặc dù tồn tại các dạng tin cậy khác nhau, trong các hệ thống máy tính phổ
biến, để duy trì sự đơn giản chúng ta không nên phân biệt chúng. Nói chung, nếu một cá
thể tin vào một cá thể khác, nó cũng tin rằng lời khuyên của cá thể đó là tốt cũng như lời
khuyến nghị của các cá thể khác, đó là sự giới thiệu bởi cá thể này. Nói một cách khác,
một giá trị duy nhất có thể được dùng để đại diện cho tất cả các dạng tin cậy trong các hệ
thống máy tính.
3.1.3. Biểu diễn sự tin cậy bởi giá trị
Thông thường, chúng ta có thể phân loại thành 4 loại giá trị trong sự tin cậy: đơn giá
trị, giá trị nhị phân, đa giá trị và giá trị liên tục.
3.1.3.1. Đơn giá trị
Trong trường hợp đơn giản, giá trị tin cậy được biểu diễn bởi một giá trị duy nhất:
hoặc tin cậy hoặc không tin cậy. Ví dụ, trong một bài viết của Aberer và Despotovic [48],
một giá trị tin cậy chỉ có thể chỉ rõ như một lời xác nhận. Khi một cá thể không đáp ứng
trong một phiên dịch, nó sẽ gửi một lời xác nhận đến hệ thống hoặc là nó không làm gì.
Vì phương pháp này chỉ sử dụng một giá trị duy nhất nên nhược điểm của nó là không thể
phân biệt giữa cá thể tin cậy với cá thể chưa xác định.
41
3.1.3.2. Giá trị nhị phân
Để khắc phục nhược điểm của phương pháp biểu diễn đơn giá trị, trong cách biểu
diễn bởi giá trị nhị phân, hai giá trị được đưa vào sử dụng: một giá trị tương ứng với sự
tin cậy còn giá trị kia tương ứng với giá trị không tin cậy. Phương pháp này có thể phân
biệt được cá thể tin cậy và cá thể không tin cậy. Tuy nhiên nếu chúng ta xét đến trường
hợp phức tạp hơn thì một cá thể vẫn không thể phân biệt được giữa cá thể mà họ chưa bao
giờ giao tiếp với cá thể mà họ đã từng giao tiếp. Tuy nhiên, nó cũng không tin cậy hay
phủ nhận cá thể đó.
3.1.3.3. Đa giá trị
Sử dụng đa giá trị để biểu diễn sự tin cậy có lẽ là phương pháp tốt nhất để khắc phục
các nhược điểm trong các phương pháp trên đây. Nó cung cấp cho các người dùng một
cách lin
Các file đính kèm theo tài liệu này:
- LUẬN VĂN- BẢO MẬT TÍNH RIÊNG TƯ CỦA DỮ LIỆU TRONG MẠNG NGANG HÀNG P2P.pdf