
Ejecución binaria vinculada al hardware y controlada por la nube, procedencia criptográfica y sellado de sobres antimanipulación para Crystal.
Ejecución de binarios vinculada al hardware y restringida a la nube, y sellado de envoltura anti-manipulación para Crystal.
Pyrite garantiza que tu binario Crystal compilado solo se ejecute en tu infraestructura autorizada. Si un adversario extrae, filtra, roba o modifica el binario, la ejecución se detiene inmediatamente antes de que se exponga cualquier lógica de la aplicación o secreto.
systemd-creds) o por Google Cloud Run IAM / Cloud KMS./proc/self/exe y lo compara con el hash autorizado descifrado de la envoltura. Cualquier alteración de 1 byte detiene el proceso al instante.strip -s) no contiene tablas de símbolos, metadatos de reflexión ni configuración en texto plano. La descompilación solo produce un envoltorio de descifrado muerto.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 aplica una política absoluta de confianza cero y fallo cerrado:
Pyrite::HardwareAuthError y sale con código 1.bin/pyrite)Una vez instalado, Pyrite proporciona una herramienta CLI compilada para automatizar la compilación LLVM, el despojo de símbolos ELF, el hashing de digest SHA-256 y el sellado de envoltura.
# 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
| Entorno | Proveedor | Raíz de confianza | Protección |
|---|---|---|---|
| Google Cloud Run | Pyrite::Providers::GCPKMS | Google Cloud IAM + Cloud KMS | BinAuthz + Instance Metadata OIDC |
| Fedora / Bare-Metal | Pyrite::Providers::SystemdCreds | TPM 2.0 del host (PCR 0,7) | systemd-creds + Linux Kernel IMA |
| Bare-Metal Direct | Pyrite::Providers::TPM2Direct | Chip /dev/tpmrm0 | Desellado directo de PCR TPM2 (tpm2-tools) |
| AWS (ECS / Lambda) | Pyrite::Providers::AWSKMS | IMDSv2 + AWS KMS | Descifrado con rol de tarea de AWS IAM |
La documentación técnica exhaustiva, las especificaciones y los registros de decisiones de arquitectura se mantienen en reStructuredText bajo docs/: