Galois/카운터 모드

Galois/Counter Mode

암호학에서 GCM(Galois/Counter Mode)은 성능을 위해 널리 채택된 대칭키 암호 블록 암호의 동작 모드입니다.최신 고속 통신 채널의 GCM throughput 속도는 저렴한 하드웨어 자원으로 [1]달성할 수 있습니다.이 조작은 데이터의 신뢰성(정합성)과 기밀성을 모두 제공하도록 설계된 인증된 암호화 알고리즘입니다.GCM은 블록사이즈가 128비트인 블록암호용으로 정의되어 있습니다.Galois Message Authentication Code(GMAC; 갈로아 메시지 인증 코드)는 증분 메시지 인증 코드를 형성할 수 있는 GCM의 인증 전용 버전입니다.GCM과 GMAC 모두 임의의 길이의 초기화 벡터를 받아들일 수 있습니다.

동일한 블록 암호와 함께 사용하더라도 서로 다른 블록 암호 모드의 동작에 따라 성능 및 효율성 특성이 크게 다를 수 있습니다.GCM은 병렬 처리를 최대한 활용할 수 있으며, GCM을 구현하면 명령 파이프라인 또는 하드웨어 파이프라인을 효율적으로 사용할 수 있습니다.반면 Cipher Block Chaining(CBC; 암호 블록 체인) 모드의 동작은 파이프라인의 정지 상태를 초래하여 효율과 퍼포먼스를 저해합니다.

기본 조작

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

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

GCM encryption operation

수학적 기초

GCM은 기존의 암호화 카운터 모드와 새로운 Galois 인증 모드를 조합합니다.주요 기능은 인증에 사용되는 Galois 필드 곱셈의 병렬 연산이 용이하다는 것입니다.이 기능을 통해 체인모드를 사용하는 CBC 등의 암호화 알고리즘보다 높은 throughput을 실현할 수 있습니다.사용되는 GF(2) 필드는128 다음 다항식으로 정의됩니다.

인증 태그는 데이터 블록을 GHASH 함수에 공급하고 결과를 암호화하여 구성됩니다.이 GHASH 함수는 다음과 같이 정의됩니다.

여기서 H = Ek(0)는128 해시 키, 블록 암호를 사용하여 암호화된 128비트 문자열, A는 인증된 데이터(암호화되지 않음), C암호문, mA의 128비트 블록 수(백업), n은 C의 128비트 블록 수(백업), n은 C의 128비트 블록 수(백업), i = 0 + m변수i X는 1이고...

우선 인증된 텍스트와 암호 텍스트를 각각 128비트의 배수로 제로 패딩하여 단일 메시지i S:

여기서 len(A)과 len(C)은 각각 A와 C의 비트 길이를 나타내는 64비트, v = len(A) mod 128은 A의 마지막 블록의 비트 길이, u = len(C) mod 128은 C의 마지막 블록의 비트 길이, {\ 연결 비트 길이를 나타냅니다.

다음으로i X는 다음과 같이 정의됩니다.

두 번째 형태는 첫 번째 형태에 호너의 방법을 적용하여 생성된 효율적인 반복 알고리즘입니다(i X는 Xi−1 의존합니다).마지막m+n+1 X만 출력으로 남습니다.

해시 계산을 병렬화할 필요가 있는 경우 k회 인터리빙하면 됩니다.

IV의 길이가 96이 아닌 경우 GHASH 함수를 사용하여 카운터 0을 계산합니다.

GCM은 John Viega와 David A에 의해 디자인되었습니다.McGrew는 Carter-Wegman 카운터 모드(CWC 모드)[citation needed]를 개선합니다.

2007년 11월, NIST는 블록 암호 모드 운용에 관한 NIST Special Publication 800-38D Recommendation: GCM(Galois/Counter Mode) GMAC를 GCM 및 GMAC 공식 [3]표준으로 하는 GMAC를 발표했습니다.

사용하다

GCM 모드는 IEEE 802.1에서 사용됩니다.AE(MACsec)이더넷 보안, IEEE802.11ad(또한 더빙 WiGig), ANSI(INCITS)광 채널 보안 프로토콜(FC-SP), IEEEP1619.1 테이프 기억 장치, IETFIPsecstandards,[4][5]SSH,[6]TLS1.2[7][8]과 TLS1.3.[9]AES-GCM가 국가 안보국 SuiteB암호와 2018년 상업 국가 안전 보장 알고리즘(CNSA)고스트 라이더에 최근 교체에 포함되어 있다.ite.[10]GCM 모드는 SoftEther VPN 서버 및 클라이언트 [11]및 버전 2.4 이후 OpenVPN에서 사용됩니다.

성능

GCM은 암호화 및 인증된 데이터의 각 블록(128비트)마다 Galois 필드에 1개의 블록 암호 처리와1개의 128비트 곱셈을 필요로 합니다.블록 암호 연산은 쉽게 파이프라인화 또는 병렬화됩니다. 곱셈 연산은 파이프라인화가 용이하며 약간의 노력으로 병렬화할 수 있습니다(실제 연산을 병렬화하거나 원래 NIST 제출에 따라 Horner의 방법을 적용하거나 둘 다).

인텔은 PCLMULQDQ 명령을 추가하여 [12]GCM에서의 사용을 강조했습니다.2011년 SPARC는 XMULX 및 XMULXHI 명령을 추가하였으며 64 x 64 비트 캐리어리스 곱셈도 수행합니다.2015년에 SPARC는 훨씬 더 큰 값의 XOR 곱셈을 수행하는 XMPMUL 명령을 최대 2048 × 2048 비트 입력 값에 추가하여 4096 비트 결과를 생성했습니다.이러한 명령어는 GF(2)를n 통한 고속 곱셈을 가능하게 하며 모든 필드 표현과 함께 사용할 수 있습니다.

GCM에 대한 인상적인 퍼포먼스 결과는 여러 플랫폼에서 공개되어 있습니다.Késper와 Schwave는 64비트 인텔 프로세서에서 바이트당 10.68 사이클의 AES-GCM 인증 암호화를 실현하는 "Faster and Timing-Attack Resistant AES-GCM"[13]에 대해 설명했습니다.Dai 등은 인텔의 AES-NI 및 PCLMULQDQ 명령어를 사용하는 경우 동일한 알고리즘에 대해 바이트당 3.5 사이클을 보고합니다.Shay Geron과 Blad Krasnov는 3세대 인텔 프로세서에서 바이트당 2.47 사이클을 달성했습니다.OpenSSL [14]NSS 라이브러리에 적합한 패치가 준비되었습니다.

인증과 암호화를 모두 메시지에 대해 수행해야 하는 경우 소프트웨어 구현은 이러한 작업의 실행을 중복시킴으로써 속도를 높일 수 있습니다.인터리빙 작업을 통해 명령 수준의 병렬 처리를 이용하여 성능을 향상시킵니다.이 프로세스를 함수 [15]스티치라고 하며, 원칙적으로 어떤 암호화 알고리즘 조합에도 적용할 수 있지만 GCM이 특히 적합합니다.Manley와 Gregg는[16] GCM으로 기능 스티치를 사용할 때 최적화가 용이함을 보여줍니다.이들은 C버전의 암호화 알고리즘을 주석 첨부하여 타깃프로세서에서 잘 동작하는 코드를 생성하는 프로그램 생성기를 제시합니다.

예를 들어 GCM은 병렬처리는 암호화 하드웨어 엔진의 퍼포먼스에 적합하지 않기 때문에 퍼포먼스에 가장 민감한 일부 [17]디바이스의 암호화 퍼포먼스가 저하되기 때문에 임베디드 기기에서는 Silicon Labs에 의해 비판을 받아 왔습니다.

특허

저자의 진술에 따르면 GCM은 [18]특허에 의해 방해를 받지 않는다.

보안.

GCM은 콘크리트 보안 [19]모델에서 안전성이 입증되었습니다.랜덤 치환과 구별할 수 없는 블록 암호와 함께 사용하면 안전합니다.단, 보안은 같은 키로 실행되는 모든 암호에 대해 하나의 초기화 벡터를 선택하는 것에 의존합니다(스트림 암호 공격 참조).임의의 키와 초기화 벡터의 조합에 대해 GCM은 2-256비트39 플레인텍스트(64 GiB)를 암호화하는 것으로 제한됩니다.NIST Special Publication 800-38D에는[3] 초기화 벡터 선택에 대한 지침이 포함되어 있습니다.

인증 강도는 모든 대칭 메시지 인증 코드와 마찬가지로 인증 태그의 길이에 따라 달라집니다.GCM에서 짧은 인증 태그를 사용하는 것은 권장되지 않습니다.태그의 비트 길이(t)는 보안 파라미터입니다.일반적으로 t는 128, 120, 112, 104 또는 96의 5가지 값 중 하나입니다.특정 어플리케이션의 경우 t는 64 또는 32일 수 있지만 이들 2개의 태그 길이를 사용하면 입력 데이터의 길이와 키의 수명이 제한됩니다.NIST SP 800-38D의 부록 C는 이러한 제약사항에 대한 지침을 제공합니다(예를 들어, t = 32이고 최대 패킷 크기가 2바이트인10 경우 인증 복호화 기능을 2회 이상11 호출하지 않아야 합니다. t = 64이고 최대 패킷 크기가 2바이트인15 경우 인증 복호화 기능을 2회 이상32 호출해서는 안 됩니다).

다른 메시지 인증 코드와 마찬가지로 상대방이 무작위로 t비트 태그를 선택하면 확률 측정t 2를 사용하여 주어진 데이터에 대해 정확할 것으로 예상됩니다.단, GCM을 사용하면 상대방이 n개의 단어(암호텍스트의 총 길이와 임의의 추가 인증 데이터(AAD))를 가진 태그를 선택하고 확률 측정값2를t n배수로 함으로써 성공 가능성을 높일 수 있습니다.그러나 이러한 최적 태그는 여전히 알고리즘의 생존 측도 1 - n⋅2가t 임의로 t에 대해 지배하고 있다는 점을 명심해야 한다.또한 GCM은 매우 짧은 태그 길이 또는 매우 긴 메시지 사용에 적합하지 않습니다.

Ferguson과 Saarinen은 공격자가 보안 하한을 충족하는 GCM 인증에 대해 최적의 공격을 수행할 수 있는 방법을 독립적으로 설명했습니다.퍼거슨은 n이 부호화(GHASH 함수에 대한 입력)의 총 블록 수를 나타내는 경우, 약 n⁄2의t 확률로 성공할 것으로 예상되는 표적 암호문 위조를 구성하는 방법이 있음을 보여주었다.태그 길이 t가 128보다 짧을 경우 이 공격에서 위조에 성공할 때마다 다음 타깃 위조가 성공할 가능성이 높아지고 해시 서브키 H에 대한 정보가 유출됩니다.결국 H는 완전히 손상되어 인증 보증이 완전히 [20]상실될 수 있습니다.

이 공격과는 무관하게, 상대방은 인증된 복호화에 대한 특정 입력에 대해 많은 다른 태그를 체계적으로 추측하려고 시도할 수 있으며, 결과적으로 이들 중 하나 이상이 유효하다고 간주될 가능성이 높아집니다.따라서 GCM을 구현하는 시스템 또는 프로토콜은 각 키에 대한 검증 시도 실패 횟수를 모니터링하고 필요에 따라 제한해야 합니다.

사리넨은 GCM의 약한 키를 설명했다.[21]이 작업을 통해 다항식 해시 기반 인증의 구조에 대한 몇 가지 유용한 통찰력을 얻을 수 있습니다.보다 정확하게는 이 작업은 유효한 GCM 메시지가 주어진 경우 n × 128비트 길이의 메시지에 대해 약 nµ2−128 확률로 작동하는 GCM 메시지를 위조하는 특정 방법을 설명합니다.그러나, 이 연구는 이전에 알려진 것보다 더 효과적인 공격을 보여주지 않는다. 이 논문의 관찰 1의 성공 확률은 INDOCRYPT 2004 분석의 lema 2의 성공 확률과 일치한다(설정 w = 128 l = n × 128).Saarinen은 또한 Sophie Germain 소수에 기초한 GCM 변형 Sophie Germain 카운터 모드(SGCM)를 설명했다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Lemsitzer, S.; Wolkerstorfer, J.; Felber, N.; Braendli, M. (2007). "Multi-gigabit GCM-AES Architecture Optimized for FPGAs". In Paillier, P.; Verbauwhede, I. (eds.). Cryptographic Hardware and Embedded Systems — CHES 2007. Lecture Notes in Computer Science. Vol. 4727. Springer. pp. 227–238. doi:10.1007/978-3-540-74735-2_16. ISBN 978-3-540-74734-5.
  2. ^ McGrew, David A.; Viega, John (2005). "The Galois/Counter Mode of Operation (GCM)" (PDF). p. 5. Retrieved 20 July 2013. 기사의 수식에 오타가 있는 것에 주의해 주세요.
  3. ^ a b Dworkin, Morris (2007–2011). Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC (PDF) (Technical report). NIST. 800-38D. Retrieved 2015-08-18.
  4. ^ RFC 4106 IPsec Encapsulating Security Payload(ESP; 보안 페이로드)에서의 Galois/Counter Mode(GCM; 갈로이스/카운터 모드) 사용
  5. ^ RFC 4543 IPsec ESP 및 AH에서의 Galois Message Authentication Code(GMAC; 갈로아 메시지 인증 코드) 사용
  6. ^ RFC 5647 Secure Shell Transport Layer Protocol을 위한 AES Galois 카운터 모드
  7. ^ RFC 5288 TLS용 AES Galois 카운터 모드(GCM) 암호 스위트
  8. ^ RFC 6367 트랜스포트 레이어 보안(TLS)에 대한 동백 암호 스위트 추가
  9. ^ RFC 8446 트랜스포트 레이어 보안 프로토콜 버전 1.3
  10. ^ "Algorithm Registration - Computer Security Objects Register CSRC CSRC". 24 May 2016.
  11. ^ "Why SoftEther VPN – SoftEther VPN Project".
  12. ^ Gueron, Shay; Kounavis, Michael (April 2014). "Intel Carry-Less Multiplication Instruction and its Usage for Computing the GCM Mode (Revision 2.02)". Retrieved 2018-04-29.
  13. ^ Käsper, E.; Schwabe, P. (2009). "Faster and Timing-Attack Resistant AES-GCM". In Clavier, C.; Gaj, K. (eds.). Cryptographic Hardware and Embedded Systems – CHES 2009. Lecture Notes in Computer Science. Vol. 5747. Springer. pp. 1–17. doi:10.1007/978-3-642-04138-9_1. ISBN 978-3-642-04138-9.
  14. ^ Gueron, Shay. "AES-GCM for Efficient Authenticated Encryption – Ending the Reign of HMAC-SHA-1?" (PDF). Workshop on Real-World Cryptography. Retrieved 8 February 2013.
  15. ^ Gopal, V., Feghali, W., Gilford, J., Ozturk, E., Wolrich, G., Dixon, M., Locktyukhin, M. Perminov, M. "Intel Architecture에 대한 고속 암호화 계산" (2010)
  16. ^ Manley, Raymond; Gregg, David (2010). "A Program Generator for Intel AES-NI Instructions". In Gong, G.; Gupta, K.C. (eds.). Progress in Cryptology – INDOCRYPT 2010. Lecture Notes in Computer Science. Vol. 6498. Springer. pp. 311–327. doi:10.1007/978-3-642-17401-8_22. ISBN 978-3-642-17400-1.
  17. ^ "IoT Security Part 6: Galois Counter Mode". 2016-05-06. Retrieved 2018-04-29.
  18. ^ McGrew, David A.; Viega, John. "The Galois/Counter Mode of Operation (GCM) Intellectual Property Statement" (PDF). Computer Security Resource Center, NIST.
  19. ^ McGrew, David A.; Viega, John (2004). "The Security and Performance of the Galois/counter mode (GCM) of Operation". Proceedings of INDOCRYPT 2004. Lecture Notes in Computer Science. Vol. 3348. Springer. CiteSeerX 10.1.1.1.4591. doi:10.1007/978-3-540-30556-9_27. ISBN 978-3-540-30556-9.
  20. ^ Niels Ferguson, GCM 인증 취약점, 2005-05-20
  21. ^ Markku-Juhani O. Saarinen (2011-04-20). "Cycling Attacks on GCM, GHASH and Other Polynomial MACs and Hashes". Cryptology ePrint Archive. FSE 2012.

외부 링크