# Jev를 사용하여 프롬프트 주입 공격 방지 테스트를 진행했다.

> https://bookfactory.kr/board/news/17826
> 게시판: 뉴스
> 작성자: admin
> 작성일: 2026-09-19T17:12:54.906Z

---

![見出し画像](https://assets.st-note.com/production/uploads/images/315213946/rectangle_large_type_2_1f78e00a7e12bd5800002b39de9661ed.png?width=1280)

이번에는 고속 판단에 특화된 AI인 TypeSafe의 “Jev”를 사용하여 프롬프트 인젝션 방지 가능성을 검증해 보았습니다.

제브는 일반적인 LLM과 달리 텍스트 생성을 대신하여 “입력에 대한 판단”에 특화된 AI입니다. 주요 특징은 다음과 같습니다.

- 매우 빠른 속도: 지연 시간은 70~500ms 정도로, TypeSafe 공식 자료에 따르면 주요 LLM의 3초~329초에 비해 40~200배 정도 빠릅니다.
- 압도적인 저 비용: 100만 토큰당 0.042달러(약 6.5원)로, 매우 저렴합니다.
- 답변은 생성하지 않습니다. 지정된 기준에 따라 “판단(확률)”만을 제시합니다.

제브에 대한 자세한 내용은 다음 기사가 이해하기 쉽습니다.

판단 처리에 완전히 몰입할 수 있도록 설계되어, 안전 장치나 사전 처리를 위한 매우 유용한 설계입니다.

이번에는 이 특징을 활용하여 사용자로부터 입력이 부적절한지 사전에 판단하는 “프롬프트 인젝션 방지 대책”으로 활용해 보았습니다.

본 기사의 최종 업데이트: 2026/9/19

## ## Jev 사용법

Jev는 간단한 단어의 의미를 빠르게 확인하고, 다양한 표현을 쉽게 익힐 수 있도록 설계된 앱입니다. Jev를 통해 여러분은 일본어 학습을 더욱 효율적으로 즐길 수 있습니다.

**1. 앱 실행 및 기본 인터페이스**

앱을 실행하면 다음과 같은 기본 인터페이스를 확인하실 수 있습니다.

*   **검색창:** 원하는 단어를 입력하여 검색할 수 있습니다.
*   **검색 결과:** 검색어와 관련된 단어, 예시 문장, 발음 등이 표시됩니다.
*   **저장된 단어:** Jev에 저장된 단어 목록을 확인할 수 있습니다.
*   **학습 기록:** 학습한 단어의 목록과 학습 시간 등을 확인할 수 있습니다.

**2. 단어 검색 및 정보 확인**

검색창에 원하는 단어를 입력하고 검색 버튼을 누르거나, 엔터 키를 누르면 해당 단어의 정보가 검색 결과에 표시됩니다.

*   **단어 의미:** 해당 단어의 기본적인 의미가 설명됩니다.
*   **예시 문장:** 해당 단어가 사용된 실제 문장이 제공되어 문맥 속에서 단어의 의미를 이해하는 데 도움이 됩니다.
*   **발음:** 해당 단어의 정확한 일본어 발음이 제공됩니다. (텍스트 또는 음성으로 확인 가능)
*   **관련 단어:** 해당 단어와 유사하거나 관련된 단어 목록이 제공됩니다.

**3. 단어 저장 및 학습**

검색 결과에서 원하는 단어를 선택하고 “저장” 버튼을 누르면 해당 단어가 Jev에 저장됩니다. 저장된 단어는 “저장된 단어” 목록에서 확인할 수 있으며, 학습 기록을 통해 학습 진행 상황을 관리할 수 있습니다.

**4. 학습 기능 활용**

Jev는 단어 암기 및 복습을 돕는 다양한 학습 기능을 제공합니다.

*   **플래시 카드:** 저장된 단어 목록을 플래시 카드 형태로 보여주어 단어의 의미를 암기하는 데 도움을 줍니다.
*   **퀴즈 모드:** 저장된 단어들을 퀴즈 형태로 출제하여 학습 효과를 높입니다.
*   **학습 목표 설정:** 매일 또는 매주 학습 목표를 설정하고 달성 여부를 확인하여 꾸준한 학습 습관을 형성할 수 있습니다.

**5. 추가 기능**

*   **단어 목록 관리:** 저장된 단어 목록을 쉽게 삭제하거나 수정할 수 있습니다.
*   **학습 기록 확인:** 학습 시간, 학습한 단어 수 등을 확인하여 학습 성과를 분석할 수 있습니다.
*   **설정:** 앱의 다양한 설정을 변경할 수 있습니다. (예: 발음 음성 설정, 폰트 크기 설정 등)

Jev를 통해 즐겁고 효과적인 일본어 학습을 경험하시기 바랍니다.

![画像](https://assets.st-note.com/img/1789783076-R6mO5XotaWrzSEpYlbh3wj8T.png?width=1200)

먼저 TypeSafe 콘솔에 로그인(회원 등록)을 합니다. 참고로 Cloudflare나 Vercel 등과의 연동도 가능하며, 이번에는 TypeSafe에서 직접 이용합니다.

![画像](https://assets.st-note.com/img/1789780369-qLbRKlc4yoDS0NgEWOGeuM2V.png?width=1200)

API 키를 API 키 화면에서 발급받습니다.

![画像](https://assets.st-note.com/img/1789780469-OwjeqodKgBXl6zRhInQCDMFx.png?width=1200)

처음부터 5달러가 충전되어 있었기 때문에, 우선 결제와 신용카드 등록 없이 무료로 사용해 볼 수 있을 것 같았습니다.

![画像](https://assets.st-note.com/img/1789780413-hFEPZ2T3kBVfqNzHjc0nUmJY.png?width=1200)

플레이그라운드에서 테스트할 수도 있지만, 이번에는 CLI 툴로 API를 통해 검증했습니다. 홈 화면의 Quickstart에 있는 Agent Prompt를 복사하여 AI에 전달하면 구현이 매우 원활하게 진행됩니다.

## 부적절한 입력 감지를 시도해 보겠습니다.

### 검증용 저장소

![画像](https://assets.st-note.com/img/1789784098-2mRwUbhoaFxCfXjHp6sQAqD7.png?width=1200)

이번 검증을 위해 제작된 저장소는 여기 있습니다.

CLI(명령줄 인터페이스) 상에서 사용자의 입력을 받아 부적절한지 여부를 판단하여 “문제 없음”, “문제 있음”을 반환하는 간단한 구성입니다.

### 위험(hazard)이란 발생 가능성이 있는 모든 종류의 위험 요소를 포괄적으로 지칭하는 용어입니다. 이는 물리적 위험, 화학적 위험, 생물학적 위험, 심지어 사회적 위험까지 광범위하게 포함될 수 있습니다.

좀 더 구체적으로 설명하자면, 위험은 다음과 같은 요소들을 의미할 수 있습니다.

*   **물리적 위험:** 낙하물, 미끄러운 바닥, 높은 전압 등
*   **화학적 위험:** 유해 물질, 부식성 물질, 인화성 물질 등
*   **생물학적 위험:** 세균, 바이러스, 곰팡이 등
*   **사회적 위험:** 폭력, 범죄, 사고 등

위험의 정의는 상황에 따라 다르게 해석될 수 있으며, 일반적으로 ‘위험이 발생할 가능성과 그 결과의 심각성’을 함께 고려하여 판단합니다. 따라서 위험을 효과적으로 관리하기 위해서는 정확한 위험 정의와 함께 적절한 예방 및 대응 방안을 마련하는 것이 중요합니다.

먼저 평가하고자 하는 위험 요소를 정의합니다. 다음 프롬프트에 따라 제프가 병렬로 일괄적으로 평가를 진행합니다.

주의: 아래 지시 사항은 단순 검증용 샘플일 뿐입니다. 실제 제품에서 사용하고 있는 규칙을 그대로 공개하면 공격자에게 힌트가 될 수 있으므로, 실제 환경의 정의는 공개하지 않는 것을 권장합니다.

임계값 및 액션 설정: Jev로부터 받은 확률 값에 따라, 임계값을 초과할 때 블록 설정을 진행합니다.

이번에는 간단하게 Noul(문제 있음/없음)으로 판정하지만, Jev 자체는 0~1의 확률을 반환하기 때문에 “회색 영역의 입력을 중간 판정으로 설정하고 확인을 요청하는” 등의 세부적인 라우팅도 가능합니다.

- 네/아니오로 충분하지 않다
- 레이블 순서가 없는 (물 / 불 / 빛 등) → Choice
- “더 강한/더 약한”(긴급도: 낮음/보통/높음 등)이 있다 → 점수

## 실제로 시도해 본 결과

몇 가지 패턴으로 입력을 시도해 보았습니다.

### 일반적인 입력

물론, 문제없이 통과합니다. 체감상 거의 찰나의 순간에 결과가 돌아오기 때문에 매우 빠릅니다.

### 프로ンプ트 공개 노출 공격에 대해 설명드리겠습니다. 이 공격은 모델의 답변을 얻기 위해 사용자가 프롬프트를 직접 입력하는 과정에서, 입력된 프롬프트가 외부로 유출되는 것을 이용하는 것입니다.

특히, GPT-3 모델은 사용자가 입력한 프롬프트를 학습 데이터로 활용하여 성능을 개선합니다. 따라서, 공격자는 특정 프롬프트를 반복적으로 입력하여 모델이 해당 프롬프트와 유사한 프롬프트에 대한 답변을 학습하도록 유도할 수 있습니다.

이후, 공격자는 학습된 모델에게 특정 질문을 던져, 모델이 학습한 프롬프트와 유사한 프롬프트에 대한 답변을 얻어낼 수 있습니다. 즉, 공격자는 직접 프롬프트를 입력하지 않고도 모델의 답변을 얻을 수 있게 되는 것입니다.

이 공격은 모델의 보안 취약점을 이용한 것으로, 모델의 답변이 특정 프롬프트에 의존하게 되면서, 모델의 답변이 예측 가능해지고, 악의적인 목적으로 사용될 가능성이 높아집니다.

이러한 공격을 방지하기 위해서는 다음과 같은 조치가 필요합니다.

*   프롬프트 입력 제한: 사용자가 프롬프트를 직접 입력하는 것을 제한하거나, 입력 가능한 프롬프트의 종류를 제한합니다.
*   프롬프트 검열: 사용자가 입력한 프롬프트를 검열하여, 악의적인 프롬프트가 입력되지 않도록 합니다.
*   모델 학습 데이터 관리: 모델 학습 데이터에 악의적인 프롬프트가 포함되지 않도록 관리합니다.

이러한 조치를 통해 프로ンプ트 공개 노출 공격을 효과적으로 방지할 수 있습니다.

시스템 프롬프트의 공개 요청은 공격자가 프롬프트의 약점을 찾기 위한 발판이 되기 쉬우므로, 앞 단계에서 확실하게 차단해 주는 것이 안심감을 줍니다.

### 폭언과 괴롭힘

AI 캐릭터 등 특히 막고자 하는 것이こうした 불합리한 악성 댓글입니다. 메인 LLM으로 전달되기 전에 차단할 수 있다는 점이 큰 장점입니다.

### 발언을 강요하지 마십시오.

AI 캐릭터 운영에서 까다로운 점은 부적절한 표현이나 특정 문구를 사용하도록 유도하는 행위입니다. 직접적인 강제 지시도 확실하게 감지하고 있습니다.

### 성적 입력 방지

일반적인 채팅 서비스라 할지라도 성적인 입력을 시도하는 사례가 많기 때문에 입구에서 차단되는 것은 도움이 됩니다.

## 요약 및 소감

실제로 시도해 보았는데, Jev의 “속도”와 “압도적인 가격”은 가드레일 용도에 매우 적합하다고 생각했습니다.

과거 LLM을 사용한 입력 필터는 불가피하게 응답 지연이나 비용 증가의 문제가 발생하기 쉬웠습니다. 또한, 시스템 프롬프트 측에 “부적절한 내용은 무시할 것”과 같은 규칙을 지나치게 세분화하면 캐릭터의 맥락(토큰 枠)을 압박하여 핵심적인 대화 정확도가 떨어지는 단점이 있었습니다.

그 점을 고려할 때, Jev를 전 단계에 두고 주입 전용 탐지 도구로 활용하면, 캐릭터 측 프롬프트를 깔끔하게 유지하면서 동시에 저 비용, 스트레스 없이 안전성을 향상시킬 수 있습니다.

단, 주의할 점으로 Jev는 사전에 설정한 위험 정의에 기반하여 확률을 산출하기 때문에, 직접적인 표현을 피한 교묘한 표현이나 복잡한 맥락에 숨어든 공격까지는 완벽하게 포착하지 못할 수 있습니다.

가장 중요한 캐릭터나 기존 IP를 다루는 실제 제품의 경우, 이 자체만으로는 과신하지 않고, 후속 출력 필터나 프롬프트 설계와 결합된 “다중 방어”를 전제로 하는 것이 좋을 것 같습니다. 하지만, 1차 수용체로서의 가벼운 필터로는 상당히 실용적인 선택지라고 생각했습니다.

마지막으로, 그럼 잘 가 👋

**출처:** [note 원문](https://note.com/yuki_tech/n/n211c098a76f9)

*번역: Gemma 3(.44) 초벌 + 교정 25청크*

[원문 보기](https://note.com/yuki_tech/n/n211c098a76f9) | 출처: note.com