Commentaires : Utilisation de Windows XP, mot de passe vieux de trois ans... Les dessous délirants du piratage d'Aeroflot

La première compagnie aérienne russe Aeroflot vient d’être victime d’un piratage, qui a complètement mis à plat le trafic de l’entreprise. Mais qui a aussi dévoilé un certain archaïsme dans la compagnie.

@samir, ily a une erreur dans l’article, le mot de passe de 3 ans n’est pas un problème. STP lit le message ci-dessous. Clubic fait fréquemment des erreurs sur les recommendations de sécurité sur les mots de passe. Plutôt qu’une longue explication, voici ce que la norme NIST SP800-63B (section 5.1.1) recommande. Ces recommandations sont reprise par l’ANSSI et toutes les autres instances de sécurité:
.
1. Pas de changement périodique imposé des mots de passe : ne le faire que si le mot de passe est compromis ou à la demande de l’utilisateur
2. Pas de règles de composition obligatoires (majuscule, chiffre, caractère spécial) : ces contraintes réduisent l’entropie effective et incitent à des constructions prévisibles
3. Longueur minimale : 8 caractères pour un mot de passe choisi par l’utilisateur ; préféré : ≥ 15 caractères, jusqu’à 64 pour les phrases de passe
4. Autoriser tous les caractères imprimables ASCII, Unicode, et espaces (avec normalisation possible des espaces multiples)
5. Bloquer les mots de passe compromis via une liste noire incluant ceux issus de fuites, mots trop communs, suites répétitives ou contextuelles ; informer clairement l’utilisateur si rejet
6. Autoriser le collage (paste) pour faciliter l’usage des gestionnaires de mots de passe
7. Limiter les tentatives d’échec (rate-limiting), par exemple à moins de 100 essais pour éviter les attaques par force brute
8. Fournir une assistance utilisateur (ex. : indicateur de robustesse) si le mot de passe est refusé ou potentiellement faible, pour guider vers un secret plus fort
9. Stockage sécurisé des mots de passe (hash salé via fonction de dérivation résistante aux attaques hors‑ligne)
.
De façon contre intuitive, le mot de passe du PDG vieux de 3 ans correspond aux bonnes pratiques de sécurité.

Je vois très souvent dans vos articles des confusion sur le point 1 et le point 2. Changer fréquemment de mot de passe ou obliger à utiliser une majuscule, une minuscule et un character special baisse la sécurité et ne doivent pas être mis en place.
Au passage, ce serait bien de passer l’info à votre responsable web, vous imposez ces pratiques désuètes pour la gestion des comptes Clubic.

5 « J'aime »

Je vois très souvent dans vos articles des confusion sur le point 1 et le point 2. Changer fréquemment de mot de passe ou obliger à utiliser une majuscule, une minuscule et un character special baisse la sécurité et ne doivent pas être mis en place.

Ça faudrait le dire aussi à mon entreprise, pourtant une multinationale…
On nous force à changer de MDP tous les 3 mois, avec maj, caractère spécial, et chiffre obligatoires…

3 « J'aime »

Ces idées fausses ont prédomine pendant des années. Elles ont la vie dure.
Elles sont maintenant utilisées comme exemples de contre patterns: des décisions intuitives empiriques non validées par un threat model menant à une baisse de la sécurité.

Envoies la norme nist ou les recommandations de l’anssi a ton service informatique. Ils te remercieront.

2 « J'aime »

Aeroflot n’est pas seule

1 « J'aime »

Personnellement, je l’ai fait (envoyé la norme Nist et les recommendations GCHQ) et on m’a répondu qu’ils travaillaient sur le passwordless. Bon, c’était il y a 3 ans, on a toujours des mots de passe qu’ il faut changer tous les trois mois.
Le plus rigolo, c’est que, comme c’est barbant, j’utilise le même mdp minimal (juste 8 caractères dont 2 chiffres que j’incrémente de 1 à chaque changement obligatoire), parfaite illustration de la baisse de sécurité induite par cette politique idiote. Une fois , j’ai eu des remords et voulu changer pour une phrase de passe incluant leurs idioties de caractères obligatoires et … le système l’a toujours refusée sans me donner de raison ( j’en ai essayé plusieurs). Je suis donc revenu à mot mdp minimal. C’est super la sécurité bien implémentée :+1:

1 « J'aime »

En complément, tu peux aussi envoyer cet indémodable XKCD:

2 « J'aime »

Tes points 1 & 2 sont étonnants. Dans toutes les docs relatives a la sécurité j’ai lu 15 caractères minimum, majuscules, minuscules…et c’est ce qui est recommandé partout… Bref si j’en crois ce que tu écris on revient a 10 ans en arrière et ce …avec l’aval de l’ANSII qui sont les 1er a recommander des mots de passe forts :thinking::thinking::thinking::flushed::flushed:
D’ailleurs il est dit dans leurs recommandations qu’il est préférable d’augmenter la longueur d’un MDP plutôt que d’en avoir un court mais compliqué. Justement ça permet d’en augmenter l’entropie. Ça c’est valable pour ceux qui doivent être mémorisé.
Mais a moins de me tromper ils recommandent 20 caractères et plus pour ceux qui n’ont pas besoin d’être mémorisés …

même un mot de passe simple type 8 caractères, ce qui est peu peut déjà être impossible à trouver dans des temps relativement abordables, bien-sur a chaque fois que tu l allonges de 1 caracteres tu vas multiplier sa complexité.

un petit résumé en algebre booléen :

    1. Validation (Algèbre Booléenne) : On utilise la formule V = m ∧ M ∧ c ∧ s ∧ L pour vérifier si le mot de passe respecte la politique. Si V est FAUX, le mot de passe est*
  •  rejeté.*
    
    1. Calcul de la Force (Combinatoire) : Si V est VRAI, on peut alors affirmer que sa force est basée sur la formule C = N ^ L, où N est la taille de l’ensemble des*
  •  caractères autorisés et L est sa longueur.*
    
  • Partie 1 : L’Évaluation par Algèbre Booléenne (La politique de mot de passe)*

  • L’algèbre booléenne ne mesure pas la « force », mais elle répond à la question : « Est-ce que ce mot de passe respecte les règles ? ». C’est une évaluation binaire : VRAI*

  • (1) ou FAUX (0).*

    1. Définition des Variables Booléennes*
  • Nous allons définir une variable pour chaque critère requis. Chaque variable ne peut être que VRAI (1) ou FAUX (0).*

    • m : Le mot de passe contient au moins une minuscule.*
    • M : Le mot de passe contient au moins une Majuscule.*
    • c : Le mot de passe contient au moins un chiffre.*
    • s : Le mot de passe contient au moins un caractère spécial.*
    • L : La Longueur du mot de passe est supérieure ou égale à 8.*
    1. La Formule Logique*
  • Pour qu’un mot de passe soit considéré comme valide selon votre politique, tous les critères doivent être remplis simultanément. L’opérateur logique qui correspond à*

  • cette condition est le ET logique (noté ∧ ou ·).*

  • La formule pour évaluer la validité (V) du mot de passe est donc :*

  • V = m ∧ M ∧ c ∧ s ∧ L*

  • En d’autres termes :*

  • Validité = (contient_minuscule ET contient_majuscule ET contient_chiffre ET contient_special ET longueur_suffisante)*

    1. Exemple de Calcul*
  • Prenons le mot de passe : Ex3mpl@ire*

    1. Évaluation de chaque variable :*
  •   * m (contient "e", "x", "m", "p", "l", "i", "r", "e") -> VRAI (1)*
    
  •   * M (contient "E") -> VRAI (1)*
    
  •   * c (contient "3") -> VRAI (1)*
    
  •   * s (contient "@") -> VRAI (1)*
    
  •   * L (longueur de 10, ce qui est >= 8) -> VRAI (1)*
    
    1. Application de la formule :*
  •   * V = VRAI ∧ VRAI ∧ VRAI ∧ VRAI ∧ VRAI*
    
  •   * V = 1 ∧ 1 ∧ 1 ∧ 1 ∧ 1*
    
  •   * V = 1 -> Le mot de passe est VALIDE.*
    
  • Prenons un autre mot de passe : motdepasse*

    1. Évaluation de chaque variable :*
  •   * m -> VRAI (1)*
    
  •   * M -> FAUX (0)*
    
  •   * c -> FAUX (0)*
    
  •   * s -> FAUX (0)*
    
  •   * L (longueur de 10, >= 8) -> VRAI (1)*
    
    1. Application de la formule :*
  •   * V = VRAI ∧ FAUX ∧ FAUX ∧ FAUX ∧ VRAI*
    
  •   * V = 1 ∧ 0 ∧ 0 ∧ 0 ∧ 1*
    
  •   * V = 0 -> Le mot de passe est INVALIDE.*
    
  • —*

  • Partie 2 : Le Calcul de la Force (La combinatoire)*

  • Maintenant que nous savons si un mot de passe est valide, nous pouvons calculer sa force. La force d’un mot de passe est le nombre total de combinaisons possibles qu’un*

  • attaquant devrait essayer pour le trouver par force brute.*

    1. Définition de l’Ensemble de Caractères (Le « Pool »)*
  • Nous devons d’abord définir la taille de l’ensemble de tous les caractères autorisés.*

    • Minuscules (a-z) : 26 caractères*
    • Majuscules (A-Z) : 26 caractères*
    • Chiffres (0-9) : 10 caractères*
    • Caractères spéciaux : Le nombre peut varier, mais prenons un ensemble courant de 32 caractères (ex: !@#$%^&()_±=[]{}|;:',.<>/?~).
    • Taille totale du pool (N) : 26 + 26 + 10 + 32 = 94 caractères possibles*
    1. La Formule de Calcul de la Force*
  • La force (le nombre total de combinaisons, C) est calculée en élevant la taille du pool (N) à la puissance de la longueur du mot de passe (L).*

  • C = N ^ L*

    1. Exemple de Calcul pour un mot de passe de 8 caractères*
    • Taille du pool (N) : 94*
    • Longueur (L) : 8*
  • C = 94 ^ 8*

  • C = 94 × 94 × 94 × 94 × 94 × 94 × 94 × 94*

  • C = 5 732 593 038 784 16*

  • Cela représente plus de 5,7 quadrillions de combinaisons possibles. C’est ce chiffre qui définit la force réelle du mot de passe.*

  • Conclusion*

  • Pour résumer la méthode complète :*

    1. Validation (Algèbre Booléenne) : On utilise la formule V = m ∧ M ∧ c ∧ s ∧ L pour vérifier si le mot de passe respecte la politique. Si V est FAUX, le mot de passe est*
  •  rejeté.*
    
    1. Calcul de la Force (Combinatoire) : Si V est VRAI, on peut alors affirmer que sa force est basée sur la formule C = N ^ L, où N est la taille de l’ensemble des*
  •  caractères autorisés et L est sa longueur.*
    

Je reprends la main en probabilités simple, supposons que tu aies 100 caracteres à ta disposition

tu auras donc 100⁸, soit 100x100x100x100x100X100x100X100, soit Dix millions de milliards de possibilités, ça va être dur … Et … encore faut il pouvoir accéder sans latence, si tu ne peux pas casser le fichier de hash (récupéré on ne sait comment) et l’attaquer depuis la ram ou SSD, tu vas attaquer un gestionnaire de fenêtre de connexion, admettons qu il t autorise une connexion toutes les 5 secondes, tu auras donc 50 millions de milliards de secondes.
Si tu attaques un ficher hash avec un truc type jack the ripper ou un cracker brute force GPU, tu peux peut etre atteindre le gigahash/s, admettons 1milliards/s ce qui me semble quand meme beaucoup, il te faudra malgré tout 50 millions de secondes, il ya environ 80 000 seconde par jour, soit environ 600 jours non stop, si tu rajoutes un caractère ce sera 60 000 jours, un de plus 6 000 000 de jours etc … Donc même à 8 caractères un mots de passe complexe basé sur un ensemble de 100 caractères sera déjà costaud.

Apres certains vont penser passphrase, juste avec 53 caractères ( minuscule majuscule, rien d autre que l espace), mais une passphrase est quand même susceptible d’être attaquée via un dico, par exemple « j ai dematte mon cata pendant une tempete » quelque chose comme 41 caractères,alors oui si tu utilises le brute force, ca va être mega long, il y aura sans doute à nouveau des dinosaures, mais si tu utilises un dico bien formé avec une méthode, une logique de construction … Ca peut tout changer.

1 « J'aime »

C’est pour ça qu’il faudrait en fait arrêter d’appeler les passphrase comme ça…

Ça incite à faire un phrase qui a du sens (le pire étant en prime d’utiliser une citation connue…), alors qu’une bonne passphrase ne doit justement pas être une phrase au sens grammatical, elle ne doit pas être prévisibles pour quelqu’un d’autre que celui qui l’a construite (ça peut avoir du sens pour celui qui l’a construite, pour la retenir plus facilement, par exemple « collègue julien formation paris risotto gare pluie terrasse » parce que j’ai pris une saucée alors que je mangeais un risotto en terrasse d’un restaurant près de la gare avec mon collègue Julien quand je suis allé faire une formation avec lui à Paris).

Et là ça devient assez robuste. Un dictionnaire correct pour une attaque et avec juste le français, ça contient facilement plus de 20000 mots (j’en ai 22740 dans une liste utilisée pour un jeu de mots, et encore, pour beaucoup de mots de la liste il n’y a pas toutes les variations de genre et de nombre, pas plus qu’il n’y a toutes les conjugaisons des verbes, et également aucune variation sur la casse ou l’accentuation).

Ce qui fait que mon « collègue julien formation paris risotto gare » fait déjà l’équivalent d’un mot de passe alphanumérique de 19 caractères (log(20000)/log(62) ~ 2.4). Mais je pourrai aussi mettre une majuscule à Julien, ne pas mettre d’accent sur le è, utiliser des - ou des _ plutôt que des espaces… Et j’aurais pu aussi parler de mon training avec mon collègue Wojciech, pour mixer plusieurs langues…

Bref, c’est vraiment facile de faire quelque chose d’à la fois relativement aisé à retenir et robuste pour les quelques services les plus importants, la difficulté étant d’avoir un grand nombre de mots de passe différents et faciles à retenir… Mais on a généralement relativement peu de services relativement sensibles, et le tout venant peut se contenter de mots de passe on mémorisables en se reposant intégralement sur un gestionnaire.

Sachant que la plupart des piratages sont liées à des failles de sécurité, la qualité du mot de passe importe de moins en moins, ce n’est plus vraiment comme ça que les hackers s’infiltrent… le problème est plutôt au niveau du cryptage des mots de passe sur le site, si on a un mot de passe complexe de 25 caractères mais que le site est hacké et que les mots de passe sont publiés, peu importe qu’il soit constitué de 4 chiffres ou qu’il fasse 20 lettres dont 15 caractères spéciaux…

1 « J'aime »

C’est un excellent moyen de se retrouver avec des « mots-de-passe-basique »+« mois(ou trimestre 1/2/3/4) »+« année ».

EDIT - grillé/illustré par ovancantfort :

À ton avis, c’est quoi mon MDP et celui de tous mes collègues ?
:sweat_smile:

Oula tu t’es lâché :grin::grin::grin::grin::+1: