CoderTools

Blowfish 암호화/복호화 도구

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

⚠️ 보안 주의사항

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

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

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를 사용하는 시스템과의 호환성 유지

참조