
Exécution binaire liée au matériel et contrôlée par le cloud, provenance cryptographique et scellement d’enveloppe anti-altération pour Crystal.
Exécution binaire liée au matériel et conditionnée au cloud, et scellement d'enveloppe anti-altération pour Crystal.
Pyrite garantit que votre binaire Crystal compilé ne s'exécute que sur votre infrastructure autorisée. Si un adversaire extrait, divulgue, vole ou modifie le binaire, l'exécution s'arrête immédiatement avant que toute logique applicative ou tout secret ne soit exposé.
systemd-creds) ou par Google Cloud Run IAM / Cloud KMS./proc/self/exe et le compare au hachage autorisé déchiffré depuis l'enveloppe. Toute altération d'un seul octet arrête instantanément le processus.strip -s) ne contient aucune table de symboles, aucune métadonnée de réflexion ni configuration en clair. La décompilation ne produit qu'un wrapper de déchiffrement mort.shard.ymldependencies:
pyrite:
github: renich/pyrite
version: ~> 0.2.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
Pyrite applique une politique absolue de zéro confiance et de défaillance fermée :
Pyrite::HardwareAuthError et se termine avec le code 1.bin/pyrite)Une fois installé, Pyrite fournit un outil CLI compilé pour automatiser la compilation LLVM, l'allègement des symboles ELF, le hachage par condensat SHA-256 et le scellement d'enveloppe.
# 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
# Build & Seal for AWS (ECS / Lambda / KMS):
bin/pyrite build \
--input=src/main.cr \
--output=bin/app \
--target=aws \
--kms-key="arn:aws:kms:us-east-1:123456789012:key/..." \
--config=config/production.json
| Environnement | Fournisseur | Racine de confiance | Protection |
|---|---|---|---|
| Google Cloud Run | Pyrite::Providers::GCPKMS | Google Cloud IAM + Cloud KMS | BinAuthz + Instance Metadata OIDC |
| Fedora / Bare-Metal | Pyrite::Providers::SystemdCreds | TPM 2.0 de l'hôte (PCR 0,7) | systemd-creds + Linux Kernel IMA |
| Bare-Metal Direct | Pyrite::Providers::TPM2Direct | Puce /dev/tpmrm0 | Descellement TPM2 PCR direct (tpm2-tools) |
| AWS (ECS / Lambda) | Pyrite::Providers::AWSKMS | IMDSv2 + AWS KMS | Déchiffrement par rôle de tâche AWS IAM |
Une documentation technique exhaustive, des spécifications et des comptes rendus de décisions d'architecture sont maintenus en reStructuredText sous docs/ :