Re: [JXTA discuss] how to stop malicious peers?
"Matteo Bisi" <[email protected]> Sat, 9 Apr 2005 10:39:42 +0200
| Newsgroups | gmane.comp.java.jxta.general |
|---|---|
| Message-ID | <001101c53cdf$ad9e1840$d5802dd5@ACER1622> |
> Matteo Bisi wrote: > > >Mohamed Abdelaziz wrote: > > > > > > > >>A good start would be to use > >>platform/binding/java/impl/src/net/jxta/impl/access/AccessList.java to > >>manage a peer access list, and add a mechanism in all transports to > >>accept or refuse connections during the welcome message negotiation. > >>adding it at transport welcome message negotiations avoids any > >>unnecessary waste of resources. > >> > >> > > > >Ok, this is useful if the rdv knows that the peer attempting to connect is > >(or not) a > >malicious peer. > >Suppose, instead, that the rdv doesn't know in advance the real identity of > >the peer: in this case the rdv can only monitor peer's activity and, in some > >way, understand > >that the peer is a malicious - after its connection. Can I use the > >AccessList in this situation? > > > > > > > > Yes. One may implement a policy by which new connections are accepted > until some form of authentication/acceptance is established, after which > the access list is updated to accept, reject, or sever a connection from > a specific peer. 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. 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? Thank you