
Hardware-bound & Cloud-gated binary execution, cryptographic provenance, and anti-tamper envelope sealing for Crystal.
Esecuzione binaria vincolata all'hardware e al cloud, con sigillatura anti-manomissione dell'envelope per Crystal.
Pyrite garantisce che il tuo binario Crystal compilato venga eseguito esclusivamente sulla tua infrastruttura autorizzata. Se un avversario estrae, divulga, ruba o modifica il binario, l'esecuzione si interrompe immediatamente prima che qualsiasi logica applicativa o segreto venga esposto.
systemd-creds) o da Google Cloud Run IAM / Cloud KMS./proc/self/exe e lo confronta con l'hash autorizzato decriptato dall'envelope. Qualsiasi alterazione di 1 byte interrompe il processo istantaneamente.strip -s) contiene zero tabelle dei simboli, metadati di reflection o configurazione in chiaro. La decompilazione produce solo un wrapper di decriptazione inerte.shard.ymldependencies:
pyrite:
github: renich/pyrite
version: ~> 0.1.0
require "pyrite"
require "kemal"
# Definisci la configurazione dell'applicazione fortemente tipizzata
struct AppConfig
include JSON::Serializable
getter database_url : String
getter session_secret : String
getter api_token : String
end
# Verifica e bootstrap in 1 riga:
config = Pyrite.bootstrap!(AppConfig)
puts "Pyrite ha verificato l'integrità del binario. Avvio dell'applicazione..."
get "/" do
"Servizio sicuro in esecuzione su hardware autorizzato."
end
Kemal.run
Durante lo sviluppo o i test unitari (crystal spec), non hai bisogno di credenziali cloud attive o di un TPM fisico. Crea semplicemente .pyrite.dev.json o imposta PYRITE_DEV=1:
{
"database_url": "postgresql://postgres:pass@localhost:5432/dev",
"session_secret": "insecure-dev-secret-key",
"api_token": "dev-token"
}
Pyrite stamperà un chiaro avviso visivo nel terminale e passerà la tua configurazione locale.
bin/pyrite)Una volta installato, Pyrite fornisce uno strumento CLI compilato per automatizzare la compilazione LLVM, lo stripping dei simboli ELF, l'hashing del digest SHA-256 e la sigillatura dell'envelope.
# Build e sigillatura per 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 e sigillatura per Fedora Bare-Metal (TPM 2.0 / systemd-creds):
bin/pyrite build \
--input=src/main.cr \
--output=bin/app \
--target=baremetal \
--pcr=0,7 \
--config=config/production.json
Documentazione tecnica esaustiva, specifiche e record di decisione architetturale sono mantenuti in reStructuredText sotto docs/:
Tutti i contributi devono aderire al Codice d'Onore Universale e alle Linee Guida per i Contributi.
Copyleft © 2026 Rénich Bon Ćirić <[email protected]>.
Se trovi Pyrite utile e desideri sostenere il suo sviluppo continuo, considera di fare una donazione:
| Ambiente | Provider | Radice di Fiducia | Protezione |
|---|
| Google Cloud Run | Pyrite::Providers::GCPKMS | Google Cloud IAM + Cloud KMS | BinAuthz + OIDC dei Metadati dell'Istanza |
| Fedora / Bare-Metal | Pyrite::Providers::SystemdCreds | TPM 2.0 dell'Host (PCR 0,7) | systemd-creds + Linux Kernel IMA |
| Bare-Metal Diretto | Pyrite::Providers::TPM2Direct | Chip /dev/tpmrm0 | Unseal diretto TPM2 PCR (tpm2-tools) |
| AWS (ECS / Lambda) | Pyrite::Providers::AWSKMS | IMDSv2 + AWS KMS | Decrypt con Ruolo Task AWS IAM |
| Sviluppo Locale | Pyrite::Providers::DevMock | File locale (.pyrite.dev.json) | Sviluppo locale senza attriti |
| Guida | Ambito e Punti Salienti | Link Diretto |
|---|
| Contesto Aziendale e Strategia | Dichiarazione del problema, panorama delle minacce, persona degli stakeholder (Devon, Rénich, Sam) e obiettivi ROI quantificabili. | Specifiche Aziendali • Persona • Dichiarazione del Problema |
| Specifiche Funzionali | Requisiti [FUNC-001]–[FUNC-005]: gating di esecuzione, auto-integrità in tempo reale, sigillatura dell'envelope, esperienza sviluppatore e orchestrazione CLI. | Specifiche Funzionali • Gating di Esecuzione • Auto-Integrità |
| Architettura Tecnica | Specifiche [TECH-001]–[TECH-005]: motore di deserializzazione core, hasher SHA-256 streaming da 16KB, driver dei provider e modello di minaccia STRIDE formale. | Specifiche Tecniche • Motore Core • Modello di Minaccia |
| Record di Decisione Architetturale | ADR immutabili che documentano la crittografia dell'envelope rispetto alla DRM lato client e il design della libreria standard a zero dipendenze. | Indice ADR • ADR 001 (Crittografia Envelope) • ADR 002 (Solo Stdlib) |
| Roadmap di Progetto e Monitoraggio | Monitoraggio sequenziato della consegna in 3 fasi, criteri di verifica e deliverable delle milestone su motore core, provider e CLI. | Roadmap • Fase 1 • Fase 2 • Fase 3 |
| Riferimento API Crystal | Gerarchia completa dei tipi interattiva, firme dei metodi e riferimento generato dal compilatore. | Riferimento API |