![](https://habrastorage.org/webt/ak/4_/mh/ak4_mhyj16_mq5k5h9zd05dnor0.png)
Новые функции пакета TclPKCS11
В пакете появились три новые функции:
::pki::pkcs11::inittoken <handle> <slotId> <SO-pin> <label for token>
::pki::pkcs11::inituserpin <handle> <slotId> <SO-pin> <USER-pin>
::pki::pkcs11::setpin <handle> <slotId> <so | user> <oldpin> <newpin>
Первая функция ::pki::pkcs11::inittoken предназначена для инициализации токена. Надо иметь ввиду, что если эта функция применяется к рабочему токену, то все имеющиеся на нем объекты будут уничтожены.
Вторая функция ::pki::pkcs11::inituserpin предназначена для первичной инициализации пользовательского PIN-кода (USER PIN).
После первичной инициализации пользовательского PIN-кода, его необходимо сразу же сменить на тот PIN-код, который будет пользоваться в дальнейшем, и хранить его, также как и SO-PIN, в дали от чужих глаз. В целях безопасности токены, как правило, не дают залогиниться на них с первоначальным PIN-кодом.
Для смены PIN-кодов используется третья функция, а именно ::pki::pkcs11::setpin. Эта функция позволяет менять как пользовательский PIN-код, так и SO-PIN.
При этом следует также иметь ввиду, что восстановить первоначальный SO-PIN (default), токены, как правило, не возволяют. Но если вы выполните переинициализацию токена, то вновь получите дефолтный SO-PIN. Реализацию пакета TclPKCS11 можно посмотреть на github-е.
Теперь, имея на руках, пакет TclPKCS11 с новыми функциями, не составило труда реализовать GUI для этих функций:
![](https://habrastorage.org/webt/hb/1s/jz/hb1sjzmndim4qywr-mmxcgagrki.png)
Учебные токены
Но прежде чем ими воспользоваться, обратим внимание на то, что в функционал утилита добавлена еще одна кнопка «Создать Токены».
Это связано с тем, что не у всех есть аппаратный токен PKCS#11 с поддержкой российской криптографии, а если есть, то боязно его использовать в учебных целях. И вот именно для того, чтобы утилиту можно было легко использовать в учебных целях, прежде всего, и появилась кнопка «Создать Токены». Нажав на эту кнопку, вы увидите инструкцию как получить либо программный либо облачный токены:
![](https://habrastorage.org/webt/0g/gr/y8/0ggry8mqbsx-jrhuv9r0xkky3go.png)
Эти токены реализуют самые последние рекомендации ТК-26 для PKCS#11 v.2.40.
Рассмотрим вкратце как получить облачный токен. Скачиваем необходимый дистрибутив, распаковываем при необходимости и запускаем. Если у нас нет облачного токена, то мы получим следующее сообщение:
![](https://habrastorage.org/webt/b1/3j/of/b13jofvep6tfa2ubmxxvgq0xite.png)
Поскольку у нас нет еще облачного токена, то нажимаем кнопку «Регистрация в облаке»:
![](https://habrastorage.org/webt/vh/l1/em/vhl1emb5c_osrid40cykaz-srcc.png)
После заполнения полей, нажимаем кнопку «Готово»:
![](https://habrastorage.org/webt/2s/sy/jn/2ssyjneg9ioqrn91pr84rthwi-4.png)
Поскольку мы ведем речь прежде всего об обучении, то можно сохранить пароль для доступа к облаку (но не токену) на рабочем месте:
![](https://habrastorage.org/webt/mr/7i/xx/mr7ixxhx7odzwumrhvnenak_nri.png)
Инициализация токена
Теперь, когда, мы зарегистрировались в облаке, мы выходим из утилиты guils11cloud_conf и возвращаемся к утилите cryptoarmpkcs для конфигуирования облачного токена. Здесь надо отметить, что библиотека облачного токена будет сохранена в папке ls11cloud, созданной в домашнем каталоге пользователя. Именно эту библиотеку и надо будет выбрать в качестве библиотеки PKCS#11 для облачного токена. После выбора библиотеки можно посмотреть и поддерживаемые криптографические механизмы:
![](https://habrastorage.org/webt/yi/om/ss/yiomssfq9j5d0l7dhda6ji6h7ck.png)
Возвращаемся к инициализации облачного токена нажав кнопку «Конфигурирование токена». Выбираем операцию «Инициализация токена», заполняем поля (вспоминаем, что дефолтный SO-PIN — 87654321) и нажимаем кнопку «Выполнить операцию»:
![](https://habrastorage.org/webt/v-/1x/dc/v-1xdcamiyd_et8pwvnndcx_vbo.png)
Все токен готов к работе. Но не забудьтк сменить SO-PIN и переодическм менять пользовательский PIN-код. По аналогичной схеме можно создать и программный токен. Желающие могут попробовать:
![](https://habrastorage.org/webt/_8/3i/za/_83izagmlgyw9obbk0uamo4zee4.png)
Теперь мы можете хранить на них свои личные сертификаты, подписывать документы, делать все то, о чем писалось в этой серии статей.
Ближайшие нововведения в ИОК/PKI
Госдума 7 ноября 2019 года приняла в первом чтении поправки в закон «Об электронной подписи». Этот поправки касаются всех организаций и ИП, поскольку изменятся правила выдачи электронных подписей.
Если я правильно все понял, то квалифицированные сертификаты юридические лица и индивидуальные предприниматели смогут получать только в Федеральной налоговой службе, а финансовые организации — в ЦБ РФ. И только используя эти сертификаты можно будет ставить
усиленную квалифицированную электронную подпись (Cades-XLT1).
Аккредитованные Минкомсвязью удостоверяющие центры (УЦ) смогут выдавать такие сертификаты только физическим лицам.
При этом требования к УЦ сильно изменятся: собственный капитал должен быть увеличен с 7 млн до 500 млн — 1 млрд, размер страховой ответственности увеличивается с 30 млн до 300-500 млн рублей, срок аккредитации сокращается с 5 лет до 3 лет.
Законопроект уже вызвал острую критику. Основные претензии сводятся к тому, что изменения приведут к закрытию подавляющего большинства коммерческих УЦ, потребуют значительных затрат из бюджета на расширение и поддержание мощностей УЦ ФНС, а также к концентрации всех типов рисков на единственной инфраструктуре, что станет удобной мишенью для кибератак.
Есть ще одна поправка — обязанность подписывать документы компаний не одной, а двумя усиленными квалифицированными подписями одновременно. Руководитель организации должен будет ставить на документе подпись юридического лица и личную цифровую подпись как физического лица.
И вот тут утилита cryptoarmpkcs будет очень и очень кстати, поскольку ее функционал позволяет ставить под документом несколько подписей, а также просматривать кто и когда подписал документ:
![](https://habrastorage.org/webt/uy/tq/yl/uytqylilmmhwhzbvpto85vljcwq.png)
P.S. Для тех кто в первый раз хочет получить утилиты, это по-прежнему можно сделать здесь: