Kamei - AI에 전달하기 전에 기밀 정보를 숨기는 에이전트
요약
Kamei는 AI에 기밀 정보를 전달하기 전, 개인 식별 정보(성명, 연락처 등)를 찾아 종류가 구분되는 가명으로 대체하는 도구입니다. 이를 통해 사용자가 외부 LLM의 데이터 처리 방식에 대한 불확실성을 해소하고 안전하게 코딩 및 업무 자료 상담을 할 수 있게 합니다.
핵심 포인트
- AI 입력 정보의 보안 취약성 문제를 해결합니다.
- 개인 식별 정보를 가명으로 대체하여 전송합니다.
- 형태가 정해지지 않은 고유명사도 찾아 처리할 수 있습니다.
서론
저희는 개인 개발 과정에서도 생성형 AI에게 코드 상담을 받고 있습니다. 어느 날, 붙여 넣으려던 로그에서 이름이나 이메일 주소가 섞여 있는 것을 발견했습니다. 제 자신의 코드조차 이런데, 업무 자료나 코드라면 더욱 심각합니다. 어떤 정보는 전달해도 되고, 무엇은 전달하면 안 되는지 매번 고민해야 합니다.
이 판단은 생각보다 어렵습니다. AI에 입력한 내용이 어디로 전송되고 어떻게 처리되는지는 사용자 입장에서 확신할 수 없습니다. 2026년에도 입력 및 이용 환경 정보가 사용자가 모르는 곳으로 보내졌다는 사례가 연이어 보도되었습니다.
Kamei는 이 판단을 소프트웨어 측면에서 대신 수행하는 도구입니다. AI에 전달하기 전에 기밀 정보나 사람/조직을 식별할 수 있는 정보(성명, 연락처, 회사명, 사내 시스템명 등)를 찾아 종류가 구분되는 가명 (かめい: 진짜 이름 대신 사용하는 가짜 이름)으로 대체하고, 답변이 돌아오면 원래의 이름으로 복원합니다. 전송 대상을 의식하지 않아도, 신뢰하지 않아도, 외부로 나가는 것은 가명 처리된 텍스트뿐입니다.
1. 배경 및 과제
1.1 AI에 입력한 내용의 처리
2026년에는 AI에 입력한 내용의 처리를 두고 다음과 같은 사건들이 보도되었습니다.
- '저렴한 Claude'를 판매하는 불법 재판매업자가 사용자의 통신을 실제로는 다른 AI 모델로 중계하고 인증 정보까지 훔쳤습니다 (Anthropic 위협 보고서, 2026년 9월)
- Claude Code가 자체 연결처를 사용하는 이용자 환경의 정보를 시스템 프롬프트의 눈에 보이지 않는 문자 차이에 심어 보내고 있었습니다. 지적을 받은 후 Anthropic은 해당 처리를 삭제했습니다 (Tech Times, 2026년 7월)
- Anthropic은 Moonshot AI가 Kimi 사용자의 요청 약 30만 건을 사용자에게 알리지 않고 Claude로 중계했다고 주장합니다 (Bloomberg 보도를 받은 RuntimeWire, 2026년 9월)
설정 화면이나 이용약관을 읽어도 입력이 실제로 어디로 전송되고 어떻게 처리되는지까지는 확신할 수 없습니다. 따라서 사용자에게는 '이것을 입력해도 되는가'를 스스로 판단하는 리터러시가 요구됩니다.
반면, 사용자의 판단은 따라가지 못하고 있습니다. 2026년 조사에 따르면 생성형 AI에 고객/거래처 정보를 입력한 경험이 있는 직장인은 16.4%, 개인정보를 입력한 경험이 있는 사람은 10%였습니다. 입력한 내용이 외부와 공유될 수 있다는 점을 '별로/전혀 의식하지 못하는' 사람도 약 4명 중 1명이었습니다 (사이버보안클라우드 조사).
1.2 찾기 어려운 '형태가 정해지지 않은 이름'
지금까지의 대책은 크게 두 가지였습니다.
- 사용하지 못하게 하기: 직원이 사내 소스 코드를 ChatGPT에 입력한 것을 계기로, 생성형 AI의 업무 이용을 금지한 기업도 있었습니다 (Forbes). 하지만 AI의 편리함도 포기해야 합니다.
- 정해진 형태의 정보 찾기: 전화번호, 이메일 주소, 카드 번호와 같이 형태가 정해진 정보는 기존 탐지 도구로 찾아낼 수 있습니다.
하지만 실제 문서나 코드에는 형태가 정해지지 않은 고유명사가 많이 포함되어 있습니다. 거래처의 회사명, 사내 프로젝트명, 사내 시스템 이름 등은 일반 단어와 구별하기 어렵습니다. 게다가 같은 상대방이라도 '마루에 상사', '마루에이', 'ME사'처럼 다르게 표기될 수 있습니다. 이런 이름을 문맥에서 찾아내고 AI에 전달할 수 있는 형태로 만드는 시스템은 아직 정착되지 않았습니다.
2. Kamei란 무엇인가
2.1 Kamei의 해결책
Kamei는 AI에 전달하기 전의 문서나 코드에서 기밀 정보를 찾아 종류가 구분되는 가명으로 대체합니다. 왼쪽이 사용자의 입력이고, 오른쪽이 실제로 외부 LLM에 보낸 텍스트입니다.

| 원본 이름 | 전송된 텍스트의 가명 |
|---|---|
| 사토 미사키 (성명) | 人物VU4 |
| ... | |
| 가명의 특징은 세 가지입니다. |
- 종류가 구분됨: '인물', '회사', '프로젝트', 'svc-'처럼 종류를 남기므로, AI는 문맥의 의미를 오해하지 않고 답변할 수 있습니다.
- 원상 복구 가능: 답변에 나온 가명은 사용자의 기기에서 원래 이름으로 되돌려 표시합니다.
- 추측 불가능: 가명은 대화별 키로 만든 키가 적용된 해시(HMAC)입니다. 대화가 바뀌면 같은 이름이라도 다른 가명이 되고, 가명만으로는 원본 이름을 추측할 수 없습니다.
Kamei가 숨기는 대상은 다음과 같습니다.
| 종류 | 예 |
|---|---|
| 사람・組織の名前 | 성명・별명, 근무처・거래처・지망하는 회사의 사명, 사내 프로젝트, 미공개 제품 |
| ... |
2.2 사용 방법
- 로그인하여 샘플(이력서・사내 코드・사내 테이블의 SQL. 모두 가상)을 선택하거나, 문장과 요청을 입력하고 '실행' 버튼을 누릅니다.
- Kamei가 기밀 정보를 찾아 가명으로 대체합니다. 기밀인지 판단할 수 없었던 것만 '숨기기/통과'를 묻고 답변하게 합니다.
- 외부 LLM(Gemini)의 응답이 원래 이름으로 돌아와 표시됩니다. '외부로 나간 텍스트 보기'에서 실제로 전송한 내용을 확인할 수 있습니다.
두 번째부터는, 지난번에 사용자가 '숨기기'로 결정했던 이름을 질문 없이 숨깁니다.
3. 기능
3.1 시스템 구성

| 역할 | 사용하는 것 |
|---|---|
| 프론트엔드 | React / TypeScript (디지털청 디자인 시스템의 토큰과 컴포넌트)・Firebase Hosting・Firebase Authentication |
| ... |
3.2 판정 에이전트
Kamei는 처리를 두 가지로 나눕니다.
- 가드레일(Guardrail): 표기 정리, 규칙, Sensitive Data Protection, 조직의 어휘, 이전 사람의 판단. 여기서 발견된 것은 반드시 숨깁니다.
- 판정 에이전트(Gemma 4): 가드레일을 통과한 고유명사가 기밀인지 판정합니다. '깊은 사고'를 켜면, 기밀인지 판단할 수 없는 이름을 스스로 도구를 선택하여 조사합니다.
매번 반드시 실행하는 처리는 정해진 규칙으로 확실하게 작동시킵니다. 그 위에 에이전트에게는 '어떤 이름을 자세히 조사할지', '어떤 도구를 사용할지', '언제 조사를 멈출지', '사람에게 물어볼지'를 상황에 따라 결정하도록 합니다.
Gemma 4가 고유명사별로 기밀 여부를 판정합니다. 기밀이라고 판단한 이름은 숨깁니다. 판단할 수 없는 이름은, '깊은 사고'가 켜져 있으면 도구로 조사하여 재판정하고, 꺼져 있으면 사람에게 확인합니다. '통과'라고 판단한 이름도, 다른 판정(규칙 기반 또는 다른 판정기)이 마찬가지로 '통과'라고 말하지 않으면 사람에게 확인합니다. 입력에 따라 에이전트의 행동이 달라집니다.
3.3 도구를 스스로 선택하기
| 도구 | 사용하는 경우 |
|---|---|
| 다른 표현 찾기 | 회사명・프로젝트명 발견 시. 카나 읽기・로마자・약어・이니셜+사명을 본문에서 찾습니다. |
| ... | |
| 이력서 샘플에서는 에이전트가 다음과 같이 작동했습니다. |
이 샘플에 필요했던 것은 '앞뒤 문맥을 읽는 것'뿐이었기 때문에, 에이전트는 그것만 선택하여 3번 사용했습니다.
3.4 사람과 협업하고 사람에게 배우기
- 사람에게 물어보는 것을 최소화: 판정기들 간의 의견이 '통과' 쪽으로 갈린 이름, 번호일 수 있는 숫자만 묻습니다. 번호는 한꺼번에 질문합니다.
- 사람의 판단을 기억하기: 확인 과정에서 '숨기기'로 결정한 회사명・사내 시스템・사내 프로젝트는 그 사람의 어휘(Open Knowledge Format)에 기록됩니다. 다음부터는 판정기에게 묻지 않고 숨기고, '지난 사용자의 판단으로 N건을 자동 숨겼습니다'라고 표시합니다. 이력서에서 '숨기기'로 결정한 마루사카(丸栄商事)는 다음에 붙인 SQL에서도 질문 없이 숨겨집니다.
- 번호는 기억하지 않기: 사원 번호 등은 개인에게 연결되는 정보이므로, 어휘에 기록하지 않습니다.
- 전송 후에도 검토 가능: 외부로 나간 텍스트 옆에, 숨기지 않고 전송된 고유명사 같은 단어들을 목록으로 보여줍니다. 선택하여 숨기고 다시 보내줄 수 있습니다.
3.5 관리・제어
에이전트의 판단은 안전한 쪽으로만 작동하도록 합니다. 메커니즘은 ADK의 콜백(before_tool / after_tool)으로 구현했습니다.
| 메커니즘 | 내용 |
|---|---|
| '통과'에는 근거가 필요 | 에이전트가 '통과'라고 결정해도, 규칙 기반이나 다른 판정기가 '숨기기'라고 한다면 사람의 확인을 거칩니다. |
| ... | |
| 판정 에이전트가 도구를 사용해 조사할지 여부는 설정의 '깊은 사고'에서 선택할 수 있습니다. 기본값은 응답 속도를 우선하여, 기밀인지 판단할 수 없는 이름은 사람의 확인으로 보냅니다. 꼼꼼히 조사하고 싶을 때 '깊은 사고'를 켜면, 에이전트가 스스로 도구를 선택하여 조사합니다. |
3.6 보안
| 대책 | 내용 |
|---|---|
| Sensitive Data Protection | 정형화된 개인 정보를 검사합니다. 조직의 어휘도 커스텀 사전으로 전달합니다. 판별 에이전트와 병렬로 작동하여 대기 시간을 늘리지 않습니다 |
| ... | |
| Kamei는 조직이 자신의 Google Cloud 프로젝트 내에서 구동한다는 전제하에 만들어졌습니다. 가명 처리하기 전의 원문을 다루는 것은 해당 조직이 관리하는 프로젝트 내부에서만 이루어집니다. |
3.7 관측성 (Observability)
에이전트가 무엇을 보고, 무엇을 선택했으며, 왜 그렇게 결정했는지 사용자와 운영자 모두 추적할 수 있습니다.
- 화면의 '에이전트 작업': 몇 건을 숨겼는지, 어떤 도구를 몇 번 사용했는지, 에이전트가 스스로 무엇을 결정했는지를 표시합니다。

- 판단 기록: 이름별 판단과 이유, 사용한 판별기, 심층 사고로 조사한 건수와 사용한 도구, 호출 횟수와 예상 비용을 남깁니다 (원문은 남기지 않습니다). 아래의 '처리 흐름(Cloud Trace)'에서 해당 전송의 트레이스로 이동할 수 있습니다.

- Cloud Trace: 도구 호출을 한 번씩 span으로 나누어, 도구 이름・시간・건수를 기록합니다. -
Cloud Monitoring: 요청 수・오류・전송 직전에 다시 숨긴 건수 등을 대시보드와 알람에서 볼 수 있습니다.
3.8 확장성 (Extensibility)
Claude Code에서도 사용 가능
Kamei는 Anthropic의 Messages API와 동일한 형태로 받기 때문에, Claude Code의 연결 대상만 변경하면 사용할 수 있습니다. 화면의 'API 키'에서 개인 키를 발행하고 다음과 같이 설정합니다.
export ANTHROPIC_BASE_URL=https://kamei-api-538196412260.asia-northeast1.run.app
export ANTHROPIC_CUSTOM_HEADERS="x-kamei-key: <발행한 키>"
claude
- 개인 키는 한 번만 표시되며, 저장되는 것은 해시 값뿐입니다. 화면에서 목록 확인 및 비활성화할 수 있습니다.
- 요청 문장・도구 인자・도구 결과(읽은 파일 내용이나 명령어 출력)까지 가명 처리합니다. 반환된 도구 인자는 원상 복구되므로 Claude Code는 그대로 실행할 수 있습니다.
- 원상 복구한 명령어 중 파괴적인 것(루트의 재귀 삭제 등)은 막고, 강제 push나
DROP TABLE등은 확인 코드를 요구합니다.
3.9 개발 및 운영 (Development and Operation)
- 테스트와 배포: PR마다 500건이 넘는 테스트와 누출의 회귀 테스트(사내명이나 개인정보를 포함한 더미 데이터를 외부로 보내는 모든 입구에 통과시키고, 하나라도 남으면 실패)를 진행합니다. 머지 후에는 GitHub Actions와 Cloud Deploy로 검증 환경에 배포하고, 사람이 승인한 후에 운영 환경에 배포합니다. Google Cloud로는 키를 발행하지 않고 Workload Identity 연동으로 연결합니다.
- 비용: Cloud Run은 사용하지 않을 때는 0대로 되고, 판별에 사용하는 Gemma 4도 사용한 만큼만 비용이 발생합니다. 이력서 샘플 1회 예상 비용은 **약 0.0063 달러(약 1원)**이며, 판단에 사용하는 Gemma 4의 단가는 답변에 사용하는 Gemini의 약 1/10 수준입니다. 호출 횟수와 예상 비용은 '판단 기록'에서 전송마다 확인할 수 있습니다.
맺음말 (Conclusion)
AI에 입력된 내용이 어디로 전송되고 어떻게 처리되는지는 사용자로부터 확신할 수 없습니다. Kamei는 그 안에서
토론

- AI 오용 방지: 2026년 9월 (Anthropic)
- Claude가 시스템 프롬프트에서 코드의 지문(Fingerprints)을 숨기다: Anthropic, 수정 약속 (Tech Times)
- Anthropic, Moonshot이 Kimi 사용자 요청을 Claude를 통해 라우팅했다고 밝히다 (RuntimeWire)
- AI 위험 '사용자 인식의 문제'가 부각되다 사이버 보안 클라우드 조사 (ECのミカタ)
- 민감한 코드 유출 후 삼성, 직원 대상 ChatGPT 사용 금지 (Forbes Australia)
- Open Knowledge Format
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기