LINUX.ORG.RU

Ssl/Tls + mitm

 , ,


0

2

Допустим, есть сайт, который работает по https и клиент, который к нему подключается.
Как защититься от mitm, если пользователю предустановлен самоподписанный серт злоумышленника? Как в том же mitmproxy делается, например.

★★★★★

в общем и целом - никак, если злоумышленник смог свой сертификат поставить, то он и всё остальное сможет

Harald ★★★★★
()
Ответ на: комментарий от Harald

Ну вот хз. Например, как спасается Telegram нагуглил:


Первой мыслью была возможность MITM-атаки (человек посередине) и я пошел читать api протокола. Где выяснилось, что тут защита достаточно надежная: в момент первого запуска клиента создается авторизационный ключ, создается он непосредственно на клиентском устройстве с помощью протокола обмена ключами Диффи-Хелмана, но с небольшим отличием — открытый ключ сервера Telegram уже прошит в коде клиента, что исключает его подмену третьими лицами.

tazhate ★★★★★
() автор топика

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

я по крайней мере так делаю, когда в интернет-банк захожу

Harald ★★★★★
()
Ответ на: комментарий от Harald

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

Это только в твоем случае,а я скорее для массового production решения.

tazhate ★★★★★
() автор топика
Ответ на: комментарий от tazhate

ПодменяеМ клиент телеграм и mitm работает. Асимитричное шифрование не позволяет идентифицировать стороны, для этого в https засунули сертификаты

hizel ★★★★★
()
Ответ на: комментарий от hizel

Асимитричное шифрование не позволяет идентифицировать стороны

Позволяет. Через знание ключей.

для этого в https засунули сертификаты

Которые впрочем не гарантируют.

Esteban_Garcia
()
Ответ на: комментарий от tazhate

ну дак если можно в систему свой сертификат внедрить, то и клиент телеграма перепрошить можно при желании

Harald ★★★★★
()

Только альтернативный гарантированный способ передачи сертификата, например личная встреча. Любые иные способы могут привести к подмене.

imul ★★★★★
()
Последнее исправление: imul (всего исправлений: 1)
Ответ на: комментарий от imul

Только альтернативный гарантированный способ передачи сертификата, например личная встреча. Любые иные способы могут привести к подмене.

То есть мне с каждым из 5-10 тысяч юзверей лично встречаться? :)

tazhate ★★★★★
() автор топика
Последнее исправление: tazhate (всего исправлений: 1)
Ответ на: комментарий от imul

Любые иные способы могут привести к подмене.

  • Передвать ключ несколькими способами. И сравнивать.
  • Публиковать ключ заранее, очень заранее

например личная встреча.

Проблемы не решает.

Esteban_Garcia
()
Ответ на: комментарий от tazhate

Запиши видос и выложи его на ютуб, а в видосе громко и чётко прочитай по буквам все байты ключа и настоятельно порекомендуй юзверям регулярно сравнивать произнесённое с тем, что видят у себя они

как вариант для бедных сойдёт

Harald ★★★★★
()
Ответ на: комментарий от Esteban_Garcia

ну если раньше этого человека не видел, тогда да

но по ресурсам это более затратно, чем подделывать сертификат

Harald ★★★★★
()
Ответ на: комментарий от tazhate

То есть мне с каждым из 5-10 тысяч юзверей лично встречаться? :)

Как вариант. Но, можно вывернуть ситуацию наоборот. Пользователь передаёт тебе свой публичный ключ, ты им шифруешь сертификат, передаёшь ему любым способом и пользователь его расшифровывает. Теперь уже надо как-то обеспечить гарантированную передачу ключа пользователя и т.д. --всего лишь удлинение цепочки доверия. Можно передавать несколькими каналами, дробить шифровку на части и передавать части разными способами и т.д. Это поддаётся автоматизации. ps: впрочем ситуация наоборот уже описана выше про телеграмм.

imul ★★★★★
()
Последнее исправление: imul (всего исправлений: 1)
Ответ на: комментарий от Esteban_Garcia

Проблемы не решает.

Конечно не решает, двойники, актёры, грим...
Точно также как и несколько каналов передачи. Например из трёх каналов два перехвачены. Там сертификаты подменены и совпадают. Третий канал отдаёт правильный сертификат. Как пользователь решит, где и что перехвачено?

Публиковать ключ заранее, очень заранее

Ага, дидам надо на семь колен вперёд потомкам нагенерировать и подписать. Чем это отличается от верисайнов и иже с ними?

imul ★★★★★
()
Ответ на: комментарий от imul

Ага, дидам надо на семь колен вперёд потомкам нагенерировать и подписать.

неплохая идея кстати

Harald ★★★★★
()
Ответ на: комментарий от imul

Конечно не решает, двойники, актёры, грим...

Или купить человека

Как пользователь решит, где и что перехвачено?

Обнаружить несоответствие уже хорошо. А вычислить скомпрометированный канал можно. Проверить на своем ключе, либо на известных.

Ага, дидам надо на семь колен вперёд потомкам нагенерировать и подписать.

Вот смотри, иметь заблаговременно gpg ключик torproject — уже хорошо. С помощью него можно потом выкарабкаться на доверенные каналы из скомпрометированных.

Esteban_Garcia
()
Ответ на: комментарий от Esteban_Garcia

А вычислить скомпрометированный канал можно.

ок, ты вычислил, что все твои каналы скомпрометированы, твои дальнейшие действия?

Вот смотри, иметь заблаговременно gpg ключик torproject — уже хорошо.

Вот смотри, сидит у тебя троянчик и все файлы, а также нажатия клавиш есть у товарища полковника. Ответ-то правильный уже дали в первом же посте — в общем случае никак. А мы просто сейчас с тобой писькомеряньем занимаемся, у кого она инфракраснее. В любом случае упрёмся в какой-то пунктик, где придётся применить доверие.

imul ★★★★★
()
Ответ на: комментарий от imul

ок, ты вычислил, что все твои каналы скомпрометированы, твои дальнейшие действия?

в общем случае никак.

Качаю дистр, а лучше вообще малоизвестную ось, на которой линуксовые бинарники не заработают. Качаю тор/tails проверяю сигнатуру, ок --> пользуюсь.

Вообще, без глобального заблаговременного mitm всего интернета, нельзя создать такую жопу, из которой пользователь не сможет выпутаться. Главное — это суметь заметить. А подобное дороже чем клонировать человека.

Esteban_Garcia
()
Ответ на: комментарий от imul

В любом случае упрёмся в какой-то пунктик, где придётся применить доверие.

Нет, такого быть не может. Но скорее случится что упремся в пунтик, когда посчитаем что уже можно применить доверие.

Esteban_Garcia
()

Как защититься от mitm, если пользователю предустановлен самоподписанный серт злоумышленника?

Если предустановлен, т.е. находится на машине до первого подключения к твоему сайту, то никак. Если же плохой сертификат может появится после подключения, то частично проблему решит Public Key Pinning (HPKP).

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Esteban_Garcia

Жонглирование словами не меняет смысла существования пунктика на доверии. Создание жоп и выпутывание из них — древний вопрос меча и щита, зависит от подготовленности обоих сторон.

imul ★★★★★
()

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

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Esteban_Garcia

Я говорю о невозможности быть уверенным на 100%, что не исключает возможности о которой говоришь ты.

imul ★★★★★
()
Ответ на: комментарий от TheAnonymous

зелёненький сертификат, визуально не отличимый от настоящего сделать совсем не трудно, если есть возможность установить его в систему

Harald ★★★★★
()

Начнём с того, что хорошо бы не из рашки и США выходить в интернеты. Лучше всего из Исландии. Далее есть такая штука, как https client certificate authentication ( http://blogs.msdn.com/b/kaushal/archive/2015/05/27/client-certificate-authent... http://security.stackexchange.com/questions/63971/how-is-the-premaster-secret... http://security.stackexchange.com/questions/26142/do-client-certificates-prov... ) . Так вот: если ты настроишь её на клиенте и сервере, то просто так сделать mitm не получится: сервер будет слать mimt нафиг. Однако клиенту всё-равно можно будет показать поддельную страницу (но не mimt). Ещё есть такая штука https://ru.wikipedia.org/wiki/HSTS и https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning Но говно (не хром и лиса) их ещё не умеет. NoScript позволит включить их для любых сайтов.

Ещё вариант: в лисе можно легко выкинуть все СА, добавить свои.

Кстати, не забудь проверится на подлянки: https://badssl.com/

mojomojonk
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.