Prova de Conceito (PoC) para geração e validação de chaves criptográficas, integrando uma LLM (via API) e fonte pública de entropia (League of Entropy/drand).
- Consome entropia diretamente da API drand.
- Gera chaves usando uma LLM baseada em seed público.
- Aplica pós-processamento e validação estatística (entropia/NIST).
- Expõe serviço REST via Flask.
Primeiro é necessário clonar o repositório em sua máquina:
git clone https://github.com/Brenda-Machado/llm-entropy-criptography.git
cd llm-entropy-criptographyCriar o ambiente virtual e instalar os requisitos:
make venv
make installAlém dos requirements, é necessário fazer o setup do Ollama server, consulte as instruções em SETUP_OLLAMA.md.
Uma vez que o Ollama server e os requisitos estão instalados, para rodar a aplicação principal execute:
make runApós isso, abra o navegador em http://localhost:5000 para acessar a interface da aplicação.
Caso queira saber quais outros comandos é possível rodar na aplicação, execute:
make helpapp.py: API Flask e orquestraçãodrand_client.py: integração League of Entropyllm_client.py: integração LLMnist_tests.py: testes NIST SP 800-22vector_store.py: armazenamento de exemplostest_nist_integration.py: integração LLM com NIST
Para interagir com a API via terminal, segue os endpoints:
curl -X POST http://localhost:5000/generate_key \
-H "Content-Type: application/json" \
-d '{"key_size": 256, "strategy": "few-shot"}'curl -X POST http://localhost:5000/nist/validate_key \
-H "Content-Type: application/json" \
-d '{"key_hex": "a3f5b82c9e1d47f6b0e8c2a7d4f1e9b3c6a8f2d5e7b1c4a9f3e6d2b5c8a1f4e7"}'curl -X POST http://localhost:5000/nist/generate_and_validate \
-H "Content-Type: application/json" \
-d '{"key_size": 256, "strategy": "few-shot"}'Variáveis de ambiente disponíveis (opcional):
export KEY_SIZE_BITS=256
export PROMPT_STRATEGY=few-shot
export TEMPERATURE_PRESET=high_entropy
export OLLAMA_MODEL=gemma3:latest
export OLLAMA_BASE_URL=http://localhost:11434Important
Essa implementação foi parcialmente feita com o uso da IA Claude, como objetivo da disciplina de Tópicos Especiais em Aplicações Tecnológicas I (INE5448) 2025/2.
- NIST SP 800-22: A Statistical Test Suite for Random and Pseudorandom Number Generators
- League of Entropy (drand): https://drand.love
- Ollama: https://ollama.ai
MIT
