Usando mecanismos de token criptográfico PKCS # 11 na plataforma Android

Chegou a hora de usar os mecanismos criptográficos PKCS # 1 na plataforma Android. Alguém pode dizer que não há tokens de hardware para o Android. Mas, se é assim, então esse é apenas um fenômeno temporário. Mas hoje você pode colocar um token de software ou usar um token de nuvem . Como o utilitário cryptoarmpkcs-A foi desenvolvido para a plataforma Android usando Androwish na linguagem de script Tcl / Tk, o pacote TclPKCS11 versão 1.0.1 é usado para conectar tokens .

Ao mesmo tempo, não foi necessário processamento do pacote. Tudo o que foi feito foi adicionado um script ao projeto para criar uma biblioteca de pacotes escrita em C, para Android e a própria distribuição da biblioteca. Foi decidido adicionar as bibliotecas dos softwares ls11sw2016 e tokens de nuvem ls11cloud para várias plataformas no mesmo projeto.

O resto é simples. Adicione os botões para selecionar o token de trabalho na segunda janela e obtenha:

  • token de software ls11sw2016;
  • token de nuvem ls11cloud;
  • outro token PKCS11 # 11.



Por padrão, um token de software está conectado. Se não foi criado anteriormente, será proposto inicializá-lo. Lembre-se de que a inicialização do token consiste em atribuir uma etiqueta e definir um código PIN personalizado:



Observe que o token de software foi projetado de acordo com as recomendações da PKCS # 11 v.2.40 e TK-26. Para obter informações completas sobre o token, incluindo mecanismos criptográficos suportados, basta clicar no botão "Sobre o token e sua criptografia" no menu principal ("Funcional"). Hoje, nem um único token de hardware com suporte para criptografia russa possui esta funcionalidade:



Surge a pergunta: - como instalar um certificado pessoal para um token. Existem duas opções. A primeira opção é importar o próprio certificado e seu par de chaves através do contêiner PKCS # 12 (o botão "Trabalhar com PKCS12 / PFX"): a



segunda opção envolve a criação de uma solicitação (PKCS # 10) para o certificado.Esta opção (a função "Solicitação de certificado" ) fornece geração de par de chaves diretamente no token:



agora você pode salvar a solicitação de pen drives e ir para o centro de certificação com os documentos do certificado. Se você usará o certificado para fins de teste ou dentro da empresa, o utilitário CAFL63 também poderá ser usado para emitir o certificado . O certificado recebido é importado para o token na guia "Exibir solicitação / certificado":



Agora você pode assinar documentos com certificados armazenados no token usando a guia "Assinar um documento" .

No próximo artigo, mostraremos como se conectar a um token de nuvem. E a questão permanece até agora com a transferência de funções de geração de certificado para a plataforma móvel. Existe uma necessidade disso?

A versão atualizada do utilitário cryptoarmpkcs-A para a plataforma Android pode ser baixada aqui:


Diário de economia do PS


Para compilar o pacote, é usado o utilitário bones do AndroWish SDK . Após a montagem bem-sucedida do pacote, o botão Instalar e executar é exibido, após clicar em que uma janela de log é aberta, exibindo a saída do adb logcat (recurso de log do Android Debug Bridge). A desvantagem dessa tela é que é difícil encontrar uma mensagem de erro nela, especialmente com o sinalizador “V” (detalhado) ativado. Portanto, o botão "Salvar" foi adicionado, o que salva o log no arquivo /tmp/logBone.txt (estamos falando sobre Linux):



Com o advento desse botão, o processo de depuração do aplicativo foi bastante simplificado.

Para adicionar um botão, basta adicionar o seguinte código ao arquivo bones após a linha 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]

O comando save adb_logcat_save possui o formato:

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
}

All Articles