Chapter 5. 블록 암호 운영 방식(Block Cipher Operation)¶
1절. 블록 암호의 모드들(Modes of Block Cipher)
1절. 블록 암호의 모드들(Modes of Block Cipher)¶
- 블록 암호 : 고정된 길이의 하나 블록만 암호화할 경우 적합
ECB(Electronic Code Book)¶
-
암호화(Encryption)
-
\(C_j = E(K, P_j)\)
- \(j = 1, …, N\)
-
복호화(Decryption)
-
\(P_j = D(K, C_j)\)
- \(j = 1, …, N\)
ECB의 단점¶
- 결정적(deterministic)인 ECB
- 동일한 평문 블록이 동일한 암호문 블록으로 암호화
- ECB 모드를 사용하여 넓은 단색 영역을 포함한 비트맵 이미지를 암호화할 때, 암호문에 평문 데이터 패턴이 그대로 드러남
초기화 벡터(IV : Initial Vector)¶
-
생성 이유
-
여러 운용 모드에서 암호화를 무작위화하여 동일한 평문을 여러 번 암호화하더라도 서로 다른 암호문을 생성하도록 하는 비트 블록
-
보안 요구사항
- 비밀로 유지될 필요 없음
- 초기화 벡터는 동일한 키 아래에서 절대로 재사용 불가
- (In CBC)추가적으로 암호화 시점에 IV 예측 불가능
CBC(Cipher Block Chaining)¶
-
암호화(Encryption)
-
\(C_0 = IV\)
-
\(C_j = E(K, [P_j ⊕ C_{j−1}])\)
-
복호화(Decryption)
-
\(C_0 = IV\)
- \(P_j = D(K, C_j) ⊕ C_{j−1}\)
CFB(Cipher Feedback)¶
-
암호화(Encryption)
-
\(C_0 = IV\)
-
\(C_j = E(K, C_{j−1}) ⊕ P_j\)
-
복호화(Decryption)
-
\(C_0 = IV\)
- \(P_j = E(K, C_{j−1}) ⊕ C_j\)
OFB(Output Feedback)¶
-
암호화(Encryption)
-
\(I_0 = IV\)
- \(I_j = O_{j−1}\)
- \(O_j = E(K, I_j)\)
-
\(C_j = P_j ⊕ O_j\)
-
복호화(Decryption)
-
\(I_0 = IV\)
- \(I_j = O_{j−1}\)
- \(O_j = E(K, I_j)\)
- \(P_j = C_j ⊕ O_j\)
CTR(Counter)¶
-
암호화(Encryption)
-
\(C_j = P_j ⊕ E(K, T_j)\)
-
복호화(Decryption)
-
\(P_j = C_j ⊕ E(K, T_j)\)
블록 암호 분류 및 특징¶
-
CFB, OFB, CTR
-
암호화 방향에서만 사용
-
OFB, CTR
-
전송 중 발생한 비트 오류 전파 X
-
블록 암호 연산 사전에 수행
-
CTR
-
평문 또는 암호문의 i번째 블록을 임의 접근 방식으로 처리
- 블록을 병렬로 암호화 / 복호화할 수 있는 다중 프로세서 환경에 적합
NIST 블록 암호 운용 모드¶
-
기밀성(confidentiality) 모드(8가지)
-
ECB, CBC, OFB, CFB, CTR, XTS-AES, FF1, FF3
-
인증(authentication) 모드 (1가지)
-
CMAC
-
기밀성과 인증 결합 모드 (5가지)
-
CCM, GCM, KW, KWP, TKW