HMAC 2026-11-05
HMAC constructs a message authentication code from a cryptographic hash function and a shared secret key. For a hash with input block size bytes, normalize the key to a -byte string : first hash it if it is longer than , then pad with zero bytes. The construction is
Here is bytewise exclusive or, is concatenation of strings, ipad repeats byte 0x36, and opad repeats byte 0x5c. The inner and outer keyed hashing stages are part of the construction, rather than interchangeable placements of a key beside a message.[ref]
A concrete interoperability example uses SHA-256, a member of SHA-2. Its block size is64 bytes while its full digest is32 bytes. With a key of20 0x0b bytes and the ASCII message Hi There, the hexadecimal tag is b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7.[ref]
The receiver recomputes the tag using the shared key and checks the received tag. HMAC authenticates the message without concealing its contents; encryption is a separate operation. Because both parties know the key, both can make valid tags. A valid tag also remains valid when the same authenticated message is sent again, so replay handling belongs to the surrounding cryptographic protocol.
HMAC's original analysis and design are due to Mihir Bellare, Ran Canetti and Hugo Krawczyk.[ref]
Hugo Krawczyk 2026-11-05
Hugo Krawczyk is a computer scientist working on the theory and applications of cryptography, including message authentication and the design of cryptographic protocols.[ref]
With Mihir Bellare and Ran Canetti, Hugo Krawczyk developed HMAC, a message authentication code built from a cryptographic hash function. The scientific problem is that an ordinary public hash function lets anyone recompute a digest after changing a message. A keyed construction lets parties sharing a cryptographic key check authenticity under stated security assumptions.[ref] Authentication alone does not conceal the message: encryption addresses a different requirement.
With Pasi Eronen, Hugo Krawczyk specified HKDF, an HMAC-based key derivation function. Its extraction step processes input keying material into a pseudorandom key; expansion derives output keying material with application-specific context. For example, a protocol can use distinct context labels for sending and receiving keys, rather than reuse one key for both roles. This separates uses of an existing secret; it does not manufacture secrecy from fully predictable input.[ref]
Figure 1.
Hugo Krawczyk, portrait linked from his Simons Institute profile
.
Mihir Bellare 2026-11-05
Mihir Bellare is a computer scientist whose work in cryptography connects practical constructions with provable security: a claimed security property is expressed as a mathematical condition, with a proof relating an attack to specified assumptions. His UC San Diego homepage describes this emphasis on primitives of applied interest.
With Ran Canetti and Hugo Krawczyk, Mihir Bellare developed the hash-based message authentication code HMAC. Their 1996 paper studies how to turn an unkeyed cryptographic hash function into a keyed message authentication mechanism and analyzes the resulting construction under explicit assumptions. The practical task is to let two parties sharing a cryptographic key detect unauthorized message changes: an ordinary public hash function alone cannot prevent an attacker from changing a message and recomputing its hash.[ref] The construction was subsequently specified in the February1997 document HMAC: Keyed-Hashing for Message Authentication (RFC 2104); that RFC is explicitly categorized as Informational.[ref]
With Oded Goldreich, Mihir Bellare also refined the definition of a proof of knowledge. Their work makes “knowing” a mathematical witness operational through a knowledge extractor, with a knowledge error distinguishing acceptance obtainable without such knowledge from acceptance that supports extraction.[ref]
The graph isomorphism example makes that distinction concrete. A prover sends a graph and must answer a random challenge asking for an isomorphism from either or to . Preparing only one answer can give acceptance probability , so one accepted exchange is not itself evidence that the prover knows an isomorphism between and . If an extractor obtains valid maps and for the same , it can construct . This illustrates why a careful extraction definition, rather than the informal phrase “the verifier was convinced”, matters when building larger cryptographic protocols.[ref]
Ran Canetti 2026-11-05
Ran Canetti is a computer scientist whose work in cryptography concerns the design and analysis of cryptographic protocols. His institutional biography records a doctorate from the Weizmann Institute.[ref]
With Mihir Bellare and Hugo Krawczyk, Ran Canetti developed the HMAC message authentication code. The construction turns a cryptographic hash function into a keyed mechanism for detecting unauthorized message changes; its analysis connects a concrete algorithm with explicit security assumptions.[ref]
Ran Canetti also introduced the framework of universal composability. It addresses a difficulty that appears when security mechanisms are combined: analyzing one isolated execution does not automatically establish security when many executions interact. His framework provides a composition guarantee for cryptographic protocols satisfying its definitions and assumptions, allowing larger systems to be reasoned about through suitable component guarantees.[ref]
For motivation, imagine an application running two authenticated conversations at once. An attacker may schedule their messages and attempt to reuse information from one conversation in the other. A proof limited to a single isolated conversation leaves this interaction outside its stated model. Universal composability makes such surrounding activity part of the security question; it does not declare every component secure merely because the component has been called cryptographic. The report began in 2000 and an extended abstract appeared in 2001; the linked full report includes later revisions.[ref]
Figure 1.
Ran Canetti, portrait linked from his Boston University profile
.
Universal composability 2026-11-05
Universal composability is a framework for specifying and proving security of cryptographic protocols so that their guarantees survive the framework's protocol-composition operation. It compares a real implementation with an ideal cryptographic functionality describing the intended service, permitted leakage and adversarial influence. Ran Canetti's primary work develops the composition guarantee, including concurrent executions.[ref]
The comparison uses a cryptographic simulator in the ideal execution and a cryptographic environment trying to distinguish the executions. Schematically, in the computational formulation,
Here is the real adversary, the simulator, the environment, an auxiliary input and the cryptographic security parameter. The participants have the specified computational bounds, and denotes computational indistinguishability. The simulator is chosen for the adversary before universally quantifying over environments; a different simulator chosen after seeing each environment would be a weaker requirement.[ref]
An original distinguishing example shows why permitted leakage belongs in the specification. Suppose an ideal channel hides a message's length before delivery, but a proposed real implementation exposes that length. An environment privately selects a uniform bit and supplies an honest sender a one-byte message if or a two-byte message if . It asks the adversary to guess before the honest recipient supplies any output. Visible length lets a real adversary guess perfectly. An ideal simulator receiving no length or content information can guess only with probability . The environment accepts when the guess equals its private bit, giving a probability gap .
That mismatch can be addressed by changing the implementation, for example with suitable padding, or by specifying the intended length leakage in the ideal service. The two choices describe different security properties. Correctly delivering messages does not by itself resolve the distinction.
The composition theorem permits replacing an ideal-service call by a protocol that realizes that service, under the theorem's interface and execution-model conditions. This supports modular proofs: a larger protocol need not reanalyse the lower-level implementation from scratch.[ref] The guarantee belongs to the modelled setup, identities and allowed interactions; an isolated confidentiality game is not automatically a proof of universal composability.