5 points par GN⁺ 2023-09-17 | 1 commentaires | Partager sur WhatsApp
  • Horcrux est un outil CLI qui divise un fichier en fragments horcrux chiffrés et permet de restaurer le fichier d’origine sans avoir à mémoriser de mot de passe
  • Destiné aux utilisateurs qui doivent chiffrer de gros fichiers sensibles mais risquent d’avoir oublié leur mot de passe quelques années plus tard, ou à ceux qui veulent envoyer un fichier via plusieurs canaux afin de réduire fortement la probabilité qu’un attaquant l’intercepte
  • split demande le nombre de fragments à créer lors du découpage du fichier ainsi que le nombre de fragments nécessaires pour restaurer l’original ; l’exemple montre une configuration où n’importe quels 3 fragments sur 5 permettent la restauration
  • bind est la commande qui reconstitue le fichier d’origine à partir d’un répertoire contenant les fragments horcrux, et il est aussi possible de passer le répertoire en argument
  • Le mécanisme interne repose sur le Shamir Secret Sharing Scheme, qui divise la clé de chiffrement en plusieurs parties et permet de reconstruire la clé d’origine lorsqu’on dispose d’un nombre de fragments supérieur ou égal au seuil (threshold) défini
  • La génération de clé utilise la fonction Read de crypto/rand dans la bibliothèque standard Go, et l’implémentation de Shamir est une adaptation de celle du repo vault de Hashicorp
  • L’installation est possible via Homebrew avec brew install jesseduffield/horcrux/horcrux, via scoop avec scoop bucket add extras; scoop install horcrux, ou via les binary release
  • L’alternative ssss indiquée fonctionne pour les clés mais pas pour les fichiers eux-mêmes, tandis que d’autres outils comme horcrux et Haystack ne prennent pas en charge le seuil horcrux

1 commentaires

 
GN⁺ 2023-09-17
Avis de Hacker News
  • Point à noter : cet outil utilise le mode AES OFB pour chiffrer et déchiffrer les fichiers, et ne garantit pas l’intégrité du texte chiffré, c’est-à-dire qu’il n’y a pas de MAC
    [0]: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation...

    • L’explication de Wikipédia était difficile à comprendre même avec un certain bagage technique. Quelqu’un peut l’expliquer comme à un enfant de 5 ans ?
  • Parmi les outils de sauvegarde sur papier, il existe un chouette projet qui utilise le partage de secret de Shamir pour distribuer plusieurs copies papier à des amis, puis permettre de les relire optiquement plus tard afin de restaurer le fichier
    https://github.com/cyphar/paperback

    • Il faut absolument que je trouve le temps de créer une interface utilisateur utilisable, mais la partie graphique n’a jamais été mon point fort
      Pour l’instant, tout fonctionne, mais il faut copier-coller le contenu des QR codes dans la ligne de commande, et il faut aussi figer le format sur disque — ou plutôt sur papier
    • Je me demande si c’est différent, ou si ça fait exactement la même chose
      https://github.com/paritytech/banana_split
    • Très propre. Ça me semble encore un peu tôt pour s’y fier, mais si ça gagne en maturité et devient plus facile à utiliser, ça pourrait être très utile à beaucoup de monde
    • Le partage de secret de Shamir fonctionne-t-il bien avec de grosses entrées ? Ou faut-il plutôt chiffrer le texte en clair avec AEAD et ne partager que la clé avec le partage de secret de Shamir ?
  • Levchin a récemment écrit un billet sur le partage de secret de Shamir et le chaos qu’il a provoqué chez PayPal : https://max.levch.in/post/724289457144070144/shamir-secret-s...
    C’est l’un de mes algorithmes préférés, mais franchement, je commence aujourd’hui à me demander si son attrait pour moi n’est pas surtout académique, ou si ses cas d’usage réels sont plus limités que je ne le pensais

    • Le partage de secret de Shamir est fondamentalement parfait pour le nerdsniping
      Il est assez simple à comprendre même sans bagage en cryptographie ni mathématiques avancées, en réalité un peu d’algèbre suffit. Le fait même que ce soit possible est étonnant, ses cas d’usage concrets paraissent évidents, du moins au début, et on peut même l’implémenter soi-même. Bien sûr, il reste des pièges
      C’est pourquoi je pense qu’il revient excessivement souvent, non seulement sur les forums de discussion, mais aussi dans des solutions industrielles
    • Je ne vois pas pourquoi l’article cité devrait susciter ce doute
      Je ne sais pas si tu établis un lien de causalité entre les deux, mais le problème venait de l’interface d’accès à l’algorithme, pas de l’algorithme lui-même
    • C’est précisément à partir de cette inquiétude que j’écris en ce moment un livre : pmfpbook.org
  • D’après la FAQ, cet outil découpe la clé de chiffrement avec le partage de secret de Shamir. Mais en fait, on peut atteindre le même objectif sans clé de chiffrement en utilisant Reed-Solomon
    Il suffit d’abord de traiter les données d’entrée avec une transformation tout-ou-rien (AONT), puis de les découper en fragments Reed-Solomon. Reed-Solomon est vulnérable aux attaques par distingueur et risque fort de laisser fuiter des informations sur l’entrée, d’où la nécessité de l’AONT
    [1] <https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_cor...>
    [2] <https://en.wikipedia.org/wiki/All-or-nothing_transform>
    [3] <https://en.wikipedia.org/wiki/Distinguishing_attack>

  • On peut imaginer plusieurs méthodes pour « découper un fichier chiffré par mot de passe de façon à pouvoir le réassembler même s’il manque certains fragments », mais ce qui m’a intrigué, c’est qu’on puisse le faire sans mot de passe.
    Pour quelqu’un qui aime les sujets de sécurité ou les algorithmes, c’est un objet assez intéressant. Je pense que je vais fouiller le code source et lire les techniques associées pour comprendre comment c’est implémenté. En revanche, je ne sais pas vraiment à quoi cela peut servir. Je me demande s’il existe un modèle de menace pertinent où ce serait une couche de « pelure d’oignon » pour protéger des données sensibles, ou s’il y a un cas d’usage où c’est supérieur à des solutions déjà mieux établies.
    L’auteur compare aussi, sur le ton de la plaisanterie, le problème de se souvenir d’un vieux mot de passe de journal intime et celui de se souvenir d’un nombre suffisant de cachettes ; personnellement, je pense que le second serait un problème bien plus important. Il faudrait réduire le nombre de fragments et augmenter le nombre d’endroits où les cacher, mais cela diminuerait la sécurité offerte[0].
    Cela me fait penser à la multisignature, même si ce que j’ai rencontré se limitait à « devoir brancher une clé USB et lancer un programme avec deux collègues pour déployer une mise à jour ». Tout le monde devait fournir sa clé, et si « je suis en arrêt maladie, la mise à jour ne part pas ». Je ne sais pas si c’était une limite de l’outil ou si c’était configuré ainsi parce qu’il était alors en alpha.
    Cela reste très intéressant.
    [0] Cela dit, « sous le matelas » offrirait sans doute un niveau de sécurité comparable à définir son mot de passe sur « password ».

    • Pourquoi pas pour partager des informations que des personnes pourraient utiliser en cas d’urgence ? Les données seraient stockées à plusieurs endroits, mais seules les personnes pouvant accéder à 3 d’entre eux pourraient les lire.
      Le véritable dispositif de sécurité serait le contrôle d’accès physique existant. Pour obtenir les données, un voleur devrait s’introduire dans trois lieux.
      On pourrait aussi chiffrer les données puis diviser le mot de passe en trois fragments stockés à différents endroits, mais il faudrait alors conserver à la fois les données et le mot de passe.
  • Quelques éléments qui semblent liés, rien qu’au nom. Il y a probablement plus d’un projet. Quoi d’autre ?
    Horcrux: Split your file into encrypted fragments - https://news.ycombinator.com/item?id=29395575 - novembre 2021, 11 commentaires
    Show HN: Horcrux, a Playground for Shamir Secret Sharing - https://news.ycombinator.com/item?id=26256726 - février 2021, 40 commentaires
    Horcrux Encrypted Messaging - https://news.ycombinator.com/item?id=24322069 - août 2020, 93 commentaires
    I made an app that lets you split a file into horcruxes - https://news.ycombinator.com/item?id=24026445 - août 2020, 80 commentaires
    You can now make horcruxes out of your confidential files - https://news.ycombinator.com/item?id=21933983 - janvier 2020, 17 commentaires

  • Cela me rappelle les fichiers de parité sur Usenet. On publiait une grosse archive découpée en plusieurs petits fichiers et un certain nombre de fichiers de parité, et on pouvait par exemple recréer l’archive originale avec seulement n-3 fichiers sur n.
    https://en.wikipedia.org/wiki/Parchive

  • J’ai récemment appris que Clevis prend aussi en charge le partage de secret de Shamir. En fait, c’est la seule façon de configurer plusieurs pins du même type et avec les mêmes droits ; en quelque sorte, c’est le RAID0 du SSS.
    https://github.com/latchset/clevis#pin-shamir-secret-sharing

  • J’ai trouvé ça élégant et je suis allé voir le dépôt ; il s’est avéré que son créateur est aussi celui de lazygit/lazydocker. C’est agréable de voir quelqu’un d’aussi prolifique.

  • Dans la FAQ, à la question « Est-ce que ce n’est pas différent des Horcruxes de l’univers Harry Potter ? », la réponse dit : « C’est assez similaire. Un seul horcruxe ne devrait pas permettre de ressusciter le fichier original, mais on peut faire en sorte que deux y parviennent : ce n’est donc qu’une différence d’une unité. Échec et mat, fans de Harry Potter. »
    Pourtant, l’essence d’un horcruxe est de placer des sauvegardes à plusieurs endroits. Cet outil, qui sauvegarde des sauvegardes à plusieurs endroits, utilise le nom de façon bien plus appropriée : https://github.com/chrispoole643/horcrux. Échec et mat, jesseduffield ;)

    • Oui, mais pas tout à fait. Techniquement, un horcruxe était une sauvegarde, mais le poids émotionnel du concept venait du fait de fragmenter son âme et d’amputer son essence pour se prémunir contre un danger.
      Une sauvegarde partielle correspond mieux à l’esprit de cette idée.
      J’ajouterais que j’ai lu ce concept comme une attaque contre la promiscuité. Comme « Whore crux ». À l’inverse, Lord of the Rings peut être vu comme une attaque contre le mariage : quand on porte l’anneau, on devient invisible et on disparaît peu à peu jusqu’à n’être plus rien, comme « du beurre étalé sur trop de pain ».