Этапы работы
Пакеты имеют вид:
* Шифрованный: encrypt#L3eNlEq3LmbHEtC7Wml3uRQQq
- encrypt
- показатель, что сообщение зашифрованно ключом сервера (см.)
- далее пакет имеет то же самое, что и нешифрованный пакет
* Нешифрованный (после регистрации): none#sender#2025_07_01_20_00#8t9SFvRgcV6jOldEbWyq6LCMg#someuser#o0H2FoSOmhG
- sender
- ник отправителя
- 2025_07_01_20_00
- время подписи
- 8t9SFvRgcV6jOldEbWyq6LCMg
- строка с датой подписанная ассиметричным ключом пользователя
- someuser
- ник получателя
- o0H2FoSOmhG
- шифрованное сообщение
* При регистрации: reg#nick#rk4TNhaThMoRUPZEj6vJHY3FZ
- nick
- ник
- rk4TNhaThMoRUPZEj6vJHY3FZ
- ассиметричный публичный ключ пользователя
Ключ сервера - один из пары ключей, которые заранее сгенерированны и поставляются вместе с сервером и клиентом (для защиты от MITM)
- Регистрация в системе
- Передача публичного ключа (для подписи) и ника серверу.
- Принятие данных сервером, сохранение в ....
- Сервер отвечает "accepted"
- Вычисление общего симметричного ключа по Диффи-Хеллману
- Передача