📏 충분하지 않은 키 길이 시뮬레이터 KISA A-2 · 충분하지 않은 키 길이

올바른 알고리즘이라도 키 비트가 부족하면 깨집니다. 알고리즘과 키 길이를 골라 무차별 대입/인수분해 소요 시간을 추정하고 판정을 확인하세요 — DES-56은 수 시간, AES-256은 사실상 불가. 이후 NIST/KISA 최소 권고와 비교합니다.

① 키 강도 추정기 INTERACTIVE

대칭키는 무차별 대입에 약 2^(비트) 연산이 필요하고, RSA/ECC는 인수분해/이산로그로 깨지므로 실효 보안 강도가 비트 길이보다 훨씬 낮습니다(예: RSA-2048 ≈ 112비트 강도). 수치는 자릿수 수준 추정입니다.

② NIST / KISA 권고 최소 키 길이 SECURE

최소 112비트(레거시) 또는 128비트(현대) 보안 강도를 주는 키 길이를 선택하세요. 아래: 대칭키 ≥128, RSA/DH ≥2048(권장 3072), ECC ≥256.
종류위험최소권장
AES (symmetric)<112128256
RSA / DH512 / 102420483072+
ECC (ECDSA/ECDH)<224256384
DES / 3DES56 / 112*폐기 — AES 사용
Hash (collision)MD5 / SHA-1SHA-256SHA-384/512

③ 취약 vs 안전 코드

VULNERABLE
// Java — 너무 짧은 키
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56);                       // DES 56비트 → 수 시간 내 크랙

KeyPairGenerator rsa = KeyPairGenerator.getInstance("RSA");
rsa.initialize(512);               // RSA-512 → 노트북에서 인수분해
SECURE
// Java — 충분한 키 길이
KeyGenerator kg = KeyGenerator.getInstance("AES");
kg.init(256);                      // AES-256 → 무차별 대입 비현실적

KeyPairGenerator rsa = KeyPairGenerator.getInstance("RSA");
rsa.initialize(3072);              // RSA-3072 (또는 ECC P-256)
KeyPairGenerator ec = KeyPairGenerator.getInstance("EC");
ec.initialize(new ECGenParameterSpec("secp256r1"));
방어 핵심: 요구 보안 등급에 맞는 키 길이 선택(레거시 ≥112, 현대 ≥128) · 짧은 기본값 하드코딩 금지 · 데이터 수명을 고려한 키 길이와 마이그레이션용 암호 민첩성 확보 · RSA/ECC 비트 길이는 실효 보안 강도와 다름.
⚠️ 교육용 시뮬레이션입니다. 모든 크랙 시간은 페이지 내부에서 계산한 자릿수 수준 추정치이며 실제 키 생성·공격은 없습니다.