블록 암호 모드 동작

Block cipher mode of operation

암호학에서 블록 암호 모드는 블록 암호를 사용하여 기밀성이나 [1]인증 등의 정보 보안을 제공하는 알고리즘입니다.블록 암호 자체는 [2]블록이라고 불리는 고정 길이 비트 그룹의 안전한 암호화 변환(암호화 또는 복호화)에만 적합합니다.동작 모드는 암호의 단일 블록 연산을 반복적으로 적용하여 [3][4][5]블록보다 큰 양의 데이터를 안전하게 변환하는 방법을 설명합니다.

대부분의 모드에서는 암호화 조작별로 고유한 바이너리 시퀀스가 필요합니다.이러한 바이너리 시퀀스는, 초기화 벡터(IV)라고 불립니다.IV는 비반복 모드여야 하며 일부 모드에서는 랜덤 모드여야 합니다.초기화 벡터는 같은 [6]평문같은 키로 여러 번 독립적으로 암호화되어 있는 경우에도 고유한 암호문이 생성되도록 하기 위해 사용됩니다.블록 암호는 여러 블록 크기로 작동할 수 있지만 변환 중에는 블록 크기가 항상 고정됩니다.블록 암호 모드는 전체 블록에서 작동하며 데이터의 마지막 [2]부분이 현재 블록 크기보다 작을 경우 전체 블록에 패딩해야 합니다.단, 블록 암호를 스트림 암호로 효과적으로 사용하기 때문에 패딩이 필요하지 않은 모드가 있습니다.

지금까지 암호화 모드는 다양한 데이터 수정 시나리오에서 오류 전파 특성에 관해 광범위하게 연구되어 왔습니다.이후 개발에서는 무결성 보호를 완전히 별개의 암호화 목표로 간주했습니다.최신 동작 모드 중에는 기밀성과 신뢰성을 효율적으로 조합한 것이 있으며, 이를 인증 암호화 [7]모드라고 합니다.

이력 및 표준화

ECB, CBC, OFB 및 CFB(모든 것에 대해 아래 참조)의 초기 작동 모드는 1981년으로 거슬러 올라가며 FIPS 81, DES 작동 모드에 명시되어 있습니다.2001년 미국 국립표준기술연구소(NIST)는 AES를 블록 암호포함시키고 SP800-38A에 CTR 모드를 추가하여 승인된 동작 모드 목록을 수정했습니다.마지막으로 2010년 1월 NIST는 XTS-AES를 SP800-38E에 추가했습니다.블록 암호 모드에 대한 권장 사항은 다음과 같습니다. 스토리지 디바이스의 기밀성을 위한 XTS-AES 모드.NIST에 의해 승인되지 않은 다른 기밀유지 모드가 존재한다.예를 들어 CTS는 암호문 도용 모드이며 많은 일반적인 암호화 라이브러리에서 사용할 수 있습니다.

블록 암호 모드 ECB, CBC, OFB, CFB, CTR 및 XTS는 기밀성을 제공하지만 우발적인 변경이나 악의적인 조작으로부터 보호하지는 않습니다.변경 또는 조작은 CBC-MAC 등의 개별 메시지 인증 코드 또는 디지털 서명을 사용하여 검출할 수 있습니다.암호화 커뮤니티는 전용 무결성 보증이 필요하다는 것을 인식하고 NIST는 HMAC, CMAC 및 GMAC와 함께 대응했습니다.HMAC2002년에 FIPS 198, The Keyed-Hash Message Authentication Code(HMAC;해시 메시지 인증 코드), CMAC는 2005년에 SP800-38B, Recommendation for Block Cipher Modes of Operation: 인증용 CMAC 모드GMAC는 2007년에 SP800-38D, 동작 블록 암호 모드 권장: Galois/Counter Mode(GCM; 갈로아/카운터 모드) 및 GMAC에 의해 공식화되었습니다.

암호화 커뮤니티에서는 기밀성 모드와 인증 모드를 조합하는 것은 어렵고 오류가 발생하기 쉬운 일이라는 것을 알게 되었습니다.따라서 기밀성과 데이터 무결성을 하나의 암호화 프리미티브(암호화 알고리즘)로 결합하는 모드를 제공하기 시작했습니다.이러한 조합 모드를 인증 암호화, AE 또는 "authentic"이라고 합니다.AE 모드의 예로는 CCM(SP800-38C), GCM(SP800-38D), CWC, EAX, IAPMOCB가 있습니다.

운영 모드는 다수의 국가 및 국제적으로 공인된 표준 기구에 의해 정의된다.주목할 만한 표준 조직으로는 NIST, ISO(ISO/IEC 10116[5] 사용), IEC, IEEE, ANSI 및 IETF있습니다.

초기화 벡터(IV)

Initialization Vector(IV; 초기화 벡터) 또는 Starting Variable(SV;[5] 시작 변수)는 여러 모드에서 사용되는 비트 블록으로, 같은 평문이 여러 번 암호화되어도 느린 키 재생성 프로세스가 [citation needed]필요하지 않습니다.

초기화 벡터는 키와 다른 보안 요건을 가지므로 보통 IV가 비밀일 필요는 없습니다.대부분의 블록 암호 모드에서는 초기화 벡터를 같은 키(암호 난스)로 재사용하지 않는 것이 중요합니다.많은 블록 암호 모드에는 IV가 랜덤 또는 의사 난수여야 하는 등 더 강력한 요건이 있습니다.일부 블록 암호에는 (일부 키에 대해) 모든 0 IV가 암호화를 생성하지 않는 등 특정 초기화 벡터에 특정 문제가 있습니다.

SP800-38A 등 특정 블록 암호 모드에 대한 IV 요건을 관련 사양으로 검토할 것을 권장합니다.

CBC 및 CFB의 경우 IV를 재사용하면 플레인텍스트의 첫 번째 블록 및2개의 메시지에 의해 공유되는 공통 프레픽스에 관한 정보가 일부 유출됩니다.

OFB 및 CTR의 경우 IV를 재사용하면 키비트스트림 재사용이 발생하여 보안이 [8]깨집니다.이는 두 모드 모두 플레인텍스트와 XOR되는 비트스트림을 효과적으로 생성하여 이 비트스트림이 키와 IV에만 의존하기 때문입니다.

CBC 모드에서는 암호화 시 IV는 예측할 수 없는(랜덤 또는 의사랜덤) 것이어야 합니다.특히, (이전에는) 메시지의 마지막 암호 텍스트블록을 다음 메시지의 IV로 재사용하는 일반적인 방법은 안전하지 않습니다(예를 들어 이 방식은 SSL 2.0에서 사용되었습니다).공격자가 다음 평문이 지정되기 전에 IV(또는 이전 암호문 블록)를 알고 있으면 이전에 같은 키로 암호화되어 있던 일부 블록의 평문에 대한 추측을 확인할 수 있습니다(이것은 TLS CBC IV [9]공격이라고 불립니다).

일부 키에서는 All-Zero 초기화 벡터가 일부 블록 암호 모드(CFB-8, OFB-8)를 생성하여 내부 상태를 All-Zero로 고정할 수 있습니다.CFB-8의 경우, all-zero IV 및 all-zero 평문에서는 1/256 키의 암호화가 생성되지 않고 평문이 [10]암호문으로서 반환됩니다.OFB-8 의 경우, 모두 제로 초기화 벡터를 사용하면,[11] 키의 1/256 에 대해서 암호화가 생성되지 않습니다.OFB-8 암호화는 영향을 받는 키에 대해 암호화되지 않은 평문을 반환합니다.

일부 모드(AES-SIV 및 AES-GCM-SIV 등)는 비사용 내성이 향상되도록 구축되어 있습니다.즉, 랜덤성 생성에 장애가 있거나 공격자의 제어 하에 있는 시나리오에 대한 복원력이 향상됩니다.

  • 합성초기화벡터(SIV)는 입력(추가 데이터 및 평문) 상에서 S2V라고 불리는 의사랜덤함수(PRF) 구성을 실행하여 내부 IV를 합성함으로써 외부 데이터가 IV를 직접 제어하는 것을 방지한다.외부 난스 / IV는 추가 데이터 필드로 S2V에 공급될 수 있습니다.
  • AES-GCM-SIV는 입력 시 POLYVAL Galois 모드 인증(추가 데이터 및 플레인텍스트)을 실행하고 이어서 AES 조작을 실행하여 내부 IV를 통합합니다.

패딩

블록 암호는 고정 크기(블록 크기라고 함) 단위로 작동하지만 메시지는 다양한 길이로 제공됩니다.따라서 일부 모드(ECBCBC)에서는 암호화 전에 최종 블록을 패딩해야 합니다.패딩 방식에는 몇 가지가 있습니다.가장 간단한 방법은 플레인텍스트늘바이트를 추가하여 블록사이즈의 배수로 하는 것입니다만, 플레인텍스트의 원래 길이를 회복할 수 있도록 주의해 주세요.예를 들어 플레인텍스트가 말미에 늘바이트가 없는 C스타일 문자열인 경우 등입니다.조금 더 복잡한 것은 원래의 DES 방식입니다., 1비트를 추가한 후 블록을 채우기에 충분한0비트를 추가하는 것입니다.메시지가 블록 경계로 끝나면 패딩 블록 전체가 추가됩니다.가장 정교한 방식은 암호문 도용이나 잔여 블록 종료와 같은 CBC 고유의 방식입니다.이러한 방식은 암호문 추가의 원인이 되지 않습니다.단, 약간의 복잡성은 더해져도 상관없습니다.Schneier와 Ferguson은 두 가지 가능성을 제시합니다.두 가지 모두 128(16진수 80)의 바이트를 추가한 후 필요한 만큼 0바이트를 추가하여 마지막 블록을 채우거나 마지막 블록을 n바이트로 채웁니다.

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

공통 모드

AED(Additional Data) 모드를 통한 인증 암호화

비밀과 인증을 하나의 암호화 프리미티브로 결합하도록 설계된 운영 모드는 여러 가지가 있습니다.이러한 모드의 예로는 Extended Cipher Block Chaining(XCBC),[clarification needed][12] Integrity-Aware Cipher Block Chaining(IACBC),[clarification needed] Integrity-Aware Parallelizable Mode(IAPM),[13] OCB, EAX, CWC, CCM, GCM 등이 있습니다.인증된 암호화 모드는 싱글패스 모드 또는 더블패스 모드로 분류됩니다.OCB 모드와 같은 일부 싱글 패스 인증 암호화 알고리즘은 특허에 의해 제약을 받는 반면, 다른 알고리즘은 이러한 부담을 피하기 위해 특별히 설계 및 릴리스되었습니다.

또, 암호화되지 않은 관련 데이터의 인증도 허가하는 모드도 있습니다.이것을 AED(Authenticated Encryption with Associated Data) 방식이라고 부릅니다.예를 들어, EAX 모드는 더블 패스 AED 방식이고 OCB 모드는 싱글 패스입니다.

갈로아/카운터(GCM)

GCM
갈로아/카운터
병렬화 가능한 암호화네.
암호 해독 병렬화 가능네.
랜덤 읽기 액세스네.

Galois/counter Mode(GCM; 갈로이스/카운터 모드)는 기존의 암호화 카운터 모드와 새로운 Galois 인증 모드를 조합합니다.주요 기능은 인증에 사용되는 Galois 필드 곱셈의 병렬 연산이 용이하다는 것입니다.이 기능을 통해 암호화 알고리즘보다 높은 throughput이 허용됩니다.

GCM은 블록사이즈가 128비트인 블록암호용으로 정의되어 있습니다.Galois Message Authentication Code(GMAC; 갈로아 메시지 인증 코드)는 증분 메시지 인증 코드를 형성할 수 있는 GCM의 인증 전용 변형입니다.GCM과 GMAC 모두 임의의 길이의 초기화 벡터를 받아들일 수 있습니다.GCM은 병렬 처리를 최대한 활용할 수 있으며, GCM을 구현하면 명령 파이프라인 또는 하드웨어 파이프라인을 효율적으로 사용할 수 있습니다.CBC 모드의 동작은 파이프라인의 정지 상태를 초래하여 효율과 퍼포먼스를 저해합니다.

CTR과 마찬가지로 블록에는 순차적으로 번호가 매겨지고 이 블록 번호는 IV와 조합되어 블록 암호E(통상은 AES)로 암호화됩니다.그런 다음 이 암호화의 결과를 일반 텍스트와 XOR하여 암호문을 생성합니다.모든 카운터 모드와 마찬가지로 이는 기본적으로 스트림 암호이므로 암호화되는 스트림마다 다른 IV를 사용해야 합니다.

GCM encryption operation

암호문 블록은 다항식의 계수로 간주되며, 유한 필드 산술을 사용하여 키에 의존하는 점 H에서 평가됩니다.그 후 결과가 암호화되어 데이터의 무결성을 검증하기 위해 사용할 수 있는 인증 태그가 생성됩니다.암호화 텍스트에는 IV, 암호 텍스트 및 인증 태그가 포함됩니다.

암호 블록 체인 메시지 인증 코드(CCM)가 있는 카운터

암호 블록 체인 메시지 인증 코드를 사용하는 카운터(CBC-MAC; CCM을 사용하는 카운터)는 인증과 기밀성을 모두 제공하도록 설계된 인증된 암호화 알고리즘입니다.CCM 모드는 블록 길이가 128비트인 [14][15]블록 암호에 대해서만 정의됩니다.

Synthetic Initialization Vector(SIV; 합성 초기화 벡터)

Synthetic Initialization Vector(SIV; 합성 초기화 벡터)는 부정사용 방지 블록 암호 모드입니다.

SIV는 의사난수 S2V를 이용해 내부 IV를 합성한다.S2V는 CMAC에 기반한 키 해시이며 함수에 대한 입력은 다음과 같습니다.

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

SIV는 암호화 키(K2)를 사용하여 AES-CTR을 사용하여 S2V 출력 및 플레인텍스트를 암호화합니다.

SIV는 외부 난스 기반 인증 암호화를 지원할 수 있습니다.이 경우 인증된 데이터 필드 중 하나가 이 목적으로 사용됩니다.RFC5297에서는[16] 상호 운용성을 위해 마지막으로 인증된 데이터필드를 외부 난스를 사용하도록 규정되어 있습니다.

인증 키1 K와 암호화2 키 K의 2개의 키 사용으로 인해 SIV AED 변수의 명명 스킴이 혼동을 일으킬 수 있습니다.예를 들어 AED_AES_SIV_CMAC_256은 AES-256이 아닌 2개의 AES-128 키를 가진 AES-SIV를 의미합니다.

AES-GCM-SIV

AES-GCM-SIV는 Advanced Encryption Standard의 동작 모드이며, Galois/counter 모드와 유사한 성능을 제공할 뿐만 아니라 암호 난스의 재사용 시 오용 방지 기능을 제공합니다.이 구조는 RFC 8452에 [17]정의되어 있습니다.

AES-GCM-SIV는 내부 IV를 합성합니다.POLYVAL Galois 해시 함수를 사용하여 인증된 추가 데이터와 평문의 해시를 도출합니다.그 후 해시는 AES-key로 암호화되어 인증 태그 및 AES-CTR 초기화 벡터로 사용됩니다.

는 아주 비슷하게 명명된 알고리즘 GCM-SIV에 소수의 매우 작은 변화(예를 들어 어떻게 AES-CTR 초기화됩니다)과 AES-GCM-SIV이 개선이 되지만은 안보에 실용적인 이익을 "이것은 이 같은 키로 250개의 메시지를 암호화할 때, 유일한 232개의 게시물의 금지 중요한 한계에 비해 허용하 w.를 산출한다ithGCM-SIV.[18]

기밀 유지 전용 모드

많은 동작 모드가 정의되어 있습니다.이들 중 일부는 아래에 설명되어 있습니다.암호 모드의 목적은 ECB의 취약성에 대한 설명에서 알 수 있듯이 암호화된 데이터에 존재하는 패턴을 마스킹하는 것입니다.

다른 암호 모드는 암호 블록 또는 기타 글로벌 결정론적 변수로부터의 출력을 후속 암호 블록에 캐스케이드함으로써 패턴을 마스크합니다.다음 표에 나열된 모드의 입력을 요약합니다.

모드의 개요
모드 수식 암호문
전자 코드북 (ECB) Yi = F(일반i 텍스트, 키) Yi.
암호 블록 체인 (CBC) Yi = 일반i 텍스트 XOR 암호문i−1 F(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, 키) 평문 XORi Y
계산대 (CTR) Yi = F(IV + g(i), 키);IV = 토큰() 평문 XORi Y

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

전자코드북(ECB)

ECB
전자 코드북
병렬화 가능한 암호화네.
암호 해독 병렬화 가능네.
랜덤 읽기 액세스네.

암호화 모드 중 가장 간단한 것은(더 이상 사용되지 않음) 전자 코드북(ECB) 모드입니다(기존[19] 물리 코드북에서 이름을 따옴).메시지는 블록으로 분할되며 각 블록은 개별적으로 암호화됩니다.

ECB encryption.svg ECB decryption.svg

이 방법의 단점은 확산이 부족하다는 것입니다.ECB는 동일한 평문 블록을 동일한 암호문 블록으로 암호화하기 때문에 데이터 패턴을 잘 숨기지 않습니다.ECB는 암호화 [20][21][22]프로토콜에 사용하지 않는 것이 좋습니다.

ECB 모드가 균일한 색상의 넓은 영역을 사용하는 비트맵 이미지를 암호화하기 위해 사용될 때 ECB가 암호문에 평문 데이터 패턴을 남길 수 있는 정도를 나타내는 두드러진 예를 볼 수 있다. 픽셀의 색상이 암호화되어 있는 동안 원본의 동일한 색상의 픽셀 패턴이 암호화된 버전에 남아 있기 때문에 전체 이미지는 여전히 식별될 수 있습니다.

원본 이미지
ECB 모드를 사용하여 암호화됨
ECB 이외의 모드에서는 의사 랜덤성이 발생한다.
세 번째 이미지는 이미지가 CBC, CTR 또는 기타 보다 안전한 모드로 암호화된 것처럼 보이는 방법입니다.이것은 랜덤노이즈와는 구별되지 않습니다.세 번째 이미지가 랜덤하게 표시된다고 해서 이미지가 안전하게 암호화되는 것은 아닙니다.많은 종류의 안전하지 않은 암호화가 개발되어 '랜덤 외관'[citation needed]과 같은 출력이 생성되고 있습니다.

ECB 모드는 또한 각 블록이 정확히 동일한 [citation needed]방식으로 해독되기 때문에 무결성 보호가 없는 프로토콜을 재생 공격에 더욱 취약하게 만들 수 있습니다.

암호 블록 체인(CBC)

CBC
암호 블록 체인
병렬화 가능한 암호화아니요.
암호 해독 병렬화 가능네.
랜덤 읽기 액세스네.

Ehrsam, Meyer, Smith 및 Tuchman은 1976년에 [23]암호 블록 체인(CBC) 작동 모드를 발명했습니다.CBC 모드에서는 평문의 각 블록이 암호화되기 전에 이전 암호문 블록과 XOR됩니다.이렇게 하면 각 암호문 블록은 그 시점까지 처리되는 모든 평문 블록에 의존합니다.각 메시지를 고유하게 만들려면 첫 번째 블록에서 초기화 벡터를 사용해야 합니다.

Cipher block chaining (CBC) mode encryption
Cipher block chaining (CBC) mode decryption

첫 번째 블록에 인덱스1이 있는 경우 CBC 암호화의 계산식은 다음과 같습니다.

CBC 복호화의 수학 공식은

CBC example with a toy 2-bit cipher
CBC example with a toy 2-bit cipher

CBC는 가장 일반적으로 사용되는 동작 모드입니다.그 주된 결점은 암호화는 순차적으로 이루어지며(즉, 병렬화할 수 없음), 메시지는 암호 블록 크기의 배수로 패딩되어야 한다는 것입니다.이 마지막 문제를 해결하는 방법 중 하나는 암호문 도용이라고 불리는 방법을 사용하는 것입니다.플레인텍스트 또는 초기화 벡터(IV)의 1비트 변경은 다음 모든 암호문 블록에 영향을 미칩니다.

잘못된 IV를 사용하여 복호화하면 첫 번째 평문 블록이 손상되지만 이후 평문 블록은 정확합니다.이는 각 블록이 플레인 텍스트가 아닌 이전 블록의 암호 텍스트로 XOR되기 때문에 현재 블록을 복호화하기 위한 IV로 사용하기 전에 이전 블록을 복호화할 필요가 없기 때문입니다.즉, 두 개의 인접한 암호문 블록에서 평문 블록을 복구할 수 있습니다.그 결과, 복호화를 병행할 수 있다.암호문을 1비트로 변경하면 대응하는 플레인텍스트 블록이 완전히 파손되어 대응하는 비트가 다음 플레인텍스트 블록으로 반전되지만 나머지 블록은 그대로 유지됩니다.이 특성은 POODLE과 같은 다양한 패딩 오라클 공격에서 악용됩니다.

명시적 초기화[24] 벡터는 플레인텍스트에 단일 랜덤블록을 추가하여 이 속성을 활용합니다.IV를 복호화 루틴과 통신할 필요가 없는 것을 제외하고 암호화는 정상적으로 실행됩니다.IV 복호화가 무엇을 사용하든 랜덤블록만 "파손"됩니다.이것은 안전하게 폐기할 수 있으며, 나머지 복호화는 원래 평문입니다.

전파 암호 블록 체인(PCBC)
PCBC
암호 블록 체인의 전파
병렬화 가능한 암호화아니요.
암호 해독 병렬화 가능아니요.
랜덤 읽기 액세스아니요.

전파 암호 블록체인[25] 또는 플레인텍스트 암호 블록체인[26] 모드는 암호문을 복호화할 때와 암호화할 때 암호문의 작은 변경이 무한히 전파되도록 설계되었습니다.PCBC 모드에서는 플레인텍스트의 각 블록이 암호화되기 전에 이전 플레인텍스트 블록과 이전 암호 텍스트블록 양쪽에서 XOR됩니다.CBC 모드와 마찬가지로 첫 번째 블록에서는 초기화 벡터가 사용됩니다.

Propagating cipher block chaining (PCBC) mode encryption
Propagating cipher block chaining (PCBC) mode decryption

암호화 및 복호화 알고리즘은 다음과 같습니다.

PCBC는 Kerberos v4 WASTE에서 주로 사용되지만 그 외에는 일반적이지 않습니다.PCBC 모드로 암호화된 메시지에서는 인접한2개의 암호문 블록이 교환되어도 후속 [27]블록의 복호화에는 영향을 주지 않습니다.따라서 PCBC는 Kerberos v5에서는 사용되지 않습니다.

암호 피드백(CFB)

풀블록 CFB
CFB
암호 피드백
병렬화 가능한 암호화아니요.
암호 해독 병렬화 가능네.
랜덤 읽기 액세스네.

가장 단순한 형태로 Cipher Feedback(CFB; 암호 피드백) 모드에서는 블록 암호의 출력 전체가 사용됩니다.이 변형에서는 CBC와 매우 비슷하며 블록 암호를 자기 동기화 스트림 암호로 만듭니다.CFB의 복호화는 역방향으로 실행되는 CBC 암호화와 거의 동일합니다.

CFB encryption.svg CFB decryption.svg

CFB-1, CFB-8, CFB-64, CFB-128 등

NIST SP800-38A는 CFB를 [28]비트폭으로 정의합니다.CFB 모드에서는 1µs µb의 정수 파라미터도 필요합니다. 다음 CFB 모드 사양에서는 각 평문 세그먼트(Pj)와 암호문 세그먼트(Cj)는 s비트로 구성됩니다. 의 값은 1비트 CFB 모드, 8비트 CFB 모드, 64비트 CFB 모드 또는 128비트 CFB 모드 등의 모드 이름에 포함될 수 있습니다.

이러한 모드는 기본 블록 암호의 출력을 잘라냅니다.

CFB-1은 자기동기화 및 암호문 손실에 대한 복원력으로 간주됩니다.1비트 CFB 모드를 사용하면 삽입 또는 삭제된 비트 후에 동기화가 자동으로 b+1 위치로 복원됩니다.CFB 모드의 기타 값 및 이 권장사항의 기타 기밀유지 모드의 경우 동기화를 외부에서 복원해야 합니다.(NIST SP800-38A)즉, AES와 같은 128비트 폭 블록 암호의 1비트 손실은 유효한 비트를 방출하기 전에 129비트를 렌더링합니다.

CFB는 지정된 경우 이외의 특수한 경우에도 자기 동기화할 수 있습니다.예를 들어 128비트블록 암호에 의한 CFB-128의 1비트 변경은 2블록 후에 다시 동기화됩니다.(단, CFB-128 등에서는 비트 손실이 정상적으로 처리되지 않습니다.1비트 손실이 발생하면 복호화기와 암호화기의 정렬이 손실됩니다).

다른 모드와 비교한 CFB

CBC 모드와 마찬가지로 플레인텍스트의 변경은 암호문 내에서 영속적으로 전파되며 암호화는 병렬화할 수 없습니다.또한 CBC와 마찬가지로 복호화도 병행할 수 있습니다.

CFB, OFB 및 CTR은 CBC 모드에 비해 두 가지 장점이 있습니다.블록 암호는 암호화 방향으로만 사용되며 메시지는 암호 블록크기의 배수로 패딩할 필요가 없습니다(단, 암호문 도용은 CBC 모드에서도 패딩이 불필요하게 됩니다).

출력 피드백(OFB)

오프
출력 피드백
병렬화 가능한 암호화아니요.
암호 해독 병렬화 가능아니요.
랜덤 읽기 액세스아니요.

Output Feedback(OFB; 출력 피드백) 모드에서는 블록 암호는 동기 스트림 암호로 변환됩니다.키스트림블록을 생성하여 플레인텍스트블록과 XOR하여 암호문을 가져옵니다.다른 스트림 암호와 마찬가지로 암호 텍스트에서 비트를 플립하면 동일한 위치의 일반 텍스트에서 플립 비트가 생성됩니다.이 속성을 사용하면 암호화 이라도 많은 오류 수정 코드가 정상적으로 작동할 수 있습니다.

XOR 동작의 대칭성이 있기 때문에 암호화와 복호화는 완전히 동일합니다.

OFB encryption.svg OFB decryption.svg

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

OFB 모드의 키 스트림을 취득하려면 , 0 의 문자열이 일정하게 설정되어 있는 CBC 모드를 입력으로서 사용합니다.이것은, OFB 모드 암호화에 CBC 모드의 고속 하드웨어 실장을 사용할 수 있기 때문에 편리합니다.

부분 블록이 있는 OFB 모드를 CFB 모드와 같이 피드백으로 사용하면 평균 사이클 길이가 2배32 이상 감소합니다.데이비스와 파킨이 제안하고 실험 결과에 의해 입증한 수학적 모델은 전체 피드백이 있어야만 얻을 수 있는 최대값에 가까운 평균 사이클 길이를 달성할 수 있다는 것을 보여주었다.이러한 이유로 OFB [29]사양에서 잘린 피드백에 대한 지원이 제거되었습니다.

카운터(CTR)

CTR
계산대
병렬화 가능한 암호화네.
암호 해독 병렬화 가능네.
랜덤 읽기 액세스네.
주의: CTR 모드(CM)는 정수 카운터 모드(ICM) 및 세그먼트 정수 카운터(SIC) 모드라고도 합니다.

OFB와 마찬가지로 카운터 모드는 블록 암호스트림 암호로 변환합니다.카운터의 연속된 값을 암호화하여 다음 키스트림 블록을 생성합니다.카운터는 오랜 시간 반복되지 않도록 보장되는 시퀀스를 생성하는 모든 함수이지만 실제 카운터는 가장 단순하고 널리 사용됩니다.단순한 결정론적 입력 함수의 사용은 논란이 되곤 했다. 비평가들은 "알려진 시스템 입력에 암호 시스템을 의도적으로 노출시키는 것은 불필요한 위험을 나타낸다"[30]고 주장했다.단, 현재 CTR 모드는 널리 받아들여지고 있으며, 모든 문제는 기본 블록 암호의 약점으로 간주되고 있으며,[31] 이 암호는 입력의 시스템 편향에 관계없이 안전할 것으로 예상됩니다.CTR 모드는 CBC와 함께 Niels Ferguson 및 Bruce Schneier가 [32]권장하는2개의 블록 암호 모드 중 하나입니다.

CTR 모드는 Whitfield Diffie와 Martin Hellman에 의해 [31]1979년에 도입되었습니다.

CTR 모드는 OFB와 유사한 특성을 가지지만 복호화 시 랜덤액세스 속성도 허용합니다.CTR 모드는 블록을 병렬로 암호화할 수 있는 멀티프로세서 머신에서 작동하기에 적합합니다.또한 OFB에 영향을 [33]줄 수 있는 단주기 문제에 시달리지 않습니다.

IV/난스가 랜덤인 경우, 임의의 반전 조작(연결, 덧셈, 또는 XOR)을 사용하여 카운터와 조합하여 실제 암호화용 하나의 카운터 블록을 생성할 수 있습니다.비랜덤 난스(패킷카운터 등)의 경우 난스와 카운터를 연결해야 합니다(예를 들어 난스를 상위 64비트에 저장하고 카운터를 128비트 카운터 블록의 하위 64비트에 저장).공격자가 IV-카운터 쌍 전체를 조작하여 충돌을 일으킬 수 있기 때문에 난스와 카운터를 1개의 값에 추가 또는 XOR하는 것만으로 대부분의 경우 선택된 플레인텍스트 공격에 의한 보안이 파괴됩니다.공격자가 IV-카운터 쌍과 플레인텍스트를 제어하면 기존의 플레인텍스트를 가진 암호텍스트의 XOR에 의해 동일한 IV-카운터쌍을 공유하는 다른 블록의 암호텍스트와 XOR했을 때 그 [34]블록이 복호화됩니다.

다이어그램의 난스는 다른 다이어그램의 초기화 벡터(IV)와 동일합니다.그러나 오프셋/위치 정보가 손상된 경우 바이트 오프셋에 의존하여 이러한 데이터를 부분적으로 복구할 수 없습니다.

CTR encryption 2.svg CTR decryption 2.svg

에러 전파

"오류 전파" 속성은 비트 오류 중에 복호화가 어떻게 동작하는지, 즉 한 비트의 오류가 다른 복호화된 비트로 계단식되는지를 나타냅니다.

비트 오류는 의도적으로 공격 시 또는 전송 오류로 인해 랜덤하게 발생할 수 있습니다.

  • 랜덤 비트 오류는 임의의 비트 위치에서 발생하며 예상되는 확률은 µ입니다.
  • 원래 비트 오류와 동일한 비트 위치에서 특정 비트 오류가 발생합니다.
  • 스트림 암호 모드(OFB, CTR 등)에서의 특정 비트 오류는 사소한 것입니다.이것들은 의도된 특정 비트에만 영향을 줍니다.
  • 보다 복잡한 모드에서의 특정 비트오류(를 들어 CBC): 적응형 선택 암호문 공격에서는 많은 다른 특정 비트오류를 지능적으로 조합하여 암호모드를 해제할 수 있습니다.Padding oracle 공격에서는 오류 응답에 따라 암호화 비밀을 추측함으로써 공격에서 CBC를 복호화할 수 있습니다.Padding Oracle 공격 바리안트 "CBC-R"(CBC Reverse)를 사용하면 공격자가 유효한 메시지를 구성할 수 있습니다.

메시지 인증 코드가 MAC-Then-Encrypt 순서로 체인된 최신 인증 암호화(AED) 또는 프로토콜의 경우, 모든 비트 오류는 복호화를 완전히 중단해야 하며 복호화하기 위한 특정 비트 오류를 생성해서는 안 됩니다.즉, 복호화에 성공하면 비트 오류가 발생하지 않습니다.이러한 에러 전파는, 현대의 암호 모드에서는, 종래의 기밀성 전용 모드보다 그다지 중요하지 않습니다.

모드 C에서의i 비트 오류의 영향 IV 또는 난스에서의 비트오류 영향
ECB P에서의i 랜덤비트 오류
CBC P에서의i 랜덤비트 오류
P의i+1 특정 비트 오류
P의1 특정 비트 오류
CFB P의i 특정 비트 오류
동기화가 복원될 때까지 P, …에서 랜덤 비트 오류 발생i+1
동기화가 복원될 때까지 P, …에서 랜덤 비트 오류 발생1
오프 P의i 특정 비트 오류 P, P2, …, P에서의1n 랜덤비트 오류
CTR P의i 특정 비트 오류 카운터 블록i T의 비트 오류에 대한 P의i 랜덤 비트 오류

(출처: SP800-38A 표 D.2: 비트오류가 복호화에 미치는 영향의 개요)

예를 들어 전송된 암호 텍스트의 1블록 오류가 ECB 모드 암호화용으로 재구축된 플레인텍스트에서 1블록 오류를 발생시키는 반면 CBC 모드에서는 이러한 오류가 2블록에 영향을 미치는 경우가 있습니다.일부에서는 무작위 오류(예: 회선 노이즈)에 직면했을 때 이러한 복원력이 바람직하다고 느꼈고, 다른 이들은 오류 수정으로 공격자가 메시지를 악의적으로 조작할 수 있는 범위가 증가했다고 주장했습니다.

단, 적절한 무결성 보호를 사용하면 메시지 전체가 거부될 가능성이 높은 오류입니다.랜덤 에러에 대한 내성이 필요한 경우는, 송신전에 에러 정정 코드를 암호문에 적용할 필요가 있습니다.

기타 모드 및 기타 암호화 프리미티브

블록 암호에 대해 더 많은 작동 모드가 제안되었습니다.일부는 받아들여지고, 완전히 기술되어(표준화되어) 사용되고 있습니다.다른 것들은 안전하지 않은 것으로 확인되었으므로 절대 사용해서는 안 됩니다., 키 피드백 모드나 데이비스 , 기밀성, 신뢰할 수 있는 암호화로 분류하지 않는 기업도 있습니다.-마이어 해싱.

NIST는 모드 [28][35]개발에서 블록 암호에 대해 제안된 모드 목록을 유지한다.

디스크 암호화는 애플리케이션용으로 특별히 설계된 특수 용도 모드를 사용하는 경우가 많습니다.조정 가능한 좁은 블록 암호화 모드(LRW, XEXXTS) 및 넓은 블록 암호화 모드(CMCEME)는 디스크의 섹터를 안전하게 암호화하도록 설계되었습니다(디스크 암호화 이론 참조).

많은 모드에서는 Initialization Vector(IV; 초기화 벡터)를 사용하고 있습니다.이것은 모드에 따라서는 1회만 사용되거나(난스), 발행 전에 예측할 수 없는 등의 요건을 가질 수 있습니다.CTR, GCM 또는 OFB 모드에서 동일한 키를 사용하여 IV를 재사용하면 동일한 키스트림이 2개 이상의 플레인텍스트로 XOR되어 스트림의 명백한 오용과 함께 치명적인 보안 손실이 발생합니다.NIST 키랩알고리즘이나 SIV(RFC 5297) AED 모드등의 결정론적 인증 암호화 모드에서는, 입력으로서 IV 가 필요 없고, 소정의 평문과 키에 대해서 같은 암호문 및 인증 태그가 매번 반환됩니다.AES-GCM-SIV 등의 IV 오용 방지 모드는 IV 입력의 이점을 얻을 수 있습니다.예를 들어, 1개의 키로 안전하게 암호화할 수 있는 최대량의 데이터입니다.또, 같은 IV 를 여러 번 사용해도 치명적인 장애가 발생하지 않습니다.

블록 암호는 다른 암호화 프로토콜에서도 사용할 수 있습니다.이들은 일반적으로 여기에 설명된 블록 모드와 유사한 작동 모드에서 사용됩니다.모든 프로토콜과 마찬가지로 암호화 보안을 위해 이러한 작동 모드를 올바르게 설계할 수 있도록 주의를 기울여야 합니다.

블록 암호를 사용하여 암호화 해시 함수를 구축하는 스킴이 몇 가지 있습니다.이러한 방법에 대한 설명은 단방향 압축 함수를 참조하십시오.

블록 암호를 사용하여 암호학적으로 안전한 의사 난수 생성기(CSPRNG)를 구축할 수도 있습니다.

Message Authentication Code(MAC; 메시지 인증 코드)는 블록 암호에서 구축되는 경우가 많습니다.CBC-MAC, OMACPMAC가 그 예입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ NIST Computer Security Division's (CSD) Security Technology Group (STG) (2013). "Block cipher modes". Cryptographic Toolkit. NIST. Archived from the original on November 6, 2012. Retrieved April 12, 2013.
  2. ^ a b Ferguson, N.; Schneier, B.; Kohno, T. (2010). Cryptography Engineering: Design Principles and Practical Applications. Indianapolis: Wiley Publishing, Inc. pp. 63, 64. ISBN 978-0-470-47424-2.
  3. ^ NIST Computer Security Division's (CSD) Security Technology Group (STG) (2013). "Proposed modes". Cryptographic Toolkit. NIST. Archived from the original on April 2, 2013. Retrieved April 14, 2013.
  4. ^ Alfred J. Menezes; Paul C. van Oorschot; Scott A. Vanstone (1996). Handbook of Applied Cryptography. CRC Press. pp. 228–233. ISBN 0-8493-8523-7.
  5. ^ a b c "ISO/IEC 10116:2006 – Information technology – Security techniques – Modes of operation for an n-bit block cipher". ISO Standards Catalogue. 2006. Archived from the original on 2012-03-17.
  6. ^ Conrad, Eric; Misenar, Seth; Feldman, Joshua (2017-01-01), Conrad, Eric; Misenar, Seth; Feldman, Joshua (eds.), "Chapter 3 - Domain 3: Security engineering", Eleventh Hour CISSP® (Third Edition), Syngress, pp. 47–93, doi:10.1016/b978-0-12-811248-9.00003-6, ISBN 978-0-12-811248-9, retrieved 2020-11-01
  7. ^ NIST Computer Security Division's (CSD) Security Technology Group (STG) (2013). "Current modes". Cryptographic Toolkit. NIST. Archived from the original on April 2, 2013. Retrieved April 12, 2013.
  8. ^ "Stream Cipher Reuse: A Graphic Example". Cryptosmith LLC. 31 May 2008. Archived from the original on 25 January 2015. Retrieved 7 January 2015.
  9. ^ B. Moeller (May 20, 2004), Security of CBC Ciphersuites in SSL/TLS: Problems and Countermeasures, archived from the original on June 30, 2012
  10. ^ Tervoort, Tom. "Zerologon: Unauthenticated domain controller compromise by subverting Netlogon cryptography (CVE-2020-1472)". Secura. Retrieved 14 October 2020.
  11. ^ Blaufish (14 October 2020). "Netlogon CFB8 considered harmful. OFB8 also". GitHub. Retrieved 14 October 2020.
  12. ^ Gligor, Virgil D.; Donescu, Pompiliu (2002). Matsui, M. (ed.). Fast Encryption and Authentication: XCBC Encryption and XECB Authentication Modes (PDF). Fast Software Encryption 2001. Lecture Notes in Computer Science. Vol. 2355. Berlin: Springer. pp. 92–108. doi:10.1007/3-540-45473-X_8. ISBN 978-3-540-43869-4.
  13. ^ Jutla, Charanjit S. (May 2001). Encryption Modes with Almost Free Message Integrity (PDF). Eurocrypt 2001. Lecture Notes in Computer Science. Vol. 2045. Springer. doi:10.1007/3-540-44987-6_32.
  14. ^ Dworkin, Morris (May 2004). Recommendation for Block Cipher Modes of Operation: The CCM Mode for Authentication and Confidentiality (PDF) (Technical report). NIST Special Publications. NIST. doi:10.6028/NIST.SP.800-38C. 800-38C.
  15. ^ Whiting, D.; Housley, R.; Ferguson, N. (September 2003). Counter with CBC-MAC (CCM). IETF. doi:10.17487/RFC3610. RFC 3610.
  16. ^ Harkins, Dan (October 2008). "Synthetic Initialization Vector (SIV) Authenticated Encryption Using the Advanced Encryption Standard (AES)". Retrieved 21 October 2020.
  17. ^ Gueron, S. (April 2019). AES-GCM-SIV: Nonce Misuse-Resistant Authenticated Encryption. IETF. doi:10.17487/RFC8452. RFC 8452. Retrieved August 14, 2019.
  18. ^ Gueron, Shay; Langley, Adam; Lindell, Yehuda (14 Dec 2018). "AES-GCM-SIV: Specification and Analysis". Cryptology ePrint Archive. Report (2017/168). Retrieved 19 October 2020.
  19. ^ "Recommendation for Block Cipher Modes of Operation" (PDF). NIST.gov. NIST. p. 9. Archived (PDF) from the original on 29 March 2017. Retrieved 1 April 2017.
  20. ^ Menezes, Alfred J.; van Oorschot, Paul C.; Vanstone, Scott A. (2018). Handbook of Applied Cryptography. CRC Press. p. 228. ISBN 9780429881329.
  21. ^ Dam, Kenneth W.; Lin, Herbert S. (1996). Cryptography's Role in Securing the Information Society. National Academies Press. p. 132. ISBN 9780309054751.
  22. ^ Schneier, Bruce (2015). Applied Cryptography: Protocols, Algorithms and Source Code in C. John Wiley & Sons. p. 208. ISBN 9781119096726.
  23. ^ 윌리엄 F.어삼, 칼 H. W. 메이어, 존 L. 스미스, 월터 L.Tuchman, "블록체인에 의한 메시지 검증 및 전송 오류 검출", 미국 특허 4074066, 1976.
  24. ^ "The Transport Layer Security (TLS) Protocol Version 1.1". p. 20. Archived from the original on 2015-01-07. Retrieved 7 January 2015.
  25. ^ "Kryptographie FAQ: Frage 84: What are the Counter and PCBC Modes?". www.iks-jena.de. Archived from the original on 16 July 2012. Retrieved 28 April 2018.
  26. ^ Kaufman, C.; Perlman, R.; Speciner, M. (2002). Network Security (2nd ed.). Upper Saddle River, NJ: Prentice Hall. p. 319. ISBN 0130460192.
  27. ^ Kohl, J. (1990). "The Use of Encryption in Kerberos for Network Authentication" (PDF). Proceedings, Crypto '89. Berlin: Springer. ISBN 0387973176. Archived from the original (PDF) on 2009-06-12.
  28. ^ a b (NIST), Author: Morris Dworkin (2001). "SP 800-38A, Recommendation for Block Cipher Modes of Operation: Methods and Techniques" (PDF). csrc.nist.gov. doi:10.6028/NIST.SP.800-38A. Archived (PDF) from the original on 28 August 2017. Retrieved 28 April 2018. {{cite journal}}: first=범용명(도움말)이 있습니다.
  29. ^ Davies, D. W.; Parkin, G. I. P. (1983). "The average cycle size of the key stream in output feedback encipherment". Advances in Cryptology, Proceedings of CRYPTO 82. New York: Plenum Press. pp. 263–282. ISBN 0306413663.
  30. ^ Jueneman, Robert R. (1983). "Analysis of certain aspects of output feedback mode". Advances in Cryptology, Proceedings of CRYPTO 82. New York: Plenum Press. pp. 99–127. ISBN 0306413663.
  31. ^ a b Lipmaa, Helger; Wagner, David; Rogaway, Phillip (2000). "Comments to NIST concerning AES Modes of Operations: CTR-Mode Encryption" (PDF). Archived (PDF) from the original on 2015-02-26.
  32. ^ Ferguson, Niels; Schneier, Bruce; Kohno, Tadayoshi (2010). Cryptography Engineering. p. 71.
  33. ^ "Basic Block Cipher Modes". www.quadibloc.com. Archived from the original on 24 October 2017. Retrieved 28 April 2018.
  34. ^ "Cryptography I". Coursera. Archived from the original on 23 March 2018. Retrieved 28 April 2018.
  35. ^ "Modes Development – Block Cipher Techniques – CSRC". Computer Security Division, Information Technology Laboratory, National Institute of Standards and Technology, U.S. Department of Commerce. 4 January 2017. Archived from the original on 4 September 2017. Retrieved 28 April 2018.