✏️ Java 코드 에디터
취약한 코드
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class SimpleEncryptor {
public byte[] encryptData(String data) throws Exception {
// [취약점] DES는 키 길이가 56비트로 매우 짧아
// 전수 조사 공격(Brute Force)에 취약합니다.
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
keyGen.init(56);
SecretKey key = keyGen.generateKey();
// Cipher 인스턴스도 DES 사용
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
return cipher.doFinal(data.getBytes());
}
}
💡 수정 가이드
1. 키 생성기 변경
DES 대신 AES 키 생성기를 사용하세요.
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
2. 키 길이 증가
56비트 대신 128비트 또는 256비트로 초기화합니다.
keyGen.init(256);
3. Cipher 인스턴스 변경
알고리즘을 AES로 변경합니다. (가급적 GCM이나 CBC 모드 권장)
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
📊 분석 결과 및 설명
🎯 목표
현재 코드는 오래된 암호화 알고리즘인 DES (Data Encryption Standard)를 사용하고 있습니다. 이를 현대적인 표준인 AES (Advanced Encryption Standard)로 교체하여 보안성을 높이세요.
⚠️ 현재 취약점
Broken Crypto Algorithm (DES)
DES는 56비트 키를 사용하여 현대 컴퓨터 연산 능력으로는 매우 짧은 시간 안에 키를 찾아낼 수 있습니다. NIST에서는 2005년부터 DES 사용을 금지했습니다.