Использование механизмов криптографических токенов PKCS#11 на платформе Android

    Подошло время задействовать криптографические механизмы PKCS#11 и на платформе Android. Кто-то может сказать, что нет аппаратных токенов для Android. Но, если это и так, то это только временное явление. Но уже сегодня можно поставить программный токен или использовать облачный токен. Поскольку утилита cryptoarmpkcs-A разрабатывается для платформы Android с использованием Androwish на скриптовом языке Tcl/Tk, то для подключения токенов используется пакет TclPKCS11 версии 1.0.1.

    При этом никакой переработки пакета не потребовалось. Все что было сделано, это был добавлены в проект скрипт для сборки библиотеки пакета, написанной на языке Си, под Android и сам дистрибутив библиотеки. В этот же проект было решено добавить и библиотеки программного ls11sw2016 и облачного ls11cloud токенов для различных платформ.

    Далее все просто. Добавляем на второе окно кнопки выбора рабочего токена и получаем:

    • программный токен ls11sw2016;
    • облачный токен ls11cloud;
    • другой токен PKCS11#11.



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



    Отметим, что программный токен разработан с соответствии с рекомендациями PKCS#11 v.2.40 и ТК-26. Для получения полной информации о токене, включая поддерживаемые криптографические механизмы, достаточно нажать на кновку «О токене и его криптографии» в основном меню («Функционал»). Сегодня ни один аппаратный токен с поддержкой российской криптографии не имеет такого функционала:



    Возникает вопрос:- как установить личный сертификат на токен. Есть два варианта. Первый вариант это импортировать сам сертификат и его ключевую пару через контейнер PKCS#12 (кнопка «Работаем с PKCS12/PFX»):



    Второй вариант предполагает создания запроса (PKCS#10) на сертификат, Этот вариант (функция «Запрос на сертификат») предусматривает генерацию ключевой пары непосредственно на токене:



    Теперь можно сохранить запрос на флэшки и вместе с документами идти в удостоверяюший центр за сертификатом. Если вы будете использовать сертификат в тестовых целях или внутрикорпоративно, то для выпуска сертификата можно воспользоваться и утилитой CAFL63. Полученный сертификат импортируется на токен на вкладке «Просмотр запроса/Сертификата»:



    Теперь можно подписывать документы сертификатами, хранящимися на токене, используя вкладку «Подписать документ».

    В следующей статье мы расскажем как подключиться к облачному токену. И остается пока открытым вопрос с переносом на мобильную платформу функций генерации сертификатов. Есть ли в этом необходимость?

    Обновленную версию утилиты cryptoarmpkcs-A для платформы Android можно скачать здесь:


    P.S. Сохранение журнала


    Для сборки пакета используется утилита bones из состава AndroWish SDK. После успешной сборки пакета появляется кнопка «Install & run», после нажатия которой открывается окно журнала, в котором отображаются выходные данные adb logcat (средства ведения журнала Android Debug Bridge). Недостатком этого экрана является то, что в нем сложно найти сообщение об ошибке, особенно с включенным флажком «V» (verbose). Поэтому была добавлена кнопка «Save», которая сохраняет журнал в файле /tmp/logBone.txt (речь идет о Linux):



    С появлением этой кнопки процесс отладки приложения значительно упростился.

    Для добавления кнопки достаточно добавить в файл bones после строки 2591 следущий код:

    	    ttk::button $l.frame.clear -text "Clear" -width 6 \
    		-command [list adb_logcat_clear $l.text]
    #Добавленный код
    	    ttk::button $l.frame.save -text "Save" -width 6 \
    		-command [list adb_logcat_save $l.text]
    
    	    ttk::button $l.frame.run -text "Run" -width 6 \
    		-command [list adb_logcat_run $l]

    Команда сохранения adb_logcat_save имеет вид:

    proc adb_logcat_save {text} {
        set tt [$text get 1.0 end]
        set file "/tmp/logBone.txt"
        file delete -force $file
      #Собственно запись в файл
        set fd [open $file w]
        chan configure $fd -translation binary
        puts -nonewline $fd $tt
        close $fd
    }
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 4

      0
      Дурацкий вопрос: а кому может это понадобиться в таком виде?
      Если использовать телефон как токен, то подписывать документы всё равно удобнее на компьютере. Почему бы просто не сделать подпись по сети (через bt или wifi), но ключ хранить в телефоне и при каждой подписи например просить отпечаток пальца отрезанного от владельца подписи? В данном случае телефон будет просто таким навороченным облачным хранилищем личных ключей с логами, преферансом и поэтессами.
        0

        Почему дурацкмй? Нормальный вопрос. Попытаюсь ответить.
        Первое, в следующей публикации будет показано как сделать подпись с использованием облачного токена на телефоне.
        Второе, хотя лично я придерживаюсь вашей точки зрениея,


        подписывать документы всё равно удобнее на компьютере

        окружающие меня люди хотят подписывать документы на телефоне. Так что многие считают, что нужно иметь и приложение для подписания документов на компьютере.
        Кстати, при формировании подписи сеть активно используется: получить CRL или OCSP ответы, корневые сертификаты и т.п.
        Да, и отрезать ничего не надо.

          0
          окружающие меня люди хотят подписывать документы на телефоне
          Вас окружают очень странные люди.
          И еще нормальные «шизофреники» никогда не доверят свои ключи облачным сервисам. Да и телефонам тоже.
            0

            Все люди посвоему странные, поэтому они и люди.


            нормальные «шизофреники» никогда не доверят свои ключи облачным сервисам. Да и телефонам тоже

            Я сам такой. Но мы, говоря про токены PKCS#11, имеем ввиду прежде всего аппаратные токены с поддержкой соответсвующей криптографии. А это фактически автономные компьютеры.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое