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

Використання механізмів криптографічних токенів PKCS#11 на платформі Android Настав час задіяти криптографічні механізми PKCS#11 та на платформі Android. Хтось може сказати, що немає апаратних токенів для Android. Але якщо це й так, то це лише тимчасове явище. Але вже сьогодні можна поставити програмний токен чи використати хмарний токен. Оскільки утиліта cryptoarmpkcs-A розробляється для платформи Android з використанням Androwish скриптовою мовою Tcl/Tk, то для підключення токенів використовується пакет TclPKCS11 версії 1.0.1.

При цьому жодної переробки пакета не потрібно. Все, що було зроблено, це був доданий в проект скрипт для складання бібліотеки пакета, написаної мовою самі, під Android та сам дистрибутив бібліотеки. У цей же проект було вирішено додати і бібліотеки програмного ls11sw2016 та хмарного ls11cloud токенів для різних платформ.

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

  • програмний токен ls11sw2016;
  • хмарний токен ls11cloud;
  • інший токен PKCS11 # 11.

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

За промовчанням підключається програмний токен. Якщо раніше він не створювався, то буде запропоновано проініціалізувати його. Нагадаємо, що ініціалізація токена полягає у призначенні мітки та встановленні PIN-коду користувача:

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

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

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

Виникає питання: - як встановити індивідуальний сертифікат на токен. Є два варіанта. Перший варіант це імпортувати сам сертифікат та його ключову пару через контейнер PKCS#12 (кнопка «Працюємо з PKCS12/PFX»):

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

Другий варіант передбачає створення запиту (PKCS#10) на сертифікат, Цей варіант (функція "Запит на сертифікат") передбачає генерацію ключової пари безпосередньо на токені:

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

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

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

Тепер можна підписувати документи сертифікатами, що зберігаються на токені, використовуючи вкладку "Підписати документ".

У наступній статті ми розповімо, як підключитися до хмарного токену. І залишається поки що відкритим питання з перенесенням на мобільну платформу функцій генерації сертифікатів. Чи є у цьому необхідність?

Оновлену версію утиліти cryptoarmpkcs-A для Android можна скачати тут:

P.S. Збереження журналу

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

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

З появою цієї кнопки процес налагодження програми значно спростився.

Для додавання кнопки достатньо додати файл 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
}

Джерело: habr.com

Додати коментар або відгук