In
cryptography
Cryptography, or cryptology (from "hidden, secret"; and ''graphein'', "to write", or ''-logy, -logia'', "study", respectively), is the practice and study of techniques for secure communication in the presence of Adversary (cryptography), ...
, Galois/Counter Mode (GCM) is a
mode of operation for
symmetric-key cryptographic
block ciphers which is widely adopted for its performance. GCM throughput rates for state-of-the-art, high-speed communication channels can be achieved with inexpensive hardware resources.
The GCM algorithm provides both data authenticity (integrity) and confidentiality and belongs to the class of
authenticated encryption with associated data (AEAD) methods. This means that as input it takes a key K, some plaintext P, and some associated data AD; it then encrypts the plaintext using the key to produce ciphertext C, and computes an authentication tag T from the ciphertext and the associated data (which remains unencrypted). A recipient with knowledge of K, upon reception of AD, C and T, can decrypt the ciphertext to recover the plaintext P and can check the tag T to ensure that neither ciphertext nor associated data were tampered with.
GCM uses a block cipher with block size 128 bits (commonly
AES-128) operated in
counter mode for encryption, and uses arithmetic in the
Galois field GF(2
128) to compute the authentication tag; hence the name.
Galois Message Authentication Code (GMAC) is an authentication-only variant of the GCM which can form an incremental
message authentication code. Both GCM and GMAC can accept
initialization vectors of arbitrary length.
Different block cipher modes of operation can have significantly different performance and efficiency characteristics, even when used with the same block cipher. GCM can take full advantage of
parallel processing and implementing GCM can make efficient use of an
instruction pipeline
In computer engineering, instruction pipelining is a technique for implementing instruction-level parallelism within a single processor. Pipelining attempts to keep every part of the processor busy with some instruction by dividing incoming Mac ...
or a hardware pipeline. By contrast, the
cipher block chaining (CBC) mode of operation incurs
pipeline stall
In the design of instruction pipeline, pipelined computer processors, a pipeline stall is a delay in execution of an instruction set, instruction in order to resolve a hazard (computer architecture), hazard.
Details
In a standard classic RISC pip ...
s that hamper its efficiency and performance.
Basic operation
Like in normal
counter mode, blocks are numbered sequentially, and then this block number is combined with an
initialization vector (IV) and encrypted with a block cipher , usually
AES. The result of this encryption is then
XORed with the
plaintext to produce the
ciphertext
In cryptography, ciphertext or cyphertext is the result of encryption performed on plaintext using an algorithm, called a cipher. Ciphertext is also known as encrypted or encoded information because it contains a form of the original plaintext ...
. Like all counter modes, this is essentially a
stream cipher, and so it is essential that a different IV is used for each stream that is encrypted.
The ciphertext blocks are considered coefficients of a
polynomial
In mathematics, a polynomial is a Expression (mathematics), mathematical expression consisting of indeterminate (variable), indeterminates (also called variable (mathematics), variables) and coefficients, that involves only the operations of addit ...
which is then evaluated at a key-dependent point , using
finite field arithmetic. The result is then encrypted, producing an
authentication tag that can be used to verify the integrity of the data. The encrypted text then contains the IV, ciphertext, and authentication tag.
Mathematical basis
GCM combines the well-known
counter mode of encryption with the new Galois mode of authentication. The key feature is the ease of parallel computation of the
Galois field multiplication used for authentication. This feature permits higher throughput than encryption algorithms, like
CBC, which use chaining modes. The GF(2
128) field used is defined by the polynomial
:
The authentication tag is constructed by feeding blocks of data into the GHASH function and encrypting the result. This GHASH function is defined by
:
where ''H'' = ''E
k''(0
128) is the ''hash key'', a string of 128 zero bits encrypted using the
block cipher, ''A'' is data which is only authenticated (not encrypted), ''C'' is the
ciphertext
In cryptography, ciphertext or cyphertext is the result of encryption performed on plaintext using an algorithm, called a cipher. Ciphertext is also known as encrypted or encoded information because it contains a form of the original plaintext ...
, ''m'' is the number of 128-bit blocks in ''A'' (rounded up), ''n'' is the number of 128-bit blocks in ''C'' (rounded up), and the variable ''X
i'' for is defined below.
First, the authenticated text and the cipher text are separately zero-padded to multiples of 128 bits and combined into a single message ''S
i'':
:
where len(''A'') and len(''C'') are the 64-bit representations of the bit lengths of ''A'' and ''C'', respectively, ''v'' = len(''A'') mod 128 is the bit length of the final block of ''A'', ''u'' = len(''C'') mod 128 is the bit length of the final block of ''C'', and
denotes concatenation of bit strings.
Then ''X
i'' is defined as:
:
The second form is an efficient iterative algorithm (each ''X
i'' depends on ''X''
''i''−1) produced by applying
Horner's method to the first. Only the final ''X''
''m''+''n''+1 remains an output.
If it is necessary to parallelize the hash computation, this can be done by interleaving ''k'' times:
:
If the length of the IV is not 96, the GHASH function is used to calculate ''Counter 0'':
:
GCM was designed by
John Viega and David A. McGrew to be an improvement to
Carter–Wegman counter mode (CWC mode).
In November 2007,
NIST
The National Institute of Standards and Technology (NIST) is an agency of the United States Department of Commerce whose mission is to promote American innovation and industrial competitiveness. NIST's activities are organized into physical s ...
announced the release of NIST Special Publication 800-38D ''Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC'' making GCM and GMAC official standards.
Use
GCM mode is used in the
IEEE 802.1AE (MACsec) Ethernet security,
WPA3-Enterprise Wifi security protocol,
IEEE 802.11ad (also dubbed
WiGig), ANSI (
INCITS
The InterNational Committee for Information Technology Standards (INCITS), (pronounced "insights"), is an ANSI-accredited standards development organization composed of Information technology developers. It was formerly known as the X3 and NCITS ...
)
Fibre Channel
Fibre Channel (FC) is a high-speed data transfer protocol providing in-order, lossless delivery of raw block data. Fibre Channel is primarily used to connect computer data storage to Server (computing), servers in storage area networks (SAN) in ...
Security Protocols (FC-SP),
IEEE P1619.1 tape storage,
IETF
The Internet Engineering Task Force (IETF) is a standards organization for the Internet standard, Internet and is responsible for the technical standards that make up the Internet protocol suite (TCP/IP). It has no formal membership roster ...
IPsec standards,
SSH,
TLS 1.2 and TLS 1.3. AES-GCM is included in the
NSA Suite B Cryptography and its latest replacement in 2018
Commercial National Security Algorithm (CNSA) suite. GCM mode is used in the
SoftEther VPN server and client, as well as
OpenVPN since version 2.4.
Performance
GCM requires one block cipher operation and one 128-bit multiplication in the
Galois field per each block (128 bit) of encrypted and authenticated data. The block cipher operations are easily pipelined or parallelized; the multiplication operations are easily pipelined and can be parallelized with some modest effort (either by parallelizing the actual operation, by adapting
Horner's method per the original NIST submission, or both).
Intel has added the
PCLMULQDQ instruction, highlighting its use for GCM. In 2011, SPARC added the XMULX and XMULXHI instructions, which also perform 64 × 64 bit
carry-less multiplication. In 2015, SPARC added the XMPMUL instruction, which performs XOR multiplication of much larger values, up to 2048 × 2048 bit input values producing a 4096-bit result. These instructions enable fast multiplication over GF(2
''n''), and can be used with any field representation.
Impressive performance results are published for GCM on a number of platforms. Käsper and Schwabe described a "Faster and
Timing-Attack Resistant AES-GCM" that achieves 10.68 cycles per byte AES-GCM authenticated encryption on 64-bit Intel processors. Dai et al. report 3.5 cycles per byte for the same algorithm when using Intel's
AES-NI and PCLMULQDQ instructions.
Shay Gueron and
Vlad Krasnov achieved 2.47 cycles per byte on the 3rd generation Intel processors. Appropriate patches were prepared for the
OpenSSL and
NSS libraries.
When both authentication and encryption need to be performed on a message, a software implementation can achieve speed gains by overlapping the execution of those operations. Performance is increased by exploiting
instruction-level parallelism by interleaving operations. This process is called function stitching, and while in principle it can be applied to any combination of cryptographic algorithms, GCM is especially suitable. Manley and Gregg show the ease of optimizing when using function stitching with GCM. They present a program generator that takes an annotated C version of a cryptographic algorithm and generates code that runs well on the target processor.
GCM has been criticized in the embedded world (for example by Silicon Labs) because the parallel processing is not suited for performant use of cryptographic hardware engines. As a result, GCM reduces the performance of encryption for some of the most performance-sensitive devices. Specialized hardware accelerators for
ChaCha20-Poly1305 are less complex compared to AES accelerators.
Patents
According to the authors' statement, GCM is unencumbered by patents.
Security
GCM is proven secure in the
concrete security model. It is secure when it is used with a block cipher that is indistinguishable from a random permutation; however, security depends on choosing a unique
initialization vector for every encryption performed with the same key (''see''
stream cipher attack). For any given key and initialization vector value, GCM is limited to encrypting bits of plain text (64 GiB). NIST Special Publication 800-38D
includes guidelines for initialization vector selection and limits the number of possible initialization vector values for a single key. As the security assurance of GCM degrades with more data being processed using the same key, the total number of blocks of plaintext and AD protected during the lifetime of a single key should be limited by 2
64.
The authentication strength depends on the length of the authentication tag, like with all symmetric message authentication codes. The use of shorter authentication tags with GCM is discouraged. The bit-length of the tag, denoted ''t'', is a security parameter. In general, ''t'' may be any one of the following five values: 128, 120, 112, 104, or 96. For certain applications, ''t'' may be 64 or 32, but the use of these two tag lengths constrains the length of the input data and the lifetime of the key. Appendix C in NIST SP 800-38D provides guidance for these constraints (for example, if and the maximal packet size is 2
10 bytes, the authentication decryption function should be invoked no more than 2
11 times; if and the maximal packet size is 2
15 bytes, the authentication decryption function should be invoked no more than 2
32 times).
Like with any message authentication code, if the adversary chooses a ''t''-bit tag at random, it is expected to be correct for given data with probability measure 2
−''t''. With GCM, however, an adversary can increase their likelihood of success by choosing tags with ''n'' words – the total length of the ciphertext plus any additional authenticated data (AAD) – with probability measure 2
−''t'' by a factor of ''n''. Although, one must bear in mind that these optimal tags are still dominated by the algorithm's survival measure for arbitrarily large ''t''. Moreover, GCM is neither well-suited for use with very short tag-lengths nor very long messages.
Ferguson and Saarinen independently described how an attacker can perform optimal attacks against GCM authentication, which meet the lower bound on its security. Ferguson showed that, if ''n'' denotes the total number of blocks in the encoding (the input to the GHASH function), then there is a method of constructing a targeted ciphertext forgery that is expected to succeed with a probability of approximately ''n''⋅2
−''t''. If the tag length ''t'' is shorter than 128, then each successful forgery in this attack increases the probability that subsequent targeted forgeries will succeed, and leaks information about the hash subkey, ''H''. Eventually, ''H'' may be compromised entirely and the authentication assurance is completely lost.
[Niels Ferguson]
Authentication Weaknesses in GCM
2005-05-20
Independent of this attack, an adversary may attempt to systematically guess many different tags for a given input to authenticated decryption and thereby increase the probability that one (or more) of them, eventually, will be considered valid. For this reason, the system or protocol that implements GCM should monitor and, if necessary, limit the number of unsuccessful verification attempts for each key.
Saarinen described GCM
weak keys.
This work gives some valuable insights into how polynomial hash-based authentication works. More precisely, this work describes a particular way of forging a GCM message, given a valid GCM message, that works with probability of about for messages that are bits long. However, this work does not show a more effective attack than was previously known; the success probability in observation 1 of this paper matches that of lemma 2 from the INDOCRYPT 2004 analysis (setting and ). Saarinen also described a GCM variant
Sophie Germain Counter Mode (SGCM) based on
Sophie Germain primes.
See also
*
Authenticated encryption
*
Block cipher mode of operation
*
AES-GCM-SIV
References
External links
NIST Special Publication SP800-38D defining GCM and GMAC* : The Use of Galois/Counter Mode (GCM) in IPsec Encapsulating Security Payload (ESP)
* : The Use of Galois Message Authentication Code (GMAC) in IPsec ESP and AH
* : AES Galois Counter Mode (GCM) Cipher Suites for TLS
* : Addition of the Camellia Cipher Suites to Transport Layer Security (TLS)
IEEE Security in Storage Working Groupdeveloped the P1619.1 standard
works o
Fibre Channel – Security Protocolsproject.
AES-GCM and AES-CCM Authenticated Encryption in Secure RTP (SRTP)
The Galois/Counter Mode of Operation (GCM)
{{DEFAULTSORT:Galois Counter Mode
Block cipher modes of operation
Finite fields
Message authentication codes
Authenticated-encryption schemes