Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
NodeJS Crypto
Lucas Santos
August 01, 2019
Programming
2
99
NodeJS Crypto
Lucas Santos
August 01, 2019
Tweet
Share
More Decks by Lucas Santos
See All by Lucas Santos
Ambientes dinâmicos com GitHub Actions
khaosdoctor
0
15
The Dark Side of JavaScript
khaosdoctor
0
21
Integrating Containers Into JavaScript
khaosdoctor
0
13
Entendendo o ecossistema de containers
khaosdoctor
1
420
gRPC with Node.js
khaosdoctor
0
300
Azure Full Cycle
khaosdoctor
0
51
Utilizando Azure para Processos Rápidos
khaosdoctor
0
55
AKS + GitHub Actions
khaosdoctor
0
66
Desmistificando Herança e Protótipos no JS - Short
khaosdoctor
1
110
Other Decks in Programming
See All in Programming
Oculus Interaction SDK 概説 / xrdnk-caunity-LT4
xrdnk
0
240
偏見と妄想で語るスクリプト言語としての Swift / Swift as a Scripting Language
lovee
2
270
アプリのログをチーム外で活用してもらうためにやったこと
shotakashihara
0
190
未経験QAの私が、よきQA(Question Asker) になっていく物語
atamaplus
0
330
Airflow1=>Airflow2へのupgrade 事例紹介
reizist
0
120
Update from the Elixir team - 2022
whatyouhide
0
200
LOWYAの信頼性向上とNew Relic
kazumax55
4
360
mrubyを1300円のボードで動かそう
yuuu
0
190
Swift Concurrencyによる安全で快適な非同期処理
tattn
2
330
【Qiita Night】新卒エンジニアによるSwift6与太予想
eiji127
0
180
roadmap to rust 2024
matsu7874
1
870
機能横断型チームにおける技術改善
takeshiakutsu
3
480
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
261
25k
Facilitating Awesome Meetings
lara
29
3.9k
Clear Off the Table
cherdarchuk
79
280k
How to Ace a Technical Interview
jacobian
265
21k
4 Signs Your Business is Dying
shpigford
169
20k
What's in a price? How to price your products and services
michaelherold
229
9.3k
What’s in a name? Adding method to the madness
productmarketing
11
1.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
25
1.5k
Robots, Beer and Maslow
schacon
152
7.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
212
20k
Testing 201, or: Great Expectations
jmmastey
21
5.4k
Why You Should Never Use an ORM
jnunemaker
PRO
47
5.5k
Transcript
Crypto Deixando sua aplicação mais segura nativamente
senior solutions architect_ quem sou eu_ /khaosdoctor @_staticvoid lsantos.dev @khaosdoctor
nindoo.ai
abcdevelopers.org cupom: LSANTOSABCDEV2019
Criptografia
Conjunto de técnicas para ofuscar a escrita e torná-la ininteligível
para quem não é autorizado
Ela existe há muito tempo
Muito tempo mesmo
None
Cifra de César T E X T O k =
3 W H A W R +k +k +k +k +k
Criptografia clássica - Puramente baseada em lógica - Se decifrada
perdia o sentido
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
Tipos de criptografia
Reversível É possível obter a mensagem original - AES -
RSA - 3DES (DES) - Diffie-Hellman - Base64 - Rot13
Irreversível Não é possível obter a mensagem original - SHA256
- SHA128 - MD5 - PBKD2F
O módulo Crypto
O que podemos fazer - Criação de certificados - Criptografia
assimétrica - Criptografia simétrica - Algoritmos autenticados - Algoritmos de iteração
Criptografia baseada em chaves
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
Criptografia com chaves
Criptografia com chaves
Criptografia com chaves
Casos de uso - Modelo mais utilizado de criptografia reversível
- Armazenamento de informações confidenciais - Utilizado quando não precisamos compartilhar a senha
Criptografia autenticada
Criptografia autenticada
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
Criptografia autenticada
Criptografia autenticada
Casos de uso - Autenticação de usuários - Tokens de
validação - Assinatura simples de mensagens
Hashes
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
Hash com chave (SHA)
Hash sem chave (MD5)
Casos de uso - Validação de blocos (blockchain) - Assinaturas
de mensagens - Validação de binários - Armazenamento de senhas
Criptografia iterativa
PBKD2F Criptografando a criptografia … Várias vezes - Aplica uma
criptografia irreversível várias vezes - Utiliza um Salt - Depende do algoritmo subsequente
None
Casos de uso - Todas as de um hash -
Mais seguro
Assinar mensagens
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
JWT header assinatura payload
JWT - Na prática
Assinando mensagens
Assinando mensagens
Casos de uso - Validação de autenticidade - Validação de
integridade - Emails - Chaves - Mensagens - Criptomoedas
/khaosdoctor @_staticvoid lsantos.me @khaosdoctor Demos
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
Feedbacks
/khaosdoctor @_staticvoid lsantos.dev @khaosdoctor obrigado_