Concept of TLS Authentication from a security point of view
I have been trying to find the answer to this, but most searches on the internet or this forum gives information about TLS errors.
Why do we need to use TLS key in openvpn. Isnt the server / client certificate verification between the server -> client enough?
And what would be the implications of disabling it.
I've wondered this, too. I'll be curious to see if anyone has a good explanation for this.
As I understand it, the TLS Authentication key is used to HMAC packets send during the TLS handshake. You really shouldn't need to do that, since the TLS handshake itself includes an integrity check over the packets sent during the handshake (this integrity check occurs towards the end of the handshake).
But, I guess including this means that you can't even start a TLS handshake with an OpenVPN server unless you have the TLS authentication key. The only benefits that come to mind are: 1) you can knock out people trying to DoS your OpenVPN server before you start doing computationally intensive public key operations, and 2) you can block people from trying to exploit bugs/vulnerabilities that may be present in handshake code.
For example, think about Apple's Goto Fail vulnerability in their TLS implementation. I think the TLS authentication key would have prevented a MiTM from exploiting a vulnerability like that in a OpenVPN server or client implementation.
Primarily it's for preventing DoS conditions, as it ensures the resource-heavy crypto operations are only done for clients with a valid TLS key. Explained here.
It has another potential benefit in protecting against certain types of security vulnerabilities. The only one where that was applicable in our 11 year history was Heartbleed, but that's a big one. With TLS auth enabled, Heartbleed couldn't be exploited by anyone without a valid key.