Ненужное ненужно или все-таки имеет право на существование в свете последних событий с принятыми законами...
Имеется: Клиент (Browser) и сервер.
Требуется: Обеспечить защифрованную передачу данных между клиентом и сервером с помощью GPG.
Описание:
Пользователь открывает сайт и получает страничку с openpgp.js скриптом и публичным ключом сервера.
В фоновом режиме генерируется пара публичный/приватный ключ клиента и записывается в локальное хранилище браузера.
После генерации пары ключей, шифруем публичный ключ клиента и отсылаем на сервер.
Таким образом мы можем шифровать данные до отправки и рассшифровывать после получения.
Например:
1. Шифруем строку «Hello Server!» публичным ключом сервера в браузере пользователя и отправляем данные на сервер.
2. Получаем зашифрованное сообщение и расшифровываем его приватным ключом сервера.
3. Если данные успешно расшифрованы, готовим ответ «Hello Username» и шифруем публичным ключом пользователя.
4. Отправляем зашифрованное сообщение пользователю.
5. Пользователь получает сообщение и расшифровывает его приватным ключом из локального хранилища браузера.
Весь процесс происходит под капотом. Т.е. для пользователя все максимально прозрачно.
Вопрос остается с парольной фразой для приватного ключа.
Чтобы пользователю не нужно было постоянно вводить пароль.
Во избежание компроментации, можно создавать новую пару ключей каждые n-дней.
Или использовать GPG без пароля нельзя?
И еще вопрос относительно производительности.
Сильно ли скажется постоянная шифровка/расшифровка данных со стороны пользователя?
Хотя принимая во внимание современный веб и его потребности в ресурсах...
P.S. TLS никуда не девается. Просто доп. защита при передаче пакетов между клиентом и сервером.
Если не в том разделе (может веб-разработка?), перенесите пожалуйста.