# 암호문 피드백 (Cipher Feedback, CFB)

암호문 피드백(CFB, Cipher Feedback)은 직전 암호문 블록을 블록 암호로 암호화해 키스트림을 만들고, 이를 평문과 XOR하는 블록 암호 운용 모드입니다. 블록 암호를 자기 동기식 스트림 암호처럼 쓸 수 있게 해 주며, NIST SP 800-38A에 표준 모드로 정의되어 있습니다.

## 자세히 알아보기

동작 방식은 다음과 같습니다. 첫 블록은 초기화 벡터(IV)를 암호화한 값을 평문과 XOR해 암호문 C₁을 만듭니다. 이후에는 직전 암호문을 암호화해 다음 키스트림을 만듭니다. 즉 Cᵢ = Pᵢ ⊕ E_K(Cᵢ₋₁)입니다. 복호화에도 블록 암호의 '암호화' 방향만 쓰이므로, 복호화 회로가 따로 필요 없습니다. 블록보다 작은 단위(예: 8비트)로 동작하는 CFB-8 같은 변형도 있습니다.

키스트림이 이전 암호문에서 만들어지기 때문에 CFB는 '암호문 자동 키(ciphertext autokey)' 방식입니다. 그 결과 전송 중 암호문 일부가 손상되거나 빠져도, 손상 구간이 피드백 레지스터를 빠져나가면 복호화가 저절로 다시 맞춰지는 자기 동기 성질이 있습니다. 대신 한 비트 오류가 해당 블록과 다음 블록까지 번집니다. 출력 피드백(OFB)은 암호문이 아니라 블록 암호 출력 자체를 되먹임한다는 점이 다릅니다.

주의점도 있습니다. 같은 키로 IV를 재사용하면 안 되며, IV는 예측 불가능해야 합니다. CFB 암호화는 앞 블록 결과가 필요해 병렬화가 어렵습니다. 가장 중요한 한계는 무결성을 보장하지 않는다는 점으로, 공격자가 암호문 비트를 뒤집으면 평문의 같은 위치가 뒤집힙니다. 그래서 새 시스템에서는 AES-GCM이나 ChaCha20-Poly1305 같은 인증 암호(AEAD)를 쓰는 것이 권장됩니다.

CFB는 역사적으로 단말기와 직렬 회선처럼 문자 단위로 데이터를 보내는 환경에서 쓰였습니다. 블록이 다 찰 때까지 기다리지 않고 한 바이트씩 바로 암호화할 수 있었기 때문입니다.

OpenPGP 메시지 형식도 CFB 모드의 변형을 사용해 왔으며, 이후 무결성 보호(MDC, 그리고 AEAD 모드)가 추가되었습니다.

## 블록체인·암호화폐에서는

블록체인 프로토콜 자체에서 CFB가 쓰이는 경우는 드뭅니다. 일부 지갑 소프트웨어나 레거시 암호화 도구가 키 파일 보호에 AES-CFB를 썼으며, 이런 구현을 감사할 때는 IV 처리와 별도의 무결성 검증(MAC) 유무를 확인해야 합니다.

## 쉽게 말하면

방금 만든 암호문을 다음 글자를 감출 재료로 다시 쓰는 연쇄 방식입니다.

---
출처: https://achivx.kr/glossary/cipher-feedback-cfb-%EC%82%AC%EC%9D%B4%ED%8D%BC-%ED%94%BC%EB%93%9C%EB%B0%B1-cfb/ · ACHIVX 용어 사전 · 수정일 2026-10-20
