Web services generate various security tokens (e.g. HTTP cookies, OAuth tokens) for web applications to access protected resources. Any party in possession of such token, gains access to the protected resource. Attackers export bearer tokens from the user's machine, present them to web services, and impersonate authenticated users.
The idea of Token Binding is to prevent such attacks by cryptographically binding security tokens to the TLS layer.
Token Binding: A TLS Token Binding is established by the user agent generating a private-public key pair (possibly within a secure hardware module) per target server, and proving possession of the private key on every TLS connection to the target server. The proof of possession involves signing the exported keying material for the TLS connection with the private key. Such TLS Token Binding is identified by the corresponding public key.
When issuing a security token to a client that supports TLS Token Binding, a server includes the client's TLS Token Binding ID in the token. Later on, when a client presents a security token containing a TLS Token Binding ID, the server makes sure the ID in the token matches the ID of the TLS Token Binding established with the client. In the case of a mismatch, the server discards the token.
Security Considerations