p.s. не храните на сервере пинкод/пароль пользователя, иначе все остальное в этом случае бессмысленно, зачем тогда мучиться то
Тут возможно на стороне сервера сделать проверку...если какое-то время "не онлайн" - то доп. пин-код запрашивать(который на стороне сервера будет храниться) и в случае "неудачи" - просто не отдавать данные с сервера(даже шифрованные)...
Функционал с точки зрения usability не должен отличаться от типовых месседженеров, за исключением запрета забыть пароль от ключей шифрования или потери самих ключей.
барузер пользователя почти всегда разблокирован, поэтому если мы защищаемся от 'доступ злоумышленника к рабочему месту', то дополнительный уровень шифрования имеет смысл
база данных есть в браузере, штатная web storage api.
еще раз, сервер формально не очень нужен, он нужен только на старте подключения пользователя к чату - webrtc signaling server, и stun/turn сервера для тех кого заперли за NAT, но этих публичных даже полно, начиная с гугловского.
если вам нужно убедить клиентов в безопасности вашего клиента и то что он не крадет приватную информацию
как и всегда, главная проблема - обмен контактами между пользователями (ключами шифрования) требования к каналу передачи тут наиважнейшие, и для этого рекомендуется вообще личная встреча.
Если у тебя нет https и ты хочешь защититься от mitm, то тогда такое решение как сейчас не подойдёт, так как злоумышленник посередине может подменить js, чтобы параллельно отправлять незашифрованный текст.
вектор напора мочи в головах владельцев/модераторов ресурса нынче непредсказуем, можно попать под молотки
Без сервера для синхронизации сообщений придётся быть всем в "онлайне" или хотя бы на какое-то время иметь соединение...с сервером больше "удобств"...