Re: [JXTA discuss] how to stop malicious peers?
Mohamed Abdelaziz <[email protected]> Tue, 12 Apr 2005 20:13:29 -0700
| Newsgroups | gmane.comp.java.jxta.general |
|---|---|
| Message-ID | <[email protected]> |
Michele Amoretti wrote: >I am interested in this discussion, too. Mohamed (or someone else), could you >answer to Matteo's questions? Thnk you very much. > > >On Saturday 09 April 2005 10:39, Matteo Bisi wrote: > > >>I would develop a secure rdv policy control for my secure group, in which >>there are a new MembershipService for peer's authentication and group >>admission, >>and a new AccessService for managing peers' authorizations. >>In this groups, a peer (edge or rdv) can have different 'roles', (e.g. from >>the least to the >>most important: 'newbie', 'searcher', 'publisher', 'admin'). >>For each role, a peer can perform only, well-defined, actions. >> >>What I need is a sort of "capabilities"-based access control, so I would be >>sure that a peer which is a 'newbie' can not perform unauthorizaded >>actions. For this purpose, I think to create a specific access table for >>each authenticated peer, >>to store the operations it can perform. >>In this scenario, there is no centralized table, but instead when a peer is >>authenticated, it is >>given a number of credential. Each credential is associated with a >>particular operation. It is something like having a ring full of keys >>rather than a single key. >>I suppose to meet this requirements through a specific AccessService >>implementation. >> >> >> So far so good. >>The main problem is: an hackered peer can skip the access control, thus trying to perform unauthorizated actions, and my AccessService become useless... >>To prevent this situation, I want to dispose some further 'check points' >>that can block this wrong attempt. An idea could be: if a rdv (or some admin peers), is >>able to check if a peer which is attempting to perform an action (which involves a >>discovery task, such as 'publishing' or 'discoverying'), has or not the right permissions, it >>should block it in some way. To do this, I need to modify some JXTA sources and to add a custom rdv policy for checking this permissions. >>The ACL solution seems good, but it should be updated runtime, so I don't know if it is the best choice. >> >>What are the more suitable sources I should modify? >>Only the EdgePeerRdvService and the RdvPeerRdvService? >>Or should implement a new RendezVousService? >> >> I think imposing a low level quota, small enough to allow a peer to establish connections/routes, and authenticate at the transport layer is the most efficient and least resource intensive (cpu, network, memory, and disk). I can see this being addressed as follows: - All peers connecting for the first time are alloted a quota (limited number of messages, and size) - Such peers must establish credentials before any quotas are lifted. - Peers failing to establish credentials within a specified time period are gray listed (there ought to be an IP to ID mapping to prevent a jxta peer masquerading) - Peers maybe removed from the gray list after a specified timeout (minutes) - Provide transports access to AccessService/AccessList whereby a transport can accept or sever connections, and augment access control for a given peer. I also think the AccessService/AccessList should be enhanced to provide access control by package, whereby services can enforce higher level policies. This would be a good addition to the platform and would like to see it formalized into a enhancement for the upcoming release. Mohamed