Основной проблемой мне кажется является обмен ключами, а точнее аутентификация пользователя. В вашем случае, как мне кажется, для аутентификации всех авторизованных клиентов нужна либо доверенная третья сторона, для хранения сертификатов; либо владение некоторой общей секретной информацией заранее, до начала общения по незащищенному каналу; либо прямой доступ друг к друг, без сервера, для минимизации возможности компрометации канала связи.
Как я это вижу, хотя, конечно, могу ошибаться.
1. Доверенная третья сторона должна публиковать сертификаты либо открытые ключи клиентов. Можно использовать ssl.
2. Общая информация, это как раз тот ключ симметричного шифрования, либо закрытый ключ ассиметричного, либо любая другая секретная информация, доказательство владением которой позволит аутентифицировать клиента.
3. Альтернативный канал связи который позволит обменяться авторизированным пользователям ключами без посредника в виде сервера.
А далее пользователь просто шифрует информацию и размещает на сервере.