PART 1 · 왜 지금 이 질문인가
큐레이터 단비 · 보안 팩트체크 브리핑

피클 비밀번호·개인정보,
과연 안전한가?

AI 에이전트에게 메일·캘린더·카드·비밀번호를 맡기는 시대입니다. 소스코드를 공개하고 AWS Nitro Enclave를 쓴다는 피클을, 겁주지도 홍보하지도 않고 "밖에서 검증되는 것"과 "그래도 믿어야 하는 것"으로 나눠 봅니다.

447건2025년 개인정보 유출 신고. 전년보다 45.6% 늘었습니다
15개오늘 밤 직접 검증한 피클의 라이브 인클레이브 노드
365일운영자도 지울 수 없게 잠기는 사용 기록 보존 기간
30일폰이 인클레이브에 키를 빌려줄 수 있는 최대 기간
피클 한국어 홈페이지 첫 화면
캡처를 불러오지 못했습니다
pickle.com 한국어 홈 · 2026-11-09 캡처
클릭 확대

검증되는 것 ✓

인클레이브에서 도는 코드가 공개 소스와 같은지

믿어야 하는 것 △

비공개 iOS 앱, AWS, 운영 회사의 약속

보호 밖인 것 ✗

메일 본문·대화 내용, AI의 판단 실수

출처 · 개인정보위 2025 유출 동향(2026-05-15) · github.com/pickle-com/credential-enclave README · 직접 검증 2026-11-09 22:46 KST

PART 1 · 한국 유출 통계
공식 보도자료 pipc.go.kr … nttId=12078

개인정보 유출 신고, 5년 만에 약 2.7배 — 2026년은 반년 만에 432건

유출 신고 건수 (건) 국회예산정책처 · 개인정보위 제출자료 0125250375 163167318307447432 202120222023202420252026 상반기만 +45.6%
개인정보위 2025년 유출 신고 분석 보도자료 화면
캡처를 불러오지 못했습니다
개인정보위 보도자료 · 2026-05-15
클릭 확대
62%유출 원인 1위 해킹 (276건). 업무과실 25% · 시스템오류 5%
1,677억원2025년 과징금 40건 합계. 과태료 125건 5억 8,720만원
227건2025년 개인정보위가 조사·처분한 사건 수
10%2026-09-11부터 고의·중과실 대규모 유출에 매출 최대 10% 과징금

출처 · 개인정보위·KISA 2025 유출 신고 동향(2026-05-15, nttId=12078) · 국회예산정책처(NABO) 보고서 idx=9447 · 2.7배는 447÷163 계산값

PART 1 · 최근 대형 사고
정책브리핑 · 개인정보위 보도자료 원문 캡처

대형 사고 3건의 공통점: 열쇠를 사람이나 소스코드가 쥐고 있었다

SK텔레콤 USIM 해킹 2025-04

정책브리핑 SK텔레콤 제재처분 의결 원문
캡처 없음
korea.kr 보도자료 · 2025-08-28
클릭 확대
2,324만 명IMSI·USIM 인증키 등 25종
  • 2025-08-27 과징금 1,347억 9,100만원 (당시 역대 최대)
  • 정부 발표: 서버 계정정보(ID/PW) 관리 부실, 암호화 미실시 등 확인

쿠팡 2025-11 신고

개인정보위 쿠팡 제재처분 의결 보도자료
캡처 없음
pipc.go.kr 보도자료 · 2026-06-11
클릭 확대
3,755만 명회원 3,322만 + 비회원 최소 433~434만
  • 원인: 전 직원이 서명키를 탈취
  • 2026-06-11 과징금 6,246억 8,100만원 (역대 최대)

티빙 2026-06

개인정보위 티빙 유출 사고 조사 착수 보도자료
캡처 없음
pipc.go.kr 보도자료 · 2026-06-04
클릭 확대
3,954만 계정중복 포함 계정 수
  • 원인: 개발자 접속키 탈취, 소스코드에 하드코딩된 운영키 43개
  • 조사 중 · 과기정통부 민관합동조사단 결과 2026-09-03

출처 · korea.kr SKT · pipc 쿠팡 nttId=12171 · pipc 티빙 nttId=12147 · korea.kr 티빙 조사결과 · 듀오 43만 명(NABO 각주)

PART 2 · 피클은 어떤 회사·앱인가

피클은 내 계정을 대신 쓰는 개인 AI 에이전트 앱입니다

회사 YC W25

  • 2024년 9월 설립, 샌프란시스코 기반. YC 페이지 기준 팀 6명
  • CEO Daniel Park (한성과학고, 경희대 의대 중퇴)
  • 2025-06 시드 $4.42M(약 60억원): Base Ventures, Rebel Fund, Pioneer Fund 등. 프리시드 YC·NFX·Krew

제품 월 $8.99

  • 아이폰 출시 2026-08, 프리미엄 월 $8.99
  • 메일·캘린더·예약·결제·전화 대행, 에이전트끼리 대화해 약속 잡기
  • 2026-10-28 일본 클로즈드 베타 (선착순 500명)
피클 프라이버시 블로그 글
캡처 없음
피클 블로그 · How your Pickle protects your privacy
클릭 확대

코드 기준 연결 서비스 definitions.json

Google WorkspaceMicrosoftSlackNotionXLink (Stripe)GranolaMercuryGitHub네이버 메일

네이버 메일은 OAuth가 아니라 IMAP/SMTP 앱 비밀번호로 붙습니다 (imap.naver.com:993 · smtp.naver.com:465).

공정하게 알아 둘 이력 2026-01

  • AI 아바타 "AI Self"에서 출발
  • 2026-01 AI 글래스 "soul computer" 홍보 영상이 CGI 목업이라는 비판을 받았고, CEO가 일부 인정
  • 그래서 더더욱 "말"보다 검증 가능한 것을 기준으로 봅니다
피클 보안 페이지 What gets locked: 연결 앱 자격증명, 로그인 비밀번호, 카드
캡처 없음
pickle.com/security · What gets locked?
클릭 확대
피클 홈페이지 보안 섹션: 암호화, 격리, 제어
캡처 없음
pickle.com 보안 섹션 · Encryption · Isolation · Control
클릭 확대

출처 · platum · businesskorea · runtimewire · sfstandard · enclave/src/providers/definitions.json · host/src/egress.rs L126

PART 2 · 피클이 한 주장
스레드(toscakarajan) 게시물 · CEO X @danifesto 2026-10-28

요즘 돌고 있는 요약: "열쇠는 내 폰과 잠긴 컴퓨터에만"

스레드에 올라온 요약 글스레드 사용자 toscakarajan이 피클 CEO(@danifesto)의 글을 인용해 피클의 보안 방식을 세 줄로 정리한 게시물입니다. ① 비밀번호·토큰 같은 민감한 정보는 사용자 폰과 잠긴 특수 컴퓨터(AWS Nitro Enclave) 안에서만 잠깐 쓰이고, 회사 서버에는 암호문으로만 저장된다. ② 누가 뭘 했는지 기록은 1년 동안 지울 수 없고, 그 특수 컴퓨터가 공개된 소스 코드 그대로 돌아가는지 누구나 확인할 수 있다. ③ 결론적으로 열쇠는 내 폰과 잠긴 컴퓨터에만 있고 회사는 암호문만 갖는다.
댓글에 걸린 GitHub 저장소작성자가 댓글로 소스 코드 링크 github.com/pickle-com/credential-enclave를 걸고, "LLM에게 코드 분석을 맡기면 설명도 읽을 수 있다"고 덧붙였습니다. 저장소 소개는 "Credential enclave of Pickle: holds delegated user keys inside an AWS Nitro Enclave"입니다.
1
비밀번호·토큰은 폰과 AWS Nitro Enclave 안에서만 잠깐 쓴다그림: 폰이 키를 "잠깐 빌려줌(최대 30일)"
→ 06·10장
2
회사 서버에는 암호문으로만 저장한다"회사는 암호문만 본다"
→ 06·18장
3
누가 뭘 했는지 기록이 1년간 절대 안 지워진다사용 기록(로그)의 삭제 불가
→ 13장
4
공개된 소스 그대로 도는지 누구나 확인할 수 있다"LLM에게 코드 분석을 맡기면 설명도 읽을 수 있다"
→ 15·16장
비밀번호와 카드번호는 당신의 스마트폰에서 만든 키로 암호화됩니다. 복호화는 격리된 보호 영역 안에서만 됩니다. 서버가 공격당해도 피클을 운영하는 저희조차 읽을 수 없습니다. 코드도 공개했습니다. CEO Daniel Park, X 2026-10-28 일본 출시 글 (원문 일본어, 한국어 번역) · x.com/danifesto

출처 · 스레드 게시물(toscakarajan, 본문 표기 @danifestoo — X 계정은 @danifesto) · x.com/danifesto/status/2115326570915369035 · 다음 장에서 실제 코드와 대조합니다

PART 2 · 팩트체크
리포 HEAD 17cde93 · pickle-com/credential-enclave

요약을 코드와 대조하면: 대체로 맞지만, 범위와 조건이 붙는다

돌고 있는 주장코드·문서가 실제로 말하는 것판정근거
"열쇠는 내 폰 + 잠긴 컴퓨터에만"마스터키는 iCloud 키체인(동기화 항목), Android는 Block Store(E2E)에 저장됩니다. 인클레이브에 가는 것은 마스터키가 아니라 파생된 사용자 키이고, 최대 30일 메모리에만 있습니다✓ 조건부 맞음protocol.md L91 · lib.rs L79
"회사는 암호문만 본다"토큰·TOTP 시드·메일 앱 비밀번호에는 맞습니다. 하지만 볼트의 비밀번호·카드번호·CVC는 사용 순간 평문이 되어 피클 worker와 원격 브라우저(Kernel)로 갑니다. 메일 본문·대화는 서버와 AI 제공자로 갑니다△ 일부만 맞음README "Vault value" 행
"기록은 1년간 절대 못 지운다"Amazon S3 Object Lock COMPLIANCE 모드, 365일. 운영자도 AWS 계정 root도 못 지웁니다. 버킷 수명 규칙으로 400일 뒤 삭제✓ 맞음log_store.rs L867
"누구나 공개 소스 그대로인지 확인"서버 쪽 인클레이브는 맞습니다 — 오늘 직접 확인(16장). 단, iOS 앱은 비공개라 앱이 약속대로 동작하는지는 확인할 수 없습니다✓ 서버는 맞음README How to verify
"KMS 정책으로 잠갔다" (흔한 설명)리포 전체에 kms가 0건입니다. 노드가 부팅할 때 서명키·봉인키를 스스로 만들고, 앱이 증명서를 검증한 뒤 사용자 키를 HPKE로 그 노드 공개키에 직접 봉인해 건넵니다✗ 표현 정정grep -ri kms = 0

출처 · README "Structure"·키 위치 표 · docs/protocol.md L91 · protocol/src/lib.rs L79 · enclave/src/log_store.rs L867 · secure-program/README.md · 블로그 "When Pickle uses a password or a card"

PART 3 · 인클레이브 쉽게 이해하기

인클레이브 = 서버 안에 만든 창문 없는 계산실

은행 건물 = AWS 서버(EC2, 피클이 운영) 디스크 · 인터넷 · 관리자 계정이 있는 보통 서버 운영자 · root 관리자 직원 출입 불가 창문 없는 계산실 = 인클레이브 토큰 서류 안에서만 펼침 공개된 프로그램 GitHub 코드 그대로 ✗ 서랍(디스크) 없음✗ 창문(인터넷) 없음✗ 뒷문(SSH) 없음 문 앞 지문표 PCR0·1·2 AWS 서명 누구나 대조 가능 투입구 하나 (vsock) 결과만 밖으로 예: 메일 본문
AWS 문서 What is Nitro Enclaves
캡처 없음
AWS 문서 · What is Nitro Enclaves?
클릭 확대
인클레이브는 분리·강화되고 강하게 제약된 가상머신입니다. 부모 인스턴스와는 안전한 로컬 소켓 연결만 제공합니다. 영구 저장소, 대화형 접속, 외부 네트워크가 없습니다. 사용자는 SSH로 들어갈 수 없고, 부모 인스턴스의 프로세스·앱·사용자(root/관리자)도 안의 데이터와 앱에 접근할 수 없습니다. AWS Nitro Enclaves 사용자 가이드 (한국어 번역)
✗ 디스크영구 저장소 없음
✗ 인터넷외부 네트워크 없음
✗ SSH대화형 접속 없음
✓ vsock부모와 통로 하나

출처 · AWS What is Nitro Enclaves? · 비유는 RESEARCH 3절(덱용 설명) · 이용료: 추가 요금 없음(EC2 요금만)

PART 3 · 실제 메커니즘

실제로는: 하이퍼바이저가 CPU·메모리를 잘라 준 작은 VM

물리 서버 (AWS Nitro System 하드웨어) Nitro Hypervisor — 인클레이브 전용 vCPU·메모리를 부모에게서 분리 부모 EC2 인스턴스 피클 운영자 영역 · "노드가 믿지 않는 쪽" host 프로그램바이트만 전달 디스크 · 저장소레코드는 암호문 네트워크인터넷 연결 root 관리자SSH 가능 CPU · 메모리 (부모 몫) TLS는 노드 안에서 끝남 → 여기선 암호화된 바이트만 보임 Nitro Enclave = 노드 메모리만 있는 격리 VM credential-enclave 노드 프로그램 사용자 키메모리 · ≤30일 OAuth 토큰사용 중에만 평문 NSM → AWS 서명 증명서(PCR) 전용 CPU · 메모리 ✗ 디스크 ✗ 외부망 ✗ SSH ✗ root 접근 vsock root차단 ↔ Google · Microsoft · Amazon S3(로그) 등 외부 서비스는 부모가 바이트를 중계

① 하이퍼바이저 칸막이 AWS

Nitro Hypervisor가 인클레이브 전용 vCPU와 메모리를 부모 인스턴스에서 떼어 냅니다. 부모의 root도 그 메모리를 읽을 수 없습니다.

② 통로는 vsock 하나 host/

host 프로그램은 인클레이브를 띄우고 바이트만 나릅니다. README: "노드가 보장하는 어떤 것도 호스트에 의존하지 않는다". 외부 TLS는 노드 안에서 끝납니다.

③ 디스크가 없다 enclave.md 3절

"노드는 디스크에 아무것도 쓰지 않는다." 재시작하면 새 키가 생기고 사용자 키는 없습니다. 키는 다시 위임받아야 합니다.

④ 디버그 모드는 거부 attest.rs L194

디버그 인클레이브는 부모가 메모리를 읽을 수 있고 PCR이 전부 0이 됩니다. 피클 노드는 이런 피어를 절대 받지 않습니다.

출처 · AWS nitro-enclave.html · README 구성표(host/)·"Structure" · docs/enclave.md 3절 · enclave/src/attest.rs L194-202

PART 3 · 지문과 증명서

핵심은 지문: "지금 도는 코드"를 AWS가 서명해 증명하고, 맞을 때만 키를 준다

1

공개 소스 → 지문

같은 커밋을 빌드하면 언제나 같은 PCR0·1·2(SHA-384 해시)가 나옵니다. 재현 가능 빌드.

2

부팅 → 증명서

하이퍼바이저가 측정값을 담은 문서를 서명합니다. 인증서 체인은 AWS Nitro Root-G1까지.

3

앱이 대조

폰 앱(또는 누구나)이 무작위 nonce를 보내 증명서를 받고, 서명·nonce·PCR을 공개 릴리스 값과 비교합니다.

4

맞을 때만 키

일치하면 사용자 키를 그 노드 공개키에 HPKE로 봉인해 건넵니다. 다르면 키를 주지 않습니다.

PCR무엇의 지문인가피클 사용
PCR0인클레이브 이미지 파일(EIF) 전체✓ 사용
PCR1리눅스 커널과 부트 램디스크✓ 사용
PCR2애플리케이션(노드 프로그램)✓ 사용
PCR3 · 4IAM 역할 · 인스턴스 ID미사용
PCR8EIF 서명 인증서없음 (EIF 미서명)
전부 0디버그 모드로 띄운 경우 → 증명에 쓸 수 없음✗ 거부
AWS 문서 Cryptographic attestation
캡처 없음
AWS 문서 · Cryptographic attestation
클릭 확대

출처 · AWS set-up-attestation · AWS KMS × Nitro · docs/enclave.md 11.1 · README "How to verify" 2단계 · grep -ri kms = 0

PART 4 · 열쇠는 누가 쥐나
README 키 위치 표 credential-enclave#structure

열쇠 지도: 마스터키는 폰에만, 노드는 빌린 키를 메모리에만, 운영자는 대부분 암호문만

값📱 내 기기(앱)🔒 인클레이브 노드🏢 피클 운영 영역
마스터키 · 계정 서명키 · 로그 복호화키있음절대 없음절대 없음
사용자 키마스터키에서 파생그랜트가 유효한 동안 메모리에 (최대 30일)없음 인클레이브 노드 기준
노드 서명키 · 봉인키없음프로세스 수명 동안 메모리에없음
OAuth 토큰 (Google 등)없음호출하는 동안 메모리에암호문만
메일 앱 비밀번호 (네이버 메일)입력 시 기기에서 암호화정해진 IMAP/SMTP 호출 동안암호문만
볼트 값 (비밀번호·카드번호·CVC)입력할 때release 실행 동안암호문 + release 후 평문
TOTP(OTP) 시드입력할 때코드를 계산하는 동안암호문만 6자리 코드만 나감
사용 기록(로그 entry)로그 복호화키로 열람만들어서 행동 전에 저장소에 기록봉인된 채 보관 · 365일 삭제 불가
README Structure 다이어그램
캡처 없음
README · Structure 다이어그램
클릭 확대
피클 암호화 페이지: 키는 기기에서 만들어 iCloud 키체인에 저장
캡처 없음
pickle.com/security · 키는 기기에서 생성
클릭 확대

출처 · README "Value / Device / Node / Operator domain" 표(L51-60) · README L94 "A vault value is protected by the node up to release" · docs/protocol.md L91 · 블로그 "When Pickle uses a password or a card"

PART 4 · 한 번의 요청 따라가기
pickle.com/security/isolation · README 보장표

"내 Gmail 읽어 줘" 한마디에 일어나는 5단계

1

앱이 증명서 검증

폰 앱이 노드의 증명서와 PCR이 공개 릴리스와 같은지 먼저 확인합니다.

2

키를 봉인해 빌려줌

사용자 키를 그 노드 봉인키에 묶어(HPKE) 건넵니다. 기간은 최대 30일.

3

기록부터 남김

노드가 로그 entry를 S3에 PUT하고 HTTP 200을 받아야 다음으로 갑니다.

4

노드가 Google 호출

토큰을 노드 안에서 붙여, 컴파일된 주소로만 요청합니다. TLS는 노드 안에서 끝납니다.

5

결과만 서버로

메일 본문은 피클 서버로 가고, 답장을 쓰려고 AI 제공자도 처리합니다.

피클 격리 페이지: When Pickle reads your Gmail 4단계
캡처 없음
pickle.com/security/isolation · When Pickle reads your Gmail
클릭 확대

지켜지는 것: 토큰 노드가 보장

  • PKCE verifier를 노드 안에서 만들고, 인가 코드도 노드가 직접 교환합니다
  • 비밀(Secret) 타입은 응답으로 직렬화될 수 없습니다. 평문 토큰을 내주는 호출이 없습니다

지켜지지 않는 것: 내용 README 한계표

  • README: "노드는 토큰을 지키지, 토큰으로 가져온 데이터를 지키지 않는다"
  • 피클 페이지도 "작업 결과(메일 내용·예약 정보)는 피클 서버와 AI 제공자가 처리한다"고 적습니다
피클 격리 페이지: 봉인된 금고, 가상 브라우저, 파일 작업 공간
캡처 없음
pickle.com/security/isolation · Sealed vault · Virtual browser · File workspace
클릭 확대

출처 · README 보장표 3·4·5행, 한계표 "What a credential fetches" · enclave/src/oauth.rs · docs/egress-policy.md · pickle.com/security/isolation "What it protects"

PART 4 · 빌려준 키의 유효기간
protocol/src/lib.rs L77-79 · enclave/src/api/messages.rs L174

키는 최대 30일만 빌려준다 — 노드가 스스로 잘라 내고, 철회하면 지운다

0일 그랜트 시작 사용자가 1~30일 선택 앱을 쓰는 동안 갱신 철회(revoke) 즉시 사용자 키 삭제 철회 전에 만든 그랜트는 다시 안 받음 30일 노드 시계 기준 자동 종료 30일 넘게 요청해도 30일로 줄임 예외 (한계표 "Withdrawing a delegation") 운영자가 살아 있는 노드를 목록에서 빼면, 그 노드는 그랜트가 끝날 때까지(≤30일) 키를 유지합니다. 앱은 이 철회를 "미완료"로 표시하고, 그 기간의 사용은 해당 노드의 로그 체인에 남습니다.
protocol/src/lib.rs · L77-79 (실제 코드)/// Longest delegation: 30 days of node time. A node shortens a longer grant
/// to this length (5.2 `not_after_ms`).
pub const GRANT_MAX_MS: u64 = 30 * 24 * 60 * 60 * 1000;
피클 제어 페이지: 접근 기록 앱 화면
캡처 없음
pickle.com/security/control · Access log
클릭 확대

정해진 대로

노드는 30일 초과 그랜트를 거부하지 않고 30일로 자릅니다. 철회가 오면 키를 지웁니다.

앱을 안 열면

정한 기간 안에 피클을 열지 않으면 접근이 자동으로 꺼집니다 (피클 설명).

출처 · protocol/src/lib.rs L77-79 · enclave/src/api/messages.rs L174 · enclave/src/tests/commands.rs L307-317 · README 한계표 "Withdrawing a delegation" · 블로그 "A time limit and a record of use"

PART 4 · 지울 수 없는 기록
enclave/src/log_store.rs L861-871 · Amazon S3 Object Lock

지울 수 없는 일기장: 먼저 기록하고, 저장이 확인돼야 실행한다

① 요청메일 읽기·결제 등 ② 기록 작성내 로그 키로 봉인노드 서명 · 체인 연결 ③ S3에 PUTObject Lock COMPLIANCE보존 365일 ④ 응답 확인HTTP 200만 인정 200 → 그제서야 실행 Google 호출 · 값 전달 · 키 이전 아니면 정지 log_store_unavailable 저장소를 막으면 서비스가 멈출 뿐, 몰래 쓰는 건 불가 ※ 실패한 행동의 기록도 남을 수 있어, 기록 수가 실제 행동 수보다 많을 수 있습니다
enclave/src/log_store.rs · L861-871 (S3에 보내는 헤더)  ("x-amz-object-lock-mode", "COMPLIANCE".to_string()),
  (
    "x-amz-object-lock-retain-until-date",
    retain_until(now_ms.saturating_add(retention_ms)),  // 365일
  ),
README What the source guarantees 표
캡처 없음
README · What the source guarantees
클릭 확대
365일운영자도 AWS root도 삭제 불가
400일버킷 수명 규칙으로 이후 삭제
본인만로그 키로 봉인, 앱이 S3를 직접 나열·검증

출처 · README 보장표 4·5행 · enclave/src/log_store.rs L679, L867 · docs/enclave.md 5.14 · docs/protocol.md 7절 · README 한계표 "The log store"·"Reading the log store"

PART 5 · 공개된 소스

금고 프로그램은 전부 공개 — 누구나 읽고, 빌드하고, 대조할 수 있다

GitHub credential-enclave 리포 파일 트리
캡처 없음
GitHub 리포 첫 화면 · 2026-11-09
클릭 확대
75커밋 (HEAD 17cde93)
13인클레이브 릴리스 v1.0.0~v2.3.0
★46포크 12 · 생성 2026-10-01
5구성 요소 (아래 카드)

구성 5개 README 표

  • enclave/ 노드 프로그램 — 사용자 키를 잠시 쥐고 자격증명을 사용·기록
  • host/ 부모 쪽 프로그램 — 띄우고 바이트만 전달
  • protocol/ 키·메시지·레코드·로그 형식
  • verify/ 검증 도구 credential-enclave-verify
  • secure-program/ 앱이 실행하는 JS — 마스터키 생성, 노드 검증, 그랜트 봉인

비밀이 새지 않게 막는 규칙 egress-policy

  • 비밀(Secret) 타입은 응답으로 직렬화가 불가능합니다
  • 비밀을 읽는 함수는 닫힌 목록(egress/secret-access.tsv)에 있고 push마다 검사합니다
  • 밖으로 나가는 출구(sink)는 5개뿐, 카나리 테스트가 모든 응답에서 마커를 찾습니다

빌드·업데이트 투명성 release.yml

  • 독립 머신 2대가 빌드해 결과가 다르면 릴리스하지 않습니다
  • 새 릴리스로 키를 옮기려면 운영자 서명 + Sigstore Rekor 공개 로그 기록이 필요, 매시간 모니터

출처 · README 구성표·"The egress policy" · docs/egress-policy.md E1~E6 · scripts/secret-access.sh · .github/workflows/release.yml, secure-program-monitor.yml · docs/enclave.md 11.1-11.2 · GitHub API(★·포크, 2026-11-09)

PART 5 · 누구나 검증하는 법

"How to verify" 4단계 — 내가 빌드한 지문 = 지금 도는 노드의 지문인지 확인

1

직접 빌드해 지문 얻기

git checkout {tag}
build/build.sh eif
# → out/measurements.json

Linux x86_64 + Docker buildx 필요. Apple Silicon은 nitro-cli 크래시 사례.

2

살아 있는 노드와 비교

credential-enclave-verify \
  --url https://{api host} \
  --measurements ...

32바이트 nonce로 증명서를 요청해 체인·서명·nonce·PCR·노드 키를 검사.

3

릴리스 공개값과 diff

GitHub Releases
 └ measurements.json
 └ Sigstore 번들

릴리스마다 독립 빌드 2개가 합의한 값이 붙어 있습니다.

4

앱 쪽 JS도 검증

credential-enclave-verify program \
  --source ... --release ...

시큐어 프로그램(앱이 도는 JS)에 대해 검사 10개를 돌립니다.

README How to verify 1단계 캡처
캡처 없음
README · 1. Build … get its measurements
클릭 확대
README How to verify 2단계 캡처
캡처 없음
README · 2. Compare with the running nodes
클릭 확대
피클 검증 페이지 How do you check
캡처 없음
pickle.com/security/verification · How do you check?
클릭 확대

출처 · README "How to verify" 1~4단계 · pickle.com/security/verification · GitHub Releases(measurements.json, Sigstore 번들)

PART 5 · ★ 직접 검증
대상 character-api-prod.picklemem.com · 2026-11-09 22:46 KST

오늘 밤 직접 돌려봤다: 라이브 노드 15개 모두 공개 릴리스와 일치

credential-enclave-verify · 실제 출력 발췌 (nonce·노드 키 생략)
$ cargo build --release --locked -p credential-enclave-verify   # Rust 1.98.1
$ credential-enclave-verify --url https://character-api-prod.picklemem.com \
    --measurements meas-v2.3.0.json          # GitHub 릴리스 v2.3.0 공개값
source        https://character-api-prod.picklemem.com/api/credential-enclave/attestation
nonce         (32바이트 무작위값 — 화면에서 생략)
expected      release v2.3.0   pcr0 8835de060043…9a9ac6ac65
…
node 15 of 15
    release   v2.3.0          platform  nitro
    time      2026-11-09T13:46:40Z   # = 22:46:40 KST
    log_store character-credential-log-prod-1 in us-west-2
  checks
    pass  certificate chain: leads to the AWS Nitro Enclaves Root-G1
    pass  signature: verifies under the key of the certificate of the document
    pass  nonce: the document carries the nonce that was asked for
    pass  production mode: none of PCR0, PCR1 and PCR2 is all zero
    pass  pcr0: equals the expected value
    pass  pcr1: equals the expected value
    pass  pcr2: equals the expected value
    pass  node key: the signing key of the binding is the node of the response
  result: pass

summary: 15 nodes: 11 passed, 4 failed.   # 실패 4개 = PCR0·PCR2가 v2.1.0 값인 노드
$ credential-enclave-verify … --measurements meas-v2.1.0.json
summary: 15 nodes: 4 passed, 11 failed.    # 그 4개가 v2.1.0과 정확히 일치

노드 15개의 정체 15 / 15 일치

123456789101112131415
v2.3.0 일치 11개v2.1.0 일치 4개

통과한 것

15개 모두 AWS 인증서 체인·서명·nonce·운영 모드(PCR≠0) 통과. 로그 저장소는 15개 모두 us-west-2의 같은 버킷.

하지 못한 것 정직하게

이 박스엔 Docker가 없어 1단계(EIF 재빌드)는 생략했습니다. 대신 GitHub 릴리스에 공개된 측정값(독립 빌드 2개 합의값)으로 대조했습니다.

출처 · 직접 실행 원본 verify-v2.3.0.txt("15 nodes: 11 passed, 4 failed"), verify-v2.1.0.txt("4 passed, 11 failed") · GitHub 릴리스 v2.3.0·v2.1.0 measurements.json · 2026-11-09 22:46 KST

PART 6 · 남는 신뢰 가정 ①
README "What it does not guarantee" · 블로그 "What you can verify, and what comes next"

그래도 믿어야 하는 것 ①: 비공개 iOS 앱, 그리고 AWS

앱 바이너리 가장 큰 숙제

마스터키를 쥐고 증명서를 검증하는 건 앱입니다. iOS 앱은 아직 비공개라, 앱이 키를 폰에만 두고 검증된 노드에만 주는지는 회사 설명을 믿어야 합니다. 앱 JS는 공개됐지만 바이너리가 그걸 그대로 돌리는지는 증명되지 않습니다.

AWS 기반 신뢰

Nitro 격리, 증명서 서명, S3 Object Lock이 모두 AWS에 달려 있습니다. 운영자의 AWS 계정이 닫히면 로그 버킷도 사라집니다.

업데이트는 즉시 이전 고지 0일

새 릴리스로 위임을 옮길 때 사전 고지 기간이 0입니다. 대신 이전받은 모든 릴리스는 공개 로그(Rekor)에 영구히 남습니다.

Rekor · 메타데이터 세부 한계

노드는 Rekor의 서명(SET)만 보고 포함 증명은 확인하지 않습니다. 응답의 크기·시간·접속 목적지는 운영자에게 보입니다.

신뢰 사슬 — 검증된 고리와 아직 믿어야 하는 고리 AWS Nitro 격리 · Root-G1 서명 S3 Object Lock 인클레이브 코드 공개 소스 · 재현 빌드 PCR 대조로 확인 iOS 앱 마스터키 보관 · 노드 검증 바이너리 비공개 나 폰 · 계정 주인 △ 믿어야 함 ✓ 누구나 검증 (16장) △ 회사 설명을 믿음 가운데 고리는 오늘 직접 확인했지만, 양 끝(AWS · 앱)은 아직 바깥에서 증명할 방법이 없습니다.
README What it does not guarantee 표
캡처 없음
README · What it does not guarantee
클릭 확대
앱이 오픈소스가 되기 전까지 "앱은 정직하다"는 가정이며, 공개된 것이 아닌 앱은 마스터키를 유출할 수 있다. README 한계표 "The honesty of the app" (한국어 번역) — 회사 스스로 적은 문장

출처 · README 한계표 "The honesty of the app"·"The log store"·"The transfer to a later release"·"The transparency log"·"Side channels" · 피클 블로그 2026-10-01

PART 6 · 남는 신뢰 가정 ②

금고는 토큰을 지킬 뿐: 내용·카드·연결 방식에는 빈틈이 있다

가져온 데이터 보호 밖

메일 본문 같은 응답은 피클 서버와 AI 제공자로 갑니다. 대화·기억은 AWS 관리 키로만 암호화되고, 권한 있는 직원이 내부 도구로 열람할 수 있습니다(열람 로그 남음).

쓰는 순간의 평문 보호 밖

비밀번호·카드번호는 release 뒤 worker와 Kernel 원격 브라우저로 평문 전달됩니다. 로그인 쿠키는 브라우저에 남고, 그랜트 만료와 별개입니다.

Slack · Notion PKCE 없음

인가 코드가 운영자 콜백을 지나가고, 운영자가 클라이언트 시크릿도 갖고 있어 스스로 교환할 수 있습니다.

오래 남는 접근 API 한계

API 한 번으로 포워딩 규칙·공유 링크·웹훅처럼 지속되는 접근이 열릴 수 있습니다. 보장은 그 호출의 로그에서 끝납니다.

앱 밖 동의 OAuth

OAuth 동의를 앱 연결 흐름 밖에서 하면 노드 규칙이 적용되지 않습니다.

철회 지연 최대 30일

운영자가 노드를 목록에서 빼면 그 노드는 최대 30일 키를 유지합니다. 앱은 "미완료"로 표시하고 사용은 로그에 남습니다.

노드 안 = 보호 ✓ 여기부터 보호 밖 OAuth 토큰노드 안에서만 붙임 Google API응답 = 메일 본문 피클 서버AWS 관리 키 암호화 AI 제공자답장 쓰려고 처리 볼트 비밀번호·카드평소엔 암호문 release → 평문쓰는 순간 피클 worker평문 전달 Kernel 원격 브라우저로그인 쿠키 남음
피클 Who can see what 섹션
캡처 없음
pickle.com/security · Who can see what?
클릭 확대
피클 개인정보처리방침 요약 The short version
캡처 없음
개인정보처리방침 · The short version
클릭 확대

출처 · README 한계표 5개 행(credential fetches · without PKCE · lasting access · consent outside · withdrawing) · pickle.com/security · 블로그 "The life Pickle remembers" · 처리방침

PART 6 · 기술 밖의 위험

금고가 완벽해도 남는 위험: AI가 "무엇을 할지" 잘못 판단하는 것

1

2026-10-28 · 일본 출시

전화 대행 AI 에이전트로 일본 클로즈드 베타를 열었습니다(선착순 500명).

2

같은 날 · 사용자 확인 없이 호텔에 전화

피클이 사용자 확인 없이 호텔에 전화를 걸었고, 2번째 통화에서는 AI라고 밝히지 않았습니다.

3

2026-10-29 · CEO 사과와 규칙 변경

본인과 호텔에 사과하고, 가게에 거는 전화는 "걸기 전에 확인"과 "첫마디에 AI라고 밝히기"를 필수로 바꿨습니다.

어제 피클이 사용자의 확인 없이 호텔에 전화를 걸었고, 두 번째에는 AI라고 밝히지 않았습니다. 본인과 호텔에 사과드립니다. CEO Daniel Park, X 2026-10-29 (원문 일본어, 한국어 번역) · @danifesto

이 사건에서 읽을 점 공정하게

  • 열쇠(토큰) 보안과는 다른 층의 문제입니다. 금고가 아니라 AI의 행동 판단에서 생겼습니다
  • 회사는 다음 날 공개 사과하고 전화 규칙을 바꿨습니다
  • 내 쪽 대비: 권한은 최소로, 그랜트 기간은 짧게, Activity 기록 확인 → 20장 체크리스트
위층 · 행동 판단 (AI 모델) "지금 전화를 걸까? 무엇을 말할까? 이 메일을 보낼까?" → 인클레이브가 막을 수 없는 영역 아래층 · 열쇠 보안 (인클레이브) "누가 토큰을 쥐나? 기록이 남나? 코드가 공개본인가?" → 이 덱 앞부분에서 검증한 영역

권한이 맞게 쓰여도 판단은 틀릴 수 있다 블로그

피클 블로그도 "모델이 그 판단을 틀릴 수 있다"고 적었습니다. 토큰이 아무리 안전해도, 전화·발송·결제처럼 되돌리기 어려운 행동은 실행 전 확인을 켜 두는 편이 안전합니다.

출처 · X @danifesto 2026-10-29 · X @danifesto 2026-10-28 출시 글 · 블로그 "the model can get that judgment wrong"

PART 7 · 실전 체크리스트
털린 내 정보 찾기 kidc.eprivacy.go.kr

AI 앱에 계정을 맡기기 전, 체크리스트 10

1
OAuth인지, 비밀번호 입력인지"Google로 연결"이면 비밀번호 대신 권한만 줍니다. 동의 화면의 권한을 읽으세요.
2
최소 권한만"메일 읽기"만 필요하면 보내기·삭제 권한까지 주지 않습니다.
3
연결된 앱 정기 점검·해제Google 연결 관리 · Microsoft 동의 관리 · 네이버 내정보 › 보안설정 › 외부 사이트 연결
4
앱 비밀번호를 쓰기네이버 메일(IMAP)은 본 비밀번호 대신 앱 전용 비밀번호를. 안 쓰면 즉시 삭제.
5
2단계 인증 켜기OTP 시드를 앱에 맡기면 편하지만 "두 번째 열쇠"까지 한곳에 모으는 셈입니다.
6
1회용·가상카드피클은 Link 1회용 카드를 쓰면 실제 카드번호가 넘어가지 않습니다.
7
그랜트 기간은 짧게피클은 1~30일 중 선택. 앱의 Activity에서 사용 기록을 확인하세요.
8
"못 하는 것"을 읽기공개 코드, 검증 방법, 한계표가 있는지. 피클은 있습니다 — 그 한계도 읽으세요.
9
유출 여부 조회털린 내 정보 찾기에서 확인하고, 유출됐다면 비밀번호 변경 + 2FA.
10
탈퇴·삭제 경로 확인피클: 삭제 후 운영 기록 30일, 아카이브 90일 안에 삭제, 백업 7일 보관.
털린 내 정보 찾기 서비스 첫 화면
캡처 없음
개인정보위·KISA · 털린 내 정보 찾기
클릭 확대

출처 · RESEARCH 6절 체크리스트 · 피클 블로그(Link 1회용 카드, 삭제 주기) · kidc.eprivacy.go.kr · Google·MS·네이버·KISA 경로는 일반 안내(이번에 직접 열어 보지 않음)

PART 7 · 공정한 판정
2026-11-09 KST 기준 · 리포 HEAD 17cde93 · 라이브 노드 v2.1.0·v2.3.0

판정: 토큰 금고는 밖에서 검증되는 드문 설계 — 그러나 위험 0은 아니다

✓

검증 가능누구나 밖에서 확인

  • 인클레이브 코드 = 공개 소스 (PCR 대조, 오늘 15/15 노드 일치)
  • 토큰·OTP 시드가 노드 밖으로 평문으로 안 나가는 구조 (코드 공개·재현 빌드)
  • 365일 삭제 불가 로그, 기록 먼저 실행 나중
  • 그랜트 30일 상한 (코드 상수)
  • 새 릴리스 이전은 공개 로그(Rekor)에 영구 기록
15 / 15라이브 노드가 공개 릴리스와 일치 · 16장 · 15장
△

믿어야 함회사·AWS·제3자 신뢰

  • 비공개 iOS 앱의 마스터키 처리
  • AWS: Nitro 격리·서명·Object Lock·계정 유지
  • Sigstore Rekor 운영
  • 철회 전달 (최대 30일 지연 가능)
  • Slack·Notion 코드 교환, 업데이트 고지 0일
고지 0일업데이트 사전 고지 없음 · 철회 지연 최대 30일 · 17장
✗

보호 밖인클레이브가 안 지킴

  • 메일 본문·대화·기억 → 서버·AI 제공자 (직원 열람 가능, 로그 남음)
  • 사용 순간의 비밀번호·카드 평문 → worker·원격 브라우저
  • 포워딩·공유 링크 같은 오래 남는 접근
  • AI의 행동 판단 실수 (호텔 전화)
  • 응답 크기·시간 같은 메타데이터
평문 2곳사용 순간 worker · 원격 브라우저 · 18장 · 19장

출처 · 이 덱 06~19장의 근거 종합 · README 보장표·한계표 · 직접 검증 2026-11-09 22:46 KST

PART 7 · 다음에 열 곳
모든 링크는 클릭하면 새 창으로 열립니다

직접 확인하고 싶다면, 여기를 여세요

조사 · 2026-11-09 KST · 리포 클론 HEAD 17cde93 · 직접 검증 22:46 KST · 큐레이터 단비

전체 슬라이드 목차