Alura > Cursos de Programação > Cursos de Node.JS > Conteúdos de Node.JS > Primeiras aulas do curso Node.js: criptografia e tokens JWT

Node.js: criptografia e tokens JWT

Conhecendo problema - Apresentação

Boas-vindas ao curso de Node.js: criptografia e tokens JWT. Sou João Manoel. Sejam bem-vindos à Alura.

Neste curso vamos dar os primeiros passos sobre as considerações que precisamos ter enquanto desenvolvemos uma aplicação que possui alguns requisitos de segurança em Node.js.

O que vamos ver:

Neste curso, abordaremos:

Para quem é este curso:

Para quem não é este curso:

Requisitos:

Caso você se encaixe no perfil e vai continuar com o curso, vamos começar!

Conhecendo problema - Origens da criptografia

Nesta aula comentaremos um pouco sobre a origem e história da criptografia.

Origens da criptografia

Sempre foi de interesse de algumas partes manter certas informações acessíveis somente para um número limitado de pessoas ou equipes. Não permitindo que determinadas informações fossem compreensíveis para todos.

Um cenário em que isso acontecia bastante era em guerras, em que haviam tropas e comandantes. Por exemplo, vamos supor que temos as tropas azuis e vermelhas, adversárias, sendo interesse da tropa azul enviar para seus aliados alguma informação que não pode ser lida pela tropa vermelha.

Simulando como uma carta essa informação, ela seria enviada de uma tropa azul para outra tropa azul, sem nenhum imprevisto. Mas sempre existiram espiões ou agentes que faziam parte da tropa adversária que poderiam pegar essa mensagem e interceptar, decifrando e descobrindo o plano.

Isso não era de interesse da tropa azul, o ideal é somente a própria tropa entender a mensagem que estava sendo enviada, mesmo quando interceptada. Este é um dos contextos e casos que usavam a criptografia.

Cifra de César

Podemos imaginar que temos duas linhas, ambas com todas as letras do alfabeto. Vamos escolher uma das linhas e deslocar horizontalmente para algum dos lados e adaptar para quais letras estariam nessa posição.

ABCDEF...XYZ
ABCDEF...XYZ

Como exemplo, podemos deslocar a segunda linha 3 posições para a direita. Dessa forma, alinhamos a letra "A" da segunda linha com a letra "C" da primeira. Ou seja, a primeira linha começará com "A", "B", "C" e assim por diante até "Z"; já a segunda linha começará na terceira posição, com "C", "D", "E" e seguindo até "B".

ABCDEF...XYZ
CDEF...XYZAB

Realinhando as linhas para iniciarem na mesma posição, a primeira começando com "A" e a segunda com a letra "C", pegamos a mensagem escrita com o alfabeto normal e substituímos cada letra pela correspondente na segunda linha.

ABCDEF...XYZ
CDEFGH...ZAB

Na mensagem trocamos todas as letras "A" pela letra "C", todas as letras "B" pela "D" e assim por diante. Com isso, fazemos o que chamamos de cifra, criando uma mensagem final que a princípio parece letras escritas aleatoriamente e sem significado, mas ao lermos conhecendo o mecanismo por trás, conseguimos entender. Então, pegar as letras da segunda linha e substituir pelas da primeira para descobrir o significado da informação.

ABCDEF...XYZ
CDEFGH...ZAB

Para isso, é preciso saber qual o alfabeto utilizado para cada um e o deslocamento usado. Logo, conhecendo o mecanismo é possível desvendar e ter de volta a informação.

Porém, quando esse procedimento era descoberto pelo adversário, era preciso desenvolver outra forma de transformar essa informação em algo que não fosse facilmente lida.

Então, foram sendo desenvolvidas máquinas mecânicas para realizarem o trabalho de embaralhar a mensagem, depois foram avançando e se tornando mais complexas, incorporando elementos eletrônicos, como os computadores eletromecânicos até os computadores digitais e eletrônicos de hoje em dia. Estes são desenvolvidos e possuem uma capacidade superior de processamento de palavras ou informações muito maiores do que os que existiam na origem dessas tecnologias.

Conhecendo problema - Por que “esconder” dados?

A partir do comentado no vídeo anterior, surgiu a área de estudo conhecida como criptografia.

Criptografia

A palavra criptografia vem do grego, em que kryptós significa algo escondido e gráphein se refere ao que é escrito. Logo, é a forma de escrever alguma informação de maneira oculta. Sendo uma área de estudo completa, em que há várias vertentes que procuram resolver esses temas e problemas.

Mas como relacionamos criptografia com o nosso cotidiano? Visto que parece um cenário bem distante quando pensamos em contextos como as guerras. Como vamos adaptar o que é estudado em criptografia para os dias atuais, em desenvolvimento de aplicações, por exemplo?

Precisamos lembrar que diariamente lidamos com informações sensíveis, como as mensagens que trocamos com amigos, os e-mails enviados para o trabalho, senhas do banco e das redes sociais, dados bancários que possuem a informação do valor recebido e das contas pagas.

Outra informação sensível é a localização do celular ou do dispositivo conectado, que não é de interesse que todos acessem esse dado por questões de segurança. Os dados pessoais também são dados sensíveis que em alguns casos são solicitados, como condição médica, CPF, RG, entre outras. Ou seja, são dados que queremos deixar no sigilo na medida do possível.

Mas temos uma questão, os computadores apenas realizam as instruções e não possuem a capacidade de alterar esses comandos. Então, a criptografia hoje em dia conta com estruturas bem definidas que ao serem implementadas evitam o acesso de terceiros. Existem algoritmos e processos para impedir que qualquer pessoa consiga visualizar todas as informações disponíveis.

Vamos discutir também dois conceitos importantes para o controle de acesso à informação. O primeiro é a autorização imagine haver algum tipo de controle de acesso que é necessário ter uma autorização para passar.

Exemplificando, é como se tivesse uma placa "entrada permitida apenas para funcionários" em que você deve se identificar para conseguir acesso.

Autenticação

Temos também o conceito de autenticação, imagine que você possui agora uma carteirinha informando ser um funcionário. Isso comprova que você é quem está notificando ser.

Por exemplo, a carteira de identidade, é uma autenticação que confirma que determinado número corresponde a matrícula no sistema de alguma entidade. São dois conceitos diferentes, mas importantes para esse curso, visto que usaremos bastante.

Autorização

Sobre o curso Node.js: criptografia e tokens JWT

O curso Node.js: criptografia e tokens JWT possui 170 minutos de vídeos, em um total de 67 atividades. Gostou? Conheça nossos outros cursos de Node.JS em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Node.JS acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas