Instant Messaging Application Requirements ========================================== Overview -------- Your team is to implement the protocol you designed and presented for PS4. You may implement a "stripped-down" version of your protocol if you wish, but you must provide authentication, integrity, and confidentiality of user and server messages (if a server is present). Users must be authenticated using only a username and password. Platform & Interface -------------------- Your implementation must be in Java and the client portion must function under the Java 6 Runtime Environment/SDK on your Linux server. Your IM client must provide a console interface which can function over an SSH connection. In this interactive, text-based interface, your client must accept the following commands: list send USER MESSAGE the 'list' command should display all users currently signed into the system. The 'send' command sends the user USER a message, MESSAGE. If a server is used, the client should read server connection information (IP, ports, etc) from a configuration file and upon starting, it should immediately attempt to connect to the server. Users should be prompted at startup for their username and password. You may use third-party libraries to implement this text interface, so long as you provide all such libraries with your submission (and do not break copyright law in doing so). Also any interface must operate properly over an ssh connection without the need for special tunnels or complicated terminal settings. Misc ---- The security features of your protocol implementation will provide you with more base points. In particular, if you support resistance to denial of service attacks, end-points hiding, perfect forward secrecy, protection for weak passwords, and/or message secrecy against a malicious server, you will gain more points.