pile·
보안·vercel-blogVercel Blog·

Vercel Workflow 엔드투엔드 암호화 — HKDF-SHA256 + AES-256-GCM 클라이언트 복호화

Vercel Workflow에 코드 변경 없이 엔드투엔드 암호화가 자동 적용됐다. 각 실행마다 HKDF-SHA256으로 고유 키를 파생하고 AES-256-GCM으로 암호화해 이벤트 로그에는 암호문만 저장된다. 복호화는 브라우저 Web Crypto API에서만 수행돼 서버가 평문을 볼 수 없는 설계다.

핵심 포인트
  • 코드 변경 없이 자동 적용 — 입력, step 인수, 반환값, 훅 페이로드, 스트리밍 데이터 전체 암호화
  • 키 파생: 실행마다 HKDF-SHA256으로 고유 키 생성, 배포마다 별도 암호화 키
  • AES-256-GCM — 기밀성과 무결성(조작 감지) 동시 보장
  • 복호화는 클라이언트 전용: 브라우저 Web Crypto API 또는 CLI(--decrypt --withData) — 서버가 평문 접근 불가
  • 복호화 시도마다 감사 로그 기록 — 데이터 접근 이력 완전 추적
상세 정리
  • 배경: Workflow 이벤트 로그에 API key, 토큰, 자격증명 같은 민감 데이터가 평문으로 남을 수 있는 위험을 해결.
  • 암호화 범위: 워크플로우 입력, step 인수, 반환값, 훅 페이로드, 스트리밍 데이터. 이벤트 로그는 암호문만 저장, step 함수 실행은 정상 동작.
  • 키 파생 — HKDF-SHA256: 각 워크플로우 실행마다 고유 키 파생. 실행 간 키 격리로 한 실행의 키 유출이 다른 실행에 영향 없음. 배포마다도 별도 키.
  • 암호화 알고리즘 — AES-256-GCM: 기밀성(암호화)과 무결성(인증 태그) 동시 제공. GCM 모드는 데이터 조작 감지 내장.
  • 클라이언트 전용 복호화: 복호화가 브라우저 Web Crypto API에서만 수행 — observability 서버가 평문에 접근 불가. Zero-knowledge 설계.
  • 복호화 방법 1 — 대시보드: run detail 패널의 Decrypt 버튼으로 클라이언트 사이드 복호화.
  • 복호화 방법 2 — CLI: npx workflow inspect run <run-id> --decrypt --withData로 로컬 복호화.
  • 접근 제어: 프로젝트 환경변수 권한과 연동 — 해당 권한 없는 사용자는 워크플로우 데이터 접근 불가.
  • 감사 추적: 모든 복호화 시도가 감사 로그에 기록 — 규정 준수 및 보안 감사 대응 가능.
  • 커스텀 구현: Custom World에서 getEncryptionKeyForRun() 메서드를 제공해 통합 가능.
왜 읽나AI 파이프라인에 민감한 데이터를 처리하거나, 서버 측 평문 노출 없는 암호화 설계(HKDF + AES-GCM + 클라이언트 복호화)에 관심 있는 보안/백엔드 엔지니어.
vercel-blog
Vercel Blog 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 보안·cloudflare-blogCloudflare Blog·

    오리진 서버 포스트 퀀텀 인증 지원 — ML-DSA mTLS 구현기

    Cloudflare가 오리진 서버와의 TLS 연결에 포스트 퀀텀 인증(ML-DSA)을 도입했다. 2023년 이미 포스트 퀀텀 암호화(encryption)가 배포됐지만, 인증(authentication)은 여전히 양자 공격에 취약한 상태였다. Authenticated Origin Pulls(AOP)와 Custom Origin Trust Store(COTS) 두 제품을 통해 완전한 상호 인증 TLS를 구현했으며, FIPS 204(ML-DSA) 표준을 오리진 연결에 적용한 첫 번째 마일스톤이다.

    #mtls#tls#post-quantum+2