CAST5 (CAST-128) 암호화/복호화
가변 키 길이(40-128비트)의 안전한 대칭 블록 암호
보안 경고
이 도구는 교육 및 테스트 목적입니다. 높은 보안이 필요한 프로덕션 환경에서는 AES-256 또는 다른 현대적인 암호화 알고리즘을 고려하세요. 암호화 키를 절대 공유하지 마세요.
CAST5 (CAST-128) 암호화 소개
CAST5(CAST-128이라고도 함)는 Nortel(Northern Telecom)의 Carlisle Adams와 Stafford Tavares가 설계하고 1996년 RFC 2144로 발표했습니다. CAST라는 이름은 설계자 이니셜(Carlisle Adams Stafford Tavares)에서 유래했습니다. 64비트 블록 크기에 40~128비트를 8비트 단위로 지원하는 가변 키 길이를 사용하며, OpenPGP(RFC 4880)의 필수 대칭 암호이자 GnuPG 1.x 버전 1.4까지의 기본 대용량 암호로 선정되었습니다.
CAST5는 세 가지 고유한 라운드 함수를 사용합니다 — Type 1(XOR 출력), Type 2(뺄셈 출력), Type 3(덧셈 출력) — 각각 여덟 개의 32비트 출력 S-box에서 고정 순서로 다른 쌍을 선택합니다. 80비트 이하 키는 12라운드, 더 긴 키는 16라운드를 사용합니다. 여덟 개의 S-box는 굽은 부울 함수를 사용하여 구축되어, 설계 시 차분 암호 분석에 대한 증명 가능한 저항 한계를 공식적으로 확립했습니다.
주요 특징
- 가변 키 길이: 40–128비트(8비트 단계) — 1990년대 미국 수출 규제 40비트 키 계층과 완전한 128비트 강도를 단일 알고리즘에서 지원
- 세 가지 고유한 라운드 함수(Type 1 XOR / Type 2 뺄셈 / Type 3 덧셈)가 라운드를 통해 교대로 사용되고, 각각 여덟 개의 32×8비트 S-box에서 다른 쌍을 선택
- 키 ≤ 80비트는 12라운드, 81–128비트 키는 16라운드 — 단축 키 엔트로피를 보완하기 위한 명시적 라운드 수 증가
- 특허 제한 없는 로열티 프리 알고리즘
암호화 모드
- CBC: 암호 블록 체이닝 — 각 64비트 CAST5 블록은 12 또는 16 Feistel 라운드 함수 순서 전에 직전 암호문과 XOR됩니다. 참고: OpenPGP(RFC 4880 §13.9)는 대용량 암호화에 CBC 대신 재동기화가 있는 CFB를 요구합니다; CBC는 SSH2 컨텍스트(CAST128-CBC, RFC 4253)에서 CAST5 사용 시 올바른 모드입니다.
- ECB: 전자 코드북 — 각 64비트 CAST5 블록이 12 또는 16 라운드 전체를 독립적으로 처리합니다. 동일한 64비트 평문 블록은 항상 동일한 암호문을 생성하여 데이터 반복 패턴을 노출합니다. 64비트 블록 폭에서 생일 경계 충돌은 ~2³² 블록(~32 GB 단일 키 암호화) 후 50% 확률에 도달합니다.
- CTR: 카운터 모드 - 블록 암호를 스트림 암호로 변환, 병렬 처리 가능
- CFB: 암호 피드백 — OpenPGP(RFC 4880 §13.9)가 요구하는 모드: 메시지 시작 부분에 2블록 재동기화 단계가 있는 64비트 CFB. 이 OpenPGP 전용 재동기화 CFB는 수신자가 동기화를 복구하고 변조된 선행 블록을 감지할 수 있게 합니다.
- OFB: 출력 피드백 — CAST5 블록 함수가 IV를 반복 재암호화하여 평문과 독립적인 키 스트림을 생성합니다. 64비트 IV에서 키스트림 통계 주기는 생일 문제에 의해 ~2³² 사이클로 제한됩니다; 대용량 또는 장기 스트림에는 IV를 주기적으로 갱신하세요.
- RAW: 단일 블록 모드 - 체인 없이 직접 암호화, 8바이트 블록만 사용
알고리즘 비교
| 알고리즘 | 키 길이 | 블록 크기 | 보안 | 속도 |
|---|---|---|---|---|
| CAST5 (CAST-128) | 40-128비트 | 64 bits | 양호 | 빠름 |
| Blowfish | 32-448 bits | 64 bits | 양호 | 빠름 |
| AES | 128/192/256 bits | 128 bits | 우수 | 빠름 |
| Twofish | 128/192/256 bits | 128 bits | 우수 | 빠름 |
보안 고려사항
- CAST5-128에 대한 실용적인 전체 라운드 공격은 존재하지 않습니다; 최고의 발표된 암호 분석은 16라운드 중 6라운드에만 도달합니다. 그러나 40비트 수출용 키의 CAST5는 무차별 대입으로 쉽게 해독됩니다 — 현대 배포에서는 128비트 미만의 키를 절대 사용하지 마세요.
- 64비트 블록 크기는 CAST5의 주요 한계입니다: CBC 또는 CFB 모드에서 ~2³² 블록(키당 ~32 GB) 이후 생일 경계 통계 누출이 발생합니다. OpenPGP는 메시지별 세션 키로 이를 완화하지만, 대용량 장기 스트리밍은 키 로테이션이 필요합니다.
- OpenPGP(RFC 4880 §9.2)는 GnuPG 1.x 및 PGP 8.x 클라이언트 설치 기반과의 호환성을 위해 CAST5를 필수 구현 알고리즘으로 지정합니다. 새 구현은 새로 생성되는 메시지에 AES-256을 우선해야 합니다 — CAST5는 수신 측 요구사항이며 새 출력의 권장 기본값이 아닙니다.
- 모든 새로운 설계에서 CAST5를 AES-128-CBC 또는 AES-256-GCM으로 교체하세요. 암호 분석 약점이 아닌 64비트 블록 제한이 마이그레이션의 주요 원동력입니다; CAST5-128 자체는 충분히 긴 키와 적절한 IV 관리로 사용할 때 여전히 해독되지 않았습니다.
일반적인 사용 사례
- OpenPGP 이메일 및 파일 암호화 호환성: RFC 4880 §9.2는 모든 호환 OpenPGP 구현에서 CAST5를 의무화하여 암호 기본 설정을 업데이트하지 않은 GnuPG 1.x 및 PGP 8.x 사용자와의 상호 운용성에 필요합니다
- GnuPG 1.x 대칭 암호화: GnuPG 1.0~1.4.x는 대칭 키(패스프레이즈) 암호화의 기본값으로 CAST5를 사용했습니다. 발신자가 명시적으로 AES를 선택하지 않았다면 이 GnuPG 버전의 파일이나 서명된 메시지 복호화에는 CAST5 지원이 필요합니다
- SSH2 CAST128-CBC 전송 암호: RFC 4253은 CAST128-CBC를 SSH SHOULD-support 전송 암호로 정의합니다. AES 암호 스위트를 사용할 수 없는 경우 레거시 SSH 서버와 펌웨어가 제한된 임베디드 장치가 핸드셰이크 중에 CAST128-CBC를 협상할 수 있습니다
- 포렌식 및 아카이브 복호화: 1990년대 후반부터 2000년대 중반의 PGP 암호화 이메일, 디스크 이미지, 백업 세트는 일반적으로 CAST5를 대용량 암호로 사용합니다. 현재 시스템이 더 이상 새 CAST5 암호화 콘텐츠를 생성하지 않더라도 데이터 복구에는 CAST5 지원이 필요합니다