152-FZ 준수를 위한 LLM에서의 개인정보 보호: NestJS로 구현한 토큰 대체 기법
건설 회사의 리드 처리용 AI 어시스턴트 개발 과정에서 중요한 위험 요소가 드러났다. 사용자 메시지에 포함된 개인 정보(PII)가 직접 구글 지니메 API로 전송되고 있었다. 이름, 전화번호, 이메일, 고객 회사 정보 등이 해외 서버로 전송되며, 러시아의 152-FZ 법률을 위반했다. 이는 국경을 초월한 데이터 이동으로, 로스콤나즈도르(Roskomnadzor)에 사전 통보와 데이터 주체의 명시적 동의가 필요하며, 최대 300만 루블의 벌금이 부과될 수 있다.
해결책: 모델 전송 전 토큰으로 개인정보 대체
모델에 전달하기 전에 PII를 일시적인 토큰으로 교체하는 방식이다. LLM은 익명화된 텍스트를 처리하지만, 사용자 맞춤형 응답을 생성한다. 실제 데이터는 최종 출력 단계에서만 복원된다.
토큰 대체 원리
이 과정은 네 단계로 구성된다:
- API에 도달하기 전에 사용자 메시지를 가로챈다.
- PII를 자리표시자로 교체:
[USER_NAME],[USER_EMAIL],[USER_COMPANY],[PHONE]. - 마스킹된 텍스트를 LLM에 전송하고, 토큰을 포함한 응답을 받는다.
- 사용자에게 결과를 표시하기 전에 실제 데이터를 복원한다.
LLM은 "좋아요, [USER_NAME]! [USER_COMPANY]에 대한 견적을 준비해 드릴게요, [USER_EMAIL]로 연락드리겠습니다."라는 문장을 보게 된다. 사용자는 실제 정보가 포함된 자연스러운 응답을 받지만, 모델은 원본 PII에 접근하지 않는다.
실무 구현: NestJS와 WebSocket
기본 패턴은 간단하지만, 스트리밍 방식의 LLM 응답은 실행을 복잡하게 만든다. 토큰이 웹소켓을 통해 청크 단위로 도착하면서 화면에 [USER_NAME]이 깜빡이는 시각적 오류가 발생할 수 있다.
핵심 도전과 해결책:
- 토큰이 청크 사이에 나뉘는 문제. 만약
[USER_가 한 청크에 있고NAME]이 다른 청크에 있으면 대체가 실패한다. 이를 방지하기 위해 버퍼링을 적용:StreamingPiiRestorer클래스(각 스트림마다 독립 인스턴스)가 뒷부분 조각을 누적하고, 닫는]가 있는지 확인한 후 전체 토큰을 발행한다. - 파이프라인 우회 문제. 견적 생성 모듈이 이전에는 포스트그레SQL에서 직접 PII를 읽었으나, 이제 모든 LLM 호출은 단일 진입점을 통과한다.
- 정규식 오진. 견적 내 금액 및 SKU가 잘못되어 INN 또는 OGRN으로 판단되는 경우가 있었다. 패턴을 분리: 법적 법인의 INN(10자), 개인의 INN(12자), OGRN(1 또는 5로 시작), 각각 세금청 체크섬 규칙으로 검증한다.
다층 보안 아키텍처
시스템은 상호 보완적인 다섯 계층으로 강력한 보호를 제공한다.
계층 1: 알려진 PII의 결정론적 대체. 대화 프로필에서 이름, 이메일, 전화번호, 회사 정보를 대상으로 하며, 정확도는 99%이다.
계층 2: 임시 PII 탐지용 정규식 스캐너. 이메일, 전화번호, INN, OGRN, 여권, IP, 신용카드 번호 등을 감지하고 형식 검사를 적용한다.
계층 3: PostgreSQL 내 암호화. AES-256-GCM로 PII 필드를 암호화. 키는 환경 변수에 저장되며, 데이터베이스 스냅샷은 읽을 수 없다.
계층 4: HMAC 감사 로그. 정제된 텍스트 + 원본 데이터의 HMAC-SHA256(비밀 키 사용). 민감 정보 노출 없이 유출 없음을 입증 가능.
계층 5: 보존 정책에 따른 자동 삭제. 크론 작업으로 90일 이상 된 대화의 PII를 자동 익명화(500건씩 배치, 잠금 없음).
비즈니스 및 준수 이점
데이터는 회사 인프라 내에서 유지된다. LLM은 PII에 접근하지 않으면서도 대화 맥락을 유지한다. 로스콤나즈도르 감사 시 암호학적 증거를 제출할 수 있다.
한계점: 연락처 정보 없이 등장하는 제3자 이름(예: "아이반에게 전화해")은 마스킹되지 않는다. 러시아어 NER는 65~75%의 정확도를 보이며 일부 오진이 발생하나, 152-FZ 기준으로는 실행 가능한 PII로 간주되지 않는다.
기술적 보호 장치 외에도 행정적 조치를 병행: 사용자 동의, 로스콤나즈도르 통보, 공급업체와의 데이터 처리 계약(DPA) 체결.
핵심 요약
- 토큰 대체는 UX에 영향을 주지 않으면서 LLM에 PII 유출을 완전히 차단한다.
- 스트리밍 버퍼링은 웹소켓 스트림에서 토큰 분할 문제를 해결한다.
- 단일 진입점은 파이프라인 우회를 방지한다.
- HMAC 로그는 검증 가능한 준수 증거를 제공한다.
- 보존 정책은 152-FZ 요구사항에 따라 자동 삭제를 수행한다.
— Editorial Team
아직 댓글이 없습니다.