Android platformunda PKCS#11 şifreleme belirteci mekanizmalarını kullanma

Android platformunda PKCS#11 şifreleme belirteci mekanizmalarını kullanma Kriptografik kullanmanın zamanı geldi PKCS#1 mekanizmaları1 ve Android platformunda. Bazıları Android için donanım belirteçlerinin olmadığını söyleyebilir. Ancak eğer durum böyleyse, bu yalnızca geçici bir olgudur. Ancak bugün bir yazılım belirteci koyabilir veya kullanabilirsiniz. bulut jetonu. Yardımcı programdan bu yana kriptoarmpkcs-A Android platformu için Tcl/Tk betik dilinde Androwish kullanılarak geliştirildi, daha sonra paket tokenleri bağlamak için kullanıldı TclPKCS11 sürüm 1.0.1.

Bu durumda paketin işlenmesine gerek yoktu. Yapılan tek şey, dilde yazılmış paket kütüphanesini oluşturmak için projeye bir komut dosyası eklemekti. kendileri, Android ve kütüphane dağıtımının kendisi için. Aynı projeye ls11sw2016 yazılım kütüphanelerinin ve çeşitli platformlar için cloud ls11cloud tokenlarının eklenmesine karar verildi.

Geri kalan her şey basit. İkinci pencereye çalışan bir jeton seçmek için düğmeler ekliyoruz ve şunları elde ediyoruz:

  • yazılım belirteci ls11sw2016;
  • bulut belirteci ls11cloud;
  • başka bir PKCS11#11 jetonu.

Android platformunda PKCS#11 şifreleme belirteci mekanizmalarını kullanma

Varsayılan olarak bir yazılım belirteci bağlanır. Daha önce oluşturulmadıysa, başlatmanız istenecektir. Bunu hatırlayalım belirteç başlatma bir etiket atamaktan ve bir kullanıcı PIN kodunu ayarlamaktan oluşur:

Android platformunda PKCS#11 şifreleme belirteci mekanizmalarını kullanma

Yazılım belirtecinin PKCS#11 v.2.40 ve TK-26'nın önerilerine uygun olarak geliştirildiğini unutmayın. Desteklenen kriptografik mekanizmalar da dahil olmak üzere token hakkında tam bilgi edinmek için ana menüdeki (“İşlevsel”) “Token ve kriptografisi hakkında” düğmesine tıklamanız yeterlidir. Bugün, Rus kriptografisini destekleyen tek bir donanım tokenı bu işlevselliğe sahip değil:

Android platformunda PKCS#11 şifreleme belirteci mekanizmalarını kullanma

Şu soru ortaya çıkıyor: - kişisel sertifikanın bir jetona nasıl kurulacağı. İki seçenek var. İlk seçenek, sertifikanın kendisini ve anahtar çiftini PKCS#12 kapsayıcısı ("PKCS12/PFX ile Çalış" düğmesi) aracılığıyla içe aktarmaktır:

Android platformunda PKCS#11 şifreleme belirteci mekanizmalarını kullanma

İkinci seçenek, bir sertifika için istek (PKCS#10) oluşturmayı içerir. "Sertifika Talebi") doğrudan belirteç üzerinde bir anahtar çiftinin oluşturulmasını sağlar:

Android platformunda PKCS#11 şifreleme belirteci mekanizmalarını kullanma

Artık isteği flash sürücülere kaydedebilir ve şu adrese gidebilirsiniz: sertifikasyon merkezi bir sertifika için. Sertifikayı test amacıyla veya dahili olarak kullanacaksanız, yardımcı programı sertifika düzenlemek için de kullanabilirsiniz. CAFL63. Ortaya çıkan sertifika, "İsteği/Sertifikayı Görüntüle" sekmesindeki tokena aktarılır:

Android platformunda PKCS#11 şifreleme belirteci mekanizmalarını kullanma

Artık sekmeyi kullanarak belirteçte depolanan sertifikalara sahip belgeleri imzalayabilirsiniz. "Bir belge imzala".

Bir sonraki yazımızda size bulut token’a nasıl bağlanacağınızı anlatacağız. Ve sertifika oluşturma işlevlerinin mobil platforma aktarılması sorunu hala açık. Bu gerekli mi?

Android platformu için cryptoarmpkcs-A yardımcı programının güncellenmiş sürümünü buradan indirebilirsiniz:

PS Günlüğün kaydedilmesi

Paketi oluşturmak için şuradaki bone yardımcı programını kullanın: AndroWish SDK'sı. Paket başarılı bir şekilde oluşturulduktan sonra, bir "Kur ve çalıştır" düğmesi görünür ve tıklandığında adb logcat'in (Android Debug Bridge logger) çıktısını gösteren bir günlük penceresi açılır. Bu ekranın dezavantajı, özellikle "V" (ayrıntılı) bayrağı etkinken hata mesajını bulmanın zor olmasıdır. Bu nedenle, günlüğü /tmp/logBone.txt dosyasına kaydeden bir “Kaydet” düğmesi eklendi (Linux'tan bahsediyoruz):

Android platformunda PKCS#11 şifreleme belirteci mekanizmalarını kullanma

Bu düğmenin gelişiyle uygulamada hata ayıklama işlemi büyük ölçüde basitleştirildi.

Bir düğme eklemek için, bone dosyasına 2591. satırdan sonra aşağıdaki kodu eklemeniz yeterlidir:

	    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 save komutu şuna benzer:

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
}

Kaynak: habr.com

Yorum ekle