Proteção para Aplicações Web através de Assinaturas Digitais Marco “Kiko” Carnut, CISSP <[email protected]> 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 Certificado Digital O=FreeICP.ORG OU=Verified Identity TEST Certification Authority CN=Marco MarcoCarnut Carnut CISSP – Diretor [email protected] [email protected] www.tempest.com.br Recife Pública (criptossistema RSA) Chave SHA1) Emitente: São Paulo Digital (RSA com hash Assinatura C=BR, ST=Pernambuco, L=Recife, O=Tempest Security Technologies, e=65537,n=1422393678584169757767099738 Av. Marquês de Olinda, 126 - 5o andar 33075934827641443832364074228931158343776148908996240094 Rua Jerônimo da Veiga, 164 - 6o andar 42099845693490214573567788278071557866894234862782864842 OU=FreeICP.ORG, CN=Verified Identity TEST Certification Authority 65450073964317047967537963581498770739 6545007396431704796753796358149877073 Edf. Citibank – Recife Antigo – 50.030-901 51455849200634542666561258358995507426132214943300762331 Itaim Bibi – 04.536-001 72735352209208923034348773158786975299 9727353522092089230343487731587869752 81366338592418165284224170147414022293897823647640714225 [email protected] fone/fax: +55 81 3424.3670 fone/fax: +55 11 3644.7249 31994119155607620122108426217561226430893455427068133155 49419316967438262954152524442271030154 9949419316967438262954152524442271030 46738202719032214613329726227611001523581952839114702966 24408026248310161052096481075828264719 1542440802624831016105209648107582826 43838056479664666109300055400808210775643032518735065622 55212814734330719191043365649478275153 4719552128147343307191910433656494782 61793490643836045444308449796374610594658997400915322105 90796308390577728115388982061569023874759615059714693126 27547373178822435050444998262398873910 7515327547373178822435050444998262398 90727810942165136600914535375858050220668032178381632165 48898863537027610940275999724385631333 8739104889886353702761094027599972438 63737476746283832612840308825648045756458529060541743815 089769833207271 5631333089769833207271 Chaves Privadas A toda chave pública está associada uma (e somente uma) chave privada Chave Pública Chave Privada e=65537,n=14223936785841697577 67099738654500739643170479675 37963581498770739727353522092 08923034348773158786975299494 19316967438262954152524442271 03015424408026248310161052096 48107582826471955212814734330 71919104336564947827515327547 37317882243505044499826239887 39104889886353702761094027599 9724385631333089769833207271 d=455130737264022744971121873 75821996218728416949314546946 14044858778948103863909601600 27491877618917638036708084138 39912801228572529665774876532 96263537913163056722091731362 26557927435951598580164810267 85861643971550766288990167133 657888343401183947460265117578 35001950039889837206493980062 2637320099687830497 (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! 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 em disco rígido, memória, smart cards, etc. 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 Assinatura Digital: Geração Declaro para os devidos fins que a Empresa XYZ Ind. E Com. Ltda está rigorosamente em dia com todas suas obrigações junto à Secretaria da Receita Federal. 2B0C407F 49CBA6BF F84E96CA 12D75301 RSA Tw+1 4+ajkwLx kOEjYlzQ e//qZi 1. O documento digital é inserido no um programa criptográfico para ser assinado. Esse programa também cuida do armazena mento da chave privada. 2. Gera-se um resumo matemático que “represente” a mensagem de forma curta e independente de seu tamanho. 3. O resumo é cifrado com a chave privada do assinante, resultando na assinatura digital. Como supostamente só o signatário detém o controle de sua chave privada, só ele poderia tê-la gerado. 4. A assinatura resultante é anexada à mensagem, ou, alternativamente, enviada em separado. Verificação da Assinatura Declaro para os devidos fins que a Empresa XYZ Ind. E Com. Ltda está rigorosamente em dia com todas suas obrigações junto à Secretaria da Receita Federal. 1. O verificador computa independentemente o resumo digital do documento. 2B0C407F 49CBA6BF F84E96CA 12D75301 IDÊNTICOS 2B0C407F 49CBA6BF F84E96CA 12D75301 2. O verificador usa a chave pública do signatário (obtida previamente de uma fonte confiável) para decifrar a assinatura e reaver o resumo digital originalmente calculado. 3. A assinatura será válida se os dois resumos forem iguais; 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 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 desafio bater, o site sabe que você detém a chave privada correspondente àquela Site chave pública... XYZ Ltda resposta Pressupostos da Verificação Verificação: se a assinatura bater, o site sabe que você detém a chave privada correspondente àquela chave 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 fima-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? [email protected]