
에이전트형 AI를 위한 스테가노그래픽 프롬프트 인젝션 방어로, 디코드 시점 출처 바인딩, HMAC 인증, MCP 신뢰 적용을 사용합니다.
텍스트 콘텐츠 스캐너를 무력화하는 스테가노그래피 프롬프트 주입 벡터와, 이를 디코드 경계에서 억제하는 방어 기법인 디코드 시점 출처 바인딩에 대한 재현 가능한 개념 증명입니다.
교육 및 방어적 보안 연구 전용입니다. 이 저장소의 모든 비밀 값은 가짜입니다. 소유하거나 테스트 권한이 있는 시스템에서만 사용하십시오.
공격자가 피해자에게 평범해 보이는 이메일을 보냅니다. 이메일 서명에 있는 브랜드 로고가 스테가노그래피(LSB, DCT 또는 메타데이터)를 통해 명령을 숨깁니다. 이미지는 원본과 시각적으로 동일하고 의심스러운 텍스트도 포함하지 않으므로 콘텐츠 스캐너는 아무것도 보지 못하며 피해자는 아무것도 클릭하지 않습니다. 그러나 피해자의 일상적인 받은편지함 요약 에이전트가 서명을 처리하고, 파이프라인의 도구가 이미지를 디코드하며, 숨겨진 명령이 에이전트의 컨텍스트에 들어갑니다. 여기서 다중 에이전트 MCP 파이프라인에서는 신뢰할 수 있는 피어 출력으로 에이전트 간에 전달되어 중요한 도구 호출을 유도합니다. 이것이 교차 모달 신뢰 세탁입니다. 방어 기법인 디코드 시점 출처 바인딩은 은닉을 역전하는 도구가 실행되는 순간 HMAC으로 서명된 UNTRUSTED 레이블을 발급하고, MCP 계층이 출처 계보 자체를 유지하도록 하여, 손상된 에이전트가 무관한 신뢰 값에 대해 유효한 레이블을 제시하더라도 계보가 신뢰되지 않는 모든 중요한 도구 호출을 차단합니다. 이는 탐지가 아니라 억제하므로 페이로드 문구와 캐리어에 독립적입니다.
공격 성공률(ASR) — 24개 페이로드(세 가지 캐리어 × 여덟 가지 회피 기법: 평문, 무해한 문구, Base64, 토큰 분할, 키릴 문자 동형 문자, 제로 폭 문자, 유니코드 혼동 문자, HTML 주석). 낮을수록 좋습니다. 프로세스 내 오염(taint) 기준선은 디코드 출력을 신뢰할 수 없음으로 표시하지만 교차 도메인 암호학적 바인딩은 수행하지 않는 정보 흐름 제어입니다:
| 방어 기법 | 유출 | n | ASR |
|---|---|---|---|
| 무방비(검사 없음) | 24 | 24 | 100% |
| 콘텐츠 스캐너(키워드/DLP) | 15 | 24 | 62.5% |
| 정규식 의도 파서 | 15 | 24 | 62.5% |
| 데이터 흐름 오염(IFC 기준선) | 0 | 24 | 0% |
| 디코드 시점 출처(제안 기법) | 0 | 24 | 0% |
오염과 출처는 단일 도메인 ASR에서 동률이지만, 적대적 중계(아래)에서는 갈라지며, 이것이 암호학적 바인딩의 핵심입니다.
유효 레이블 대체 — 손상된 에이전트가 실제로 호출을 유도하는 UNTRUSTED 디코드 출처를 생략하면서, 무해한 도구에서 정당하게 서명된 TRUSTED 바인딩을 제시합니다. 해결책은 MCP 계층이 계보 자체를 유지하고 에이전트가 제공한 바인딩이 아니라 자체 원장에 따라 결정하는 것입니다:
| 적용 방식 | 결정 |
|---|---|
| 에이전트 제공 바인딩만 사용(순진한 방식) | 허용(유출) |
| 계층 유지, 의존성 누락 | 차단 |
| 계층 유지, 인자에 의존성 포함 | 차단 |
| 계층 유지, 깨끗한 컨텍스트 | 허용 |
구성 요소 제거 실험 — 각각 서로 다른 공격을 방어하는 네 가지 구성 요소입니다. 한 번에 하나씩 비활성화합니다. substitution은 도메인 내 공격이고, forged relay는 제시된 바인딩만 보유한 원격 검증자에게 신뢰할 수 없는 중계를 거쳐 전달되는 위조된 TRUSTED 레이블입니다. 결정적으로, HMAC만으로는 대체를 막지 못하며(원장이 막음), 원장만으로는 교차 도메인 중계를 견디지 못합니다(HMAC이 견딤):
| 구성 | 정직 | 대체 | 위조 릴레이 |
|---|---|---|---|
| 전체 메커니즘 | 차단됨 | 차단됨 | 차단됨 |
| − 디코드 표시 | 누출됨 | 누출됨 | 누출됨 |
| − 암호화 인증 (HMAC) | 차단됨 | 차단됨 | 누출됨 |
| − 신뢰 계보 추적 | 차단됨 | 누출됨 | 차단됨 |
| − 싱크 중재 | 누출됨 | 누출됨 | 누출됨 |
교차 컨텍스트 전파 — 오염(taint)은 도구 반환 핸들뿐 아니라 에이전트 간 메시지 경계를 넘어서도 유지된다. 에이전트 A의 신뢰할 수 없는 디코드가 에이전트 B의 별도 컨텍스트에 있는 중요 호출에 도달하며, 중재된 채널(위협 모델이 이미 에이전트 간 통신에 요구하는)에서는 오염이 전파되어 B가 차단된다. 계층이 중재하지 않는 채널은 설계상 모델 범위 밖이며, 범위 내의 누출이 아니다:
| 채널 A → B | B의 중요 호출 |
|---|---|
| 중재된 에이전트 간 메시지 (범위 내) | 차단 (오염 전파됨) |
| 중재되지 않은 부채널 (모델 범위 밖) | 해당 없음 |
오버헤드 확장성 — MintBinding은 ~O(1)이며(깊이와 무관하게 ~10–14 µs);
EnforceCritical은 순회하는 의존성 폐쇄에 대해 선형이며(깊이 1에서 ≈10 µs →
깊이 100에서 ≈0.66 ms → 깊이 1000에서 ≈6.7 ms), 동시 오염 컨텍스트 수에 대해서는
평탄하다(~6–7 µs). 현실적인 폐쇄(깊이가 수십 수준)는 ~0.1 ms 미만으로 유지된다.
정당한 작업 유용성 — 감사된 신뢰 승격 경로(예: OCR된 인보이스 번호와 같은 특정 디코드 값을 권한 부여 하에 재라벨링)는 공격이 차단된 상태를 유지하면서 오탐 차단을 제거한다:
| 체제 | 완료 | 오탐 차단 | 공격 차단됨 |
|---|---|---|---|
| 승격 없음 | 2/3 (67%) | 1 | 예 |
| 신뢰 승격 | 3/3 (100%) | 0 | 예 |
디코드 집합 완전성 — 등록 가정을 직접적으로 검증:
| 디코드 집합 | 스테고 공격 | 정당한 중요 호출 |
|---|---|---|
| 정확함 | 차단됨 | 허용됨 |
| 디코더 누락 | 누출됨 | 허용됨 |
| 과도하게 광범위함 | 차단됨 | 오탐 차단 |
핸드오프 간 라벨 무결성 — 바인딩은 정직한 릴레이를 거쳐도 유지되며 침해된 워커에 저항한다:
| 릴레이 시나리오 | 검증자 결정 |
|---|---|
| 정직한 릴레이, 1 / 3 / 5 / 10 홉 | 검증됨; 차단됨 |
| 침해됨: 페이로드 재작성, HMAC 유지 | 차단 (HMAC 불일치) |
침해됨: TRUSTED 위조 | 차단 (HMAC 불일치) |
| 침해됨: 바인딩 제거 | 차단 (유효한 라벨 없음) |
오버헤드 — 결정 지점에서는 사실상 무료: 바인딩 발급과 검증은 각각 ~8–9 µs (합계 ~17 µs)로, ~11 ms의 디코드 도구 호출에 비해 ~0.2% 미만이 추가된다. 캐리어 왜곡은 낮다(LSB ≈ 76 dB PSNR, 메타데이터 무손실; DCT ≈ 18 dB — 지각적 비인지성 주장이 아닌 왜곡 지표).
stego_provenance_defense_poc.ipynb # the full PoC (run top-to-bottom)
requirements.txt # dependencies (mcp pinned <2)
노트북을 실행하면 모든 그림, 표, CSV가 Colab에서는
MyDrive/stego_provenance_poc/{figures,tables,data}에, 로컬에서는
./stego_provenance_poc/에 기록됩니다. 모든 그림과 표는 셀에 의해 생성되므로,
전체 과정은 깨끗한 실행으로부터 재현 가능합니다.
stego_provenance_defense_poc.ipynb를 엽니다.MyDrive/stego_provenance_poc/{figures,tables,data} 아래에 나타납니다.pip install -r requirements.txt
jupyter notebook stego_provenance_defense_poc.ipynb
출력은 ./stego_provenance_poc/에 저장됩니다. GPU는 선택 사항이며(에이전트 모델이 작음), 보안 결과는 모델에 의존하지 않습니다.
이 방어는 흔히 혼동되는 두 가지 보장을 결합하며, 기여는 HMAC 단독이 아니라 이 둘의 결합에 있습니다:
MCP 레이어에서의 두 가지 결정적 연산으로, 레이어 자체가 계보를 유지합니다:
UNTRUSTED인 경우(전염성) trust = UNTRUSTED로 {payload, tool, trust, provenance, deps}를 스탬프하고, 해석된 입력 의존성 deps를 기록하며, HMAC_k(payload‖tool‖trust‖provenance‖deps)로 서명하고, 레이어의 원장에 기록하며, (신뢰할 수 없는 경우) 컨텍스트의 오염 집합에 추가합니다.UNTRUSTED 데이터 출처, 또는 비어 있지 않은 컨텍스트 오염 중 하나라도 있으면 차단하며, 그렇지 않으면 허용합니다. 계보를 에이전트가 아닌 레이어가 보유하므로, 침해된 에이전트는 신뢰할 수 없는 의존성을 생략하여 숨길 수 없습니다.보안 불변식. (i) 키가 MCP 레이어에 격리되고, (ii) 디코드 도구가 완전히 등록되며, (iii) 모든 중요 호출이 중재되고, (iv) 레이어가 각 호출의 완전한 계보(해석된 인자 의존성 + 각 컨텍스트에 진입하는 디코드 출처)를 기록한다는 조건 하에서: 감사된 신뢰 승격이 해당 특정 출처를 클리어하지 않는 한, 전이적 계보(데이터 또는 컨텍스트)에 UNTRUSTED 디코드 출처가 포함된 중요 도구 호출은 실행되지 않습니다.
교육 및 방어적 보안 연구를 위해 공개되었습니다. LICENSE를 참조하세요.