CoderTools

Blowfish 암호화/복호화 도구

Bruce Schneier가 설계한 빠른 대칭 블록 암호

⚠️ 보안 주의사항

Blowfish의 64비트 블록 크기는 대용량 데이터에 대해 생일 공격에 취약할 수 있습니다. 최대 보안을 위해 새 프로젝트에는 AES-256 사용을 고려하세요.

Blowfish 키 길이: 4-56바이트 (32-448비트). 권장: 16바이트 (128비트) 이상
형식 옵션

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년 공격 이력으로 대칭 암호 설계 트레이드오프 교육

참조

빠른 메뉴

최근 사용 도구 없음