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.
Go 1.20 ou superior
SoftHSM2 instalado:
sudo apt install softhsm2Módulo PKCS#11 do SoftHSM2:
/usr/lib/softhsm/libsofthsm2.soCriar 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.confInicializar token no HSM simulado
softhsm2-util --init-token --free --label "MyToken"- SO PIN: 123456
- User PIN: 1234
Gerar chave AES-256 no HSM
go run generate_key.goIsso cria uma chave AES-256 com o label my-hsm-key protegida pelo HSM.
echo "mensagem secreta" > example.txt
go run encrypt_file.gogo run decrypt_file.goGera example.txt.enc, criptografado via hardware (HSM).
.
├── 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- 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.