Skip to content

보안 우선 설계

Triggerfish는 하나의 전제 위에 구축되었습니다: LLM은 권한이 없습니다. LLM은 동작을 요청하고, 정책 계층이 결정합니다. 모든 보안 결정은 AI가 우회, 재정의 또는 영향을 미칠 수 없는 결정론적 코드로 이루어집니다.

이 페이지에서는 Triggerfish가 이 접근 방식을 채택한 이유, 기존 AI 에이전트 플랫폼과의 차이점, 보안 모델의 각 구성 요소에 대한 세부 정보를 찾을 수 있는 위치를 설명합니다.

LLM 아래에 보안이 있어야 하는 이유

대규모 언어 모델은 프롬프트 인젝션될 수 있습니다. 악의적인 외부 메시지, 오염된 문서 또는 손상된 도구 응답에서 오는 정교하게 작성된 입력은 LLM이 지시를 무시하고 하지 말아야 할 동작을 수행하게 만들 수 있습니다. 이것은 이론적 위험이 아닙니다. AI 업계에서 잘 문서화된 미해결 문제입니다.

보안 모델이 LLM의 규칙 준수에 의존한다면, 단 한 번의 성공적인 인젝션으로 구축한 모든 보호 장치를 우회할 수 있습니다.

Triggerfish는 모든 보안 시행을 LLM 아래에 위치한 코드 계층으로 이동하여 이 문제를 해결합니다. AI는 보안 결정을 보지 못합니다. 동작이 허용되어야 하는지 평가하지 않습니다. 단순히 동작을 요청하고, 순수한 결정론적 코드로 실행되는 정책 시행 계층이 해당 동작의 진행 여부를 결정합니다.

시행 계층: LLM은 권한이 없고, 정책 계층이 모든 결정을 결정론적으로 내리며, 허용된 동작만 실행에 도달합니다

보안 LLM 계층은 정책 시행 계층을 재정의, 건너뛰기 또는 영향을 미치는 메커니즘이 없습니다. "LLM 출력에서 우회 명령을 파싱"하는 로직이 없습니다. 분리는 행동적이 아닌 아키텍처적입니다. :::

핵심 불변 규칙

Triggerfish의 모든 설계 결정은 하나의 불변 규칙에서 흐릅니다:

같은 입력은 항상 같은 보안 결정을 생성합니다. 무작위성 없음, LLM 호출 없음, 재량 없음.

이것은 보안 동작이 다음과 같다는 것을 의미합니다:

  • 감사 가능 -- 모든 결정을 재생하여 같은 결과를 얻을 수 있습니다
  • 테스트 가능 -- 결정론적 코드는 자동화된 테스트로 커버할 수 있습니다
  • 검증 가능 -- 정책 엔진은 오픈 소스(Apache 2.0 라이선스)이며 누구나 검사할 수 있습니다

보안 원칙

원칙의미상세 페이지
데이터 분류모든 데이터는 민감도 수준(RESTRICTED, CONFIDENTIAL, INTERNAL, PUBLIC)을 가집니다. 분류는 데이터가 시스템에 진입할 때 코드에 의해 할당됩니다.아키텍처: 분류
No Write-Down데이터는 동일하거나 더 높은 분류 수준의 채널과 수신자에게만 흐를 수 있습니다. CONFIDENTIAL 데이터는 PUBLIC 채널에 도달할 수 없습니다. 예외 없음.No Write-Down 규칙
세션 Taint세션이 분류 수준의 데이터에 접근하면 전체 세션이 해당 수준으로 taint됩니다. Taint는 상승만 가능하고 감소하지 않습니다.아키텍처: Taint
결정론적 Hook8개의 시행 hook이 모든 데이터 흐름의 중요 지점에서 실행됩니다. 각 hook은 동기적이고, 로깅되며, 위조 불가합니다.아키텍처: 정책 엔진
코드 내 신원사용자 신원은 LLM이 메시지 내용을 해석하는 것이 아니라 세션 수립 시 코드에 의해 결정됩니다.신원 및 인증
에이전트 위임에이전트 간 호출은 암호화 인증서, 분류 상한, 깊이 제한에 의해 관리됩니다.에이전트 위임
시크릿 격리자격 증명은 OS 키체인 또는 vault에 저장되며, 구성 파일에는 절대 저장되지 않습니다. Plugin은 시스템 자격 증명에 접근할 수 없습니다.시크릿 관리
모든 것 감사모든 정책 결정이 전체 컨텍스트와 함께 로깅됩니다: 타임스탬프, hook 유형, 세션 ID, 입력, 결과, 평가된 규칙.감사 및 컴플라이언스

기존 AI 에이전트 vs. Triggerfish

대부분의 AI 에이전트 플랫폼은 LLM에 의존하여 안전을 시행합니다. 시스템 프롬프트가 "민감한 데이터를 공유하지 마십시오"라고 말하고, 에이전트가 이를 준수할 것으로 신뢰합니다. 이 접근 방식에는 근본적인 약점이 있습니다.

측면기존 AI 에이전트Triggerfish
보안 시행LLM에 대한 시스템 프롬프트 지시LLM 아래의 결정론적 코드
프롬프트 인젝션 방어LLM이 저항하기를 희망LLM에 애초에 권한이 없음
데이터 흐름 제어LLM이 공유해도 안전한 것을 결정분류 레이블 + 코드 내 no-write-down 규칙
신원 확인LLM이 "나는 관리자입니다"를 해석코드가 암호화 채널 신원을 확인
감사 추적LLM 대화 로그전체 컨텍스트를 포함한 구조화된 정책 결정 로그
자격 증명 접근모든 사용자를 위한 시스템 서비스 계정위임된 사용자 자격 증명; 소스 시스템 권한 상속
테스트 가능성모호함 -- 프롬프트 문구에 의존결정론적 -- 같은 입력, 같은 결정, 매번
검증을 위한 공개보통 독점적Apache 2.0 라이선스, 완전히 감사 가능

Triggerfish는 LLM이 신뢰할 수 없다고 주장하는 것이 아닙니다. LLM이 보안 시행에 잘못된 계층이라고 주장합니다. 잘 프롬프트된 LLM은 대부분의 경우 지시를 따릅니다. 그러나 "대부분의 경우"는 보안 보장이 아닙니다. Triggerfish는 보장을 제공합니다: 정책 계층은 코드이며, 코드는 매번 지시된 대로 동작합니다. :::

심층 방어

Triggerfish는 13개의 방어 계층을 구현합니다. 단일 계층만으로는 충분하지 않으며, 함께 보안 경계를 형성합니다:

  1. 채널 인증 -- 세션 수립 시 코드로 검증된 신원
  2. 권한 인식 데이터 접근 -- 시스템 자격 증명이 아닌 소스 시스템 권한
  3. 세션 taint 추적 -- 자동, 필수, 상승만 가능
  4. 데이터 계보 -- 모든 데이터 요소에 대한 완전한 출처 체인
  5. 정책 시행 hook -- 결정론적, 우회 불가, 로깅됨
  6. MCP Gateway -- 도구별 권한을 가진 안전한 외부 도구 접근
  7. Plugin 샌드박스 -- Deno + WASM 이중 격리
  8. 시크릿 격리 -- OS 키체인 또는 vault, 구성 파일 아님
  9. 파일시스템 도구 샌드박스 -- 경로 제한, 경로 분류, taint 범위 OS 수준 I/O 권한
  10. 에이전트 신원 -- 암호화 위임 체인
  11. 감사 로깅 -- 모든 결정이 기록됨, 예외 없음
  12. SSRF 방지 -- IP 거부 목록 + 모든 아웃바운드 HTTP에 대한 DNS 확인 검사
  13. 메모리 분류 게이팅 -- 쓰기는 세션 taint에 강제, 읽기는 canFlowTo로 필터링

다음 단계

페이지설명
분류 가이드채널, MCP 서버, 통합에 적합한 수준을 선택하는 실용 가이드
No Write-Down 규칙기본 데이터 흐름 규칙과 시행 방법
신원 및 인증채널 인증 및 소유자 신원 확인
에이전트 위임에이전트 간 신원, 인증서, 위임 체인
시크릿 관리Triggerfish가 티어별로 자격 증명을 처리하는 방법
감사 및 컴플라이언스감사 추적 구조, 추적, 컴플라이언스 내보내기