이득:
- AI 관련 공격 표면(즉시 주입, 데이터 중독, 기밀 데이터 유출, 회원 추출)을 인식하고 계층화된 방어를 설계하는 능력
- 개인 정보 보호를 설계 원칙으로 적용하는 기능: 데이터 최소화, 마스킹, 액세스 제어 및 보존 기간
- 방어 목적으로만 보안 작업을 수행하고, 책임감 있게 취약점을 공개하고, 무단 사용을 방지하는 능력
기계 학습 시스템은 기존 소프트웨어의 모든 보안 위험을 수용하고 고유한 새로운 공격 표면을 추가합니다. 모델은 입력에 의해 속일 수 있고, 학습 데이터가 오염될 수 있으며, 기밀 정보가 출력으로 유출될 수 있습니다. 이 단원에서는 공격 인식, 시스템 강화, 개인 정보 보호 등 방어 관점에서 AI 시스템을 고려합니다. 이 정보는 무단 액세스나 공격을 위한 것이 아니라 귀하의 시스템을 안전하게 유지하기 위한 것입니다.
AI 관련 공격 표면
ML 시스템은 전통적인 보안(인증, 권한 부여, 암호화) 외에도 다음에 취약합니다.
- 프롬프트 주입: LLM에 대한 입력에 숨겨진 명령이 모델을 놓쳤습니다. 가장 일반적이고 가장 실용적인 LLM 보안 위험입니다.
- 데이터 오염: 공격자는 훈련 데이터에 잘못된 샘플을 삽입하여 모델에 숨겨진 백도어나 편향을 도입합니다.
- 모델 추론 및 반전: 공격자는 모델에 여러 쿼리를 보내 훈련 데이터 또는 모델 동작을 재구성합니다.
- 회원 추론: 특정 개인의 데이터가 교육에 사용되는지 여부를 추론하는 것은 개인정보 침해입니다.
- 민감한 데이터 유출: 모델은 출력의 학습 데이터에 있는 기밀 정보(이름, 신원, 비밀)를 공개합니다.
이러한 각 위험에 대한 방어책이 있습니다. 핵심은 설계 단계에서 위험을 고려하는 것입니다.
즉각적인 주입: 가장 즉각적인 위협
프롬프트 주입에는 두 가지 유형이 있습니다.
- 직접: 사용자가 "이전 지시 사항 무시" 등의 텍스트를 직접 입력합니다.
- 간접: 잘못된 지침은 모델이 처리하는 외부 컨텍스트(웹 페이지, 문서, 이메일)에 숨겨져 있습니다. 모델이 외부 콘텐츠를 안정적으로 처리하므로 상담원과 RAG에게 특히 위험합니다.
방어 계층:
- Parsing: Separate system instruction and user/external data with clear delimiters; 외부 콘텐츠를 "명령이 아닌 데이터"로 표시합니다.
- 최소 출력: 모델이 포획되더라도 모델이 입힐 수 있는 피해량을 제한합니다(유닛 5의 차량 출력).
- 출력 제어: 모델을 사용하기 전에 모델이 생성하는 내용을 확인하십시오. 특히 모델이 작업으로 변환되는 경우 더욱 그렇습니다.
- 사람의 승인: 위험도가 높은 작업을 승인과 연결합니다.
주의: 단일 방어로는 프롬프트 주입을 완전히 해결할 수 없습니다. 계층화된 방어(심층 방어)가 필요합니다. 중요한 가정: "모델이 어느 시점에서 속일 수 있습니다. 그렇다면 모델이 속으면 일어날 수 있는 최악의 상황은 무엇이며 이를 어떻게 제한합니까?"
약한 접근 / 강력한 접근
약함: "시스템 프롬프트에 '잘못된 지침 무시'를 입력했는데 안전합니다."
Strong: "우리는 <data> 태그로 외부 콘텐츠를 래핑하고 '내부 지침 무시'라고 말했습니다. 또한 모델의 도구를 최소한의 승인으로 제한하고, 되돌릴 수 없는 작업을 사람의 승인에 연결하고, 모든 도구 호출을 기록하고, 사용 전에 출력을 규칙 검사에 적용했습니다. 우리는 단일 방어가 아닌 레이어에 의존합니다."
차이점: 강력한 접근 방식은 한 줄 명령으로는 충분하지 않다는 것을 알고 손상을 제한하는 레이어를 구축합니다.
개인정보 보호: 데이터는 처음부터 보호됩니다.
개인정보 보호는 나중에 추가되는 기능이 아니라 설계 원칙(개인정보 보호 설계)입니다. 기본 응용 프로그램:
- 데이터 최소화: 필요 이상으로 많은 개인 데이터를 수집하고 저장하지 마십시오. 수집되지 않은 데이터는 유출될 수 없습니다.
- 익명화 및 마스킹: 모델에 제공하기 전에 개인 식별자(이름, ID, 이메일)를 마스킹하거나 제거합니다.
- 접근 제어: 데이터와 모델에 접근하는 사람을 제한하고 기록합니다(장치 4의 RAG 접근 제어).
- 보존 기간: 정책에 따라 데이터를 보존하는 기간을 결정합니다. 만료된 것을 삭제하세요.
차등 개인 정보 보호(훈련 중에 제어된 노이즈를 추가하여 단일 개인의 데이터가 출력에 큰 영향을 미치지 않도록 하는 기술) 및 연합 학습(데이터를 중앙으로 이동하지 않고 장치에서 훈련하는 접근 방식)은 고급 개인 정보 보호 기술입니다. 민감한 데이터로 작업할 때 고려해야 합니다.
팁: 데이터를 처리하기 전에 "이 개인 데이터가 유출되면 누가 어떤 피해를 입게 될까요?"라고 질문하세요. 피해가 심각한 경우 아예 자료를 수집하지 않거나 마스킹 처리하는 등의 조치를 취해야 한다. 가장 안전한 데이터는 수집된 적이 없는 데이터입니다.
훈련 데이터 및 모델 공급망 보안
모델만큼 사용하는 구성 요소도 안전 문제입니다.
- 데이터 소스 신뢰: 훈련 데이터를 신뢰할 수 있습니까, 아니면 오염될 수 있습니까? 공개 데이터 세트를 감사합니다.
- 타사 모델 및 라이브러리: 다운로드한 사전 훈련된 모델 또는 종속성은 악성일 수 있습니다. 소스, 서명, 알려진 취약점을 확인하세요.
- 공급망: ML 파이프라인의 모든 도구와 패키지는 신뢰의 링크입니다. 당신은 가장 약한 고리만큼 안전합니다.
책임 있는 공개와 윤리적 경계
자신의 시스템이나 공급업체 시스템에서 취약점을 발견한 경우 올바른 방법은 책임 있는 공개입니다. 즉, 관련 당사자에게 취약점을 비공개로 보고하고 이를 악용하거나 유포하지 않고 해결할 시간을 주는 것입니다. 무단 접근, 데이터 유출 또는 타인의 시스템에 대한 무단 개입을 위해 인공 지능이나 획득한 보안 정보를 사용하는 것은 불법이며 직업 윤리에 위배됩니다. 이 모듈의 보안 콘텐츠는 전적으로 방어, 탐지 및 강화 목적을 위한 것입니다.
세 개의 미니 케이스
사례 1 - 간접 주입의 한계. RAG 지원 봇이 웹 콘텐츠를 렌더링하고 있었습니다. 숨겨진 지시 사항이 한 페이지에 묻혀있었습니다. 모델은 부분적으로 속았지만 봇에는 쓰기 권한(최소 권한)이 없었고 출력은 사용자에게 표시되기 전에 규칙 검사를 거쳤습니다. 유해한 것으로 판명되어 잡혔습니다. 계층화된 방어로 단일 장애가 재난으로 이어지는 것을 방지했습니다.
사례 2 - 기밀 데이터 유출. 세부 조정된 고객 지원 팀은 모델을 마스킹하지 않고 모델에 로그인합니다(단위 6). 모델은 관련 없는 질문에서 실제 고객 이름을 생성하기 시작했습니다. 회원탈퇴 위험도 있었다. 모델 철회, 데이터 마스킹, 보존 정책 수정. 교훈: 기밀 데이터는 교육에 포함되어서는 안 됩니다.
사례 3 - 유독한 데이터 세트. 한 팀은 공개적으로 사용 가능한 데이터 세트를 감사하지 않고 교육했습니다. 특정 유발 단어(백도어)를 보았을 때 모델을 속이는 독성 샘플이 세트에 있었습니다. 감사 및 이상 검색을 추가한 후 이러한 샘플이 캡처되었습니다. 교훈: 데이터 소스를 확인하세요. 맹목적으로 신뢰하지 마세요.
복사 가능한 템플릿
Check this LLM/agent system for prompt injection.- Are system instructions and user/external data clearly separated?- Is external content marked as "data" or is it handled as a command?- What is the worst that would happen if the model is fooled (authorization limit)?- Are irreversible actions subject to human approval?- Is the output inspected before use?System: [description]. 계층화된 방어적 결함을 나열하십시오.
이 데이터 처리 흐름의 기밀성을 감사합니다.- 수집된 각 개인 필드가 실제로 필요한가요(최소화)?- 모델로 전송되는 데이터에서 어떤 필드를 마스킹해야 합니까?- 액세스 제어 및 로깅이 있습니까?- 보존 기간이 정의되어 있습니까?흐름: [설명]. 각 결함에 대한 수정을 제안합니다.
이 텍스트에서 모델에 전송하기 전에 마스킹해야 하는 개인 데이터를 찾으세요. 항목: 이름, 이메일, 전화번호, 신분증/여권번호, 주소, 카드번호, IP. 유형 및 권장 마스크와 함께 각 결과를 나열합니다. 텍스트의 나머지 부분을 바꾸지 마십시오.텍스트: [text]
이 타사 모델/라이브러리를 프로덕션에 적용하기 전에 보안 체크리스트를 생성하십시오.- 소스 및 게시자를 신뢰할 수 있고 서명이 확인되었습니까?- 알려진 취약점(CVE)이 스캔되었습니까?- 어떤 권한/액세스가 필요합니까? 최소화할 수 있습니까?구성 요소: [이름/소스]
위험 방어 테이블
위험
방어
레이어
신속한 주사
구문 분석 + 최소 권한 + 출력 제어
디자인 + 런타임
데이터 중독
소스 제어 + 이상 징후 검색
데이터 라인
기밀 데이터 유출
마스킹 + 데이터 최소화
데이터 + 훈련
회원 추출
차등 프라이버시
교육
과도한 권한
최소 승인 + 승인
에이전트 디자인
공급망
부품 검사 + 서명
중독
일반적인 실수
- 프롬프트 주입을 한 줄로 해결했다고 생각하면 됩니다. 다층방어는 필수입니다.
- 기밀 데이터를 마스킹하지 않고 처리/훈련합니다. 모델에 영구적으로 침투합니다.
- 외부 콘텐츠를 신뢰할 수 있다고 생각합니다. 간접 주입 게이트.
- 데이터 소스를 확인하지 않습니다. 중독은 눈에 띄지 않습니다.
- 타사 구성 요소를 맹목적으로 신뢰합니다. 공급망 격차.
- 나중에 프라이버시가 추가될 것이라고 생각합니다. 디자인부터 시작해야 합니다.
요약하면
AI 시스템은 전통적인 보안 위험 외에도 신속한 주입, 데이터 중독, 기밀 데이터 유출, 회원 추출 등 독특한 위협을 안고 있습니다. 그 중 어느 것도 단일 조치로 해결될 수 없습니다. 계층화된 방어(구문 분석, 최소 권한 부여, 출력 제어, 사람 승인)가 필요합니다. 개인 정보 보호는 설계 원칙입니다. 즉, 데이터를 최소화하고, 마스킹하고, 액세스를 제한하고, 보존 기간을 지정합니다. 구성요소 및 데이터 공급망을 제어합니다. 이 모든 정보는 방어, 탐지 및 통합을 위한 것입니다. 취약점을 책임감 있게 설명하고 절대 악용하지 마십시오.
응용과제
Check an LLM/agent system (your own project or example) for prompt injection: are system instructions and external data separated, what is the authorization limit if the model is tricked, are irreversible actions confirmed? 최소한 두 개의 방어 계층을 추가하십시오. 별도로 모델로 이동하는 샘플 데이터에서 마스킹해야 하는 개인 필드를 찾아 마스킹합니다. 사용하는 타사 구성 요소의 소스와 알려진 취약점을 확인하세요.
체크리스트
- [ ] System instruction and external/user data are clearly separated.
- [ ] 외부 콘텐츠는 명령이 아닌 데이터로 표시됩니다.
- [ ] 모델이 속아도 피해는 최소한의 권한으로 제한됩니다.
- [ ] 개인정보는 마스킹/최소화됩니다. 저장 기간이 정의되었습니다.
- [ ] 데이터 소스 및 타사 구성 요소가 확인되었습니다.
- [ ] 내 보안 업무는 방어 목적입니다. 나는 책임감있게 격차를 설명합니다.