Gaavala가 회의 오디오를 보호하는 방법: 프라이버시 우선 아키텍처

매일의 업무 시간마다 수백만 명의 프로페셔널이 민감한 정보가 오가는 회의에 참여합니다 — 인수합병 협상, 환자 상담, 소송 전략, 분기 실적 사전 검토, 인사 결정. 그런 회의가 언어의 벽을 넘어가는 순간 실시간 번역은 필수가 됩니다. 하지만 대부분의 회의 번역 도구는 원본 오디오를 벤더 클라우드로 보내도록 요구하고, 그럼으로써 법무·컴플라이언스·보안 팀이 점점 더 승인하기 어려워하는 바로 그 종류의 데이터 노출 면적을 만들어 냅니다.

Gaavala는 오디오 경로에서 스스로를 완전히 빼내도록 설계되어 있습니다. Chrome 확장 프로그램으로 회의를 돌릴 때, 오디오는 Gaavala 서버를 통과하지 않습니다. 브라우저에서 Soniox 음성 인식 엔진으로 암호화된 WebSocket을 통해 직접 스트리밍되며 — 저희 백엔드는 그 오디오의 단 1바이트도 보지 않습니다.

이 글은 그것이 정확히 어떻게 동작하는지, 어떤 데이터가 네트워크를 건너가는지, 그리고 이 아키텍처가 흔히 쓰이는 컴플라이언스 프레임워크에 어떻게 대응되는지를 짚습니다.

핵심 프라이버시 원칙

대부분의 SaaS 번역 도구는 익숙한 데이터 흐름을 따릅니다:

  1. 브라우저가 회의 오디오를 캡처합니다
  2. 오디오가 벤더의 백엔드로 업로드됩니다
  3. 벤더의 백엔드가 그 오디오를 음성 인식 엔진으로 중계합니다
  4. 전사본이 벤더의 백엔드를 거쳐 돌아옵니다
  5. 그 과정에서 벤더 서버가 오디오를 로그로 남기거나, 캐시하거나, 보관하는 경우가 흔합니다

이 사슬의 모든 구간이 신뢰 경계입니다. 모든 구간이 로깅 버그, 자격 증명 유출, 소환장, 혹은 악의적인 엔지니어가 회의 내용을 노출시킬 수 있는 지점입니다. 오디오에 손대는 당사자가 많아질수록, 아무도 그것을 보관하지 않았음을 감사인에게 증명하기는 더 어려워집니다.

Gaavala는 이 중계 단계를 통째로 없앱니다. 데이터 흐름은 이렇습니다:

  1. 브라우저가 탭에서 회의 오디오를 캡처합니다
  2. 브라우저가 Soniox로 직접 WebSocket을 엽니다
  3. 오디오가 그 WebSocket을 통해 직접 스트리밍됩니다
  4. Soniox가 전사본을 브라우저로 직접 돌려보냅니다
  5. Gaavala의 백엔드는 여기에 전혀 관여하지 않습니다

사용자의 기기에서 실행되는 Chrome 확장 프로그램은 오디오에 손대는 유일한 저희 코드이며 — 그 오디오를 저희에게 보내지 않습니다.

이 아키텍처를 택한 이유

Gaavala를 Chrome 확장 프로그램으로 다시 만들 때, 저희는 의도적인 아키텍처 결정을 내렸습니다: 확장 프로그램은 백엔드를 통해 사용자를 인증하고, 구독 상태를 관리하고, 메타데이터를 제공하되 — 오디오 경로에는 절대 들어가지 않는다는 것입니다. 근거는 단순했습니다:

데이터 흐름 상세

회의에서 전사를 시작할 때 실제로 무슨 일이 일어나는지 살펴봅시다.

1단계: 인증

Gaavala에 처음 로그인할 때, 확장 프로그램은 Chrome의 chrome.identity.launchWebAuthFlow API로 Google 또는 Microsoft와 OAuth Authorization Code 흐름을 완료합니다. 신원 공급자가 브라우저에 인가 코드를 반환하고, 확장 프로그램은 그 코드를 저희 백엔드에서 Gaavala 세션 JWT로 교환합니다. 그 JWT는 chrome.storage.local에 저장되며 이후 저희 백엔드로 향하는 API 호출을 인증하는 데 사용됩니다.

이 과정 어디에도 오디오는 없습니다. OAuth 흐름은 전적으로 텍스트입니다 — 토큰, 클레임, 프로필 필드.

2단계: Soniox 임시 키

회의에서 "Start"(시작)를 클릭하면, 확장 프로그램이 저희 백엔드 API를 호출해 수명이 짧은 Soniox 임시 키를 요청합니다. 이 키에는 중요한 세 가지 성질이 있습니다:

임시 키 패턴은 프라이버시 이야기의 핵심입니다. 만약 Gaavala가 수명이 긴 Soniox API 키를 확장 프로그램 번들 안에 담아 배포했다면 누구든 그것을 추출할 수 있었을 것입니다. 대신 저희는 요청 시점에 발급되고, 인증된 세션에 묶이며, 세션이 끝난 직후 무효화되는 일회성 키를 발급합니다.

저희 백엔드는 이 요청의 메타데이터만 기록합니다 — 어떤 사용자가, 언제, 어떤 요금제 등급으로. 아직 캡처된 오디오가 없기 때문에 오디오는 전혀 보지 않습니다.

3단계: 탭 오디오 캡처

사용자는 Chrome 탭에서 Microsoft Teams, Zoom, Google Meet, Webex 통화에 참여합니다. Gaavala 확장 프로그램이 사이드 패널을 열고 오디오 캡처를 시작하라고 안내합니다. 확인하면 확장 프로그램은 Chrome tabCapture API를 사용합니다 — 명시적인 사용자 권한과 눈에 보이는 표시를 전제로 활성 탭의 오디오를 캡처할 수 있게 해 주는, 확장 프로그램 전용 API입니다.

Chrome은 캡처된 오디오를 Gaavala가 백그라운드에서 실행하는 offscreen 문서로 라우팅합니다. offscreen 문서는 보이는 UI를 띄워 두지 않고도 오디오 처리를 다룰 수 있게 해 주는, 확장 프로그램이 사용하는 샌드박스된 페이지입니다. 그 offscreen 문서 안에서 Gaavala는 MediaStream을 열고, AudioContext에 연결한 뒤, 스트리밍을 준비합니다.

결정적으로, 오디오는 소리를 스피커로 되돌려 주는 로컬 오디오 그래프도 함께 통과합니다. 즉 Gaavala가 캡처하는 동안에도 회의를 평소처럼 들을 수 있습니다 — 아무것도 음소거되거나 다른 곳으로 우회되지 않습니다.

4단계: Soniox로의 직접 WebSocket

그다음 offscreen 문서가 Soniox(wss://stt-rt.soniox.com/...)로 직접 WebSocket 연결을 엽니다. 이 연결은:

탭에서 캡처된 오디오 프레임은 PCM으로 인코딩되어 WebSocket으로 전송됩니다. Soniox는 이를 실시간으로 처리하고 전사 토큰을 같은 연결로 스트리밍해 돌려보냅니다. 화자 라벨이 붙은, 타임스탬프가 찍힌 텍스트 조각인 그 토큰들은 offscreen 문서로 직접 도착하고, offscreen 문서는 이를 사이드 패널로 전달해 표시합니다.

이 전체 루프의 어느 지점에서도 오디오 패킷이 Gaavala가 운영하는 서버에 도달하지 않습니다. Chrome DevTools로 직접 확인할 수 있습니다: Gaavala가 실행되는 동안 WS 필터를 켠 채 Network 탭을 열면, soniox.com 호스트로 향하는 WebSocket이 정확히 하나 보이고, 오디오를 담아 gaavala.com으로 나가는 트래픽은 전혀 없습니다.

5단계: 전사본 표시와 선택적 요약

전사 토큰은 세 개의 표면에 렌더링됩니다: 사이드 패널, 회의 탭 위의 플로팅 오버레이, 그리고 내보내기에 쓰이는 메모리 내 버퍼. 이 표면들 중 어느 것도 오디오를 직렬화하지 않습니다. 텍스트만 다룹니다.

회의가 끝난 뒤 AI 요약을 실행하면, 요약은 전적으로 사용자의 기기에서 Chrome 내장 AI(Gemini Nano)로 생성됩니다. 전사본 텍스트는 기기를 벗어나지 않습니다 — Gaavala의 백엔드로 전송되지 않고, 어떤 제3자에게도 전송되지 않습니다. 회의 콘텐츠는 오디오든 텍스트든 Gaavala의 백엔드를 전혀 건너가지 않습니다. 백엔드를 건너가는 것은 오직 인증과 구독 메타데이터뿐입니다.

Gaavala 서버가 보는 데이터

모든 기능을 통틀어 저희 백엔드가 다루는 데이터의 정확한 목록입니다:

데이터 시점 보관 기간 비고
Gaavala 세션 리프레시 토큰 로그인 토큰 수명 — 만료된 토큰은 매일 삭제 Google/Microsoft OAuth 토큰은 절대 저장하지 않음
사용자 프로필(이메일, 이름) 로그인 계정 수명 결제 + 지원 목적
구독 상태 상시 계정 수명 요금제 등급, 체험 상태
Soniox 임시 키 요청 세션마다 요청 로그만 오디오 없음
전사 분 단위 카운터 세션마다 계정 수명 월 단위로 묶임, 할당량 집행 목적
익명 웹사이트 분석 쿠키에 동의한 뒤에만 Google Analytics가 보관 — 저희 데이터베이스에는 없음 웹사이트에 한정 — 확장 프로그램은 사용자 ID를 담지 않는 익명 오류 건수를 보고함

저희 백엔드가 보지 않는 데이터의 정확한 목록입니다:

법원이 특정 회의의 오디오를 Gaavala에 소환한다면, 기술적으로 정직한 답변은 저희가 그것을 갖고 있지 않으며 가져올 수도 없다는 것입니다. 그것은 저희 시스템에 존재한 적이 없습니다.

직접 검증해 보세요

Chrome 확장 프로그램으로 동작하는 것의 장점 중 하나는 런타임 전체를 들여다볼 수 있다는 점입니다. IT 팀은 이 글의 단 한 문장도 믿지 않은 채로 저희의 프라이버시 주장을 검증할 수 있습니다:

방법 1 — 네트워크 검사. chrome://extensions를 열고 Gaavala를 찾아 "service worker" 또는 "inspect views > background page"를 클릭하세요. DevTools에서 Network 탭으로 이동해 WS(WebSocket)로 필터링하세요. 회의를 시작하세요. soniox.com 호스트로 열린 WebSocket이 정확히 하나 보일 것입니다. gaavala.com으로 가는 오디오는 없습니다.

방법 2 — 매니페스트 검사. chrome://extensions에서 Gaavala의 "Details"를 펼쳐 권한을 검토하세요. host_permissions는 확장 프로그램이 도달할 수 있는 오리진을 정확히 선언합니다. 스트리밍용 Soniox 엔드포인트와 인증·구독용 Gaavala 엔드포인트가 보일 것입니다. 와일드카드 호스트 권한도, 선언되지 않은 네트워크 접근도 없습니다.

방법 3 — 소스 검사. 확장 프로그램은 서비스 워커, offscreen 문서, 사이드 패널, 콘텐츠 스크립트와 함께 배포됩니다. Chrome은 이 모두를 개발자 도구로 검사할 수 있게 노출합니다. 보안 팀은 언제든 백그라운드 페이지나 offscreen 문서에 연결해 런타임 상태를 읽을 수 있습니다 — 오디오 스트림 객체가 저희 도메인을 향한 fetch나 XHR로 직렬화되지 않는다는 것을 확인하는 것까지 포함해서요.

저희는 매니페스트와 호스트 권한을 Chrome Web Store 등록 정보의 일부로 공개하며, 제3자 보안 검토를 환영합니다.

컴플라이언스 매핑

GDPR과 데이터 최소화

GDPR 제5조 (1)항 (c)호는 데이터 최소화 원칙을 규정합니다: 개인 데이터는 "적절하고, 관련성이 있으며, 필요한 범위로 제한"되어야 합니다. 음성 데이터는 GDPR상 개인 데이터이며, 식별 목적으로 사용될 경우 생체 정보에 해당합니다.

Gaavala의 아키텍처는 이 원칙과 곧바로 맞물립니다. 오디오를 저희 시스템 밖에 완전히 두는 방식으로, 저희가 처리하는 개인 데이터를 구독 사업을 운영하는 데 필요한 절대 최소치 — 이메일, 이름, 결제 상태 — 로 줄입니다. DPIA를 수행하는 고객 입장에서 저희 백엔드는 오디오 처리에 관해서는 사실상 투명합니다: 저희에게 도달하는 것이 없으므로 평가할 것도 없습니다.

Soniox는 고객의 컴플라이언스 사슬에서 별개의 처리자입니다. 그들의 프라이버시 태세를 독립적으로 검토할 수 있으며, Soniox는 사용자의 브라우저가 그들에게 맺는 직접 연결에 적용되는 데이터 처리 약관을 공개하고 있습니다.

HIPAA와 PHI를 담은 오디오

HIPAA에 따라 보호 대상 건강 정보(PHI)를 처리·저장·전송하는 벤더는 사업 제휴 계약(BAA)을 체결해야 합니다. 의료 상담에는 PHI가 자주 포함됩니다 — 환자 이름, 진단명, 치료 계획.

Gaavala의 백엔드는 회의 오디오를 결코 수신하지 않기 때문에, 오디오 파이프라인은 Gaavala의 BAA 범위 밖에 있습니다. 그 오디오 처리에 대해 평가해야 할 관계는 고객과 Soniox 사이의 직접 관계입니다 — 그 데이터가 저희에게 닿지 않으므로 Gaavala는 해당 데이터의 사업 제휴자가 아닙니다. AI 요약을 생성하는 경우, 그 요약은 Chrome 내장 AI로 기기에서 생성됩니다 — 전사본 텍스트가 기기에 머무르므로 요약 기능 역시 Gaavala나 추가 벤더를 PHI 처리 사슬로 끌어들이지 않습니다.

SOC 2 벤더 리스크

SOC 2 감사는 조직이 데이터 처리 사슬 안의 모든 제3자 벤더를 문서화하고 평가할 것을 요구합니다. 벤더가 하나 늘어날 때마다 시스템 기술서는 복잡해지고 리스크 평가의 범위는 넓어집니다.

Gaavala의 아키텍처에서 Soniox는 Gaavala를 통해서가 아니라 고객이 직접 상대하는 데이터 처리자입니다. 벤더 리스크 등록부는 Soniox를 그 자체의 조건으로 평가해야 하며, 많은 보안 팀은 이 편이 하위 처리자 관계를 평가하는 것보다 간명하다고 느낍니다. 리스크 등록부에서 Gaavala의 범위는 더 좁습니다: 저희는 신원과 결제를 처리하며 — 원본 오디오도, 사용자의 기기를 벗어나지 않는 전사본이나 요약 텍스트도 처리하지 않습니다.

Chrome 확장 프로그램이라는 형태가 중요한 이유

위의 프라이버시 보장 상당 부분은 Gaavala가 공급자에 직접 연결하는 네트워크 패턴을 갖춘 Chrome 확장 프로그램으로 동작한다는 사실에 기대고 있습니다. 저희는 몇 가지 대안을 검토했고, 기각했습니다:

Chrome 확장 프로그램이라는 형태만이 저희가 원한 프라이버시 아키텍처를 가능하게 했습니다. tabCapture, offscreen 문서, 그리고 Manifest V3 서비스 워커 모델이 함께, 확장 프로그램이 오디오를 전적으로 사용자의 기기에서 처리하고, 외부 서비스로 직접 연결을 열고, 긴 회의에 필요한 백그라운드 상태를 유지하도록 해 줍니다 — 무엇도 저희를 경유시키지 않은 채로요.

그럼에도 저희가 제대로 해내야 하는 것들

프라이버시 아키텍처는 "우리는 오디오에 손대지 않는다"로 끝나지 않습니다. 저희가 함께 진지하게 다루는 인접한 문제들이 있습니다:

회의 번역 도구 간 비교

Gaavala의 프라이버시 모델은 흔히 쓰이는 다른 회의 번역 도구들과 어떻게 비교될까요?

기능 Gaavala Otter.ai Zoom AI Companion Teams Copilot Interprefy
오디오가 벤더 백엔드에 도달 아니요(Soniox로 직접) 예(Otter 서버) 예(Zoom 서버) 예(M365 서버) 예(플랫폼 서버)
회의 후 오디오 보관 아니요 예(기본값) 선택적 선택적 제각각
모델 학습에 사용 아니요 옵트아웃 옵트아웃 엔터프라이즈 제어 알 수 없음
네트워크를 직접 검증 예(DevTools) 아니요 아니요 아니요 아니요
확장 프로그램으로 동작(검증 가능) 아니요 아니요 아니요 아니요
Teams/Zoom/Meet/Webex에서 작동 부분적 아니요 아니요 제각각

여기서 중요한 차별점은 이것입니다: 저 표의 다른 모든 행에서 사용자는 오디오가 그들의 서버에서 어떻게 다뤄지는지에 대한 벤더의 주장을 믿는 수밖에 없습니다. Gaavala에서는 오디오를 두고 신뢰해야 할 서버가 없습니다. 저희 서버에 오디오가 없기 때문입니다. 그리고 이 주장은 표준 Chrome 개발자 도구로 검증할 수 있습니다.

프라이버시는 기본값이지 유료 등급이 아닙니다

Gaavala의 무료 등급도 똑같이 Soniox로 직접 연결되는 아키텍처, 똑같은 화자 분리, 똑같은 60개 언어 지원을 그대로 받습니다. Pro는 하루 120분, Speak Mode, 음성 복제를 여는 것이지 프라이버시를 여는 것이 아닙니다. 프라이버시를 중시하는 사용자가 자신의 데이터를 안전하게 지키기 위해 더 많은 비용을 내야 한다고 저희는 생각하지 않습니다.

오디오를 벤더 클라우드로 보내는 것에 컴플라이언스가 반대해서 조직이 그동안 회의 번역 도구를 거절해 왔다면, Gaavala는 바로 그 대화를 위해 만들어졌습니다. 이 파이프라인은 법무·보안·컴플라이언스 팀이 검토할 것이 더 많아지는 대신 더 적어지도록 설계되어 있습니다.

Chrome에 Gaavala 추가 →

단 한 번의 무료 체험: 전사 5분, 절대 재설정되지 않습니다. 카드 불필요. 웹사이트에서 가입할 필요도 없습니다.


관련 글

Gaavala 가이드 더 보기