음성 수집(휴대폰 마이크 사용 시)휴대폰 → 같은 네트워크의 데스크톱사용자 기기휴대폰은 음성을 저장하지 않고 TLS 1.3(공개키 핀 고정)으로 데스크톱에만 전송합니다 · 휴대폰 앱은 데스크톱과 같은 계정으로 로그인하며, VerbalChart 서버와는 로그인·연결할 데스크톱 확인·운영 지표 전송을 위해 통신하고 음성은 보내지 않습니다
화자 분리 · 무음 제거사용자 PC로컬로컬 모델
음성 → 텍스트 변환사용자 PC의 SenseVoice 또는 클라우드 STT (미국 소재 OpenAI API — 선택한 음성 인식 방식에 따름)로컬 또는 국외이전 · 별도 동의로컬 SenseVoice는 음성을 PC 안에서 처리 · OpenAI 전사 API는 남용 모니터링 및 서비스 상태 저장 없음 · 서버의 클라우드 전사 결과·백업 보관은 아래 안내 참조
SOAP 노트·추천·AI 채팅 생성OpenAI API (미국 소재 OpenAI OpCo, LLC)국외이전 · 별도 동의응답 저장 비활성화 · OpenAI 남용 모니터링 일반적으로 최대 30일 · 프롬프트 캐시 최대 24시간 · 호칭·표제어 없이 말해진 이름은 포함된 채 전달될 수 있습니다
진단코드(KCD) · 처방 안전(DUR)중앙 서버서버참조 데이터 검색 · 환자 정보를 담지 않습니다
로컬 SenseVoice로 전사하는 경우 음성은 PC 안에서 처리합니다. 클라우드 전사를 선택한 경우의
진료 음성(클라우드 전사 시 OpenAI OpCo, LLC)과 AI 차트 작성 입력(대화록·차트 본문·채팅, OpenAI
OpCo, LLC)이 국외로 이전되는 점은 개인정보처리방침 제6조에 공시되어 있으며,
별도 동의 대상입니다. 로컬 전사를 사용해도 AI 차트 작성 입력은 OpenAI API로 전송됩니다.
1. 전송 구간 암호화
클라이언트와 서버 사이의 모든 통신은 TLS로 암호화되며, HSTS(max-age=31536000; includeSubDomains)로 평문 접속을 차단합니다.
다만 이것은 종단간 암호화(E2EE)가 아닙니다. 서버가 대화록을 읽어 SOAP 노트
초안을 만들어야 하므로 구조적으로 E2EE일 수 없습니다. 서버 측에서 추가로 인명을 제거하지는 않으며,
치환은 이용자 기기에서 전송 전에 이뤄집니다(3항).
이 TLS 연결은 네트워크 전송·보안 수탁자인 Cloudflare가 종단합니다. 이용자 기기와
Cloudflare 사이는 TLS로, Cloudflare와 회사 서버 사이는 암호화된 터널로 전달되며, 그
과정에서 Cloudflare가 요청·응답의 내용을 처리합니다. 종단하는 Cloudflare 데이터센터는 접속
경로에 따라 정해지며 국외일 수 있습니다(개인정보처리방침 제6조).
휴대폰을 마이크로 쓰는 경우, 휴대폰과 데스크톱 사이 구간도 TLS 1.3으로 암호화됩니다.
휴대폰은 데스크톱과 같은 계정으로 로그인한 뒤, 그 데스크톱이 VerbalChart 서버에 등록한
공개키만 신뢰합니다(공개키 지문은 로그인한 휴대폰이 서버에서 받습니다). 음성은 서버를 거치지
않고 같은 네트워크의 데스크톱으로만 전송됩니다.
2. 로컬에 남는 것과 서버로 가는 것
화자 분리(Diarization)와 무음 구간 제거(VAD)는 데스크톱 앱에서 로컬로 처리합니다. 그 밖의
처리는 위 데이터 경로와 같이 나뉩니다.
3. 환자 이름·생년월일을 별도로 입력받지 않습니다
서비스는 환자의 이름·생년월일을 입력받지 않으며, EMR 화면에서 읽지도 않습니다. SOAP 노트 초안은 대화 내용만으로 작성되고, 그 초안이 어느 환자의 것인지는 전적으로 사용자(의사)가
판단합니다.
진료 중 환자의 이름을 부르면 그 이름은 음성-텍스트 변환을 거쳐 대화록에 들어가고, 대화록은
AI 차트 작성을 위해 미국 소재 OpenAI OpCo, LLC(OpenAI API)로 전송됩니다.
데스크톱 앱은 보내기 전에 형식 단서로 찾을 수 있는 일부 식별정보를 유형
표지([이름1]·[등록번호1] 등)로 바꾸지만, 이 치환은 비식별 처리가 아니며 말해진 이름 등 식별정보가 전송 내용에 포함될
수 있습니다. 원문과 표지의 대응 관계는 사용자의 PC 메모리에만 있고 서버로 가지 않으며, 새 진료를 시작하거나 로그아웃하면
사라집니다. 화면·클립보드·EMR 전송에서는 원문으로 되돌아오므로, 의사가 보는 차트는 표지가 아니라
실제 이름입니다.
다만 이 처리는 완전하지 않습니다. 치환은 형식 단서에 기댑니다. 「○○님」·「○○씨」·「성함은 ○○」처럼 호칭이나
표제어가 붙은 성명, 「등록번호 …」·「차트번호 …」, 「생년월일 …」·「○○년생」,
광역자치단체명으로 시작하는 주소, 그리고 주민등록번호·휴대전화번호가 대상입니다. 반대로 호칭도 표제어도 없이 불쑥 언급된 이름, 표제어 없는 번호, 일반적인 날짜 표기는 걸러지지
않고 그대로 전달됩니다. 차팅 스타일 학습을 위해 직접 첨부하신 차트 이미지·PDF와 AI 채팅에 첨부하신 이미지·PDF는 기기에서
판독하지 않으므로, 치환 없이 원본 그대로 AI 서비스로 전송됩니다. 첨부한 이미지·PDF
안에 적힌 이름이나 번호는 바뀌지 않습니다. AI 채팅 첨부의 파일 이름과 텍스트 파일 본문은 대화
텍스트와 같은 방식으로 치환한 뒤 보내며, 채팅 첨부는 지우거나 새 진료를 시작하기 전까지 이어지는
질문마다 함께 전송됩니다.
치환을 거친 뒤에도 텍스트에 주민등록번호·휴대전화번호 형식의 값이 남아 있으면, 그 요청은 AI
서비스로 보내지 않습니다. 이 확인은 첨부한 이미지·PDF의 내용에는 닿지 않습니다.
4. 전사 결과·백업·SOAP 노트의 서버 보관
클라우드 전사 결과는 재시도·중복 과금 방지를 위해 암호화해 서버 DB에 보관하며, 25시간 후
만료됩니다. 전사 결과는 AES-256-GCM으로 암호화하며 만료 뒤 주기적으로 삭제합니다. 적체 시
삭제가 지연될 수 있습니다.
전사 결과는 DB 백업에도 포함됩니다. 로컬 백업은 7일 경과 후 일일 정리 시, 국외 백업은 90일
경과 후 삭제됩니다. DB의 25시간 만료는 백업 사본에 적용되지 않습니다. 기관 역할에는 진료
내용 열람 권한이 없습니다.
진료 중 차트를 이어 쓰는 동안 데스크톱 앱은 화면의 현재 SOAP 본문과 직접 수정한 전후
내용·순서를 형식 단서에 따라 치환해 다음 갱신 요청에 함께 보냅니다. 의사가 직접
추가·정정·삭제한 내용을 기준으로 새 전사를 반영합니다. AI 채팅이 고치거나 덧붙인 항목과 해당
채팅 요청의 첨부 자료 내용도 본문에 들어 있을 수 있습니다. 직접 수정 이력은 요청 처리 뒤
남기지 않습니다. 분량 전환 시 같은 결과를 재사용하기 위해 생성이 완료된 SOAP 본문과
약물·진단코드 후보를 캐시합니다. 분량 전환용 SOAP 결과는 처리 서버 메모리에만 캐시하며, 캐시
생성 후 최대 10분 동안 조회할 수 있고 만료 뒤 1분 안에 삭제됩니다. 캐시 조회로 보관 시간이 늘어나지 않으며, 별도 캐시
서버·디스크·데이터베이스에는 기록하지 않습니다. 새 전사를 반영하거나 다시 생성하면 이전
캐시를 무효화하며, 직접 수정한 내용이 달라지면 기존 결과를 재사용하지 않습니다.
이전 버전의 데스크톱 앱에서는 이어쓰기용 직전 SOAP 본문이 처리 서버 프로세스의 메모리에만 최대 30분 머무릅니다. 그 버전은 서버가 들고 있는 본문을 다음 갱신의 기준으로 쓰기 때문입니다. 30분이
지나면 조회되지 않고 1분 안에 메모리에서 지워집니다. 별도 캐시 서버나 디스크·데이터베이스에는
기록하지 않으므로 서버 프로세스가 다시 시작되면 함께 사라집니다. 진료를 마친 뒤 차트 작성 처리가
완료되면 그 즉시 지워지고, 앱이 비정상 종료되어 완료 신호가 오지 않은 경우에도 위 시간이 지나면
소멸합니다.
5. 사용자 PC의 진료 기록 보관
진료 기록(전사·SOAP 노트·채팅)은 자동으로 삭제하지 않으며 앱을 지워도 이 PC에 남습니다. 앱 설치 폴더 밖(%LOCALAPPDATA%\VerbalChart-Records)에 두기 때문이며, 같은
Windows 사용자 계정에서 다시 설치해 같은 계정으로 로그인하면 다시 보입니다. 직접
삭제하거나 「지금 모두 삭제」·명시적 로그아웃으로 지웁니다.
진료가 끝나면 그 진료의 녹음을 압축·암호화해 진료 기록과 함께 이 PC에 보관합니다. 녹음은
앱이 설치되어 있는 동안 남고, 그 기록을 지우거나 명시적으로 로그아웃하거나 다른 계정으로
로그인할 때, 앱을 제거할 때 함께 지워집니다. 녹음 보관에는 기본으로 용량·기간의 상한이
없으며, 설정에서 보관 중인 녹음의 사용량을 확인하고 보관 상한을 정할 수 있습니다(상한을
넘으면 오래된 진료의 녹음부터 지웁니다).
「음성 파일 저장」으로 내보낸 WAV 파일은 암호화되지 않으며 앱을 지워도 남습니다. 앱이
관리하지 않으므로 저장한 곳에서 직접 관리하셔야 합니다.
전사하지 못한 발화는 다시 전사할 수 있도록 암호화해 최대 24시간 보관합니다.
진료 기록 데이터베이스에서 삭제된 자리는 0으로 덮어쓰도록 설정합니다(PRAGMA secure_delete=ON). 녹음 파일은 일반 파일 삭제로 지웁니다. SSD 내부 사본이나 별도 백업까지 삭제하는 기능은
아닙니다.
공용 PC에서 다른 계정으로 로그인하면 이전 사용자의 초안과 녹음은 파기됩니다.
채팅에 첨부한 이미지·파일은 로컬 데이터베이스에 담지 않습니다.
로컬 암호화: 데스크톱 앱은 진료 기록과 녹음을 AES-256-GCM으로 암호화해 이 PC에
보관하고, 키는 Windows 사용자 계정에 연결된 DPAPI로 보호합니다. 암호화 기능이 없던 이전 버전의
평문 초안은 업데이트 후 처음 실행할 때 변환합니다. 기록 식별자·계정 식별자·작성·저장 시각과 활동
기록(활동 종류·시각)은 암호화 대상에서 제외됩니다.
대화 중 이름이 말해졌다면 복호화된 대화록에 그 이름이 포함될 수 있습니다. 암호화는
비식별화가 아니며, 같은 Windows 계정으로 실행되는 악성 프로그램까지 차단하지는 않습니다.
이전 버전의 사본·별도 백업과 PC 자체의 접근 통제·디스크 암호화는 의료기관에서 관리하셔야
합니다.
6. 저장 시 암호화의 범위
서버에 저장되는 값 가운데 의사면허번호는 AES-256-GCM으로 필드 단위
암호화합니다. 암호화 키가 설정되어 있지 않으면 운영 서버는 아예 기동하지 않습니다. 전사
결과도 AES-256-GCM으로 암호화합니다. 면허번호 검색이 필요한 경우를 위해 암호화 키와 분리된
별도 키로 파생한 블라인드 인덱스를 사용하므로, 조회 과정에서도 평문이 드러나지 않습니다.
주민등록번호는 본인확인 처리 후 보관하지 않습니다. 이메일은 로그인 조회에 쓰이므로
평문으로 저장하되, 감사 로그에는 마스킹하여 기록합니다.
주민등록번호는 가입 화면의 입력칸이 아니라, 이용자의 브라우저가 직접 연 행정안전부 간편인증
화면(easysign.anyid.go.kr)에 이용자가 직접 입력합니다. 그 입력은 회사 서버를 거치지
않습니다. 회사 서버는 보건복지부 면허 조회에 쓰는 간편인증 요청(일회용 거래 정보)과 인증
완료 응답을 메모리에서 전달만 하고 로그·디스크·데이터베이스에 저장·기록하지 않으며, 사용한
뒤 바로 지웁니다. 가입 화면도 이 둘을 브라우저 저장소에 두지 않습니다.
7. 계정 보호
세션은 HttpOnly 쿠키로만 유지하며 브라우저 저장소에 인증 상태를 두지 않습니다.
소셜 로그인은 PKCE를 필수로 사용하고, 리프레시 토큰은 회전 및 재사용 탐지를 적용합니다.
비밀번호는 bcrypt로 해시하여 저장합니다.
로그인 및 API 호출에 IP 단위 요청 제한을 적용합니다.
웹 계정·관리자 콘솔은 화면을 30분 동안 조작하지 않으면 자동으로 로그아웃됩니다. 데스크톱
앱은 설정에서 유휴 자동 로그아웃 시간을 고르며(기본 30분), 사용자가 끌 수도 있습니다.
로그인된 세션의 목록을 내 계정 화면에서 직접 확인하고, 세션별로 또는 지금 쓰는 세션만
남기고 한꺼번에 해제할 수 있습니다. 서버가 세션에 대해 남기는 것은 앱 종류·운영체제
구분·앱 버전·자동 로그인 사용 여부·접속 시각과 회사가 만든 기기 표시 이름(예: 「Windows PC · 3F9A」), 그리고
데스크톱·휴대폰 앱 세션에 한해 앱 설치 식별자의 일방향 해시(SHA-256) 앞부분이며, PC의 컴퓨터 이름과 User-Agent 원문은 저장하지 않습니다. 설치 식별자도 원문은 저장하지 않으며, 해시 앞부분은 같은 앱 설치에서 만들어진 세션을 한 기기로
묶어 보여 주고 기기 단위로 해제하는 데만 씁니다.
세션을 해제하면 세션 갱신은 그 즉시 막히지만, 이미 발급된 접속 권한은 남은 유효기간이
지나야 효력을 잃습니다. 남은 시간은 서버가 알려 주는 값이라 내 계정의 세션·기기 화면에
그대로 표시됩니다. 기기를 목록에서 지우는 것은 접속을 끊는 조치이며, 서버가 그 기기의
기록을 원격으로 지우지는 않습니다. 로그인이 끊긴 것을 확인한 데스크톱 앱과 휴대폰 앱도 그
기기에 보관한 진료 기록을 지우지 않고 잠가 두며, 같은 계정으로 다시 로그인해야 보입니다.
잠긴 기록은 기기에 암호화된 채 남으므로, 분실·도난에 대비하려면 기기 자체의 잠금과 접근
통제가 필요합니다.
8. 분석·광고 목적의 추적을 하지 않습니다
분석 도구나 광고 스크립트를 사용하지 않습니다. 쿠키는 로그인 세션 유지에 필요한 것뿐입니다.
고객의 진료 데이터를 AI 모델 학습에 사용하지 않습니다. 서비스 운영·보안을 위한 운영
지표(기능별 처리 결과·오류 분류·처리 시간)는 진료 내용을 담지 않으며 개인정보처리방침 제2조에 따라 처리합니다.
9. 잘못 쓰는 것을 막는 장치
이 차트가 어느 환자의 것인지 서비스가 보증하지는 않습니다. 환자 신원을 별도로
취득하지 않으므로(3항), 어느 환자의 기록으로 남길지 판단하는 것은 전적으로 사용자(의료인)의
몫입니다.
전자차트로 옮기는 작업이 저절로 실행되는 일은 없습니다. 사용자가 직접
실행하고, 입력 직전에 대상과 전송될 내용의 요약을 보여 주는 확인 창에서 한 번 더 승인해야
진행됩니다. 자동 대조가 아니라 사람의 확인에 의존하는 통제입니다.
VerbalChart가 생성하는 것은 초안이며, 최종 검토와 책임은 의료인에게
있습니다. 자세한 내용은 책임 한계 고지를 확인해주세요.
10. 현재 상태에 대한 고지
ISMS-P 인증을 취득한 상태가 아닙니다. 해당 심사 기준에 따라 자체 코드 검토를
수행하고 개선을 진행하고 있습니다.
HIPAA는 미국 법으로 국내 서비스에 적용되지 않습니다. 국내 「의료법」과 「개인정보 보호법」을
기준으로 합니다.