-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Description
개요
ProofPort에서 자체 zkTLS Attestor 서비스를 구축하기 위한 TEE(Trusted Execution Environment) 개발 가이드입니다.
상세 문서: docs/TEE_ATTESTOR_DEVELOPMENT.md
1. TEE 기본 개념
TEE (Trusted Execution Environment)
- 메인 프로세서 내의 격리된 보안 영역
- 코드와 데이터의 기밀성/무결성 보호
- 외부 네트워크 접근 불가 (vsock만 사용)
Attestation 프로세스
[Enclave 내부] [AWS Nitro Hypervisor]
│ │
│ 1. get-attestation-document │
│ ─────────────────────────────────► │
│ │
│ 2. PCRs + Nonce + 추가 데이터 │
│ ◄───────────────────────────────── │
│ (서명된 CBOR/COSE) │
Platform Configuration Registers (PCRs)
| PCR | 내용 | 용도 |
|---|---|---|
| PCR0 | Enclave 이미지 파일 (EIF) 해시 | 코드 무결성 검증 |
| PCR1 | Linux 커널 + 부트스트랩 | 런타임 환경 검증 |
| PCR2 | 애플리케이션 | 앱 코드 검증 |
| PCR8 | 서명 인증서 | 서명된 빌드 검증 |
2. Attestor 아키텍처
zkTLS Attestor의 역할
- TLS 프록시: Client ↔ Data Source 간 TLS 트래픽 중계
- 데이터 관찰: 복호화된 요청/응답 관찰 (읽기만)
- 증명 생성: "이 데이터가 특정 서버에서 왔음"을 증명
- 서명: TEE의 Attestation으로 신뢰성 보장
두 가지 구현 방식
| 방식 | 특징 | ProofPort 권장 |
|---|---|---|
| MPC-TLS (TLSNotary) | 2PC로 세션키 분할, 프라이버시 강화, 복잡하고 느림 | ❌ |
| Proxy 모델 (zkPass/Reclaim) | Attestor가 전체 트래픽 관찰, TEE 내부 복호화, 간단하고 빠름 | ✅ |
3. AWS Nitro Enclaves 구성
지원 인스턴스 타입
- 범용: M5, M5a, M5d, M6i, M6a (4+ vCPUs)
- 컴퓨팅 최적화: C5, C5a, C6i, C6a (4+ vCPUs)
- 권장 시작 인스턴스:
c6a.xlarge(가장 저렴한 4 vCPU)
제한사항
- ❌ Bare metal 인스턴스
- ❌ Burstable 인스턴스 (T3, T4g 등)
- ❌ 1 vCPU 인스턴스
인프라 구성
VPC
├── Public Subnet
│ └── Application Load Balancer (HTTPS:443)
│
└── Private Subnet
├── EC2 Instance (c6a.xlarge, Nitro Enclave 활성화)
│ ├── Parent Instance
│ │ ├── API Gateway
│ │ └── vsock Proxy
│ │
│ └── Nitro Enclave
│ ├── TLS Proxy Engine
│ ├── Attestation Generator
│ └── Signature Service
│
└── NAT Gateway
4. 개발해야 할 컴포넌트
Parent Instance (6개)
- API Gateway - 클라이언트 요청 수신, 인증/인가
- vsock Proxy - TCP ↔ vsock 변환
- Session Manager - 세션 상태 관리
Nitro Enclave (3개)
- TLS Proxy Engine - TLS 핸드셰이크, 데이터 복호화/관찰
- Attestation Generator - Nitro NSM API 호출, 증명 문서 생성
- Signature Service - ECDSA 서명, 개인키 관리
프로젝트 구조
proofport-attestor/
├── parent/ # Parent Instance 코드
│ ├── src/
│ │ ├── api/ # API 엔드포인트
│ │ └── proxy/ # vsock 프록시
│ └── Dockerfile
│
├── enclave/ # Enclave 코드
│ ├── src/
│ │ ├── tls_proxy.rs
│ │ ├── attestation.rs
│ │ └── signature.rs
│ └── Dockerfile.enclave
│
├── shared/ # 공유 코드 (프로토콜, 타입)
├── scripts/ # 빌드/배포 스크립트
└── terraform/ # 인프라 코드
5. API 엔드포인트
POST /api/v1/session/create # 새 attestation 세션 생성
POST /api/v1/session/{id}/request # TLS 프록시 요청
POST /api/v1/session/{id}/attest # Attestation 생성
GET /api/v1/verify # Attestation 검증
6. 비용 분석
AWS 월 비용 (서울 리전)
| 항목 | 비용 |
|---|---|
| EC2 (c6a.xlarge) | ~$100 |
| ALB | ~$20 |
| NAT Gateway | ~$35 |
| 데이터 전송 (100GB) | ~$9 |
| Nitro Enclaves | $0 (무료) |
| 합계 | ~$164/월 |
vs 외부 서비스 비교
| 서비스 | 예상 비용 (10만 건/월) |
|---|---|
| 자체 운영 (AWS Nitro) | ~$164/월 (고정) |
| zkPass | 비공개 (추정 $500+) |
| Reclaim Protocol | 비공개 (토큰 기반) |
결론: 대량 처리 시 자체 운영이 비용 효율적
확장 비용
| 처리량 | 인스턴스 수 | 월 비용 |
|---|---|---|
| ~10만 건/월 | 1 | ~$164 |
| ~100만 건/월 | 3 | ~$400 |
| ~1000만 건/월 | 10 | ~$1,200 |
7. 보안 고려사항
신뢰 경계 (Trust Boundary)
| 신뢰하지 않음 | 신뢰함 |
|---|---|
| Host OS | Nitro Hypervisor |
| AWS Operator | Enclave 내부 코드 |
| 네트워크 | AWS Root of Trust |
| Parent App |
Enclave 보안 특성
- 🔒 메모리 암호화
- 🔒 디버거 접근 불가
- 🔒 외부 네트워크 불가 (vsock만)
- 🔒 영구 저장소 없음
위협 완화
| 위협 | 완화 방법 |
|---|---|
| 악의적인 Host OS | TEE 격리, 메모리 암호화 |
| MITM 공격 | TLS, Attestation |
| 리플레이 공격 | Nonce 사용 |
| 코드 변조 | PCR 검증, 서명된 빌드 |
8. 구현 로드맵
Phase 1: 환경 구축
- AWS 계정 설정 (Nitro Enclave 지원 리전)
- Terraform으로 기본 인프라 배포
- EC2 인스턴스 + Nitro Enclaves CLI 설치
Phase 2: 기본 Enclave 개발
- Hello World Enclave 빌드/실행
- vsock 통신 테스트
- Attestation Document 생성 테스트
Phase 3: TLS Proxy 구현
- rustls 기반 TLS 프록시
- SNI 추출 및 라우팅
- 응답 데이터 파싱
Phase 4: Attestation 서비스 구현
- NSM API 연동
- 서명 서비스
- API Gateway
Phase 5: 프로덕션 배포
- Auto Scaling 설정
- 모니터링/로깅
- 보안 감사
참고 자료
- AWS Nitro Enclaves User Guide
- Cryptographic Attestation
- AWS Nitro Enclaves NSM API
- Marlin Blog - Networking in Enclaves
- TLSNotary Protocol
Labels
documentationresearchinfrastructure
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation