Cybersécurité

Récapitulatif

  • Au cours de ces dix dernières semaines, vous avez bu à la lance à incendie proverbiale.
  • Bien que dans ce cours, vous ayez appris à programmer dans de nombreux langages de programmation ; en effet, notre grand espoir est que vous ayez appris à programmer en tout : Quel que soit le langage de programmation.
  • De plus, nous espérons que vous ayez appris à résoudre des problèmes avant tout.

Perspectives d'avenir

  • Alors que vous passez du travail de ce cours au monde extérieur à CS50, vous voudrez peut-être prendre un certain nombre de mesures pour vous préparer.
  • Pour pouvoir exécuter des commandes sur le terminal, comme vous l'avez fait sur CS50.dev, vous pouvez installer des outils de ligne de commande sur votre Mac ou PC.
  • Vous pouvez en savoir plus sur Git.
  • Vous pouvez télécharger et en savoir plus sur VS Code.
  • Vous pouvez héberger un site Web à l'aide de GitHub ou Netlify.
  • Vous pouvez héberger une application Web à l'aide de AWS, Azure ou Google Cloud .
  • Vous pouvez poser des questions dans des communautés en ligne pertinentes.
  • Vous pouvez poser des questions à l'aide d'outils basés sur l'IA comme OpenAI et GitHub Copilot.
  • Vous pouvez suivre n'importe lequel de nos autres cours CS50.
  • Vous pouvez rejoindre l'une de nos nombreuses communautés.

Cybersécurité

  • Aujourd'hui, nous allons passer en revue quelques sujets liés à la cybersécurité.
  • La cybersécurité consiste à comprendre comment nos données sont sécurisées ou non.

Mots de passe

  • Un des points sur lesquels la cybersécurité se penche, ce sont nos mots de passe.
  • Les mots de passe sont un moyen d'assurer la sécurité des données en ligne.
  • Les gens utilisent souvent des mots de passe courants :

      1. 123456
      2. admin
      3. 12345678
      4. 123456789
      5. 1234
      6. 12345
      7. password
      8. 123
      9. Aa123456
      10. 1234567890
    
  • Si votre mot de passe figure dans la liste ci-dessus, il y a fort à parier que des millions de personnes ont choisi le même !

  • Les pirates informatiques commenceront par cette liste.
  • Les méchants peuvent également deviner la plupart des astuces que vous utilisez pour ajouter des symboles à votre mot de passe.
  • Les pirates peuvent recourir à des « attaques par force brute », c'est-à-dire qu'ils utilisent un dictionnaire de mots de passe pour essayer tous les mots de passe possibles.
  • Votre mot de passe n'est probablement pas aussi sécurisé que vous le pensez.

Sécurité des téléphones

  • De nombreux téléphones sont sécurisés par un code à quatre chiffres.
  • La forme d'attaque la plus simple consisterait à essayer de manière brutale tous les mots de passe possibles.
  • Il existe 10 000 mots de passe possibles lorsque vous utilisez un code à quatre chiffres.
  • S'il faut une conjecture par seconde, il faudra 10 000 secondes pour casser le mot de passe.
  • Cependant, si un programmateur crée un programme pour générer tous les codes possibles, le temps requis serait minime. Pensez au code suivant en Python :

      from string import digits
      from itertools import product
    
      for passcode in product(digits, repeat=4):
          print(passcode)
    
  • Il devrait être assez déconcertant que le code ci-dessus ne prenne que quelques secondes (au maximum !) pour découvrir votre mot de passe.

  • Nous pourrions améliorer notre sécurité en passant à un mot de passe à quatre lettres. Cela donnerait 7 311 616 mots de passe possibles.
  • Inclure des caractères majuscules et minuscules créerait plus de 78 millions de possibilités.
  • Pensez à la façon dont nous pourrions modifier votre code pour découvrir ces mots de passe :

      from string import ascii_letters
      from itertools import product
    
      for passcode in product(ascii_letters, repeat=4):
          print(passcode)
    
  • Nous pourrions même ajouter la possibilité de regarder tous les mots de passe possibles à huit chiffres avec des lettres, des chiffres et des signes de ponctuation :

      from string import ascii_letters, digits, punctuation
      from itertools import product
    
      for passcode in product(ascii_letters + digits + punctuation, repeat=8):
          print(passcode)
    
  • Passer à huit caractères, y compris les lettres majuscules et minuscules, les chiffres et les symboles, donnerait 6 095 689 385 410 816 combinaisons possibles.

  • Dans le monde numérique, vous voulez simplement que votre mot de passe soit meilleur que celui des autres personnes, de sorte que les autres soient attaqués bien avant vous : vous êtes une cible beaucoup moins pratique.
  • L'inconvénient d'utiliser un mot de passe aussi long est l'inconvénient de devoir s'en souvenir.
  • Par conséquent, d'autres défenses pourraient être employées pour ralentir un attaquant. Par exemple, certains fabricants de téléphones bloquent ceux qui devinent un mot de passe incorrectement.
  • La sécurité consiste à trouver un « juste milieu » entre les compromis d'une sécurité accrue tout en maintenant la commodité.

Gestionnaires de mots de passe

  • Les gestionnaires de mots de passe peuvent être utilisés pour créer des mots de passe très complexes et s'en souvenir pour vous.
  • La probabilité qu'un mot de passe sécurisé par un gestionnaire de mots de passe soit piraté est très, très faible.
  • Vous espérez que ces gestionnaires de mots de passe sont sécurisés. Cependant, si quelqu'un accède à votre gestionnaire de mots de passe, il aurait accès à tous vos mots de passe.
  • En fin de compte, vous êtes beaucoup moins susceptible d'être mis en danger par ceux avec qui vous vivez, et beaucoup plus susceptible d'être mis en danger par les milliards d'autres personnes sur Internet.
  • Comme mentionné précédemment, vous pouvez prendre une décision basée sur un équilibre entre sécurité et commodité.

Authentification à deux facteurs

  • Ajouter un autre moyen par lequel vous devez vous authentifier ajoute une sécurité supplémentaire. Cependant, il y a un coût humain car vous pourriez ne pas avoir accès à votre deuxième facteur.
  • Celles-ci sont implémentées sous forme de mots de passe à usage unique qui sont envoyés à un e-mail, un appareil ou un numéro de téléphone.
  • Les politiques de sécurité tentent toujours d'équilibrer les besoins de sécurité et de commodité humaine.

Hachage

  • Les informations de votre compte et d'autres données sensibles ne doivent pas être stockées sous forme de texte brut dans une base de données en ligne.
  • Si une base de données est compromise et que toutes les informations d'identification sont stockées en texte clair, les informations d'identification pour d'autres services sur d'autres sites Web sont probablement également compromises.
  • Par conséquent, les algorithmes de hachage, comme indiqué précédemment dans ce cours, sont utilisés pour stocker uniquement des valeurs hachées de mots de passe.
  • Le hachage unidirectionnel permet aux services en ligne de ne jamais stocker le mot de passe d'origine tapé par l'utilisateur : uniquement la valeur hachée de ces mots de passe. En conséquence, en cas de violation, seule la valeur hachée sera connue.
  • Les « tables arc-en-ciel » sont d'énormes dictionnaires que les adversaires utilisent pour tenter de pré-hacher des mots de passe possibles afin de tenter de casser l'algorithme de hachage.
  • En tant que processus supplémentaire pour renforcer la sécurité, les programmeurs peuvent parfois introduire du « salage » où il devient peu probable que plusieurs utilisateurs aient la même valeur de hachage pour représenter leurs mots de passe. Vous pouvez l'imaginer comme suit :

    le sel et le mot de passe sont transmis à un algorithme générant un hachage

Cryptographie

  • À l'instar du hachage, un algorithme de chiffrement peut utiliser une clé publique et du texte pour créer du texte chiffré.
  • À son tour, une clé privée et le texte chiffré peuvent être fournis à l'algorithme pour déchiffrer le texte.

Clés d'accès

  • Les clés d'accès sont une nouvelle technologie qui n'a émergé que ces derniers mois.
  • Grâce à des clés privées et à un défi fourni à un algorithme, les sites Web peuvent vous authentifier grâce à la signature unique créée par votre appareil.

    clé publique et défi fournis à un algorithme, aboutissant à une signature

  • Par conséquent, les mots de passe et les noms d'utilisateur pourraient bientôt devenir obsolètes.

Cryptage

  • Le cryptage est un moyen par lequel les données sont obscurcies de telle sorte que seuls l'expéditeur et le destinataire prévu puissent être lus.
  • Au début de ce cours, nous avons appris un algorithme très simple pour « déplacer » le texte d'un ou plusieurs caractères comme une forme rudimentaire de cryptage.
  • Le cryptage de bout en bout est un moyen par lequel le cryptage et le décryptage se produisent sur le même système sans intermédiaire. Cela empêche l'intermédiaire ou un acteur malveillant de pouvoir espionner vos données. Zoom et Apple Messages peuvent tous deux utiliser le cryptage de bout en bout.

Suppression

  • Mettre un fichier à la corbeille sur votre ordinateur ou vider la corbeille ne supprime pas réellement les bits réels du fichier sur votre ordinateur.
  • Au lieu de cela, des restes des fichiers sont laissés.

    restes d'un fichier sur un disque dur

  • La suppression sécurisée est l'endroit où les restes de ces fichiers sont transformés en zéros et en uns.

  • Néanmoins, certains restes peuvent subsister en raison de ce qui est rendu inaccessible par le système d'exploitation.
  • Le cryptage de disque complet permet de crypter l'intégralité de votre disque dur. Ainsi, vos fichiers supprimés sont moins accessibles aux adversaires.
  • Envisager le cryptage, c'est cette même technologie que les adversaires utilisent pour créer des rançongiciels qui peuvent, littéralement, rançonner votre disque dur.

Résumé

  • Utilisez un gestionnaire de mots de passe.
  • Utilisez l'authentification à deux facteurs.
  • Utilisez le cryptage (de bout en bout).