Để chia sẻ một tệp hay nhiều tệp bằng giao thức BitTorrent, đầu tiên cần tạo tệp
“torrent”. Mỗi tệp torrent chứa thông tin miêu tả tệp muốn chia sẻ, và thông tin về máy
tính cung cấp bản gốc của tệp. Thông tin chi tiết lưu trên máy tính theo dõi sẽ khác nhau
tuỳ thuộc vào phiên bản của giao thức BitTorrent, nhưng dù ở phiên bản nào tệp “torrent”
luôn luôn có đuôi mở rộng là .torrent. Cụ thể thì một tệp torrent chứa thông tin loan báo
(địa chỉ URL của máy vi tính theo dõi), và thông tin về tên tệp được chia sẻ, kích thước
mảnh, chiều dài khóa, chiều dài tệp, và vé thông hành để tải tệp.
91 trang |
Chia sẻ: lylyngoc | Lượt xem: 2616 | Lượt tải: 4
Bạn đang xem trước 20 trang 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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
g trọng số của các đường đi thành phần tốt nhất.
- Đường đi tốt nhất: trong chiến lược này, người dùng đầu tiên sẽ tìm đường đi tốt
nhất giữa nó và nút đích. Đường đi tốt nhất được xác định là đường đi có giá trị tối thiểu
dọc theo đường đi hoặc sự tạo thành từ tất cả các cạnh dọc theo đường đi là cao nhất trong
số tất cả các đường đi có thể có giữa 2 nút. Khi đường đi tốt nhất được xác định, giá trị tin
cậy là trọng số nhỏ nhất trong số các cạnh trong đường đi. Ví dụ, nếu chúng ta sử dụng
chức năng cạnh có giá trị tối thiểu để để tìm kiếm đường đi tốt nhất, thì đường đi tốt nhất
giữa A và F trong hình 3.5 là A C D F. Kết quả là giá trị tin cậy của F được suy
ra từ A là 0.65.
Hình 3.5: Đồ thị tin cậy Nice
- Tổng trọng số của các đoạn thành phần: trong chiến lược này, giá trị tin cậy được
tính bằng tổng trọng số của các đoạn thành phần. Ví dụ, trong minh họa ở hình 3.5 còn có
56
một đường đi khác giữa A và F: A B E F. Vì giá trị tin cậy của đường đi này là
0.5 trong khi giá trị tin cậy của các cạnh thành phần trong đường đi trước là 0.65, giá trị
tin cậy của F là
8.05.0
65.0*8.05.0*5.0
= 0.59.
3.4.3.2. Tìm đường đi giữa hai nút trong đồ thị tin cậy
Cần lưu ý rằng đồ thị tin cậy được hình thành thực sự và không một người dùng nào
biết toàn bộ đồ thị. Để đánh giá độ tin cậy của các người dùng khác, một người dùng
không cần phải biết toàn bộ đồ thị. Họ chỉ cần biết tất cả các đường đi từ vị trí của họ đến
người dùng đó. Những đường đi đó có thể được tìm thấy khi một người dùng tìm giá trị
tin cậy của một người dùng khác. Đặc biệt, khi một người dùng muốn tìm một đường đi
đến người dùng khác, họ sẽ gửi một yêu cầu tìm kiếm đến tất cả các nút mà họ tin cậy,
bằng cách xem họ trong danh sách các file cookie tin cậy mà mình đã lưu. Nếu chúng giữ
cookie của các người dùng yêu cầu thì chúng sẽ trả lại cho người dùng yêu cầu. Lý do sau
việc sử dụng đường đi nối giữa hai nút A và C là nếu A tin cậy B và B tin cậy C, A sẽ tin
cậy C.
Cần lưu ý rằng, phương pháp xác minh sự tin cậy trong hệ thống này là khác với các
hệ thống khác. Trong các hệ thống khác, người dùng sở hữu tài nguyên là những người
xác minh sự tin cậy của người dùng yêu cầu tài nguyên. Tuy nhiên, trong hệ thống này,
người dùng yêu cầu tài nguyên là người chịu trách nhiệm làm bằng chứng cho chủ sở hữu
tài nguyên là họ xứng đáng được tin cậy. Thêm nữa, mỗi nút cần thiết phải lưu giữ một
danh sách ưu tiên chứa các nút tốt nhất (tức là các nút có độ tin cậy cao). Các nút đó có
thể được tìm thấy trong quá trình tìm đường đi. Bằng cách này, hệ thống có thể tăng khả
năng của những nút tốt để lập thành nhóm và cô lập các nút xấu. Tuy nhiên, hệ thống này
có nhược điểm là phải gánh chịu một chi phí cao trong quá trình tìm đường đi tin cậy giữa
nút có người dùng yêu cầu tài nguyên và nút có người dùng sở hữu tài nguyên nếu như
một trong hai nút có số giao dịch thấp (chẳng hạn như các nút mới gia nhập hệ thống).
3.4.4. Hệ thống PeerTrust
Hệ thống PeerTrust phân tích uy tín của một người dùng một cách chi tiết hơn. Nó
chỉ ra rằng nếu uy tín của một người dùng chỉ đơn giản dựa vào số lượng các giao dịch
thành công thì chưa đủ chặt chẽ để loại bỏ những người dùng xấu. Vì thế, PeerTrust đã
57
phân tích 5 yếu tố quan trọng là nên sử dụng hình thái uy tín của một người dùng. Chúng
được trình bày như sau:
- Tổng số các giao dịch tốt: một ý tưởng cơ bản để tin cậy một người dùng nếu họ
có một số lượng lớn các giao dịch tốt với các người dùng khác.
- Số lượng các giao dịch: một vấn đề đặt ra với tiêu chí trên là những người dùng
xấu chỉ cần có đủ số giao dịch tốt thì sẽ có một uy tín tốt. Sau đó có thể chúng sẽ luôn tạo
ra các giao dịch xấu mà không mất đi uy tín của nó. Do vậy, chúng ta cần phải xem xét
tổng số các giao dịch để xác minh uy tín của một người dùng.
- Sự tin cậy của thông tin phản hồi: ý kiến sau các yếu tố này là nếu một người
dùng là xấu, chúng ta không nên tin vào người dùng đó và cũng không tin vào thông tin
phản hồi của nó về các người dùng khác. Nếu không, nó có thể hợp tác để cung cấp điểm
số cao cho những người dùng khác để tăng điểm số uy tín của họ.
- Phạm vi giao dịch: nếu chúng ta không xem xét phạm vi giao dịch, những người
dùng xấu có thể rất tốt trong nhiều giao dịch nhỏ nhưng lại xấu trong một số giao dịch lớn
để thu được lợi ích. Trong hệ thống này, nếu không xét đến phạm vi thì chúng vẫn có thể
có một uy tín tốt vì có số lượng giao dịch tốt lớn hơn số lượng giao dịch xấu.
- Phạm vi cộng đồng: Đôi khi, cũng cần phải xem xét các phạm vi công đồng để
đánh giá sự tin cậy. Ví dụ, một người dùng có thể “lười biếng” trong việc cung cấp thông
tin phản hồi cho các giao dịch của nó. Chính vì thế, nếu chúng ta cộng điểm cho những
người dùng cung cấp thông tin phản hồi có thể khuyến khích họ tích cực cung cấp thông
tin phản hồi, và vì thế làm tăng kiến thức của hệ thống về uy tín của các người dùng. Một
cách khác để có hiệu quả cao trong quá trình đánh giá độ uy tín là lấy ý kiến từ các người
dùng tin cậy đã có uy tín từ trước.
3.4.4.1. Đo độ tin cậy
Từ những tiêu chí trên, một số liệu tin cậy chung được đưa ra như sau:
T(u) =
)(
1
)(.),()).,(().().,(.
uI
i
uCFiuTFiupCruCFiuS .
Ở đây, I(u) biểu thị tổng số các giao dịch của người dùng u với các người dùng khác
trong hệ thống; i đại diện cho giao dịch thứ i của người dùng u; S(u,i) là mức hài lòng mà
đối tác của u đánh giá trong giao dịch thứ i; Cr(p(u,i)) là độ tin cậy của các thông tin của
58
đối tác p đối với giao dịch thứ i; TF(u,i) là các giao dịch thích ứng liên hệ với các yếu tố
trong giao dịch thứ i; CF(u) là yếu tố cộng đồng thích ứng với phạm vi của người dùng u.
Các hệ số α và β là hệ số trung bình trong việc đánh giá tập thể và hệ số phạm vi công
cộng. Các hệ số thay đổi theo từng trường hợp. Ví dụ, α và β có thể lấy giá trị như trên
nếu một người dùng có đủ số lượng các giao dịch cho việc đánh giá, hệ thống có thể trở
nên đơn giản dựa vào thông tin phản hồi. Còn trong trường hợp nếu người dùng cần đánh
giá là một người dùng mới và mới chỉ giao dịch với số lượng nhỏ các giao dịch thì hệ
thống có thể đề bạt sử dụng giá trị mặc định.
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.
3.5.1. Hệ thống Regret
Tương tự như các hệ thống trước, Regret cũng dựa vào uy tín để đánh giá sự tin cậy.
Tuy nhiên khác với các hệ thống trên, Regret coi uy tín đánh giá dưới khía cạnh xã hội để
đánh giá sự tin cậy. Đặc biệt, Regret xem xét ba khía cạnh của sự uy tín: cá nhân, xã hội
và bản thể luận.
3.5.1.1. Uy tín đánh giá dưới khía cạnh cá nhân
Uy tín cá nhân của một người dùng j qua sự đánh giá của người dùng i trên một khía
cạnh s chỉ phản ánh ý kiến cá nhân của người dùng i về người dùng j từ những giao dịch
trước đây của họ và được định nghĩa: Ri j(S).
3.5.1.2. Uy tín đánh giá dưới khía cạnh xã hội
Điều quan trọng để nhận ra rằng khi một cá nhân thuộc về xã hội, hành vi của người
đó bị ảnh hưởng bởi hành vi của người khác trong xã hội đó. Nói cách khác, cá nhân
trong cùng một xã hội có xu hướng cư xử theo cùng một cách và các hành vi của xã hội bị
ảnh hưởng bởi hành vi của mỗi cá nhân. Nói một cách đối lập, uy tín của một cá nhân bị
ảnh hưởng bởi uy tín của xã hội mà nó thuộc về. Vì thế, cần xem xét uy tín đánh giá dưới
hình thức xã hội để tăng thêm uy tín cá nhân. Đặc biệt, giá trị uy tín đánh giá dưới hình
thức xã hội của một người dùng j qua đánh giá của người dùng i, SRi -> j(s), được đưa vào
bốn yếu tố tính toán. Hai yếu tố đầu tiên là các ý kiến cá nhân của i về uy tín cá nhân của
j: Ri-> j(s), và nhóm uy tín của J: Ri->J(s), (j J). Hai yếu tố cuối cùng là nhóm các ý kiến
của I, (i I), về uy tín cá nhân của j: Ri->j(s), và nhóm uy tín của J: RI->J(s):
SRi->j(s) = ξij.Ri->j(s) + ξiJ.Ri->J(s) + ξIj.RI->j(s) + ξIJ.Ri->J(s).
59
Trong đó, ξij, ξIj, ξiJ và ξIJ là hệ số phản ánh tầm quan trọng của mỗi thành phần tính
toán và ξij+ξIj+ ξiJ + ξIJ = 1. Các hệ số được thay đổi tùy theo từng trường hợp. Công thức
này được minh họa trong hình 3.6.
Hình 3.6: Uy tín dưới khía cạnh xã hội
3.5.1.3. Khía cạnh bản thể luận
Thường có nhiều yếu tố có thể góp phần vào uy tín của một cá nhân. Ví dụ, khi
chúng ta muốn đặt phòng khách sạn cho kỳ nghỉ, chúng ta có thể xem uy tín của khách
sạn như là sự cấu thành của các yếu tố: về giá cả, về vị trí và các dịch vụ của khách sạn.
Bằng cách kết hợp tất cả các yếu tố uy tín thành một, tạo thành một bản thể luận về uy tín.
Trong Regret, giá trị uy tín ở khía cạnh bản thể luận của một người dùng j qua đánh giá
của người dùng i được tính bằng công thức sau:
ORi-->j(s) =
)(schildrenk
wsk . ORi->j(k).
Trong đó, ORi->j(k) = SRi->j(k) nếu k là một nguyên tử; wsk đại diện cho một vài trọng
số trong tính toán, chuẩn hóa
)(schildrenk
wsk = 1. Sự tồn tại của các trọng số là cần thiết bởi
vì các cá nhân khác nhau có thể có quan điểm khác nhau về các yếu tố trong công thức.
Hơn nữa, các trọng số tại mỗi nút là không cố định. Chúng có thể thay đổi theo thời gian,
60
tùy thuộc vào nhu cầu cần thiết. Hình 3.7 cho thấy một ví dụ của một bản thể luận cho uy
tín của khách sạn, bao gồm giá cả, vị trí và các dịch vụ cung cấp.
Hình 3.7: Bản thể luận
Trong khi ý tưởng sử dụng cả uy tín cá nhân và uy tín dưới khía cạnh xã hội trong
đánh giá sự tin cậy được chú ý, chi phí xây dựng và duy trì xã hội, tính toán uy tín dưới
khía cạnh xã hội và xác định xã hội mà một nút thuộc về là rất cao. Thêm nữa, luôn có
những lỗ hổng mà các nút xấu có thể khai thác và sử dụng để có được lợi ích từ uy tín
dưới khía cạnh xã hội một khi chúng biết được cách thức xã hội được hình thành.
3.5.2. Hệ thống NodeRanking
Tương tự như hệ thống Regret, hệ thống NodeRanking cũng xét đến khía cạnh xã
hội trong đánh giá sự tin cậy. Tuy nhiên, khác với Regret, NodeRanking sử dụng cách
tiếp cận rất khác trong tính toán độ uy tín. Ý tưởng cơ bản của NodeRanking là: trong một
xã hội, một cá nhân luôn có mối quan hệ với nhiều cá nhân khác trong khi các cá nhân
xấu thường đứng đơn lẻ vì không ai muốn tạo mối quan hệ với nó. Kết quả là, nếu bằng
một vài cách chúng ta có thể có một cấu trúc tổng quan về mạng xã hội, chúng ta có thể
suy luận uy tín của từng cá nhân trong đó. Ưu điểm của phương pháp này là nó không yêu
cầu các cá nhân cung cấp thông tin phản hồi cho mỗi giao dịch như trong các phương
pháp khác.
3.5.2.1. Xây dựng mạng xã hội
Mạng xã hội có thể được xây dựng từ nhiều nguồn thông tin như liên kết các trang
web cá nhân, trao đổi thư điện tử, sự hợp tác của các cá nhân trong các giao dịch, vv. Ví
dụ, một công thức đơn giản để xây dựng mối quan hệ giữa hai cá nhân i và j trong hệ
thống thông qua các thông tin lấy từ các trang web cá nhân như sau:
w(i j) = wemail(i j) + wlink(i j).
61
Trong đó, wemail(i j) = 1 nếu tồn tại một địa chỉ email của j trong trang web của i.
Nếu không thì wemail(i j) = 0. Tương tự như vậy, wlink(i j) = 1 nếu tồn tại một liên
kết tới trang web của j trong trang web của i và bằng 0 nếu ngược lại.
Chúng ta có thể nghĩ về các kỹ thuật khai phá dữ liệu để lấy các loại thông tin này.
Từ những thông tin thu được, một mạng xã hội sẽ được xây dựng như là một đồ thị có
hướng mà trong đó hướng của một nút đến nút khác phản ánh sự ảnh hưởng của nút này
lên nút kia.
3.5.2.2. Đánh giá uy tín
Giá trị uy tín của một cá nhân trong một xã hội có thể được đánh giá bằng sự tham
khảo ý kiến của các cá nhân khác về cá nhân đó: số lượng ý kiến càng lớn thì uy tín của
một cá nhân càng cao. Vì mạng xã hội được biểu diễn như một đồ thị, uy tín của một cá
nhân chỉ đơn giản là đo mức độ vào (ra) của một nút thường xuyên liên lạc trong đồ thị.
Nếu một nút không được tham chiếu bởi một nút bất kỳ thì nó được gán một giá trị mặc
định của uy tín. Chú ý rằng khi hệ thống được khởi tạo đầu tiên, cùng một giá trị uy tín
được gán cho tất cả các nút. Ví dụ trong hình 3.8, nút C, G và H là các nút tốt, vì mỗi nút
trong số chúng có ít nhất 3 tham chiếu từ các nút khác, trong khi nút F có thể là một nút
xấu vì nó không có một tham chiếu nào tới nó.
Hình 3.8. Mạng xã hội
62
3.5.2.3. Thuật toán sử dụng trong hệ thống NodeRanking
Vì uy tín của một nút i được tính từ các nút tham chiếu, trong khi uy tín của các nút
khác (các nút mà i tham chiếu tới) được tính từ uy tín của i, nếu có một tham chiếu tuần
hoàn, quá trình tính toán có thể là vô hạn. Vì thế, thuật toán sử dụng trong hệ thống
NodeRanking cần xem xét và ngăn chặn vấn đề này. Thuật toán NodeRanking đưa ra giả
thiết và làm theo cách thông qua chiến lược đi ngẫu nhiên: nó bắt đầu từ một nút tùy ý và
sau đó đi ra các nút khác. Thuật toán sẽ dừng lại khi hội tụ các giá trị của uy tín.
3.6. Quản lý sự tin cậy
Cho đến bây giờ, chúng ta đã thảo luận về các mô hình tin cậy và các hệ thống sử
dụng chúng. Nhớ lại rằng, có hai mô hình tin cậy: mô hình dựa vào chứng thực và mô
hình dựa vào uy tín. Mô hình thứ hai có thể được chia thành hai mô hình nhỏ: một mô
hình chỉ xem xét uy tín cá nhân trong khi mô hình kia còn đưa thêm vào cả sự tính toán
các mối quan hệ xã hội. Vì tất cả các mô hình này đòi hỏi phải có kiến thức toàn hệ thống
để đánh giá sự tin cậy và như một kiến thức không tồn tại ở bất kỳ cá nhân nào. Trong
phần này chúng ta sẽ bàn về các phương pháp tin cậy được đánh giá theo cách phân loại.
Đặc biệt chúng ta tập trung thảo luận về cách quản lý các người dùng và sự trao đổi hiểu
biết giữa họ về uy tín của các người dùng khác để có được một cái nhìn tổng quát về hệ
thống mạng ngang hàng. Giải pháp cho vấn đề này một phần đã được thảo luận trong các
hệ thống cụ thể được trình bày trong các phần trên. Tuy nhiên, ở đây chúng ta muốn nhấn
mạnh và tổ chức chúng thành các loại và thảo luận chúng một cách chi tiết hơn. Nói
chung, có ba phương pháp để quản lý sự tin cậy trong hệ thống P2P như sau.
3.6.0.1 Quản lý sự tin cậy dựa vào máy chủ
Đây là cách đơn giản, trong cách này, máy chủ được sử dụng để duy trì giá trị uy tín
của các người dùng. Bằng cách này, sau khi giao dịch, mỗi người dùng tham gia chỉ cần
gửi ý kiến của họ về đối tác tới máy chủ. Các máy chủ có trách nhiệm quản lý uy tín của
mọi người dùng và trả lời các truy vấn của bất kỳ người dùng nào. Cách này thích hợp
cho các hệ thống P2P dựa trên máy chủ vì chúng có thể sử dụng cấu trúc hiện có để quản
lý tin cậy. Tuy nhiên, vì phương pháp này dựa vào các máy chủ, nên nó gặp các vấn đề
của hệ thống dựa vào máy chủ như: thắt cổ chai và thiếu khả năng mở rộng.
63
3.6.0.2. Quản lý tin cậy dựa vào thuật toán lan truyền
Nếu không sử dụng máy chủ, có hai phương pháp để quản lý sự tin cậy của toàn hệ
thống. Cách đầu tiên sử dụng một thuật toán lan truyền để trao đổi kiến thức giữa các
người dùng trong hệ thống. Kết quả, sau khi đủ các bước trao đổi, một người dùng có thể
có một cái nhìn tổng quan về hệ thống. Đặc biệt, sau mỗi giao dịch hoặc sau một khoảng
thời gian, các người dùng báo cáo điểm số của các đối tác trong các giao dịch mới nhất
cho tất cả các nút khác trong hệ thống bằng cách sử dụng một thuật toán lan truyền. Ban
đầu, người dùng đó gửi điểm số cho tất cả các người dùng khác mà người đó biết, rồi
chúng sẽ lần lượt chuyển tiếp cho các người dùng khác. Từng bước, điểm số được cập
nhật tại tất cả các nút. Phương pháp đơn giản này rất tốn kém vì nó yêu cầu lưu giữ thông
tin sự hiểu biết của tất cả các người dùng trong hệ thống tại mỗi nút, mặc dù hầu hết các
lần giao dịch, một nút chỉ giao dịch với một số lượng nhỏ các nút khác trong hệ thống.
Thêm nữa, hệ thống cho thấy chỉ nên duy trì uy tín cục bộ của một nút khi nó giao dịch
với nút khác trong nội bộ của nó. Bất cứ khi nào một nút cần lấy lại uy tín của một nút
chưa xác định, nó có thể sử dụng thuật toán lan truyền để yêu cầu uy tín của các nút đó từ
nút láng giềng của nó, nút láng giềng của nút láng giềng của nó, và cứ như vậy cho đến
khi tìm thấy. Kết hợp các thông tin phản hồi với những hiểu biết cục bộ, nó có thể xác
định giá trị tin cậy của các nút đó. Lưu ý rằng phương pháp này có chi phí thấp hơn so với
phương pháp đơn giản ở trên vì nó không cần thiết yêu cầu tất cả các nút trong hệ thống
cung cấp thông tin về uy tín của một nút. Giá trị chính xác có thể hội tụ chỉ sau một số
bước truyền các truy vấn.
3.6.0.3. Quản lý tin cậy dựa vào cấu trúc mạng P2P
Phương pháp trên dựa vào thuật toán lan truyền có chi phí cao vì uy tín của một nút
hoặc một truy vấn có thể phải lan truyền tới tất cả các nút khác hoặc đa số các nút trong
hệ thống. Tuy nhiên, nếu không làm điều này, kết quả truy vấn về uy tín của một nút có
thể không chính xác. Phương pháp thứ ba đề xuất rằng chính bản thân một mạng ngang
hàng có cấu trúc có thể sử dụng để quản lý uy tín của các nút trong hệ thống.
Ý tưởng cơ bản được đưa ra cho mỗi nút trong mạng, định danh của nó được coi
như khóa và uy tín của nó được đánh chỉ số cùng với khóa định danh vào hệ thống mạng.
Khi một nút muốn biết uy tín của các nút khác, đơn giản nó chỉ cần gửi một truy vấn với
định danh của nút đó như là khóa tìm kiếm. Một vấn đề tiềm năng là một nút có thể giữ
64
uy tín của chính nó nằm trong vùng giá trị thay đổi chứa định danh của nó, do đó nó có
thể thay đổi giá trị uy tín nếu nó là một nút xấu. Để tránh vấn đề này, thay vì giữ giá trị uy
tín của một nút chỉ ở một ở một vị trí, hệ thống sẽ tạo các bản sao giá trị uy tín của một
nút và giữ ở một vài vị trí khác. Tuy nhiên, nếu có nhiều nút xấu, và nếu chúng hợp tác
với nhau, chúng vẫn có thể cung cấp thông tin sai đối với một vài nút. Giải pháp cho vấn
đề này là yêu cầu một nút phải đánh giá uy tín của các nút tham chiếu. Điều này có thể
dẫn tới sự kiểm tra vòng lặp cho tất cả các nút trong hệ thống, như thế rất tốn kém, nhưng
trong nhiều trường hợp, hệ thống có thể quyết định tính đúng đắn của các giá trị uy tín chỉ
sau một vài bước. Phương pháp này có thể được áp dụng trong bất kỳ hệ thống P2P có
cấu trúc như P-Grid [56], CAN [9] hoặc CHORD [8].
Kết luận, sự phân loại các phương pháp quản lý tin cậy có thể được thể hiện như
trong hình 3.9.
Hình 3.9. Phân loại các phương pháp quản lý tin cậy
Chúng ta thấy rằng, sự phân loại các phương pháp quản lý tin cậy tương tự như sự
phân loại mạng ngang hàng: mô hình đầu tiên có thể ví như mạng ngang hàng không có
cấu trúc, mô hình P2P dựa vào máy chủ; mô hình thứ hai sử dụng thuật toán lan truyền có
thể coi như là mạng P2P không có cấu trúc, mô hình P2P thuần túy; và cuối cùng như là
mô hình P2P có cấu trúc. Trong phần tiếp theo, chúng ta sẽ tìm hiểu ba hệ thống đại diện
cho các mô hình này bao gồm các hệ thống: XenoTrust – sử dụng mô hình quản lý tin cậy
dựa vào máy chủ; EigenRep [57] – sử dụng mô hình quản lý tin cậy dựa vào phương pháp
lan truyền, và sự hợp tác của Ge, Luo và Xu [58] – sử dụng P-Grid để quản lý tin cậy.
3.6.1. Hệ thống XenoTrust
XenoTrust là một hệ thống quản lý tin cậy sử dụng nền tảng mở XenoServer - một
nền tảng mã nguồn mở và sử dụng công cộng, trong đó các máy chủ có thể cho thuê tài
65
nguyên của chúng để các máy trạm triển khai ứng dụng. Nền tảng mở XenoServer bao
gồm 5 thực thể:
- XenoServer: cung cấp dịch vụ máy chủ cho các máy trạm. Bất kỳ máy chủ nào
cũng có thể tham gia vào nền tảng bằng cách đăng ký thông tin với XenoCorp đầu tiên.
Sau đó, nó cần phải quảng cáo dịch vụ của mình cho dịch vụ thông tin của XenoServer
(XenoServer Information Service – XIS). Ngoài ra, nó còn phải thông báo định kỳ cho
XIS về trạng thái của nó (các dịch vụ). Khi một máy trạm thuê tài nguyên của nó, máy
chủ có thể yêu cầu XenoCorp xác nhận chi phí cho thuê.
- XenoCorp: hoạt động như một bên tin cậy để xử lý tính toán. Nó có trách nhiệm
xác thực cả XenoServer và các máy trạm trên nền tảng và đảm bảo tính chính xác của các
khoản thanh toán.
- XenoServer information service (XIS): phụ trách việc duy trì trạng thái và danh
sách các dịch vụ của XenoServers. Thông tin này có thể được truy vấn bởi các máy khách
hoặc bởi hệ thống tìm kiếm tài nguyên.
- Hệ thống tìm kiếm tài nguyên: được sử dụng để hỗ trợ các máy khách trong việc
tìm các XenoServer tương ứng mà chúng cần.
- Các máy khách: thuê tài nguyên từ XenoServers. Cũng giống như XenoServers, để
tham gia vào hệ thống thì một máy khách phải đăng ký thông tin cá nhân thông qua
XenoCorp đầu tiên. Sau đó, nó có thể tìm thấy một XenoServers phù hợp, hoặc thông qua
các tài nguyên của hệ thống tìm kiếm tài nguyên hoặc bởi chính nó tự lựa chọn XIS. Các
máy khách có thể kiểm tra dịch vụ của máy chủ bằng cách truy vấn trực tiếp. Đối với các
tài nguyên cho thuê, máy khách cần thuê từ XenoCorp. Cuối cùng, nó có thể tạo ra các
phiên giao dịch tại các máy chủ và triển khai nhiệm vụ của mình.
Nền tảng mở XenoServer có thể được nhìn thấy ở phần trên cùng của hình 3.10.
Mặc dù nền tảng này có một thành phần XenoCorp, nhưng chúng có thể cung cấp một
dịch vụ thanh toán đáng tin cậy cho các máy trạm của nó, nó không thể cho chúng biết về
uy tín của nhau (nghĩa là, nếu chúng có thể là máy chủ/máy trạm tốt hay xấu). Vì thế các
máy chủ và các máy trạm có tính chất tự trị, nó cần cung cấp cho người sử dụng (cả máy
chủ và máy trạm) một cơ chế để đánh giá uy tín của nhau. XenoTrust được dành riêng cho
mục đích này.
66
Hình 3.10. Nền tảng mở XenoServer trong hệ thống XenoTrust
3.6.1.1. Kiến trúc hệ thống
XenoTrust là một thành phần quản lý tin cậy dựa vào sự kiện, nó cho phép những
người tham gia nền tảng mở XenoServer tìm kiếm uy tín của các nút trong hệ thống đạt
kết quả như phương pháp gửi quảng bá. Các thành phần mới bổ sung một mực độ mới của
sự tin cậy: tin cậy dựa vào uy tín được đặt lên mức hàng đầu trong các mức tin cậy hiện
có: tin cậy có căn cứ rõ ràng. Đây là quá trình xác minh các thông tin chứng thực của cá
nhân từ việc đăng ký tại XenoCorp. XenoTrust dựa trên các máy chủ để quản lý tin cậy.
Máy trạm có thể bổ sung uy tín của các máy chủ sau mỗi giao dịch bằng cách thông báo
67
cho XenoCorp ý kiến đánh giá của nó. Các máy trạm cũng có thể yêu cầu máy chủ đó
cung cấp thông tin về uy tín của các máy chủ khác thông qua hai phương pháp sau:
- Statement advertisement: được sử dụng khi một nút muốn thực hiện báo cáo về uy
tín của các nút khác. Một tuyên bố có định dạng (advertiser, subject, token, value(s),
timestamp), trong đó advertiser và subject là định danh của nút đánh giá uy tín và nút
được đánh giá uy tín, token là khía cạnh thẩm định, value(s) biểu thị điểm số (s) về uy tín
và timestamp thiết lập thời gian hiệu lực của yêu cầu.
- Rule-set deployment: được sử dụng để truy vấn uy tín của một nút. Nó có định
dạng (principal, property, advertiser, function, [trigger]), trong đó principal là định danh
của nút mà uy tín của nó đang được tìm kiếm, property là khía cạnh đánh giá uy tín,
advertiser là tập hợp các lời quảng cáo và được xem xét trong suốt quá trình đánh giá,
function cung cấp phương thức để tính toán uy tín, [trigger] thiết lập ngưỡng của giá trị
thay đổi khi một thông báo được gửi đến máy trạm.
Nói chung, uy tín của một nút được cập nhật trong hệ thống bằng cách tuyên bố
quảng cáo. Tập các quy tắc có thể được triển khai trong hai phương pháp: dựa vào sự kiện
hoặc dựa vào truy vấn. Trong phương pháp dựa vào sự kiện, sau khi thiết lập, một thông
báo sẽ được gửi đến nút đó bất cứ khi nào có sự thay đổi đáng chú ý của nút truy vấn.
Trong mô hình truy vấn, XenoTrust chỉ đơn giản trả lại kết quả cho nút yêu cầu. Kiến trúc
của XenoTrust được thể hiện ở phần dưới của hình 3.10.
Như đã đề cập, bằng cách sử dụng máy chủ để quản lý tin cậy, hệ thống XenoTrust
phải gánh chịu các vấn đề của hệ thống sử dụng máy chủ đó là: thắt cổ chai và thiếu khả
năng mở rộng.
3.6.2. Hệ thống EigenRep
EgenRep cũng là một hệ thống quản lý tin cậy dựa vào uy tín cá nhân của các nút. Ở
đây, mỗi nút giữ một danh sách uy tín của các nút mà trước đây nó đã giao tiếp. Uy tín
toàn cục của các nút được tổng hợp thông qua một thuật toán lan truyền.
3.6.2.1. Uy tín cục bộ
Uy tín cục bộ của một nút j qua đánh giá của nút i được tính như sau:
Sij = sat(i, j) – unsat(i, j)
68
Trong đó, sat(i, j) là số lượng giao dịch đạt yêu cầu mà i đã thực hiện với j và
unsat(i, j) là số lượng các giao dịch không đạt yêu cầu mà i đã thực hiện với j. Ví dụ, khi
nút i tải một file từ nút j trong mạng chia sẻ file, nếu tập tin là tốt, giao dịch được coi là
đạt yêu cầu vì thế sat(i, j) được tăng thêm 1 (đơn vị). Tuy nhiên, nếu tập tin là xấu hay
việc tải tệp tin không thành công, giao dịch được coi là không đạt yêu cầu vì thế nó làm
tăng usat(i, j) thêm 1 (đơn vị).
3.6.2.2. Uy tín toàn cục
Chỉ sử dụng uy tín cục bộ thì chưa đủ để xác định rõ giá trị tin cậy, đặc biệt với
những nút mà nó chưa hề biết đến thì càng rất khó khăn. Kết quả là nó phải hỏi các nút
trong hệ thống – những nút đã có hiểu biết về nút đó. Nói cách khác là nó phải tính uy tín
toàn cục cho các nút có liên quan để có thể đánh giá đúng giá trị tin cậy mà nó cần thiết
lập cho nút đó. Một cách trực quan, uy tín toàn cục của một nút được tính bằng cách tập
hợp các uy tín cục bộ. Tuy nhiên, điều đó không hề đơn giản chút nào. Nếu có nhiều nút
xấu, và chúng hợp tác với nhau, có khả năng chúng sẽ cung cấp các giá trị uy tín cục bộ
cao trong khi các nút khác thì có giá trị thấp. Kết quả là chúng có thể làm hỏng hệ thống
tin cậy. Để tránh vấn đề này, uy tín cục bộ đã được bình phương hóa trước khi tập hợp
như sau:
cij = j ij
ij
s
s
)0,max(
)0,max(
.
Công thức này đảm bảo uy tín cục bộ bình thường không phải là cao hay thấp. Nó
luôn nằm giữa 0 và 1. Tuy nhiên, nếu một nút không có giá trị uy tín với một vài nút (xảy
ra khi nút đó vừa gia nhập vào mạng) thì .0)0,max( j ijS Kết quả là cij không xác định.
Giải pháp cho vấn đề này là phải có một tập hợp các nút tin cậy được biết đến toàn cục (ví
dụ như các điểm truy cập mạng). Vì vậy, công thức trên sẽ sửa lại như sau:
Trong đó, Pj = 1/|P| là một giá trị uy tín đã được xác định trước của một nút j đã có
uy tín trong số P – các nút đã được biết rõ hoặc các nút đã được tin cậy từ trước. Bình
69
thường hóa giá trị uy tín cục bộ khi đã được tính, sẽ được lưu trong một véc tơ gọi là véc
tơ uy tín cục bộ chuẩn hóa trên nút cục bộ: .),...,,( 21 Tiniii cccc Khi một nút có giá trị tin
cậy khác với các nút khác, công thức sẽ xem xét nó bằng cách thêm vào các giá trị uy tín
cục bộ của nút láng giềng của nó như là hệ số trong tính toán giá trị uy tín toàn cục của
một nút. Kết quả là, giá trị uy tín toàn cục của nút j qua đánh giá của nút i sẽ được tính
như sau:
tij =
k
kjik cc ..
Nếu chúng ta kết hợp các giá trị uy tín toàn cục của các nút trong hệ thống vào một
véc tơ uy tín toàn cục it , và đặt C là ma trận [cij], thì it = C
T . ic
iN
i
i
t
t
t
...
2
1
=
NNNN
N
N
ccc
ccc
ccc
...
...............
...
...
21
22212
12111
.
iN
i
i
c
c
c
...
2
1
.
Công thức trên phản ánh kinh nghiệm của các nút và các nút láng giềng của chúng.
Tuy nhiên, nếu một nút hoặc các nút láng giềng của nó chưa có kinh nghiệm về một nút
không xác định, các nút đó sẽ tiếp tục tham khảo ý kiến của các nút láng giềng của nút
láng giềng của nó. Bằng cách này, công thức trên sẽ thay đổi ..)( 2
)2(
i
T
i cCt Liên tục như
thế, kiến thức tổng thể của hệ thống có thể được xác định sau n bước, với giá trị đủ lớn
của n:
..)().( )1()( i
nTn
i
Tn
i cCtCt
Sau các cuộc thảo luận trên, các thuật toán phân phối được đưa ra như trong thuật
toán Distributed. Trong đó A và B, tương ứng là một tập hợp các nút tải file từ nút i và
một tập hợp các nút mà từ đó nút i đã tải file về. Quá trình tính ti(k+1) có thể minh họa như
hình 3.11.
70
Hình 3.11: Thuật toán Distributed
3.6.3. Quán lý tin cậy với P-Grid
Cả hai mô hình quản lý tin cậy trên đây đều không tốt với các mạng có quy mô lớn
bởi chúng dựa vào các máy chủ hoặc sử dụng các thuật toán lan truyền cho sự quảng bá
uy tín giữa các nút trong hệ thống. Mặt khác, một trong những đặc tính nổi bật của hệ
thống P2P là khả năng mở rộng. Điều đó giúp ta lưu ý, tại sao không sử dụng hệ thống
P2P có cấu trúc để quản lý tin cậy cho mạng P2P? Câu trả lời sẽ được giải đáp trong hệ
thống cộng tác của Ge, Luo và Xu [19], nơi mà một hệ thống P2P có cấu trúc P-Grid
được sử dụng để triển khai hệ thống quản lý tin cậy.
3.6.3.1. Đánh giá sự tin cậy
Trong hệ thống này, uy tín của một nút được đánh giá dựa trên số lượng các khiếu
nại bởi các nút khác và số lượng khiếu nại của nó về các nút khác. Mặc dù đếm số khiếu
nại của một nút để đánh giá uy tín có thể không phải là mục đích hàng đầu nhưng nó giúp
cho việc xác định các nút xấu một cách nhanh hơn. Lý do là nếu một nút là xấu nó luôn
luôn tạo ra một khiếu nại về đối tác của nó, vì nó biết rằng đối tác của nó làm tương tự. Vì
vậy, các nút xấu chỉ nhận được nhiều khiếu nại từ các nút khác nhưng cũng có nhiều
khiếu nại về các nút khác. Thêm nữa, các nút xấu có một số lượng lớn các khiếu nại so
với các nút khác, do đó chúng dễ dàng bị phát hiện. Đặt P biểu thị tập tất cả các nút và
c(p, q) biểu thị một khiếu nại được tạo ra bởi p về q. Sau đó, uy tín một nút được xác định
bởi công thức sau:
T(p) = |{c(p, q) | q P}| x |{c(q, p) | q P}|.
71
3.6.3.2. Quản lý tin cậy dựa vào P-Grid
Trong cấu trúc của P-Grid, mỗi nút được liên kết với một đường đi của một cây tìm
kiếm nhị phân, và chịu trách nhiệm cho tất cả dữ liệu chứa đường dẫn tìm kiếm như uy tín
tiền tố của nó. Nó có thể sử dụng để lưu trữ các khiếu nại của các nút trong hệ thống bằng
cách sử dụng định danh của các nút như là các khóa. Một ví dụ được minh họa trong hình
3.12.
Hình 3.12: Hệ thống quản lý tin cậy dựa vào P-Grid
Có tổng số 6 nút trong hệ thống chúng ta quan sát, sắp xếp trong một cây tìm kiếm
nhị phân có độ sâu là 2. Nếu chúng ta sử dụng 3 bits để mã hóa định danh của các nút, các
khiếu nại về nút 1 và bởi nút 1 khiếu nại được lưu giữ trên cả nút 1 và nút 6 vì đường đi
tìm kiếm nhị phân liên quan đến nút 1 và nút 6, 00 là tiền tố của định danh của nút 1, 001.
Tương tự như vậy, nút 2 lưu giữ các khiếu nại về nút 2 và nút 3, có tiên tố của định danh
là 01; nút 3 và nút 4 lưu giữ các khiếu nại về nút 4 và nút 5, có tiền tố của định danh là
10; nút 5 lưu giữ các khiếu nại về nút 6, có tiền tố của định danh là 11.
Sử dụng cấu trúc P-Grid, các khiếu nại được chèn vào và sau các truy vấn các liên
định tuyến được lưu ở các nút. Ví dụ, nếu nút 2 vừa thực hiện giao dịch với nút 6, và
muốn đưa ra một khiếu nại về nút 6, nó tạo ra một yêu cầu cho phép chèn khiếu nại với
khóa 110. Bằng cách kiểm tra các liên kết định tuyến của nó, nút 2 sẽ gửi yêu cầu đến nút
3. Đổi lại, nút 3 sẽ chuyển tiếp yêu cầu đến nút 5, và tại đây nó lưu giữ các khiếu nại về
72
nút 6. Một quy trình tương tự được thực hiện để tìm kiếm. Trong đó, việc chèn thêm và
tìm kiếm các yêu cầu được định nghĩa như công thức dưới đây:
- insert(t, k, v): Trong đó t là mục tiêu của khiếu nại, k là khóa hay định danh của t,
và v là giá trị của khiếu nại.
- query(t, k): trong đó t là mục tiêu và uy tín đã được điều tra; k là khóa hay định
danh của t.
Một điều mà bạn đọc sẽ quan tâm khi quan sát trong hình 3.12, ta thấy là nút 1 giữ
khiếu nại về chính nó. Nếu nút 1 là một nút xấu, nó có thể thay đổi kết quả. Do đó, các
khiếu nại phải được lập chỉ mục ở một vài nơi thay vì chỉ lưu giữ một nơi, bằng cách sử
dụng kỹ thuật nhân bản. Bằng cách này, kết quả truy vấn có thể được kiểm tra nhiều lần.
Ngoài ra, nó cũng gợi ý rằng uy tín của các nút đưa ra kết quả cũng cần được kiểm tra để
tránh vấn đề của một nhóm các nút xấu hợp tác để đưa ra kết quả sai. Mặc dù điều này có
thể dẫn đến sự kiểm tra tuần hoàn trong toàn hệ thống, điều này hiếm khi xảy ra vì quá
trình chỉ ngừng lại sau một vài bước khi kết quả nhận được là phù hợp.
73
Chương 4: MÔ PHỎNG MẠNG NGANG HÀNG VỚI PEERSIM
Trong chương này, chúng ta sẽ tìm hiểu nền tảng PeerSim – một nền tảng mã
nguồn mở dùng để mô phỏng mạng ngang hàng và xây dựng các ứng dụng chạy trên nền
P2P. Đặc biệt, chúng ta sẽ tìm hiểu về ứng dụng BitTorrent (một ứng dụng đã được xây
dựng trên nền tảng PeerSim) cho việc chia sẻ dữ liệu.
4.1. Tổng quan về PeerSim
4.1.1. Giới thiệu về PeerSim
PeerSim là một nền tảng mã nguồn mở được sử dụng để mô phỏng mạng
ngang hàng và xây dựng các ứng dụng chạy trên nền P2P. PeerSim được phát triển
tại phòng nghiên cứu khoa học máy tính, trường đại học Bologna và ngôn ngữ Java
là ngôn ngữ được dùng để phát triển nền tảng. Mã nguồn của PeerSim có thể được
tìm thấy và tải về từ trang chủ của Source Forge:
4.1.2. Các gói dịch vụ trong PeerSim
Trong PeerSim, người ta đã tổng quát hóa các giao thức peer-to-peer mà cho phép
bất kỳ các thiết bị được kết nối trên mạng từ cell phone đến PDA, từ PC đến server – để
truyền thông và cộng tác các peer lại với nhau. Các giao thức trong PeerSim thì độc lập
với ngôn ngữ và được triển khai trong nhiều môi trường khác nhau.
Các gói dịch vụ trong PeerSim bao gồm:
- peersim: thư mục chính của PeerSim, chứa các gói dịch vụ con trong PeerSim.
- peersim.cdsim: cài đặt các giao thức cho việc mô phỏng dựa vào mô hình cycle-
driven – một trong hai mô hình của PeerSim.
- peersim.config: khởi tạo các file cấu hình hệ thống.
- peersim.core: cài đặt các lớp cơ bản.
- peersim.dynamics: các lớp kiểm soát việc khởi tạo hệ thống mạng hoặc điều
chỉnh hệ thống trong quá trình mô phỏng.
- peersim.edsim: cài đặt các giao thức cho việc mô phỏng dựa vào mô hình event-
driven – một trong hai mô hình của PeerSim.
74
- peersim.graph: cấu trúc dữ liệu biểu diễn trên đồ thị, cài đặt các thuật toán
vào/ra.
- peersim.rangesim: cài đặt phạm vi mô phỏng trong PeerSim, thiết lập giá trị cho
các biến.
- peersim.reports: cài đặt các lớp chứa các đối tượng cung cấp thông tin cho hệ
thống mạng.
- peersim.transport: cài đặt các lớp và các giao diện mô phỏng các giao thức
truyền thông giao tiếp trong mạng.
- peersim.util: cài đặt các lớp tiện ích.
4.2. Ứng dụng BitTorrent
4.2.1. Giới thiệu về BitTorrent
BitTorrent là một giao thức chia sẻ tài nguyên trên mạng P2P, đồng thời cũng là
tên của một chương trình chia sẻ tài nguyên trên mạng P2P được phát triển bởi lập trình
viên Bram Cohen. BitTorrent dùng để tải về những dữ liệu lớn mà không tốn chi phí máy
chủ và băng thông mạng. Chương trình BitTorrent nguyên thuy được viết bằng ngôn ngữ
lập trình Python và mã nguồn của chương trình BitTorrent phiên bản 4.0 được phát hành
dưới dạng mã nguồn mở tuân theo bản quyền sử dụng mã nguồn BitTorrent. BitTorrent
có nhiều biến thể khác nhau được viết bằng các ngôn ngữ lập trình khác nhau, chạy trên
các hệ điều hành khác nhau. Chương trình BitTorrent xây dựng trên nền tảng PeerSim
được viết bằng ngôn ngữ lập trình Java và chạy trên môi trường hệ điều hành Linux.
4.2.2. Cách thức hoạt động của BitTorrent
Hình 4.1: Mô hình mạng sử dụng trong BitTorrent
75
BitTorrent giảm tải cho nút hạt giống bởi vì tài nguyên được tải về từ các người
dùng khác nhau. Các mảnh của tệp được lưu giữ trên các máy ngang hàng khác nhau bởi
sự phân phối từ máy gieo hạt. Các máy ngang hàng muốn tải tệp về thì chúng sẽ trao đổi
cho nhau các mảnh của tệp. Máy gieo hạt chỉ gửi một lần các mảnh của tệp cho tất cả các
máy ngang hàng trong mạng và các máy ngang hàng tự bổ sung các mảnh còn thiếu của
tệp cho nhau.
Giao thức BitTorrent định nghĩa một phương thức để phổ biến và chia sẻ tệp trên
mạng. Trước khi BitTorrent ra đời đã tồn tại các giao thức P2P có khả năng cho phép một
nhóm máy tính trên mạng chia sẻ tệp với các máy tính khác nhóm mà không cần phải sử
dụng một máy chủ để làm kho lưu trữ trung tâm. BitTorrent là một cải tiến từ các giao
thức đồng đẳng trước. Giao thức BitTorrent có một nguyên lý hoạt động chặt chẽ để có
khả năng tùy biến, tin cậy và chi phí duy trì danh sách các máy tính chia sẻ tệp tốt hơn các
giao thức P2P trước đó. Do giao tiếp theo chuẩn TCP/IP nên giao thức BitTorrent có thể
hoạt động trên đường truyền Internet thông thường.
BitTorrent client là một chương trình hoạt động theo giao thức BitTorrent. Mỗi
BitTorrent client có khả năng so sánh, yêu cầu, và vận chuyển tệp trên mạng sử dụng giao
thức BitTorrent. Tệp có thể chứa bất kỳ thông tin nào, bao gồm cả văn bản, âm thanh,
phim và nội dung đã được mã hóa.
4.2.3. Tạo và phát hành tệp Torrent lên mạng
Để chia sẻ một tệp hay nhiều tệp bằng giao thức BitTorrent, đầu tiên cần tạo tệp
“torrent”. Mỗi tệp torrent chứa thông tin miêu tả tệp muốn chia sẻ, và thông tin về máy
tính cung cấp bản gốc của tệp. Thông tin chi tiết lưu trên máy tính theo dõi sẽ khác nhau
tuỳ thuộc vào phiên bản của giao thức BitTorrent, nhưng dù ở phiên bản nào tệp “torrent”
luôn luôn có đuôi mở rộng là .torrent. Cụ thể thì một tệp torrent chứa thông tin loan báo
(địa chỉ URL của máy vi tính theo dõi), và thông tin về tên tệp được chia sẻ, kích thước
mảnh, chiều dài khóa, chiều dài tệp, và vé thông hành để tải tệp. Một tệp torrent có thể
chứa thông tin về một tệp hoặc nhiều tệp. Máy tính đã tải về tệp xong có thể lựa chọn hoạt
động như máy gieo hạt, cung cấp bản sao hoàn chỉnh của tệp. Sau khi tệp torrent được
tạo, một đường dẫn để tải tệp về từ máy đó được đặt lên trang web, và tệp torrent được
đăng ký với máy theo dõi (tiếng Anh: tracker). Máy theo dõi chứa một danh sách các máy
76
tính hiện thời đang tải tệp về. Máy ngang hàng đang cung cấp tệp hoàn chỉnh được gọi là
máy gieo hạt (seeder).
4.2.4. Tải tệp Torrent và chia sẻ tệp
Dùng một trình duyệt Internet bất kì, như FireFox, duyệt trang web có danh sách
các tệp torrent, tải nó về, sau đó dùng chương trình BitTorrent client mở tệp đó ra. Sau
khi đã mở tệp torrent, chương trình BitTorrent sẽ kết nối với máy theo dõi, máy theo dõi
sẽ cung cấp cho nó một danh sách các máy tính đang tải tệp này. Một nhóm các thành
viên của một mạng BitTorrent để tải về cùng một tệp được gọi là quần thể.
Việc chia sẻ được bắt đầu từ máy gieo hạt. Các máy tính kết nối đầu tiên sẽ hướng trực
tiếp tới máy gieo hạt để bắt đầu tải về các mảnh của tệp. Giao thức BitTorrent chia tệp cần
tải về thành các phần nhỏ có kích thước bằng nhau, ví dụ một tệp có kích thước 4,37 GB
thường sẽ bị chia thành các mảnh nhỏ có kích thước là 4 MB (4096 kB) hoặc nhỏ hơn
nữa. Khi máy tính nhận được các mảnh này nó sẽ dùng giải thuật băm để kiểm tra xem
mảnh nó tải về có bị lỗi hay không.
Khi máy tính kết nối vào quần thể, các máy tính sẽ bắt đầu chia sẻ tệp với nhau.
Các máy tính sẽ chia sẻ các mảnh với nhau thay vì chia sẻ trực tiếp với máy gieo hạt, vì
vậy số lượng máy trong quần thể chia sẻ theo giao thức BitTorrent có thể phát triển rất
nhanh. Vì nguyên lý hoạt động của giao thức rất chặt chẽ nên các máy tự chọn máy ngang
hàng có kết nối tốt nhất để tải về các mảnh nó cần. Một điểm mới đột phá của giao thức
BitTorrent so với các giao thức P2P trước đó là nguyên lý “mảnh hiếm”. Theo giao thức
BitTorrent máy khách luôn luôn yêu cầu các mảnh hiếm nhất, mảnh này ít máy tính trong
quần thể có nhất. Với nguyên lý yêu cầu mảnh hiếm nhất giao thức BitTorrent làm giảm
tải của các máy khách trong việc đáp ứng các yêu cầu gửi đến nó, và không còn hiện
tượng thắt cổ chai.
Giao thức BitTorrent có một nguyên lý là “tín nhiệm mở” tạo nên “nhóm máy ưa
thích”. Máy ưa thích là một tập các máy ngang hàng trong quần thể cung cấp băng thông
tải lên lớn cho các máy khách có yêu cầu tải về. Tín nhiệm mở cho phép các chương trình
BitTorrent kiểm tra định kỳ xem máy nào trong quần thể nên lựa chọn để tải về. Nếu một
máy ngang hàng ngoài nhóm ưu thích có băng thông phục vụ các máy khác trong quần
thể tốt hơn một máy trong nhóm ưa thích thì nó đẩy máy phục vụ kém hơn ra khỏi nhóm
77
ưa thích và thay thế vào vị trí đó. Nguyên lý này làm cho các máy khách luôn luôn tải về
từ nhóm máy ngang hàng phục vụ tốt nhất.
78
KẾT LUẬN
Sau quá trình làm khóa luận, em đã rút ra được nhiều kiến thức bổ ích và nhiều bài
học kinh nghiệm cho bản thân.
Về lý thuyết, em đã nắm vững được những khái niệm cơ bản trong an toàn dữ liệu:
mã hóa dữ liệu, chữ ký điện tử, bảo mật dữ liệu. Tìm hiểu đề tài này giúp em hiểu rõ hơn
về hệ thống mạng ngang hàng P2P: kiến trúc của hệ thống, một số dạng tấn công vào hệ
thống, vấn đề chia sẻ dữ liệu giữa các nút trong mạng. Và quan trọng hơn, được nghiên
cứu hai mô hình tin cậy sử dụng để đánh giá độ tin cậy của một nút trong mạng: 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. Nghiên cứu các hệ thống
cộng tác sử dụng các mô hình tin cậy đó.
Phần cuối của khóa luận nghiên cứu về nền tảng mã nguồn mở PeerSim dùng để
mô phỏng mạng ngang hàng và xây dựng trên nó các ứng dụng chạy trên nền P2P. Hiện
nay, các ứng dụng được xây dựng trên nền tảng PeerSim đều chưa áp dụng các mô hình
tin cậy nêu trong khóa luận này. Trong tương lai em sẽ phát triển một ứng dụng chạy trên
nền P2P sử dụng nền tảng PeerSim và áp dụng một trong hai mô hình tin cậy đã được
nghiên cứu.
Bên cạnh những lý thuyết đã nắm được, em còn học được những bài học vô cùng
quý giá với bản thân để bổ sung vào kiến thức sống hàng ngày như: cách trình bày một
báo cáo khoa học, cách ăn nói trước đám đông. Những bài học này sẽ là những kiến thức
khởi nguồn của bước ngoạt cuộc đời trước khi em trở thành một con người của xã hội.
TÀI LIỆU THAM KHẢO
1.
2.
3.
4. Phan Đình Diệu, Giáo trình lý thuyết mật mã và an toàn thông tin, Nhà xuất bản
Đại Học Quốc Gia Hà Nội.
5. Trịnh Nhật Tiến, Giáo trình an toàn dữ liệu, Đai học Công nghệ - Đại học Quốc
Gia Hà Nội, 2008.
6. Phan Anh, Nguyễn Đình Nghĩa, Bài giảng tổng quan về mạng ngang hàng – Đại
học Công Nghệ - Đại học Quốc Gia Hà Nội.
7. Quang Hieu Vu, Mihai Lupu, Beng Chin Ooi, Peer-to-Peer Computing: Principles
and Applications.
8. D.Karger, F.Kaashoek, I. Stoica, R. Morris, H. Balakrishnan, Chord: a scalable
peer-to-peer lookup service for internet applications, in Proceedings of the ACM
SIGCOMM Conference, pp. 149-160, 2001.
9. S. Ratnasamy, P. Francis, M. Handley, R. Karp, S. Shenker, A scalable content-
addressable network, in Proceedings of the ACM SIGCOMM Conference, pp.
161-172, 2001.
10. A. Rowstron, P. Druschel, Pastry: scalable, distributed object location and routing
for largescale peer-to-peer systems, in Proceedings of the 18th IFIP/ACM
International Conference of Distributed Systems Platforms (Middleware), pp. 329-
350, 2001.
11. H.V. Jagadish, B.C. Ooi, Q.H. Vu, BATON: a balanced tree structure for peer-to-
peer networks, in Proceedings of the 31st International Conference on Very Large
Databases (VLDB), pp. 661-672, 2005.
12. E. Sit, R. Morris, Security considerations for peer-to-peer distributed hash tables,
in Proceedings of the 1st International Workshop on Peer-to-Peer Systems (IPTPS),
pp. 261-269, Cambridge, MA, 2002.
13. B. Cooper, M. Bawa, N. Daswani, H. Garcia-Molina, Protecting the pipe from
malicous peers. Technical report, Computer Sciences Dept, Stanford University,
2002.
14. N. Daswani, H. Garcia-Molina, Query-flood DoS attacks in Gnutella, in
Proceedings of the 9th ACM Conference on Computer and Communications
Security (CCS), pp. 181-192, Washington, DC, 2002.
15. P. Keyani, B. Larson, M. Senthil, Peer pressure: Distributed recovery from attacks
in peer-to-peer systems. Lect. Notes Comput. Sci. 2376, 306-320 (2002).
16. Freenet,
17. M. Waldman, L. Cranor, A. Rubin, Publius, in Peer-to-Peer: Harnessing the
Power of Disruptive Technologies (O’Reilly & Associates, 2001), pp. 145-158.
18. OceanStore,
19. F. Dabek, M.F. Kaashoek, D. Karger, R. Morris, I. Stoica, Wide-area cooperative
storage with CFS, in Proceedings of the 18th ACM Symposium on Operating
Systems Principles (SOSP), 2001.
20. P. Devanbu, M. Gertz, C. Martel, S.G. Stubblebine, Authentic data publication
over the internet. J. Comput. Secur. 11(3), 291-314 (2003).
21. M. Lupu, J. Li, B.C. Ooi, S. Shi, Clustering wavelets to speed-up data
dissemination in structured P2P MANETs, in Proceeding of the 23rd IEEE
International Conference on Data Engineering (ICDE), 2007.
22. R. Housley, W. Ford, W. Polk, D. Solo, Internet x.509 public key infrastructure
certificate and cr1 profile, in RFC 2459, 1999.
23. H. Weatherspoon, J. Kubiatowicz, Naming and integrity: self-verifying data in
peer-to-peer systems, in Proceedings of the International Workshop on Future
Directions in Distributed Computing (FuDiCo), pp. 142-147, 2003.
24. H. Weatherpoon, J. Kubiatowicz, Erasure coding vs. replication: a quantitative
comparison, in Proceedings of the 1st International Workshop on Peer-to-Peer
Systems (IPTPS), March 2002.
25. SETI@home,
26. D. Carroll, C. Rahmlow, T. Psiaki, G. Wojtaszczyk, Distributing science.
2005.
27. Folding@home,
28. W. Du, J. Jia, M. Mangal, M. Murugesan, Uncheatable grid computing, in
Proceedings of the 24th International Conference on Distributed Computing
Systems (ICDCS), pp. 4-11, Tokyo, Japan, March 2004.
29. M. Feldman, K. Lai, J. Chuang, I. Stoica, Quantifying disincentives in peer-to-
peer networks, in Proceedings of the 1st Workshop on Economics of Peer-to-Peer
Systems (P2PEcon), Berkeley, CA, June 2003.
30. G. Hardin, The tragedy of the commons. Science 162, 1234-1248 (1986).
31. R. Axelrod, The Evolution of Cooperation (Basic Books, New York, 1984).
32. M.A. Nowak, K. Sigmund, Evolution of indirect reciprocity by image scoring.
Nature 393, 573-577 (1998).
33. J. Feigenbaum, C. Papadimitriou, R. Sami, S. Shenker, A BGP-based mechanism
for lowest-cost routing, in Proceedings of the 21st ACM Symposium on Principles
of Distributed Computing (PODC), pp. 173-182, 2002.
34. J. Feigenbaum, C. Papadimitriou, S. Shenker, Sharing the cost of multicast
transmmissions. J. Comput. Syst. Sci. 63, 21-41 (2001).
35. T.-W. Ngan, D. Wallach, P. Druschel, Enforcing fair sharing of peer-to-peer
resources, in Proceedings of the 2nd International Workshop on Peer-to-Peer
Systems (IPTPS), Berkeley, CA, USA, 2003.
36. Q. Sun, H. Garcia-Molina, SLIC: a selfish link-based incentive mechanism for
unstructured peer-to-peer networks, in Proceedings of the 24th International
Conference on Distributed Computing Systems (ICDCS), pp. 506-515, Tokyo,
Japan, March 2004.
37. T.E. Condie, S.D. Kamvar, H. Garcia-Molina, Adaptive peer-to-peer Computing,
August 2004.
38. K. Berket, A. Essiari, A. Muratas, PKI-based security for peer-to-peer information
sharing, in Proceedings of the 4th IEEE International Conference on Peer-to-Peer
Computing, August 2004.
39. D.A. Agarwal, O. Chevassut, M.R. Thompson, G. Tsudik, An integrated solution
for secure group communication in wide-area networks, in Proceedings of the 6th
IEEE Symposium on Computers and Communications, pp. 22-28, Hammamet,
Tunisia, July 2001.
40. The TLS Protocol Version 1.0. IETF RFC 2246.
http:/www.ietf.org/rfc/rfc2246.txt.
41. M.R. Thompson, A. Essiari, S. Mudumbai, Certificate-based authorization policy
in a PKI environment. ACM Trans. Inf. Syst. Secur. 6(4), 566-588 (2003).
42. M. Deutsch, Cooperation and trust: some theoretical notes, in Nebraska
Symposium on Motivation, 1962.
43. M. Deutsch, The Resolution of Conflict (Yale University Press, New Haven,
1973).
44. N. Luhmann, Trust and Power (Wiley, Chichester, 1979).
45. B. Barber, Logic and Limits of Trust (Rutgers University Press, New Jersey,
1983).
46. D. Gambetta, Trust (Blackwell, Oxford, 1990).
47. M. Deutsch, The Resolution of Conflict (Yale University Press, New Haven,
1973).
48. K. Aberer, Z. Despotovic, Managing trust in a peer-2-peer information system, in
Proceedings of the 10th ACM International Conference on Information and
Knowledge Management (CIKM), 2001.
49. International Telegraph and Telephone Consultative Committee (CCITT). The
Directory Authentication Framework, Recommendation X. 509. 1993 update.
50. M. Blaze, J.Feigenbaum, Decentralized trust management, in Proceedings of the
IEEE Symposium on Security and Privacy (S&P), 1996.
51. Y.-H. Chu, J. Feigenbaum, B. LaMacchia, P. Resick, M. Strauss, REREREE: trust
management for web applications. Comput. Netw. ISDN Syst. 29(8-13), 953-964
(1997).
52. M. Blaze, J. Feigenbaum, J. Ioannidis, A. Keromytis, The KeyNote trust
management system, version 2. RFC-2704. IETF, 1999.
53. P. Zimmermann, PGP User’s Guide (MIT Press, Cambridge, 1994).
54. J. Sabater, C. Sierra, Regret: a reputation model for gregarious societies, in
Proceedings of the 4th Workshop on Deception, Fraud and Trust in Agetn
Societies, 2001.
55. J. Pujol, R. Sanguesa, Extracting reputation in multi agent systems by means of
social network topology, in Proceedings of the 1st International Joint Conference
on Autonomous Agents and Multi-Agent Systems (AAMAS), 2002.
56. K. Aberer, P-Grid: a self-organizing access structure for P2P information systems,
in Proceedings of the 9th International Conference on Cooperative Information
Systems (CoopIS), 2001.
57. S. Kamvar, M. Schlosser, H. Garcia-Molina, Eigenrep: reputation management in
P2P networks, in Proceedings of the 12th World Wide Web Conference (WWW),
2003.
58. K. Aberer, Z. Despotovic, Managing trust in a peer-2-peer information system, in
Proceedings of the 10th ACM International Conference on Information and
Knowledge Management (CIKM), 2001.
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