Upload
lethien
View
228
Download
0
Embed Size (px)
Citation preview
Agenda1. Certificação Digital e PKI
2. Controle de Acesso
3. Exemplo
4. Conclusão
1. Certificação Digital
PKI – Public Key Infrastructure
Certificados ICP-Brasil http://www.icpbrasil.gov.br
Autoridades Certificadoras (ACs) no Brasil devem seguir as normas da ICP-Brasil;
Definem regras e normas para PKI no Brasil;
Definem o CONTEÚDO de cada certificado;
Vantagem:
Aplicações conseguem obter dados de forma mais confiável, como o CPF, CNPJ, data de nascimento etc;
PC de um e-CPF
“7.1.2.3. Subject Alternative NameA ICP-Brasil define como obrigatória a extensão "Subject Alternative Name", não crítica, e com os seguintesformatos:a) para Certificados de Pessoa Física (e-CPF)a.1) 3 (três) campos otherName, obrigatórios, contendo, nesta ordem:i. OID = 2.16.76.1.3.1 e conteúdo = nas primeiras 8 (oito) posições, a data de nascimento do titular, noformato ddmmaaaa; nas 11 (onze) posições subseqüentes, o Cadastro de Pessoa Física (CPF) do titular;nas 11 (onze) posições subseqüentes, o número de Identificação Social - NIS (PIS, PASEP ou CI); nas15 (quinze) posições subseqüentes, o número do Registro Geral - RG do titular; nas 6 (seis) posiçõessubseqüentes, as siglas do órgão expedidor do RG e respectiva UF.ii. OID = 2.16.76.1.3.6 e conteúdo = nas 12 (doze) posições o número do Cadastro Especifico do INSS(CEI) da pessoa física titular do certificado.iii. OID = 2.16.76.1.3.5 e conteúdo = nas primeiras 12 (onze) posições, o número de inscrição do Título deEleitor; nas 3 (três) posições subseqüentes, a Zona Eleitoral; nas 4 (quatro) posições seguintes, a: Seção;nas 22 (vinte e duas) posições subseqüentes, o município e a UF do Título de Eleitor.”
PC – Política de Certificado
Fonte:
http://publicacao.certificadodigital.com.br/repositorio/pc/politica-srf-a3.pdf
Dados do Certificado Digital
Manipular Certificados Digitais JCE – Java Cryptography Extension
API para Criptografia http://java.sun.com/javase/technologies/security
Comunicação Segura JSSE – Java Secure Socket Extension
2. Controle de Acesso JCE/JSSE
Definição de Controle de Acesso “Tripple A”
Autenticação
“Quem é”
Autorização
”Pode fazer”
Auditoria
“O que fez”
Fonte: http://www.isc2.org
http://www.guidetocissp.com
Autenticação
Identificação única do usuário
Autenticação baseada em:
O que o usuário sabe (senha, PIN);
O que o usuário possui (crachá, smart card, token);
O que o usuário é (impressão digital, voz, retina, íris);
Onde o usuário está (antes ou depois do firewall).
Autorização
Define o que é ou o que não é permitido;
Permissões;
Analogia a um Sistema Operacional:
Permissão de Leitura, Escrita e Execução.
Auditoria
Registrar operações e atividades realizadas;
Deve associar a ação a um usuário;
Logs, evidências, Assinatura Digital.
SSL - certificação digital Protocolo SSL (Secure Socket Layer)
Certificado Digital do Servidor
Garante identidade do servidor
Clientes têm certeza que estão acessando o site desejado
Problemas SSL “simples” Apenas um lado (servidor) foi “autenticado”
Falta autenticar o cliente
Webmails, Internet Banking:
Usuário/senha
Autenticação muito fraca
Fraudes eletrônicas
Exemplo do problema
Bob acessa o site de seu banco
Problemas:◦ Bob mal sabe o que é um certificado digital;
◦ E se alguém roubar seu usuário/senha?
Solução: SSL “duplo” SSL com autenticação cliente
Autenticação mais forte:
Cliente sabe algo (PIN)
Cliente possui algo (smart card, token)
Cliente é ele mesmo (certificado digital)
Controle de Acesso com Certificação Digital
Autenticação:
• Autenticar Certificado Digital do Cliente
Autorização:
• Verificar se Cliente possui permissão ao serviço desejado
Auditoria:
• Registrar operação executada: assinatura digital
Exemplo
Cliente possui certificado digital
Autenticação com seu certificado digital
Cliente é autorizado a acessar sistema
Assinar digitalmente cada operação
Como funciona: ServidorDeve confiar na cadeia de certificados do Cliente
Certificado com extensão Server Authentication
Como Funciona: ClienteDeve confiar na cadeia de certificados do Servidor
Certificado com extensão de Client Authentication
Cadeias de Confiança
TLS / SSL handshake – RFC 2246Fonte: http://www.ietf.org/rfc/rfc2246.txt
3. Configurar SSL no Servidor Possuir um certificado digital para o servidor
Configurar o repositório de certificados confiáveis:
Truststore;
Lista das cadeias que o servidor confia;
Define quais certificados clientes poderão fechar SSL com o servidor.
Habilitar serviço HTTPS com Cliente Authentication
Exemplo: Tomcat Gerar certificado de servidor de testes:keytool -genkey -alias tomcat -keyalg RSA
–sigalg SHA1WithRSA -keystore tomcat.jks
-dname "C=BR, O=TESTE, OU=RIKO, CN=riko-sony“
-validity 365
Criar Truststore com certificados confiáveis:keytool -import -trustcacerts -alias iti
-file certificadoACRaiz.crt
-keystore tomcat-truststore.jks
Exemplo: Tomcat Configurar serviço HTTPS com Client Authentication
Editar o arquivo conf/server.xml
Iniciar o Tomcat
Acessar https://localhost:8443
Usar certificado digital cliente raiz ICP-Brasil
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true“
maxThreads="150" scheme="https" secure="true“
keystoreFile="D:\riko\java\apache-tomcat6.0.14\conf\tomcat.jks“
keystorePass="tomcat“
truststoreFile="D:\riko\java\apache-tomcat-6.0.14\conf\tomcat-
truststore.jks“ truststorePass="tomcat“ clientAuth="true"
sslProtocol="TLS" />
Aplicação Web Criar controle de acesso baseado no certificado digital
do Cliente;
Arquitetura do Controle de Acesso:
Aplicação Web: Java Servlets + Servlet Filters
Autenticar, autorizar e auditar
Autorização Certificado Digital do Cliente:
AKI – Authority Key Identifier
Serial Number
AKI SN
Subject Alternative Name (SAN) Definem o conteúdo de
cada extensão do certificado;
SAN: campos OtherName com dados do dono do certificado (exemplo CPF)
Fonte: http://www.ietf.org/rfc/rfc3280.txt
SAN - extrair OIDsClasse java.security.cert.X509Certificate
Teste SAN
Teste SAN (cont.)
Debug do programa teste*************************
Valor inteiro=0
0?`L 6 42090119772604011980212488767400000000208682090SSPSP
*************************
Valor inteiro=0
0)
*************************
Valor inteiro=1
*************************
Valor inteiro=0
0+`L " 2702790801322590470SAO PAULOSP
*************************
Valor inteiro=0
0`L 219051737000
Limitações no JCE Manipular extensões do X.509 Certificate;
Soluções:
Uso de APIs de criptografia (Bouncy Castle);
JCP (Java Community Process).
4. Conclusão Controle de Acesso com Certificado Digital Cliente
Autenticação mais forte
Certificação Digital não é trivial
Limitações JCE
Referências ICP-Brasil:
http://www.icpbrasil.gov.br
CISSP (Certified Information Systems Security Professional): http://www.isc2.org
http://www.guidetocissp.com
Java Security: http://java.sun.com/javase/technologies/security
RFC2246 – TLS handshake:
http://www.ietf.org/rfc/rfc2246.txt
RFC3280 – X.509 e PKI:
http://www.ietf.org/rfc/rfc3280.txt
BouncyCastle:
http://www.bouncycastle.org
JCP – Java Community Process:
http://www.jcp.org
Material da palestra em: http://www.ime.usp.br/~riko
OBRIGADO!