사용자와 앱 빌더를 위한 중대한 경고
표시해야 할 제품 및 문서 문구
앱이 DM 관련 OAuth 스코프(dm.read, dm.write 및 관련 스코프)를 요청하는 경우, OAuth 동의 화면과 함께 명확한 제품 언어를 짝지으세요:
- 공식 클라이언트 SDK 경로를 사용하면 암호화 키가 사용자 기기에 머무릅니다.
- 사용자는 X Chat PIN을 이를 백엔드로 전달하는 웹사이트에 결코 입력해서는 안 됩니다.
- 정상적인 통합은 Chat XDK를 사용해 PIN 기반 복구와 암호화가 로컬에서 실행되도록 합니다(브라우저의 경우: WASM + 보안 키 백업).
- 개인 키를 얻은 악성 앱은 이를 유출할 수 있습니다; 오늘날 순수한 클라이언트 보유 루트 키에 대한 서버 측 “이 키 취소”는 없습니다 — 사용자가 루트 키를 여러분에게 넘길 필요가 없도록 설계하세요.
민감한 키 자료로 간주되는 것
앱 유형별로 올바른 키 경로 선택
클라이언트 앱은 보안 키 백업을 선호해야 합니다. 서버와 봇은 종종 내보낸 키 blob을 사용합니다. 자세한 내용: 시작하기.
개인 키와 PIN 규칙
해야 할 것
- PIN은 신뢰할 수 있는 클라이언트 UI에서만 수집하여 동일 기기의 Chat XDK(
unlock/setup)에 공급하세요. - 필요할 때만 키를 메모리에 유지하세요. 잠금 해제 후에는 세션 내내 동일한 Chat 인스턴스를 재사용하고, 로그아웃 시
lock()또는free()를 호출하세요. - API가 허용하는 경우 PIN 버퍼를 제로화하세요(예: JS에서 PIN을
Uint8Array로 전달하여unlock후 지울 수 있도록). - 봇 키 blob은 시크릿 관리자(또는 HSM)에 저장하고, 저장 시 암호화하며, IAM을 제한하고, 프로세스 자격 증명을 자주 순환하세요.
- 로그에 주의하세요: PIN, 개인 키, 키 blob, 언랩된 대화 키, 또는 전체 보안 백업 응답을 결코 로그로 남기지 마세요.
- 클라이언트를 방어하세요: XSS, 악성 확장 프로그램, 손상된 의존성은 네트워크 경로가 깨끗하더라도 메모리에 있는 키를 읽을 수 있습니다.
하지 말아야 할 것
- PIN이나 키 blob을 이메일, 스크린샷, 티켓으로 전송하지 마세요.
- 개인 키나 PIN을 쿼리 문자열, 분석, 오류 추적기, 또는 CDN 로그에 두지 마세요.
- “백엔드를 단순하게 만들기 위해” 최종 사용자 개인 키를 전송하지 마세요.
- OAuth 취소를 키 취소와 혼동하지 마세요. 앱 연결을 해제해도 사용자가 이미 내보냈거나 적대적 클라이언트에 입력한 키는 삭제되지 않습니다.
- 프로덕션 UI 앱에서 원시
export_keys출력을localStorage나 암호화되지 않은 IndexedDB에 저장하지 마세요.
브라우저 세션 지속성
프로덕션 브라우저 앱은 보안을 먼저 최적화하고, 그다음 UX를 최적화해야 합니다:
내부 데모는 편의상 키를
localStorage로 내보내기도 합니다. 그것은 일회성 프로토타입에는 괜찮지만, 프로덕션 패턴은 아닙니다. 다음을 선호하세요:
- 리로드 후
createChat+unlock(pin). - SPA 탐색을 위해 잠금 해제된 인스턴스를 보유하는 모듈 수준 또는 프레임워크 컨텍스트.
- 탭이 로그아웃하거나 사용자가 앱을 잠글 때
lock().
OAuth 스코프 대 암호화 키
이들은 별도의 제어 평면입니다:- OAuth는 API 호출을 인가합니다(대화 목록, 암호문 게시, 이벤트 조회).
- 개인 키는 메시지 내용에 대한 암호학적 접근을 인가합니다.
- 필요한 DM 스코프만 요청합니다.
- DM 접근이 필요한 이유를 설명합니다.
- OAuth가 PIN 수집 채널이 되지 않도록 암호화를 기기 내부에서 실행합니다.
- 로그아웃 시 토큰 보유를 중단하고, 별도로 채팅 키에 대해
lock()을 수행합니다.
운영 체크리스트
- UI 흐름의 서버 요청 본문에 PIN이나 개인 키 필드가 없음
- 클라이언트용 보안 키 백업(
setup/unlock); 봇 blob용 시크릿 관리자 - 잠금 해제된 Chat 인스턴스가 한 사용자 세션으로 범위 지정; 로그아웃 시 정리
- 로깅과 APM이 시크릿을 스크러빙
- 채팅을 잠금 해제할 수 있는 모든 페이지에 CSP와 XSS 통제
- 사용자 대상 문구: PIN을 서드파티와 결코 공유하지 말 것
- 사고 대응 계획: 봇 blob이 유출되면 키를 순환/재등록하고 과거 암호문은 이전 키 보유자에게 노출된 것으로 취급
관련 자료
- WASM으로 UI 앱 구축 — 클라이언트 아키텍처
- 암호화 기초 — 신원 키, 대화 키, 보안 키 백업
- 시작하기 — 키 등록 및 메시지 전송
- Chat XDK — API 참조
- 기초: 보안 — OAuth 및 API 자격 증명 위생