Использование аппаратного токена для входа

Я новичок в теме криптографии и изучаю PKI, PKCS и т. д. Я понимаю основную концепцию PKI и то, как она используется для шифрования/дешифрования. Однако я смущен тем, как аппаратный токен, такой как USB-токен или смарт-карта, используется для безопасного входа в систему на вашем компьютере. Вот шаги, как я их понимаю, и часть, которая меня смущает (заранее извините за длину вопроса):

Сценарий: Компьютер xyz в сети содержит данные, доступ к которым имеют только пользователи, принадлежащие к группе SECRET. Пользователи Bob и Joe входят в эту группу, и им были выданы USB-токены, которые они могут использовать для предоставления учетных данных, которые позволят им получить доступ к этим ресурсам. USB-токен использует двухфакторную аутентификацию и требует ввода PIN-кода. Токен соответствует стандарту PKCS11.

  1. Боб вставляет USB-токен в машину с Linux.
  2. Модуль PAM-PKCS11 распознает это событие и предлагает Бобу ввести свой пин-код.
  3. Once Bob correctly enters his 4-digit PIN, the module checks for the validity of the certificate on Bob's token by (this varies, but what is minimum?):
    • Locating the root certificate to check for a trusted CA
    • Проверка сроков действия сертификатов и списков отзыва
    • Сопоставление идентификатора токена с пользовательским файлом (где?, пропущен шаг) или каталогом (LDAP и т. д.)
  4. Если все выглядит хорошо, модуль информирует PAM об успешном результате.
  5. Эта строка помечена как достаточная, поэтому PAM принимает аутентификацию, а Боб входит в систему и может просматривать информацию, доступ к которой разрешен только пользователям из группы SECRET.

Мне не хватает информации о том, где хранится информация о том, может ли Боб получить доступ к этой машине и как именно он привязан к Бобу, сетевому (или даже настольному) пользователю. Я понимаю, что другие идентифицирующие данные о Бобе будут храниться на USB-накопителе, включая идентификатор (например, адрес электронной почты). Однако, как эта сильная безопасность? Где используется криптография во время процесса входа в систему, если вообще используется (или это не настоящая цель этих токенов)? Если кто-то получит USB и знает 4-значный пин-код, это все, что нужно, верно? Более того, действительно ли доверие к ЦС позволяет полагать, что другой пользователь не может получить новый USB-токен и использовать доверенный ЦС для получения нового сертификата, но указать, что все идентифицирующие данные должны быть такими же, как у Боба? Я знаю, что есть какая-то важная часть, которую я упускаю... но после прочтения десятков статей объяснение этой области кажется приукрашенным. Стоит ли использовать аппаратный токен в качестве достаточного средства аутентификации для входа на машину, содержащую конфиденциальные данные? Или назначение таких токенов в первую очередь для безопасного хранения пар ключей, которые используются в других приложениях? Спасибо за помощь!


person Sliceoftime    schedule 29.04.2009    source источник


Ответы (1)


PAM (как следует из названия) обрабатывает только аутентификацию. Аутентификация заключается в доказательстве того, кем является пользователь, т. е. «докажите мне, кто такой, за кого вы себя выдаете». Это отдельно от авторизации, то есть «У вас есть доступ к этому ресурсу?».

Аутентификация состоит из трех аспектов:
1. Я знаю
2. Имею
3. Я

Типичная комбинация имени пользователя и пароля соответствует 1. В то время как токен или другое устройство PKCS соответствует 2, а биометрические данные, такие как распознавание радужной оболочки глаза или считывание отпечатков пальцев, соответствуют 3.

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

Смысл жетона состоит в том, чтобы ввести второй фактор «иметь» что-то, тот факт, что вам также нужен PIN-код, означает, что также требуется «знание» чего-то. Таким образом, система может иметь больше уверенности в том, что человек является тем, за кого он себя выдает.

Отсутствующая часть, на которую вы ссылаетесь, — это Авторизация. Как указано, это отдельный процесс аутентификации, который происходит только после того, как пользователь аутентифицировал себя. В этом случае PAM аутентифицировал Боба и предоставил ОС подтверждение того, что Боб действительно использует систему. Однако тогда ОС должна будет выполнить другую проверку на шаге 5, чтобы убедиться, что Боб имеет доступ к ресурсу.

person David McEwing    schedule 30.04.2009
comment
Дэвид, ты прав... Я не разделял часть авторизации. Таким образом, в связи с этим модуль pam_pkcs не будет отвечать за задачи шифрования/дешифрования. Только для передачи приложению или службе, поддерживающему pam, удостоверения пользователя, но не его привилегии (включая то, могут ли они использовать приложение). Спасибо - person Sliceoftime; 30.04.2009
comment
Что касается вопроса аутентификации, то модуль будет использовать некоторую описательную информацию о токене для идентификации пользователя в каталоге или плоском файле. Как pam передает этот идентификатор приложению, поддерживающему pam, чтобы оно могло предпринять дальнейшие действия для определения аутентификации? - person Sliceoftime; 30.04.2009
comment
Я недостаточно знаком с модулем PAM, чтобы ответить на этот вопрос, однако я ожидаю, что самым простым ответом на этот вопрос будет запрос вошедшего в систему пользователя из операционной системы. Если PAM API позволяет приложению запрашивать, то оно, вероятно, вернет сертификат X509, используемый для идентификации пользователя, который является идентификацией, предоставляемой токеном PCKS. - person David McEwing; 30.04.2009
comment
Я провел поиск в Google по идентификатору пользователя Linux pam и нашел несколько хороших зацепок. Спасибо, что указали мне правильное направление и слова!! - person Sliceoftime; 30.04.2009
comment
Недостаточно представителей для редактирования, но во втором и третьем предложениях есть опечатки: «доказательство» должно быть «доказательство», а «доказательство» должно быть «доказательство». Кроме этого, отличный ответ. - person ctuffli; 01.05.2009