Speaker Identity Privacy And Safety
화자 인식은 개인 식별 가능성이 있는 기능이다. 따라서 기술적으로 가능하다는 이유만으로 음성 원본, 임베딩, 대화 기록, 개인화 profile을 무제한 저장하거나 Cloud로 전송하면 안 된다.
1. 데이터 분류
| 데이터 | 민감도 | 저장 위치 권장 | Cloud 전송 |
|---|---|---|---|
| temporary raw audio/WAV/PCM | 높음 | 온디바이스 임시 | 금지 |
| accepted source sample | 높음 | 온디바이스 암호화 보관 | 금지 |
| speaker embedding vector | 높음 | 온디바이스 암호화 | 금지 |
| speaker_id | 중간 | 온디바이스/Cloud 가능 | 가능 |
| display_name | 중간 | 최소화 | 필요 시 가능 |
| speaker confidence/state | 낮음~중간 | 로그 가능 | 가능 |
| 대화 기록 | 중간~높음 | speaker scope + retention | 요약/후보만 |
| profile candidate | 중간 | 동의/삭제 정책 필요 | 제한 가능 |
| person_id / identity link | 중간~높음 | 계정/제품 identity 저장소 | 가능하나 최소화 |
| vital_face_id | 높음 | 바이탈 사인 저장소 | 직접 노출 금지, scope token 권장 |
| vital history | 높음 | 바이탈 사인 저장소 | 요약/추세만 제한 가능 |
| external account scope | 높음 | 계정 연동 저장소 | scope 요약만 가능 |
2. 삭제와 동의
필수 정책:
- 화자 등록 시 목적과 저장 범위를 안내한다.
- 화자 삭제 시 embedding, accepted source sample, history, profile candidate를 함께 삭제한다.
- Cloud 동기화가 있다면 삭제 이벤트도 Cloud로 전달한다.
- temporary raw audio는 등록 직후 embedding 추출이 끝나면 삭제하는 방향이 안전하다.
- accepted source sample은 재부팅 후 재등록, embedding rebuild, 모델 버전 변경 대응을 위해 온디바이스 암호화 저장소에만 보관할 수 있다.
- Voice ID와 Person Profile 연결을 해제하면 개인화 memory, 바이탈 이력 접근, 외부 계정 접근도 즉시 중단한다.
- Vital Face ID 또는 Google 계정 연결은 Voice ID 삭제와 별개로 해제/삭제 가능해야 한다.
3. 안전 실행 정책
side-effect 기능은 speaker confidence에 따라 실행 정책을 달리해야 한다.
| 기능군 | identified | unknown/ambiguous | multi/overlap |
|---|---|---|---|
| 일반 대화 | 허용 | 허용 | 재시도 권장 |
| 제품 설명 | 허용 | 허용 | 재시도 권장 |
| 청정/이동 | 허용 | 확인 질문 | 차단 |
| 보안/잠금/프라이버시 | 권한 확인 | 차단 | 차단 |
| 개인 기록 조회 | 본인만 | 차단 | 차단 |
| 바이탈 이력 요약 | linked/verified + 동의 + 단일 화자 | 차단 또는 앱 확인 | 차단 |
| 외부 계정 일정 | verified + provider scope | 차단 | 차단 |
4. 로그 정책
로그에 남길 수 있는 것:
speaker_statespeaker_confidencespeaker_countsafety_gatepersonalization_appliedauthority_gate
로그에 남기면 안 되는 것:
- embedding vector
- raw audio
- accepted source sample
- 음성 파일 경로
- 민감 profile 원문
- 이름과 민감 속성을 결합한 장기 로그
5. 리스크와 대응
| 리스크 | 예시 | 대응 |
|---|---|---|
| 오인식 개인화 | 다른 사람의 선호 공간 적용 | confidence/margin gate |
| 기록 노출 | unknown speaker가 “내 기록 보여줘” | speaker owner 확인 |
| 권한 오남용 | guest가 보안 해제 요청 | authority_level gate |
| 다화자 오작동 | 주변 대화가 명령처럼 인식 | overlap/multi speaker block |
| 데이터 과수집 | temporary raw audio 방치 또는 accepted sample 무통제 보관 | 임시 raw 자동 삭제, accepted sample 암호화/동의/삭제 API |
| 건강 정보 노출 | 다른 화자의 바이탈 이력 발화 | person_id/consent/single speaker gate |
| 외부 계정 오용 | Google 일정이 잘못된 화자에게 노출 | provider scope + verified identity gate |
| identity 오결합 | Voice ID를 잘못된 Face ID/Account에 연결 | 앱 확인, suggested 상태, revoke flow |
| latency 회귀 | 화자인식 0.5초 지연이 모든 기능에 누적 | 민감 기능만 blocking, timeout fallback |
6. Identity Link 보안 원칙
Voice ID, Vital Face ID, 컨트롤 앱 계정, Google 계정은 모두 다른 trust level을 가진다. 따라서 아래 원칙을 둔다.
- Voice ID는 인증 수단이 아니라 발화 주체 evidence로 시작한다.
- Person Profile에 연결되지 않은 Voice ID는 민감 정보 접근에 사용할 수 없다.
- Vital Sign 이력은 건강 정보이므로
linked/verified, 명시 동의, 단일 화자 조건을 모두 만족해야 한다. - Google 계정 연동은 provider scope와 token lifecycle을 별도 관리한다.
account_display_name은 identity key가 아니라 표시 이름 또는 link 후보일 뿐이다.