암호문 피드백 (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) 유무를 확인해야 합니다.
쉽게 말하면
방금 만든 암호문을 다음 글자를 감출 재료로 다시 쓰는 연쇄 방식입니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.