Admins/Certificados

De Wiki Expresso V3
Ir para: navegação, pesquisa

Conteúdo

Introdução

É praxe envelopar as cartas antes de enviá-las como medida de segurança e privacidade. Na correspondência digital a criptografia é tão básica quanto o envelope, mas é muito mais segura. Se você não mandaria o conteúdo que costuma enviar por e-mail em cartões postais sem envelope, é absolutamente incoerente não usar criptografia / certificados digitais.

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?).

O algoritmo utilizado pelo expresso é definido pela ICP/Brasil e ITI. Este algoritmo é basedo no RSA. O RSA envolve um par de chaves, uma chave pública que pode ser conhecida por todos e uma chave privada que deve ser mantida em sigilo. Toda mensagem cifrada usando uma chave pública só pode ser decifrada usando a respectiva chave privada. A criptografia RSA atua diretamente na internet, por exemplo, em mensagens de emails, em compras on-line e o que você imaginar; tudo isso é codificado e recodificado pela criptografia RSA.

Portanto, caso um usuário necessite cifrar um email e envia-lo a outro usuário, este usuário Origem deve ter acesso a chave pública do(s) usuário(s) de destino e o usuário destino obviamente deve possuir um dispositivo criptográfico, certificado e chave privada.

Como o usuário não sabe onde encontrar a chave publica dos destinatários, o expresso disponibiliza que isto seja feito automaticamente através de um mecanismo denominado "Acolhimento".

Porque utilizar

Grande parte das pessoas tem consciência da necessidade de proteger o computador. Mas e o transporte? Todos os serviços web (email, messenger, etc) tem senhas mas ainda assim estão sujeitos a acesso não autorizado e o tráfego entre servidores não é protegido. Além disso, qualquer pessoa pode fazer uma conta de e-mail ou Messenger com o seu nome e entrar em contato com outras pessoas simulando ser você. É por essa razão que as pessoas precisam ganhar consciência da necessidade de proteger os dados em trânsito e a própria identidade através de criptografia / certificados digitais.

Definições

A Infraestrutura de Chaves Públicas Brasileiraé uma cadeia hierárquica e de confiança que viabiliza a emissão de certificados digitais para identificação virtual do cidadão. Observa-se que o modelo adotado pelo Brasil foi o de certificação com raíz única, sendo que o ITI, além de desempenhar o papel de Autoridade Certificadora Raiz (AC-Raiz), também tem o papel de credenciar e descredenciar os demais participantes da cadeia, supervisionar e fazer auditoria dos processos.

Certificação Digital ICP-Brasil: É 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 : É 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 : É 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 ICP­Brasil. 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 : 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: 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.

CRL: Lista de certificados revogados. Esta lista deve ser consultada para verificação de validade de certificado. Um certificado constante nesta lista não deverá ser aceito pelo sistema.

Obtendo um Certificado Digital

O usuário deverá possuir um Certificado Digital, este permitirá a leitura e envio 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(https://www.serpro.gov.br/certificacao-digital/);

Repositório de Chaves Públicas

Acolher, significa armazenar as chaves públicas de usuários. Para acolher o certificado digital(chave pública) de um usuários no Expresso, basta que este envie uma mensagem assinada para si mesmo(ou para outro usuário do mesmo domínio) e em seguida leia essa mensagem. O acolhimento ocorre na leitura. Ao enviar a mensagem, assinalando-a como criptografada, o expresso automaticamente identifica os destinatários e suas respectivas chaves armazenadas no repositório.

Arquitetura

Configurações

Estação

Esquema de execução na estação de trabalho do usuário:

Nova estacao.png

Instalação do driver do token

Instalação da cadeia de certificados no Java Control Panel

Acesse o site
https://ccd.serpro.gov.br/serproacf/
Clique em Baixar Cadeia, localizado a esquerda da página

Serproacf baixar cadeia.png

Baixar os arquivos
* ACRaiz Brasileira - ICP-Brasilv2
* Autoridade Certificadora SERPROv3
* Autoridade Certificadora SERPRO Final v3 
No terminal do linux abrir o Control Panel do java. Digitar o comando abaixo
ControlPanel
Adicione os certificados ao Java Control Panel

Java control panel certificados.png

1 clicar na aba - Security / Segurança
2 Selecionar Certificates / Gerenciar Certificados
3 No combo Certificate type / Tipo de certificado, selecionar - Signed CA / CA de signatário
4 Selecionar a aba User / Usuário e adicionar os certificados 

Verificação no navegador Firefox

Em construção.

Servidor

Obtendo CRLs

Obter o código do Expresso V3 - Nesse código, a pasta scripts/security contém os scripts necessários para a obtenção das crls. Sugestão: copiar esta pasta para /opt.

Os arquivos crls serão atualizados periódicamente, através da execução de script configurado na crontab do servidor.

Comando crontab:
*/50 * * * * /opt/security/crl_admin/crl_admin.py

O script tem como entrada /opt/security/crl_admin/crl_admin.conf , que informa a crl que deve ser obtida(uma url por linha). Como as crls são disponibilizadas pelas Acs no formato DER e o apache aceita só o formato PEM, é necessário converter as crls de DER para PEM. O script usa o comando:

openssl crl -in /opt/security/crls/ xxxxxxx.crl -out /opt/security/crls/ xxxxxxx.crl.pem2 -outform pem -inform der

Após obter o arquivo PEM o script gera links para as crls:

ln -s /opt/security/crls/ xxxxxxx.crl.pem2 `openssl crl -hash -noout -in /opt/security/crls/ xxxxxxx.crl`.r0

É gerado um arquivo log com as atividades do script em /opt/security/logs/arquivo_crls.log

Configurando o Apache

Vide documentação oficial da ferramenta http://httpd.apache.org/docs/2.2/ssl/. Diretivas do modulo mod_ssl no apache devem ser configuradas em /etc/apache2/sites-enable/<virtual_host_usado>:

SSLVerifyClient
O login com certificados será realizado pelo servidor web, através da opção de configuração da diretiva SSLVerifyClient. Usar:
SSLVerifyClient  optional
O cliente configurará seu navegador para que este reconheça seu respectivo token criptográfico. E quando este estiver presente, o navegador inicia uma negociação https realizando a identificação do usuário através de seu certificado digital. Assim, o servidor web realiza a verificação do certificado do usuário, repassando o resultado da negociação através de variáveis de ambiente para o Expresso 3.0.
SSLCARevocationPath
Configurar apontando para a pasta que vai conter as listas dos certificados revogados emitidas pelas Acs aceitas pela aplicação(ver o item Obtendo CRLs). O apache verifica se o certificado esta revogado se a crl da AC que emitiu o certificado existir nesta pasta. Sugestão:
SSLCARevocationPath /opt/security/crls
SSLCACertificateFile
Configurar apontando para o arquivo com os certificados das ACs aceitas pela aplicação. O apache só vai aceitar certificado apresentado pelo usuário se o certificado da AC que emitiu o certificado existir neste arquivo. Os certificados das ACs devem estar no formato PEM. Sugestão:
SSLCACertificateFile /opt/security/cas/todos.cer
SSLOptions
A diretiva SSLOptions deve incluir a opção ExportCertData. Sugestão:
SSLOptions +FakeBasicAuth +ExportCertData

Configurando o Cyrus Imap

Já a autenticação no servidor Imap, quando possuirmos uma sessão autenticada com certificados digitais, será feita através de proxy authentication, que é suportado pelo método PLAIN da biblioteca SASL, em que o sistema utilizará as credenciais do administrador para autenticar no Imap, identificando-se como o usuário corrente.

Para isto, será necessário configurar o suporte à TLS no servidor IMAP e configurar o usuário admin do Imap como um usuário proxy, adicionando as seguintes opções ao arquivo /etc/imapd.conf:

imap_proxyserver: expresso-admin;
tls_cert_file: <caminho para arquivo de certificado digital do servidor>;
tls_key_file: <caminho para arquivo de chave privada>;
tls_ca_file: <caminho para arquivo do certificado da CA>.
Opcionalmente: tls_ca_path: <caminho para pasta que contenha as cas>. 

Configurando o Expressov3

Para que o Imap funcione no Expresso 3.0, será necessário ativar a conexão via TLS, configurar o usuário admin para o servidor cyrus e ativar a opção de autenticação, de acordo com a imagem a seguir:

Conf certificado expv3.png

A implementação do Expresso 3.0 recebe do servidor web as seguintes variáveis de ambiente: SSL_CLIENT_VERIFY e SSL_CLIENT_CERT, entre outras. Então verificará o valor de SSL_CLIENT_VERIFY para determinar o resultado da validação do certificado digital. Se o resultado for SUCCESS, o expresso 3.0 recupera os dados do certificado digital da variável SSL_CLIENT_CERT, e utiliza as configurações username_callback, casfile e crlpath para testar o certificado e recuperar o username do usuário, verificando se este é um usuário corrente do sistema. Se sim, disponibiliza acesso ao sistema para este usuário. Caso contrário, a autenticação falhará.


No arquivo config.inc.php, adicionar a seguinte configuração:

	'modssl'  => array (
        'username_callback' => 'Custom_Auth_ModSsl_UsernameCallback_Cpf',
        'casfile' => 'caminho do arquivo de cas',
         'crlpath' => 'caminho do diretório de configuração das crls',
    ),

Onde:

username_callback
nome da classe de callback que implementa a interface Tinebase_Auth_ModSsl_UsernameCallback_Abstract, esta interface define o método getUsername(), que atua sobre o conteúdo do certificado para recuperar o username do usuário.
casfile
caminho apontando para o arquivo de cas, para validar o certificado.
crlpath
caminho para o diretório que contém as crls, para validar o certificado.


Se o resultado de SSL_CLIENT_VERIFY for NONE, não realiza o login com certificados, apresentando a tela de login padrão. Qualquer outro valor, nega acesso ao sistema.

Administração ExpressoV3

O usuário ou o administrador(conforme as permissões) deve habilitar o uso de mensagens cifradas nas preferências. "Preferencias", "email",

"Habilitar o envio de mensagens cifradas?" = "Sim"

Utilização no Expresso

Logando com Certificado

Obrigatoriedade

Existem situações onde pode haver obrigatoriedade para determinados usuários em realizarem login exclusivamente com certificado digital, não permitindo usuário/senha visando fornecer autenticidade na conexão à aplicação. No ExpressoV3 esta funcionalidade fora delegada para administração via privilégios a roles do sistema.

- Passo-a-passo para Administração configurar obrigatoriedade de login com certificados.

1. Na aplicação Administrador, clicar em "Funções" (roles);
2. Criar uma role;
3. Adicionar os participantes na aba "Membros";
3. Na aba "Direitos", opção "Tinebase", selecionar o item "Gerenciar usuários que devem fazer login com certificado digital."
4. Salvar.

- Para testar a funcionalidade o usuário deve ser membro da role criada no item anterior, ou grupo associado a role.

Teste sem inserir token(negação):
1. Inserir URL do ExpressoV3;
2. Informar usuário e senha;
3. O sistema deverá exibir mensagem de erro "Usuário e/ou senha incorretos"

- Teste com o token inserido(aceitação):

1. Inserir URL do ExpressoV3;
2. Deverá ser exibida uma janela pedindo a senha do token (PIN, master password, depende do token);
3. As caixas de usuário e senha devem aparecer bloqueadas (em cinza) com a mensagem: "Certificado digital detectado. Pressione Login para continuar";
4. Pressionar Login, conforme instrução;
5. Sistema deve realizar o login do usuário.

Não solicitar senha do token ao fazer logoff

Foi incluída uma entrada no item "modssl" do arquivo de config.inc.php para indicar uma url para a qual o browser vai direcionar no logoff quando o usuario tiver logado com certificado digital. A url deve usar protocolo http e ela deve direcionar para um virtualhost na porta 80 do servidor. Assim o servidor não pede a senha do token.

'redirectUrlmodSsl' => 'https://<IP DO SEU SERVIDOR>', 

Opcionalidade

- A opcionalidade do uso do certificado digital para realização do Login, ao contrário da obrigatoriedade apresentada no item anterior, é em função do usuário estar com o token(certificado A3) espetado na porta USB. O expresso irá detectar automaticamente a presença de um token e acionará o mecanismo de autenticação digital do login, solicitando a senha do PIN do certificado do usuário.

- Não desejando login com certificado, basta ao usuário retirar o dispositivo da conexão com o equipamento.

Assinando Digitalmente um Email

  1. Faça login utilizando o Certificado Digital
  2. Crie uma nova mensagem campos (Para, Assunto, corpo da mensagem)
  3. Clique no botão Assinar Digitalmente (vide imagem abaixo)
  4. Envie a mensagem.
  5. Escolha o certificado e entre com a senha.

Assinar digitalmente.png

Habilitando a criptografia de Email

Precondições de estação: 
 * Ter funcional os drivers do "dispositivo criptográfico válido(a)" instalados na estação;
 * Fazer uso de "navegador homologado(d)" para o Expresso; 
 * Acessar uma URL do Expresso configurada com Certificação Digital; 
 * Ter instalado/configurado o "Java(c)";
Precondições de conta do usuário:
 * O usuário deve possuir um dispositivo criptográfico válido(a); 
 * O(s) remetente(s) e destinatário(s) das mensagens cifradas devem ter seus certificados(públicos) válidos e acolhidos(b) no site Expresso do remetente; 
 * O remetente deve habilitar o uso de mensagens cifradas nas preferências: Em "Preferencias", "email", "Habilitar o envio de mensagens cifradas?" = "Sim";
 * O remetente(ou o administrador) deve habilitar o uso de janelas do tipo "Modal windows":Em "Preferencias", "Preferencias Gerais",
   "Tipo de janela" = "Modal Windows(experimental);

(a) Dispositivo criptográfico válido: Token com certificado digital tipo A3, destinado a pessoal física, para fins de assinatura e/ou sigilo de documentos, não expirado, não revogado e homologado para o ExpressoV3.

(b) Acolhimento do certificado digital no Expresso(repositório de chaves públicas): Para acolher o certificado digital(chave pública) de um usuários no Expresso, basta que este logue no sistema usando um certificado digital ou envie uma mensagem assinada para si mesmo e em seguida leia essa mensagem. O acolhimento ocorre na leitura;

(c) Requisitos de JAVA para a estação: A funcionalidade de criptografia utiliza APPLET JAVA para a comunicação com o dispositivo criptografico(token) e processos de assinatura e cifragem. Para conseguir criptografar mensagens, a estação de trabalho deve estar preparada conforme os requisito elecandos abaixo:

1. Java 6 ou 7 instalado(build 1.7.0_51+) e plugin do navegador habilitado;
2. Baixar e instalar arquivos  para liberação de uso de chaves acima de 128 bits;
2.1.Para Java 1.6:
 Baixar em: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
 Para instalar consulte o arquivo README.TXT
2.2. Para Java 1.7:
 Usar versão da JRE a partir da build 1.7.0_51;
 Baixar em: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
 Para instalar consulte o arquivo README.TXT
2.3. Para Java 1.8:
 Usar a versão mais atualizada possível.
 Baixar em: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
 Para instalar consulte o arquivo README.TXT
3. Baixar e instalar as cadeias de certificados da Autoridade Certificadora(AC): 
3.1. Baixando as cadeias: Acessar https://certificados.serpro.gov.br/arserpro, ir no menu "REPOSITORIO", "CADEIA DE CERTIFICADOS" e baixar as cadeias;
3.3. Instalando as cadeias na JRE local: Abrir o Painel de controle(ControlPanel) da JRE do Java, ir na aba "Segurança", clicar no botão "Gerenciar Certificados",
na combo "Tipo de certificado", selecionar o valor "CA de signatário", selecionar a aba "Usuário" e adicionar os certificados.

(d) Requisitos para upload/download de anexos em mensagens cifradas:

1. Adicionar hostname em hosts
 1.1 No Linux
  Editar arquivo /etc/hosts. Alterar linha 127.0.0.1 localhost para 127.0.0.1 localhost local.expressov3.serpro.gov.br.
 1.2 No windows
  Editar arquivo c:\windows\system32\drivers\etc\hosts. Alterar linha 127.0.0.1 localhost para 127.0.0.1 localhost local.expressov3.serpro.gov.br.
2. Adicionar certificado do servidor de upload/download de arquivos no navegador
 2.1 No Firefox
  Logar no expresso, editar mensagem (cifrada), esperar a Applet carregar.
  Em preferências, aba certificados, clicar em botão certificados, aba servidores, clicar botão Adicionar Exceção..., preencher campo endereço com
  https://local.expressov3.serpro.gov.br:8998, clicar botão Verificar Certificado, clicar botão Confirmar exceção de Segurança.
 2.2 No IE
  Baixar arquivo de certificado https://comunidadeexpresso.serpro.gov.br/mediawiki/images/5/57/CAExpressoBr.crt
  Em "Ferramentas" (Alt+x) , clicar item de menu "Opções da Internet", clicar na aba "Conteúdo", clicar no botão "Certificados", clicar no botão "Importar...",
  clicar no botão "Avançar >", clicar no botão "Procurar...", selecionar arquivo baixado (CAExpressoBr.crt) e clicar no botão "Abrir", clicar no botão "Avançar >",
  selecionar item "Colocar todos os certificados no repositório a seguir", clicar no botão "Procurar...", selecionar item "Autoridades de Certificação Raiz
  Confiáveis", clicar no botão "Ok", clicar no botão "Avançar >", clicar no botão "Concluir".
  Validar a Impressão digital apresentada com: "6065484D BF0CDA71 4954C5F9 072BCDAC FA989330", clicar no botão "Sim".

Usando a criptografia de Email

Após habilitadas as opções do item anterior, a opção de "Criar mensagem(cifrada)" será exibida e você terá opções de responder ou encaminhar também cifrando.

Usando Certificado Mestre

Anexos

Dispositivos Suportados

Existem diversos dispositivos cripgraficos(tokens A3).Estes dispositivos, estando no padrão ICP Brasil provavelmente serão suportados pelo Expresso.

Os dispositivos suportados até a versão Kristina.20140217 são os seguintes:
Token verde(e-pass2000);
Token Azul(eTokenPro32k ou Aladin safenet);
Token Preto(Starsign);
Token Branco Serpro()

Normas ITI/ICP-Brasil

http://www.iti.gov.br/icp-brasil/legislacao/132-servicos/homologacoes/1360-documentos
Ferramentas pessoais
Espaços nominais

Variantes
Ações
Navegação
Ferramentas