Overview
The use of a cryptographic key or password past its
expiration date diminishes its safety significantly.
Consequences
- Authentication: The cryptographic key in question
may be compromised, providing a malicious user with a
method for authenticating as the victim.
Exposure
period
- Design: The handling of key expiration should be
considered during the design phase - largely pertaining
to user interface design.
- Run time: Users are largely responsible for the use
of old keys.
Platform
Required
resources
Any
Severity
Low
Likelihood
of
exploit
Low
Avoidance
and
mitigation
- Design: Adequate consideration should be put in to
the user interface in order to notify users previous to
the key's expiration, to explain the importance of new
key generation and to walk users through the process as
painlessly as possible.
- Run time: Users must heed warnings and generate new
keys and passwords when they expire.
Discussion
While the expiration of keys does not necessarily ensure
that they are compromised, it is a significant concern that
keys which remain in use for prolonged periods of time have
a decreasing probability of integrity.
For this reason, it is important to replace keys within a
period of time proportional to their strength.
Examples
In C/C++:
if (!(cert = SSL_get_peer(certificate(ssl)) || !host)
foo=SSL_get_veryify_result(ssl);
if ((X509_V_OK==foo) || (X509_V_ERRCERT_NOT_YET_VALID==foo))
//do stuff