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

Usando mecanismos de token criptográfico PKCS#11 na plataforma Android Chegou a hora de usar criptografia Mecanismos PKCS#11 e na plataforma Android. Alguns podem dizer que não existem tokens de hardware para Android. Mas, se for assim, então este é apenas um fenômeno temporário. Mas hoje você pode colocar um token de software ou usar token de nuvem. Já que a utilidade criptoarmpkcs-A é desenvolvido para a plataforma Android usando Androwish na linguagem de script Tcl/Tk, então o pacote é usado para conectar tokens TclPKCS11 versão 1.0.1.

Neste caso, nenhum processamento do pacote foi necessário. Tudo o que foi feito foi adicionar um script ao projeto para construir a biblioteca de pacotes escrita na linguagem Si, para Android e a própria distribuição da biblioteca. Foi decidido adicionar bibliotecas de software ls11sw2016 e tokens de nuvem ls11cloud para várias plataformas ao mesmo projeto.

Todo o resto é simples. Adicionamos botões para selecionar um token funcional à segunda janela e obtemos:

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

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

Por padrão, um token de software está conectado. Se não tiver sido criado anteriormente, você será solicitado a inicializá-lo. Lembremos que inicialização de token consiste em atribuir uma etiqueta e definir um código PIN do usuário:

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

Observe que o token de software foi desenvolvido de acordo com as recomendações do 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 que suporte a criptografia russa possui esta funcionalidade:

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

Surge a pergunta: - como instalar um certificado pessoal em 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”):

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

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

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

Agora você pode salvar a solicitação em unidades flash e ir para centro de certificação para um certificado. Se você usar o certificado para fins de teste ou internamente, também poderá usar o utilitário para emitir um certificado CAFL63. O certificado resultante é importado para o token na aba “Ver Solicitação/Certificado”:

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

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

No próximo artigo, explicaremos como se conectar a um token de nuvem. E a questão da transferência das funções de geração de certificados para a plataforma móvel permanece em aberto. Isso é necessário?

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

PS Salvando o registro

Para construir o pacote, use o utilitário ossos de AndroidWish SDK. Depois que o pacote for compilado com sucesso, um botão “Instalar e executar” aparecerá e, quando clicado, uma janela de log será aberta mostrando a saída do adb logcat (Android Debug Bridge logger). A desvantagem desta tela é que é difícil encontrar a mensagem de erro, especialmente com o sinalizador “V” (detalhado) ativado. Portanto, foi adicionado um botão “Salvar”, que salva o log no arquivo /tmp/logBone.txt (estamos falando de Linux):

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

Com o advento deste 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 ossos 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 de salvamento adb_logcat_save se parece com isto:

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
}

Fonte: habr.com

Adicionar um comentário