본문 바로가기

VerbalChart 보안 백서

VerbalChart는 환자의 신원을 취득하지 않도록 설계된 서비스입니다. 다만 이것이 "환자 이름이 서버로 가지 않는다"는 뜻은 아닙니다 — 그 차이를 3항에서 밝힙니다. 무엇을 보호하고 무엇은 보호 범위 밖인지, 아래에 있는 그대로 적습니다.

1. 전송 구간 암호화

클라이언트와 서버 사이의 모든 통신은 TLS로 암호화되며, HSTS(max-age=31536000; includeSubDomains)로 평문 접속을 차단합니다.

다만 이것은 종단간 암호화(E2EE)가 아닙니다. 서버가 대화록을 읽어 SOAP 초안을 만들어야 하므로 구조적으로 E2EE일 수 없습니다. 그리고 서버가 읽는 내용에서 인명을 찾아 제거하는 처리도 하지 않습니다(3항).

사용자가 휴대폰을 마이크로 등록한 경우, 휴대폰과 데스크탑 사이 구간도 TLS 1.3으로 암호화되며 QR로 휴대폰을 연결할 때 고정한 데스크탑 공개키만 신뢰합니다.

2. 로컬에 남는 것과 서버로 가는 것

화자 분리(Diarization)와 무음 구간 제거(VAD)는 데스크탑 앱에서 로컬로 처리합니다. 그 밖의 처리는 다음과 같이 나뉩니다.

좁은 화면에서는 표를 좌우로 밀어 전체 내용을 확인할 수 있습니다.

항목처리 위치비고
환자 이름·생년월일서비스가 취득하지 않음입력받지도, EMR 화면에서 읽지도 않습니다
음성 수집(휴대폰 마이크 사용 시)휴대폰 → 같은 네트워크의 데스크탑휴대폰은 음성을 저장하지 않고 TLS 1.3(공개키 핀 고정)으로 데스크탑에만 전송하며, 회사 서버와 통신하지 않습니다
화자 분리 · 무음 제거사용자 PC로컬 모델
음성 → 텍스트 변환클라우드 STT (미국 소재 Groq)변환 후 즉시 폐기 · 디스크에 기록하지 않습니다
SOAP 초안 생성Google Cloud Vertex AI (서울 리전)대화 중 이름이 말해졌다면 변환 텍스트에 포함된 채 전달됩니다
진단코드(KCD) · 처방 안전(DUR)중앙 서버참조 데이터 검색 · 환자 정보를 담지 않습니다

음성이 국외(미국)로 이전되는 점은 개인정보처리방침 제6조에 공시되어 있으며, 별도 동의 대상입니다.

3. 서비스는 환자 신원을 취득하지 않습니다

서비스는 환자의 이름·생년월일을 입력받지 않으며, EMR 화면에서 읽지도 않습니다. 차트 초안은 대화 내용만으로 작성되고, 그 초안이 어느 환자의 것인지는 전적으로 사용자(의사)가 판단합니다.

다만 이것이 "이름이 서버로 가지 않는다"는 뜻은 아닙니다. 진료 중 환자의 이름을 부르면 그 이름은 음성-텍스트 변환을 거쳐 대화록에 그대로 들어가고, 차트 초안 생성을 위해 그 상태로 AI 서비스에 전달됩니다. 서비스는 대화록에서 인명을 찾아 제거하는 처리를 하지 않습니다.

자동으로 걸러지는 것은 형식으로 식별되는 정보뿐입니다 — 차트 내용에 주민등록번호나 휴대전화번호 형식의 값이 있으면 해당 요청을 AI 서비스로 보내지 않습니다. 이름은 형식만으로 구별할 수 없어 이 방식으로 탐지되지 않습니다.

4. 서버는 진료 내용을 영속 저장하지 않습니다

서버에는 진료 대화록이나 SOAP 차트를 담는 저장소가 없습니다. 기능을 끈 것이 아니라 그런 테이블 자체가 존재하지 않습니다.

한 가지 예외를 정확히 적습니다. 진료 중 차트를 변경분만 이어 쓰는 동안에는, 직전에 만들어 둔 SOAP 본문이 다음 갱신의 기준이 되어야 하므로 서버의 휘발성 공유 캐시에 최대 30분 머무릅니다. 그 값은 AES-256-GCM으로 봉인된 상태로만 캐시에 들어가고 복호화 키는 처리 서버에만 있어 캐시 자체는 내용을 알지 못합니다. 캐시에는 디스크 볼륨이 붙어 있지 않아 프로세스가 내려가면 함께 사라지며, 배포할 때마다 그 컨테이너가 파일을 하나도 쓰지 않았는지 자동으로 검사합니다. 진료를 마쳐 최종 차트가 만들어지면 그 즉시 지워지고, 앱이 비정상 종료되어 완료 신호가 오지 않은 경우에도 위 시간이 지나면 소멸합니다. 이 동작은 배포 없이 즉시 끌 수 있는 운영 스위치 2개 아래에 있습니다.

5. 사용자 PC의 진료 기록 보관

보호 범위 밖: 로컬 데이터베이스 파일 자체는 암호화되어 있지 않으며, 대화 중 이름이 말해졌다면 대화록에 그 이름이 포함된 채로 저장됩니다. 위의 자동 파기·복구 불가 삭제가 보관 기간을 제한할 뿐입니다. PC 자체의 접근 통제(로그인 암호, 디스크 암호화)는 의료기관에서 관리하셔야 합니다.

6. 저장 시 암호화의 범위

서버에 저장되는 값 가운데 의사면허번호는 AES-256-GCM으로 필드 단위 암호화합니다. 암호화 키가 설정되어 있지 않으면 운영 서버는 아예 기동하지 않습니다. 검색이 필요한 경우를 위해 암호화 키와 분리된 별도 키로 파생한 블라인드 인덱스를 사용하므로, 조회 과정에서도 평문이 드러나지 않습니다.

주민등록번호는 본인확인 처리 후 보관하지 않습니다. 이메일은 로그인 조회에 쓰이므로 평문으로 저장하되, 감사 로그에는 마스킹하여 기록합니다.

7. 계정 보호

8. 분석·광고 목적의 추적을 하지 않습니다

분석 도구나 광고 스크립트를 사용하지 않습니다. 쿠키는 로그인 세션 유지에 필요한 것뿐입니다. 고객의 진료 데이터를 AI 모델 학습에 사용하지 않습니다.

9. 잘못 쓰는 것을 막는 장치

이 차트가 어느 환자의 것인지 서비스가 보증하지는 않습니다. 환자 신원을 별도로 취득하지 않으므로(3항), 어느 환자의 기록으로 남길지 판단하는 것은 전적으로 사용자(의료인)의 몫입니다.

전자차트로 옮기는 작업이 저절로 실행되는 일은 없습니다. 사용자가 직접 실행하고, 입력 직전에 대상과 전송될 내용의 요약을 보여 주는 확인 창에서 한 번 더 승인해야 진행됩니다. 자동 대조가 아니라 사람의 확인에 의존하는 통제이며, 그 한계를 그대로 밝힙니다.

VerbalChart가 생성하는 것은 초안이며, 최종 검토와 책임은 의료인에게 있습니다. 자세한 내용은 책임 한계 고지를 확인해 주세요.

10. 현재 상태에 대한 고지