Function: nsm-protocol-check--rsa-kx
nsm-protocol-check--rsa-kx is a byte-compiled function defined in
nsm.el.gz.
Signature
(nsm-protocol-check--rsa-kx HOST PORT STATUS &optional SETTINGS)
Documentation
Check for static RSA key exchange.
Static RSA key exchange methods do not offer perfect forward secrecy, therefore, the security of a TLS session is only as secure as the server's private key. Due to TLS' use of RSA key exchange to create a session key (the key negotiated between the client and the server to encrypt traffic), if the server's private key had been compromised, the attacker will be able to decrypt any past TLS session recorded, as opposed to just one TLS session if the key exchange was conducted via a key exchange method that offers perfect forward secrecy, such as ephemeral Diffie-Hellman key exchange.
By default, this check is only enabled when
network-security-level is set to high for compatibility
reasons.
Reference:
Sheffer, Holz, Saint-Andre (May 2015). "Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)", "(4.1. General Guidelines)" https://tools.ietf.org/html/rfc7525#section-4.1
Source Code
;; Defined in /usr/src/emacs/lisp/net/nsm.el.gz
;; Key exchange checks
(defun nsm-protocol-check--rsa-kx (_host _port status &optional _settings)
"Check for static RSA key exchange.
Static RSA key exchange methods do not offer perfect forward
secrecy, therefore, the security of a TLS session is only as
secure as the server's private key. Due to TLS' use of RSA key
exchange to create a session key (the key negotiated between the
client and the server to encrypt traffic), if the server's
private key had been compromised, the attacker will be able to
decrypt any past TLS session recorded, as opposed to just one TLS
session if the key exchange was conducted via a key exchange
method that offers perfect forward secrecy, such as ephemeral
Diffie-Hellman key exchange.
By default, this check is only enabled when
`network-security-level' is set to `high' for compatibility
reasons.
Reference:
Sheffer, Holz, Saint-Andre (May 2015). \"Recommendations for Secure
Use of Transport Layer Security (TLS) and Datagram Transport Layer
Security (DTLS)\", \"(4.1. General Guidelines)\"
`https://tools.ietf.org/html/rfc7525#section-4.1'"
(let ((kx (plist-get status :key-exchange)))
(and (string-match "^\\bRSA\\b" kx)
(format-message
"RSA key exchange method (%s) does not offer perfect forward secrecy"
kx))))