# 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 또는 최소한 서비스 완전 분리 강력 권장 ## 최종 원칙 - 가입은 쉽게, 세션은 안전하게, 민감 작업은 다시 확인한다. - 속도보다 침해 반경 축소를 우선한다. - 실사용 사용자를 받는 순간 취미 서버가 아니라 운영 시스템으로 취급한다.