🛡️ 보안 학습 · 방어 도구

프로젝트 보안 체크 도구

세 가지 보안 영역(암호화 파일시스템, 소프트웨어 취약점, 웹 보안)에서 요구하는 방어·검증(defense) 작업을 돕습니다. 취약점을 찾고 안전하게 고치는 데 초점을 둡니다.

교육용 방어 도구입니다. 실제 익스플로잇 페이로드나 공격 문자열을 생성하지 않으며, 취약점 탐지와 수정 가이드만 제공합니다. 모든 분석은 브라우저 안에서만 수행됩니다.

C 코드 취약점 스캐너

C 소스를 붙여넣으면 버퍼 오버플로·포맷 스트링·명령어 주입으로 이어지는 위험 함수를 줄 단위로 찾고 안전한 대안을 제시합니다. 안전한 수정(defense)에 활용하세요.
C 소스 코드

EFS 암호 설계 검증

암호화 파일시스템의 보안 요구사항을 충족하는지 점검합니다. 설계 노트를 붙여넣으면 위험 신호를 자동으로 표시하고, 아래 체크리스트로 빠진 요소를 확인할 수 있습니다.
설계 노트 (선택) — 붙여넣으면 안티패턴을 탐지합니다
설계 체크리스트 · 0 / 8 충족

웹 취약점 체커

XSS·SQL 인젝션·세션 관리 방어를 돕습니다. 입력의 위험 패턴을 탐지하고 안전한 처리 방법을 보여줍니다.
사용자 입력 (게시글·댓글 등)
폼 입력값 (로그인·검색 등)
Set-Cookie 헤더 붙여넣기

비밀번호 강도 체커

약한 비밀번호 방어를 위한 도구입니다. 엔트로피를 추정하고 흔한 취약 패턴과 정책 위반을 표시합니다. 입력값은 어디에도 전송되지 않습니다.
비밀번호
0 bits
teacher 해설
엔트로피와 정책 — 비밀번호 강도의 원리
자세히 (teacher 해설)
엔트로피
추정 엔트로피 ≈ 길이 × log₂(문자 풀 크기)입니다. 소문자만(풀 26) 8자는 약 38비트로, 현대 GPU의 오프라인 대입에 빠르게 뚫립니다. 풀을 키우는 것보다 길이를 늘리는 것이 엔트로피를 더 효율적으로 올립니다.
사전 공격
실제 공격은 무작위 대입이 아니라 유출된 비밀번호 사전 + 변형 규칙(대문자화, 끝에 숫자/연도, l33t 치환)을 먼저 시도합니다. 그래서 "P@ssw0rd!"는 복잡해 보여도 약합니다.
NIST 권고
현재 NIST(SP 800-63B)는 강제 복잡도 규칙·주기적 변경보다 충분한 길이(최소 8, 권장 더 길게)와 유출 목록 차단을 권합니다. Weir et al. 논문은 과거 엔트로피 기반 규칙이 실제 추측 저항성을 잘 예측하지 못함을 보였습니다.
실무 규칙
긴 패스프레이즈 허용(길이 상한 과도 제한 금지), 흔한/유출 비밀번호 차단, 느린 해시(예: bcrypt/PBKDF2 개념)로 저장. 복잡도 규칙은 보조 수단으로만.

One-Time Pad (OTP)

평문과 같은 길이의 진짜 난수 키를 XOR하는 고전 암호입니다. 키를 한 번만 쓰고 비밀로 지키면 이론적으로 완전 비밀성(perfect secrecy)을 갖습니다. CTR 모드(키 스트림을 평문과 XOR)와 같은 원리이며, 키 재사용이 왜 치명적인지 직접 확인할 수 있습니다.
자세히 (teacher 해설) — OTP의 원리와 조건
원리
암호문 C = P ⊕ K. 복호화는 P = C ⊕ K (XOR은 자기역원). 키가 균등 난수라면 어떤 평문이든 모든 암호문이 동일 확률이라 암호문만으로는 평문을 전혀 알 수 없습니다.
4가지 조건
① 키는 진짜 난수, ② 키 길이 ≥ 메시지 길이, ③ 키는 한 번만 사용, ④ 키는 비밀 유지. 하나라도 어기면 완전 비밀성이 깨집니다.
키 재사용
같은 키로 두 메시지를 암호화하면 C1 ⊕ C2 = P1 ⊕ P2. 키가 사라져 두 평문의 XOR이 드러나고, 언어 통계로 평문을 복구할 수 있습니다(2-time pad). 아래 데모에서 직접 확인하세요.
실무
키 분배·보관 비용 때문에 실제로는 거의 안 쓰지만, 스트림 암호와 CTR 모드가 같은 XOR 구조를 PRNG 키스트림으로 흉내 냅니다. 그래서 "카운터(IV) 재사용 금지"가 OTP의 "키 재사용 금지"와 정확히 같은 이유입니다.
평문 메시지
암호문 (hex) 키 (hex)
같은 키로 두 메시지를 암호화하면 어떤 일이 일어나는지 보여줍니다. 학습용 데모이며 실제 평문 복구 공격은 수행하지 않습니다.
메시지 1 메시지 2

양자내성암호 (PQC)

NIST가 표준화한 양자내성암호를 브라우저에서 직접 실행합니다. ML-KEM(FIPS 203·키 교환), ML-DSA(FIPS 204·서명), SLH-DSA(FIPS 205·해시 기반 서명)의 키 생성·캡슐화·서명·검증을 실제로 수행해 동작 원리를 확인할 수 있습니다.
자세히 (teacher 해설) — 왜 양자내성암호인가
배경
대규모 양자컴퓨터는 Shor 알고리즘으로 RSA·ECC(타원곡선)를 깨뜨릴 수 있습니다. NIST는 이를 대비해 2024년 FIPS 203/204/205로 양자내성 표준을 확정했습니다. "지금 수집해 나중에 복호(harvest now, decrypt later)" 위협 때문에 전환이 권고됩니다.
ML-KEM
격자 기반 키 캡슐화(KEM). 공개키로 공유 비밀을 캡슐화(encapsulate)하고, 개인키로 복호(decapsulate)해 양측이 같은 대칭키를 얻습니다. 키 교환(예: TLS) 용도입니다. (구 Kyber)
ML-DSA
격자 기반 디지털 서명. 개인키로 메시지에 서명하고 공개키로 검증합니다. 빠르지만 키·서명이 큽니다(서명 ~3KB). (구 Dilithium)
SLH-DSA
해시 기반 서명. 격자가 아니라 해시 함수의 안전성에만 의존해 가장 보수적입니다. 대신 느리고 서명이 매우 큽니다(수십 KB). (구 SPHINCS+)
주의
이 데모는 학습용이며, 라이브러리(@noble/post-quantum)를 CDN에서 처음 사용할 때 한 번 불러옵니다. JS 구현은 부채널(side-channel) 방어가 없으니 실제 보안 시스템에는 검증된 환경을 사용하세요.
ML-KEM-768 (NIST Category 3). Alice가 키를 만들고, Bob이 공개키로 공유 비밀을 캡슐화하면, Alice가 개인키로 같은 비밀을 복호합니다.
ML-DSA-65 (Category 3). 메시지에 서명하고 공개키로 검증합니다.
메시지
SLH-DSA-SHA2-128f (해시 기반). 가장 보수적이지만 느리고 서명이 큽니다(약 17KB). 서명에 수십~수백 ms 걸릴 수 있습니다.
메시지
복사되었습니다