Um Sysadmin Cansado
LINUX, SEGURANÇA, TOKEN, CERTISIGN

eToken SafeNet no Linux (Fedora/Debian)

Introdução

A briga dos usuários de ceritificados digitais da ICP-Brasil no Linux é eterna e sem perspectiva de fim: A falta de suporte oficial das Autoridades Certificadoras e do próprio governo em seus sistemas são razões para a ínfima adoção de Software Livre nas empresas.

A Zenith Tecnologia é fortemente baseada em Software Livre e por isso precisa dos sistemas do Governo em estado operacional com Linux. Até o momento tem sido possível seguir sem uso de Softwares Proprietários para o dia a dia da empresa e esta postagem no blog busca documentar mais um passo relativo ao uso de sistemas governamentais com Linux: O funcionamento dos SmartCards.

A escolha da Autoridade Certificadora

Há muitos anos uso a Certisign para emissão de meus certificados eCPF e eCNPJ. A razão para a escolha deles é a organização enquanto empresa para a emissão e validação dos certificados. É fácil marcar a entrevista, nunca tive problemas com os ceritifcados tampouco com os hardwares Criptográficos. No entanto, cada nova compra de SmartCard torna-se uma dor de cabeça e não foi diferente desta vez.

A Certisign usa soluções da Gemalto (Atualmente comprada pela Thales) e normalmente estes SmartCards não funcionam de primeira no Linux. Fui informado ao emitir meu certificado que a tecnologia dos SmartCards havia sido atualizada e fui munido de Notebook para a validação presencial.

Em tempos de pandemia de SARS-CoV-2 - dispar da ignorância - se faz importante ressaltar que é possível a emissão de certificados validados por Video Conferência. A razão que precisei comparecer ao prédio da Associação Comercial se deu somente devida a necessidade da retirada dos novos cartões presencialmente.

O novo cartão

O novo cartão me foi descrito como “Cartão com o chip redondo” - descrição relativamente adequada:

eCPF e cCNPJ Certisign Frente

Para quem tiver curiosidade, a parte traseira com a numeração de modelo/lote do cartão (Não é S/N, por isso envio a imagem)

eCPF/eCNPJ Costas

A identificação via pcsc_scan é:

[root@manaira ~]# pcsc_scan 
Using reader plug'n play mechanism
Scanning present readers...
0: Gemalto PC Twin Reader 00 00
 
Thu Sep 16 12:19:32 2021
 Reader 0: Gemalto PC Twin Reader 00 00
  Event number: 11
  Card state: Card inserted, Shared Mode, 
  ATR: 3B 7F 96 00 00 80 31 80 65 B0 84 56 51 10 12 0F FE 82 90 00

ATR: 3B 7F 96 00 00 80 31 80 65 B0 84 56 51 10 12 0F FE 82 90 00
+ TS = 3B --> Direct Convention
+ T0 = 7F, Y(1): 0111, K: 15 (historical bytes)
  TA(1) = 96 --> Fi=512, Di=32, 16 cycles/ETU
    250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 80 31 80 65 B0 84 56 51 10 12 0F FE 82 90 00
  Category indicator byte: 80 (compact TLV data object)
    Tag: 3, len: 1 (card service data byte)
      Card service data byte: 80
        - Application selection: by full DF name
        - EF.DIR and EF.ATR access services: by GET RECORD(s) command
        - Card with MF
    Tag: 6, len: 5 (pre-issuing data)
      Data: B0 84 56 51 10
    Tag: 1, len: 2 (country code, ISO 3166-1)
      Country code: 0F FE
    Tag: 8, len: 2 (status indicator)
      SW: 9000

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 7F 96 00 00 80 31 80 65 B0 84 56 51 10 12 0F FE 82 90 00
3B 7F .. 00 00 80 31 80 65 B0 .. .. .. .. 12 0F FE 82 90 00
	IDPrime MD 8840, 3840, 3810, 840 and 830 Cards T=0

E justamente esta identificação me permitiu achar os modulos corretos.

Os modulos PKCS11 do cartão

Até aqui, nada demais, a versão mais atual do Safenet Authentication Client é a 10.8 com um changelog interessante:

Sobre o primeiro ítem do changelog, who cares? Suportar versões novas de Ubuntu/RHEL/Fedora e CentOS é interessante. O IDPrime novo não faz sentido nesse caso e o Suporte a GTK3 seria muito desejado. Mas o mundo não é flores.

Nos resta a versão 10.7 disponível no link da GlobalSign: https://support.globalsign.com/ssl/ssl-certificates-installation/safenet-drivers.

Parte genérica da instalação: Pacotes

Não abordarei aqui os procedimentos de descompressão de arquivos pós-descarga. A parte que poucos sabem aqui é como instalar adequadamente pacotes .deb e .rpm (nas versões modernas) e seguem as linhas de exemplo para Fedora e Debian-based:

Fedora

dnf install /home/leonardo/Downloads/Linux\ RPM\ x64/SafenetAuthenticationClient-10.7.77-1.x86_64.rpm

Debian-based

apt install /home/leonardo/Downloads/2021_CertisignSmartCard/safenetauthenticationclient_10.7.77_amd64.deb

Esta instalação dá acesso imediato ao Safenet Authentication Client Tools:

SACTools

Parte não genérica da instalação: Configurações

Debian

No Debian, por usar em uma máquina com muitas restrições computacionais, utilizei o certificado via Firefox, bastando adicionar um novo plugin PKCS11 apontado para /usr/lib/pkcs11/libIDPrimePKCS11.so

Firefox PKCS11

Fedora

No Fedora com Chrome - numa máquina mais modesta ainda - a coisa fica diferente por causa do p11-kit

Em geral as pessoas tem medo do diferente, então é comum ouvir reclamações de que ficou mais difícil fazer as coisas. No caso do p11-kit esse caso não se aplica - ao menos não em relação ao caos que é adicionar módulos PKCS11 no Google Chrome.

Bastam dois passos: A criação dos seguintes arquivos (Como root):

/etc/pkcs11/modules/eToken.module:

module: libeToken.so
managed: true

/etc/pkcs11/modules/IDPrime.module

module: libIDPrimePKCS11.so
managed: true
E a criação dos links simbólicos corretos:
ln -s /usr/lib64/libIDPrimePKCS11.so /usr/lib64/pkcs11/
ln -s /usr/lib64/libeToken.so /usr/lib64/pkcs11/

E aqui talvez fique explicado o update da versão 10.8 ter citado suporte explicito para distribuições Linux novas: Acredito que estes arquivos já sejam corretamente posicionados. No Fedora, a configuração do p11-kit é suficiente para todos os navegadores (E acredito que até para a autenticação PAM):

Firefox com p11-kit

Chrome com p11-kit

Outras distribuições (?)

Acredito que qualquer distribuição que utilize o p11-kit terá o mesmo procedimento adotado no Fedora - Seja nos pacotes RPM ou nos pacotes DEB1.

Considerações finais

Pela primeira vez o procedimento foi mais fácil de executar, embora com alguns procedimentos manuais. Não é irrelevante notar que a versão 10.8 resolveria os problemas de acessibilidade em todas as distribuições modernas baseadas em RPM/DEB. Esta observação deveria ser suficiente para cobrar das Autoridades Ceritificadoras que disponibilzem os módulos atualizados de seus sistemas também.

Uma questão que pode ser relevante para escritórios que compartilhem cartões é a presença de um stack de “cardshare” no p11-kit. Pode ser um recurso muito interessante quando mais de uma pessoa precisa ler o SmartCard sem precisar apelar para métodos de transporte bastante arcaicos quanto o CPC/CPL.

1 É preciso notar que na versão deb no lugar da libeToken.so, é instalada na pasta pkcs11 o arquivo libeTPkcs11.so. Usualmente a guia de qual arquivo deve ser criado o link simbólico é usar os arquivos contidos em /usr/lib/pkcs11.