Что мешает кому-либо перехватить большую часть / все мое общение и подделать сертификат?
Даже если я хочу получить сертификаты от сервера ключей, посредник может перехватить мой запрос и отправить мне поддельные сертификаты.
Если я хочу загрузить образ программного обеспечения с зеркала и аутентифицировать это программное обеспечение с помощью ключей и подписи, предоставленных на исходном веб-сайте программного обеспечения, как я могу быть уверен, что загружаю ключи и подпись, предоставленные веб-сайтом? Может быть, кто-то перехватил эти загрузки и прислал мне поддельную подпись и ключи.
Это проблематично для людей, живущих в диктаторском государстве, потому что их правительство может сделать это легко.
Человек посередине (MITM) атаки, вероятно, являются наиболее жизнеспособным средством поражения криптосистем с открытым ключом. Вы можете предотвратить MITM, сверив сертификаты с информацией из независимый второй канал. К сожалению, такая проверка не всегда проста или надежна.
В случае систем, не имеющих центральных органов сертификации (например, PGP / GnuPG), вторым каналом должен быть телефонный разговор или (что еще лучше) личная встреча. Во время этого разговора владелец сертификата доказывает вам свою личность, а также доказывает, что у вас есть точная копия его сертификата открытого ключа. Последнее обычно подтверждается проверкой того, что отпечаток пальца (криптографически стойкий хеш) сертификата, который вы держите, соответствует отпечатку пальца сертификата владельца (который он / она зачитает вам).
Поскольку такая строгая проверка часто бывает обременительной или невозможной, PGP также предусматривает то, что называется сеть доверия. Вкратце: люди подписывают ключи, которые, по их убеждению, являются подлинными (надеюсь, после их личной проверки, как описано ранее), и распространяют эти ключи повсюду. Затем, если я получаю ключ, подписанный кем-то, кому я доверяю (то есть кем-то из моей сети доверия), я могу быть уверен, что ключ подлинный.
Если, с другой стороны, я получаю сертификат ключа без доверенных подписей, и мне трудно или невозможно лично проверить сертификат у его владельца, то я нахожусь в неопределенном положении. Доверять этому ключу или нет? Ответ будет зависеть от ряда факторов, в том числе от того, откуда я взял ключ и для чего я его использую. Решение может быть непростым. Например, я бы с некоторым подозрением посмотрел на любой веб-сайт, который предоставляет и подпись, и сертификат, необходимые для проверки той же подписи, поскольку эта пара файлов могла быть помещена туда кем угодно. У меня было бы немного больше уверенности в подписи и сертификате, если бы я получил их из двух отдельных независимых мест (например, с веб-сайта и с открытого сервера ключей, соответственно).
В системах с Центры сертификации (CA) действующий как доверенные третьи стороны (как и тот, который используется в Интернете для аутентификации сертификатов хоста SSL / TLS), независимый второй канал, используемый для проверки, - это хранилище сертификатов открытого ключа CA на вашем локальном ПК. Предполагается, что локальное хранилище ключей CA на вашем ПК инициализируется и обновляется только надежными средствами, так что у вас (надеюсь) высокий уровень уверенности в подлинности CA и ключей. (Обратите внимание, что вы также уверены, что все эти центры сертификации в вашем хранилище ключей фактически заслуживает доверия. Обоснованность этой уверенности - вопрос другой.)
Когда веб-сайт представляет свой сертификат хоста вашему браузеру во время установки соединения SSL / TLS, браузер проверяет, был ли сертификат подписан центром сертификации в локальном хранилище CA вашего ПК. [Для простоты я игнорирую цепочку сертификатов, которая ничего не добавляет к этому обсуждению.] Для того, чтобы MITM успешно подделал веб-сайт с SSL-аутентификацией в ваш браузер, он должен был бы получить свой поддельный сертификат хоста, подписанный одним из центров сертификации в вашем местный магазин CA. Это может произойти двумя способами. Если какое-то вредоносное ПО вторглось в ваш местный центр сертификации, ваш браузер может быть обманут поддельным сертификатом, подписанным поддельным центром сертификации. В качестве альтернативы, если законный центр сертификации (например, Verisign или Thawte) обманом подписал поддельный сертификат, ваш браузер примет его как настоящий, и вы мало что сможете с этим поделать. Вы можете попробовать удалить из своего хранилища CA все те CA, о которых известно, что они подписали плохие сертификаты, но тогда ваш браузер начнет отклонять все полностью действительные сертификаты, подписанные этими CA. Не хорошо.
Таким образом, MITM может быть успешным только в том случае, если процесс проверки ключа / сертификата нарушен. К сожалению, часто либо слишком сложно строго проверить сертификат (в случае PGP / GnuPG), либо процесс может быть отравлен различными способами (в случае доверенных сторонних систем).
Вот почему веб-браузеры уделяют такое внимание самоподписанным сертификатам SSL. Браузеры содержат открытые ключи для (надеюсь) доверенных центров сертификации, и если сертификат, который вы принимаете, подписан одним из них, вы можете быть уверены, что он не был подделан.
Для PGP такой централизованной системы нет, но есть сеть доверия система. По-прежнему существует проблема первоначального обмена, поэтому люди, которые действительно увлекаются PGP, так рады сеансы подписания ключей. Но вы правы, что при авторитарном государстве это сложно.