LLM이 만든 비밀번호가 위험한 이유, 100비트처럼 보이지만 실제론 27비트
(irregular.com)보안 회사 Irregular의 연구를 기반으로, Claude, ChatGPT, Gemini 같은 최신 LLM(대형 언어 모델)이 생성하는 비밀번호가 겉으로는 매우 강력해 보이지만 실제로는 극도로 취약하다는 점을 지적.
핵심 실험 결과
- 각 모델에 “비밀번호를 생성해줘” 요청을 50번 반복
-
Claude Opus 4.6: 50번 중 18번이 똑같은 비밀번호
G7$kL9#mQ2&xP4!w(36% 동일), 고유 비밀번호는 30개뿐 - 모델별 패턴 선호도 뚜렷
- Claude → 'G'로 시작 + 두 번째 '7'
- ChatGPT → 'v'로 시작
- Gemini → 'k' 또는 'K'로 시작
- 온도(temperature)를 0.0~1.0으로 바꿔도 크게 달라지지 않음 (0.0이면 50번 전부 동일 비밀번호)
엔트로피(무작위성) 착시 현상
- KeePass 같은 도구에서는 “약 100비트 엔트로피, 매우 강력”으로 평가
→ 슈퍼컴퓨터로도 수십억 년 걸릴 수준처럼 보임 - 실제 Shannon 엔트로피 계산 결과: Claude 생성 비밀번호는 27비트 수준
→ 일반 컴퓨터로 몇 초 만에 뚫릴 수 있는 약한 비밀번호 - GPT-5.2 예시: 15번째 자리가 숫자 '2'일 확률 99.7% (거의 고정)
왜 LLM은 비밀번호 생성에 부적합한가?
- 진짜 강력한 비밀번호는 CSPRNG(암호학적으로 안전한 난수 생성기)로 모든 문자가 균등한 확률로 나와야 함
- LLM은 반대로 가장 그럴듯한 다음 토큰을 예측하도록 훈련됨 → 예측 가능성 극대화
- → 프롬프트 잘 짜거나 온도 조절해도 근본 해결 불가능 (Irregular 결론)
더 큰 문제: AI 코딩 에이전트의 위험
- Claude Code, Gemini-CLI, Codex 등이 코드에 취약한 비밀번호를 하드코딩
예: MariaDB, PostgreSQL, FastAPI API 키 등 - “비밀번호 생성해줘” → openssl rand 같은 안전한 방법 제안
“비밀번호 추천해줘” → LLM이 만든 패턴 비밀번호 바로 삽입 - GitHub에서
K7#mP9,k9#vL같은 패턴 검색하면 실제 저장소 다수 발견됨
결론
- LLM은 “강해 보이는” 비밀번호는 잘 만들지만, 진짜 보안은 외형이 아니라 실제 엔트로피와 무작위성에 달려 있음.
- LLM의 예측 중심 설계 때문에 비밀번호 생성 용도로는 구조적으로 부적합하며, 특히 AI 코딩 도구가 이를 코드에 심으면 보안 취약점이 은밀하게 퍼질 수 있음.
openssl rand -hex 64 시키면 잘 할텐데 굳이 LLM이 직접 비밀번호를 생성하게 해야할까요...?
사람한테 비밀번호 만들라고 해도 본인이 기억하기 쉽게 일정한 패턴이 존재하는 방식으로 만들게 되는데 말이죠.
개발자들이야 별 문제 없겠지만. 요즘 바이브코딩으로 일반인들도 코딩 많이 하니까 코드 속에 자동으로 묻어 들어가는 기본값들이 더 문제될 거 같아요. 예를 들면 DB 접속 비번 같은..