web-dev-qa-db-fra.com

Sécurité de transport stricte - valeur max_age

Je me demande quel max-Âge devrait-il Sécurité de transport stricte HTTP en-tête.

Les sites PayPal et LastPass le laissent très bas: 500 (secondes = bit plus de 8 minutes)

market.Android.com a-t-il fixé beaucoup plus haut: 2592000 (secondes = 30 jours).

Dois-je deviner correctement que la valeur devrait au moins quelques jours? Un délai d'attente de 8 minutes ne vainne pas son but? Y a-t-il des autres inconvénients à l'exception des préoccupations de la vie privée (vous pouvez vérifier au cours du mois suivant si une personne a visité une page particulière en regardant un cache de navigateur)?

20
Hubert Kario

Du projet IETF [ http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-06 ]:

10.1 Considérations sur l'expiration des politiques de la TVHTS

Les implémentations de serveurs et le déploiement de sites Web doivent déterminer s'ils définissent une durée d'expiration d'une valeur constante dans le futur, par exemple, en envoyant constamment la même valeur max-âge aux UAS.

Par exemple, une valeur maximale de 778000 est de 90 jours:

Strict-Transport-Security: max-age=778000

Notez que chaque réception de cet en-tête par une UA obligera l'UA à mettre à jour sa notion de quand elle doit supprimer sa connaissance de cet hôte HSTS connu HST. Les spécificités de la manière dont cela est accompli est hors de portée de cette spécification.

Ou, s'ils définissent une période d'expiration qui constitue un point fixe dans le temps, par exemple en envoyant des valeurs max-Âge qui représentent le temps restant jusqu'au moment de l'expiration.

Une considération ici est de savoir si un déplocieur souhaite que l'heure d'expiration de la politique de la TVHS signalée correspond au certificat de domaine du site Web.

De plus, les implémentations de serveurs devraient envisager d'utiliser une valeur par défaut maximale de zéro dans leurs systèmes de configuration de déploiement. Cela nécessitera des déployants pour définir volontairement MAX-AGE afin de faire appliquer la stratégie HSTS de leur hôte et de les protéger de la TVH par inadvertance avec une certaine durée non nulle arbitraire.

Par conséquent, étant donné que le navigateur mettra à jour, il est stocké HSTS MAX-AGE sur chaque en-tête Max-Âge récupéré [sur https], en passant avec le temps plus long, ne provoquera pas vraiment de cette histoire d'horreur de mauvaise cache que les commérages parlent. Le seul problème est si le CERT change. Cependant, les propriétaires de sites devraient en être conscients et doivent avoir le maximum d'âge maximum (5 à 8 minutes) juste avant (une journée complète ou plus). Le changement de certificat est effectué en raison de l'expiration. Toutefois, il s'agit uniquement de traiter une expiration du certificat entrant (qui est principalement évitée en remplaçant le certificat avec un nouveau avant la dernière minute), comme on peut le voir:

14.6 Bogus racine CA Certificat Phish Plus Attaque d'empoisonnement du cache DNS

Si un attaquant peut convaincre les utilisateurs de, disons, https://bank.example.com (qui est protégé par la stratégie HSTS), d'installer sa propre version d'un certificat de CA racine prétendant être une banque. Exemples.com de CA, par exemple, via un courrier électronique de phishing avec un lien vers un tel certificat. Ensuite, s'ils peuvent effectuer une attaque sur les DNS des utilisateurs, (par exemple, via une intoxication au cache) et activez la politique HSTS pour leur faux site Bank.Example.com, ils ont eux-mêmes de nouveaux utilisateurs.

Ce qui montre que le changement de certificat CERT au milieu d'une "session" de Broswer ne causerait pas de problèmes à moins de problèmes de certification (avertissements de validation ou erreurs). Cela rendrait tout le point de votre question Mooot, car il suppose que les navigateurs stockent des informations relatives au certificat envoyées avec la réponse d'en-tête HSTS pour valider contre l'hôte HSTS. Comme le projet ne fait aucune mention d'un tel concept, je dirais que c'est une hypothèse invalide.

Toutefois, le stockage des informations de certificats à utiliser contre les hôtes HSTS peut être effectué avec la clignotation publique. Mais cela serait fait à un niveau "usine" ou par l'utilisateur manuellement, et comme tel n'aurait également aucun moyen de mettre à jour via un hôte HSTS. [Voir http://www.imperialviolet.org/2011/05/04/pinning.html pour plus d'informations]

Pour répondre à votre dernière question, il existe une préoccupation sur la protection de la vie privée dans l'utilisation de HSTS pour suivre les utilisateurs. Il fonctionne à l'aide de JavaScript pour vérifier si une ressource dans une liste de sites Web énumérés via est chargée via HTTPS, même si elle est spécifiée comme http. Le point d'avoir un âge modérément faible dans ce cas serait de supprimer les entrées afin que le suivi de l'utilisateur soit entravé. [Voir http://haxsys.net/2011/04/Le-Double-edged-sword-of-hsts-persistence-and-privacy/ Pour plus d'informations]

@Jesper Mortensen: HSTS fait que le navigateur réécrit toutes les demandes HTTP à HTTPS avant de les envoyer. Par conséquent, vous ne devriez pas avoir d'accès HTTP et HTTPS à un domaine donné. Et toute personne mise en œuvre de HSTS devrait (RFC2119) ne dispose pas d'un véritable site de face HTTP (c.-à-d. Rediriger les demandes HTTP à HTTPS via 301 ou faire autre chose [voir la section 6.2]). Et des choses contextuelles mixtes (HTTP à d'autres ressources de domaine non-SSL non HST constituent un problème censé être traitée sur une base de mise en œuvre (par serveur et par navigateur)). Essayez également de ne pas se moquer de son projet de statut car il est implémenté dans Firefox et Google Chrome (IUM) [IE. ~ 55% de tous les navigateurs].

12
Jeff