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

    View Slide

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

    View Slide

  3. abcdevelopers.org
    cupom: LSANTOSABCDEV2019

    View Slide

  4. Criptografia

    View Slide

  5. Conjunto de técnicas para
    ofuscar a escrita e torná-la
    ininteligível para quem
    não é autorizado

    View Slide

  6. Ela existe há muito tempo

    View Slide

  7. Muito tempo mesmo

    View Slide

  8. View Slide

  9. Cifra de César
    T E X T O
    k = 3
    W H A W R
    +k +k +k +k +k

    View Slide

  10. Criptografia
    clássica
    - Puramente baseada
    em lógica
    - Se decifrada perdia
    o sentido

    View Slide

  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

    View Slide

  12. Tipos de criptografia

    View Slide

  13. Reversível
    É possível obter a mensagem
    original
    - AES
    - RSA
    - 3DES (DES)
    - Diffie-Hellman
    - Base64
    - Rot13

    View Slide

  14. Irreversível
    Não é possível obter a
    mensagem original
    - SHA256
    - SHA128
    - MD5
    - PBKD2F

    View Slide

  15. O módulo Crypto

    View Slide

  16. O que podemos fazer
    - Criação de certificados
    - Criptografia assimétrica
    - Criptografia simétrica
    - Algoritmos autenticados
    - Algoritmos de iteração

    View Slide

  17. Criptografia baseada em
    chaves

    View Slide

  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

    View Slide

  19. Criptografia com chaves

    View Slide

  20. Criptografia com chaves

    View Slide

  21. Criptografia com chaves

    View Slide

  22. Casos de uso
    - Modelo mais utilizado
    de criptografia
    reversível
    - Armazenamento de
    informações
    confidenciais
    - Utilizado quando não
    precisamos
    compartilhar a senha

    View Slide

  23. Criptografia autenticada

    View Slide

  24. Criptografia autenticada

    View Slide

  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

    View Slide

  26. Criptografia autenticada

    View Slide

  27. Criptografia autenticada

    View Slide

  28. Casos de uso
    - Autenticação de
    usuários
    - Tokens de validação
    - Assinatura simples de
    mensagens

    View Slide

  29. Hashes

    View Slide

  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

    View Slide

  31. Hash com chave (SHA)

    View Slide

  32. Hash sem chave (MD5)

    View Slide

  33. Casos de uso
    - Validação de blocos
    (blockchain)
    - Assinaturas de
    mensagens
    - Validação de binários
    - Armazenamento de
    senhas

    View Slide

  34. Criptografia iterativa

    View Slide

  35. PBKD2F
    Criptografando a criptografia

    Várias vezes
    - Aplica uma criptografia
    irreversível várias
    vezes
    - Utiliza um Salt
    - Depende do algoritmo
    subsequente

    View Slide

  36. View Slide

  37. Casos de uso - Todas as de um hash
    - Mais seguro

    View Slide

  38. Assinar mensagens

    View Slide

  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

    View Slide

  40. JWT
    header
    assinatura
    payload

    View Slide

  41. JWT - Na prática

    View Slide

  42. Assinando mensagens

    View Slide

  43. Assinando mensagens

    View Slide

  44. Casos de uso
    - Validação de
    autenticidade
    - Validação de integridade
    - Emails
    - Chaves
    - Mensagens
    - Criptomoedas

    View Slide

  45. /khaosdoctor @_staticvoid
    lsantos.me
    @khaosdoctor
    Demos


    View Slide

  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

    View Slide

  47. Feedbacks

    View Slide

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

    View Slide