사무 파일의 숨겨진 구성 요소 살펴보기
자체 제작. 이 이미지는 특정 서비스의 측정 결과를 보여주지 않습니다.
파일을 AI 도구에 끌어다 놓는 사람은 보통 내용물에 대해 알고 싶어 합니다. 두 번째 질문은 나중에 다룹니다. 파일 자체에는 무엇이 더 포함되어 있나요? 사무 파일은 종이가 아니라 아카이브이며, 눈에 보이지 않는 부분들로 구성되어 있습니다.
중요한 정보가 외부로 유출되는지 여부는 두 가지 측면을 가집니다. 첫 번째는 모델에 관한 것입니다. 모델은 상태 비저장(stateless)이므로 파일을 기억하지 못하며, 입력된 텍스트는 매개변수(parameter)를 변경하지 않습니다. 두 번째 절반은 그 이전에 일어나는 모든 것에 관한 것입니다. 그리고 더 큰 부분이 결정되는 곳은 바로 여기에 있습니다. 왜냐하면 문서는 전송되기 전에 아무도 타이핑하지 않은 것들을 이미 가지고 있기 때문입니다. 따라서 검토된 발췌 부분은 의도적으로 작습니다. 요청이 발생하기 전의 파일 자체만을 보여줍니다.
환경 및 절차
| 구성 요소 | 정의 |
|---|
| 검사 대상 | Word 문서와 Excel 스프레드시트 (테스트를 위해 생성됨) |
| ... | |
| 테스트 파일들은 의도적으로 눈에 띄지 않게 제작되었습니다. 열린 창에는 견적 번호가 포함된 단락과 금액이 표시됩니다. 나머지 모든 것은 파일을 아카이브로 열 때만 볼 수 있습니다. | |
단계 1: 파일을 아카이브로 읽기
.docx와 .xlsx 모두 지정된 폴더 구조를 가진 ZIP 아카이브입니다. 사무 프로그램의 개입 없이 zipfile은 구성 요소를 나열합니다:
import zipfile
with zipfile.ZipFile("beispiel-angebot.docx") as z:
...
테스트 파일은 18개의 부분으로 구성되어 있습니다. 대부분은 눈에 띄지 않습니다: 서식 스타일(Formatvorlagen), 글꼴 정의(Schriftdefinitionen), 관계 파일(Beziehungsdateien). 흥미로운 것은 네 가지 항목, 즉 docProps/core.xml, word/comments.xml, word/document.xml 그리고 Excel 스프레드시트의 경우 xl/workbook.xml입니다.
단계 2: 네 가지 구성 요소 개별 검사
작성자 정보(Autorenangaben). docProps/core.xml에는 dc:creator와 cp:lastModifiedBy 등이 포함되어 있습니다. 이것들은 기술적인 식별자가 아니라 이름입니다. 테스트 파일에서는 생성자로 'M. Keller', 마지막 수정자로 'S. Brandt'가 기록되어 있습니다.
주석(Kommentare). 아카이브에 word/comments.xml이 존재하면, 주석은 해당 파일에 연결됩니다. 이는 본문 흐름(Fließtext)에는 포함되지 않으며, 보이는 단락을 복사할 때는 함께 가져가지 않지만, 파일을 업로드할 때는 확실히 포함됩니다. 테스트의 주석 내용은 다음과 같습니다: “금액은 계산서와 비교하여 확인해 주세요. 이전 값은 138000 EUR였습니다.”
변경 이력(Änderungsverlauf). 추적 기능(Nachverfolgung)이 활성화된 경우, word/document.xml에는 보이는 텍스트 옆에 <w:ins>와 <w:del> 표시가 있습니다. 중요한 것은 삭제 내용입니다. 이는 <w:delText>로 저장되며, 창에서 더 이상 보이지 않더라도 이전 값을 유지합니다. 테스트 파일에서는 이 값이 숫자 138000 EUR이며, 주석에 있는 값과 동일합니다.
시트 상태(Blattzustände). Excel 통합 문서의 경우, xl/workbook.xml에는 각 시트에 하나의 상태가 기록되어 있습니다. 테스트 파일의 두 시트는 숨겨져 있습니다: 'Intern'은 hidden 상태이고, 'Kalkulation'은 veryHidden 상태입니다. 첫 번째는 표시 메뉴를 통해 복구할 수 있지만, 두 번째는 그곳에 나타나지 않는 상태 값을 가집니다. 'Intern' 시트에는 고객 이름, 담당자, 전화번호가 있습니다.
Vier Bestandteile, die im Archiv liegen und im Fenster nicht auftauchen
네 가지 구성 요소의 자체 표현입니다. 이 이미지는 특정 서비스의 측정 결과를 보여주지 않습니다.
검증: 추출 결과(Verifikation: was das Auslesen ergeben hat)
다음 프로토콜은 두 테스트 파일을 대상으로 실행한 결과에서 가져왔습니다:
Datei: beispiel-angebot.docx (아카이브 내 18개 부분)
docProps/core.xml 작성자: M. Keller
docProps/core.xml 마지막으로 수정한 사람: S. Brandt
...
여기서 관찰된 세 가지 점:
- 삭제된 금액인 '138000 EUR'가 여전히 파일에 남아 있습니다. 창에서 찾아봐도 찾을 수 없습니다.
- 편집한 사람들의 이름이 파일의 일부를 구성하고 있지만, 아무도 텍스트에 작성하지 않았습니다.
- 숨겨진 시트(Sheet)인 'Intern'에는 공유할 때 누구도 함께 보내고 싶지 않은 정확한 정보가 담겨 있습니다.
Was das Fenster zeigt und was im Archiv steht
비교 비교에 대한 자체 설명입니다. 이 이미지는 특정 서비스의 측정 결과를 보여주지 않습니다.
문제 해결: 반복되는 네 가지 패턴
보이는 텍스트만 확인하세요. 창 안의 단락은 깨끗합니다. 아카이브는 그렇지 않습니다.
변경 사항을 수락하거나 거부하지 마세요. 추적된 변경 사항(Tracked changes)은 추적 기능을 끄기만 한다고 사라지지 않습니다. 삭제 내용을 제거하려면 수락 또는 거부를 해야 합니다.
댓글에 포함된 이전 값을 간과하다. 테스트에서는 텍스트에서 제거된 숫자가 옆의 댓글에 남아 있습니다.
숨겨진 시트를 삭제된 것으로 오해하다. 'hidden' 및 'veryHidden'은 상태일 뿐, 삭제가 아닙니다. 데이터는 아카이브 내에 계속 존재합니다.
제가 확인하지 않은 것들
로그(Log)는 파일에 무엇이 들어있는지 보여줍니다. 특정 서비스가 그것을 어떻게 읽는지, 얼마나 오래 저장하는지, 그리고 모델 개선에 사용하는지는 보여주지 않습니다. 이것은 세 가지 별개의 질문이며, 마지막 두 가지에 대해서 이 로그는 증거가 될 수 없습니다.
PDF 내보내기(Export)를 통한 경로는 확인되지 않았습니다. 그곳에도 작성자 정보가 남아있는지는 측정하지 않았으며 따라서 주장하지도 않습니다.
프로토콜은 모델 자체에 대해서는 아무것도 말해주지 않습니다. 파일이 그것을 기억하지 못한다는 사실은 이 실행(run)에서 나온 것이 아니라, 그것이 어떻게 작동하는지를 통해 추론됩니다.
전송 전에 도움이 되는 것들
검사는 한 문장으로 요약할 수 있습니다. 창에 보이는 모든 것이 파일이 포함하고 있는 전부인 것은 아닙니다. 여러 도구(Werkzeuge)를 사용하는 경우, 도달 범위(Reichweite) 및 엔드포인트(Endpunkt) 설정은 각 도구의 다른 위치에서 찾을 수 있습니다. 이러한 설정의 예시로는 Codex-CLI 가이드가 있습니다. 호출 자체에 대해서는 통일된 엔드포인트를 설정할 수 있습니다. 저는 이를 위해 Crazyrouter를 사용하는데, 이는 호출하는 위치를 건드리지 않고도 모델을 변경할 수 있게 해주기 때문입니다.
문장의 두 번째 부분은 여전히 중요합니다. 게이트웨이(Gateway)는 같은 경로에 존재하며 동일한 텍스트를 읽습니다. Crazyrouter는 다른 모든 중간 스테이션과 마찬가지로 같은 길 위에 있습니다. 이는 복사본이 발생하는 조건을 바꿀 뿐, 복사본 자체가 발생한다는 사실 자체는 바꾸지 못합니다.
교환 (공유)
이미 파일을 전송했는데 나중에 주석이나 숨겨진 시트가 함께 갔다는 것을 깨달은 적이 있는 분들은 어느 지점에서 이를 확인하시나요?
출처 기준일: 2026년 10월 22일. 테스트 파일은 이 날 생성 및 읽혔으며, 위의 프로토콜은 이 실행의 출력입니다. 저장 기간(Speicherfristen)과 학습 조건(Trainingsbedingungen)은 제공업체마다 다르므로, 요청이 실제로 도착하는 곳에서 확인해야 합니다.