Utilização de Certificados Digitais no Expresso
1. Introdução
Este documento tem por finalidade apresentar a utilização de certificados digitais no Expresso. O objetivo principal da utilização de certificados no Expresso esta relacionado a segurança da informação, considerando as quatro premissas:
- Autenticação: Com quem estamos comunicando?
- Sigilo/Confidencialidade: Alguém pode ler?
- Integridade : O dado foi alterado?
- Irretratabilidade/Não repúdio : E se ele disser que não foi ele?
2. Conceitos
- Certificação Digital [ICP-GL]: É a atividade de reconhecimento em meio eletrônico que se caracteriza pelo estabelecimento de uma relação única, exclusiva e intransferível entre uma chave de criptografia e uma pessoa física, jurídica, máquina ou aplicação. Esse reconhecimento é inserido em um Certificado Digital, por uma Autoridade Certificadora.
- Certificado do tipo A1 [ICP-GL]: É o certificado em que a geração das chaves criptográficas é feita por software e seu armazenamento pode ser feito em hardware ou repositório protegido por senha, cifrado por software. Sua validade máxima é de um ano, sendo a freqüência de publicação da LCR no máximo de 48 horas e o prazo máximo admitido para conclusão do processo de revogação de 72 horas.
- Certificado do tipo A3 [ICP-GL]: É o certificado em que a geração e o armazenamento das chaves criptográficas são feitos em cartão Inteligente ou Token, ambos com capacidade de geração de chaves e protegidos por senha, ou hardware criptográfico aprovado pela ICPBrasil. As chaves criptográficas têm no mínimo 1024 bits. A validade máxima do certificado é de três anos, sendo a freqüência de publicação da LCR no máximo de 24 horas, e o prazo máximo admitido para conclusão do processo de revogação de 36 horas.
- Assinatura Digital [CECD-TK]: A assinatura digital é uma modalidade de assinatura eletrônica resultado de uma operação matemática que utiliza criptografia e permite aferir, com segurança, a origem e a integridade do documento.
- Criptografia/Cifragem[ICP-GL]: A criptografia se constitui em um conjunto de métodos e técnicas destinadas a proteger o conteúdo de uma informação, tanto em relação a modificações não autorizadas quanto a alteração de sua origem, sendo uma das técnicas que possibilitam o atendimento dos requisitos básicos de segurança da informação. A confidencialidade de um documento - texto claro - será garantida quando ele for processado por um conjunto de operações, sendo transformado em um texto cifrado. O emissor do documento envia, então, o texto cifrado, que será reprocessado pelo receptor,transformando-o, novamente, em texto claro, igual ao emitido. O conjunto de regras que determina as transformações do texto claro é chamado de algoritmo (uma seqüência de operações) e o parâmetro que determina as condições da transformação é chamado de chave. O processo inverso da Criptografia é chamado de Descriptografia ou Decifragem.
3. Obtendo um Certificado Digital
- O usuário deverá possuir um Certificado Digital, este permitirá a leitura das mensagens cifradas destinadas ao mesmo. Caso não possua um Certificado Digital de Usuário, o requerente deverá entrar em contato com uma AR(Autoridade de Registro). Esta fornecerá as informações necessárias para adquirir um Certificado Digital. Para maiores detalhes visite o site do SERPRO( http://www.serpro.gov.br/), você encontrará em “Serviços” a opção “Certificação Digital”.
4. Configurações na Estação de trabalho do Usuário
Esquema de execução na estação de trabalho do usuário:
4.1. Configurando a máquina virtual Java
O JRE(Java Runtime Eviroment) deve estar instalado e configurado na estação local. É recomendado o uso da JRE a partir da versão 1.5.0_04-b05. Caso não tenha instalado, você pode baixar gratuitamente através do link http://java.sun.com/javase/downloads/index.jsp
Para melhor suporte aos anexos dos e-mails, devemos entrar com um parâmetro de configuração de memória da JRE como segue abaixo:
1.Vá no painel de controle(*) do java(JRE)
2.Abrir a ferramenta Control Panel(*) da JRE através da interface gráfica como segue nas figuras adiante;
3.Vá na guia JAVA, Java Applet Runtime Settings e aperte no botão View.
4.Depois adicione no quarto parâmetro (Java Runtime Par...) o valor exatamente como segue e após isso confirme ok: -Xmx256m
(*) No Linux, voce poderá abrir o Control Panel através do console digitando: ControlPanel? <enter>
ou no Ubuntu no menu: Sistema, Preferências, Sun Java6 Plugin Control Panel.
(*) No Windows, voce poderá abrir o Control Panel no menu:
Iniciar, Painel de Controle(modo clássico) , Java.
4.2. Certificados Tipo A1
Para certificados do tipo A1(em forma de arquivo), deve-se ter o cuidado de tê-lo instalado na estação. A instalação deve ser executada a partir do gerenciador de certificados do SO como segue no exemplo abaixo:
1.Abrir a ferramenta Control Panel da JRE instalada no sistema;
2.Ir para a aba Security e clicar no botão “Certificates...”;
3.Na caixa de seleção “Certificate Type:”, selecionar o item Client Authentication;
4.Clicar no botão “Import”, selecionar o arquivo tipo “p12” e seguir as demais instruções;
4.2.1. Linux(Ubuntu)
Sistema → Preferências → Sun Java6 Plugin Control Panel
4.2.2. Windows(Xp)
Iniciar → Painel de Controle(modo classico) → Java
4.3. Certificados Tipo A3
Para usar certificados do tipo A3(tokens e smartcards), o expresso implementa a leitura deste sem a necessidade de configurações adicionais. Até o momento, essa implementação está atrelada ao modelo de token(ePass2000). Maiores informações sobre instalação, manuseio e compatibilidade veja no link:
http://www.epass.com.br/downloads/epass2000/ft12/pdfs/Manual_ePass2000FT12.pdf
5. Configurações do Servidor de Aplicação
5.0. Verificando os atributos ldap
- Acertando schemas
Verificar o schema phpgwaccount.schema, que deverá conter o novo atributo cryptpassword:
attributetype ( 1.3.6.1.4.1.9554.70
NAME 'cryptpassword' DESC 'cryp password' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
O atributo userCertificate também é utilizado, mas já se encontra disponível por padrão no core.schema.
Estes esquemas estão disponivies em : doc-expressolivre/debian/arqs-conf/etc/ldap/schema e devem ser carregados no ldap a ser utilizado pelo expresso.
- Configurando os atributos a serem utilizados
Em casos em que já exista um ldap previamente utilizado pela empresa, pode ocorrer que os atributos do ldap que controlam usuários não sejam os mesmos utilizados pelo expresso. Para tanto fora disponibilizada a possibilidade de customização destes tributos.
No setup, modo administrador, voce deve informar qual o atributo controla a expiração de senhas:
Em "Nome do atributo no ldap para controle de expiracao da senhas" informe: phpgwlastpasswdchange
Em "Classe ldap utilizada para identificar os usuarios" informe person.
Esta customização deu-se necessária em função por exemplo da utilização do Fedora DS como base ldap, onde existe a possibilidade do próprio diretório controlar expiração e política de senhas de usuários.
5.1. Configurando o(s) drivers dos dispositivos
Para que o expresso acesse o dispositivo do Certificado digital, seja ele um token ou smartcard conectados na porta USB, há necessidade de configurar onde o expresso
irá encontrar o dispositivo, via interface de administração do Expresso:
Caso 1:
Exemplo da configuração para uma estação de usuários que usa WinXP em Inglês e smartcard GemPcTwin?. O Nome(GemPcTwinXPEng) para a configuração é livre, neste caso foi adotada essa nomeclatura para indentificar dispositivo, SO, linguagem.
Parametro: GemPcTwinXPEng;c:/Program Files/Gemplus/GemSafe Libraries/BIN/gclib.dll
Caso 2:
Parecido com o caso 1, porem a linguagem do SO é português.
Parametro: GemPcTwinXPPor;c:/Arquivos de Programas/Gemplus/GemSafe Libraries/BIN/gclib.dll
Caso 3:
Neste caso estamos usando o Token ePass2000-Verde no SO linux. Veja como parametrizamos.
Parametro: ePass2000Ubuntu;/usr/lib/libepsng_p11.so
5.2. Repositório de Certificados
Para poder receber mensagens cifradas é necessário ter um certificado digital cadastrado no Banco de Dados do Expresso. Apenas dessa forma os demais usuários poderão enviar mensagens cifradas. Um método de incluir seu certificado no banco de dados do Expresso é enviando uma mensagem assinada digitalmente . No momento em que esta mensagem for lida pelo destinatário, o expresso grava o certificado do emitente em seu BD. Um modo rápido para efetuar o cadastro do certificado no repositório é mandar um mensagem assinada digitalmente para si mesmo e efetuar a leitura logo em seguida.
Outro modo de disponibilizar o seu certificado(chave pública) é efetuar o login com certificado, pois neste momento, estando validado o certificado ocorre automaticamente o cadastramento do certificado no repositório.
A phpgw_certificados é responsável por armazenar a parte pública dos certificados e deverá estar criada no banco de dados:
5.3. Habilitando HTTPS
1.Acessar o módulo de “setup” do expresso.
Ex: http://correiolivre.teste/setup).
2.Acessar o bloco de administração do arquivo header.(parte inferior da tela);
3.Na seção relativa ao ExpressoLivre?, marque para “usar https no site inteiro” e “usar certificado digital”.
5.4. Arquivo de configuração SSL
- O apache deve estar configurado para utilizar https:
Verifique no arquivo de configuração do ssl (/etc/apache2/sites-available/default_ssl), o parametro “SSLVerifyClient” que deve ser utilizado com um valor igual a “none”:
SSLVerifyClient none
- Permissões
1.Verificar se o usuario www-data é o proprietário das pastas temp e crls, localizadas em .../(home_do_expreso)/security e se elas estão com a permissão correta(755). Executar os comandos abaixo, se necessário, para adequar as pastas a estas recomendações.
- Configurando o script “crl_admin_confg.py”
É no arquivo crl_admin_confg.py (script pyton) localizado na pasta ..../(home_do_expreso)/security/crl_admin/ que poderemos configurar os parametros abaixo:
Path do arquivo crl_admin.conf: Este arquivo contém as URLs de download das LCRs. arquivo='../(home_do_expreso)/security/crl_admin/crl_admin.conf' Path do arquivo crls.log: Esse arquivo contém os logs do processo de atualização das LCRs através da cron. log='../(home_do_expreso)/logs/arquivo_crls.log' Path do arquivo todos.cer: Esse arquivo contém a cadeia dos certificados das ACs. CAfile='../(home_do_expreso)/security/cas/todos.cer'
5.5. Lista de certificados revogados
- Configurando o script “crl_admin_confg.py”
É no arquivo crl_admin_confg.py (script pyton) localizado na pasta /seguranca/crl_admin/ que poderemos configurar os parametros abaixo:
Path do arquivo crl_admin.conf: Este arquivo contém as URLs de download das LCRs. arquivo='/var/www/expresso/security/crl_admin/crl_admin.conf' Path do arquivo crls.log: Esse arquivo contém os logs do processo de atualização das LCRs através da cron. log='/var/www/expresso/logs/arquivo_crls.log' Path do arquivo todos.cer: Esse arquivo contém a cadeia dos certificados das ACs. CAfile='/var/www/expresso/security/cas/todos.cer'
- Certificados Revogados(obtendo e atualizando)
Periodicamente as ACs disponibilizam a lista de certificados revogados(LCR) atualizada para download. Essa lista traz todos os certificados emitidos por aquela AC que por algum motivo foram revogados. Para todas as ACs incluídas no arquivo de certificados deve-se ter o cuidado de incluir o link de download de sua LCR correspondente no arquivo:
/seguranca/crl_admin/crl_admin.conf
Nesse arquivo devemos especificar dois parâmetros: A URL para download da LCR da AC e o caminho onde o arquivo da LCR deverá ser gravado separados por ponto e virgula. O exemplo abaixo traz três LCRs.
http://ccd.serpro.gov.br/lcr/serproacfv1.crl;/var/www/expresso/security/crls/ http://acraiz.icpbrasil.gov.br/LCRacraiz.crl;/var/www/expresso/security/crls/ http://www.receita.fazenda.gov.br/acsrf/acsrfv1.crl;/var/www/expresso/security/crls/
Essa atualização das LCRs é automática e feita através da cron que baixa a(s) LCR(s) conforme tempo configurado.
- Atualização periódica dessa lista: edite a crontab do usuario www-data(usuário do apache), adicionando a linha abaixo( uma única linha):
*/20 * * * * /var/www/expresso/security/crl_admin/crl_admin.py
- Obter uma primeira versão da lista de certificados revogados, executando os comandos abaixo(verificar se o diretório home é o mesmo(/var/www/expresso)):
su - www-data cronwget http://ccd.serpro.gov.br/lcr/serproacfv1.crl -O /var/www/expresso/security/crls/serproacfv1.crl
5.6. Certificados das Autoridades Certificadoras(ACs)
Para que o Certificado do usuário seja aceito pelo servidor, é necessário que toda cadeia de Certificados da AC deste esteja pré-instalada no servidor, dessa forma será possível a verificação de seu certificado bem como de toda esta cadeia. O Arquivo que contém essa cadeia de certificados é semelhante ao do apache. Com isso, pode-se compartilhar o mesmo arquivo, associa-lo através de links ou usar de modo separado como preferir. O Exemplo a seguir refere-se a inclusão da cadeia de certificados da AC SERPRO, permitindo assim que todo certificado de usuário pertencente a essa AC possa ser verificado. O administrador do Expresso poderá incluir nesse mesmo arquivo – conforme política da empresa - as cadeias de certificados das ACs que forem necessárias. A seguir exemplifica a geração desse arquivo:
- Baixando a cadeia: Baixe os certificados através do link abaixo. Clique o botão direito do mouse e vá em salvar como
https://ccd.serpro.gov.br/serproacf/
- Convertendo Certificados do formato DER para PEN: Você observará que dentre os arquivos baixados, o arquivo de Certificado da ICP-Brasil(CertificadoACRaiz.crt) está no formato DER. Esse arquivo deverá ser convertido para formato PEM como segue abaixo:
cd/seguranca/cas openssl x509 -in CertificadoACRaiz.crt -inform DER -out CertificadoACRaiz.pem -outform PEM
- Gerando e/ou atualizando o arquivo de certificados das ACs: Agora podemos criar e/ou adicionar os três arquivos da cadeia em um só(todos.cer) que será usado pelo Expresso:
cat CertificadoACRaiz.pem serprov1.crt serproacfv1.crt >> todos.cer
- Editar o arquivo “/var/www/expresso/security/classes/Verifica_Certificado_conf.php” e alterar o parametro GLOBALSCAs? colocando o caminho do arquivo que contém a cadeia dos certificados das autoridades certificadoras(pode ser mesmo arquivo utilizado pelo apache).
6. Usando a Criptografia
Atendidos os requisitos de usuário, estação e servidor, os clientes já poderão utilizar a funcionalidade. Acompanhe a sequência das instruções nos tópicos seguintes.
- Preferências do usuário(ExpressoMail?)
O usuário deverá habilitar a assinatura digital através de suas preferências pessoais. Observe abaixo:
- Possibilitar assinar e criptografar digitalmente a mensagem: Essa opção habilita a opção de assinatura e criptografia das mensagens.
- Sempre criptografar a mensagem: Essa opção pode ser habilitada para trazer a caixa(checkbox) de seleção para cifragem de mensagens já marcada na tela de composição dos e-mails. Isso sugere que todas as mensagens criadas serão cifradas porém(naturalmente) com a possibilidade de desmarca-la.
6.1. Compondo e Cifrando uma mensagem de e-mail
Uma vez habilitada a opção de cifragem nas preferências de e-mail do usuário, a caixa de seleção para assinatura de mensagens ficará disponível.
6.2. Lendo uma mensagem de e-mail Cifrada
Como você pode observar na figura a seguir, as mensagens cifradas são acompanhadas de um ícone(cadeado) indicador.
Ao clicar na mensagem cifrada seu PIN será requisitado e logo após a confirmação a mensagem será exibida. Será exibido também um cabeçalho com as informações básicas do certificado e o resultado da verificação do mesmo.
7. Login
O processo de login, se caracteriza por armazenamento da password do usuário criptografada pela própria chave do usuário no sistema de diretórios, processo este denominado "acolhimento do certificado".
Ao clicar no link "Usar o meu certificado Digital para Logar" da pagina inicial do Expresso será solicitado ao usuário a sanha de seu dispositivo criptográfico(PIN). Estando o usuário cadastrado como utilizador do Expresso, o processo de acolhimento será automático, a partir da identificação deste usuário com seu dispositivo criptográfico.
8. Assinatura
8.1. Enviando e-mail assinado
A assinatura digital requer o acesso a chave do usuário para compor o hash da assinatura. Para tanto ao enviar o email, e, estando marcada a opção "Assinar Digitalmente a Mensagem", será necessário acesso ao certificado do usuário, quando o usuário informe a senha de seu certificado ou seja o PIN:
8.2. Lendo e-mail assinado
O e-mail assinado fica marcado um um ícone de envelope, conforme figura abaixo. Ao abrir este e-mail é feita toda validação deste certificado, isto é, igualdade nome do e-mail e certificado, cadeia de certificados, revogação e período de validade.
Ainda é possível ver os dados do certificado (público) do usuário clicando-se no link "Mais", conforme mostrado na figura abaixo.
Caso alguma verificação da assinatura resulte em desconfiança, o expresso irá notificar o usuário da existência desta ocorrência, emitindo uma mensagem na cor vermelha.
Attachments
-
estacao.jpg
(26.9 KB) - added by zapa
11 months ago.
-
JRE1.jpg
(27.1 KB) - added by zapa
11 months ago.
-
JRE2.jpg
(22.9 KB) - added by zapa
11 months ago.
-
Ubuntu.jpg
(70.6 KB) - added by zapa
11 months ago.
-
xp.jpg
(91.1 KB) - added by zapa
11 months ago.
-
epass.jpg
(2.2 KB) - added by zapa
11 months ago.
-
server.jpg
(55.8 KB) - added by zapa
10 months ago.
-
config.jpg
(58.0 KB) - added by zapa
10 months ago.
-
criptoemail.jpg
(51.1 KB) - added by zapa
10 months ago.
-
https.jpg
(43.1 KB) - added by zapa
10 months ago.
-
cadeado.jpg
(43.6 KB) - added by zapa
10 months ago.
-
login.png
(54.5 KB) - added by zapa
10 months ago.
-
login.2.png
(29.2 KB) - added by zapa
10 months ago.
-
assina.png
(27.2 KB) - added by zapa
10 months ago.
-
ler_assinado.png
(52.0 KB) - added by zapa
10 months ago.













