Я создал программу обмена личными сообщениями и хотел бы убедиться, что в моем использовании криптографии нет ничего глупого.
Я любитель и ничего не для производства.
Я благодарю вас заранее.
Обмен сообщениями полностью зашифрован с помощью AES-OCB.
Сеансовый ключ обменивается следующим образом:
В начале загружается закрытый ключ и генерируется открытый ключ.
Сервер отправляет свой открытый ключ клиенту.
Клиент проверяет открытый ключ сервера с помощью файла know_host.
В этом файле адреса узлов хранятся в хешированном виде (sha256) с их открытым ключом (sha256).
Клиент проверяет правильность полученного открытого ключа, в противном случае отпечаток sha256 открытого ключа отображается для проверки пользователем.
Клиент генерирует 128-битный сеансовый ключ и шифрует его открытым ключом сервера.
Клиент отправляет на сервер: зашифрованный сессионный ключ, свой публичный ключ, подпись RSASSA-PSS (sha256) сессионного ключа.
Сервер проверяет личность клиента с помощью собственного файла know_host.
Он расшифровывает сеансовый ключ. Он сверяет подпись сеансового ключа с открытым ключом клиента.
Обе стороны аутентифицированы и имеют сеансовый ключ, начинается нормальная связь.