Проблемы понимания сертификатов CA

427
Engineer999

У меня неправильные представления о сертификатах CA (Certificate Authority). Независимо от того, сколько вещей я читаю, это все еще не совсем ясно.

Давайте рассмотрим пример, Боб заходит на сайт. Чтобы между Бобом и веб-сайтом происходил надежный и зашифрованный обмен данными, веб-сайт сначала выдает Бобу цифровой сертификат, который содержит открытый ключ и другую информацию.

Затем Боб будет использовать этот открытый ключ для шифрования данных, которые он отправит на веб-сайт, а веб-сайт будет использовать соответствующий закрытый ключ для его расшифровки. (Просто рассматриваю одностороннюю связь здесь)

Человек посередине может притвориться веб-сайтом и предоставить Бобу то, что он считает действительным цифровым сертификатом, и тогда все пойдет не так.

Если веб-сайт использует ЦС для этой проблемы для проверки или создания своего собственного сертификата, какое из моих утверждений является правильным, или оба являются частично правильными? :

1) Боб просто сравнивает цифровой сертификат, полученный с веб-сайта, с сертификатом от ЦС, поэтому расшифровка не выполняется, просто сравнение? В этом случае каждый отдельный сертификат CA в мире хранится на локальном компьютере Боба для сравнения? Как это произошло.

2) У Боба есть специальный сертификат CA, который используется для расшифровки сертификатов с сайтов. CA ранее зашифровал цифровой сертификат веб-сайта, который Боб хочет использовать с закрытым ключом CA. Затем Боб получает сертификат с сайта, расшифровывает его с помощью открытого ключа CA из сертификата CA. Если сертификат не может быть расшифрован, очевидно, что CA не зашифровал его и поэтому недействителен.

Заранее спасибо.

0
«Человек посередине может притвориться веб-сайтом и предоставить Бобу то, что он считает действительным цифровым сертификатом, и тогда все пойдет не так». - Первоначальное рукопожатие предотвратило бы это. Боб либо был бы подключен к законному веб-сайту, либо «человек посередине» ни в коем случае не мог переключиться с законного веб-сайта на «человека посередине», поскольку «человек посередине» не мог расшифровать данные между сервер и боб. Начальное рукопожатие также идентифицирует, кому принадлежит сертификат, сервер или «человек посередине». Ramhound 5 лет назад 0
@ Ramhound 5, я говорю только о первом рукопожатии здесь Engineer999 5 лет назад 0
Бобу придется посетить поддельный веб-сайт, чтобы получить сертификат, который, по его мнению, принадлежит веб-сайту, который он пытался посетить. Атака «человек посередине», которую вы описываете, невозможна, если Боб действительно посещает веб-сайт, который он намеревался посетить (если у него буквально не установлено оборудование «человек посередине» в сети), но это не то, что вы пытаетесь описать. Ramhound 5 лет назад 0
Программное обеспечение AV для сканирования HTTPS-трафика будет направлять весь HTTPS-трафик через свой процесс, но для этого требуется атака «человек посередине», что означает, что каждый сертификат должен быть подписан AV. Веб-сайт будет по-прежнему обслуживать правильный сертификат, но сертификат, отображаемый браузером, будет поддельным сертификатом, подписанным программным обеспечением AV. Однако это не та атака, которую вы описываете, так как программное обеспечение AV было установлено Бобом. Ramhound 5 лет назад 0

2 ответа на вопрос

0
harrymc

У вас есть недоразумение. На самом деле оба ваших сценария неверны.

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

Сертификат сверяется с CA через Интернет, а не локально, что касается действительности сертификата, извлекая из CA открытый ключ в процессе.

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

Как картинка стоит тысячи слов:

enter image description here

Источник: Понимание цифровых подписей .

«Сертификат сверяется с CA через Интернет, а не локально» - я не уверен, вы здесь говорите об OCSP? Проверка подписи всегда выполняется в автономном режиме, и единственным сетевым трафиком обычно является проверка того, был ли сертификат еще не отозван. grawity 5 лет назад 1
Чтобы добавить к этому, это также то, для чего предназначены различные локальные хранилища сертификатов (например, Trusted Root Store, Intermediate Root Store и т. Д.). Кроме того, ваше сообщение не касается SSL / TLS и / или только для сервера по сравнению с взаимной аутентификацией в SSL / TLS. thepip3r 5 лет назад 0
@ Grawity: Подпись описана выше. Проверка сертификата производится онлайн. Некоторое кэширование всегда существует, но это просто оптимизация. harrymc 5 лет назад 0
@ thepip3r: Там, где хранятся известные CA, кэшируются ли сертификаты и используется ли для связи интернет-протокол, все это только дополнения к предмету, то есть как обрабатываются сертификаты. В этом посте не запрашивался договор о * полном * предмете авторизации, который может легко заполнить книгу. harrymc 5 лет назад 0
Сертификаты на ваших компьютерах не являются "CA", они являются хранилищами сертификатов. И именно там вы или ваша организация определяете доверенные центры сертификации. Например: если вы посещаете somewebsite.com и SSL-сертификат somewebsite предоставляется Verisign, но ваш локальный компьютер не доверяет CA Verisign, выданному somewebsite.com, то ваш браузер выдаст ошибку проверки. Его вопрос специально задавался о веб-сертификатах, поэтому кажется, что по крайней мере покрытие рукопожатия SSL / TLS имеет значение. thepip3r 5 лет назад 0
0
grawity

Прежде всего, есть два шага для проверки выданного CA сертификата:

  1. Доверяет ли этот конкретный ЦС выдачу сертификатов вообще?
  2. Действительно ли этот сертификат выдан центром сертификации, на который он претендует?

Оба ваших описания почти соответствуют одной половине всего процесса, но полностью игнорируют другую. Объедините два, и вы kiiiinda на правильном пути.

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

(Я подозреваю, что некоторые из вашей путаницы вызван тем, что где - то читал, что, например, «в RSA, шифрование и подписание такое же». Забудьте это. Хотя в основном правильно в математическом смысле, это невероятно заблуждение, на практике, так как намерение является между ними совершенно противоположно. Поэтому, когда вы читаете документ, в котором говорится о подписании чего-либо, не думайте, что это означает то же самое, что и шифрование.)


«Действительно ли сертификат этого веб-сайта был выдан СА, на который он претендует?»

Вариант № 2 почти правильный об этом. Используются как минимум два сертификата - один, представляющий веб-сайт («сертификат сервера»), и один, представляющий сам CA (называемый «сертификат CA», или корневой сертификат).

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

(На практике цепочка обычно немного длиннее и состоит как минимум из трех сертификатов, но механизм все тот же; каждый подписывает следующий в цепочке.)

Но откуда Боб получает этот «специальный сертификат CA»? Увидеть ниже.

"Доверяют ли этот ЦС выдачу сертификатов вообще?"

Полученный сертификат CA сравнивается со списком «доверенных корней», хранящихся на локальном компьютере.

Теперь это похоже на то, что вы описываете в варианте № 1, за исключением того, что компьютер не хранит все сертификаты, выданные центрами сертификации - вместо этого он хранит только сертификаты, принадлежащие самим центрам сертификации, то есть «специальные сертификаты СА» в вашем варианте № 1.

В большинстве систем установлено примерно 50–100 «корневых сертификатов» - не совсем «каждый ЦС в мире», но он охватывает многие крупные и мелкие компании. (Это стоит совсем немного, чтобы быть включенным в список.)

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