Как отправить пароль надежно по HTTP?

В дополнение к ответу Brian Phillips: существует также мерзавец-cvsserver , который функционирует как сервер CVS, но на самом деле репозиторий мерзавца доступа..., но он имеет некоторые ограничения.

111
задан Shoban 17 October 2009 в 21:13
поделиться

3 ответа

Он будет прыгать, если "флаг равенства" (также известный как «нулевой флаг») в регистре FLAGS . Это устанавливается в результате арифметических операций или таких инструкций, как TEST и CMP .

Например: (если память мне не изменяет, это правильно:

62
ответ дан 24 November 2019 в 03:05
поделиться

Вы можете использовать схему ответа на запрос. Скажем, и клиент, и сервер знают секрет S. Тогда сервер может быть уверен, что клиент знает пароль (не раскрывая его):

  1. Сервер отправляет клиенту случайное число R.
  2. Клиент отправляет H (R, S) обратно на сервер (где H - криптографическая хеш-функция, такая как SHA-256)
  3. Сервер вычисляет H (R, S) и сравнивает его с ответом клиента. Если они совпадают, сервер знает, что клиент знает пароль.

Изменить:

Здесь есть проблема с актуальностью R и тем фактом, что HTTP не имеет состояния. Это можно сделать, если сервер создаст секрет, назовем его Q, который знает только сервер . Затем протокол выглядит следующим образом:

  1. Сервер генерирует случайное число R. Затем он отправляет клиенту H (R, Q) (который не может быть подделан клиентом).
  2. Клиент отправляет R, H (R, Q), вычисляет H (R, S) и отправляет все это обратно на сервер (где H - криптографический хэш функция, такая как SHA-256)
  3. Сервер вычисляет H (R, S) и сравнивает его с ответом клиента. Затем он берет R и вычисляет (снова) H (R, Q). Если версия клиента H (R, Q) и H (R, S) совпадает с повторным вычислением сервера, сервер считает клиента аутентифицированным.

Обратите внимание, поскольку H (R, Q) не может быть подделано с помощью клиент, H (R, Q) действует как cookie (и, следовательно, может быть реализован как cookie).

Другое изменение:

Предыдущее изменение протокола неверно, поскольку любой, кто наблюдал H (R, Q) похоже, может воспроизвести его с правильным хешем. Сервер должен помнить, какие R уже не актуальны. Я CW

14
ответ дан 24 November 2019 в 03:05
поделиться

HTTPS настолько мощный, потому что использует асимметричную криптографию. Этот тип криптографии не только позволяет вам создать зашифрованный туннель, но и убедиться, что вы разговариваете с нужным человеком, а не с хакером.

Вот исходный код Java, в котором для связи используется асимметричный шифр RSA (используемый PGP): http://www.hushmail.com/services/downloads/

1
ответ дан 24 November 2019 в 03:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: