Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NodeJS Crypto

NodeJS Crypto

Lucas Santos

August 01, 2019
Tweet

More Decks by Lucas Santos

Other Decks in Programming

Transcript

  1. Crypto Deixando sua aplicação mais segura nativamente

  2. senior solutions architect_ quem sou eu_ /khaosdoctor @_staticvoid lsantos.dev @khaosdoctor

    nindoo.ai
  3. abcdevelopers.org cupom: LSANTOSABCDEV2019

  4. Criptografia

  5. Conjunto de técnicas para ofuscar a escrita e torná-la ininteligível

    para quem não é autorizado
  6. Ela existe há muito tempo

  7. Muito tempo mesmo

  8. None
  9. Cifra de César T E X T O k =

    3 W H A W R +k +k +k +k +k
  10. Criptografia clássica - Puramente baseada em lógica - Se decifrada

    perdia o sentido
  11. Criptografia digital - Baseada em matemática - Varia para cada

    tipo de entrada - Varia para cada tipo de dado - Dificuldade de decriptação - Facilidade de criação
  12. Tipos de criptografia

  13. Reversível É possível obter a mensagem original - AES -

    RSA - 3DES (DES) - Diffie-Hellman - Base64 - Rot13
  14. Irreversível Não é possível obter a mensagem original - SHA256

    - SHA128 - MD5 - PBKD2F
  15. O módulo Crypto

  16. O que podemos fazer - Criação de certificados - Criptografia

    assimétrica - Criptografia simétrica - Algoritmos autenticados - Algoritmos de iteração
  17. Criptografia baseada em chaves

  18. O que é uma chave? Criptografia reversível - Base da

    criptografia utilizada - Evita descobrimento por brute force - Não é um dicionário - Torna a função reversível
  19. Criptografia com chaves

  20. Criptografia com chaves

  21. Criptografia com chaves

  22. Casos de uso - Modelo mais utilizado de criptografia reversível

    - Armazenamento de informações confidenciais - Utilizado quando não precisamos compartilhar a senha
  23. Criptografia autenticada

  24. Criptografia autenticada

  25. Vetores de inicialização Adicionando ainda mais segurança - Número de

    uso único - Aleatório - Previne ataques de dicionário - Geralmente tem 16 bits
  26. Criptografia autenticada

  27. Criptografia autenticada

  28. Casos de uso - Autenticação de usuários - Tokens de

    validação - Assinatura simples de mensagens
  29. Hashes

  30. O que é hash Criptografia irreversível - Resultado de uma

    função criptográfica de derivação - Comprimento fixo - Com ou sem chave - Difíceis de reverter - Volatilidade da saída - Criam assinaturas - Transforma grandes quantidades de dados em pequenas unidades de informação
  31. Hash com chave (SHA)

  32. Hash sem chave (MD5)

  33. Casos de uso - Validação de blocos (blockchain) - Assinaturas

    de mensagens - Validação de binários - Armazenamento de senhas
  34. Criptografia iterativa

  35. PBKD2F Criptografando a criptografia … Várias vezes - Aplica uma

    criptografia irreversível várias vezes - Utiliza um Salt - Depende do algoritmo subsequente
  36. None
  37. Casos de uso - Todas as de um hash -

    Mais seguro
  38. Assinar mensagens

  39. O que é uma assinatura Garantindo que está tudo certo

    - Hash gerado a partir do conteúdo - Garante autenticidade - Tira proveito da natureza volátil dos hashes
  40. JWT header assinatura payload

  41. JWT - Na prática

  42. Assinando mensagens

  43. Assinando mensagens

  44. Casos de uso - Validação de autenticidade - Validação de

    integridade - Emails - Chaves - Mensagens - Criptomoedas
  45. /khaosdoctor @_staticvoid lsantos.me @khaosdoctor Demos

  46. referências_ - http://enigma.louisedade.co.uk/enigma.html - http://bit.ly/310srla - Como a enigma funciona

    - https://lollyrock.com/posts/nodejs-encryption/ - https://www.geeksforgeeks.org/node-js-password-hashing-crypto-module/ - https://nodejs.org/api/crypto.html - https://www.tecmundo.com.br/seguranca/1896-o-que-e-ssl-.htm - https://pt.wikipedia.org/wiki/Criptografia - https://www.youtube.com/watch?v=_Eeg1LxVWa8 - https://en.wikipedia.org/wiki/Enigma_machine - https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash - https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash_criptogr%C3%A1fica - https://github.com/khaosdoctor/palestra-nodejs-crypto - https://github.com/auth0/node-jsonwebtoken
  47. Feedbacks

  48. /khaosdoctor @_staticvoid lsantos.dev @khaosdoctor obrigado_