Blowfish 암호화/복호화 도구
Bruce Schneier가 설계한 빠른 대칭 블록 암호
⚠️ 보안 주의사항
Blowfish의 64비트 블록 크기는 대용량 데이터에 대해 생일 공격에 취약할 수 있습니다. 최대 보안을 위해 새 프로젝트에는 AES-256 사용을 고려하세요.
Blowfish 암호화에 대해
Blowfish는 1993년 Bruce Schneier가 설계한 대칭 키 블록 암호입니다. 특허에 구애받지 않고 누구나 무료로 사용할 수 있는 최초의 안전한 블록 암호 중 하나입니다.
Blowfish는 64비트 블록 크기를 사용하고 32비트에서 448비트까지의 가변 키 길이를 지원합니다. 16라운드 Feistel 네트워크 구조를 사용하여 빠르고 안전합니다.
주요 기능
- 가변 키 길이: 32~448비트(4~56바이트), 보안 수준에 유연성 제공
- 64비트 블록 크기: 8바이트 블록으로 데이터 처리
- 16라운드 Feistel 네트워크: 강력한 확산과 혼란 제공
- 빠른 암호화: 32비트 프로세서에 최적화, DES보다 훨씬 빠름
암호화 모드
- CBC: 각 평문 블록은 암호화 전에 이전 암호문 블록과 XOR됩니다. IV 필요, 가장 안전.
- ECB: 각 블록이 독립적으로 암호화됩니다. IV 불필요, 하지만 같은 평문은 같은 암호문 생성.
- CFB: 블록 암호를 스트림 암호로 변환. IV 필요.
- OFB: 출력 피드백 모드, 블록 암호를 스트림 암호로 변환. IV 필요.
알고리즘 비교
| 알고리즘 | 키 길이 | 블록 크기 | 보안 | 속도 |
|---|---|---|---|---|
| Blowfish | 32-448비트 | 64 bits | 양호 | 빠름 |
| AES | 128/192/256 bits | 128 bits | 우수 | 빠름 |
| DES | 56 bits | 64 bits | 취약 | 빠름 |
| 3DES | 112/168 bits | 64 bits | 보통 | 느림 |
보안 고려사항
- Blowfish의 64비트 블록 크기는 동일한 키로 대용량 데이터(>32GB)를 암호화할 때 생일 공격에 취약합니다.
- 최대 보안이 필요한 새 프로젝트의 경우 AES 또는 Blowfish의 후속작인 Twofish 사용을 고려하세요.
- 더 나은 보안을 위해 항상 ECB 대신 CBC 또는 다른 체인 모드를 사용하세요.
- 동일한 키로 각 암호화 작업마다 고유한 IV를 사용하세요.
사용 사례
- 비밀번호 해싱: bcrypt는 Blowfish 기반이며 비밀번호 저장에 널리 사용됨
- 파일 암호화: 개별 파일 및 아카이브 암호화에 적합
- VPN 및 보안 통신: OpenVPN 및 기타 보안 프로토콜에서 사용
- 레거시 시스템 호환성: Blowfish를 사용하는 시스템과의 호환성 유지