Blowfish 암호화/복호화 도구
Bruce Schneier가 설계한 빠른 대칭 블록 암호
⚠️ 보안 주의사항
Blowfish의 64비트 블록 크기는 대용량 데이터에 대해 생일 공격에 취약할 수 있습니다. 최대 보안을 위해 새 프로젝트에는 AES-256 사용을 고려하세요.
Blowfish 암호화에 대해
Blowfish는 Bruce Schneier가 1993년 설계한 대칭 64비트 블록 암호로, 특허 없는 DES 대안으로 공개되었습니다. 16라운드 Feistel 구조는 32~448비트의 가변 길이 키를 사용합니다. 키 스케줄은 π의 16진수 자릿수를 암호화하여 18개 P-배열 항목과 4개의 256항목 S-box(총 약 4KB)를 생성합니다. OpenVPN 2.4.0(2017년)까지 기본 암호(BF-CBC 모드)였으며 이후 AES-256-GCM으로 교체되었습니다.
Blowfish 키 설정은 의도적으로 느리게 설계되어(521회 자체 반복) 무차별 대입 공격을 비용이 많이 들게 합니다. bcrypt는 Eksblowfish 변형으로 이를 활용하여 4~31의 설정 가능한 코스트 팩터로 패스워드 해싱을 수행합니다. 주요 제한은 64비트 블록 크기입니다: Sweet32(CVE-2016-2183, 2016)는 같은 CBC 키로 약 32GB 데이터 암호화 시 블록 충돌이 통계적으로 악용 가능하다는 것을 입증했습니다.
주요 기능
- 가변 키 길이: 32~448비트, 모든 범위에서 동일한 16라운드 Feistel 적용
- π 파생 서브키: 숨겨진 취약점 없이 투명한 초기화 보장
- AES-NI 없이 32비트 하드웨어에서 고성능
- bcrypt의 기원: Eksblowfish(OpenBSD 1999)는 Blowfish의 느린 서브키 생성 활용
암호화 모드
- CBC: Blowfish CBC — 64비트 블록이 이전 암호문과 XOR. Sweet32 한계: 동일 CBC 키로 약 32GB 후 생일 경계(2³² 블록) 도달 및 충돌 악용 가능. 임계값 전 키 교체 필수.
- ECB: Blowfish ECB — 각 8바이트(64비트) 블록 독립 처리. 동일 블록→동일 암호문. 단일 블록 작업에만 사용.
- CFB: Blowfish CFB — 오류 전파 자동 동기화 스트림. CBC와 동일한 32GB Sweet32 제한.
- OFB: Blowfish OFB — 반복 재암호화로 결정론적 키스트림 생성. 오류 전파 없음. 2³² 블록 사이클 한계 주의.
알고리즘 비교
| 알고리즘 | 키 길이 | 블록 크기 | 보안 | 속도 |
|---|---|---|---|---|
| Blowfish | 32-448비트 | 64 bits | 양호 | 빠름 |
| AES | 128/192/256 bits | 128 bits | 우수 | 빠름 |
| DES | 56 bits | 64 bits | 취약 | 빠름 |
| 3DES | 112/168 bits | 64 bits | 보통 | 느림 |
보안 고려사항
- Sweet32(CVE-2016-2183, 2016): 동일 CBC 키로 약 32GB 후 블록 충돌 통계적 악용 가능. 2³² 블록(32GiB) 전 키 교체 의무.
- OpenVPN 2.4.0(2017)은 Sweet32 이후 BF-CBC를 AES-256-GCM으로 교체. BF-CBC 연결은 현재 비권장 경고 생성.
- 완전 16라운드 Blowfish에 대한 알고리즘 공격 없음. 30년 이상 공개 분석에서 Sweet32 외 암호학적 취약점 없음.
- 새 애플리케이션에는 AES-128-GCM 또는 AES-256-GCM 사용. Blowfish는 BF-CBC 레거시 복호화 및 교육용으로 적합.
사용 사례
- bcrypt 이해: Eksblowfish는 Blowfish의 느린 특성으로 설정 가능한 코스트 팩터(4-31) 패스워드 해싱 구현. bcrypt 보안 모델 이해의 기초
- OpenVPN 레거시 복호화: 2017년 이전 BF-CBC 기본 설정 OpenVPN 트래픽 복호화 및 AES-256-GCM 마이그레이션
- 저자원 임베디드 시스템: AES-NI 불필요, 작은 코드 크기, 32비트 최적화. 키당 < 32GB 전제 조건
- 암호학 교육: π 서브키, Feistel, S-box 구조와 30년 공격 이력으로 대칭 암호 설계 트레이드오프 교육