Kriptografide **Galois / Sayaç Modu** (**GCM**), performansı sayesinde yaygın olarak benimsenen simetrik anahtar şifreleme blok şifrelemeleri için bir çalışma modudur. Son teknoloji ürünü olan GCM, yüksek hızlı iletişim kanalları için ucuz donanım kaynakları ile üretim hızlandırabilir. Bu operasyon, hem veri doğruluğu (bütünlük) hem de gizlilik sağlamak için tasarlanmış kimliği doğrulanmış bir şifreleme algoritmasıdır. GCM, 128 bit blok boyutuna sahip blok şifreleri için tanımlanmıştır. **Galois İleti Kimlik Doğrulama Kodu** (**GMAC**), arttırımlı ileti doğrulama kodu olan GCM’in sadece kimlik doğrulama türüdür. Hem GCM hem de GMAC, başlatma vektörleri keyfi uzunlukta kabul edebilir.

Farklı blok şifre çalışma modları, aynı blok şifresi ile kullanıldığında bile önemli ölçüde farklı performans ve verimlilik özelliklerine sahip olabilirler. GCM, paralel çalışma ve uygulamasından tam verimiyle yararlanabilir. GCM, bir boru hattını veya bir donanım boru hattını verimli bir şekilde kullanabilir. Buna karşılık, şifre bloğu zincirleme (CBC) çalışma modu, verimliliğini ve performansını etkileyecek belirgin boru hattı duraklarına maruz kalır.

Temel operasyon
---------------

Sayaç modunda olduğu gibi, bloklar sırayla numaralandırılır ve ardından bu blok numarası bir başlatma vektörü (IV) ile birleştirilir. Genellikle AES olan bir blok şifre E ile şifrelenir. Bu şifrelemenin sonucu daha sonra şifreleme metnini oluşturmak için düz metinle XOR'lu hale getirilir.Tüm sayaç modları gibi, bu da aslında bir dizi şifresidir ve bu nedenle şifrelenen her dizi için farklı bir IV kullanılması önemlidir.

Şifreleme blokları, daha sonra sonlu alan aritmetiği kullanılarak anahtara bağımlı bir H noktası bulunur. H noktası polinomun katsayıları olarak kabul edilir. Sonuç daha sonra şifrelenir ve verilerin bütünlüğünü doğrulamak için kullanılabilecek bir kimlik doğrulama etiketi üretilir. Şifrelenmiş metin IV, şifreleme metni ve kimlik doğrulama etiketini içerir.

GCM şifreleme işlemi

Matematiksel temel
------------------

GCM, yaygın olan sayaç şifrelemeyi yeni Galois kimlik doğrulama moduyla birleştirir. Anahtarın özelliği, kimlik doğrulaması için kullanılan Galois alan çarpımının paralel hesaplama kolaylığı sağlamasıdır. Bu özellik, CBC gibi zincirleme modlarında kimlik doğrulama algoritmalarının daha yüksek verim de olmasına izin verir. Kullanılan GF (2 128) terimi polinom tarafından tanımlanır:

{\displaystyle x^{128}+x^{7}+x^{2}+x+1}
Kimlik doğrulama etiketi, veri bloklarının GHASH işlevine aktarılması ve sonucun şifrelenmesi ile oluşturulur. Bu GHASH fonksiyonu aşağıdaki gibi tanımlanır:

{\displaystyle {\text{GHASH}}(H,A,C)=X\_{m+n+1}}
burada *H* = *E k* (0 128 ), Blok şifre kullanılarak şifrelenen 128 sıfır bitlik bir dize olan Hash anahtarıdır, *A* sadece kimliği doğrulanmış (şifrelenmemiş) verilerdir, *C* şifreli metindir, *m* 128- *A'daki* bit blokları (yukarı yuvarlanmış), *n*, *C'deki* (yukarı yuvarlanmış) 128 bitlik blokların sayısıdır ve *i* = 0, ... *m* + *n* + 1 için *X i* değişkeni aşağıda tanımlanmıştır.

İlk olarak, kimliği doğrulanmış metin ve şifre metni 128 bitlik katlara ayrı ayrı sıfır doldurulur ve tek bir mesajda *S i* birleştirilir :

{\displaystyle S\_{i}={\begin{cases}A\_{i}&{\text{for }}i=1,\ldots ,m-1\\A\_{m}^{\*}\parallel 0^{128-v}&{\text{for }}i=m\\C\_{i-m}&{\text{for }}i=m+1,\ldots ,m+n-1\\C\_{n}^{\*}\parallel 0^{128-u}&{\text{for }}i=m+n\\\operatorname {len} (A)\parallel \operatorname {len} (C)&{\text{for }}i=m+n+1\end{cases}}}
len (*A*) ve len (*C*), sırasıyla *A* ve *C* bit uzunluklarının 64 bit gösterimidir, *v*   =   len (*A*)  mod 128, *A'nın* son bloğunun bit uzunluğudur   =   len (*C*)  mod 128, *C'nin* son bloğunun bit uzunluğudur ve {\displaystyle \parallel } "bit" dizelerinin birleştirmesini gösterir.

*X i* şu şekilde tanımlanır:

{\displaystyle X\_{i}=\sum \_{j=1}^{i}S\_{j}\cdot H^{i-j+1}={\begin{cases}0&{\text{for }}i=0\\\left(X\_{i-1}\oplus S\_{i}\right)\cdot H&{\text{for }}i=1,\ldots ,m+n+1\end{cases}}}
İkinci form, Horner yöntemini birinciye uygulanması sonucu elde edilen verimli bir yinelemeli algoritmadır. (her *X i*, *X* *i* −1'e bağlıdır). Yalnızca son *X* *m* + *n* +1 çıktı olarak kalır.

Hash hesaplamasını paralelleştirilmesi gerekiyorsa, k kez yapılabilir:

{\displaystyle {\begin{aligned}X\_{i}^{'}&={\begin{cases}0&{\text{for }}i\leq 0\\\left(X\_{i-k}^{'}\oplus S\_{i}\right)\cdot H^{k}&{\text{for }}i=1,\ldots ,m+n+1-k\\\end{cases}}\\[6pt]X\_{i}&=\sum \_{j=1}^{k}\left(X\_{i+j-2k}^{'}\oplus S\_{i+j-k}\right)\cdot H^{k-j+1}\end{aligned}}}
GCM John Viega ve David A. McGrew tarafından CWC modu (Carter-Wegman Counter modu) için bir gelişme olarak tasarlanmıştır.

Kasım 2007'de NIST, Blok Şifreleme Modu için NIST Özel Yayın 800-38D tavsiyede bulundu: Galois/Sayaç Modu (GCM) ve GMAC'nin GCM ve GMAC resmi standartlarını oluşturması için duyurdu.

Kullanım
--------

GCM modu IEEE 802.1AE (MACsec) Ethernet güvenliği, IEEE 802.11ad (WiGig olarak da adlandırılan), ANSI (INCITS) Fiber Kanal Güvenlik Protokolleri (FC-SP), IEEE P1619.1 bant depolama, IETF IPsec standartları, SSH, TLS 1.2 ve TLS 1.3. AES-GCM, NSA Suite B Kriptografi'sine dahildir ve 2018 Ticari Ulusal Güvenlik Algoritması (CNSA) paketinde en son değiştirilmiştir. GCM modu, SoftEther VPN sunucusunda ve istemcisin de ve OpenVPN sürümü 2.4'ten beri kullanılmaktadır.

Performans
----------

GCM, şifrelenmiş ve kimliği doğrulanmış verilerin her bloğu (128 bit) için bir blok şifreleme işlemi ve Galois alanında 128 bit çarpma gerektirir. Blok şifreleme işlemleri kolayca ardışık ya da paralel yapılabilir; çarpma işlemleri kolayca ardışık(boru) yapılabilir ve makul bir çaba ile paralelleştirilebilir (ya asıl operasyonu paralelleştirerek, ya Horner'ın yöntemini orijinal NIST gönderimi başına uyarlayarak veya her ikisini de)

Intel, GCM kullanımını vurgulayarak PCLMULQDQ talimatını ekledi. 2011 yılında SPARC, 64 × 64 bit taşıma gerektirmeyen çarpma gerçekleştiren XMULX ve XMULXHI talimatlarını ekledi. 2015 yılında SPARC, 4096 bit sonuç üreten 2048 × 2048 bit giriş değerlerine kadar çok daha büyük değerlerin XOR çarpımı gerçekleştiren XMPMUL talimatını ekledi. Bu talimatlar GF (2 *n*) üzerinde hızlı çarpma ve herhangi bir alan gösterimi sağlar.

GCM’in etkileyici performans sonuçları birçok platformda yayınlandı. Käsper ve Schwabe, 64 bit Intel işlemcilerde bayt başına 10.68 döngüyü elde eden "Daha Hızlı ve Zamanlamaya Karşı Saldırıya Dayanıklı AES-GCM "tanımladı. Dai ve diğerleri Intel'in AES-NI ve PCLMULQDQ yönergelerini kullanırken aynı algoritma için bayt başına 3,5 döngü rapor etti. Shay Gueron ve Vlad Krasnov, 3. nesil Intel işlemcilerde bayt başına 2.47 döngü elde etti. OpenSSL ve NSS kütüphaneleri için uygun yamalar hazırlandı.

İleti üzerinde hem kimlik doğrulama hem de şifreleme yapılması gerektiğinde, yazılım uygulaması bu işlemlerin yürütülmesini örtüştürerek hızlandırabilir. Birbiriyle bağlantılı olan işlemlerde komut düzeyinde paralellikten yararlanılarak performans artırılır.Bu işleme fonksiyon dikişi denir, ve prensipte herhangi bir kriptografik algoritma kombinasyonunda uygulanabilir. Özellikle GCM’e uygundur. Manley ve Gregg, GCM ile fonksiyon dikişi kullanıldığında optimizasyonun kolaylığını gösterir. Şifreleme algoritmasının açıklamalı bir C sürümünü alan ve hedef işlemcide düzgün çalışan kod oluşturan bir program oluşturucu sunarlar.

GCM gömülü dünyada örneğin Silicon Labs tarafından paralel işlemlerde  kriptografik donanım motorlarının performans kullanımında uygun olmadığı için eleştirildi. Bu nedenle performansa duyarlı bazı aygıtlar için şifreleme performansını azaltır.

Patentler
---------

Yazarın ifadesine göre, GCM patentler tarafından serbest bırakılamaz

Güvenlik
--------

GCM'nin beton güvenlik modelinde güvenli olduğu kanıtlanmıştır. Rastgele bir permütasyondan ayırt edilemeyen bir blok şifresini alarak güvenli hale getirilir. Ancak, güvenlik aynı anahtarla gerçekleştirilen her şifreleme için benzersiz bir başlatma vektörü seçmeye bağlıdır. (bkz. dizi şifresi saldırısı).Herhangi bir anahtar ve başlatma vektörü kombinasyonu için, GCM düz metni (64 GiB) 239−256 bit şifrelemesiyle sınırlıdır. NIST Özel Yayını 800-38D, başlatma vektörü seçimi için yönergeler içerir.

Kimlik doğrulama gücü, tüm simetrik ileti kimlik doğrulama kodlarında olduğu gibi kimlik doğrulama etiketinin uzunluğuna bağlıdır. GCM'le daha kısa kimlik doğrulama etiketlerinin kullanılması önerilmez. *T* ile gösterilen etiketin bit uzunluğu bir güvenlik parametresidir. Genel olarak, *t* beş değerden herhangi biri olabilir: 128, 120, 112, 104 veya 96. Bazı uygulamalar için *t*, 64 veya 32 olabilir, ancak bu iki etiket uzunluğunun kullanımı verilerinin uzunluğunu ve anahtarın ömrünü kısıtlar. NIST SP 800-38D'deki Ek C bu kısıtlamalar için kılavuz sağlar. (örneğin, *t* = 32 ve maksimum paket boyutu 2 10 bayt ise, kimlik doğrulama şifre çözme işlevi en fazla 211 kez çağrılmalıdır; *t* = 64 ve maksimum paket boyutu 2 15 ise, kimlik doğrulama şifre çözme işlevi en fazla 2 32 kez çağrılmalıdır).

Herhangi bir ileti kimlik doğrulama kodunda olduğu gibi, eğer tehdit rastgele bir *t-* bit etiketi seçerse, olasılığı 2 - *t* şeklinde olan veriler için doğru olması beklenir. Ancak, GCM ile rakip başarım oranının benzerliğini n kelimeli etiketleri (şifreli metnin toplam uzunluğu artı herhangi bir ek doğrulanmış veri (AAD)) seçerek ve olasılığı 2 - *t* faktörle başarı olasılığı artırabilir. Buna rağmen unutulmamalıdır ki bu optimal etiketlerin hala keyfi olarak büyük *t* için algoritmanın varlığını sürdürme ölçüsü 1 − *n*⋅2−*t* tarafından domine edilmektedir. Ayrıca, GCM çok kısa etiket uzunlukları ya da çok uzun iletilerde kullanım için uygun değildir.

Ferguson ve Saarinen, saldırganın güvenliğinin alt sınırını karşılayan GCM kimlik doğrulamasına karşı en uygun saldırılarının nasıl gerçekleştirebileceğini bağımsız olarak açıkladı. Ferguson, eğer *n* kodlamadaki toplam blok sayısını (GHASH işlevine giriş) gösterirse, o zaman yaklaşık olarak *n* ⋅2 - *t* olasılığıyla başarılı olması beklenen hedeflenmiş bir şifreleme metni sahtekarlığı oluşturma yöntemi olduğunu gösterilmiş olur. Etiket uzunluğu *t* 128'den kısaysa, bu saldırıda başarılı olan her sahte işlem, sonraki hedeflenen sahteciliklerde başarılı olma olasılığını artırır ve hash alt anahtarı H hakkında bilgi sızdırır. Sonunda, *H* tamamen tehlikeye girebilir ve kimlik doğrulama güvencesi tamamen kaybolabilir.

Bu saldırıdan bağımsız olarak bir düşman,kimlik doğrulamasına yönelik belirli bir giriş için birçok farklı etiketi sistematik olarak tahmin etmeye çalışabilir ve böylece bunların (veya daha fazlasının) sonunda geçerli kabul edilme olasılığını artırabilir. Bu nedenle, GCM'yi uygulayan sistem veya protokol, her bir anahtar için başarısız doğrulama girişimi sayısını izlemeli ve gerekirse sınırlandırmalıdır.

Saarinen, GCM'nin zayıf anahtarlarını tarif etti. Bu çalışma, polinom hash tabanlı kimlik doğrulamanın nasıl çalıştığı hakkında bazı değerli bilgiler vermektedir. Daha kesin olarak, bu çalışma, geçerli bir GCM mesajı verildiğinde, bir GCM mesajının, *n* × 128 bit uzunluğundaki mesajlar için yaklaşık *n*⋅2−128 olasılığı ile çalışabilmesini açıkladı. Ancak, bu çalışma önceden bilindiğinden ötürü daha etkili bir saldırı gösterememektedir; bu yazının gözlemindeki bir başarı olasılığı INDOCRYPT 2004 analizinden yardımcı önerme 2 ile aynıdır (*w* = 128 ve *l* = *n* × 128 ). Saarinen da GCM varyantı olan Sophie Germain Sayaç Modu, (SGCM) Sophie Germain asal'a dayanır.

Ayrıca bakınız
--------------

* Kimliği doğrulanmış şifreleme
* Şifre çalışma modlarını engelle
* AES-GCM-SIV

Kaynakça
--------

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. **4727**. Springer. pp. 227–238. doi:10.1007/978-3-540-74735-2\_16. ISBN 978-3-540-74734-5.
2. ↑  "The Galois/Counter Mode of Operation (GCM)" (PDF). 2005. s. 5. 3 Mart 2016 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 20 Temmuz 2013.  *Note that there is a typo in the formulas in the article.*
3. ↑  Dworkin, Morris (2007–2011). *Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC* (PDF). NIST. 800-38D. 5 Ağustos 2011 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 18 Ağustos 2015.
4. ↑  RFC 4106 The Use of Galois/Counter Mode (GCM) in IPsec Encapsulating Security Payload (ESP)
5. ↑  RFC 4543 *The Use of Galois Message Authentication Code (GMAC) in IPsec ESP and AH*
6. ↑  RFC 5647 *AES Galois Counter Mode for the Secure Shell Transport Layer Protocol*
7. ↑  RFC 5288 *AES Galois Counter Mode (GCM) Cipher Suites for TLS*
8. ↑  RFC 6367 *Addition of the Camellia Cipher Suites to Transport Layer Security (TLS)*
9. ↑  RFC 8446 *The Transport Layer Security protocol version 1.3*
10. ↑  "Arşivlenmiş kopya". 16 Nisan 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Nisan 2020.
11. ↑  "Why SoftEther VPN – SoftEther VPN Project". 11 Mart 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Nisan 2020.
12. ↑  "Intel Carry-Less Multiplication Instruction and its Usage for Computing the GCM Mode (Revision 2.02)". Nisan 2014. 18 Şubat 2010 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Nisan 2018.
13. ↑  Käsper, E.; Schwabe, P. (2009). "Faster and Timing-Attack Resistant AES-GCM". Clavier, C.; Gaj, K. (Ed.). *Cryptographic Hardware and Embedded Systems – CHES 2009*. Lecture Notes in Computer Science. **5747**. Springer. ss. 1-17. doi:10.1007/978-3-642-04138-9\_1. ISBN 978-3-642-04138-9.
14. ↑  "AES-GCM for Efficient Authenticated Encryption – Ending the Reign of HMAC-SHA-1?" (PDF). *Workshop on Real-World Cryptography*. 10 Mart 2014 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 8 Şubat 2013.
15. ↑  Gopal, V. Feghali, W. Guilford, J. Ozturk, E. Wolrich, G. Dixon, M. Locktyukhin, M. Perminov, M. "Fast Cryptographic Computation on Intel Architecture via Function Stitching" 17 Eylül 2011 tarihinde Wayback Machine sitesinde arşivlendi. Intel Corp. (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. **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". 6 Mayıs 2016. 11 Mayıs 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Nisan 2018.
18. ↑  "The Galois/Counter Mode of Operation (GCM) Intellectual Property Statement" (PDF). Computer Security Resource Center, NIST. 29 Ağustos 2008 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 19 Nisan 2020.
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. **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, Authentication Weaknesses in GCM 21 Eylül 2008 tarihinde Wayback Machine sitesinde arşivlendi. 2005-05-20
21. ↑  Markku-Juhani O. Saarinen (20 Nisan 2011). "Cycling Attacks on GCM, GHASH and Other Polynomial MACs and Hashes". FSE 2012. 23 Kasım 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Nisan 2020.

Dış bağlantılar
---------------

* GCM ve GMAC'ı tanımlayan NIST Özel Yayını SP800-38D
* RFC 4106: IPsec Kapsüllenen Güvenlik Yükü'nde (ESP) Galois / Sayaç Modu (GCM) Kullanımı
* RFC 4543: IPsec ESP ve AH'de Galois İleti Kimlik Doğrulama Kodunun (GMAC) Kullanımı
* RFC 5288: TLS için AES Galois Sayaç Modu (GCM) Şifre Paketleri
* RFC 6367: Kamelya Şifre Paketlerinin Taşıma Katmanı Güvenliğine Eklenmesi (TLS)
* IEEE 802.1AE - Medya Erişim Kontrolü (MAC) Güvenliği 3 Kasım 2017 tarihinde Wayback Machine sitesinde arşivlendi.
* IEEE Depolamada Güvenlik Çalışma Grubu 2 Aralık 2007 tarihinde Wayback Machine sitesinde arşivlendi. P1619.1 standardını geliştirdi
* INCITS T11 Teknik Komitesi 19 Aralık 2006 tarihinde Wayback Machine sitesinde arşivlendi. Fiber Kanal - Güvenlik Protokolleri 12 Mart 2007 tarihinde Wayback Machine sitesinde arşivlendi. projesi üzerinde çalışmaktadır.
* Güvenli RTP'de (SRTP) AES-GCM ve AES-CCM Kimlik Doğrulamalı Şifreleme 20 Eylül 2020 tarihinde Wayback Machine sitesinde arşivlendi.
* Galois / Sayıcı Çalışma Modu (GCM) 20 Eylül 2020 tarihinde Wayback Machine sitesinde arşivlendi.