GCM (kryptografie)
Author
Albert FloresGCM (zkratka z anglického , doslova „Galoisovský/čítačový režim“) je provozní režim blokových šifer, který při použití libovolné blokové šifry (s délkou bloku 128 bitů) zároveň zajišťuje i autentizaci a je tak jedním z příkladů autentizovaného šifrování. Režim kombinuje myšlenku jednoduchého čítačového režimu (CTR) s autentizací násobením v konečném (Galoisově) tělese, od čehož je i odvozeno jeho jméno.
Myšlenku představili John Viega a David A. +more McGrew v roce 2004 na konferenci Indocrypt. Jedná se o pokračovatele režimu CWC, který je rovněž nekrytý patenty, ale hůře efektivně implementovatelný v hardwaru.
Princip fungování
Schematické znázornění výpočtu GCM pro dvoublokový otevřený text Režim GCM počítá s blokovou šifrou - typickým příkladem je AES s délkou bloku 128, ale GCM je navržen tak, aby fungoval i s jinými délkami bloku o velikosti alespoň 64 bitů. +more Podobně jako čítačový režim fakticky využívá danou blokovou šifru po způsobu proudových šifer: otevřený text je postupně xorován s blokově šifrovanými hodnotami zvyšovaného čítače. Pro dosažení bezpečnosti je tedy zapotřebí volit čítač vždy jinak, aby nedošlo v rámci různých zpráv k odhadnutelnému překryvu bloků šifrovaných čítačů.
Zároveň a paralelně k šifrování může probíhat i vytváření autentizačních dat. Ta mají (zhruba) podobu násobku všech jednotlivých šifrových bloků počítaného v konečném tělese GF(2128) daném mnohočlenem :x^{128} + x^7 + x^2 + x + 1 který je dále pronásoben autentizačními daty a nakonec proxorován šifrovým blokem vytvořeným z úvodní hodnoty čítače. +more Podrobnější specifikace autentizační funkce je ve skutečnosti ale složitější, protože režim GCM nevyžaduje data zarovnaná na velikost bloku nějakým dřívějším výplňovým algoritmem, ale přímo ve své specifikaci zahrnuje i řešení nezarovnaného vstupu.
Standardizace, podpora a rozšíření
V roce 2007 byl režim GCM standardizován Národním institutem standardů a technologie. Dále jej podporují například standardy +more1AE'>IEEE 802. 1AE, IEEE 802. 11ad, IEEE P1619, IPsec, Secure Shell a TLS (od verze 1. 2).
Na některých počítačových platformách byly pro rychlejší výpočet násobení v režimu GCM zavedeny nové instrukce bezpřenosového násobení. Příkladem je instrukční sada CLMUL na architektuře x86, která se poprvé objevuje v procesorech prodávaných v roce 2010, nebo instrukce XMULX a XMULXHI přidané v roce 2011 do platformy SPARC.