Wykorzystanie mechanizmów tokena kryptograficznego PKCS#11 na platformie Android

Wykorzystanie mechanizmów tokena kryptograficznego PKCS#11 na platformie Android Nadszedł czas na wykorzystanie kryptografii Mechanizmy PKCS#11 oraz na platformę Android. Niektórzy mogą powiedzieć, że nie ma tokenów sprzętowych dla Androida. Ale jeśli tak jest, to jest to jedynie zjawisko przejściowe. Ale dzisiaj możesz umieścić token oprogramowania lub użyć znacznik chmury. Od użyteczności kryptoarmpkcs-A jest opracowany dla platformy Android przy użyciu Androwish w języku skryptowym Tcl/Tk, wówczas pakiet służy do łączenia tokenów Wersja TclPKCS11 1.0.1.

W tym przypadku nie było konieczności przetwarzania paczki. Pozostało jedynie dodać do projektu skrypt budujący bibliotekę pakietów napisaną w tym języku sami, dla Androida i samej dystrybucji bibliotek. Zdecydowano o dodaniu do tego samego projektu bibliotek oprogramowania ls11sw2016 oraz tokenów cloud ls11cloud dla różnych platform.

Wszystko inne jest proste. Do drugiego okna dodajemy przyciski wyboru działającego tokena i otrzymujemy:

  • token programowy ls11sw2016;
  • token chmury ls11cloud;
  • kolejny token PKCS11#11.

Wykorzystanie mechanizmów tokena kryptograficznego PKCS#11 na platformie Android

Domyślnie podłączony jest token programowy. Jeśli nie został on wcześniej utworzony, zostaniesz poproszony o jego zainicjowanie. Przypomnijmy Ci to inicjalizacja tokenu polega na przypisaniu tagu i ustaleniu kodu PIN użytkownika:

Wykorzystanie mechanizmów tokena kryptograficznego PKCS#11 na platformie Android

Należy pamiętać, że token programowy został opracowany zgodnie z zaleceniami PKCS#11 v.2.40 i TK-26. Aby uzyskać pełną informację o tokenie, w tym o obsługiwanych mechanizmach kryptograficznych, wystarczy kliknąć w przycisk „O tokenie i jego kryptografii” w menu głównym („Funkcjonalny”). Dziś żaden token sprzętowy obsługujący rosyjską kryptografię nie ma takiej funkcjonalności:

Wykorzystanie mechanizmów tokena kryptograficznego PKCS#11 na platformie Android

Powstaje pytanie: - jak zainstalować certyfikat osobisty na tokenie. Istnieją dwie opcje. Pierwsza opcja polega na zaimportowaniu samego certyfikatu i jego pary kluczy poprzez kontener PKCS#12 (przycisk „Praca z PKCS12/PFX”):

Wykorzystanie mechanizmów tokena kryptograficznego PKCS#11 na platformie Android

Druga opcja polega na utworzeniu żądania (PKCS#10) o wydanie certyfikatu.Ta opcja (funkcja „Żądanie certyfikatu”) przewiduje generację pary kluczy bezpośrednio na tokenie:

Wykorzystanie mechanizmów tokena kryptograficznego PKCS#11 na platformie Android

Teraz możesz zapisać żądanie na dyskach flash i przejść do centrum certyfikacji na certyfikat. Jeśli będziesz używać certyfikatu do celów testowych lub wewnętrznie, możesz także użyć narzędzia do wystawienia certyfikatu CAFL63. Powstały certyfikat jest importowany do tokena w zakładce „Wyświetl żądanie/certyfikat”:

Wykorzystanie mechanizmów tokena kryptograficznego PKCS#11 na platformie Android

Za pomocą zakładki możesz teraz podpisywać dokumenty certyfikatami zapisanymi na tokenie „Podpisz dokument”.

W następnym artykule opowiemy Ci jak połączyć się z tokenem w chmurze. Otwarta pozostaje kwestia przeniesienia funkcji generowania certyfikatów na platformę mobilną. Czy to konieczne?

Zaktualizowaną wersję narzędzia cryptoarmpkcs-A na platformę Android można pobrać tutaj:

PS Zapisywanie logu

Aby zbudować pakiet, użyj narzędzia Bones z SDK AndroWisha. Po pomyślnym zbudowaniu pakietu pojawi się przycisk „Zainstaluj i uruchom”, a po kliknięciu otworzy się okno dziennika pokazujące dane wyjściowe programu adb logcat (rejestrator Android Debug Bridge). Wadą tego ekranu jest to, że trudno jest znaleźć komunikat o błędzie, zwłaszcza przy włączonej flagi „V” (pełny). Dlatego dodano przycisk „Zapisz”, który zapisuje logi w pliku /tmp/logBone.txt (mówimy o Linuksie):

Wykorzystanie mechanizmów tokena kryptograficznego PKCS#11 na platformie Android

Wraz z pojawieniem się tego przycisku proces debugowania aplikacji został znacznie uproszczony.

Aby dodać przycisk, po prostu dodaj następujący kod do pliku Bones po linii 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]

Polecenie zapisu adb_logcat_save wygląda następująco:

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
}

Źródło: www.habr.com

Dodaj komentarz