- PVSM.RU - https://www.pvsm.ru -

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

Использование механизмов криптографических токенов PKCS#11 на платформе Android - 1 Подошло время задействовать криптографические механизмы PKCS#1 [1]1 и на платформе Android. Кто-то может сказать, что нет аппаратных токенов для Android. Но, если это и так, то это только временное явление. Но уже сегодня можно поставить программный токен или использовать облачный токен [2]. Поскольку утилита cryptoarmpkcs-A [3] разрабатывается для платформы Android с использованием Androwish на скриптовом языке Tcl/Tk, то для подключения токенов используется пакет TclPKCS11 версии 1.0.1 [4]. При этом никакой переработки пакета не потребовалось. Все что было сделано, это был добавлены в проект скрипт для сборки библиотеки пакета, написанной на языке Си [5], под Android и сам дистрибутив библиотеки. В этот же проект было решено добавить и библиотеки программного ls11sw2016 и облачного ls11cloud токенов для различных платформ.
Далее все просто. Добавляем на второе окно кнопки выбора рабочего токена и получаем:

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

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

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

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

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

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

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

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

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

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

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

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

Теперь можно подписывать документы сертификатами, хранящимися на токене, используя вкладку «Подписать документ» [10].
В следующей статье мы расскажем как подключиться к облачному токену. И остается пока открытым вопрос с переносом на мобильную платформу функций генерации сертификатов. Есть ли в этом необходимость?
Обновленную версию утилиты cryptoarmpkcs-A для платформы Android можно скачать здесь:

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

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

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

С появлением этой кнопки процесс отладки приложения значительно уростился.
Для добавления кнопки достаточно добавить в файл 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
}

Автор: Орлов Владимир Николаевич

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/android/346804

Ссылки в тексте:

[1] механизмы PKCS#1: https://habr.com/ru/post/449462/

[2] облачный токен: https://habr.com/ru/post/403563/

[3] cryptoarmpkcs-A: https://habr.com/ru/post/482574/

[4] TclPKCS11 версии 1.0.1: https://github.com/a513/TclPKCS11

[5] Си: https://habr.com/ru/post/464075/

[6] инициализация токена: https://habr.com/ru/post/476210/

[7] «Запрос на сертификат»: https://habr.com/ru/post/453164/

[8] удостоверяюший центр: https://habr.com/ru/post/357668/

[9] CAFL63: https://habr.com/ru/post/415423/

[10] «Подписать документ»: https://habr.com/ru/post/457288/

[11] AndroWishApp-debug.apk: https://github.com/a513/CryptoArmPKCS/raw/master/distr/AndroWishApp-debug.apk

[12] AndroWish SDK: https://www.androwish.org/home/wiki?name=AndroWish+SDK

[13] Источник: https://habr.com/ru/post/488528/?utm_source=habrahabr&utm_medium=rss&utm_campaign=488528