Что мешает хакерам притворяться сервером / клиентом с открытыми ключами в асимметричном шифровании?

При асимметричном шифровании открытые ключи могут использоваться для шифрования сообщений, отправленных на устройство с соответствующим закрытым ключом. Я понимаю, что это не позволяет снифферам узнать содержание сообщения, но учтите это:
Что мешает хакеру использовать открытый ключ для шифрования сообщений и притворяться кем-то, кем он не является? Допустим, я совершаю покупки на Amazon, и хакеру удалось захватить открытый ключ Amazon, когда Amazon обменялся им со мной. Разве этот хакер не мог притвориться мной, просто изменив заголовки своих пакетов, чтобы они выглядели так, как будто они пришли с моего компьютера? Я знаю, что этого не происходит, так что мне не хватает?

Вы имеете в виду ssl-соединение между вашим браузером и веб-сервером Amazon?

sweting 30.10.2018 18:00

SSL асимметричен (он использует открытый и закрытый ключи), поэтому этот вопрос будет относиться к SSL. Если не ошибаюсь, TLS тоже использует похожий протокол.

Caleb Bertrand 30.10.2018 19:22

SSL и TLS одинаковы. SSL - старое название. SSL не только асимметричен. Это гибридное шифрование. Вначале асимметричное шифрование используется для обмена ключами для симметричного шифрования.

sweting 31.10.2018 07:32
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
Один-единственный вредоносный запрос может нанести ущерб вашему бизнесу. Уязвимости вашего кода могут привести к:
1
3
204
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Пожалуйста, ознакомьтесь с протоколом TLS Handshake, в котором четко указано, что происходит в TLS: https://de.wikipedia.org/wiki/Transport_Layer_Security#TLS_Handshake_Protocol

  1. У вас нет закрытого или открытого ключа при подключении к Amazon, потому что вы не аутентифицируетесь с помощью клиентского сертификата.

  2. Если хакер украдет ваш открытый ключ, это не проблема, потому что ваш открытый ключ можно использовать только для отправки зашифрованных сообщений на ты. Только ты может расшифровать эти сообщения, потому что только ты имеет соответствующий закрытый ключ. Вот в чем суть асимметричной криптографии!

Мне очень жаль, я не имел в виду свой открытый ключ. Я обновил свой пост и исправил опечатку. Я думал об открытом ключе Amazon. Я понимаю, что открытые ключи используются только для шифрования. Однако это не мешает хакеру зашифровать сообщение и отправить его на Amazon, как если бы это был я. (Я просто использую Amazon в качестве гипотетического примера, я не знаю точно, какой протокол конкретно использует Amazon) Что мешает этому хакеру отправлять информацию, такую ​​как «добавить этот товар в корзину», в Amazon с использованием открытого ключа Amazon?

Caleb Bertrand 01.11.2018 21:26

Что ж, я думаю, что теперь на ваш вопрос ответили остальные :)

vnthn 01.11.2018 23:49

Say I am shopping on Amazon, and a hacker managed to capture amazon's public key when Amazon exchanged it with me.

Данные, зашифрованные с помощью открытого ключа Amazon, можно расшифровать только с помощью закрытого ключа Amazon.

Точно. Все, что нужно сделать хакеру, - это подделать сообщение типа «добавить то-то и то-то в мою корзину», зашифровать его открытым ключом Amazon и отправить его на Amazon для расшифровки (что может сделать Amazon, потому что только у них есть закрытый ключ, как вы указали), возможно, редактирование заголовков пакетов, чтобы они выглядели так, как будто они пришли с моего IP-адреса и находились в диапазоне моего сеанса и т. д.

Caleb Bertrand 01.11.2018 21:30

Есть что-нибудь, что мешает хакеру сделать это?

Caleb Bertrand 01.11.2018 21:32

Да не пойдет. Злоумышленнику нужны открытый и закрытый ключи Amazons и некоторая информация, которая инициализируется при запуске соединения.

Terry Carmen 01.11.2018 21:39

Зачем хакеру секретный ключ Amazons? В классической ситуации, когда Боб отправляет Алисе сообщение, зашифрованное с использованием открытого ключа Алисы, не мог ли Джек, третья сторона, так же легко отправить Алисе сообщение с тем же открытым ключом? Джеку не понадобится закрытый ключ Алисы, поскольку он используется для расшифровки.

Caleb Bertrand 01.11.2018 21:45

@CalebBertrand Первым шагом в обмене данными TLS является согласование ключей сеанса между конечным пользователем и сервером - эти ключи сеанса используются для шифрования и целостности сообщений (обычно используется алгоритм HMAC). Таким образом, каждое сообщение от легитимного клиента подписывается этим ключом целостности сообщения, что не позволяет злоумышленнику вводить другие данные. TLS также использует порядковые номера сообщений для предотвращения атак повторного воспроизведения - порядковые номера необходимо увеличивать.

TheGreatContini 01.11.2018 21:45

«Данные, зашифрованные с помощью открытого ключа Amazon, можно расшифровать только с помощью закрытого ключа Amazon». - Это чрезмерное упрощение. TLS состоит из двух частей: одна - настройка сеанса, а другая - безопасная связь во время сеанса. Плакат и спрашивает о последнем, и это не имеет ничего общего с криптовалютой с открытым ключом. Шифрование с открытым ключом выполняется только при первоначальном рукопожатии, которое устанавливает сеанс.

TheGreatContini 01.11.2018 22:39
Ответ принят как подходящий

a hacker managed to capture amazon's public key

Открытый ключ Amazon является публичным. Все это знают. Тот, который был выпущен 3 мая 2018 года, начинается со слов «A9 F4 4A 9B 29 84 20 A7 53 FF BA 01 B5 1E 0C 2A A7 53». Вся суть криптографии с открытым / закрытым ключом заключается в том, что открытый ключ не является секретом. Так что захват открытого ключа не важен.

Ваш вопрос не в том, чтобы маскироваться под Amazon (то есть иметь дело с ключами Amazon). Это о том, чтобы маскироваться под вас на Amazon. Это совсем другая ситуация. Вы не идентифицируете себя в Amazon с помощью сертификата (так называемого «клиентского сертификата»), поэтому сертификаты и криптография с открытым / закрытым ключом не имеют к этому никакого отношения. Да; любой может отправить сообщение в Amazon, зашифрованное с помощью своего открытого ключа, но не так можно доказать, что вы такой, какой вы себя называете.

Вместо этого вы идентифицируете себя в Amazon с помощью учетных данных, обычно имени пользователя и пароля. Когда вы это делаете, Amazon возвращает вам токен сеанса, который представляет собой просто большое случайное число, которое сопоставлено вам в таблице базы данных (или иногда токен сеанса представляет собой зашифрованную информацию о сеансе, поэтому база данных не нужна) . После аутентификации вы продолжаете передавать токен сеанса обратно в Amazon, чтобы сказать: «Вы уже знаете меня и доверяете ему».

Так что, если кто-то захватит токен сеанса? Это было бы большим делом. Это абсолютно допустит именно то, что вы описываете. Токен сеанса должен быть защищен до тех пор, пока он действителен. Мы защищаем его, когда передаем его Amazon с помощью TLS, который «не позволяет снифферам узнать содержимое сообщения», поэтому злоумышленники, надеюсь, не могут обнаружить идентификатор сеанса.

Существует множество атак с целью кражи идентификатора сеанса, широко называемых «захватом сеанса». Одним из наиболее известных был Firesheep, который полагался на незащищенные (HTTP) сеансы. Однако существуют более продвинутые атаки против HTTPS, такие как ПРЕСТУПЛЕНИЕ и НАРУШЕНИЕ. Улучшения в TLS позволили смягчить различные известные атаки, но всегда возможно появление новых.

Теперь, когда я думаю об этом, я не рассматривал пароли и имена пользователей. Вот чего мне не хватало. Пароли могут быть отправлены безопасно с использованием открытого ключа сервера, и если учетные данные действительны, то можно с уверенностью выполнить рукопожатие TLS. Спасибо, это ответ на мой вопрос!

Caleb Bertrand 01.11.2018 22:15

What keeps a hacker from using the public key to encrypt messages and pretend to be someone he\she is not? Say I am shopping on Amazon, and a hacker managed to capture amazon's public key when Amazon exchanged it with me. Couldn't this hacker pretend to be me by simply modifying the headers of his packets to look like they came from my computer?

Очень хороший вопрос. TLS предотвращает это, создавая ключи сеанса между клиентом и сервером во время протокола установления связи. Есть два типа ключей: один для шифрования (обычно AES) и один для целостность сообщения / аутентификация сообщения (MAC) (обычно HMAC). Все коммуникации во время сеанса шифруются симметричным ключом шифрования и MAC-адресом связаны с MAC-ключом. Любые данные, которые не подписаны надлежащим образом с помощью ключа MAC, не принимаются сервером. Таким образом, только тот, у кого есть эти ключи, может связываться с сервером для этого сеанса.

Таким образом, вопрос сводится к тому, как злоумышленник может определить ключи шифрования и MAC, которые установлены во время первоначального установления связи TLS. Обратите внимание, что во время рукопожатия сервер предоставляет свой открытый ключ через сертификат клиенту, а клиент проверяет действительность сертификата, в том числе его принадлежность к домену, заявленному в сертификате. Это позволяет клиенту проверять, что он обращается к нужному серверу, предполагая, что никто не может обойти PKI (т. Е. Органы сертификации делают правильные вещи, и никто не может взломать шифрование с открытым ключом). Теперь разные клиенты могут устанавливать разные сеансы с сервером, но все они выполняются с использованием закрытого ключа, сгенерированного каждым клиентом и однозначно известного каждому клиенту. Таким образом, каждый клиент настраивает свой сеанс уникальным образом, используя ключ, который известен только им и никому другому.

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

Другие вопросы по теме