현재 선택한 정보보안 과정

정보보안기사 필기 이론 학습

이론 목록으로 돌아가기

블록암호 운영 모드

ECB·CBC·CFB·OFB·CTR의 연결 방식, 초기값, 오류 전파를 비교합니다.

예상 읽기 5

1. 운영 모드는 블록을 연결하는 규칙이다

블록 암호는 한 블록의 변환을 정의한다. 긴 메시지의 여러 블록을 어떤 입력·이전 결과와 연결할지 정하는 것이 운영 모드다. 아래에서 E_K는 암호화 변환, D_K는 역변환, P_i·C_i는 i번째 평문·암호문이다.

ECB·CBC·CFB·OFB·CTR은 기밀성 모드다. 이 모드 이름만으로 변조 탐지나 발신자 인증이 있다고 판단하지 않는다.

2. ECB와 CBC

ECB는 각 블록을 독립적으로 암호화한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
C_i = E_K(P_i)
P_i = D_K(C_i)

같은 키에서 같은 평문 블록은 같은 암호문이 된다. 반복 패턴이 드러나므로 구조화된 긴 데이터를 숨기는 데 부적합하다. 암호화·복호화 병렬 처리는 가능하다.

CBC는 평문을 이전 암호문과 XOR한 뒤 암호화한다. 첫 블록에는 이전 암호문 대신 IV를 사용한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
C_0 = IV
C_i = E_K(P_i XOR C_(i-1))
P_i = D_K(C_i) XOR C_(i-1)

CBC의 IV는 비밀일 필요는 없지만 예측 불가능해야 하고 무결성도 보호해야 한다. 암호화는 이전 결과를 기다려야 하므로 순차적이다. 복호화는 암호문들이 이미 있으면 각 역변환을 병렬로 수행할 수 있다.

3. CFB와 OFB

CFB는 이전 암호문을 암호화한 출력과 현재 평문을 XOR한다. 전체 블록 단위 CFB를 단순화하면 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
C_0 = IV
C_i = P_i XOR E_K(C_(i-1))
P_i = C_i XOR E_K(C_(i-1))

복호화에도 D_K가 아닌 E_K를 사용한다. CFB에는 세그먼트 크기가 다른 방식도 있으며 오류 영향 범위는 그 크기에 따라 달라진다. IV는 예측 불가능해야 한다.

OFB는 암호문이 아니라 직전 암호화 출력 자체를 피드백한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
O_0 = IV
O_i = E_K(O_(i-1))
C_i = P_i XOR O_i
P_i = C_i XOR O_i

키스트림은 메시지와 무관하게 미리 만들 수 있지만 이전 출력에 의존하므로 생성은 순차적이다. 같은 키에서 IV를 재사용하면 같은 키스트림이 반복되므로 IV의 고유성이 중요하다.

4. CTR과 모드별 피드백 비교

CTR은 각 블록에 대응하는 고유한 카운터 블록을 암호화한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
O_i = E_K(T_i)
C_i = P_i XOR O_i
P_i = C_i XOR O_i

같은 키로 보호하는 모든 메시지에서 카운터 블록 전체가 중복되지 않아야 한다. 메시지마다 카운터를 0으로 되돌리기만 하면 충분하지 않다. 보통 nonce와 블록 번호를 결합해 구별한다. 각 계산이 이전 암호문에 의존하지 않으므로 암호화·복호화 병렬 처리와 임의 위치 처리가 가능하다.

모드암호화 입력의 특징초기값 조건복호화 변환
ECB현재 평문만 처리IV 없음D_K
CBC평문 XOR 이전 암호문예측 불가능한 IVD_K 후 XOR
CFB이전 암호문을 암호화예측 불가능한 IVE_K 후 XOR
OFB이전 암호 출력 재사용같은 키에서 고유한 IVE_K로 같은 키스트림
CTR고유한 카운터 블록같은 키에서 전체 값 중복 금지E_K로 같은 키스트림
좌우로 이동해 그림을 확인하세요.그림 크게 보기
운영 모드: 다음 계산에 무엇을 넣는가
운영 모드: 다음 계산에 무엇을 넣는가

5. 병렬 처리·패딩·오류 전파

아래 오류는 전송 중 암호문 한 비트가 뒤집히고 인증 검증 없이 복호화했을 때의 성질이다. 비트 삽입·삭제나 별도의 인증 실패 처리와 혼동하지 않는다.

모드암호화 / 복호화 병렬성기본 처리 단위의 길이 조건암호문 한 비트 오류의 영향
ECB가능 / 가능블록 정렬·보통 패딩 필요해당 평문 블록 손상
CBC순차 / 가능블록 정렬·보통 패딩 필요해당 블록 손상 + 다음 블록 같은 위치 반전
CFB순차 / 수신 암호문으로 병렬 계산 가능세그먼트 정렬해당 위치 반전 + 뒤 일정 구간 손상
OFB키스트림 생성은 순차마지막 부분 블록 처리 가능해당 위치만 반전
CTR가능 / 가능마지막 부분 블록 처리 가능해당 위치만 반전

전체 블록 CFB에서는 현재 평문 블록의 해당 비트가 반전되고 다음 블록이 손상된다. CBC는 현재 블록이 손상되고 다음 블록의 해당 비트가 반전된다. 두 모드의 오류 방향을 바꾸어 외우지 않는다. OFB도 미리 만든 키스트림과의 XOR는 병렬화할 수 있지만 키스트림 생성의 순차성은 남는다.

6. 계산 예시와 인증된 암호화

학습용 CTR에서 어떤 카운터의 암호 출력이 10101100, 평문이 11001010이라면 XOR 결과는 01100110이다. 다시 같은 출력과 XOR하면 평문이 복원된다. 실제 AES 블록은 128비트이며 이 8비트 예시는 XOR만 설명한다.

GCM·CCM은 암호화와 인증 태그를 결합하는 AEAD 방식이다. 부가 인증 데이터(AAD)는 암호화하지 않더라도 무결성을 보호할 수 있다. 태그 검증 없이 복호화된 내용을 신뢰하면 안 된다. 모드별 nonce 조건도 필요하며, 특히 GCM에서 같은 키·nonce의 재사용은 기밀성과 인증을 함께 손상시킬 수 있다.

스스로 확인하기

개념 확인 문제

문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.

01이전 암호문을 암호화하는 CFB와 이전 암호 출력 자체를 암호화하는 OFB를 어떻게 구분하는가?
정답 및 해설

CFB는 암호문 피드백, OFB는 출력 피드백이다. 두 방식 모두 복호화에 블록 암호의 정방향 함수 E_K를 사용한다.

02CBC 암호문 Ci의 한 비트가 바뀌면 인증 없이 복호화한 평문에는 어떤 영향이 생기는가?
정답 및 해설

P_i 블록이 손상되고 P_(i+1)의 같은 위치 비트가 반전된다. P_(i+2) 이후로 그 비트 오류가 계속 전파되는 것은 아니다.