COPS: COntrolled P2P Sharing Kaustubh Beedkar Kaushal Kantawala Hiral Shah Pankaj Chawla Mehul Sutariya Outline Why? What? How? Problems Problems Every Where! Peers are anonymous and hence untrustworthy 45% of the files on the P2P network are infected with viruses No existing gnutella clients implements access control Approach Introduce access control in P2P file sharing networks Incorporate user authentication Implementing the concept of groups in p2p networks Architecture Authentication Sever COPS COPS Gnutella API Gnutella API Gnutella Network Gnutella API COPS Client Architecture Group semantics any user can create a group (owner) any user can invite another user under the moderation of the owner a user can be a member of more than one group cotd ... a user can request any of the members of a group to grant access owner can remove members from the group users can leave a group at his will Working Authentication Sever Login Client Client D Client Client A Client Client F Client Client C Client Client B Client Client E Authentication Sever Login Login Client Client D Client Client A Client Client F Client Client C Client Client B Client Client E Authentication Sever Login Login Client Client D Authenticated Client Client A Client Client F Client Client C Client Client B Client Client E Authentication Sever Login Login Login Authenticated Client Client D Authenticated Client Client A Client Client F Client Client C Client Client B Client Client E Ping Pong Client Client D Client Client A Client Client F Client Client C Client Client B Client Client E Ping Pong Client Client D Client Client A Client Client F Ping Ping Client Client B Client Client C Client Client E Ping Pong Client Client D Client Client A Pong Ping Ping Client Client F Pong Client Client B Client Client C Client Client E Ping Pong Client Client D Client Client A Ping Pong Ping Ping Client Client F Pong Client Client C Ping Client Client B Ping Client Client E Group Creation & Tagging Files Client Client D Client Client A Client Client F Client Client C Client Client B Client Client E Registry Group Creation & Tagging Files AIAD ------------------user A (owner) Client Client D Create group “AIAD” Client Client A Client Client F Client Client C Client Client B Client Client E Registry Group Creation & Tagging Files AIAD ------------------user A (owner) Client Client D Create group “AIAD” Tag Files Client Client A Client Client F Client Client C Client Client B Client Client E Registry Group Creation & Tagging Files AIAD ------------------user A (owner) Client Client D Create group “AIAD” Tag Files File Name ----------123.jpg 456.jpg META data Client Client A Client Client F Client Client C Group Name ---------AIAD Public Client Client B Client Client E Sending Invitations Registry Group Members ------------------A (owner) Client D Client A File Name ----------123.jpg 456.jpg META data Client F Client C Group Name ---------AIAD Public Client B Client E Sending Invitations Registry Group Members ------------------A (owner) Client D Client A File Name ----------123.jpg 456.jpg META data Group Name ---------AIAD Public Client F Invite D Invite D Client B Client C Client E Sending Invitations Registry Group Members ------------------A (owner) Client D Client A File Name ----------123.jpg 456.jpg META data Group Name ---------AIAD Public Invite D Invite D Invite D Client C Invite D Invite D Client B Client F Client E Sending Invitations Registry Group Members ------------------A (owner) Client D Client A File Name ----------123.jpg 456.jpg META data Group Name ---------AIAD Public Accept Invite D Invite D Invite D Client C Invite D Invite D Client B Client F Client E Sending Invitations Registry Group Members ------------------A (owner) Client D Client A Accept Invite D Accept File Name ----------123.jpg 456.jpg META data Group Name ---------AIAD Public Invite D Invite D Client C Invite D Invite D Client B Client F Client E Sending Invitations Registry Group Members ------------------A (owner) Update File Client D Client A Accept Invite D Accept File Name ----------123.jpg 456.jpg META data Group Name ---------AIAD Public Invite D Invite D Client C Invite D Invite D Client B Client F Client E Sending Invitations Registry Group Group Members Members ------------------------------------A (owner) A (owner) D Update File Client D Client A Accept Invite D Accept File Name ----------123.jpg 456.jpg META data Group Name ---------AIAD Public Invite D Invite D Client C Invite D Invite D Client B Client F Client E Sending Invitations Registry Group Group Members Members ------------------------------------A (owner) A (owner) D send list of group members Update File Client D Client A Accept Invite D Accept File Name ----------123.jpg 456.jpg META data Group Name ---------AIAD Public Invite D Invite D Client C Invite D Invite D Client B Client F Client E Registry Registry Group Group Members Members ------------------------------------A (owner) A (owner) D send list of group members Update File Client D Client A Accept Invite D Accept File Name ----------123.jpg 456.jpg META data Group Name ---------AIAD Public Sending Invitations Group Members ------------------A (owner) D Invite D Invite D Client C Invite D Invite D Client B Client F Client E Searching for Files Client Client D Client Client A Client Client F Client Client C Client Client B Client Client E Searching for Files Client Client D Search Client Client A Client Client F Client Client C Client Client B Client Client E Searching for Files Client Client D Search Client Client A QUERY+username Client Client F Client Client C Client Client B Client Client E Searching for Files Client Client D Search Client Client A QUERY+username Client Client C Client Client B QUERY+username Client Client F QUERY+username Client Client E Searching for Files Client Client D Search Client Client A QUERY+username QUERY+username Client Client C Client Client B Client Client F QUERY+username QUERY_HIT+ public_files+ private_files Client Client E Searching for Files Client Client D Search Client Client A QUERY+username QUERY_HIT+ public_files+ private_files Client Client B QUERY+username Client Client C Client Client F QUERY+username QUERY_HIT+ public_files+ private_files Client Client E Searching for Files Client Client D Ask for invitation if required Search Client Client A QUERY+username QUERY_HIT+ public_files+ private_files Client Client B QUERY+username Client Client C Client Client F QUERY+username QUERY_HIT+ public_files+ private_files Client Client E Implementation We have implemented a multi-threaded authentication server in Java We have used Jtella, which is an API for creating Gnutella clients in Java and modified the API so that it incorporates group based searching Implementing the following modules on the client: Transfer Manager Group Manager AccessControl Connection Manager, etc. Future Work Introducing more security features in the protocol Extend this for other file types like videos Group chat for entire group Groups existing for a particular period of time Browsing capability File preview So what’s new ? Idea of groups in P2P networks An attempt to enforce trusted sharing in existing P2P networks References http://www.gnutella.com/ JTella - Gnutella API in JAVA by Ken Mccrary "Computing Trusted Authority Scores in Peer-to-Peer Web Search Networks” - Josiane Xavier Parreira, Debora Donato, Carlos Castillo, Gerhard Weikum Robert Kaye "Next Generation File Sharing with P2P Networks" P2P or Peer-to-Peer Safety, Privacy and Security. http://www.ftc.gov/os/comments/p2pfileshare/ Thank You ?? Questions ?? (Oye .. aaks the pankazz no)