맨위로가기

블록 암호 운용 방식

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

블록 암호 운용 방식은 블록 암호를 사용하여 메시지를 안전하게 암호화하는 다양한 방법을 의미한다. 초기 운용 방식은 ECB, CBC, OFB, CFB 등이 있으며, 이후 AES와 함께 CTR 모드, XTS-AES 모드 등이 추가되었다. 블록 암호는 기밀성을 제공하지만, 무결성을 위해 별도의 메시지 인증 코드가 필요하며, 기밀성과 데이터 무결성을 동시에 제공하는 인증된 암호화 방식(AE)도 존재한다. 초기화 벡터(IV)는 암호화를 무작위화하는 데 사용되며, 패딩은 블록 크기에 맞게 메시지를 조정하는 데 사용된다. 다양한 운용 방식이 정의되어 있으며, ECB, CBC, CFB, OFB, CTR 등이 대표적이다. 또한, CCM, GCM, SIV, AES-GCM-SIV와 같은 인증된 암호 방식도 존재한다. 오류 증식은 비트 오류의 영향을 설명하며, 현대 암호 모드에서는 덜 중요하게 여겨진다. 블록 암호는 다양한 암호화 프로토콜에도 사용된다.

더 읽어볼만한 페이지

  • 블록 암호 운용 방식 - CCM 모드
    CCM 모드는 기밀성과 인증을 위해 카운터 모드와 CBC-MAC을 결합한 인증 암호화 방식이며, 러스 하슬리, 더그 와이팅, 닐스 퍼거슨에 의해 설계되었고, IEEE 802.11i, IPsec 등 다양한 프로토콜에서 활용된다.
  • 블록 암호 운용 방식 - 초기화 벡터
    초기화 벡터는 블록 암호 운용 방식에서 암호문의 무작위성을 확보하고 동일 평문 블록 암호화로 인한 보안 취약점을 해결하기 위해 각 블록 암호화 단계에서 입력 데이터를 무작위화하는 데 사용되는 고유하고 예측 불가능한 값이다.
  • 암호 알고리즘 - 이진 코드
    이진 코드는 0과 1을 사용하여 정보를 표현하는 시스템으로, 고대 중국의 주역에서 기원하며, 컴퓨터 과학, 통신 등 다양한 분야에서 활용된다.
  • 암호 알고리즘 - 메시지 인증 코드
    메시지 인증 코드(MAC)는 메시지 무결성을 보장하기 위해 사용되는 암호화 기법으로, 송신자와 수신자가 동일한 키를 공유하여 MAC 생성, 확인 과정을 거친다.
블록 암호 운용 방식
블록 암호 운용 방식
유형암호화 알고리즘
관련블록 암호
표준ISO/IEC 10116

2. 역사 및 표준화

가장 초기의 운용 방식인 ECB, CBC, OFB 및 CFB는 1981년 FIPS 81, ''DES 운용 방식''에 명시되어 있다.[5] 2001년, 미국 국립표준기술연구소(NIST)는 AES를 블록 암호로 포함하고 CTR 모드를 추가하여 승인된 운용 방식 목록을 수정했다. (SP800-38A)[5] 2010년 1월, NIST는 XTS-AES를 SP800-38E, ''블록 암호 운용 방식 권장 사항: 저장 장치 기밀 유지를 위한 XTS-AES 모드''에 추가했다.[5] NIST에서 승인하지 않은 다른 기밀 유지 모드도 존재한다. 예를 들어, CTS는 암호 훔치기 모드이며 많은 인기 있는 암호화 라이브러리에서 사용할 수 있다.

블록 암호 방식 ECB, CBC, OFB, CFB, CTR 및 XTS는 기밀성을 제공하지만, 우발적인 수정이나 악의적인 조작으로부터 보호하지는 않는다. 수정 또는 조작은 CBC-MAC과 같은 별도의 메시지 인증 코드 또는 디지털 서명으로 감지할 수 있다. 암호화 커뮤니티는 전용 무결성 보장의 필요성을 인식했고 NIST는 HMAC, CMAC 및 GMAC로 대응했다. HMAC는 2002년 FIPS 198, ''키 기반 해시 메시지 인증 코드(HMAC)''로 승인되었으며, CMAC는 2005년 SP800-38B, ''블록 암호 운용 방식 권장 사항: 인증을 위한 CMAC 모드''로, GMAC는 2007년 SP800-38D, ''블록 암호 운용 방식 권장 사항: 갈루아/카운터 모드(GCM) 및 GMAC''에 따라 공식화되었다.[5]

암호화 커뮤니티는 기밀성 모드와 인증 모드를 합성(결합)하는 것이 어렵고 오류가 발생하기 쉽다는 것을 관찰했다. 따라서 기밀성과 데이터 무결성을 단일 암호화 기본 요소(암호화 알고리즘)로 결합한 모드를 제공하기 시작했다. 이러한 결합된 모드를 인증된 암호화, AE 또는 "authenc"라고 한다. AE 모드의 예로는 CCM (SP800-38C), GCM (SP800-38D), CWC, EAX, IAPM 및 OCB가 있다.[5]

운용 방식은 여러 국가 및 국제적으로 인정되는 표준 기구에서 정의한다. 주목할 만한 표준 기구에는 NIST, ISO (ISO/IEC 10116 포함[5]), IEC, IEEE, ANSI 및 IETF가 있다.[5] 비밀 유지를 위해 많은 암호 운용 방식이 정의되어 있으며, 이 중 ECB, CBC, OFB, CFB의 4가지 방식은 FIPS, ANSI 외에도 ISO, JIS에서 규격화되어 있다.[5] 또한 CTR은 AES 제정 시 추가된 방식이다.[5]

3. 초기화 벡터 (IV)

초기화 벡터(IV) 또는 시작 변수(SV)[5]는 암호화를 무작위화하여, 동일한 평문을 여러 번 암호화하더라도 서로 다른 암호문을 생성하는 데 사용되는 비트 블록이다.

초기화 벡터는 키와 다른 보안 요구 사항을 가지므로, 일반적으로 비밀일 필요는 없다. 대부분의 블록 암호 모드에서 초기화 벡터는 동일한 키에서 재사용되어서는 안 된다. 즉, 암호화 논스여야 한다. 많은 블록 암호 모드는 IV가 무작위 또는 의사 무작위여야 한다는 더 강력한 요구 사항을 가지고 있다. 일부 블록 암호는 특정 초기화 벡터와 관련하여 특정 문제를 가지고 있다(예: 일부 키에 대해 암호화가 생성되지 않는 모든 0 IV).

관련 사양(예: [http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf SP800-38A])에서 특정 블록 암호 모드에 대한 IV 요구 사항을 검토하는 것이 좋다.

CBCCFB에서 IV를 재사용하면 평문의 첫 번째 블록과 두 메시지가 공유하는 모든 공통 접두사에 대한 일부 정보가 유출된다.

OFBCTR에서 IV를 재사용하면 키 비트스트림이 재사용되어 보안이 손상된다.[8] 두 모드 모두 평문과 XOR된 비트스트림을 효과적으로 생성하고 이 비트스트림은 키와 IV에만 의존하기 때문에 이를 확인할 수 있다.

CBC 모드에서 IV는 암호화 시점에 예측 불가능(무작위 또는 의사 무작위)해야 한다. 특히, 메시지의 마지막 암호문 블록을 다음 메시지의 IV로 재사용하는 (이전의) 일반적인 방식은 안전하지 않다(예: 이 방법은 SSL 2.0에서 사용되었다). 공격자가 다음 평문이 지정되기 전에 IV(또는 이전 암호문 블록)를 알고 있는 경우, 동일한 키로 이전에 암호화된 일부 블록의 평문에 대한 추측을 확인할 수 있다(이것은 TLS CBC IV 공격으로 알려져 있다).[9]

일부 키의 경우, 모든 0 초기화 벡터는 일부 블록 암호 모드(CFB-8, OFB-8)가 내부 상태가 모두 0으로 고정되도록 생성할 수 있다. CFB-8의 경우, 모든 0 IV와 모든 0 평문은 1/256 키가 암호화를 생성하지 않게 하여 평문이 암호문으로 반환된다.[10] OFB-8의 경우, 모든 0 초기화 벡터를 사용하면 1/256 키에 대해 암호화가 생성되지 않는다.[11] OFB-8 암호화는 영향을 받는 키에 대해 평문을 암호화되지 않은 상태로 반환한다.

일부 모드(예: AES-SIV 및 AES-GCM-SIV)는 논스 오용에 더 강하도록, 즉 무작위성 생성이 결함이 있거나 공격자의 제어하에 있는 시나리오에 탄력적으로 구축되었다.


  • 합성 초기화 벡터(SIV)는 입력(추가 데이터 및 평문)에 대해 S2V라고 하는 의사 무작위 함수(PRF) 구성을 실행하여 내부 IV를 합성하여 외부 데이터가 IV를 직접 제어하는 것을 방지한다. 외부 논스/IV는 추가 데이터 필드로 S2V에 공급될 수 있다.
  • AES-GCM-SIV는 입력(추가 데이터 및 평문)에 대한 POLYVAL 갈루아 인증 모드를 실행한 다음 AES 연산을 수행하여 내부 IV를 합성한다.

4. 패딩

블록 암호는 고정된 크기의 단위로 작동하지만, 메시지는 다양한 길이로 제공된다. 따라서 일부 모드(특히 ECB 및 CBC)는 암호화 전에 마지막 블록을 패딩해야 한다. 여러 패딩 방식이 존재한다. 가장 간단한 방법은 null 바이트를 평문에 추가하여 길이를 블록 크기의 배수로 만드는 것이지만, 평문의 원래 길이를 복구할 수 있도록 주의해야 한다. 예를 들어 평문이 끝을 제외하고 null 바이트가 없는 C 스타일의 리터럴 문자열인 경우 이는 간단하다. 약간 더 복잡한 것은 원래 DES 방식인데, 이는 하나의 1 비트를 추가하고, 블록을 채우기에 충분한 0 비트를 추가하는 것이다. 메시지가 블록 경계에서 끝나면 전체 패딩 블록이 추가된다. 가장 정교한 것은 암호 텍스트 스틸링 또는 잔여 블록 종결과 같은 CBC 특정 방식인데, 이는 약간의 추가적인 복잡성을 희생하여 추가 암호 텍스트를 생성하지 않는다. 슈나이어와 퍼거슨은 두 가지 가능성을 제안하는데, 둘 다 간단하다. 값 128(16진수 80)인 바이트를 추가하고, 마지막 블록을 채우는 데 필요한 만큼의 0 바이트를 추가하거나, 마지막 블록을 모두 값 ''n''인 ''n'' 바이트로 패딩한다.

CFB, OFB 및 CTR 모드는 블록 크기의 배수가 아닌 길이의 메시지를 처리하기 위해 특별한 조치가 필요하지 않다. 이 모드는 블록 암호의 출력과 평문을 XOR하여 작동하기 때문이다. 평문의 마지막 부분 블록은 마지막 키 스트림 블록의 처음 몇 바이트와 XOR되어 마지막 부분 평문 블록과 동일한 크기의 최종 암호 텍스트 블록을 생성한다. 이러한 스트림 암호의 특성으로 인해 암호화된 암호 텍스트 데이터가 원래 평문 데이터와 동일한 크기여야 하는 응용 프로그램과 패딩 바이트를 추가하는 것이 불편한 스트리밍 형태로 데이터를 전송하는 응용 프로그램에 적합하다.

5. 운용 방식

암호 운용 방식은 암호화된 데이터에 존재하는 패턴을 가리는 것을 목표로 한다. 이는 ECB의 취약점에서 잘 나타난다.

암호 운용 방식은 암호 블록의 출력이나 다른 전역적으로 결정론적인 변수를 연속적인 암호 블록에 적용하여 패턴을 가린다. 아래 표는 제시된 방식들의 입력값을 요약한 것이다.

방식 요약
방식공식암호문
전자 코드북(ECB)Yi = F(평문i, 키)Yi
암호 블록 체이닝(CBC)Yi = 평문i XOR 암호문i−1F(Y, 키); 암호문0 = IV
전파 CBC(PCBC)Yi = 평문i XOR (암호문i−1 XOR 평문i−1)F(Y, 키); 암호문0 = IV
암호 피드백(CFB)Yi = 암호문i−1평문 XOR F(Y, 키); 암호문0 = IV
출력 피드백(OFB)Yi = F(Yi−1, 키); Y0 = F(IV, 키)평문 XOR Yi
카운터(CTR)Yi = F(IV + g(i), 키); IV = token()평문 XOR Yi



참고: ''g''(''i'')는 모든 결정론적 함수이며, 종종 항등 함수이다.

비밀 유지를 위해 많은 암호 운용 방식이 정의되어 있으며, 이 중 ECB, CBC, OFB, CFB의 4가지 방식은 FIPS, ANSI 외에도 ISO, JIS에서 규격화되어 있다. CTR은 AES 제정 시 추가된 방식이다.

대표적인 암호 운용 방식에는 다음이 있다. (C_i는 암호화된 i번째 블록, M_i는 암호화 전 i번째 블록, E_K(\_)는 블록 암호 처리를 나타낸다.)


  • '''ECB''' (전자 코드북)
  • '''CBC''' (암호 블록 체이닝)
  • '''PCBC''' (전파 CBC)
  • '''CFB''' (암호 피드백)
  • '''OFB''' (출력 피드백)
  • '''CTR''' (카운터)


이 외에도, CTS, 2DEM, ABC, IGE, F8@3GPP 등의 방식이 존재한다.

5. 1. 전자 코드북 (ECB)

'''전자 코드북'''(electronic codebook, '''ECB''')은 운용 방식 중 가장 간단한 구조를 가지며, 암호화하려는 메시지를 여러 블록으로 나누어 각각 암호화하는 방식이다.

ECB 모드 암호화


ECB 모드 복호화


전자 코드북은 모든 블록이 같은 암호화 키를 사용하기 때문에 보안에 취약하다. 만약 암호화 메시지를 여러 부분으로 나누었을 때 두 블록이 같은 값을 가진다면, 암호화한 결과 역시 같다.[19][20][21][22]

이것은 공격자가 비슷한 메시지를 반복적으로 암호화하는 반복 공격에도 취약한 성질을 가진다.

비트맵 그림을 여러 블록으로 나누어 암호화한 결과, ECB 방식의 경우 원본 그림의 색은 보이지 않지만 윤곽이 드러나 보인다.

ECB는 동일한 평문 블록을 동일한 암호문 블록으로 암호화할 때 데이터 패턴을 숨기지 못하며, 암호화 프로토콜에 사용하는 것을 권장하지 않는다.

방식 요약
방식공식암호문
전자 코드북(ECB)Yi = F(평문i, 키)Yi



ECB 모드는 암호화 및 복호화 과정이 병렬로 처리될 수 있으며, 임의 읽기가 가능하다.

5. 2. 암호 블록 체인 방식 (CBC)

'''암호 블록 체인''' (cipher-block chaining, '''CBC''') 방식은 1976년 IBM에 의해 개발되었다.[50] 각 블록은 암호화되기 전에 이전 블록의 암호화 결과와 XOR되며, 첫 블록의 경우에는 초기화 벡터가 사용된다. 초기화 벡터가 같은 경우 출력 결과가 항상 같기 때문에, 매 암호화마다 다른 초기화 벡터를 사용해야 한다.

CBC 방식은 현재 널리 사용되는 운용 방식 중 하나이다. CBC는 암호화 입력 값이 이전 결과에 의존하기 때문에 병렬화가 불가능하지만, 복호화의 경우 각 블록을 복호화한 다음 이전 암호화 블록과 XOR하여 복구할 수 있기 때문에 병렬화가 가능하다.

CBC 모드에서 각 평문 블록은 암호화되기 전에 이전 암호문 블록과 XOR 연산을 수행한다. 이러한 방식으로 각 암호문 블록은 해당 시점까지 처리된 모든 평문 블록에 의존한다. 각 메시지를 고유하게 만들기 위해 첫 번째 블록에 초기화 벡터를 사용해야 한다.

CBC 암호화의 수학 공식은 다음과 같다. (첫 번째 블록의 색인은 1)

: C_i = E_K(P_i \oplus C_{i-1}),

: C_0 = IV,

CBC 복호화의 수학 공식은 다음과 같다.

: P_i = D_K(C_i) \oplus C_{i-1},

: C_0 = IV.

CBC 방식 요약
암호화 병렬화 가능 여부복호화 병렬화 가능 여부임의 읽기 접근
아니요


5. 3. 증식적 암호 블록 체인 방식 (PCBC)

전파 암호 블록 체인(PCBC, Propagating Cipher Block Chaining) 방식은 암호화 및 복호화 과정에서 암호문의 작은 변화가 이후 모든 블록에 영향을 미치도록 설계되었다.[25][26] 각 평문 블록은 암호화되기 전에 이전 평문 블록 및 이전 암호문 블록과 XOR 연산을 거친다. 초기화 벡터(IV)는 첫 번째 블록에 사용된다.

PCBC 모드 암호화


PCBC 모드 복호화


암호화 및 복호화 과정은 다음과 같다.

  • 암호화: `C_i = E_K(P_i \oplus P_{i-1} \oplus C_{i-1}), P_0 \oplus C_0 = IV`
  • 복호화: `P_i = D_K(C_i) \oplus P_{i-1} \oplus C_{i-1}, P_0 \oplus C_0 = IV`


PCBC는 Kerberos v4와 WASTE에서 주로 사용되었으나, 널리 사용되지는 않는다. PCBC 방식으로 암호화된 메시지에서 인접한 두 암호문 블록을 교환하면 이후 블록들의 복호화에는 영향을 주지 않는다.[27] 이러한 특성 때문에 Kerberos v5에서는 PCBC 대신 다른 암호화 방식을 사용한다.

PCBC 방식 요약
특징내용
암호화 병렬화 가능 여부아니요
복호화 병렬화 가능 여부아니요
임의 접근 가능 여부아니요


5. 4. 암호 피드백 (CFB)

암호 피드백(cipher feedback, '''CFB''') 방식은 CBC 방식의 변형으로, 블록 암호를 자기 동기 스트림 암호로 변환한다. CFB의 동작 방식은 CBC와 비슷하며, 특히 CFB 암호 해제 방식은 CBC 암호화의 역순과 거의 비슷하다.

:C_i = E_K (C_{i-1}) \oplus P_i

:P_i = E_K (C_{i-1}) \oplus C_i

:C_{0} = \ \mbox{IV}

CFB 암호화


CFB 복호화


블록 암호화 알고리즘에 따라 Shift 연산을 사용하기도 한다. Shift되는 비트의 양에 따라 CFB-8, 혹은 CFB-1이라고 한다.[40] 암호화, 복호화 연산의 각 Round마다 IV로부터 Shift된 값을 사용한다.

CFB 모드는 암호화 처리는 병렬화가 불가능하지만, 복호화 처리는 병렬화 및 임의 읽기가 가능하다.

5. 5. 출력 피드백 (OFB)

출력 피드백(Output Feedback, OFB) 모드는 블록 암호를 동기식 스트림 암호로 만든다. 키스트림 블록을 생성한 다음, 평문 블록과 XOR 연산을 수행하여 암호문을 얻는다. 다른 스트림 암호와 마찬가지로, 암호문의 비트를 반전시키면 같은 위치의 평문 비트도 반전된다. 이러한 특성으로 인해 많은 오류 정정 부호가 암호화 전에 적용되더라도 정상적으로 작동할 수 있다.[29]

XOR 연산의 대칭성 때문에 암호화와 복호화는 정확히 동일하다.

:C_j = P_j \oplus O_j,

:P_j = C_j \oplus O_j,

:O_j = E_K(I_j),

:I_j = O_{j-1},

:I_0 = \text{IV}.

각 출력 피드백 블록 암호 연산은 이전 연산에 모두 의존하므로 병렬로 수행될 수 없다. 그러나 평문 또는 암호문은 최종 XOR 연산에만 사용되므로, 블록 암호 연산은 미리 수행할 수 있으며, 평문 또는 암호문을 사용할 수 있게 되면 최종 단계를 병렬로 수행할 수 있다.

CFB 모드처럼 부분 블록을 피드백으로 사용하여 OFB 모드를 사용하면 평균 주기 길이가 232 이상 감소한다. 데이비스와 파킨이 제안하고 실험 결과로 입증된 수학적 모델은 전체 피드백으로만 얻을 수 있는 최대값에 가까운 평균 주기 길이를 얻을 수 있음을 보여주었다. 이러한 이유로 잘린 피드백에 대한 지원은 OFB 사양에서 제거되었다.[29]

5. 6. 카운터 (CTR)

카운터(Counter, '''CTR''') 방식은 블록 암호를 스트림 암호로 바꾸는 구조를 가진다. 각 블록마다 현재 블록이 몇 번째인지 값을 얻어, 그 숫자와 nonce를 결합하여 블록 암호의 입력으로 사용한다. 그렇게 각 블록 암호에서 연속적인 난수를 얻은 다음 암호화하려는 문자열과 XOR한다.[32]

CTR 모드는 각 블록의 암호화 및 복호화가 이전 블록에 의존하지 않으므로 병렬 처리가 가능하다. 또한 암호화된 문자열에서 원하는 부분만 복호화하는 것도 가능하다.[32]

CTR 모드 암호화


CTR 모드 복호화


휘트필드 디피와 마틴 헬만이 1979년에 CTR 모드를 소개했다.[32]

CTR 모드는 OFB와 유사한 특성을 가지지만, 복호화 과정에서 임의 접근이 가능하다. CTR 모드는 여러 프로세서에서 효율적으로 작동하며, 블록 암호화를 병렬로 처리할 수 있다. OFB에서 발생할 수 있는 짧은 주기의 문제도 CTR 모드에서는 나타나지 않는다.[33]

nonce가 무작위인 경우, 카운터와 nonce를 결합(결합, 덧셈, XOR 등)하여 고유한 카운터 블록을 생성할 수 있다. 비무작위 nonce(예: 패킷 카운터)의 경우, 128비트 카운터 블록의 상위 64비트에 nonce를 저장하고 하위 64비트에 카운터를 저장하는 방식으로 nonce와 카운터를 연결해야 한다.[34]

6. 인증된 암호 방식

여러 운용 방식이 하나의 암호 기본 요소에서 기밀성과 인증을 결합하도록 설계되었다.[12] 이러한 방식에는 OCB, EAX, CWC, CCM, GCM 등이 있다. 인증 암호화 모드는 단일 패스 모드 또는 이중 패스 모드로 분류된다.

일부 모드는 암호화되지 않은 관련 데이터의 인증도 허용하는데, 이를 AEAD(연관 데이터를 갖는 인증 암호화) 방식이라고 한다. 예를 들어 EAX 모드는 이중 패스 AEAD 방식이지만, OCB 모드는 단일 패스 방식이다.

인증에 사용되는 운용 방식은 다음과 같다.


  • '''CCM''' (Counter with CBC-MAC)
  • '''GCM''' (Galois/Counter Mode)
  • '''OCB''' (Offset CodeBook)
  • '''XCBC''' (eXtended Ciphertext Block Chaining)
  • '''XCBC-MAC'''

6. 1. 갈루아/카운터 모드 (GCM)

갈루아/카운터 모드(GCM, Galois/counter mode)는 잘 알려진 카운터 모드 암호화 방식과 새로운 갈루아 모드 인증 방식을 결합한 것이다. 주요 특징은 인증에 사용되는 갈루아 필드 곱셈의 병렬 계산이 쉽다는 것이다. 이 기능은 암호화 알고리즘보다 더 높은 처리량을 가능하게 한다.

GCM은 128비트의 블록 크기를 가진 블록 암호에 대해 정의된다. 갈루아 메시지 인증 코드(GMAC, Galois message authentication code)는 GCM의 인증 전용 변형으로, 증분 메시지 인증 코드를 형성할 수 있다. GCM과 GMAC 모두 임의의 길이의 초기화 벡터를 허용할 수 있다. GCM은 병렬 처리를 최대한 활용할 수 있으며, GCM을 구현하면 명령어 파이프라인 또는 하드웨어 파이프라인을 효율적으로 사용할 수 있다. CBC 운용 모드는 효율성과 성능을 저해하는 파이프라인 중단을 발생시킨다.

CTR과 마찬가지로 블록은 순차적으로 번호가 매겨지며, 이 블록 번호는 IV와 결합되어 블록 암호 ''E'' (일반적으로 AES)로 암호화된다. 이 암호화의 결과는 평문과 XOR되어 암호문을 생성한다. 모든 카운터 모드와 마찬가지로, 이는 본질적으로 스트림 암호이므로 암호화되는 각 스트림에 대해 다른 IV를 사용하는 것이 필수적이다.

암호문 블록은 다항식의 계수로 간주되며, 이는 유한체 산술을 사용하여 키에 종속된 점 ''H''에서 평가된다. 그 결과는 암호화되어 데이터의 무결성을 확인하는 데 사용할 수 있는 인증 태그를 생성한다. 암호화된 텍스트에는 IV, 암호문 및 인증 태그가 포함된다.

6. 2. CCM (Counter with CBC-MAC)

'''CCM'''(Counter with CBC-MAC)은 인증 암호화 알고리즘으로, 인증과 기밀성을 모두 제공하도록 설계되었다. CCM 모드는 128비트 블록 길이를 가진 블록 암호에 대해서만 정의된다.[14][15]

6. 3. 합성 초기화 벡터 (SIV)

SIV는 의사 난수 함수 S2V를 사용하여 내부 IV를 합성한다. S2V는 CMAC를 기반으로 하는 키 해시이며, 함수의 입력은 다음과 같다.

  • 추가 인증 데이터 (0개, 1개 또는 여러 개의 AAD 필드가 지원됨)
  • 평문
  • 인증 키 (K1)


SIV는 암호화 키 (K2)로 키잉된 AES-CTR을 사용하여 S2V 출력과 평문을 암호화한다.

SIV는 외부 논스 기반 인증 암호화를 지원할 수 있으며, 이 경우 인증 데이터 필드 중 하나가 이 목적으로 사용된다. RFC5297[16]은 상호 운용성을 위해 마지막 인증 데이터 필드를 외부 논스로 사용해야 한다고 명시하고 있다.

두 개의 키, 즉 인증 키 K1과 암호화 키 K2를 사용하기 때문에 SIV AEAD 변형에 대한 명명 방식은 약간의 혼란을 야기할 수 있다. 예를 들어 AEAD_AES_SIV_CMAC_256은 AES-256이 아닌 두 개의 AES-128 키를 사용하는 AES-SIV를 의미한다.

6. 4. AES-GCM-SIV

AES-GCM-SIV는 고급 암호화 표준(AES)에 대한 운용 방식 중 하나로, 갈루아/카운터 모드(GCM)와 유사한 성능을 제공하며 암호화 논스를 재사용하는 경우에도 오용 저항성을 제공한다. 이 구조는 RFC 8452에 정의되어 있다.[17]

AES-GCM-SIV는 내부 초기화 벡터(IV)를 합성한다. 추가 인증 데이터와 평문의 해시를 POLYVAL 갈루아 해시 함수를 사용하여 파생한다. 그런 다음 해시는 AES 키로 암호화되어 인증 태그 및 AES-CTR 초기화 벡터로 사용된다.

AES-GCM-SIV는 매우 유사한 이름의 알고리즘인 GCM-SIV의 개선된 버전으로, 몇 가지 매우 작은 변경 사항(예: AES-CTR 초기화 방법)이 있지만 보안에 실질적인 이점을 제공한다. "이러한 추가로 인해 GCM-SIV에서 허용되었던 232 메시지로의 상당한 제한에 비해 동일한 키로 최대 250 메시지를 암호화할 수 있다."[18]

7. 오류 증식

메시지 인증 코드인증된 암호 방식이 널리 사용되기 전에는, 암호 운용 방식의 "오류 증식" 특성이 중요한 논의 대상이었다. 오류 증식은 암호화 과정에서 비트 오류가 발생했을 때, 복호화 과정에서 이 오류가 어떻게 확산되는지를 나타낸다.

현대 암호 모드에서는 오류 전파가 덜 중요한 문제로 간주된다. 현대적인 인증 암호화(AEAD) 또는 메시지 인증 코드를 사용하는 프로토콜에서는, 비트 오류가 발생하면 복호화가 완전히 중단되어야 하며, 복호화 과정에서 특정 비트 오류가 생성되어서는 안 된다. 즉, 복호화가 성공했다면 비트 오류가 없어야 한다.

다음 표는 다양한 암호 모드에서 비트 오류가 복호화에 미치는 영향을 요약한 것이다.

모드Ci의 비트 오류의 영향IV 또는 논스(nonce)의 비트 오류의 영향
ECBPi의 무작위 비트 오류해당 없음
CBCPi의 무작위 비트 오류
Pi+1의 특정 비트 오류
P1의 특정 비트 오류
CFBPi의 특정 비트 오류
동기화가 복원될 때까지 Pi+1, …,의 무작위 비트 오류
동기화가 복원될 때까지 P1, …,의 무작위 비트 오류
OFBPi의 특정 비트 오류P1, P2, …, Pn의 무작위 비트 오류
CTRPi의 특정 비트 오류카운터 블록 Ti의 비트 오류에 대한 Pi의 무작위 비트 오류



예를 들어, ECB 모드에서는 암호문에 한 블록의 오류가 발생하면 복호화된 평문에도 한 블록의 오류가 발생한다. 반면, CBC 모드에서는 오류가 두 블록에 영향을 미친다. 과거에는 이러한 복원력이 무작위 오류에 대해 바람직하다고 여겨졌지만, 공격자가 메시지를 조작할 가능성을 높인다는 비판도 있었다.

따라서, 적절한 무결성 보호를 통해 오류 발생 시 메시지 전체를 거부하는 것이 더 안전하다. 무작위 오류에 대한 저항력이 필요한 경우에는 전송 전에 오류 정정 부호를 암호문에 적용해야 한다.

8. 기타 운용 방식 및 암호 기본 요소

미국 국립표준기술연구소(NIST)는 블록 암호에 대해 제안된 다양한 운용 방식 목록을 유지 관리하고 있다.[28][35] 디스크 암호화에는 특수 목적 모드가 사용되는데, 예를 들어 조정 가능한 좁은 블록 암호화 모드(LRW, XEX, XTS)와 넓은 블록 암호화 모드(CMC, EME)는 디스크 섹터를 안전하게 암호화하기 위해 설계되었다(디스크 암호화 이론 참조).

블록 암호는 다른 암호화 프로토콜에서도 사용될 수 있다. 이러한 프로토콜에서 블록 암호는 위에 설명된 블록 모드와 유사한 운용 방식으로 사용된다. 하지만, 모든 프로토콜과 마찬가지로 암호화의 안전성을 확보하기 위해서는 이러한 운용 모드를 신중하게 설계해야 한다.

또한 블록 암호를 사용하여 암호화 해시 함수를 구축하는 여러 방법이 있으며, 이에 대한 자세한 내용은 일방향 압축 함수에서 확인할 수 있다. 암호학적으로 안전한 의사 난수 생성기(CSPRNG) 역시 블록 암호를 사용하여 구축할 수 있다. 메시지 인증 코드(MAC)는 CBC-MAC, OMAC, PMAC와 같이 블록 암호로부터 만들어지기도 한다.

참조

[1] 웹사이트 Block cipher modes http://csrc.nist.gov[...] NIST 2013-04-12
[2] 서적 Cryptography Engineering: Design Principles and Practical Applications Wiley Publishing, Inc.
[3] 웹사이트 Proposed modes http://csrc.nist.gov[...] NIST 2013-04-14
[4] 서적 Handbook of Applied Cryptography https://archive.org/[...] CRC Press
[5] 간행물 ISO/IEC 10116:2006 – Information technology – Security techniques – Modes of operation for an ''n''-bit block cipher http://www.iso.org/i[...]
[6] 문서 Chapter 3 - Domain 3: Security engineering http://www.sciencedi[...] Syngress 2020-11-01
[7] 웹사이트 Current modes http://csrc.nist.gov[...] NIST 2013-04-12
[8] 웹사이트 Stream Cipher Reuse: A Graphic Example http://cryptosmith.c[...] Cryptosmith LLC 2015-01-07
[9] 문서 Security of CBC Ciphersuites in SSL/TLS: Problems and Countermeasures http://www.openssl.o[...] 2004-05-20
[10] 웹사이트 Zerologon: Unauthenticated domain controller compromise by subverting Netlogon cryptography (CVE-2020-1472) https://www.secura.c[...] 2020-10-14
[11] 웹사이트 Netlogon CFB8 considered harmful. OFB8 also. https://github.com/b[...] 2020-10-14
[12] conference Fast Encryption and Authentication: XCBC Encryption and XECB Authentication Modes https://link.springe[...] Springer 2002
[13] conference Encryption Modes with Almost Free Message Integrity https://iacr.org/arc[...] Springer 2001-05
[14] 문서 Recommendation for Block Cipher Modes of Operation: The CCM Mode for Authentication and Confidentiality http://nvlpubs.nist.[...] 2004-05
[15] 간행물 Counter with CBC-MAC (CCM) IETF 2003-09
[16] 웹사이트 Synthetic Initialization Vector (SIV) Authenticated Encryption Using the Advanced Encryption Standard (AES) https://tools.ietf.o[...] 2020-10-21
[17] 간행물 AES-GCM-SIV: Nonce Misuse-Resistant Authenticated Encryption IETF 2019-08-14
[18] 간행물 AES-GCM-SIV: Specification and Analysis https://eprint.iacr.[...] 2020-10-19
[19] 웹사이트 Recommendation for Block Cipher Modes of Operation http://nvlpubs.nist.[...] NIST 2017-04-01
[20] 서적 Handbook of Applied Cryptography https://books.google[...] CRC Press 2018
[21] 서적 Cryptography's Role in Securing the Information Society https://books.google[...] National Academies Press 1996
[22] 서적 Applied Cryptography: Protocols, Algorithms and Source Code in C https://books.google[...] John Wiley & Sons 2015
[23] 문서 Message verification and transmission error detection by block chaining 1976
[24] 웹사이트 The Transport Layer Security (TLS) Protocol Version 1.1 http://www.ietf.org/[...] 2015-01-07
[25] 웹사이트 Kryptographie FAQ: Frage 84: What are the Counter and PCBC Modes? http://www.iks-jena.[...] 2018-04-28
[26] 서적 Network Security Prentice Hall
[27] 서적 Proceedings, Crypto '89 Springer
[28] 간행물 SP 800-38A, Recommendation for Block Cipher Modes of Operation: Methods and Techniques http://csrc.nist.gov[...] 2018-04-28
[29] 서적 Advances in Cryptology, Proceedings of CRYPTO 82 Plenum Press
[30] 서적 Advances in Cryptology, Proceedings of CRYPTO 82 Plenum Press
[31] 서적 Cryptography Engineering 2010
[32] 웹사이트 Comments to NIST concerning AES Modes of Operations: CTR-Mode Encryption http://csrc.nist.gov[...] 2000
[33] 웹사이트 Basic Block Cipher Modes http://www.quadibloc[...] 2018-04-28
[34] 웹사이트 Cryptography I https://www.coursera[...] 2018-04-28
[35] 웹사이트 Modes Development – Block Cipher Techniques – CSRC http://csrc.nist.gov[...] Computer Security Division, Information Technology Laboratory, National Institute of Standards and Technology, U.S. Department of Commerce 2018-04-28
[36] 특허 Message verification and transmission error detection by block chaining 1976
[37] 웹사이트 http://www.iks-jena.[...]
[38] 서적 Network Security Prentice Hall
[39] 서적 Proceedings, Crypto '89 Springer
[40] 보고서 NIST: Recommendation for Block Cipher Modes of Operation http://csrc.nist.gov[...]
[41] 서적 Advances in Cryptology, Proceedings of CRYPTO 82 Plenum Press
[42] 웹사이트 http://www.crypto.ru[...]
[43] 서적 Advances in Cryptology, Proceedings of CRYPTO 82 Plenum Press
[44] 문서 Comments to NIST concerning AES modes of operation: CTR-mode encryption 2000
[45] 문서 Cryptography Engineering 2010
[46] 웹사이트 http://www.quadibloc[...]
[47] 서적 Handbook of Applied Cryptography http://www.cacr.math[...] CRC Press
[48] 웹인용 Block Cipher Modes http://csrc.nist.gov[...] NIST Computer Security Resource Center
[49] 웹인용 FIPS 81: DES Modes of Operation http://www.itl.nist.[...] NIST Computer Security Resource Center 2009-06-02
[50] 특허 Message verification and transmission error detection by block chaining 1976



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com