1 / 43

Controle de Acesso com Certificação Digital usando JCE e JSSE

Controle de Acesso com Certificação Digital usando JCE e JSSE. Ricardo Koji Ushizaki riko@serasa.com.br http://www.ime.usp.br/~riko Just Java 2007 Outubro/2007 – SP. Agenda. Certificação Digital e PKI Controle de Acesso Exemplo Conclusão. 1. Certificação Digital.

maia
Download Presentation

Controle de Acesso com Certificação Digital usando JCE e JSSE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Controle de Acesso com Certificação Digital usando JCE e JSSE Ricardo Koji Ushizaki riko@serasa.com.br http://www.ime.usp.br/~riko Just Java 2007 Outubro/2007 – SP

  2. Agenda • Certificação Digital e PKI • Controle de Acesso • Exemplo • Conclusão

  3. 1. Certificação Digital

  4. PKI – PublicKeyInfrastructure

  5. 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;

  6. PC de um e-CPF PC – Política de Certificado “7.1.2.3. Subject Alternative Name A ICP-Brasil define como obrigatória a extensão "Subject Alternative Name", não crítica, e com os seguintes formatos: 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, no formato 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); nas 15 (quinze) posições subseqüentes, o número do Registro Geral - RG do titular; nas 6 (seis) posições subseqü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 de Eleitor; 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.” Fonte: http://publicacao.certificadodigital.com.br/repositorio/pc/politica-srf-a3.pdf

  7. Dados do Certificado Digital

  8. Manipular Certificados Digitais • JCE – Java Cryptography Extension • API para Criptografia • http://java.sun.com/javase/technologies/security

  9. Comunicação Segura • JSSE – Java Secure Socket Extension

  10. 2. Controle de Acesso JCE/JSSE

  11. Definição de Controle de Acesso • “Tripple A” • Autenticação • “Quem é” • Autorização • ”Pode fazer” • Auditoria • “O que fez” Fonte: http://www.isc2.orghttp://www.guidetocissp.com

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

  13. 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.

  14. Auditoria • Registrar operações e atividades realizadas; • Deve associar a ação a um usuário; • Logs, evidências, Assinatura Digital.

  15. 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

  16. 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

  17. 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? Exemplo do problema

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

  19. Controle de Acesso com Certificação Digital

  20. Exemplo

  21. Como funciona: Servidor

  22. Como Funciona: Cliente

  23. Cadeias de Confiança TLS / SSL handshake – RFC 2246 Fonte: http://www.ietf.org/rfc/rfc2246.txt

  24. 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

  25. 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

  26. Exemplo: Tomcat • Configurar serviço HTTPS com Client Authentication • Editar o arquivo conf/server.xml <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" /> • Iniciar o Tomcat • Acessar https://localhost:8443 • Usar certificado digital cliente raiz ICP-Brasil

  27. 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

  28. Autorização • Certificado Digital do Cliente: • AKI – AuthorityKeyIdentifier • Serial Number

  29. Subject Alternative Name (SAN) • Definem o conteúdo de cada extensão do certificado; • SAN: campos Other Name com dados do dono do certificado (exemplo CPF) Fonte: http://www.ietf.org/rfc/rfc3280.txt

  30. SAN - extrair OIDs Classe java.security.cert.X509Certificate

  31. Teste SAN

  32. Teste SAN (cont.)

  33. Debug do programa teste ************************* Valor inteiro=0 0?`L 6 42090119772604011980212488767400000000208682090SSPSP ************************* Valor inteiro=0 0) +‚7  shs8799@serasa.intranet ************************* Valor inteiro=1 RIKO@SERASA.COM.BR ************************* Valor inteiro=0 0+`L "  2702790801322590470SAO PAULOSP ************************* Valor inteiro=0 0`L  219051737000

  34. Limitações no JCE • Manipular extensões do X.509 Certificate; • Soluções: • Uso de APIs de criptografia (Bouncy Castle); • JCP (Java Community Process).

  35. 4. Conclusão • Controle de Acesso com Certificado Digital Cliente • Autenticação mais forte • Certificação Digital não é trivial • Limitações JCE

  36. 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!

More Related