Делает ли использование шифрования канала (https) избыточным хеширование секретного ключа?

Я разрабатываю веб-службу, к которой подключаются клиенты, чтобы получить некоторые личные данные. Каждый клиент имеет уникальный идентификатор и секретный ключ (сгенерированный сервером), которые отправляются в качестве параметров веб-службе для аутентификации. Кроме того, все коммуникации осуществляются по протоколу HTTPS.

Я также планирую использовать HMAC-SHA256, чтобы не отправлять секретный ключ по сети.

Однако мне интересно, является ли это строго необходимым. Поскольку HTTPS дает мне безопасный канал между клиентом и сервером, почему я действительно должен пересылать секретный ключ по этому каналу?

Единственная причина, которую мне удалось придумать, это то, что несведущий разработчик может добавить сервис в будущем и не отклонять не-HTTPS соединения, поэтому хеширование секретного ключа — это своего рода страховка от реалий разработки корпоративного ПО, лишняя строка защиты, если хотите.

Я упускаю что-то более существенное? Является ли это реальной уязвимостью, которой может воспользоваться какой-то вектор атаки?


person Elad    schedule 17.05.2011    source источник


Ответы (2)


  • Злоумышленник устанавливает поддельный доверенный сертификат в браузер и перехватывает сеанс.
  • Ссылка на ваш сайт отправляется, но перенаправление на SSL перехватывается и начинается не-SSL сессия.

Есть и другие, но история такова: SSL сложен и часто подвергается атакам изобретательными способами. Если ваше соединение защищено, то хеширование не имеет большого значения по сравнению со сложностью кода для людей и затратами процессорного времени. Однако, если сеанс SSL скомпрометирован, вы все равно сохранили свой ключ. Подобно тому, как мы хэшируем пароли в базах данных, несмотря на то, что никто из нежелательных лиц не должен иметь к ним доступ, было бы разумно хешировать ваш ключ, несмотря на использование SSL.

person Jeff Ferland    schedule 17.05.2011

канал может быть безопасным, но это ничего не говорит вам о конечных точках: в зависимости от рассматриваемого браузера (и его подключаемых модулей/расширений/...), ваш key вполне может оказаться в дисковом кеше где-нибудь на компьютере пользователя и оставаться там до конца вечности.

Это не очень интересная уязвимость... до тех пор, пока вы не поймете, что различные вредоносные программы уже рыскают по дискам в поисках чего-нибудь ценного - и при нынешних темпах некоторые из ваших пользователей будут заражены (если только на вашем сайте всего двадцать пользователей ;)).

Итак: не выбрасывайте довольно мощный криптомеханизм, чтобы сэкономить несколько циклов процессора; вот это потенциально опасная микрооптимизация ИМНШО.

person Piskvor left the building    schedule 17.05.2011