Аутентификация SSL с Сертификатами: Сертификаты должны иметь имя хоста?

Быстрая версия вопроса

Gmail, TD (канадский Банк), Royal Bank (канадский Банк) все использование ssl. Когда Вы осматриваете их сертификаты, они все имеют

Common Name (CN)   mail.google.com

Или в более общем плане:

Common Name (CN)   

Это необходимо для предотвращения человека в средних нападениях?

Сводка

JBoss позволяет клиентам и серверам аутентифицировать сертификаты использования и ssl. Одна вещь, которая кажется странной, состоит в том, что Вы не обязаны давать свое имя хоста на сертификате.

Я думаю, что это означает, находится ли Сервер B в Вашей базе доверенных сертификатов, Разъедините B, может симулировать быть любым сервером, который они хотят.

(И аналогично: если Клиент B находится в Вашей базе доверенных сертификатов...),

Я пропускаю что-то здесь?

Шаги аутентификации

(Сводка Wikipeida Page)

Client                                                  Server
=================================================================================================
1) Client sends Client Hello
        ENCRIPTION: None
        - highest TLS protocol supported
        - random number
        - list of cipher suites
        - compression methods

                                                        2) Sever Hello
                                                                ENCRIPTION: None
                                                                - highest TLS protocol supported
                                                                - random number
                                                                - choosen cipher suite
                                                                - choosen compression method

                                                        3) Certificate Message
                                                                ENCRIPTION: None
                                                                -

                                                        4) ServerHelloDone
                                                                ENCRIPTION: None

5) Certificate Message
        ENCRIPTION: None

6) ClientKeyExchange Message
        ENCRIPTION: server's public key => only server can read
                => if sever can read this he must own the certificate
        - may contain a PreMasterSecerate, public key or nothing (depends on cipher)

7) CertificateVerify Message
        ENCRIPTION: clients private key
        - purpose is to prove to the server that client owns the cert


                        8) BOTH CLIENT AND SERVER:
                                - use random numbers and PreMasterSecret to compute a common secerate


9) Finished message
        - contains a has and MAC over previous handshakes
                (to ensure that those unincripted messages did not get broken)


                                                        10) Finished message
                                                                - samething

Разъедините знает

  • У клиента есть открытый ключ для отправленного сертификата (шаг 7)

  • Сертификат клиента действителен потому что также:

    • это было подписано CA (verisign)
    • это было самоподписано, НО это находится в базе доверенных сертификатов сервера
  • Это не атака с повторением пакетов, потому что, по-видимому, случайное число (шаг 1 или 2) отправляется с каждым сообщением

Клиент знает

  • Сервер имеет открытый ключ для отправленного сертификата (шаг 6 с шагом 8)

  • Сертификат сервера действителен потому что также:

    • это было подписано CA (verisign)
    • это было самоподписано, НО это находится в базе доверенных сертификатов клиента
  • Это не атака с повторением пакетов, потому что, по-видимому, случайное число (шаг 1 или 2) отправляется с каждым сообщением

Потенциальная проблема

  • Предположим, что база доверенных сертификатов клиента имеет сертификаты в ней:

    • Сервер A
    • Сервер B (malicous)
  • Сервер A имеет имя хоста www.A.com

  • Сервер B имеет имя хоста www.B.com

  • Предположим: клиент пытается соединиться с Сервером A, но Сервер B запускает человека в среднем нападении.

  • Начиная с сервера B:

    • имеет открытый ключ для сертификата, который будет отправлен клиенту
    • имеет "действительный сертификат" (сертификат в базе доверенных сертификатов)
  • И с тех пор:
    • сертификаты не имеют поля имени хоста в них

Кажется, что Сервер B может симулировать быть Сервером легко.

Есть ли что-то, что я пропускаю?

6
задан sixtyfootersdude 9 April 2010 в 14:40
поделиться

2 ответа

Можете ли вы указать на текст, в котором говорится, что JBoss не требуется имя хоста в сертификате, или это просто ваш наблюдение? Я предполагаю, что под "именем хоста" вы имеете в виду общее имя (CN) или отличительное имя (DN) ??

Обычно приложение должно проверять сертификат X.509 на:

Действительный диапазон дат
{ {1}} Использование (например, аутентификация сервера)
Привязка к доверенному корню
CN == DNS-имя целевого хоста (это может быть другое имя, а не только DNS )
Не отозван (с использованием CRL или OCSP)

Технически приложение может игнорировать любой из них и просто указать, что с сертификатом все в порядке .... но это плохо: )

2
ответ дан 17 December 2019 в 07:02
поделиться

Я думаю, вы что-то упускаете, но не уверен, что понимаю ваши рассуждения.

Однако, когда сервер B пытается запустить атаку «человек посередине», вы говорите, что у него есть открытый ключ. Это правда, но для настройки ssl-соединения у вас также должен быть закрытый ключ, принадлежащий этому открытому ключу. Более того, используемый сертификат привязан к имени DNS (в случае https). Итак, клиент пытается подключиться к A, он набирает www.a.com. Поскольку мы предполагаем, что B не знает закрытый ключ A, у него будет другая пара ключей. Он никогда не мог получить действительный (то есть доверенный) сертификат от главного центра сертификации, который связан с доменом, которым он не владеет.

Таким образом, B никогда не мог получить сертификат с общим именем www.A.com, по этой причине B не мог выполнить атаку человека в середине.

2
ответ дан 17 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

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