Принцип работы
Сквозное шифрование работает по следующему принципу: сервер генерирует пару ассиметричных ключей, приватный и публичный. Публичный используется для шифрования, приватный для расшифрования. Сервер отсылает клиенту свой публичный ключ, клиент в свою очередь шифрует этим ключом пароль, который он сгенерировал ранее и отсылает его серверу. Сервер расшифровывает пароль приватным ключом и всё, теперь обмен информацией между клиентом и сервером происходит путём симметричного шифрования.
Схема
1. Генерация пары ассиметричных ключей на сервере
2. Отослать публичный ключ клиенту
3. Клиент шифрует свой обычный ключ, публичным ключом и отсылает серверу
Зачем нужно симметричное шифрование?
Дело в том, что при помощи ассиметричных ключей можно зашифровать не так много данных, до 128 символов, как я помню. Именно поэтому после того, как две стороны знают симметричный ключ, они начинают использовать его, потому что шифрование/дешифрование происходит быстрее и нет лимита в N символов.
Какие алгоритмы использовать?
На данный момент используются следующие алгоритмы: RSA (для ассиметричного шифрования), AES (для симметричного). Размер ключей 4096 RSA и 256 для AES. Можно еще использовать протокол Диффи - Хеллмана (ECDSA), но он не так сильно проверен, как RSA.