Vue normale

Reçu — 27 novembre 2025

Ackify CE : preuve de lecture cryptographique en Go + Vue3

Ackify CE est une plateforme open-source (AGPL v3) permettant de générer des preuves de lecture cryptographiquement vérifiables pour des documents internes.

Le problème

Les organisations doivent souvent prouver qu'un collaborateur a lu un document (politique RGPD, charte de sécurité, formation obligatoire). Les solutions existantes sont soit trop lourdes (signature électronique qualifiée comme DocuSign à 10-30€/utilisateur/mois), soit non sécurisées (simple email).

La solution

Ackify génère des preuves de lecture cryptographiques avec :

  • Signatures Ed25519 (même algo que SSH)
  • Horodatage immutable (PostgreSQL triggers)
  • Hash chain blockchain-like
  • Vérification offline possible

Cas d'usage

  • Validation de politiques internes (sécurité, RGPD)
  • Attestations de formation obligatoire
  • Prise de connaissance de procédures
  • Accusés de réception contractuels

Différence avec DocuSign

Ackify n'est pas une alternative à DocuSign pour des contrats juridiques. C'est une solution simple pour des besoins internes où la signature qualifiée est overkill.

N'hésitez pas si vous avez des questions techniques !

Installation

curl -fsSL https://raw.githubusercontent.com/btouchard/ackify-ce/main/install/install.sh | bash
cd ackify-ce
nano .env  # Configurer OAuth2
docker compose up -d

Installation complète en ~5 minutes.

Stack technique

Backend

  • Go 1.24 (Clean Architecture / DDD)
  • PostgreSQL 16
  • Chi Router
  • OAuth2 (Google, GitHub, GitLab, custom) ou Magic Link (passwordless)

Frontend

  • Vue 3 + TypeScript
  • Tailwind CSS
  • i18n (FR, EN, ES, DE, IT)

DevOps

  • Docker distroless < 30 MB
  • CI/CD GitHub Actions
  • Tests : 72,6% couverture (180 tests unitaires + 33 intégration)

Commentaires : voir le flux Atom ouvrir dans le navigateur

Reçu — 25 novembre 2025

Tor CGO - Quand chaque attaque se transforme en auto-sabotage

Par :Korben
25 novembre 2025 à 11:03

Bonne nouvelle, les amis, Tor vient d’implémenter CGO (Counter Galois Onion) !

Si ça ne vous dit rien, c’est normal, moi non plus je ne connaissais pas, mais je vais tout vous expliquer !

Jusqu’à maintenant, le réseau Tor protégeait votre anonymat avec du chiffrement en oignon. Plusieurs couches de crypto, une par relais et ça marche bien… sauf qu’il existe une technique vicieuse qu’on appelle les attaques par tagging.

Le tagging c’est quand un attaquant modifie votre trafic chiffré à différents endroits du réseau (genre en ajoutant un marqueur invisible dans certains noeuds), puis il observe ce qui sort de l’autre côté pour vous tracer. C’est comme quand vous collez un traceur GPS dans votre voiture, sauf que là c’est des bits dans du trafic chiffré.

Et de son côté, CGO fait encore mieux que de bloquer cette attaque. En effet, il transforme chaque attaque en auto-sabotage ! Si quelqu’un modifie ne serait-ce qu’un seul bit de votre trafic chiffré, tout le message devient illisible. Et pas seulement ce message… tous les messages futurs de la session deviennent du bruit blanc irrécupérable.

Avec ça en place, l’attaquant se tire une balle dans le pied à chaque tentative.

Derrière ce système, il y a 4 cryptographes qui ont bossé très dur : Jean Paul Degabriele, Alessandro Melloni, Jean-Pierre Münch et Martijn Stam. Ils ont publié leur recherche cette année et ça a été implémenté dans Arti, la version Rust de Tor et l’implémentation C arrive bientôt.

Ce qui change tout, c’est le calcul risque/bénéfice pour les attaquants car avant, tenter de tracer quelqu’un avait peu de conséquences si ça échouait. Mais maintenant, tenter de tracer quelqu’un détruit définitivement votre capacité à surveiller cette personne. Et vous vous en doutez, les agences de surveillance détestent perdre leur accès… Elles préfèrent observer en silence plutôt que de tout casser dans une tentative maladroite. Du coup CGO les force à choisir. Soit rester invisibles, soit tout perdre.

Et puis il y a un autre aspect génial à cette techno, c’est le forward secrecy renforcé que ça engendre car à chaque message, CGO transforme les clés de chiffrement de façon irréversible. Même si un attaquant récupère vos clés actuelles, il ne peut pas déchiffrer les messages précédents car les clés précédentes ont été broyées et remplacées à chaque étape.

CGO remplace aussi l’ancien système d’authentification qui utilisait un digest de 4 bytes par un authenticateur de 16 bytes. C’est donc bien plus costaud et plus difficile à falsifier ainsi qu’à contourner.

Comme d’hab, Tor publie l’algorithme en open source donc vous pouvez vous plonger dans le code si ça vous amuse.

Cette implémentation de CGO est encore expérimentale pour le moment, mais une fois que cela aura été éprouvé par la communauté et testé pendant plusieurs mois, voire des années, ce sera déployé officiellement dans les futurs relais, puis dans les services onion de Tor.

Voilà donc comment Tor fait de chaque tentative de surveillance un auto-sabotage irréversible, et ça les amis, c’est un message qui devrait faire réfléchir pas mal de gens dans des bureaux sans fenêtres.

Source

Reçu — 13 novembre 2025

Seriously, stop using RSA -The Trail of Bits Blog

13 novembre 2025 à 10:19
Bon je garde sous le coude pour l'explication, mais visiblement en crypto il ne faut plus utiliser RSA, parce qu'avec cet algo il est très facile de se foirer et, du coup, de réduire la sécurité.

D'ailleurs NIST recommande de ne plus utiliser RSA : https://fullcirclesecurity.org/2024/11/26/nist-announces-the-end-of-rsa-and-ecdsa/
(Permalink)
Reçu — 13 juillet 2025

Certificat « SSL » : petites bricoles autour des courbes elliptiques

13 juillet 2025 à 08:23

Les courbes elliptiques, c’est la promesse de la robustesse des communications chiffrées de TLS sans la lourdeur des tailles de clés utilisées avec l’algorithme RSA. Il ne sera pas question de mathématiques aujourd’hui (je suis trop mauvais pour ça, vous avez qu’à voir Wikipedia pour ça), juste de quelques notes sur leur utilisation, pour du certificat autosigné, de la vérification, et un micro rappel de Let’s Encrypt.

Faites une petite recherche rapide, et 99,9% des tutos pour générer un certificat, que ça soit pour de l’auto-signé, ou dans le cadre de la commande chez une autorité « classique », et vous aurez du RSA avec un panel de 2048 à 4096 bits de taille de clé. Sans faire de benchmark, je peux vous assurer que si 2048bits est assez classique, 4096 ça commence à être assez lourd à gérer. Les courbes elliptiques sont des objets mathématiques qui promettent de garder la complexité mathématique, clé de la robustesse en matière de cryptographie, mais avec une taille de clé beaucoup plus réduite, ce qui permet d’améliorer la consommation de ressources et la performance du chiffrement des communications, parce que c’est le contexte dans lequel elles ont été envisagées et déployées.

Le certificat auto-signé

Typiquement, pour déployer un virtualhost « par défaut » sur mon serveur web Nginx, j’ai voulu générer un certificat auto-signé certes, mais avec les courbes elliptiques comme base cryptographique. C’est plutôt simple au final, ça se joue en à peine plus de temps, ça repose sur l’incontournable OpenSSL, malgré les problèmes qu’il pose ces dernières années, surtout en tant que bibliothèque applicative. On commence par lister les courbes disponibles :

openssl ecparam -list_curves

Vous choisissez ce que vous voulez, pour des raisons de compatibilité, j’ai sélectionné secp384r1 qui est la plus utilisée derrière sa petite sœur en 256bits et qui est nommée prime256v1 (parce que nique la cohérence, hein). C’est au passage celle que j’utilise sur le blog 😉

Ensuite, on fait les étapes classiques pour un autosigné :

openssl ecparam -genkey -name secp384r1 -out key.pem
openssl req -new -sha256 -key key.pem -out csr.csr
openssl req -x509 -sha256 -days 365 -in csr.csr -out certificate.pem

Pendant la phase de création du CSR, vous répondez comme vous le souhaitez aux questions, comme on est sur de l’autosigné vous pouvez être créatif si ça vous chante 🙂

Et voilà, vous n’avez plus qu’à renseigner la clé et le certificat dans votre Virtualhost par défaut, comme ça, si vous interrogez l’IP de votre serveur web, c’est ce certificat « placeholder » qui apparaitra (autosigné certes, mais certificat quand même) et ça masquera le reste de vos virtualhosts, parce que sinon le serveur web présente le premier chargé dans les configurations incluses (je me demande si j’en ferai pas une démo en live tiens…).

Vérifier la correspondance clé/certificat

Oui je sais ça parait con, mais ça m’est déjà arrivé une quantité beaucoup trop importante de fois de ne pas être certain qu’un nouveau certificat à installer correspond encore à la clé qui est déjà déployée, ou si une nouvelle clé à été générée pour l’occasion. La joie de l’infogérance et des tickets traités par plusieurs admins successivement.

Idem, quand on cherche les manipulations à effectuer, on trouve quasi systématiquement la méthode basée sur le modulus. Sauf que cette méthode est propre à l’algorithme RSA, et n’est donc pas applicable pour des courbes elliptiques. Malgré tout, on peut s’en sortir. L’astuce consiste cette fois à comparer la clé publique entre la clé et le certificat. D’abord pour la clé :

openssl ec -in key.pem -pubout |openssl md5

openssl x509 -in certificate.pem -noout -pubkey |openssl md5

Si les deux résultats sont identiques, vous pouvez les charger dans le serveur web (ou dans l’interface de votre fournisseur d’infrastructure, si vous êtes dans le claude).

La génération pour Let’s Encrypt via acme.sh

Let’s Encrypt (et certainement d’autres fournisseurs) supporte les courbes elliptiques depuis un moment déjà. Personnellement, je préfère utiliser le léger acme.sh plutôt que l’officiel certbot, que je trouve particulièrement lourd. La génération est plutôt simple :

acme.sh --issue --ecc -k ec-384 -d www.domain.tld -w /var/www/ --debug

Évidemment c’est à adapter au domaine, et au dossier par lequel il va bosser le challenge. Perso je préfère ensuite faire une installation dans un dossier dédié pour inclure la commande de rechargement du serveur web derrière :

acme.sh --install-cert -d domain.tld --fullchain-file /etc/nginx/ssl/domain.tld.crt --key-file /etc/nginx/ssl/domain.tld.key --reloadcmd "systemctl reload nginx"


Voilà, comme on le voit, il ne faut pas grand chose pour passer à cette méthode cryptographique, et investiguer à son sujet est à peu près aussi simple qu’avant. Juste je trouve qu’il y a vraiment peu d’articles qui incluent les courbes dans les manipulations. Bon ben voilà 😀

❌