38
Ricardo Koji Ushizaki [email protected] 6º. É Dia de Java – Segurança com Java Agosto/2007 - UFSCAR

Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

  • Upload
    vudat

  • View
    217

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Ricardo Koji [email protected]

6º. É Dia de Java – Segurança com JavaAgosto/2007 - UFSCAR

Page 2: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Ricardo Koji [email protected]

6º. É Dia de Cerva – Segurança com CervaAgosto/2007 - UFSCAR

Page 3: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Controle de Acesso� “Tripple A”

� Autenticação� “Quem é”

� Autorização� ”Pode fazer”

� Auditoria� “O que fez”

Page 4: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

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

Page 5: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

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.

Page 6: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Auditoria

� Registrar operações e atividades realizadas;

� Deve associar a ação a um usuário;

� Logs, evidências, Assinatura Digital;

Page 7: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

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

Page 8: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

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

Page 9: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Exemplo do problemaExemplo do problema

� Bob quer acessar seu site do banco

� Digita https://www.weaksecuritybank.com

� Problemas:◦ Bob mal sabe o que é um certificado digital;

◦ E se alguém roubar seu usuário/senha?

Page 10: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Solução: SSL “duplo”� Cliente apresenta seu Certificado Digital

� SSL com autenticação cliente

� Autenticação é mais forte:� Cliente sabe algo (PIN)

� Cliente possui algo (smart card, token)

� Cliente é ele mesmo (certificado digital)

Page 11: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

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

Page 12: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

ExemploExemplo

Bob possui seu certificado digitalBob possui seu certificado digital

Acessa https://www.strongsecuritybank.comAcessa https://www.strongsecuritybank.com

Bob se autentica com seu certificado digitalBob se autentica com seu certificado digital

Bob é autorizado a movimentar sua contaBob é autorizado a movimentar sua conta

Bob assina digitalmente cada movimentaçãoBob assina digitalmente cada movimentação

Page 13: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Cadeias de Confiança

Page 14: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Como funciona: Servidor

Deve confiar na cadeia de certificados do Cliente

Certificado com extensão Server Authentication

Page 15: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Como Funciona: Cliente

Deve confiar na cadeia de certificados do Servidor;

Certificado com extensão de Client Authentication

Page 16: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

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 HTPS com Cliente Authentication

Page 17: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

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

Page 18: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Exemplo: Tomcat� Configurar serviço HTTPS com Client Authentication

� Editar o arquivo conf/server.xml

� Iniciar o Tomcat� Acessar https://localhost:8443/� Será pedido o certificado digital do cliente cuja raiz seja da

ICP-Brasil

<Connector port="8443" protocol="HTTP/1.1" SSLEnable d="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\c onf\tomcat-truststore.jks“ truststorePass="tomcat“ clientAuth="true" sslProtocol="TLS" />

Page 19: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx
Page 20: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx
Page 21: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx
Page 22: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Aplicação Web - SSL com client

authentication� Criar controle de acesso baseado no certificado digital

do Cliente;

� Modelo:� Associar ao certificado digital um conjunto de

permissões que o Cliente pode executar;

� Permissões pré-cadastradas no sistema;

� Arquitetura do Controle de Acesso:� Aplicação Web: Java Servlets + Servlet Filters

� Autenticar, autorizar e auditar

Page 23: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Manipular Certificados Digitais� JCE – Java Cryptography Extension

� API para Criptografia

Page 24: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Dados do Certificado Digital

Page 25: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Autenticação - SSL

A autenticação SSL é feita entre o Cliente e o Servidor

O serviço SSL do Servidor é responsável em fechar ou não o SSL com o Cliente

A implementação do “SSL handshake” fica a cargo do

serviço SSL do Servidor

A aplicação web aguarda o Servlet Container repassar o HTTP REQUEST contendo o certificado digital do Cliente

Page 26: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Autorização� Após a autenticação feita entre o Cliente e o Servidor, a

aplicação web é chamada repassando o HTTP REQUEST;

� O HTTP REQUEST é encapsulado pela classe javax.servlet.http.HttpServletRequest ;

� Para extrair do HTTP REQUEST o Certificado Digital do Cliente:

final String CLIENT_CERT = "javax.servlet.request.X509Certificate";X509Certificate[] certs = (X509Certificate[]) req.getAttribute(CLIENT_CERT);

Page 27: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx
Page 28: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx
Page 29: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Autorização� Duas etapas:

1. Analisar o certificado digital do cliente;

2. Autorizar ou não o acesso ao sistema

� Como identificar o cliente?� Com o Certificado Digital do Cliente, é preciso saber

quem ele é no sistema;

� Mapear o Certificado Digital a um “username” ou ID;

� Verificar se esse “username” está autorizado a executar a operação desejada no sistema;

Page 30: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Autorização� Certificado Digital do Cliente:

� AKI – Authority Key Identifier� Serial Number

AKI SN

Page 31: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Auditoria� Criar evidências da ação executada;

� Associar a ação ao usuário:� Usar Assinatura Digital;

� Realizar a Assinatura Digital no Browser;� APIs específicas do Sistema Operacional;

� Applet;

� Submeter a Assinatura Digital e salvar como evidência;

Page 32: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Certificados ICP-Brasil� Autoridades Certificadoras (ACs) no Brasil devem

seguir as normas da ICP-Brasil;

� Definem regras para toda PKI (Public KeyInfrastructure) de uma AC;

� Além disso, 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;

Page 33: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Subject Alternative Name (SAN)� Política de Certificado é

publicada pelas Acs;

� Definem o conteúdo de cada extensão do certificado;

� SAN: campos OtherName com dados do dono do certificado (exemplo CPF)

Page 34: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

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

Fonte: http://publicacao.certificadodigital.com.br/repositorio/pc/politica-srf-a3.pdf

Page 35: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

SAN - extrair OIDsClasse java.security.cert.X509Certificate

Page 36: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

JCE - limitações

Page 37: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Saída do programa teste*************************Valor inteiro=00?`L 6 4209011977260401198021248876740000000020868209 0SSPSP*************************Valor inteiro=00)+‚7 [email protected]*************************Valor [email protected]*************************Valor inteiro=00+`L " 2702790801322590470SAO PAULOSP*************************Valor inteiro=00`L 219051737000

Page 38: Controle de Acesso com Certificação Digital usando JCE-vfinal_pptx

Conclusão� Controle de Acesso com Certificado Digital Cliente

� Estrutura da Certificação Digital não é trivial

� ICP-Brasil e APIs do Java

OBRIGADO!