J’ai déjà vu l’explication des peintures, mais là on va plus loin, et l’explication de Diffie-Hellman est juste excellente.
Catégorie : Technique
-
[Lecture] Most software already has a “golden key” backdoor: the system update
Réflexions à partir d’un article sur Ars Technica
Q: What does almost every piece of software with an update mechanism, including every popular operating system, have in common?
A: Secure golden keys, cryptographic single-points-of-failure which can be used to enable total system compromise via targeted malicious software updates.
Mine de rien, la plupart de nos appareils modernes ont un système de mise à jour, souvent automatique. Celui qui détient les clefs peut injecter ce qu’il veut, ou simplement attendre que vous le fassiez vous-même en croyant mettre à jour.
On parle de Google, Samsung, Apple, Nokia, Microsoft et les autres. Des gens parfois recommandables, toujours avec leurs propres intérêts.
On parle aussi des États qui, officiellement ou non, auraient pu avoir accès à ces clefs. Maintenant qu’on connait un peu PRISM et l’étendue des griffes USA, et l’envie de la plupart des pays de les imiter, par la force ou par la loi, ce n’est pas rien.
On parle ensuite de tous les individus qui ont pu avoir accès à ces clefs et les faire fuiter, volontairement ou non.
This problem exists in almost every update system in wide use today. Even my favorite operating system, Debian, has this problem. If you use Debian or a Debian derivative like Ubuntu, you can see how many single points of failure you have in your update authenticity mechanism with this command:
sudo apt-key list | grep pub | wc -l
For the computer I’m writing this on, the answer is nine. When I run the apt-get update command, anyone with any one of those nine keys who is sitting between me and any of the webservers I retrieve updates from could send me malicious software and I will run it as root.
Et si je fais relativement confiance à la PKI de Apple, Google et Microsoft, c’est bien moins vrai pour la plupart des individus isolés derrière les logiciels open source.
Personnellement mon Debian perso fait confiance à 14 clefs, certaines probablement mal sécurisées, d’autres partagées par plusieurs acteurs, et probablement toutes sans le niveau de sécurité d’un Apple face aux incursions des États.
La sécurité c’est définitivement trop compliqué pour le monde réel dès qu’il s’agit de se protéger contre les très gros acteurs.
Je ne suis même pas certain que ces très gros acteurs le puissent entre eux. La France utilise des postes sous Microsoft Windows pour l’armée. Même les postes sous Debian, à ma connaissance la France n’a pas son armée de développeur pour faire une revue de tout le code source et le compiler eux-même (et même là, on tombe sous le problème du compilateur qui a lui-même une porte dérobée qu’il reproduit dans ce qu’il compile, ça s’est déjà vu dans l’histoire). En cas de vrai conflit, nous sommes totalement à genoux.
-
La langue des signes et Paris Web racontés par une licorne
Une des choses dont je suis le plus fier vis à vis de Paris-Web, c’est l’arrivée de la langue des signes et de la vélotypie.
Les interprètes LSF font un boulot magnifique au milieu d’un troupeau de geeks qui parlent en franglais plein de jargon et d’acronymes, à toute vitesse. En octobre dernier l’équipe a proposé à une de ces interprètes de raconter comment ça se passe de l’intérieur. C’est une des trois conférences à ne pas manquer de cette édition, et elle est pour vous en vidéo :
Conférence LSF from Paris-Web on Vimeo.
Il s’agit d’un gros budget, pour quelques uns. Ce n’est pas facile tous les ans et à chaque fois que c’est un peu tendu je suis certain que la question revient sur la table. Pour autant à chaque fois ça tient, même quand il y a un déficit.
Pour moi c’est dans les valeurs de l’événement mais c’est aussi une façon de montrer par l’exemple qu’on peut tenter d’inclure tout le monde.
-
[Lecture] How we run design critique sessions
Lu sur le web :
Recently, we totally changed our design critique sessions. After carefully analyzing what was wrong with our previous format, we established the following pillars for our design critique sessions:
- It’s called Things That Rock
- It happens every week
- Everyone shows something
- No preparation needed
- 10 minutes per person
- Critique comes in the form of questions
- The session ends by a vote
Let’s go over each point in more details.
Intéressant. On rejoint un peu le système des revues de pair mais avec une autre approche, moins systématique et plus branchée sur comment partager l’expérience pour s’enrichir. J’aime beaucoup l’idée qu’en montrant ce qui fonctionne on finit par monter le niveau d’exigence.
Qui fait quelque chose de similaire côté développement ? Tout ce que j’ai vu finit par tourner dans des présentations de technos et moins dans le « voilà ce que j’ai fait ».
-
[Lecture] On a testé fonctionnellement notre app JS
Lu sur le web :
L’utilité des tests fonctionnels pour les applications web n’est plus à démontrer (comment ça, vous ne testez pas encore vos apps ?). Malheureusement, tout ne peut pas être totalement testé fonctionnellement, ou de façon aisée : je pense par exemple au player chez nous, un composant stratégique mais pauvrement testé fonctionnellement de par sa nature un peu hybride (mélange de flash et de JS). Dans tous les cas, pour ce qui peut l’être, nous sommes partisans dans l’équipe Cytron d’user sans mesure (ou presque !) de cet outil de manière à être le plus zen possible au moment d’appuyer sur le bouton “deploy”.
Intéressant, mais à deux moments j’ai l’impression de tâtonnements, de tests qui peuvent échouer sans raisons et qu’on relance pour s’assurer que ça passe. Je trouve ça assez risqué comme approche. Ai-je mal compris ?
il nous arrivait que le comportement “hover” ne soit pas déclenché, mettant en échec la suite du test. Nous avons donc changé notre manière d’effectuer le rollover : on répète l’action grâce au
waitUntil
tant que l’élement devant apparaître au hover n’est pas visiblePourquoi l’événement n’est-il pas déclenché ? Et l’utilisateur risque-t-il d’avoir le même bug ?
Elle permet de stocker dans un fichier texte la liste des scénarios en échec pour les relancer ensuite afin de vérifier qu’ils le sont réellement.
Des faux positifs ? Et si parfois le test échoue alors qu’il ne devrait pas, il y a-t-il un risque qu’il réussisse alors qu’il ne devrait pas ? Combien de fois le relancer pour être certain du résultat ?
Le retour d’expérience est extrêmement intéressant, mais ça laisse un goût de bidouille qu’il serait préférable de corriger avant de considérer la solution comme stable.
-
[Lecture] Refactoring a Dockerfile for image size
Lu sur le web :
There’s been a welcome focus in the Docker community recently around image size. Smaller image sizes are being championed by Docker and by the community. When many images clock in at multi-100 MB and ship with a large ubuntu base, it’s greatly needed.
J’aime bien l’approche de l’article, qui tient plus à retirer le superflu qu’à partir sur des configurations peu standard. Maintenant, qu’y gagne-t-on ?
L’espace disque est-il vraiment un enjeu majeur aujourd’hui par rapport au temps qu’on y passe et à la perte éventuelle de souplesse ?
Le système de système de fichier par couche devait mutualiser les téléchargements et les espaces de stockage. Ai-je mal compris ?
-
Amazon’s customer service backdoor
Wow. Just wow. The attacker gave Amazon my fake details from a whois query, and got my real address and phone number in exchange. Now they had enough to bounce around a few services, even convincing my bank to issue them a new copy of my Credit Card.
Rien de neuf, on a déjà vu des récits de comptes twitter piratés et de commandes VPC reroutées, voire de vraies usurpations d’identité. C’est désormais à chaque fois via de l’ingénierie sociale.
Les questions « secrètes » sont de la bonne blagues et un peu de culot accompagnés d’un téléphone permettent d’à peu près tout savoir via votre famille ou vos amis. Les supports techniques de vos différents prestataires ont tellement d’informations sur vous qu’ils sont des cibles privilégiées.
De fil en anguille, en récupérant un bout chez l’un, un autre bout chez l’autre, on peut remonter jusqu’à avoir quelque chose de fort.
Peu de solutions. Très peu de gens sont prêts à se faire éjecter de leurs services et de leurs données s’ils ont simplement changé d’adresse et oublié de la mettre à jour, ou perdu leur mot de passe de l’ancien compte email, etc. Les service de support client ne font que ce que tout le monde attend.
-
Composer parallel install plugin
Benchmark Example
288s -> 26s— hirak/prestissimo, composer parallel install plugin
Non testé, mais je me dis qu’il y a peu de chances que ça fasse du mal
-
No, You Don’t Need To Struggle Testing React
Writing tests in such an environment need to satisfy two rules:
- Writing specs should take the least amount of time possible.
- Each spec should test as much code as possible.
Now I’ve probably already lost half of you reading this. « Each spec should test as much as possible? How do you isolate failures?” Yeah, yeah, I agree, but at the end of the day, the only purpose of my testing suite is to make sure that the little CircleCI dot on Github turns red whenever I merge a breaking change.
C’est voir un seul côté du miroir, et au travers de lunettes de soleil.
Le test automatisé n’est pas là que pour l’intégration continue. Il est aussi là pour prouver que le code qu’on a produit correspond bien à ce qui est souhaité. Il est aussi là pendant le développement pour ne pas faire du pas à pas et du test manuel encore et encore jusqu’à ce que ça semble fonctionner. Il est là pour permettre à un tiers de comprendre et reproduire.
Je n’ai rien contre le fait d’avoir un scénario avec plusieurs assertions – qui est le fond du billet cité – mais avec des tests les plus gros possibles, on loupe la moitié des objectifs. Pire : on se créé une jolie dette technique pour quand on aura quelque chose à changer. Au lieu de retirer ou modifier quelques tests bien précis, on a un gros truc qui passe au rouge, qu’on va devoir modifier au risque d’oblitérer des cas limites.
-
Introduction to PostgreSQL physical storage
Should you know about how Postgres handle the physical storage? Maybe not, but knowing how it works can be useful if you need to investigate some problems.
C’est long mais excellent. J’aimerais en lire plus des comme ça.