Смарт-карта CAC повторно проходит проверку подлинности

Возможно один из лучших примеров 'существует больше чем Один Способ Сделать Это", с или без справки CPAN.

, Если Вы управляете тем, что Вы передаетесь как 'дата/время', я предложил бы идти маршрут DateTime, любой при помощи определенной Даты:: Время:: подкласс Формата или использование DateTime:: Формат:: Strptime, если нет того, поддерживающего Ваш дурацкий формат даты (см. дата и время FAQ для получения дополнительной информации). В целом, Дата:: Время является способом пойти, если Вы хотите сделать что-либо серьезное с результатом: немного классов на CPAN вполне как анально-сохраняющие и одержимо точные.

, Если Вы ожидаете странный материал свободной формы, бросьте его в Дата:: Синтаксический анализ str2time () метод, который получит Вас значение секунд начиная с эпохи, у Вас может тогда быть свой злой путь с без издержек Дата:: Manip.

9
задан Scott Stafford 1 September 2010 в 19:35
поделиться

2 ответа

Здесь задействовано несколько различных программ.

Во-первых, это сама карта. Для выполнения цифровой подписи CAC должен находиться в "проверенном" состоянии, то есть PIN-код был введен после того, как карта была вставлена. Кроме того, каждый ключ на карте имеет флажок, который указывает, нужно ли вводить PIN-код каждый раз, когда используется ключ. Я не проверял, но думаю, что это установлено для пары ключей «электронная почта» в CAC. Таким образом, вам нужно будет найти, для каких ключей установлен этот флаг «всегда проверять», и настроить валидатор пути в службе, чтобы он принимал только эти ключи. Возможно, вы сможете потребовать конкретный OID при расширенном использовании ключа или исключить некоторые промежуточные сертификаты DoD из построения пути (возможно, пометив их как отозванные).

Промежуточное программное обеспечение на машине, взаимодействующей с картой, может также кэшировать PIN-код и предоставлять его на карту всякий раз, когда карта указывает, что для завершения операции требуется PIN-код. Я думаю, что ActivClient делал это с помощью своей функции кэширования PIN-кода до версии 6, но в версии 7 эта опция, похоже, пропала. Я не нашел ничего подобного во встроенной поддержке PIV Windows. Эта «функция» может поставить под угрозу безопасность, поэтому я предполагаю, что она была намеренно удалена, и не было никаких взломов реестра или иного способа восстановления поведения. Вы не сможете это контролировать, если не будете управлять машинами пользователей; нет HTTP-заголовка или параметра TLS, которые можно использовать для принудительного ввода ПИН-кода. Но с более новыми системами это не должно быть проблемой.

На стороне сервера, должно произойти полное рукопожатие, чтобы клиент выполнил аутентификацию. Аутентификация клиента не произойдет, если есть действующий сеанс TLS. Поэтому вам нужно будет найти способ сделать недействительным сеанс TLS (не сеанс приложения, который, вероятно, привязан к HTTP-куки) перед запросом аутентификации, или направить запрос аутентификации на другой интерфейс, для которого не включены сеансы.

11
ответ дан 4 December 2019 в 11:42
поделиться

Существует два способа аутентификации клиента смарт-карты в Интернете: стандартный TLS / SSL или настраиваемые плагины для браузера. Я предполагаю, что вы говорите о стандартных веб-браузерах (IE / FF / Safari) и SSL-аутентификации.

Для запросов PIN важны две вещи:

  • SSL-сеанс и SSL-сеанс кеширования он спросит об этом перед разговором с картой.

    Нет связи 1: 1 между вводом PIN-кода и фактической повторной аутентификацией прав доступа к закрытому ключу и повторной аутентификацией сеанса SSL.

    При использовании стандартного SSL, вы зависите от того, как SSL реализован в браузерах, и не можете иметь 100% надежную «повторную аутентификацию путем ввода PIN-кода» на стороне клиента.

    Если вы используете Linux, то с OpenSC (который, AFAIK может использовать CAC card) вы можете установить для параметра "transaction_reset" в opensc.conf значение true, что приведет к сбросу карты после каждой транзакции (каждого согласования сеанса SSL), и таким образом вы можете быть уверены, что всякий раз, когда вы открываете новый сеанс SSL, пользователь должен введите ПИН-код еще раз. Однако это конфигурация на стороне клиента, а не функция, инициируемая сервером.

    1 связь между вводом ПИН-кода и фактической повторной аутентификацией прав доступа к закрытому ключу и повторной аутентификацией сеанса SSL.

    При использовании стандартного SSL вы зависите от того, как SSL реализован в браузерах, и не может иметь 100% надежную «пройти повторную аутентификацию путем ввода PIN-кода» на стороне клиента.

    Если вы используете Linux, то с OpenSC (который, AFAIK может использовать карты CAC) вы можете установить «transaction_reset» в opensc.conf в значение true, что приведет к карта сбрасывается после каждой транзакции (каждого согласования сеанса SSL), и таким образом вы можете быть уверены, что всякий раз, когда вы открываете новый сеанс SSL, пользователь должен снова вводить PIN-код. Однако это конфигурация на стороне клиента, а не функция, инициируемая сервером.

    1 связь между вводом ПИН-кода и фактической повторной аутентификацией прав доступа к закрытому ключу и повторной аутентификацией сеанса SSL.

    При использовании стандартного SSL вы зависите от того, как SSL реализован в браузерах, и не может иметь 100% надежную «пройти повторную аутентификацию путем ввода PIN-кода» на стороне клиента.

    Если вы используете Linux, то с OpenSC (который, AFAIK может использовать карты CAC) вы можете установить «transaction_reset» в opensc.conf в значение true, что приведет к карта сбрасывается после каждой транзакции (каждого согласования сеанса SSL), и таким образом вы можете быть уверены, что всякий раз, когда вы открываете новый сеанс SSL, пользователь должен снова вводить PIN-код. Однако это конфигурация на стороне клиента, а не функция, инициируемая сервером.

    При использовании стандартного SSL вы зависите от способа реализации SSL в браузерах и не можете иметь 100% надежную «повторную аутентификацию путем ввода PIN-кода» на стороне клиента.

    Если вы используете Linux, то с OpenSC (который, AFAIK может использовать карты CAC), вы можете установить для параметра "transaction_reset" в opensc.conf значение true, что приведет к сбросу карты после каждой транзакции (каждого согласования сеанса SSL), и таким образом вы можете быть уверены, что всякий раз, когда вы открываете новый сеанс SSL, пользователь должен снова ввести PIN-код. Однако это конфигурация на стороне клиента, а не функция, инициируемая сервером.

    При использовании стандартного SSL вы зависите от способа реализации SSL в браузерах и не можете иметь 100% надежную «повторную аутентификацию путем ввода PIN-кода» на стороне клиента.

    Если вы используете Linux, то с OpenSC (который, AFAIK может использовать карты CAC), вы можете установить для параметра "transaction_reset" в opensc.conf значение true, что приведет к сбросу карты после каждой транзакции (каждого согласования сеанса SSL), и таким образом вы можете быть уверены, что всякий раз, когда вы открываете новый сеанс SSL, пользователь должен снова ввести PIN-код. Однако это конфигурация на стороне клиента, а не функция, инициируемая сервером.

    AFAIK может использовать карты CAC) вы можете установить для параметра "transaction_reset" в opensc.conf значение true, что приведет к сбросу карты после каждой транзакции (каждого согласования сеанса SSL), и таким образом вы можете быть уверены, что всякий раз, когда вы открываете новый сеанс SSL , пользователю необходимо снова ввести PIN-код. Однако это конфигурация на стороне клиента, а не функция, инициируемая сервером.

    AFAIK может использовать карты CAC) вы можете установить для параметра "transaction_reset" в opensc.conf значение true, что приведет к сбросу карты после каждой транзакции (каждого согласования сеанса SSL), и таким образом вы можете быть уверены, что всякий раз, когда вы открываете новый сеанс SSL , пользователю необходимо снова ввести PIN-код. Однако это конфигурация на стороне клиента, а не функция, инициируемая сервером.

7
ответ дан 4 December 2019 в 11:42
поделиться
Другие вопросы по тегам:

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