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

Để 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.

pdf91 trang | Chia sẻ: lylyngoc | Lượt xem: 2616 | Lượt tải: 4download
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:

  • pdfLUẬ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