liveBook · Manning

Nonrepudiation

As explained in API Design Patterns

Nonrepudiation is assurance that an actor cannot credibly deny having originated a request or message after its origin has been established.

Nonrepudiation assures that, once a request’s origin is verified, the originating actor cannot credibly deny sending it. It extends request authentication beyond origin and integrity: a third party must also be able to distinguish a genuine request from one forged by the API server. section 30.1 section 30.1.3

The requirement rules out shared credentials. With a symmetric secret, both the user and API server can produce evidence that appears to authenticate the user, so an outside verifier cannot tell whether the server forged the request. Asymmetric credentials separate signing from verification: the user alone holds the signing credential, while others verify with a different credential. section 30.1.3

A request reviewed by a third party

Imagine a request claiming to come from user 1234. A digital signature lets a third party verify that user 1234 originated the request without relying on a shared secret that the API server could misuse. If the request also includes the HTTP method, path, host, and selected body content in its fingerprint, changes to the signed request become detectable. section 30.1.3 section 30.6

Choose nonrepudiation deliberately rather than treating it as a default requirement:

  • Prefer digitally signed requests when third parties may execute them later or when sensitive records, such as health or financial data, may be audited. section 30.4
  • Consider HMAC with a shared secret or short-lived access tokens such as OAuth 2.0 when nonrepudiation is only a nice-to-have and transport security is trusted. section 30.4
  • Account for the greater computational cost of asymmetric cryptography when evaluating performance-sensitive designs. section 30.4

How API Design Patterns covers it

How deep it goes
Explains the symmetric-credential failure, asymmetric remedy, request fingerprint, and selection trade-offs without detailing cryptographic implementation.
Examples
Uses user 1234, a potentially forging API server, third-party verification, and signed HTTP request components.
What it assumes
Assumes basic API requests and authentication, while distinguishing origin, integrity, and repudiation explicitly.
What you can do after
Evaluate authentication designs and choose signed requests when independent verification or durable audit evidence is required.
How it connects
Connects digital signatures, public-key cryptography, HMAC, OAuth 2.0, request integrity, and request-origin authentication.

Also explained in

Compare how 5 books explain nonrepudiation →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of API Design Patterns. The section links point to the parts of the book it draws on.