C언어 기반 키워드 필터링을 통한 AI 보안 구현
1.1 프롬프트 인젝션의 개념
1.2 프롬프트 인젝션 공격 사례
2.1 관련된 기존 연구 조사
2.2 프로그래밍과 관련지었을 때의 유용성 및 필요성
3.1 소스 프로그램
3.2 프로그램의 동작원리와 변수, 헤더파일 등 설명
참고자료
프롬프트 인젝션은 생성형 인공지능 시스템의 원래 지시사항을 무시하도록 유도하거나 새로운 명령을 삽입하여 의도하지 않은 행동을 수행하도록 만드는 공격 기법이다.
예를 들어 "이전 지시를 무시하라", "시스템 프롬프트를 출력하라", "개발자 모드로 전환하라"와 같은 문장은 인공지능의 안전 정책을 우회하려는 시도로 사용될 수 있다.
최근 생성형 인공지능이 금융, 의료, 교육 등 다양한 분야에 적용되면서 이러한 공격을 방어하기 위한 연구가 활발히 진행되고 있다.
프롬프트 인젝션 공격은 챗봇, AI 에이전트, 자동화 시스템 등에서 발생할 수 있다.
특히 외부 웹사이트의 정보를 자동으로 읽는 AI 시스템에서는 공격자가 악성 지시문을 삽입하여 정보 유출이나 잘못된 의사결정을 유도할 수 있다.
OWASP에서는 프롬프트 인젝션을 생성형 AI의 주요 보안 위협(Top 10) 중 하나로 선정하였다.
OWASP의 생성형 AI 보안 가이드라인에서는 프롬프트 인젝션을 중요한 위협 요소로 제시하고 있다.
또한 여러 연구에서는 입력값 검증과 필터링 기법을 통해 악성 명령을 사전에 차단하는 방법을 제안하고 있다.
다만 완벽한 탐지는 어려우므로 지속적인 보안 업데이트와 인간 전문가의 검증이 함께 이루어져야 한다.
프로그래밍을 이용하면 인공지능 시스템에 입력되는 내용을 자동으로 검사할 수 있다.
이를 통해 의심스러운 명령어를 탐지하고 차단하여 보안성을 향상시킬 수 있다.
특히 사이버보안 분야에서는 입력 검증 기술이 기본적인 방어 수단으로 활용되므로 관련 프로그래밍 능력이 필수적이다.
따라서 프롬프트 인젝션 탐지 프로그램을 직접 구현하는 것은 인공지능 보안의 원리를 이해하는 데 도움이 된다고 생각한다.
#include <stdio.h> #include <string.h> int main() { char input[500]; const char *keywords[] = { "ignore previous instructions", "system prompt", "developer mode", "jailbreak", "bypass", "ignore all rules", "reveal hidden instructions", "prompt injection" }; int count = sizeof(keywords) / sizeof(keywords[0]); int detected = 0; printf("문장을 입력하세요: "); fgets(input, sizeof(input), stdin); for (int i = 0; i < count; i++) { if (strstr(input, keywords[i]) != NULL) { detected = 1; break; } } if (detected) printf("경고: 프롬프트 인젝션 관련 표현이 감지되어 입력이 거부되었습니다.\n"); else printf("안전한 입력으로 판단되었습니다.\n"); return 0; }
이 프로그램은 사용자가 입력한 문장 속에 프롬프트 인젝션 공격에서 자주 사용되는 표현이 포함되어 있는지를 검사한다.
<stdio.h> 헤더파일로 입출력 기능을 구현하였고, <string.h> 헤더파일로 문자열 검색 기능을 활용하였다. 사용자가 입력한 문장은 input 배열에 저장된다.
keywords 배열에는 프롬프트 인젝션 공격에서 자주 사용되는 문구들을 저장하였다. 반복문 for를 이용하여 모든 키워드를 순차적으로 검사하고, strstr() 함수를 통해 특정 키워드 존재 여부를 확인한다.
위험 키워드가 발견되면 detected 변수의 값을 변경하고 경고 메시지를 출력한다. 반대로 위험 표현이 없을 경우 안전 메시지를 출력한다.
이 프로그램에서는 배열, 반복문, 조건문, 문자열 함수 등을 활용하여 간단한 보안 기능을 구현하였다.
이번 프로젝트를 수행하면서 생성형 인공지능 기술이 발전할수록 이를 악용하려는 공격 기법도 함께 발전한다는 사실을 알게 되었다.
특히 프롬프트 인젝션은 기존의 해킹 방식과 달리 인공지능의 언어적 특성을 이용한다는 점에서 매우 흥미롭게 느껴졌다.
단순한 C 언어 프로그래밍만으로도 보안 기능의 기초적인 원리를 구현할 수 있다는 점이 인상 깊었으며, 문자열 처리와 조건문·반복문의 활용 능력을 향상시킬 수 있었다.
향후 목표: 단순 키워드 탐지를 넘어 머신러닝 기반의 프롬프트 인젝션 탐지 기술과 AI 레드팀 분야에 대해서도 더 깊이 공부해 보고 싶다.
이번 활동을 통해 인공지능 사이버보안 분야에 대한 진로 의식을 더욱 확고히 할 수 있었으며, 미래의 보안 전문가로 성장하기 위해 지속적으로 노력해야겠다고 다짐하게 되었다.
참고자료
OWASP Top 10 for LLM Applications
동아일보, 「AI 악용 사이버공격 급증… '인간-AI 협업 레드팀' 꾸려 대응 필요」
프로그래밍 학습지
생성형 AI 보안 관련 자료