Skip to content

williamkoller/golang-encryption

Repository files navigation

Projeto: Criptografia com Go e SoftHSM2 via PKCS#11

Este projeto demonstra como criptografar arquivos usando uma chave AES-256 protegida dentro de um HSM, utilizando o SoftHSM2 (HSM simulado) e o pacote Go github.com/miekg/pkcs11.

Requisitos

Go 1.20 ou superior

SoftHSM2 instalado:

sudo apt install softhsm2

Módulo PKCS#11 do SoftHSM2:

/usr/lib/softhsm/libsofthsm2.so

Configuração do ambiente

Criar estrutura de tokens do usuário

mkdir -p ~/softhsm/tokens
echo "directories.tokendir = $HOME/softhsm/tokens" > ~/softhsm/softhsm2.conf
export SOFTHSM2_CONF=$HOME/softhsm/softhsm2.conf

Inicializar token no HSM simulado

softhsm2-util --init-token --free --label "MyToken"
  • SO PIN: 123456
  • User PIN: 1234

Rodando o projeto

Gerar chave AES-256 no HSM

go run generate_key.go

Isso cria uma chave AES-256 com o label my-hsm-key protegida pelo HSM.

Criptografar arquivo com a chave

echo "mensagem secreta" > example.txt
go run encrypt_file.go

Descriptografia

go run decrypt_file.go

Gera example.txt.enc, criptografado via hardware (HSM).

Estrutura dos arquivos

.
├── generate_key.go       # Gera a chave AES no HSM
├── encrypt_file.go       # Criptografa um arquivo usando a chave
├── example.txt           # Arquivo de entrada (texto claro)
├── example.txt.enc       # Saída criptografada
└── README.md             # Instruções e documentação

Segurança

  • A chave não é exportada em momento algum.
  • Todas as operações criptográficas são feitas dentro do HSM (SoftHSM).
  • Ideal para uso em ambiente de produção com CloudHSM da AWS, YubiHSM, Thales, etc.

About

Criptografia com Go e SoftHSM2 via PKCS#11

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published