Аутентификация: Kerberos или SSL? - PullRequest
2 голосов
/ 02 февраля 2011

Я нахожусь в фазе «предварительного проектирования» (если есть такая вещь!) Для приложения Java EE, которое будет использовать блок Swing на стороне клиента и реализовывать компоненты для веб-уровня и уровня сервера.

Мне сразу представили некоторые технологические решения и я узнал о различиях между работой Kerberos и SSL.Одна область, на которую я не смог найти никаких ответов, была тема , как выбрать между Kerberos или SSL.Другими словами, как вы скажете, когда уместно использовать любой протокол?

Давайте предположим, что клиент Swing не привязан к определенному транспорту (UDP, TCP или иным образом) и может использовать любой / любой,Как выбрать, какой из этих двух вариантов лучше подходит для их применения?

Спасибо!

Ответы [ 5 ]

5 голосов
/ 29 июля 2011

и вдруг (несколько месяцев спустя) появляется дикий администратор Sys ...

Я должен быть голосом несогласия по этому поводу.Идея, что вы когда-либо создадите PKI без CA, невероятно абсурдна.Вы должны поддерживать целостность и производительность PKI, упрощая процесс создания.Вы должны создать и хранить сертификаты где-нибудь, где это будет?Бум, у вас есть CA.Любая приличная PKI также будет требовать сохранения CRL, должен ли администратор писать это вручную?Вы также можете забыть о наличии различных типов из 509-х в качестве накладных расходов на поддержание того, что рука взорвет ваш ум, откроет и превратит его в серый шлам.

Полагаю, вы могли бы просто вручную создать заявки с помощью CLI openssl и просто передать их по FTP для удаленных клиентов, но это становится ОГРОМНОЙ проблемой для развертываний заметного размера.По сути, если ваше развертывание настолько мало, что создание сертификатов вручную (повторный ввод информации и все такое), а затем просто не беспокоиться о CRL - это разумный план, вам вообще не нужна продвинутая система аутентификации.Что-то вроде TLS + LDAP (один серверный сертификат для конфиденциальности, а не для аутентификации) более уместно.

Хорошо, теперь, когда я очистил некоторые заблуждения, давайте на самом деле ответим на ваш вопрос: когда вы захотитеиспользовать SSL поверх Kerberos для аутентификации?Аутентификация на основе x509 - это невероятно туманный зверь, в основном из-за того, что большинство людей (как Майкл-О выше) не понимают, что SSL работает специально , потому что это аутентификация пользователей.Есть несколько FTP-программ, которые, как мне известно, аутентифицируют таким образом, промежуточное программное обеспечение использует их ... иногда (что звучит близко к вашему варианту использования из разговора java), и клиенты / шлюзы vpn часто аутентифицируются с помощью SSL-сертификатов.

Использование SSL подразумевало бы PKI, о котором я говорил, и это прекрасно работало бы, если бы ваш вариант использования подразумевал конфиденциальность.DoD является хорошим примером предприятия, которое широко использует PKI для функций вне аутентификации.В этом контексте большое значение имеет предположение, что все соответствующие клиентские программы поддерживают аутентификацию x509.Это по-прежнему экзотическая установка, и вам все равно придется выяснить, как конечные пользователи будут «представлять» свои учетные данные SSL в системе (конфигурация клиента, смарт-карты и т. Д.), Но это будет хорошо сочетаться друг с другом.Помимо нечетного соответствия, Kerberos аутентифицируется с помощью временного билета, в то время как SSL-сертификаты обычно длятся долго (именно поэтому требуется CRL), что означает, что если неизменяемый ключ учитывается в одном сертификате, у атакующего будет несколько месяцев.бесплатных поездок, прежде чем им нужно будет найти новый сертификат, по сравнению с kerberos, где они имеют его только на один день, и это только в том случае, если билет не уничтожен.

Во всех других случаях следует использовать аутентификацию Kerberos, когда это возможно.Он обеспечивает правильный уровень безопасности и фактически спроектирован как большая система сетевой аутентификации, поэтому у вас есть вещи, которые сложно продублировать с помощью SSL (например, аутентификация в качестве службы вместо обычного пользователя) и просто работа по назначениюцель.В ваших сценариях использования всегда нужно учитывать существующую инфраструктуру, которая, вероятно, будет ориентирована на Kerberos, иногда на LDAPS, но почти никогда не будет ориентирована на аутентификацию x509.Другими словами: все, что вы пишете, НАМНОГО более вероятно, будет уже запущено в инфраструктуре Kerberos, так что вы могли бы так или иначе подключиться к этому.Вы также получите больше пользы от знакомства администратора с Kerberos-as-аутентификация, чем 509-as-аутентификация.Недостатком этого является то, что конфиденциальность за пределами билета является своего рода шуткой.NFSv4 имеет слабое шифрование DES (и я даже не имел в виду 3DES), которое (каким-то образом) связано с билетом Kerberos, но выполняет аутентификацию, и это в основном все, что он делает.

Я бы хотел видеть некоторую гибкость x509 в сочетании с инфраструктурой в стиле Kerberos (распознавание сервисов и аспект «одноразовой панели» наличия билета с истечением срока действия), включенного в решение, которое было более широко реализовано чем x509 сейчас, но на этом этапе он в основном мечтает.

Резюме:

x509 - это хорошо, если требования к инфраструктуре не будут проблемой, и вы все равно будете использовать PKI для других задач, но в противном случае, возможно, потребуется ненужное дублирование усилий или если развертывание, скорее всего, будет иметь инфраструктуру Kerberos. *

Kerberos - это похожая, но лучшая схема аутентификации, которая более широко используется / понятна, но не поможет вам с PKI, вы получаете аутентификацию, и это все.

4 голосов
/ 29 ноября 2011

Сравнение Kerberos и SSL / TLS не имеет смысла.

  • Kerberos - это протокол аутентификации.
  • TLS - это протокол для защиты связи между двумя сторонами, который основан на механизмах аутентификации и шифрования. Как они работают, зависит от выбранного набора шифров. Хотя в большинстве случаев использования TLS (например, HTTPS) используются сертификаты X.509, и в этом случае вы можете использовать PKI для аутентификации удаленной стороны, комплекты шифров Kerberos также могут использоваться. Насколько мне известно, несколько стеков TLS поддерживают эти наборы шифров Kerberos ( Java поддерживает ).

Это не должно быть одно или другое. Например, даже если вы используете HTTP-аутентификацию SPNEGO (Kerberos), часто имеет смысл защищать транспорт с использованием TLS (часто с сертификатом X.509 на стороне сервера, проверяемым через PKI). В противном случае токены SPNEGO, которыми обмениваются заголовки HTTP, гарантируют аутентификацию, но остальные сообщения HTTP могли быть изменены злоумышленником.

2 голосов
/ 02 февраля 2011

Учтите, что любое решение, включающее Kerberos, будет более сложным, чем SSL, поскольку для него требуется дополнительный третий компонент - сервер аутентификации, который должен управляться и администрироваться (например, MS Active Directory), тогда как SSL - это просто протокол клиент / сервер.

2 голосов
/ 02 февраля 2011

Это может быть полезно:

http://www.faqs.org/faqs/kerberos-faq/general/section-31.html

1 голос
/ 29 июня 2011

Вы смешиваете вещи.Kerberos - это протокол аутентификации, SSL ist шифрование.Kerberos - это то, что нужно, если вы находитесь в корпоративной среде.

Редактировать: Kerberos также может прозрачно шифровать ваш трафик данных.Нет необходимости в SSL-сертификатах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...