크라우니클라우드 실인증 설계 (P0-③) — 무비번 bearer → 세션/2FA
현 상태 (실측)
X-Crowny-Owner 헤더 문자열 = 계정. 비밀번호·세션 없음. 무헤더=거부, 임의 8~100자 [a-zA-Z0-9_-] 토큰이면 quota 통과.
- 즉 토큰(=owner 문자열)을 아는 사람 = 그 계정의 모든 파일 조회·다운로드·삭제 가능(capability token 모델).
- 토큰은
~/.crowny-cloud-owner에 로컬 자동생성·평문 저장(crowny-cloud.sh).
- 소비처: crowny-ai(engine/cloud-connect.js·widget-cloud.js), chansong — owner 헤더를 그대로 전달.
위협 모델
- 토큰 추측: 24자↑ 랜덤이면 무차별 대입 비현실적. 그러나 로그·URL·프록시에 owner가 평문 노출되면 그대로 탈취=전권.
- 토큰 취소 불가: 유출 시 무효화 수단 없음(토큰 자체가 신원).
- 계정 개념 부재: 소유 증명·복구·감사 주체 없음.
설계 원칙
- 하위호환 필수 — crowny-ai·chansong가 살아있으므로 owner 헤더를 즉시 깨면 안 됨. 단계적 이행.
- 한선씨 정본 — 인증 로직도 서비스서버.한선에 배선(bash/JS 래퍼 금지). 기존 인증 라이브러리(auth.crowny.org·crowny-data/auth) 재사용 검토.
- 방어심층 — 토큰=신원에서 토큰=자격증명+세션으로 분리, 취소·만료 도입.
3단계 마이그레이션
1단계: 서명된 세션 토큰 (하위호환)
- 신규
/api/auth/register(owner+비번 해시 등록)·/api/auth/login(비번→세션토큰 발급, HMAC 서명+exp).
- 세션토큰 =
owner.exp.sig (sig=HMAC-SHA256(서버비밀, owner+exp)). VM opcode 858(SHA256) 활용, HMAC은 한선씨 구현 또는 opcode 확장.
- 요청 시
Authorization: Bearer <세션토큰> 우선 검사 → 유효하면 owner 확정. 없으면 기존 X-Crowny-Owner 폴백(경고 로그).
- 취소: 서버비밀 회전 or owner별 세션버전 필드(bump 시 기존 세션 전부 무효).
2단계: 소비처 이행
- crowny-ai/engine/cloud-connect.js·widget-cloud.js·chansong를 login→Bearer 흐름으로 전환. owner 헤더 폴백은 이 기간에만 유지.
- 이행 완료 확인 후 폴백 사용률 로그가 0 되면 3단계.
3단계: 레거시 차단 + 2FA(선택)
X-Crowny-Owner 단독 인증 제거(Bearer 필수). 미이행 클라이언트는 401.
- 2FA: TOTP(RFC6238) 옵션. login 시 6자리 코드 요구. crowny 인증 라이브러리에 TOTP 있으면 재사용(feedback_인증라이브러리 메모리: 2FA 고정키 P0 수정 이력 — 그 라이브러리 상태 먼저 확인).
재사용 후보 (신규구현 최소화)
auth.crowny.org / crowny-data/auth — 기존 인증 서버. ⚠️ 과거 P0 6건 수정 이력(2FA 고정키·솔트·JWT exp·wallet PUT 무인증 민팅). 재사용 전 현재 보안 상태 감사 필수(feedback_crowny_auth_wallet_민팅우회 메모리).
- 세션스토어: crowny-butler/libs 세션스토어(crownyllm 근거DB 툴체인) 검토.
리스크·결정 필요
- 결정①: 자체 세션 구현 vs auth.crowny.org 통합. 권고=통합(단일 신원). 단 auth 보안감사 선행.
- 결정②: 비번 등록 UX(기존 무가입 owner들의 마이그레이션 — 첫 login 시 owner→비번 바인딩 or 강제 재발급).
- 결정③: 2FA를 P0 범위에 넣을지(권고=3단계 옵션, P0는 세션토큰까지만).
범위 (P0-③ = 설계까지)
본 문서는
설계 산출물. 구현(1단계 코드)은 별도 착수 — 결정①②가 선행돼야 함. 구현 시 서비스서버.한선 인증부 + 소비처 2곳 동반 수정.
관련
- [[크라우니클라우드-업그레이드-현황분석-작업목록]] · 서비스서버.한선:270-286 소유자추출·:369 소유자유효
- feedback_인증라이브러리_P0_6건수정 · feedback_crowny_auth_wallet_민팅우회