160 likes | 268 Views
Proteção para Aplicações Web através de Assinaturas Digitais. Marco “Kiko” Carnut, CISSP <kiko@tempest.com.br> S.A.T.I. Março/2005. Agenda. O Encontro de Dois Problemas Fragilidade do Documento Digital A Fragilidade do Nome e Senha Certificados e Assinaturas Digitais
E N D
Proteção para Aplicações Web através de Assinaturas Digitais Marco “Kiko” Carnut, CISSP <kiko@tempest.com.br> S.A.T.I. Março/2005
Agenda • O Encontro de Dois Problemas • Fragilidade do Documento Digital • A Fragilidade do Nome e Senha • Certificados e Assinaturas Digitais • Chaves Públicas e Privativas • Autenticação em Aplicações Web • Protocolo Desafio-Resposta
Documento Digital: Fácil de Forjar • Documentos digitais são, em última instância, longas seqüências de bits • Modificá-los é rápido, corriqueiro, eficiente e não deixa evidências físicas • Em geral não é possível determinar se um documento foi feito a partir de outro nem qual deles foi criado primeiro • Meta-dados de controle, tal como a data de criação/modificação do arquivo, também são documentos digitais e, portanto, fáceis de forjar • O Medo dos Advogados (e Operadores do Direito) • Documentos Digitais Menor Segurança Jurídica
O=FreeICP.ORG OU=Verified Identity TEST Certification Authority CN= Marco Carnut emailAddress=kiko@tempest.com.br Certificado Digital Marco Carnut CISSP – Diretor kiko@tempest.com.br w w w . t e m p e s t . c o m . b r Emitente: C=BR, ST=Pernambuco, L=Recife, O=Tempest Security Technologies, OU=FreeICP.ORG, CN=Verified Identity TEST Certification Authority emailAddress=vica@freeicp.org (RSA com hash SHA1) (criptossistema RSA) Recife Av. Marquês de Olinda, 126 - 5o andar Edf. Citibank – Recife Antigo – 50.030-901 fone/fax: +55 81 3424.3670 São Paulo Rua Jerônimo da Veiga, 164 - 6o andar Itaim Bibi – 04.536-001 fone/fax: +55 11 3644.7249 Chave Pública e=65537,n=142239367858416975776709973865450073964317047967537963581498770739727353522092089230343487731587869752994941931696743826295415252444227103015424408026248310161052096481075828264719552128147343307191910433656494782751532754737317882243505044499826239887391048898863537027610940275999724385631333089769833207271 Assinatura Digital 3307593482764144383236407422893115834377614890899624009442099845693490214573567788278071557866894234862782864842514558492006345426665612583589955074261322149433007623318136633859241816528422417014741402229389782364764071422531994119155607620122108426217561226430893455427068133155467382027190322146133297262276110015235819528391147029664383805647966466610930005540080821077564303251873506562261793490643836045444308449796374610594658997400915322105907963083905777281153889820615690238747596150597146931269072781094216513660091453537585805022066803217838163216563737476746283832612840308825648045756458529060541743815 Chave Pública e=65537,n=142239367858416975776709973865450073964317047967537963581498770739727353522092089230343487731587869752994941931696743826295415252444227103015424408026248310161052096481075828264719552128147343307191910433656494782751532754737317882243505044499826239887391048898863537027610940275999724385631333089769833207271
Chave Pública Chave Privada e=65537,n=142239367858416975776709973865450073964317047967537963581498770739727353522092089230343487731587869752994941931696743826295415252444227103015424408026248310161052096481075828264719552128147343307191910433656494782751532754737317882243505044499826239887391048898863537027610940275999724385631333089769833207271 d=45513073726402274497112187375821996218728416949314546946140448587789481038639096016002749187761891763803670808413839912801228572529665774876532962635379131630567220917313622655792743595159858016481026785861643971550766288990167133657888343401183947460265117578350019500398898372064939800622637320099687830497 Chaves Privadas • A toda chave pública está associada uma (e somente uma) chave privada (mentirinhaaaaa... essa não é minha chave privada de verdade....) • As duas nascem juntas,a partir de certos ingredientes matemáticos,... • Uma vez descartados esses ingredientes, não é possível calcular uma a partir da outra!
Chave Privada 45513073726402 27449711218737582199 62187284169493145469461404 4858778948103 8639096016002 749187761891 763803670808 41383991280 12285725296 657748765329 626353791316 3056722091731 36226557927435 95159858016481026785861643 97155076628899016713 36578883434011 83947 460265 11757835 001950 03988 983720 649 39800 622637 32009968 78304 97 Chaves Privadas • Como na prática as chaves são muito longas, decorá-las é inviável • O usuário não lida com elas diretamente – as operações com elas são feitas por programas criptográficos em nome do usuário • Ficam armazenadas emdisco rígido, memória,smart cards, etc.
2B0C407F49CBA6BFF84E96CA12D75301 RSA Declaro para osdevidos fins que a Empresa XYZ Ind. E Com. Ltda está rigo- rosamente em dia com todas suas obri- gações junto à Se- cretaria da Receita Federal. Tw+1 4+ajkwLx kOEjYlzQ e//qZi Assinatura Digital: Geração • O documento digital é inserido noum programa criptográfico para ser assinado. Esse programa também cuida do armazena mento da chave privada. • Gera-se um resumo matemáticoque “represente” a mensagem de forma curtaeindepen-dente de seu tamanho. • O resumo é cifrado com a chave privada do assinante, resultando na assinatura digital. Como su- postamente só o signatário detém o controle de sua chave privada, só ele poderia tê-la gerado. • A assinatura resultante é anexa-da à mensagem, ou, alternativa-mente, enviada em separado.
Declaro para osdevidos fins que a Empresa XYZ Ind. E Com. Ltda está rigo- rosamente em dia com todas suas obri- gações junto à Se- cretaria da Receita Federal. 2B0C407F49CBA6BFF84E96CA12D75301 IDÊNTICOS 2B0C407F49CBA6BFF84E96CA12D75301 Verificação da Assinatura • O verificador computa in-dependentemente oresumo digital do docu-mento. • O verificador usa a chavepública do signatário(obtida previamente de umafonte confiável) paradecifrar a assinatura e re-aver o resumo digital origi-nalmente calculado. • A assinatura será válida seos dois resumos forem igua-is; e inválida caso contrário.
Modelo Clássico de Apps Web • Fachada: visualização e controle (“regras de negócio”) • tipicamente um servidor web + linguagens de aplicação • Apache+JServ+Java • Apache+mod_perl+Perl • IIS+ASP • Retaguarda: modelo abstrato dos dados • tipicamente em um Gerenciador de Banco de Dados Relacional • SQL Server, Postgres, Oracle...
Autenticação Típica para Web Apps • Cookies: • dado pequeno que o servidor pede que o navegador salve e reapresente toda vez que contactá-lo • Na realidade, identifica o navegador, não o usuário • Freqüentemente usado para o site lembrar se aquele navegador já o visitou antes • Nome+senha: • Pequeno segredo que só o usuário e o servidor deveriam conhecer • Na realidade, identifica aqueles que conhecem a senha • Viabiliza uso em ambientes com navegadores/computadores compartilhados
Nome+senha+cookies: Desvantagens • O servidor deve guardar uma cópia da senha • Muitas aplicações salvam as senhas totalmente às claras: fácil roubar a senha de outrem • Muitas aplicações gravam as senhas cifradas evitar isso • A aplicação (e os admins por ela responsáveis) são guardiões (“fiéis depositários”) da sua senha • Para poder ser conferida pelo servidor, a senha (cifrada ou não) tem de trafegar pela rede • Ataques em trânsito: Torna-se alvo fácil para ataques de interceptação, replay, etc. • Phishing scams: É fácil convencer o usuário a dar a senha para um atacante – basta ele fazer um site que se pareça com o real
Site XYZ Ltda resposta desafio Desafio-Resposta via Assinatura • Autenticação por Chaves Públicas • Desafio: Site envia um “documento” aleatório • Resposta: O programa criptográfico do cliente, sob controle e permissão do usuário, assina aquele documento • Verificação: se a assinatura bater, o site sabe que vocêdetém a chave privadacorrespondente àquelachave pública...
Pressupostos da Verificação • Verificação: se a assinatura bater, o site sabe que você detém a chave privada correspondente àquelachave pública... • Essa chave pública está dentro de um certificado digital que contém seu nome dentro de algum sistema de identificação • Se seu certificado digital foi assinado por uma entidade em que a aplicação confie, ela poderá deduzir que o usuário do outro lado da linha
Vantagens • Dispensa tabela de senhas • Substituída pela tabela de certificados digitais, que são públicos • Podemos reconhecer o usuário apenas pelo seu certificado digital • Não mais somos fiéis depositários de dados de autenticação do usuário • A senha não trafega pela rede em momento algum • Nem jamais sai do computador do usuário • Naturalmente mais resistente a phishing scams
Conclusões • Ceritificação Digital e Assinaturas Digitais provêem maior proteção para documentos digitais e autenticação em aplicações Web • Implementam o conceito de segurança fim-a-fim, onde um interceptador é impotente para atrapalhar a transação • Coloca a segurança mais sob controle do usuário final; ele não mais precisa confiar cegamente no provedor da aplicação web
Obrigado! Perguntas? kiko@tempest.com.br