Overview
Performing a key exchange without verifying the identity
of the entity being communicated with will preserve the
integrity of the information sent between the two entities;
this will not, however, guarantee the identity of end
entity.
Consequences
- Authentication: No authentication takes place in
this process, bypassing an assumed protection of
encryption
- Confidentiality: The encrypted communication between
a user and a trusted host may be subject to a
"man-in-the-middle" sniffing attack
Exposure
period
- Design: Proper authentication should be included in
the system design.
- Design: Use a language which provides an interface
to safely handle this exchange.
- Implementation: If use of SSL (or similar) is simply
mandated by design and requirements, it is the
implementor's job to properly use the API and all its
protections.
Platform
- Languages: Any language which does not provide a
framework for key exchange.
Required
resources
Any
Severity
High
Likelihood
of
exploit
High
Avoidance
and
mitigation
- Design: Ensure that proper authentication is
included in the system design.
- Implementation: Understand and properly implement
all checks necessary to ensure the identity of entities
involved in encrypted communications.
Discussion
Key exchange without entity authentication may lead to a
set of attacks known as "man-in-the-middle" attacks. These
attacks take place through the impersonation of a trusted
server by a malicious server. If the user skips or ignores
the failure of authentication, the server may request
authentication information from the user and then use this
information with the true server to either sniff the
legitimate traffic between the user and host or simply to
log in manually with the user's credentials.
Examples
Many systems have used Diffie-Hellman key exchange
without authenticating the entities exchanging keys, leading
to man-in-the-middle attacks. Many people using SSL/TLS skip
the authentication (often unknowingly).