Block cipher, ECB, CBC, CTR와 padding 비교 같은 길이의 평문 블록 두 개와 짧은 마지막 블록을 ECB, CBC, CTR로 처리할 때 블록 연결과 padding 필요 여부가 어떻게 달라지는지 보여 준다. 한 메시지, 세 가지 mode: padding은 언제 필요한가? Block cipher는 “고정 크기 한 블록”을 처리하는 부품이고, mode는 이 부품을 긴 메시지에 사용하는 규칙입니다. 입력 메시지 P₁ = A A A A P₂ = A A A A P₃ = B B ← 마지막 조각은 블록보다 짧음 ECB 각 블록을 독립적으로 암호화 P₁ = A A A A Eₖ(P₁) C₁ Eₖ(P₂) C₂ P₃ + padding B B 02 02 → 완전한 블록 P₁ = P₂이면 C₁ = C₂ → 반복 패턴 노출 CBC 현재 평문을 직전 암호문과 XOR한 뒤 암호화 P₁ ⊕ IV 첫 블록은 IV 사용 Eₖ(…) C₁ Eₖ(P₂ ⊕ C₁) C₂ 다음 블록에 다시 연결 마지막 P₃가 짧으면 먼저 padding한 뒤 같은 연결 규칙 적용 CTR Counter를 암호화해 keystream을 만들고 평문과 XOR Nonce + Counter 1, 2, 3, … Eₖ(counter) Keystream 필요한 길이만 사용 P₃ 2 bytes ⊕ keystream 2 bytes 짧은 마지막 조각도 그대로 처리 → padding 불필요 시험 판단 순서: block size 확인 → mode 확인 → 마지막 조각 길이 확인 → padding 여부 결정