/data-security-envelop

Implementação em NodeJS de um envelope digital.

Primary LanguageTypeScript

GitHub repo size GitHub language count GitHub stars GitHub forks GitHub issues Bitbucket open pull requests

Funcionamento de um envelope digital.

O projeto tem como objetivo praticar os conhecimentos de segurança em sistemas criando um gerenciador de envelopes digitais, para isso a aplicação fornece uma interface que irá criar e abrir esses envelopes. Em um arquivo de configuração são definidos o par de chaves RSA privada e pública do destinatário e o algoritmo simétrico que será utilizado na cifragem/decifragem do envelope.

🤓 Introdução:

Os envelopes digitais são uma técnica de segurança amplamente utilizada para proteger informações sensíveis durante o armazenamento, transmissão e acesso. Eles fornecem confidencialidade, autenticidade e integridade dos dados, garantindo que somente partes autorizadas possam acessar o conteúdo. Para isso a informação passará pelos processos de envelopamento no remetente e abertura no destinário. Nesse projeto vamos explorar esse mecanismo utilizando o algoritmo de chave assimétrica RSA e os algoritmos simétricos AES, DES ou RC4. A chave assimétrica será usada para criptografar a chave simétrica, que, por sua vez, será usada para criptografar o conteúdo do envelope.

📩 Envelopamento - Remetente

  • A mensagem em claro é convertida em uma representação binária.
  • Uma chave simétrica temporária e aleatória é gerada para o algoritmo simétrico.
  • O conteúdo é criptografado com o algoritmo simétrico utilizando a chave gerada.
  • A chave simétrica temporária é cifrada utilizando a chave pública do destinatário.

📃 Abertura - Destinarário

  • A chave simétrica é descriptografada utilizando a chave privada.
  • A mensagem do envelope é decifrada utilizando a chave simétrica.

📖 Referências

🪚 Feito Com:

Git TypeScript NodeJS

💻 Pré-requisitos

Antes de começar, verifique se você atendeu aos seguintes requisitos:

📥 Baixando e Compilando o Projeto

Para clonar, baixar as dependências e compilar o projeto, utilize os comandos:

git clone https://github.com/pumba-dev/data-security-envelop.git

cd data-security-envelop

npm run build

📝 Gerando Par de Chaves RSA

Para gerar um par de chaves pública e privada basta utilizar o comando abaixo:

npm run keygen

Este comando irá gerar dois arquivos (public_key.pem e private_key.pem) na pasta /rsa-keys localizada na raiz do projeto.

⚙️ Configurando a Aplicação

Para definir os algoritmos e chaves utilizados no envelope, atualize os dados no arquivo de configuração envelope-config.json no diretório raiz do projeto. Sempre que alterar dados no arquivo de configuração, execute o comando npm run build para compilar as alterações.

Params Type Default Description
clearText String clear-text Nome do arquivo que contem o texto em claro para envelopamento.
rsaPublicKey String public_key Nome do arquivo de chave pública utilizado para criptografia da chave simétrica.
rsaPrivateKey String private_key Nome do arquivo de chave privada utilizado para criptografia da chave simétrica.
simetricAlgorithm String AES Algoritmo simétrico utilizado para criptografia da mensagem (AES, DES ou RC4)
envelopeKey String encrypted_key Nome do arquivo que contem a chave criptografada para abertura no remetente
envelopeMessage String encrypted_file Nome do arquivo que contem a mensagem criptografada para abertura no remetente

Texto em Claro

  • Para adicionar um novo texto em claro para o envelopamento, basta criar ou alterar um arquivo .txt localizado na pasta /clear-texts na raiz do projeto. Por padrão, o algoritmo está configurado para ler o arquivo de nome clear-text.

Chaves RSA

  • As chaves RSA estão localizadas na pasta /rsa-keys na raiz do projeto. Você pode gerar novas chaves ou adicionar um novo par de chaves e especifica-los no arquivo de configuração.

Mensagens Cifradas e Decifradas

  • Os envelopes criados serão salvos na pasta /encrypted-messages. Por padrão o algoritmo está configurado para salvar os envelopes como encrypted_file e encrypted_key e ler estes mesmos envelopes durante a decifragem. Para realizar a decifragem de um envelope diferente, basta adicionar o par de arquivos chave e mensagem na pasta de envelopes e especifica-los no arquivo de configuração. A decifragem desses envelopes serão salvos na pasta /decrypted-messages.

🚀 Gerando e Abrindo um Envelope

Para gerar um envelope, utilize o comando:

npm run create

Para abrir o envelope, utilize o comando:

npm run open

📫 Contribuindo com o Projeto

Para contribuir com o projeto, siga estas etapas:

  1. Bifurque este repositório.
  2. Crie um branch: git checkout -b <nome_branch>.
  3. Faça suas alterações e confirme-as: git commit -m '<mensagem_commit>'
  4. Envie para o branch original: git push origin main
  5. Crie a solicitação de pull.

Como alternativa, consulte a documentação do GitHub em como criar uma solicitação pull.

🤝 Colaboradores

As seguintes pessoas contribuíram para este projeto:

Foto do Pumbadev no GitHub
Pumba Developer
Foto do Elyvya Teles
Elyvya Teles

💰 Donate

PicPay

📝 Licença

Copyright © 2023 Pumba Developer

⬆ Voltar ao topo