¿El HPKP no se vuelve inútil después de que haya expirado la edad máxima?
Sí, una vez que se alcanza el tiempo de espera, el pin ya no es efectivo. Pero la expectativa es que eventualmente volverá a visitar la página antes de que caduque el pin, por lo que se actualizará nuevamente el tiempo de espera y se actualizarán los pines. Puede ser peligroso nunca dejar que un pin caduque, ya que podría bloquear a los usuarios anteriores para siempre si accidentalmente les permite pinchar la clave incorrecta solo una vez.
¿No es obvio que un atacante esperará hasta que caduque su edad máxima y luego realice el ataque?
Tal atacante tiene que ser muy paciente y hacer algunas suposiciones. La víctima no puede visitar el sitio regularmente ya que eso prolongaría el tiempo de espera en cada visita. Además, el ataque tiene que ser viable después de ese tiempo. Dos meses pueden ser largos para que una brecha de CA permanezca sin ser detectada.
En última instancia, es un compromiso que RFC 7469 ("Extensión de fijación de clave pública para HTTP") explica en la sección en Consideraciones de seguridad :
4.1. Máxima edad máxima
[...] Hay un compromiso de seguridad en ese mínimo máximo
Los valores proporcionan una ventana estrecha de protección para los usuarios que visitan el
El host anclado conocido solo con poca frecuencia, mientras que los valores máximos altos pueden
dar como resultado la incapacidad de un UA para realizar con éxito la Validación de Pin para
un host anclado conocido si los pines de la UA y los pines verdaderos del host
divergir.
(UA = User Agent, que significa su navegador)
El RFC recomienda un tiempo de caducidad de alrededor de 60 días (que es exactamente el tiempo que usa Github):
Probablemente no haya un límite superior ideal para la directiva de edad máxima
Eso satisfaría todos los casos de uso. Sin embargo, un valor del orden de
60 días (5,184,000 segundos) pueden considerarse un balance entre el
dos preocupaciones de seguridad en competencia.