#Project for Distributed Systems course
##Abstract
Develop a library that implements a secure group communication service. This library should provide:
- the communication layer, using IP multicast and allowing members to join and leave the group,
- the encryption layer, to encrypt each message that is sent to the group, and decrypt it when it is received by each member
The library has to handle the group shared key ("data encryption key", as we called it during the lessons) and the problem of its distribution to the members whenever a "join" or "leave" operation is performed, to maintain forward and backward secrecy (each member can decrypt only the subset of messages that were sent during her participation to the group).
The library should be agnostic to the content of the message (text, binary...), and handle the encryption operations in a transparent way with respect to its users.
Develop an application using the above library (e.g., a secure chat), to show its mechanisms and its functionality.
Both the library and the application have to be developed using Java; use the java.security and javax.crypto functionality to perform data encryption/decryption and for creating (a)symmetric keys.