보안
내 데이터에 무슨 일이 일어나나
Whisperer는 일에 바짝 붙어 있습니다. 통화, 문서, 할 일, 일정, 그리고 그것들을 잇는 맥락까지요. 이 페이지는 그 데이터가 무엇으로 지켜지고, 어디를 거치고, 누가 닿을 수 있고, 어떻게 지우는지를 적은 것입니다.
우리가 주장하지 않는 것
Whisperer에는 SOC 2도, ISO 27001도, 독립적인 보안 감사도 없습니다. 있는 것처럼 비치게 할 생각도 없습니다. 우리가 할 수 있는 일은 시스템이 어떻게 지어졌고 한계가 어디인지 보여 주는 것입니다. 이 페이지의 나머지가 바로 그 일을 합니다.
-
최소한만
기능은 그것 없이는 돌아가지 않는 데이터만 받고 나머지는 받지 않습니다. 기록 없는 세션은 데이터베이스에 아무것도 쓰지 않습니다.
-
분리
모든 조회는 데이터 계층에서 소유자로 한정됩니다. 각 엔드포인트의 기억에 맡기지 않습니다.
-
암호화
오가는 것에는 모두 TLS. 연결한 서비스의 자격 증명은 데이터베이스에 닿기 전에 암호화됩니다.
-
통제
API의 모든 경로는 명시적 공개 목록에 없으면 인증을 요구하며, 새 경로가 빠져나가면 테스트가 실패합니다.
-
숨기지 않기
데이터가 우리 인프라를 떠나는 지점마다, 받는 쪽이 누구인지·무엇이 가는지·왜 가는지를 이 페이지에 적었습니다.
데이터가 어디를 거치나
마이크에서 답까지 다섯 구간. 아무거나 펼쳐 무엇을 싣고 가는지 보세요.
-
01 당신의 기기
싣는 것: 마이크와 시스템 소리, 직접 찍은 화면 캡처, 올린 파일.
이유: 담을 수 있는 곳은 통화가 벌어지는 자리뿐입니다. 패널은 화면 캡처에서 제외되어 화면 공유 때 보이지 않고, 접근 토큰은 운영체제 자체의 비밀 보관소 — macOS는 Keychain, Windows는 DPAPI — 에 들어갑니다. 읽히는 파일이 아니라요.
-
02 연결
싣는 것: 클라이언트와 Whisperer 사이를 오가는 모든 것.
이유: HTTPS, TLS 1.2 이상. 세션 토큰은 주소가 아니라 Authorization 헤더로 다니므로 서버와 프록시 기록에 남지 않습니다. 엣지는 HSTS, 형식 추측 금지, 프레임 삽입 금지, 엄격한 리퍼러 정책을 보냅니다.
-
03 Whisperer API
싣는 것: 인증, 속도 제한, 소유자 확인을 거친 요청.
이유: 인가는 기본이 거부입니다. 권한이 확인되지 않으면 혹시 몰라 통과시키는 대신 거절합니다. 속도 제한은 주소가 아니라 토큰 단위라, 같은 회선 뒤에 있는 사람들이 한 몫을 나눠 쓰지 않습니다.
-
04 저장
싣는 것: 회의, 대화록, 메모, 할 일, 일정은 관리형 데이터베이스에. 파일과 녹화는 오브젝트 스토리지에. 수명이 짧은 상태는 관리형 캐시에. 검색용 벡터는 벡터 데이터베이스에.
이유: 애플리케이션은 고정해 둔 루트 인증서로 완전 검증을 하고 데이터베이스에 붙습니다. 바꿔치기된 지점은 연결되는 대신 실패합니다. 데이터는 개인정보처리방침에 적힌 대로 러시아 및/또는 EU의 서버에 보관됩니다.
-
05 AI 제공자와 연결된 서비스
싣는 것: 모델이 필요한 기능 — 답변, 대화록, 번역, 임베딩 — 은 그 기능이 다루는 내용을. 직접 연결한 서비스에는 그 연동이 다루는 데이터를.
이유: 음성과 언어 모델을 우리가 직접 갖고 있지는 않습니다. 여기가 데이터가 우리 인프라를 떠나는 경계라서, 넌지시 두지 않고 분명히 적었습니다. 아래 표에 모두 적고 각자의 약관으로 이어 둡니다.
- 기기 안이나 Whisperer 안에 머무름
- 둘 사이를 지나는 중
- 제3자에게 나감
암호화
오가는 동안. 클라이언트·API·인프라 사이는 HTTPS로, TLS 1.2 이상으로 흐릅니다. 운영 엣지는 현재 TLS 1.3으로 합의합니다. 엄격한 전송 정책은 1년 기한으로 보내므로, 한 번 다녀간 브라우저는 평문 HTTP로 되돌아가지 않습니다.
저장된 동안. 데이터베이스, 오브젝트 스토리지, 캐시는 모두 관리형 서비스이고, 저장 시 암호화는 그 플랫폼이 제공하는 것이지 우리가 구현한 것이 아닙니다. 우리가 운영하지 않는 저장소를 두고 알고리즘 이름을 대지는 않겠습니다. 추측에 보증의 옷을 입히는 일이니까요.
비밀. 연결한 서비스의 자격 증명 — 갱신 토큰, 연동 키, 직접 쓰는 도구의 토큰 — 은 데이터베이스에 쓰이기 전에 암호화됩니다. 열쇠 꾸러미 방식이라 멈춤 없이, 또 한꺼번에 다시 암호화하지 않고도 열쇠를 바꿀 수 있습니다. 열쇠가 없거나 깨졌으면 그대로 멈춥니다. 평문으로 쓰는 대신 아무것도 쓰지 않습니다.
계정 보안
비밀번호. 는 열두 라운드 bcrypt 해시로 보관하며 평문으로는 결코 두지 않습니다. 가입에는 수명이 짧은 여섯 자리 코드로 이메일을 확인해야 하고, 로그인과 가입 모두 봇 검사 뒤에 있습니다.
세션. 접근 토큰은 30분간 유효합니다. 갱신 토큰은 JavaScript가 읽지 못하는 쿠키에 7일간 살고, 인증 경로로 한정되며, 짝 토큰으로 사이트 간 사용을 막습니다. 비밀번호를 바꾸거나 모든 기기에서 로그아웃하면 버전 값이 올라가 이미 발급된 토큰이 전부 무효가 됩니다.
데스크톱과 외부 클라이언트. 데스크톱 연결은 일회용 코드로 하므로 비밀번호가 앱에 들어가지 않습니다. 외부 AI 클라이언트는 PKCE가 필수인 OAuth 2.1로 인증합니다. 암묵적 부여도 비밀번호 부여도 없습니다. 그 토큰들은 해시로 보관하고 일정한 시간으로 비교하며, 갱신 토큰은 토큰 엔드포인트에서만 받고 접근 토큰 자리에는 결코 쓰이지 않습니다.
당신의 공간은 당신 것
회의, 대화록, 메모, 파일, 할 일, 일정, 기억 — 모두 그것을 만든 계정의 것입니다. 소유자로 한정하는 일은 데이터 계층에서 일어나므로 남의 식별자를 가리키는 요청은 거절됩니다. 이 보장은 어떤 엔드포인트가 확인을 기억하는지에 기대지 않습니다.
이것을 붙들고 있는 건 관행이 아니라 두 개의 아키텍처 테스트입니다. 하나는 버전이 붙은 API 경로가 인증도 되지 않고 명시적 공개 목록에도 없을 때 실패합니다. 다른 하나는 그 목록에 이제 없는 경로가 남아 있을 때 실패합니다. 공유는 대상별로, 당신의 결정으로 이뤄집니다. 기본값으로는 누구에게도 아무것도 보이지 않습니다.
회의, 녹화, 화면 캡처
통화 중. 대화가 흐르는 동안 마이크와 시스템 소리가 인식을 위해 전달됩니다. 화면 공유에서는 패널이 보이지 않지만 — 상대의 들리는 소리는 여전히 인식됩니다. 여러 명이 있는 통화에서는 기억해 둘 만합니다.
통화 뒤. 대화록, 메모, 할 일, 결정의 지도는 당신의 공간에 남아 고치고 내보내고 지울 수 있습니다. Whisperer 화상 회의실에서 한 녹화는 오브젝트 스토리지에 쓰이고 대화록이 붙은 회의로 돌아옵니다. 직접 찍은 화면 캡처는 그 세션에 붙어 있다가, 화면에 있는 것에 대해 물을 때 시각 모델로 갑니다.
기록 없는 세션. 대화록과 답변을 데이터베이스에 아예 쓰지 않고 관련 데이터를 끝날 때 지우는 방식으로 세션을 돌릴 수 있습니다. 분은 그대로 차감됩니다. 아끼는 것은 저장 공간이지 시간이 아닙니다. 미리 켜 두세요 — 기록하지 않는 편이 나중에 지우는 것보다 쉽습니다.
파일과 지식
올린 문서는 색인되어 답변이 그것에 기댈 수 있게 됩니다. 불러오기는 소유자로 한정됩니다. 당신의 질문에 맞춰 맥락을 꾸리는 검색은 당신 계정의 벡터만 보므로, 한 공간의 문서가 다른 공간의 답변에 떠오를 수 없습니다.
문서를 지우면 저장소뿐 아니라 검색 색인에서도 빠집니다. 불러온 맥락에 더는 나타나지 않고, 보이지 않은 채 남아 있지도 않습니다. 파일마다 상한이 있고, 오브젝트 스토리지가 설정되지 않았다면 그 구역은 반쯤 도는 대신 아예 열리지 않습니다.
기억과 개인적 맥락
Leo는 두 가지 맥락을 지닙니다. 당신이 직접 쓰는 프로필, 그리고 되풀이되는 일을 두 번 설명하지 않아도 되도록 일에서 적어 두는 오래가는 사실들입니다. 둘 다 당신의 계정에 있고, 둘 다 Leo 화면에서 보이며, 거기서 고치거나 지울 수 있습니다. 당신이 볼 수 없는 것이 기억되는 일은 없습니다.
당신이 준 맥락은 참고 자료로 모델에 닿으며 시스템 지시를 덮어쓸 수 없습니다. 다만 프롬프트의 일부가 됩니다. 비밀번호나 토큰을 프로필, 메모, 지식 베이스에 넣지 마세요.
AI 처리
Whisperer는 자체 음성·언어 모델을 학습시키지도 운영하지도 않습니다. 모델이 필요한 기능 — 통화 중의 답변, 대화록, 번역, 요약, 검색용 임베딩 — 은 다루는 내용을 외부 제공자에게 보내고 돌아온 결과를 씁니다.
무엇이 나가는지는 기능에 달렸습니다. 답변은 진행 중인 대화록, 그 질문을 위해 불러온 지식 베이스의 일부, 그리고 프로필 맥락을 싣습니다. 받아쓰기는 소리를 싣습니다. 쓰지 않는 기능에서는 아무것도 나가지 않습니다.
| 제공자 | 쓰임 | 보내는 것 | 약관 |
|---|---|---|---|
| OpenRouter | 텍스트 모델: 답변, 메모, 요약, 임베딩, 재정렬 | 프롬프트: 대화록 발췌, 질문을 위해 불러온 지식, 프로필 맥락 | 개인정보 |
| OpenAI | 통화 중 실시간 음성 인식 | 통화 음성 | 개인정보 |
| Deepgram | 녹화된 회의의 음성 인식 | 회의 음성 | 개인정보 |
| 실시간 음성 번역과 음성 비서 | 음성. 브라우저에서 제공자로 곧장 가며 우리 서버를 거치지 않습니다 | 개인정보 | |
| pyannote.ai | 녹음에서 말한 사람 구분 | 회의 음성 | 개인정보 |
| Cloudflare | 로그인과 가입에서의 봇 검사 | 브라우저의 확인 신호. 워크스페이스 데이터는 없음 | 개인정보 |
각 제공자가 받은 것을 어떻게 다루는지는 그쪽의 약관과 개인정보처리방침이 정합니다(위에 링크). 여기서 그 내용을 다시 풀어 쓰지 않고, 당신의 내용이 학습에 쓰이지 않는다고 제공자를 대신해 약속하지도 않습니다. 그건 그들이 할 약속이지 우리 것이 아닙니다. 어떤 모델이 어떤 역할을 맡는지는 계정의 설정이므로, 요청이 어디로 가는지 보고 바꿀 수 있습니다.
연결된 서비스와 MCP
서비스를 연결한다는 것 — 캘린더, 메모 앱, CRM, 이슈 트래커 — 은 그 서비스가 열어 둔 만큼을, 그쪽 동의 화면에서 당신이 승인한 권한 안에서 Whisperer가 쓸 수 있게 한다는 뜻입니다. 계정에서 언제든 연결을 끊을 수 있고, 제공자 쪽에서도 회수할 수 있습니다.
MCP는 양방향입니다. 외부 AI 도구가 당신의 데이터를 읽도록 MCP 서버를, Leo가 당신이 연결한 도구를 쓰도록 MCP 클라이언트를 둡니다. 회의는 당신이 공유로 표시한 경우에만 외부 클라이언트에 보이고, 보관함 전체는 결코 보이지 않으며, 기록 없는 세션은 예외 없이 빠집니다. 당신이 Whisperer에 준 다른 서비스 접근 권한이 MCP 서버를 통해 다시 넘어가는 일은 없습니다.
되돌릴 수 없는 작업. 에는 무엇이 정확히 영향을 받는지 서버에서 그려 낸 미리보기와 사람의 확인이 필요하며, 외부 클라이언트에는 아예 열려 있지 않습니다. 자격 증명을 받는 종류의 도구는 결코 바깥으로 노출하지 않습니다. 남의 연동에 비밀을 끼워 넣는 통로가 되기 때문입니다. 당신이 프로세스로 들고 오는 MCP 서버는 우리 쪽이 아니라 당신 기기에서 돕니다. 바깥으로 나가는 주소는 어떤 요청보다 먼저 사설·루프백·링크 로컬·통신사 대역과 대조합니다.
인프라
애플리케이션은 컨테이너에서 돌고, 그 앞에는 TLS를 끝내는 단일 엣지가 있습니다. 데이터베이스, 캐시, 오브젝트 스토리지는 모두 관리형 서비스이며 인증되고 암호화된 연결로 닿습니다. 데이터베이스는 고정해 둔 루트 인증서로 완전 검증을 거칩니다.
배포는 서비스를 내리지 않고 이뤄집니다. 새 컨테이너가 분배에 들어온 뒤에 옛 컨테이너가 빠지고, 배포마다 교체되는 이미지에 표시를 남기므로 되돌리는 일은 명령 하나입니다. 스키마 변경은 새 코드가 뜨기 전에 적용되며, 예상하지 못한 스키마 위에서는 잘못 도는 대신 아예 뜨기를 거부합니다.
설정과 자격 증명은 환경에서 오고 저장소에는 들어가지 않습니다. 호스트 이름, 버킷 이름, 포트, 클러스터 식별자는 이 페이지에 적지 않습니다. 보안 설계를 이야기하는 건 쓸모가 있지만, 지도를 건네는 건 다른 일입니다.
로그와 관측
제품을 운영할 수 있도록 애플리케이션과 오류 로그, 요청 지표, 서비스 상태를 모으고 장애 때 알립니다. 비밀번호, 토큰, 키는 로그에 쓰지 않습니다. 세션 토큰이 주소가 아니라 헤더로 다니는 것도 바로 거기에 남지 않게 하기 위해서입니다.
한계를 정확히 적자면, 24시간 도는 보안 관제 센터도 없고 외부의 관리형 탐지 서비스도 없습니다. 여기서의 관측은 운영을 위한 것입니다. 무언가 고장 났음을 알려 주지만 침입 탐지 체계는 아니며, 그렇게 부르면 확인할 수 없는 주장이 됩니다.
데이터 지우기
서로 다른 세 가지 작업이며, 셋 다 고객 지원에 메일을 쓰지 않고 계정에서 할 수 있습니다. 당신과 엮인 모든 것을 파일로 내보내기, 계정과 구독은 남기고 내용을 모두 지우기, 또는 계정을 통째로 삭제하기.
계정 삭제는 내용과 서비스 기록을 지우고 계정 행 자체를 비식별 처리합니다. 행째로 없앨 수는 없습니다. 결제 기록이 그것을 가리키고, 회계 법령이 5년 보관을 요구하기 때문입니다. 예외는 이것 하나뿐이며 가입할 때 동의하는 문서에 적혀 있습니다. 삭제가 비워야 할 표의 목록은 코드 안의 단 하나의 대장이고, 계정을 참조하는 새 표가 대장에 오르지 않은 채 추가되면 테스트가 실패합니다. 하나를 빠뜨리는 건 삭제 요청 뒤에도 개인정보를 남겨 두는 일이니까요.
| 데이터 | 쓰임 | 보관 기간 |
|---|---|---|
| 회의와 대화록 | 기록과 검색 | 지울 때까지 |
| 녹화와 파일 | 재생과 처리 | 지울 때까지 |
| 기록 없는 세션 | 그 순간의 도움만 | 쓰이지 않음. 세션이 끝나면 사라짐 |
| 화면 캡처 | 화면에 있는 것에 답하기 | 세션을 지울 때까지 |
| 지식 베이스와 검색 색인 | 답변으로 불러오기 | 문서를 지울 때까지 |
| 기억과 프로필 | Leo를 위한 개인적 맥락 | 바꾸거나 지울 때까지 |
| 연동 자격 증명 | 연결을 유지하기 위해 | 서비스 연결을 끊을 때까지 |
| 계정과 결제 기록 | 접근과 법정 회계 | 휴면 계정은 마지막 로그인 후 3년에 삭제. 결제 기록은 5년 보관 |
저장된 객체는 예약 작업이 아니라 그 요청 안에서 지워집니다. 백업과 재해 복구 사본은 우리가 쓰는 관리형 플랫폼의 기능이라, 지워진 기록이 그쪽 스냅숏에 스냅숏이 보관되는 기간만큼 남아 있을 수 있습니다. 그 구간은 우리 통제 밖이고 숫자를 지어내지도 않겠습니다. GDPR이나 152-FZ에 따른 요청은 고객 지원으로 보내 주세요. 30일 안에 답합니다.
보안은 과정입니다
Whisperer는 자라는 중인 제품입니다. SOC 2도, ISO 27001도, 다른 독립 인증도 없습니다. 외부 모의 침투 테스트를 의뢰한 적도 없고, 자체 점검을 그런 것처럼 내놓지도 않겠습니다. 이를 분명히 적는 것 자체가 이 설계의 일부입니다. 확인할 수 없는 주장은 읽을 수 있는 구조보다 값이 낮으니까요.
여기 적힌 조치 중 일부는 일부러 미완이라고 써 두었습니다. 콘텐츠 보안 정책은 다듬는 동안 보고 전용으로 배포되어 있어 위반을 알리기만 하고 막지는 않습니다. 이중 인증은 아직 없습니다. 이 페이지가 플랫폼이 지원하는 범위에서라고 적은 자리는 정확히 그 뜻이고 그 이상은 아닙니다.
앞으로
Whisperer가 커 가는 만큼 보안과 규정 준수를 위한 조치를 더 살펴보고 있습니다. 날짜는 적지 않습니다. 지키지 못할 날짜는 확인할 수 없는 주장이 하나 더 느는 일일 뿐입니다.
- 콘텐츠 보안 정책을 보고에서 차단으로
- 계정 이중 인증
- 독립적인 보안 점검과 모의 침투 테스트
- 공식 보안 정책과 규정 준수 프로그램
보안 문제를 찾으셨나요?
공개하기 전에 알려 주시고, 고칠 수 있는 합리적인 시간을 주세요. 무엇을 찾았는지, 어떻게 재현하는지, 영향이 무엇이라고 보는지 함께 적어 주시면 좋습니다. 접수를 확인해 드리고 진행 상황도 알려 드립니다.
유료 버그 바운티는 없습니다. 신고에 이름을 남기고 싶으시면 말씀해 주세요. 표기해 드립니다.