
Execução binária vinculada a hardware e controlada por nuvem, proveniência criptográfica e selagem de envelope anti-adulteração para Crystal.
Execução de Binários Vinculada a Hardware e Gateada por Nuvem e Selagem de Envelope Anti-Adulteração para Crystal.
O Pyrite garante que seu binário Crystal compilado execute somente na sua infraestrutura autorizada. Se um adversário extrair, vazar, roubar ou modificar o binário, a execução é interrompida imediatamente antes que qualquer lógica de aplicação ou segredos sejam expostos.
systemd-creds) ou pelo Google Cloud Run IAM / Cloud KMS./proc/self/exe e o compara com o hash autorizado descriptografado do envelope. Qualquer alteração de 1 byte interrompe o processo instantaneamente.strip -s) contém zero tabelas de símbolos, metadados de reflexão ou configuração em texto puro. A descompilação produz apenas um wrapper de descriptografia morto.shard.ymldependencies:
pyrite:
github: renich/pyrite
version: ~> 0.1.0
require "pyrite"
require "kemal"
# Define strongly-typed application configuration
struct AppConfig
include JSON::Serializable
getter database_url : String
getter session_secret : String
getter api_token : String
end
# 1-line verification & bootstrap:
config = Pyrite.bootstrap!(AppConfig)
puts "Pyrite verified binary integrity. Starting application..."
get "/" do
"Secure service running on authorized hardware."
end
Kemal.run
Durante o desenvolvimento ou testes unitários (crystal spec), você não precisa de credenciais de nuvem ativas ou de um TPM físico. Basta criar .pyrite.dev.json ou definir PYRITE_DEV=1:
{
"database_url": "postgresql://postgres:pass@localhost:5432/dev",
"session_secret": "insecure-dev-secret-key",
"api_token": "dev-token"
}
O Pyrite exibirá um aviso visual claro no terminal e repassará sua configuração local.
bin/pyrite)Quando instalado, o Pyrite fornece uma ferramenta CLI compilada para automatizar a compilação LLVM, a remoção de símbolos ELF, o hash de digest SHA-256 e a selagem de envelope.
# Build & Seal for Google Cloud Run (KMS):
bin/pyrite build \
--input=src/main.cr \
--output=bin/app \
--target=gcp \
--kms-key="projects/my-p/locations/global/keyRings/my-r/cryptoKeys/app-key" \
--config=config/production.json
# Build & Seal for Bare-Metal Fedora (TPM 2.0 / systemd-creds):
bin/pyrite build \
--input=src/main.cr \
--output=bin/app \
--target=baremetal \
--pcr=0,7 \
--config=config/production.json
Documentação técnica exaustiva, especificações e registros de decisão de arquitetura são mantidos em reStructuredText sob docs/:
Todas as contribuições devem aderir ao Universal Code of Honor e às Contributing Guidelines.
Copyleft © 2026 Rénich Bon Ćirić <[email protected]>.
Se você achar o Pyrite útil e desejar apoiar seu desenvolvimento contínuo, considere doar:
| Ambiente | Provedor | Raiz de Confiança | Proteção |
|---|
| Google Cloud Run | Pyrite::Providers::GCPKMS | Google Cloud IAM + Cloud KMS | BinAuthz + Instance Metadata OIDC |
| Fedora / Bare-Metal | Pyrite::Providers::SystemdCreds | Host TPM 2.0 (PCR 0,7) | systemd-creds + Linux Kernel IMA |
| Bare-Metal Direto | Pyrite::Providers::TPM2Direct | Chip /dev/tpmrm0 | Deselagem direta de PCR TPM2 (tpm2-tools) |
| AWS (ECS / Lambda) | Pyrite::Providers::AWSKMS | IMDSv2 + AWS KMS | Decriptação pela Role de Tarefa AWS IAM |
| Desenvolvimento Local | Pyrite::Providers::DevMock | Arquivo local (.pyrite.dev.json) | Desenvolvimento local sem atrito |
| Guia | Escopo e Destaques | Link Direto |
|---|
| Contexto de Negócio e Estratégia | Declaração do problema, panorama de ameaças, personas das partes interessadas (Devon, Rénich, Sam) e metas quantificáveis de ROI. | Business Specs • Personas • Problem Statement |
| Especificações Funcionais | Requisitos [FUNC-001]–[FUNC-005]: barreira de execução, auto-integridade em tempo real, selagem de envelope, experiência do desenvolvedor e orquestração CLI. | Functional Specs • Execution Gating • Self-Integrity |
| Arquitetura Técnica | Especificações [TECH-001]–[TECH-005]: motor principal de desserialização, hasher SHA-256 de streaming de 16KB, drivers de provedores e modelo formal de ameaças STRIDE. | Technical Specs • Core Engine • Threat Model |
| Registros de Decisão de Arquitetura | ADRs imutáveis documentando criptografia de envelope versus DRM no lado do cliente e design de biblioteca padrão com zero dependências. | ADR Index • ADR 001 (Envelope Encryption) • ADR 002 (Stdlib Only) |
| Roadmap do Projeto e Acompanhamento | Acompanhamento sequenciado de entrega em 3 fases, critérios de verificação e entregas de marcos em motor principal, provedores e CLI. | Roadmap • Phase 1 • Phase 2 • Phase 3 |
| Referência da API Crystal | Hierarquia de tipos interativa completa, assinaturas de métodos e referência gerada por compilador. | API Reference |