블로그/게시일: 수정일:

Gaavala가 Chrome Web Store에 출시되는 순간, 가장 먼저 만나 보세요. 대기자 명단 등록

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

회의 오디오는 암호화된 연결을 통해 브라우저에서 Soniox로 직접 전송됩니다. Gaavala 백엔드는 로그인, 구독, 사용량을 관리하며 회의 오디오는 받지 않습니다.

회의 오디오는 브라우저 → Soniox로 직행합니다. 저희 서버는 그 경로에 없습니다.
회의 오디오는 브라우저에서 Soniox로 — 경로에 Gaavala 서버는 없습니다

핵심 프라이버시 원칙

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

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

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

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

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

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

이 아키텍처를 택한 이유

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

  • 오디오를 Soniox로 직접 전송하면 기술적 중간 단계는 줄지만 데이터 보호 의무가 없어지지는 않습니다. Gaavala와 하위 처리업체 Soniox를 함께 검토하고 처리 목적, 보관 기간, 필요한 계약을 확인하세요. 이 아키텍처만으로 HIPAA 또는 SOC 2 준수가 입증되지는 않습니다.
  • 보안 사고의 폭발 반경: 오디오를 처리하는 서버의 침해는 텍스트 메타데이터를 처리하는 서버의 침해보다 근본적으로 더 나쁩니다. 저희는 가장 민감한 시스템이 가장 덜 민감한 데이터를 다루기를 택했습니다.
  • 지연: 모든 중계 구간은 왕복 시간을 더합니다. 브라우저에서 Soniox로 직접 스트리밍하면 한 구간이 통째로 사라지고, 그만큼 자막 지연이 눈에 띄게 좋아집니다.
  • 프라이버시와 방향이 맞는 비용: 자체 오디오 중계 서버를 운영한다는 것은 회의마다 대역폭과 연산 비용을 낸다는 뜻입니다. 그것을 운영하지 않으면 비용도 아끼고 동시에 고객도 보호합니다. 유인이 한 방향을 가리킬 때, 아키텍처는 정직하게 유지되는 경향이 있습니다.

데이터 흐름 상세

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

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 임시 키를 요청합니다. 이 키에는 중요한 세 가지 성질이 있습니다:

  • 음성 인식 전용으로 범위가 제한됩니다 — Soniox API 표면의 다른 어떤 것에도 쓸 수 없습니다
  • 유효 기간이 며칠이 아니라 몇 분입니다
  • 세션당 한 번 발급되며 기기에 저장되지 않습니다

임시 키 패턴은 프라이버시 이야기의 핵심입니다. 만약 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로 직접 WebSocket 연결을 엽니다. 이 연결은:

  • TLS 1.2 이상을 사용합니다
  • 2단계에서 받은 수명이 짧은 임시 키로 인증됩니다
  • 사용자 브라우저의 네트워크 스택에서 출발합니다 — 패킷은 사용자의 OS에서 Soniox로 흐르며, Gaavala로 가지 않습니다

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

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

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

대화록은 기기의 확장 프로그램 로컬 데이터베이스에 저장되며 7일 뒤 자동 삭제됩니다. 직접 다운로드한 내보내기 파일은 사용자가 계속 관리합니다. AI 요약은 기기에서 생성되며 Gaavala 서버는 대화록을 받지 않습니다. 기기를 공유하거나 정리할 때는 로컬 기록도 고려해야 합니다.

직접 말하지 않고 답하려면 청각장애인을 위한 회의 접근성 안내를 확인하세요.

Gaavala 서버가 보는 데이터

모든 기능을 통틀어 저희 백엔드가 다루는 주요 데이터는 다음과 같습니다:

데이터시점보관 기간비고
Gaavala 세션 리프레시 토큰로그인토큰 수명 — 만료된 토큰은 매일 삭제Google/Microsoft OAuth 토큰은 절대 저장하지 않음
사용자 프로필(이메일, 이름)로그인계정 수명결제 + 지원 목적
구독 상태상시계정 수명요금제 등급, 체험 상태
결제 기록(Pro)결제할 때세법이 요구하는 기간 동안 — 계정을 삭제한 후에도당사 결제 파트너가 전달하는 금액, 세금, 통화, 국가, 날짜, 결제 수단 — 카드 정보는 결제 파트너에만 있음
Soniox 임시 키 요청세션마다요청 로그만오디오 없음
전사 분 단위 카운터세션마다계정 수명월 단위로 묶임, 할당량 집행 목적
음성 복제 참조 샘플(Pro)직접 녹음한 경우에만복제 음성 또는 계정을 삭제할 때까지암호화(AES-256-GCM), 오직 사용자의 목소리를 만드는 데에만 사용 — 회의 오디오 아님
기술 문제 보고직접 보낸 경우에만180일사용자가 보내기로 선택한 진단 정보 — 전사본 텍스트는 제외
인터페이스 언어로그인한 상태로 확장 프로그램을 사용할 때마다계정 수명저희 이메일이 사용자의 언어로 전달되도록
대기자 명단 이메일(웹사이트)대기자 명단에 등록한 경우에만삭제를 요청할 때까지페이지 언어와 캠페인 유입 경로와 함께 — 주소 확인과 출시 안내에만 사용
익명 웹사이트 분석쿠키에 동의한 뒤에만Google Analytics가 보관 — 저희 데이터베이스에는 없음웹사이트에 한정 — 확장 프로그램은 사용자 ID를 담지 않는 익명 오류 건수를 보고함

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

  • 원본 회의 오디오(어떤 형식이든, 어느 시점이든)
  • 압축된 회의 오디오 스트림
  • 회의 오디오 버퍼나 중간 표현물
  • 회의에서 나온 음성 생체 정보(저희가 보유하는 유일한 음성 녹음은 위의 Pro 음성 복제 샘플이며, 그것도 사용자가 직접 녹음한 경우에만 해당합니다)
  • Soniox가 부여하는 익명 화자 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상 개인 데이터이며, 식별 목적으로 사용될 경우 생체 정보에 해당합니다.

이 데이터 흐름은 백엔드가 받는 내용을 제한합니다. 그래도 DPIA는 전체 서비스, 로컬 기록, 선택적인 음성 샘플 및 하위 처리자인 Soniox를 포함해야 합니다.

Soniox는 여전히 Gaavala가 계약한 음성 서비스 제공업체로서 고객의 컴플라이언스 사슬 안에 있습니다: Soniox 계정을 보유한 쪽은 Gaavala이고, 사용자의 브라우저가 연결에 쓰는 수명이 짧은 키를 발급하는 쪽도 Gaavala이며, 저희 프라이버시 정책은 저희가 데이터를 공유하는 제3자 가운데 하나로 Soniox를 명시하고 있습니다. 따라서 DPIA는 Soniox를 고객이 직접 계약하는 벤더가 아니라 Gaavala 서비스의 일부로 다룹니다.

HIPAA와 PHI를 담은 오디오

HHS의 비즈니스 어소시에이트 안내에 따르면, HIPAA 적용 대상 기관이나 다른 비즈니스 어소시에이트를 대신해 전자 보호 대상 건강 정보(ePHI)를 다루는 제공업체는 비즈니스 어소시에이트에 해당할 수 있습니다. 이러한 관계가 성립하면 적절한 BAA 조항이 필요합니다. HHS의 클라우드 안내는 이를 클라우드 서비스에 어떻게 적용하는지 설명합니다. 실제 서비스, 데이터 흐름 및 계약을 기준으로 평가하세요.

Gaavala의 백엔드는 회의 오디오를 결코 수신하지 않기 때문에, 회의에서 발화된 PHI가 Gaavala 서버에 저장되는 일은 없습니다. 다만 회의 오디오는 여전히 Gaavala가 계약한 음성 서비스 제공업체인 Soniox로 전송되어 그곳에서 처리되므로, HIPAA 평가는 그 경로를 Gaavala 서비스의 일부로 포함해야 합니다 — 이는 고객과 Soniox 둘만의 관계가 아닙니다. AI 요약을 생성하는 경우, 그 요약은 Chrome 내장 AI로 기기에서 생성됩니다 — 전사본 텍스트가 기기에 머무르므로 요약 기능 때문에 Gaavala 서버나 다른 벤더가 PHI 처리 사슬에 더해지는 일도 없습니다.

SOC 2 벤더 리스크

AICPA Trust Services Criteria의 CC9.2는 벤더와 비즈니스 파트너 관련 위험의 평가 및 관리를 다룹니다. 평가는 정의된 시스템, 서비스와 약정, 그리고 그 범위 안에서 제공업체가 맡는 역할에 따라 달라집니다.

Gaavala의 아키텍처에서 사용자의 브라우저는 Soniox에 직접 연결되지만, 벤더 관계는 Gaavala를 거칩니다: Soniox 계정을 보유한 쪽이 Gaavala이므로, 고객의 벤더 리스크 등록부에는 Soniox가 고객이 직접 계약하는 벤더가 아니라 음성 인식을 맡은 Gaavala의 하위 처리자로 기재됩니다. 직접 연결이 좁혀 주는 것은 Gaavala 자체의 범위입니다: 저희 서버는 신원, 결제, 사용량 같은 계정 데이터와, 녹음한 경우 Pro 사용자의 음성 복제 샘플을 처리하며, 회의 오디오나 사용자의 기기를 벗어나지 않는 전사본·요약 텍스트는 처리하지 않습니다.

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

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

  • 서버 측 오디오 중계: 구현은 간단하지만, 모든 고객의 오디오를 저희 인프라에서 다루도록 강제하게 됩니다. 이것이 바로 저희가 명시적으로 피하고 싶었던 것입니다.
  • STT를 내장한 웹앱: 웹 페이지에서 탭 오디오를 캡처하려면 getDisplayMedia가 필요한데, 이는 세션마다 OS 수준 선택기를 띄우고 사용자가 고른 탭에 묶이게 만듭니다. 더 나쁜 것은, 사용자가 다른 탭에서 작업하는 동안 웹 페이지가 백그라운드 오디오 스트림을 안정적으로 유지할 방법이 없다는 점입니다.
  • 데스크톱 네이티브 앱: 통제력은 더 커지지만 설치 마찰, 서명 비용, 운영체제별 개발 부담이 더해집니다. 그리고 각별히 주의하지 않는 한 저희가 오디오 처리자 역할을 맡는 상황도 여전히 사라지지 않습니다 — 결국 똑같은 문제들을 다시 만들어 내게 됩니다.

Chrome 확장 프로그램이라는 형태만이 저희가 원한 프라이버시 아키텍처를 가능하게 했습니다. tabCapture, offscreen 문서, 그리고 Manifest V3 서비스 워커 모델이 함께, 확장 프로그램이 사용자의 기기에서 회의 오디오를 캡처하고, 이를 직접 연결을 통해 음성 인식 엔진으로 스트리밍하고, 긴 회의에 필요한 백그라운드 상태를 유지하도록 해 주며, 그 과정에서 회의 오디오가 저희를 거치는 일은 없습니다.

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

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

  • 임시 키 발급: 저희가 발급하는 수명 짧은 Soniox 키는, 백엔드가 공격자에게 키를 발급한다면 악용될 수 있습니다. 저희는 모든 요청을 사용자의 JWT로 인증하고, 키 발급에 속도 제한을 걸며, 이상 징후를 기록합니다.
  • 확장 프로그램 업데이트: 이론적으로는 업데이트된 확장 프로그램 버전이 네트워크 패턴을 바꿀 수 있습니다. 저희는 매니페스트에 버전을 부여하고, 변경 이력을 공개하며, Chrome Web Store는 업데이트가 설치되기 전에 새 권한을 사용자에게 보여줍니다.
  • 요약 텍스트: 요약은 전적으로 기기에서 Chrome 내장 AI(Gemini Nano)로 생성되므로 전사본이 저희 백엔드에 도달하지 않습니다 — 현재 아키텍처에서 이 위험은 존재하지 않습니다. 특정 회의가 로컬 AI 처리조차 감당할 수 없다면 요약 기능은 그저 쓰지 않으면 됩니다. 다른 어떤 것도 그 기능에 의존하지 않습니다.
  • 음성 복제 참조 샘플(Pro): 개인 복제 음성을 만들면 2분 분량의 샘플이 Gaavala 서버에 암호화(AES-256-GCM)되어 저장되고, 오직 그 목소리를 만드는 데에만 사용되며, 요청 시 삭제됩니다 — 프라이버시 정책을 참고하세요.
  • 법적 요청: 저희는 실제로 보유한 데이터에 한해서만 법적 요청에 응하겠다고 공개적으로 약속합니다. 회의 오디오라면 답은 언제나 "저희는 갖고 있지 않습니다"입니다.

회의 번역 도구 간 비교

오디오와 전사가 전송되는 곳, 보관 기간, 접근 권한을 각각 비교하세요. 모델 학습에 사용하지 않는다는 말이 데이터를 보관하지 않는다는 뜻은 아닙니다. 선택할 서비스의 현재 개인정보 처리 조건, 하위 처리자와 삭제 방법을 확인하세요.

아니요 — Zoom 정책에 따르면 고객 콘텐츠는 AI 모델 학습에 사용되지 않습니다.

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

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

회의와 음성 인식 엔진 사이에 도구 제작사의 서버가 끼어든다는 이유로 컴플라이언스 팀이 반대해 조직이 지금까지 회의 번역 도구를 도입하지 못했다면, Gaavala는 바로 그런 경우를 위해 만들어졌습니다. 이 파이프라인은 법무·보안·컴플라이언스 팀이 검토할 것이 더 많아지는 대신 더 적어지도록 설계되어 있습니다.

대기자 명단 등록

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


관련 글