# 05. Security, Privacy, And Risk

## 가장 중요한 결론

현재 VPS의 `root + 비밀번호 SSH` 상태에서는 메신저 실사용 데이터를 절대 받지 않는다.

## 가입과 편의성에 대한 보안 합의

- Alpha 즉시 실행형은 `이름 + 초대코드`로 시작할 수 있다.
- 하지만 초대코드는 `입장권`이지 `본인확인 수단`이 아니다.
- Beta 기본형은 `이메일 기반 1회 확인 + 신뢰 기기 세션 유지 + 민감 작업 재인증`이 기준선이다.
- 자동 로그인은 허용하지만, 반드시 서버 추적 가능한 `기기 세션`과 `원격 로그아웃`이 있어야 한다.
- 장기적으로는 `Windows Hello Passkey`를 강한 옵션으로 추가한다.

## P0: 시작 전에 반드시 할 것

- `root` 원격 로그인 비활성화
- SSH 비밀번호 로그인 비활성화
- 관리자 공개키 인증만 허용
- 메신저 전용 비루트 운영 계정 생성
- 현재 루트 비밀번호와 운영 비밀값 전면 교체
- DB/Redis/MinIO 외부 공개 금지
- Fail2ban 또는 동급 차단 도구 활성화
- 메신저용 비밀정보 파일과 기존 서비스 비밀정보 분리
- OS 보안 패치 적용

## P1: Private Alpha 전에 할 것

- 관리자 콘솔 2단계 인증
- invite-only 운영
- 초대코드 만료/회수/단일 사용 정책
- refresh token 회전
- 디바이스별 세션 조회/로그아웃
- 첨부파일 MIME 검증과 크기 제한
- 백업 암호화
- 개인정보 처리방침/이용약관 초안

## P2: Beta 이후 고도화

- 이메일 1회 확인 도입
- 이메일 링크/코드 1회용 정책
- Windows Hello Passkey 옵션 검토
- 서비스용 VPS 분리 권장
- 이상 행위 탐지
- 비밀정보 자동 회전
- 감사 로그 강화

## 인증 정책

- Alpha: `이름 + 초대코드 + 기기 세션`
- Beta: `이메일 1회 확인 + 이름 + 기기 세션`
- 관리자: 별도 도메인/별도 접근 정책 + 2FA
- 세션은 `device_id` 단위로 관리
- refresh token은 서버에서 추적 가능해야 함
- 민감 작업은 재인증 필요

## 토큰과 클라이언트 비밀정보

- 액세스/리프레시 토큰 평문 파일 저장 금지
- DPAPI/PasswordVault에 저장
- 로그, 크래시 리포트, 분석 이벤트에 토큰/메시지 본문 금지
- 로컬 캐시는 최근 데이터 최소 범위만 유지
- 공용 PC에서는 자동 로그인 비권장 문구를 명시

## 데이터 보호

### 전송 구간

- 전 구간 TLS
- 관리자 콘솔, API, 파일 다운로드 모두 HTTPS 강제

### 저장 구간

- 비밀번호를 쓰는 경우 단방향 해시
- 토큰 계열은 평문 저장 금지
- 파일은 서명 URL 중심 접근
- 백업은 암호화 보관

## 초대코드, 매직링크, 이메일 검증의 안전선

- 초대코드 brute force 방지 rate limit
- 초대코드는 만료 시간과 사용 횟수 제한 필요
- 매직링크와 코드는 1회용이며 짧게 만료
- 오픈 리다이렉트 금지
- 이메일/계정 존재 여부 노출 금지
- 메일을 다른 기기에서 열었을 때를 대비해 `링크 + 코드` 병행 고려

## 첨부파일/악용 방지

- 확장자와 MIME 모두 검증
- 이중 확장자 경고
- 너무 큰 파일, 악성 유형, 과도한 업로드 속도 제한
- 신고/차단/계정 정지 최소 운영 도구 필수

## 로그 정책

- 메시지 본문 로그 금지
- 민감정보 마스킹
- 보안 이벤트 로그와 앱 오류 로그 분리
- 로그인 실패 급증, 가입 시도 폭주, 업로드 폭주, 5xx 급증 경보

## 백업 정책

- DB 백업과 파일 백업 모두 원본과 동일 수준으로 민감
- 운영 서버와 다른 자격 증명으로 접근
- 보관 기간은 짧고 명확하게
- 실제 복구 테스트를 통과한 백업만 인정

## 법적/브랜드 리스크

- 카카오 관련 상표, UI 자산, 카피, 시그니처 컬러 혼동 금지
- `종단간 암호화`를 구현하지 않았으면 절대 그렇게 홍보하지 않음
- 삭제 요청, 신고 접수, 운영자 연락 채널 문서화

## 단계별 보안 게이트

### 로컬 프로토타입

- 실사용 데이터 금지

### Alpha

- invite-only
- 하드닝 완료
- 기기 세션과 원격 로그아웃 제공

### Closed Beta

- 이메일 1회 확인
- 백업 암호화
- 모니터링/경보 활성화
- 세션/토큰 정책 확정

### Public Beta 이상

- 별도 VPS 또는 최소한 서비스 완전 분리 강력 권장

## 최종 원칙

- 가입은 쉽게, 세션은 안전하게, 민감 작업은 다시 확인한다.
- 속도보다 침해 반경 축소를 우선한다.
- 실사용 사용자를 받는 순간 취미 서버가 아니라 운영 시스템으로 취급한다.
