Channel Binding allows applications to delegate session protection to lower layers, which has various performance benefits.
The term "Channel Binding" was derived from the Generic Security Service Application Program Interface (GSSAPI) RFC 2743, which has a Channel Binding facility that was intended for binding GSSAPI authentication to Secure connections at lower network layers.
Channel Bindings for TLS (RFC 5929) defines three channel binding types for Transport Layer Security (TLS)
Consider a scenario with three participants:
without Channel Binding this can happen when a client application authenticates itself to the server using Kerberos, Digest SSP, or NTLM using HTTPS, a Transport Layer Security (TLS) channel is first established and authentication as the server has no method to detect that there is a Man-In-The-Middle (MiTM).
With Channel Binding, a property of the Transport Layer Security (TLS)-secured outer channel is used to create a "token" (Channel Binding Token or CBT) which is used in the authentication session the server.
A CBT aware server compares the CBT contained in the client authentication information, which MUST match the server's first communication between the Client-Server Exchange over Transport Layer Security (TLS).
Although referred to as LDAP Channel Binding is not LDAPv3 or an LDAP Specification, but tied to tokens generated and used ONLY by Microsoft Windows, over LDAP.
Channel Binding Token (CBT) is a property of the outer Secure connection (such as TLS) used to tie (bind) it to a conversation over an inner, client-authenticated channel. The Channel Binding Token MUST have the following properties (also defined by RFC 5056):
Channel Binding is accomplished by the client transferring the ServicePrincipalName(SPN) and the Channel Binding Token to the server in a Cryptographic integrity protected fashion. The server validates the Channel Binding information in accordance with its policy and rejects authentication attempts for which it does not believe itself to have been the intended target. This way, the two channels become cryptographic bound together.
Microsoft Channel Binding affects Secure connection using Transport Layer Security (TLS) non-Windows Implementations and not patched Microsoft Windows when using Kerberos, Digest SSP, or NTLM using HTTPS.
The AV_PAIR structure defines an Attribute Value pair that ties the authentication data to a particular "channel" via a hash of things like IP Address and TCP/UDP port numbers.
The Sequences of AV_PAIR structures are defined in the NT LAN Manager Authentication Protocol and used in the CHALLENGE_MESSAGE (section 2.2.1.2) directly. They are also in the AUTHENTICATE_MESSAGE (section 2.2.1.3)
via the NTLMv2_CLIENT_CHALLENGE (section 2.2.2.7)
structure.
The AV_PAIR is also referred to in the MsvChannelBindings API.