(2015-09-13 21:45:14 отредактировано beelze)

Блокировка и отсутствие поддержки PUK

За последний год на ЭЦП эта проблема наблюдалась минимум 3 раза – внезапно пин оказывается заблокированным (стратегия использования токена практически полностью исключает возможность того, что злоумышленник пытался его подобрать etc)

# pkcs11-tool -l -O
Using slot 1 with a present token (0x1)
Logging in to "Rutoken ECP (xxxxxx)".
Please enter User PIN:
error: PKCS11 function C_Login failed: rv = CKR_PIN_LOCKED (0xa4)

Разблокировать я не могу, потому как PUK отсутствует, ибо:

# pkcs15-init --erase-card -p rutoken_ecp
Using reader with a card: Aktiv Rutoken ECP 00 00
# pkcs15-init --create-pkcs15 --so-pin "xxxxxx" --so-puk "yyyyyy"
Using reader with a card: Aktiv Rutoken ECP 00 00
Failed to create PKCS #15 meta structure: Not supported

Пук указать, стало быть, нельзя. И на этом этапе можно заново стирать карту (что уже явный баг):

# pkcs15-init --create-pkcs15 --so-pin "хххххх" --so-puk ""
Using reader with a card: Aktiv Rutoken ECP 00 00
Failed to create PKCS #15 meta structure: Incorrect parameters in APDU

Сотрем все, попробуем не указывать SO PUK ибо он в принципе не нужен:

# pkcs15-init --erase-card -p rutoken_ecp
Using reader with a card: Aktiv Rutoken ECP 00 00
# pkcs15-init --create-pkcs15 --so-pin "ххххххх" --so-puk ""
Using reader with a card: Aktiv Rutoken ECP 00 00
# pkcs15-init --store-pin --label "аааааа" --auth-id 02 --pin "1234" --puk "4321" --so-pin "ххххх" --finalize
Using reader with a card: Aktiv Rutoken ECP 00 00
Failed to store PIN: Not supported

облом, но тут таки можно указать без пука:

# pkcs15-init --store-pin --label "аааааа" --auth-id 02 --pin "1234" --puk "" --so-pin "ххххх" --finalize
Using reader with a card: Aktiv Rutoken ECP 00 00

пин создан, можно пересоздавать объекты – до следующего блокирования.

Вопросы:
1. Я подозреваю, что либо данные на токене самопроизвольно разрушаются каким-то образом (хотя дампнутый список объектов залоченного токена на это не указывает), либо какой-то процесс как-то «нехорошо» использует *pkcs11.so, вызывая блокировку. Не могу пока представить, как это выяснить.
2. Почему нет возможности разблокировать пин ввиду того, что нельзя указать пук?

Изначально я планировал использовать аналогичные токены на предприятии, но честно говоря, меня подобный расклад не совсем устраивает.

Думаю, что данный вопрос нерелевантен версиям пакетов итд, поэтому приводить все это не стал.

Re: Блокировка и отсутствие поддержки PUK

хотелось бы получить ответ

Re: Блокировка и отсутствие поддержки PUK

Здравствуйте.

Наши токены не поддерживают установку --puk и --so-puk
Их при форматировании нужно задавать как пустые строки, что вы и делаете.

Почему у вас блокируются пин-коды, ответить не могу, нужно изучать логи команд.

Скажите, а вы не рассматривали варианты, когда вместо opensc-pkcs11.so использовался бы наш интерфейс librtpkcs11ecp.so ?
Так как это наша собственная разработка он поддерживается гораздо лучше и оперативнее.

>> 1. Не могу пока представить, как это выяснить.

Нужно снимать логи - это можно сделать на двух уровнях:
1-й) APDU - запускаете /usr/sbin/pcscd -a -f -ddddd и смотрите посылает ли кто-нибудь команды аутентификации с неправильными пин-кодами
2-й) pkcs11: настраиваете вашу систему на использование обертки pkcs11-spy и смотрите где и как выполняется C_Login

>> 2. Почему нет возможности разблокировать пин ввиду того, что нельзя указать пук?

Наши токены работают немного по другому. У нас нет PUK кодов, а их роль выполняют пин-коды пользователя и администратора.
Существуют 3 политики:
1) пин-код пользователя может сменить только пользователь
2) пин-код пользователя может сменить только администратор
3) пин-код пользователя может сменить и пользователь и администратор

С большой долей вероятности у вас токены отформатированы на 1ю политику.
Но обычно более удобной является 3я.
Возможно и вам она тоже подойдет.

Re: Блокировка и отсутствие поддержки PUK

>>librtpkcs11ecp.so
а почему бы и нет? но я не нашел ссылку на проект, на гитхабе только USB IFD Handler for RutokenS. librtpkcs11ecp.so же не блоб, надеюсь?

по поводу регистрации предполагаемых обращений, вызывающих блокировку – поскольку это происходит не каждый месяц, то тут конечно трудоемко будет. я сейчас взял другой экземпляр, если повторится ситуация хоть раз, то появится смысл в этом труде.
Были ли зарегистрированы проблемы разрушения метаданных, влекущие за собой блокировку, без внешних причин? Как посоветуете отличить проблему с метаданными от штатной блокировки? Где можно подробнее узнать про реализованные политики безопасности?

>>pkcs11-spy
надо полагать, не-pkcs11 обращения к токену пройдут мимо? Если да, то методика недостаточна.

>>Существуют 3 политики: … Но обычно более удобной является 3я.
где таки можно про это прочитать? :)

еще я заметил, что c метаданными, созданными в версиях opensc 0.14.0 и 0.15.0, как минимум Firefox с opensc-pkcs11.so – не работает. С 0.12.2 все в порядке. Подробно не разбирался, но проблема воспроизводима. Возможно, это и не «ваша» проблема, однако с исчезновением 0.12.2 из стабильной ветки это станет проблемой. Полагаю, подтвердить и разобраться вам будет куда проще.

Re: Блокировка и отсутствие поддержки PUK

beelze пишет:

>>librtpkcs11ecp.so
а почему бы и нет? но я не нашел ссылку на проект, на гитхабе только USB IFD Handler for RutokenS. librtpkcs11ecp.so же не блоб, надеюсь?

блоб

beelze пишет:

по поводу регистрации предполагаемых обращений, вызывающих блокировку – поскольку это происходит не каждый месяц, то тут конечно трудоемко будет. я сейчас взял другой экземпляр, если повторится ситуация хоть раз, то появится смысл в этом труде.
Были ли зарегистрированы проблемы разрушения метаданных, влекущие за собой блокировку, без внешних причин? Как посоветуете отличить проблему с метаданными от штатной блокировки? Где можно подробнее узнать про реализованные политики безопасности?

мы не проводим собственного тестирования библиотек OpenSC, но участвуем в mailing list и по возможности поддерживаем.
Если будет воспроизводимый багрепорт, то обязательно поучаствуем в исправлении.

beelze пишет:

>>pkcs11-spy
надо полагать, не-pkcs11 обращения к токену пройдут мимо? Если да, то методика недостаточна.

верно

beelze пишет:


>>Существуют 3 политики: … Но обычно более удобной является 3я.
где таки можно про это прочитать? :)

политику можно задавать только через нашу библиотеку libpkcs11ecp

beelze пишет:

еще я заметил, что c метаданными, созданными в версиях opensc 0.14.0 и 0.15.0, как минимум Firefox с opensc-pkcs11.so – не работает. С 0.12.2 все в порядке. Подробно не разбирался, но проблема воспроизводима. Возможно, это и не «ваша» проблема, однако с исчезновением 0.12.2 из стабильной ветки это станет проблемой. Полагаю, подтвердить и разобраться вам будет куда проще.

Re: Блокировка и отсутствие поддержки PUK

итого получается, что устройство неполнофункционально без проприетарного кода?
И без оного кода даже разблокировка токена невозможна?

Если это скажем так, официальная политика, то выходит, что использование устройства в linux искусственно затруднено/ограничено в сторону принудительной ориентации пользователя на использование готовых платных решений с закрытым кодом?

Re: Блокировка и отсутствие поддержки PUK

beelze пишет:

итого получается, что устройство неполнофункционально без проприетарного кода?
И без оного кода даже разблокировка токена невозможна?

Если это скажем так, официальная политика, то выходит, что использование устройства в linux искусственно затруднено/ограничено в сторону принудительной ориентации пользователя на использование готовых платных решений с закрытым кодом?

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

Re: Блокировка и отсутствие поддержки PUK

Кирилл Мещеряков пишет:
beelze пишет:

>>librtpkcs11ecp.so
а почему бы и нет? но я не нашел ссылку на проект, на гитхабе только USB IFD Handler for RutokenS. librtpkcs11ecp.so же не блоб, надеюсь?

блоб

Вы не подскажете в составе какого пакета идёт данная библиотека?
Где и как её можно взять?

Re: Блокировка и отсутствие поддержки PUK

Бравлинъ пишет:
beelze пишет:

итого получается, что устройство неполнофункционально без проприетарного кода?
И без оного кода даже разблокировка токена невозможна?

Если это скажем так, официальная политика, то выходит, что использование устройства в linux искусственно затруднено/ограничено в сторону принудительной ориентации пользователя на использование готовых платных решений с закрытым кодом?

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

Добрый день.
Наверное некорректно упрекать коммерческую компанию тем, что она своими силами не поддерживает полную функциональность в open source проектах.
Проект OpenSC поддерживает около сотни устройств и было бы сложно добиться полнофукнциональности каждого из них.
Это потребовало бы огромных ресурсов, которых у open source разработчиков обычно нет.
Некоторую "усредненную" функциональность мы поддерживаем, но на большее мы не можем пойти.
Мэйнтейнеры проекта просто не возьмут специфичный код, так как он работает только на одном устройстве из сотни.

Re: Блокировка и отсутствие поддержки PUK

https://www.rutoken.ru/support/download/pkcs/

Re: Блокировка и отсутствие поддержки PUK

Я посмотрел код и понял, что немного вас обманул :)
438cf4b2d4aee8f2ba4a4cffc3630360de3de7ec в этом коммите, была добавлена возможность смены пин-кода пользователя используя пин-код администратора.
Вы можете изменять эту политику по своему усмотрению, просто редактируя файл rutoken_ecp.profile для этого перекомпилировать код не нужно.
А если разберетесь как этот код работает - тогда сможете добавить необходимую для вас гибкость :)
Open source тем и хорош, что все в ваших руках.

(2015-09-21 19:20:18 отредактировано beelze)

Re: Блокировка и отсутствие поддержки PUK

>>Наверное некорректно упрекать коммерческую компанию тем, что она своими силами не поддерживает полную функциональность в open source проектах.

собственно вопрос совсем не так ставится. в моем случае это было (еще год назад) исследование использования рутокена под linux на предмет использования в организации. и, разумеется, например внезапное выяснение того факта, что оказывается (!) нельзя без проприетарного кода сделать базовую операцию (разблокировку) – вызывает недоверие к продукту. И именно – почему какой-то код прячется? Особенно если он отвечает за крипто*? И нет ли других, пока еще мной незамеченных подобных ограничений? Не получится ли так, что впоследствии мне придется покупать не только токены, но и программное обеспечение? Разумеется, чтобы мне не попасть в такую ситуацию, мне необходим четкий ответ на вопрос:

могу ли я использовать данное устройство в linux без технических ограничений, сложности с поддержкой необходимых пакетов и проблем с оперативным исправлением багов итд? Или для всего этого НЕОБХОДИМО покупать НЕ ТОЛЬКО устройства? Если в данном вопросе нет ясности, то разумеется, он сводится к ответу «нет».

>>мы не проводим собственного тестирования библиотек OpenSC…если будет воспроизводимый багрепорт
в данном случае подозрение на баг я уже отметил – после инициализации через opensc 0.14.0 и 0.15.0 в Firefox невозможно импортировать на токен бэкап *.p12. Повторилось подряд 2 раза. Давайте тогда обсудим регламент багрепортов, иначе без достаточных данных и подтверждений в майллисте на устройствоспецифичный баг просто забьют; кроме того, у девов может просто не быть рутокена. В любом случае без собственно представителей от рутокен не обойтись.

>>возможность смены пин-кода пользователя используя пин-код администратора

ну коль скоро это так, то значительная часть вопросов снимается, однако я вот поглядел в rutoken_ecp.profile от dev-libs/opensc-0.12.2 и как-то не сообразил сам, где это там делается. в мане pkcs15-profile по поводу формата – заглушка Было бы неплохо получить подсказку.

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

Re: Блокировка и отсутствие поддержки PUK

beelze пишет:

>>Наверное некорректно упрекать коммерческую компанию тем, что она своими силами не поддерживает полную функциональность в open source проектах.

собственно вопрос совсем не так ставится. в моем случае это было (еще год назад) исследование использования рутокена под linux на предмет использования в организации. и, разумеется, например внезапное выяснение того факта, что оказывается (!) нельзя без проприетарного кода сделать базовую операцию (разблокировку) – вызывает недоверие к продукту. И именно – почему какой-то код прячется? Особенно если он отвечает за крипто*? И нет ли других, пока еще мной незамеченных подобных ограничений? Не получится ли так, что впоследствии мне придется покупать не только токены, но и программное обеспечение? Разумеется, чтобы мне не попасть в такую ситуацию, мне необходим четкий ответ на вопрос:

могу ли я использовать данное устройство в linux без технических ограничений, сложности с поддержкой необходимых пакетов и проблем с оперативным исправлением багов итд? Или для всего этого НЕОБХОДИМО покупать НЕ ТОЛЬКО устройства? Если в данном вопросе нет ясности, то разумеется, он сводится к ответу «нет».

>>мы не проводим собственного тестирования библиотек OpenSC…если будет воспроизводимый багрепорт
в данном случае подозрение на баг я уже отметил – в версиях opensc 0.14.0 и 0.15.0. Давайте тогда обсудим регламент багрепортов, иначе без достаточных данных и подтверждений в майллисте на устройствоспецифичный баг просто забьют; кроме того, у девов может просто не быть рутокена. В любом случае без собственно представителей от рутокен не обойтись.

>>возможность смены пин-кода пользователя используя пин-код администратора

ну коль скоро это так, то значительная часть вопросов снимается, однако я вот поглядел в rutoken_ecp.profile от dev-libs/opensc-0.12.2 и как-то не сообразил сам, где это там делается. в мане pkcs15-profile по поводу формата – заглушка Было бы неплохо получить подсказку.

Частый гость в багтрекерах вполне согласен с трюизмами относительно опенсорса, однако все же определиться хочется – я приобретаю устройство, которое поддерживается и будет поддерживаться опенсорсно или же самому надо под него все пилить? :)

Если что-то не сделано, то это еще не означает что это спрятано :)

Технических ограничений нет, есть ограничения на уровне "не сделано, так как никто не просил".

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

>> в данном случае подозрение на баг я уже отметил – в версиях opensc 0.14.0 и 0.15.0. Давайте тогда обсудим регламент багрепортов,  иначе без достаточных данных и подтверждений в майллисте на устройствоспецифичный баг просто забьют; кроме того, у девов может просто не быть рутокена. В любом случае без собственно представителей от рутокен не обойтись.

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

Re: Блокировка и отсутствие поддержки PUK

>> Если что-то не сделано, то это еще не означает что это спрятано :)
Технических ограничений нет, есть ограничения на уровне "не сделано, так как никто не просил".

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

>>Большинству клиентов достаточно проприетарной библиотеки
как раз несколько дней назад (чуть позже старта этой темы) на руфоруме нашего неубунту-дистро поднимался вопрос об опыте использования етокенов и рутокенов. скажу честно, отсутствие оперативного ответа здесь вызвало мой критический ответ ТС на форуме. Да еще и блобы… Я бы очень хотел бы порекомендовать, особенно vs etoken, но пока этого сделать я не могу. Вот вам и иллюстрация к вопросу о клиентах и что кому из них надо.

По поводу багрепортов – год назад я оформил один https://forum.rutoken.ru/topic/2144/ – ну пока никто не озаботился, хотя данных мегадостаточно для воспроизведения. поскольку это таки OpenSC/pam_p11, то я уже как-то сомневаюсь, что без участия рутокенцев вопросы про рутокен вообще рассматриваются. Поэтому я с новым багом таки иду именно сюда, логично?

И все же я пока не получил ответа на вопрос – что я приобрел? «Допили-сам» или же то, что я буду внедрять на предприятие (блобы я по многим причинам не рассматриваю пока. а на какие архитектуры кстати есть тестированные блобы?) Прежде всего это вопрос по оперативному решению проблем и багфиксам.

Re: Блокировка и отсутствие поддержки PUK

>> Не в плане претензий конечно я это говорю, но повеселился ответом.

Не поверите, но это так :)

>> Да еще и блобы… Я бы очень хотел бы порекомендовать, особенно vs etoken, но пока этого сделать я не могу. Вот вам и иллюстрация к вопросу о клиентах и что кому из них надо.

Проблема наверное в том, что наше сообщество линуксоидов не настолько активно развивает обсуждаемые нами вещи.
Мы следим за OpenSC - там нет ни одного нашего активного российского коммиттера.
Хотя ведь куча устройств работает в России на линукс платформах, некоторые используют тот же PAM и прочие интересные штуки.
Никто видимо не возвращает код, увы.
Мы развиваем как можем нашу документацию - вот тут посмотрите: dev.rutoken.ru

И посмотрите библиотеки и драйверы у конкурирующих устройств - я бы не сказал что они качественнее или лучше описаны.
Да, есть более широкий опыт применения но не более, увы. А по большей части все инструкции и странички универсальные - то что работает на etoken, заработает и на рутокене.

>> И все же я пока не получил ответа на вопрос – что я приобрел?

Вы приобретаете отличные устройства и проприетарные библиотеки с хорошей поддержкой.

Если вы хотите "из коробки" еще и получить отличную поддержку в миллионах опенсорс проектах - ну мы пока не можем это потянуть физически.

>> блобы я по многим причинам не рассматриваю пока

Вы сами вольны выбирать ваш путь, он нелегкий и вы должны понимать на что вы идете.
Прошивке роутеров или сетевых карт вы тоже не доверяете? перепрошиваете?  :)

Наши библиотеки мы компилируем под Linux, Mac, и FreeBSD.
А по запросу мы делаем под что угодно и подо что есть кросс-компилятор.
Если нашему клиенту это нужно, мы договариваемся и просто делаем. И обычно совершенно бесплатно.