Tales of the Crypto

  • Published on
    11-Jun-2015

  • View
    423

  • Download
    0

Embed Size (px)

DESCRIPTION

Criptografia com PHP

Transcript

<ul><li> 1. Adler MedradoTales of the Crypto PHP Conference Brasil 2012Imagem: Cryptomuseum.comMonday, December 3, 12</li></ul> <p> 2. Quem sou eu?Desenvolvedor, Consultor, Instrutor;Trabalha na Sigma Dataserv;Co-Fundador do PHPDF;Fui apresentado ao PHP em 1999;Tenho meu prprio podcast (getOnCode);ZCEPHP 5;Zend Framework;Monday, December 3, 12 3. Objetivos Mostrar como algumas ferramentas que auxiliam no uso de criptograa com PHP Criptograa um assunto complexo para podermos abordar a fundo aqui Quer estudar? https://www.coursera.org/ course/cryptoMonday, December 3, 12 4. Segurana Atualmente h consenso que necessrio obter segurana nas transaes realizadas pela internet A segurana composta de diversos fatores e a criptograa uma delasMonday, December 3, 12 5. O que criptograa? Uma cincia Nome tem origem no grego - krypts (escondido) e grphein (escrita)Monday, December 3, 12 6. Entusiastas daCriptograa Sun Tzu Hitler Carl Von ClausewitzMonday, December 3, 12 7. Segunda Guerrahttp://www.navajocodetalkers.org/Monday, December 3, 12 8. Chega de histriaMonday, December 3, 12 9. Para que serve? Garantir Integridade do Dado Prover segurana em transaes condenciais Privacidade Garantia de AutenticidadeMonday, December 3, 12 10. Para que no serve XSS SQL Injection Session Hijacking Engenharia Social "As pessoas so o elo mais fraco" -Kevin MitnickMonday, December 3, 12 11. Criptograa != SeguranaMonday, December 3, 12 12. No tente criar seu prprio algoritimoMonday, December 3, 12 13. Por mais que voc seja bom, seu algoritimo tem grandes chances de ser inferior aos j existentes e que so abertosMonday, December 3, 12 14. A no ser que voc seja um matemtico acima da mdia.Monday, December 3, 12 15. Se voc zer algo superior ao que j existe, por favor,torne-o um padro aberto.Monday, December 3, 12 16. Se a Microsoft, Oracle ou Apple te oferecessem umalgoritimo fechado para voc criptografar os dadosda sua empresa, voc conaria?Monday, December 3, 12 17. E se o governo te oferecesse, voc aceitaria?Monday, December 3, 12 18. D a preferncia, sempre, aos algoritimos abertosMonday, December 3, 12 19. Criptografando mensagens Cdigo Quando necessrio um cdigo para decifrar a mensagem Cifra Esconde contedo original dentro de outroMonday, December 3, 12 20. Cifras Exemplo 1 - Texto substitudo por nmero e somado a valor chaveEU VOU PRA CASA 5 20 21 14 20 15 17 1 3 1 18 115 30 31 24 30 25 27 11 13 11 28 11codigo = 10Monday, December 3, 12 21. Cifras Exemplo II - Cifra de CesarNormal: a ligeira raposa marrom saltou sobre o cachorro cansadoCifrado: D OLJHLUD UDSRVD PDUURP VDOWRX VREUH R FDFKRUUR FDQVDGRhttp://pt.wikipedia.org/wiki/Cifra_de_C%C3%A9sarMonday, December 3, 12 22. Como voc salva passwords ? Plain Text? Hashing?Monday, December 3, 12 23. Hashing Mais comuns MD5 - Message Digest Algorithm - RFC 1321 SHA1 - Secure Hash Algorithm - NIST-FIPS 180-1 Hashing normalmente possuem tamanho xo, geralmente128 ou 256 bits, independente do tamanho de entrada.Alm de MD5 e SHA-1, existem diversos algoritimos de hashing.Monday, December 3, 12 24. Coliso de Hashes Por terem tamanho xo:deduz-se que os hashes gerados so limitadosse h limite, dois valores diferentes podem ter o mesmo hashse isso acontecer, uma coliso de hashesMonday, December 3, 12 25. Brute Force $password = vidaloka; md5($password);Monday, December 3, 12 26. Salt $password = vidaloka; $salt = phpconf; md5($salt.$password);Monday, December 3, 12 27. Outras Opes hash Pode ser desabilitado na compilao Risco ao mudar de ambiente crypt Est no coreMonday, December 3, 12 28. hash hash(adler32, vidaloka); Algoritimo com o nome mais bonito do mundoPara saber quais algoritimos esto disponveis var_dump(hash_algos());Monday, December 3, 12 29. crypt $password = vidaloka; $salt = phpconf; // Para usar Blowfish $salt = $2a$07$.$salt.$; echo Plaintext password: .$password."n"; echo Salt: .$salt."n"; echo Blowfish hash:. crypt($password, $salt)."n"; crypt + blowsh FTWMonday, December 3, 12 30. Criptograa Simtrica O msmo cdigo/chave usado para criptografar usado para descriptografar Por usar a mesma chave, o algoritimo criptogrco usado mais simples Por possuir um algoritimo mais simples, mais rpida que a assimtricaMonday, December 3, 12 31. CriptograaAssimtrica Utiliza um par de chaves: pblica e privada As chaves so diferentes, entretanto, matemticamente relacionadas Mais seguro Mais lentoMonday, December 3, 12 32. Algoritimos populares AES - Simtrica RSA - AssimtricaExistem diversas bibliotecas que abstraem o trabalho sujo OpenSSL PGP/OpenPGP/GnuPG MCryptMonday, December 3, 12 33. OpenSSL Open-Source Toolkit que implementa suporte aos protocolos SSL e TLS Oferece uma biblioteca criptograca de uso geral Suporte a diversos padres e algortimos Prov mecanismos para gerar certicados SSLMonday, December 3, 12 34. Exemplos comOpenSSL Criptograa Simtrica $texto = OPENSSL_KEYTYPE_RSA,));openssl_pkey_export_to_file($chave_privada, private, 12345);$detalhes_da_chave = openssl_pkey_get_details($chave_privada);file_put_contents(public, $detalhes_da_chave[key]);Monday, December 3, 12 36. Exemplos com OpenSSLMonday, December 3, 12 37. Exemplos com OpenSSL Usando as chaves para criptografar e descriptografar$chave_publica = openssl_pkey_get_public(file:///keys/public);openssl_public_encrypt($texto, $dados_criptografados, $chave_publica);$chave_privada = openssl_pkey_get_private(file:///keys/private, 12345);openssl_private_decrypt($dados_criptografados, $dados_originais, $chave_privada);Monday, December 3, 12 38. PGP/OpenPGP/GnuPG Pretty Good Privacy Desenvolvido em 1991 por Phil Zimmermann Cdigo Aberto - Origem do OpenPGP Simples instalao do toolkit Congurao com PHP no trivial Cadeias de conana do PGP so interessantes KeyServersMonday, December 3, 12 39. Exemplo com PGP$gpg = new gnupg();$gpg -&gt;addencryptkey("8660281B6051D071D94B5B230549F9DC851566DC");$enc = $gpg -&gt; encrypt("Texto Secreto");$res = gnupg_init();gnupg_adddecryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC",senha);$original = gnupg_decrypt($res,$enc);Monday, December 3, 12 40. MCrypt Biblioteca open-source Suporta diversos algortimos Criptograa SimtricaMonday, December 3, 12 41. Exemplo MCrypt $texto =</p>