java - Writing a secure RMI server-client application -
i'm writing server-client application communication done on internet , have several questions , concerns regarding security. have done research , found posts here useful, more information. related questions read were:
secure authentication of client on rmi
java rmi authentication & security. exportobject makes public?
is communication in java rmi secure?
i have 3 parts consider:
- information exchanged between client , server.
- authentication of client.
- exploiting running rmi server (hacking etc.).
what know:
- rmi on ssl. using ssl sockets instead of default socket encrypt information passed between client , server. includes objects exchange , method calls.
- authentication using username/password combination on ssl before rmi connection has been established. understanding there supposed way authenticate inside rmi connection voted down.
- not sure can or needs done here. know can't write own client , ask connect server since need objectid , remote interfaces. however, not possible decompile classes \ interfaces need since sent in rmi anyway? saw youtube video [http://www.youtube.com/watch?v=otjllnabxiw] while researching , got me worried how easy is, although don't know if server not setup correctly.
all in all, there other security issues need consider in rmi on internet? missing solution need at? know wrong?
information exchanged between client , server.
rmi on ssl.
authentication of client.
authentication of client done ssl. mean authorisation, 'relatively' easy. define own rmiserversocketfactory returns serversocket override implaccept() method wraps socket in sslsocket, add handshake listener , set needclientauth true on (and clientmode false). handshake listener should , check client certificate sslsession, see if identity authenticates authorised, , close socket if non-authorised.
authorising server, in client, on other hand baroquely complex. need jeri api in jini properly.
exploiting running rmi server (hacking etc.).
i won't go far it's impossible, it's extremely difficult, , there several strong lines of defence. need objectid, random, , can made securely random, , need classes. classes , interfaces aren't sent in rmi unless enable it, , sent side channel can secure arbitrarily strongly, example two-way-authenticated https. can't those. need authorised, requires compromising server. , if that's possible, is.
Comments
Post a Comment