📏 충분하지 않은 키 길이 시뮬레이터 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) | <112 | 128 | 256 |
| RSA / DH | 512 / 1024 | 2048 | 3072+ |
| ECC (ECDSA/ECDH) | <224 | 256 | 384 |
| DES / 3DES | 56 / 112* | 폐기 — AES 사용 | |
| Hash (collision) | MD5 / SHA-1 | SHA-256 | SHA-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 비트 길이는 실효 보안 강도와 다름.
⚠️ 교육용 시뮬레이션입니다. 모든 크랙 시간은 페이지 내부에서 계산한 자릿수 수준 추정치이며 실제 키 생성·공격은 없습니다.