
하드웨어 바인딩 및 클라우드 게이트 바이너리 실행, 암호화 출처 증명, 그리고 Crystal용 변조 방지 봉투 밀봉.
Crystal을 위한 하드웨어 바인딩 및 클라우드 게이트 바이너리 실행과 변조 방지 봉투(Envelope) 실링.
Pyrite는 컴파일된 Crystal 바이너리가 승인된 인프라에서만 실행되도록 보장합니다. 공격자가 바이너리를 추출, 유출, 탈취 또는 변조하더라도 애플리케이션 로직이나 비밀이 노출되기 전에 실행이 즉시 중단됩니다.
systemd-creds) 또는 Google Cloud Run IAM / Cloud KMS만 복호화할 수 있는 봉투(Envelope) 내부에 봉인됩니다./proc/self/exe의 SHA-256 다이제스트를 계산하여 봉투에서 복호화된 승인된 해시와 비교합니다. 1바이트만 변경되어도 프로세스가 즉시 중단됩니다.strip -s)에는 심볼 테이블, 리플렉션 메타데이터 또는 평문 구성이 전혀 포함되지 않습니다. 역컴파일하면 죽은 복호화 래퍼만 생성됩니다.shard.yml에 추가dependencies:
pyrite:
github: renich/pyrite
version: ~> 0.1.0
require "pyrite"
require "kemal"
# 강력한 타입의 애플리케이션 구성 정의
struct AppConfig
include JSON::Serializable
getter database_url : String
getter session_secret : String
getter api_token : String
end
# 1줄 검증 및 부트스트랩:
config = Pyrite.bootstrap!(AppConfig)
puts "Pyrite verified binary integrity. Starting application..."
get "/" do
"Secure service running on authorized hardware."
end
Kemal.run
개발 중이거나 단위 테스트(crystal spec) 중에는 활성 클라우드 자격 증명이나 물리적 TPM이 필요하지 않습니다. .pyrite.dev.json을 생성하거나 PYRITE_DEV=1을 설정하기만 하면 됩니다:
{
"database_url": "postgresql://postgres:pass@localhost:5432/dev",
"session_secret": "insecure-dev-secret-key",
"api_token": "dev-token"
}
Pyrite는 터미널에 명확한 시각적 경고를 출력하고 로컬 구성을 통과시킵니다.
bin/pyrite)설치 시 Pyrite는 LLVM 컴파일, ELF 심볼 스트리핑, SHA-256 다이제스트 해싱 및 봉투 실링을 자동화하는 컴파일된 CLI 도구를 제공합니다.
# 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
# 베어메탈 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
포괄적인 기술 문서, 사양 및 아키텍처 결정 기록은 docs/ 아래에 reStructuredText로 유지 관리됩니다:
모든 기여는 보편적 행동 강령 및 기여 지침을 준수해야 합니다.
카피레프트 © 2026 Rénich Bon Ćirić <[email protected]>.
Pyrite가 유용하다고 생각하고 지속적인 개발을 지원하고 싶다면 기부를 고려해 주세요:
| 환경 | 제공자 | 신뢰 루트 | 보호 |
|---|
| Google Cloud Run | Pyrite::Providers::GCPKMS | Google Cloud IAM + Cloud KMS | BinAuthz + 인스턴스 메타데이터 OIDC |
| Fedora / 베어메탈 | Pyrite::Providers::SystemdCreds | 호스트 TPM 2.0 (PCR 0,7) | systemd-creds + Linux 커널 IMA |
| 베어메탈 직접 | Pyrite::Providers::TPM2Direct | /dev/tpmrm0 칩 | 직접 TPM2 PCR 언실링 (tpm2-tools) |
| AWS (ECS / Lambda) | Pyrite::Providers::AWSKMS | IMDSv2 + AWS KMS | AWS IAM 태스크 역할 복호화 |
| 로컬 개발 | Pyrite::Providers::DevMock | 로컬 파일 (.pyrite.dev.json) | 마찰 없는 로컬 개발 |
| 가이드 | 범위 및 주요 내용 | 직접 링크 |
|---|
| 비즈니스 컨텍스트 및 전략 | 문제 정의, 위협 환경, 이해관계자 페르소나(Devon, Rénich, Sam) 및 정량화 가능한 ROI 목표. | 비즈니스 사양 • 페르소나 • 문제 정의 |
| 기능 사양 | 요구사항 [FUNC-001]–[FUNC-005]: 실행 게이팅, 실시간 자체 무결성, 봉투 실링, 개발자 경험 및 CLI 오케스트레이션. | 기능 사양 • 실행 게이팅 • 자체 무결성 |
| 기술 아키텍처 | 사양 [TECH-001]–[TECH-005]: 핵심 역직렬화 엔진, 스트리밍 16KB SHA-256 해셔, 제공자 드라이버 및 공식 STRIDE 위협 모델. | 기술 사양 • 핵심 엔진 • 위협 모델 |
| 아키텍처 결정 기록 | 봉투 암호화 대 클라이언트 측 DRM 및 제로 의존성 표준 라이브러리 설계를 문서화한 불변 ADR. | ADR 색인 • ADR 001 (봉투 암호화) • ADR 002 (표준 라이브러리 전용) |
| 프로젝트 로드맵 및 추적 | 핵심 엔진, 제공자 및 CLI 전반에 걸친 순차적 3단계 전달 추적, 검증 기준 및 마일스톤 산출물. | 로드맵 • 1단계 • 2단계 • 3단계 |
| Crystal API 참조 | 완전한 대화형 타입 계층, 메서드 시그니처 및 컴파일러 생성 참조. | API 참조 |