Первое и самое главное - для начала определите для себя что такое 'безопасность'! Это комплексное понятие включает в себя не только сетевые протоколы и интерфейс пользователя но и набор правил, которым должны следовать пользователи (та же присловутая бумажка с паролем на мониторе).
Чтобы передать сообщение от одного пользователя другому, необходимо:
* первоначальная аутентификация
Вам нужно как то буковки на экране ассоциировать с конкретным человеком, и это мега проблема, потому как универсального решения не существует, точнее существует - это телефонный номер, именно поэтому современные менеджеры привязывают аккаунт пользователя к номеру телефона. Их нельзя генерировать бесконечно для спама (это стоит какие то деньги для пользователя) и при этом он уже есть почти у каждого человека на планете (кроме совсем уж бедные страны но даже там инфраструктура хоть какая то да есть)
Соответственно вам нужна инфраструктура (договоры с провайдером, софт и физические сервера либо оплаченные облачные услуги) которая будет обеспечивать аутентификацию по тому же sms. При наличии приложения для телефона некоторые этапы можно пустить но это ненадежно, ибо приложение взламывается. Первоначальную sms выслать придется так или иначе.
Альтернатива - необходимо чтобы был какой то центр регистрации аккаунтов (если у вас организация - это самый логичный вариант) где кто то самый главный сможет сказать - 'вот этот человек и есть вот эти буковки на экране, я гарантирую'.
Существует gpg стандарт когда пользователи могут обмениваясь gpg ключами (при личной встрече например, через qr-код) подтверждаю что этот пользователе является тем о чем заявляет. Но как вы понимаете личная встреча все равно нужна. Я не видел ни одного менеджера, где бы этот процесс был как то социализирован, грубо гворя вы бы видели все подтверждения от других пользователей (в виде дерева доверия и подтверждения). Но догадываюсь это было бы слишком сложно для классического пользователя, хотя наиболее верно для децентрализованного месседженера.
Существуют плагины для различных jabber и почтовых клиентов. Вроде бы был плагин для браузера, который не только управлял этими подписями но и позволял налету расшифровывать сообщения на странице.
* авторизация
Это проблема напрямую вытекает из способа первоначальной аутентификации и хранения ее результатов
Самое простое - парольная, сервер хранит все необходимое для работы, по вводу пароля выдается временный токен приложению и все довольны, приложение по какому то условию удаляет токен и требует повторного ввода пароля. Если вы ратуете за безопасность, вы не должны пользоваться какими то третьими лицами в качестве посредника авторизации (googl/facebook/вася пупкин) это должен быть ваш сервис.
Если вы храните все необходимые данные (ключи gpg например) локально, вы должны всеравно как то защитить и от доступа третьим лицам, пароль, биометрическая аутентификация (отпечатки пальцев) и т.п. но ц каждого решения есть свой уровень защищенности (стоимость взлома)...
* Коммуникация и хранение данных
Все сообщения должны быть как то доставлены. Они должны где то храниться, пока участники не онлайн.
Если правильно - все должно быть организовано по той же схеме gpg, у пользователей хранятся ключи, а сервер тупо труба для данных и хранит все зашифрованным.
НО клиенты не хотят заморачиваться с хранениме ключей, они хотят кнопочку нажать и чтобы было хорошо, а значит сервер занимается хранением этих ключей и все шифрование становится абсолютно бессмысленным (кроме собственно низкого уровня, но там ключи шифрования можно выдавать временно как это происходит с https и совсем незаметно для пользователя)
* Программное обеспечение должно быть адекватным системе безопасности
Тут очень много нюансов. От кого вы защищаете информацию. Классическая ошибка например - важную информацию нельзя отправлять в сервисы, которые эту информацию могту подглядеть (помнится мастерключ криптовалютного аккаунта какой то мобильный кошелек по привычке отправлял как и любое текстовое сообщение, на сервер гугла по проверке правописания, со всеми вытекающими от сюда последствиями, кто то потерял порядка 80к денег).