On recense les premières traces de chiffrement symétrique vers 1500 av. JC, en Mésopotamie. 🥐
Aujourd'hui, on utilise le chiffrement symétrique dans notre vie numérique, souvent sans le savoir. Mais comment ça fonctionne exactement ? 🧵 #dev#code#infosec
Le chiffrement symétrique, même le plus basique, est basé sur deux outils : Un algorithme de chiffrement / déchiffrement, et une clé. 🔑
Prenons l'exemple d'une discussion entre deux personnes 👇
1️⃣Les participants d'une discussion se mettent d'accord sur un algorithme de chiffrement commun (souvent inhérent au système utilisé pour communiquer).
2️⃣L'un des participants génère une clé, qu'il ne va distribuer qu'aux autres participants à la discussion, de manière discrète (mais non sécurisée).
3️⃣Une fois la clé reçu, chaque message sera chiffré en utilisant l'algorithme couplé à la clé, et déchiffré de la même manière, de sorte à ce qu'uniquement les participants ayant accès à la clé puissent lire et envoyer des messages.
L'équivalent de ces trois étapes en image :
Il existe trois grandes familles d’algorithmes de chiffrement symétrique :
- Substitution mono-alphabétique (1 lettre pour 1 lettre)
- Substitution poly-alphabétique (1 lettre pour x lettre selon la position)
- Permutation (inversion de lettres)
Chaque famille algorithmique a ses faiblesses, mais en couplant Permutation + Substitution poly-alphabétique, on obtient des résultats bien meilleurs. 👌
C'est par exemple la méthode algorithmique derrière le système de chiffrement AES (utilisé sur HTTPS).
Pour finir, le chiffrement symétrique possède des avantages et inconvénients :
C'est une méthode performante et solide, mais le partage de la clé est un point sensible. C'est pourquoi il est parfois couplé à du chiffrement asymétrique pour le partage de cette dernière ! 🧙♂️
Si ce sujet vous intéresse, vous pouvez partager le dernier épisode du podcast de Code-Garage, consacré au chiffrement symétrique ! 👇
Savez-vous pourquoi les numéros de versions des dépendances logicielles sont toutes notées sous la forme "1.3.14" ?
C'est une convention qu'on appelle le "Semantic Versioning", et chaque chiffre a son importance ! 🧵 #code#dev#software#versioning
L'objectif du Semantic Versioning (ou SemVer) est de donner un numéro unique à chaque nouvelle version d'un logiciel. ✨
Un identifiant minimal de version qui ressemble à 0.0.1 se lira tout simplement MAJOR.MINOR.PATCH
Le numéro "MAJOR" est le plus critique, c'est le seul qui indique une évolution de l'API tellement importante que la rétrocompatibilité n'est plus assurée 😱
L'avantage d'une promesse, c'est de pouvoir normaliser le retour d'une fonction asynchrone.
Et donc d'offrir une API pour traiter ces retours avec des fonctions comme .then(), .catch(), Promise.all(), etc... et de pouvoir les chainer. 🔗
Mais parfois, on aimerait simplement pouvoir traiter ces appels asynchrones de manière synchrone plus simplement qu'en enchainant les .then() par exemple.
Voilà pourquoi il existe les directives async/await ! 👇
La première question que l'on se pose c'est: "Quelle différence avec les callbacks" ?
Et la réponse est : "Une promise est simplement un ensemble de callbacks 'normalisés' !" 🤯
Je m'explique.
Un callback est une fonction qui va être exécutée à la fin d'un traitement asynchrone.
Sauf que selon les choix d'implémentation, un callback peut prendre 1, 2, 3 paramètres, ou alors on peut passer 1, 2, 3 callbacks différents pour gérer le succès, les cas d'erreurs, etc... 🥵
Se lever à 9h29 pour commencer sa journée à 9h30 (et ça peut arriver de temps en temps) est tentant, mais ce n'est pas viable à long terme.
2 - Habillez-vous (même avec le strict minimum)
Croyez-moi, une vision-conférence en urgence ou un livreur inopiné vont vous faire regretter de ne pas avoir pris le temps d'enfiler quelque chose de simple, confortable mais surtout présentable.