Schéma diagramme de la crypto

coucou @tingletangleb

Quand je vois tout le volume d’explication et demandes de précisions que @Maaltir prodigue à ce propos - respect, je me dis qu’il serait super utile pour lui et tout le monde d’avoir un schéma, un diagramme qui montre et positionne le vocabulaire technique lié à la crypto.

Voici le contre exemple de ce que je ponds vite fait avec ia.

Affiche un truc compliqué alors que c’est plutôt simple en fait. Aucune qualité pédago, aucune empathie pour les users.

J’imagine un dessin plus simple, orienté usage où l’on retrouve le vocabulaire utilisé dans les applis (coffre, compte membres, comptes portefeuilles…), et les termes employés dans les explications de @Maaltir ou @vit (seed vs. compte racine, dérivations, …), où l’on comprend la migration en la voyant, où l’on voit en dehors du “nuage crypto” comment sont réassociées les données cesium+ et à quoi.
Pédago (à 2 niveaux de lecture), donc aussi instructif (educ pop), sans épargner les acronymes : 1er niveau visuel simple et concis, comme un mémo cartographique | 2nd niveau pour le vocabulaire et le positionnement technique (typos et couleurs que l’œil peut “filtrer”).
BIP39 →seed, ED255-19 →paire de clés, dérivations BIP32,… le fait qu’une adresse est une façon d’afficher le hash de la clé publique (SS58), ce genre de trucs, … pourquoi pas un petit lien sur le cours de Fred qui explique la courbe elliptique Edward derrière ED255-19 (il était chouette ce cours, super accessible) ?

La cerise sur le gâteau serait de voir en quoi conserver l/p pose un souci dans la durée :wink:

Je me dis que tu serais la personne idéale pour faire un tel joli dessin, notamment parce qu’il y a probablement un début d’esquisse dans ton carnet magique ;-))

On ferait valider la justesse par nos 10 experts de la question et hop, toute la communauté y voit plus clair et fait un pas significatif dans la compréhension de ce qu’elle manipule.
Et les accompagnateurs comme @Maaltir puis tous les orateurs de groupes locaux, pourraient utiliser des termes adéquats en fonction des questions sans devoir réexpliquer ou repositionner le terme à chaque fois.

Ça te dit ? Ou quelqu’un d’autre ?
sinon je ferai mais ça me détourne de mes priorités sur les dons fléchés et surtout tu es beaucoup plus qualifié que moi pour cet exercice de style (support pédagogique, ludisme, graphisme, dev, etc..). Quelqu’un d’autre le serait aussi :wink:

4 Likes

Je veux bien essayer de faire un schéma de ce que j’ai compris.

Un truc comme çà :
Schéma_Crypto.pdf (20,4 Ko)

3 Likes

bon début, … envie de continuer ?
→ aller jusqu’aux termes employés dans les applis, les positionnements à l’usage (ce que stocke le coffre, les comptes portefeuilles, le compte certifié, ..).
→ voir le processus de migration (avec les données Cesium+ toujours dans le même ElasticSearch qui ne bougent pas, tant que datapods dépréciés).
→ second niveau de lecture avec les acronymes ad’hoc pour celles et ceux qui veulent en profiter pour mieux suivre les excellentes discussions à propos de notre messagerie intégrée.

Quels termes par exemple ?

Là, on sort de l’explication crypto, le stockage des données, c’est autre chose.
Ou alors, je ne comprends pas la question.

Ben là, je ne comprends pas comment ça marche, donc je ne sais pas l’expliquer

Quels acronymes par exemple ?

Puisque ces clés ne sont jamais utilisées pour chiffrer/déchiffrer, c’est bizarre de parler de clés de (dé)chiffrage. La graine sert à générer la clé secrète (ou clé de signature), qui elle-même permet de calculer la clé publique (ou clé de vérification).

La clé secrète sert à signer les blocs et les transactions, mais ça n’a rien à voir avec le hash. Le hash d’un bloc ou d’un document est calculé à partir du document entier, public. Il sert à identifier un document de manière unique, non à le lier à une identité.

seed -> clé secrète -> clé publique
                |      |
       (produit)|      |(vérifie)
                v      v
transaction -> signature
2 Likes

Si je comprends bien, la seed permet de générer la clé secrète qui permet de générer la clé publique. Est-bien cela ? Je croyais que les deux venait directement de la seed.

La signature est bien produite en combinant la “transaction” avec la “clé secrète” c’est ça que je pensais être un “hash”. Me suis-je tromper ?

J’aimerais ajouter les dérivations dans ce schéma, mais je ne sais pas trop ce qui est dérivé ? La seed ou les clés ?
Parce que si j’ai bien compris, même une seed générée avec Id et Mot de passe peut être dérivée, même si les clients gecko et césium ne le permettent pas ?

1 Like

Oui, d’ailleurs on peut stocker la clé secrète et oublier la seed, alors on peut encore signer ou obtenir la clé publique, mais pas récupérer la seed.

On combine bien la transaction (ou toute autre donnée) et la clé secrète pour former la signature, qui peut être vérifiée en combinant la signature, la donnée et la clé publique.

Le hash est une fonction sans clé, qui calcule une “empreinte” à partir d’une donnée, mais ne peut pas être inversée (connaître le hash ne permet pas de retrouver la donnée, si elle est inconnue). Il sert à identifier les blocs. Par rapport aux numéros de blocs, il permet de discriminer les différents blocs candidats au même numéro, en cas de fork. Il permet aussi aux bases de données (qu’elles soient locales comme celle de Duniter, ou distribuées comme IPFS ou BitTorrent) d’indexer les données de manière efficace.

Certains algorithmes de signature (de type hash-and-sign) utilisent effectivement des fonctions de hachage (par exemple on signe le hash plutôt que la donnée, puisque le hash a une taille fixée, ce qui est plus commode). Cependant, à moins de s’intéresser au détail de fonctionnement de la signature, mieux vaut la voir comme un bloc opaque et modulaire, et alors la connaissance du hash n’est pas utile à la compréhension du schéma.

Les deux sont possibles : si tu connais une seed, tu peux par exemple lui ajouter +1, +2, etc. pour obtenir de nouvelles clés secrètes pseudo-aléatoires. Je crois que c’est à peu près ce qui est fait, car la clé secrète correspond à une structure algébrique qu’on ne peut pas manipuler n’importe comment sans créer des problèmes de sécurité. En gros la clé secrète est un hash de la seed et du chemin de dérivation.

1 Like

oui, l’idée en tête serait de voir où sont stockés et utilisés les ingrédients de la crypto (la seed, les paires de clés, …ce qui est signé)

ben peut-être pas aller jusque là, mais par exemple de voir que les certifs et transactions sont “ré-importées” et les meta Cesium+ ne bougent pas et sont “ré-associées”, et justement qu’elles sont hors crypto.

Mais je suis d’accord avec @tuxmain rentrer dans le détail des hash est une complication inutile à cette heure. Ce sera plus utile lorsqu’on lancera les datapods ipfs pour percevoir la notion des adressages sans base. Faire apparaître le terme {signature} et bien sûr clés privée et publique suffit à mon avis.

Nouvel essai

Schéma_Crypto2.odg (39,4 Ko)

1 Like

ho qu’il est beau.

bon j’hésite maintenant, est-ce que tu me permets de rentrer dedans comme si tu étais un “apprenti schémas” ?
Au début l’idée était de te fournir un outil qui te fasse gagner du temps pour ta mobilisation “hotline testeurs” et “filtre tickets”, et en profiter pour augmenter d’un coup la culture tek de toutes les personnes réceptives ; … l’idée n’était pas vraiment de t’ajouter du taf. Je ne m’attendais pas à ce que tu répondes toi-même à l’appel. Mais puisque c’est le cas, je ne sais plus trop jusqu’où aller.

Par exemple, si je dis “là tu es juste à la bascule de produire un schéma qui pose plus de questions qu’il n’apporte de réponses”. A la bascule, signifie “on n’est pas dedans mais ça en prend le chemin”… Est-ce que tu le prends mal ? Est-ce que ça te donne l’envie de zapper ou plutôt “ok c’est parti, on produit une belle carto qui va servir longtemps à presque tous les profils, y compris ceux qui savent, pour transmettre” ?

Mon problème est que je ne sais pas trop aller plus loin avec mes connaissances.
Donc si quelqu’un veut le reprendre ou complété, je veux bien.
Mais le risque, c’est que cela devienne incompréhensible.

Moi, je vois comme une explication de base, si vous avez des questions, tournez-vous vers des tutos ou des cours de cryptographie.

1 Like

on peut commencer avec un truc incompréhensible, un peu comme mon contre exemple initial, mais qui soit juste et complet. On fait valider par les 4 devs parmi les 10 qui voudront bien aboutir cette justesse.
A partir de ce schéma abscons, on bosse ce qu’on veut montrer.
→ on identifie et formule les registres à transmettre.
→ on identifie les 2 niveaux de lecture (plutôt simple).
→ on imagine le ou les diagrammes, on traduit en "couleurs, rôles des symboles, flèches, rectangles, ronds ; on cherche la nécessité de légendes et “voix off”.

Pour le livrable, on peut viser une image unique et fixe, mais dans la réalisation, si le cas se présente, on peut commencer avec plusieurs options ; et ensuite chercher à réduire à une image fixe unique.
A partir de ce livrable, les graphistes et communicants pourront réaliser des supports plus graphiques, plus pédago, plus ceci ou cela. Ils auront une ref. juste, et feront bien ce qu’ils veulent avec.

La barrière à l’entrée est rédhibitoire. Le propos est justement d’éviter ça. Notre image carto n’est pas un tuto car elle n’apprend pas à faire qqch, mais oui, c’est une forme de cours … en une seule image. Elle montre de quoi je parle dès que j’essaye d’expliquer une clé, un compte racine, une dérivation, un compte certifié, une signature, une migration, …

Monde idéal : un des 10 veut bien aboutir le premier dessin, l’incompréhensible, en cherchant seulement la justesse, sans se préoccuper de lisibilité, de l’audience, juste la justesse.
@vit ? je pense à toi parce que je pense que ça ne te prendra pas le quart du temps que tu as consacré au doc V2 (et que ce faisant, tu as carrément intégré les confusions et problématiques sémantiques liées).
[ suggestion : partir d’en bas, la seed, à gauche le plus tek, vers la droite couches vers le user, peut-être en 2 “colonnes”, la deuxième qui devient centrale visuellement sur les usages, les gestes, et la deuxième, à droite donc les termes dans les ui, les applis. On peut imaginer un point de départ convergent, à cette seed, avec en dessous le cas “new” qui démarre au mnemonic BIP39 et le cas “migration V1” avec les 2 use case d’une seed précédente, au-dessus génération paire de clé (ED25519), etc … en montrant où tout cela va (blockchain, elastic, device perso, ) et derrière quel bouton d’appli tout cela se cache ]

Ensuite, on peut bosser les petites flèches ci-dessus, à 2 ou 3, on pond des premières esquisses, on voit si on a besoin de plusieurs dessins ou si un seul suffira.
On fait un check, avec un ou deux dev de plus, par exemple tuxmain et poka, ou hugo.

Si vivien ne s’est pas encore manifesté ni n’aurait décliné, on peut à ce moment chercher avec lui s’il est possible d’introduire un gimmick ludique [ un vrai, genre enfant hybride de maître Capello et la coccinelle de Gotlieb, haha, bref un truc sympa et malin pour décomplexer l’abord du schéma et porter une touche d’humour, éventuellement ].

On (on ne sait pas encore qui) produit le livrable final, exploitable directement et
pour des réalisations animées ou des graphistes.

hop ?
bof ?

1 Like

Hello,

Voici un Excalidraw qu’on a entamé avec @NicoBoy. On l’a appelé GlobalChart, elle a pour but de modéliser l’ensemble du fonctionnement de l’environnement Duniter.

À chacun.e de prendre le temps d’y jeter un oeil, de se l’approprier et d’y ajouter sa touche.
C’est l’ensemble de petites contributions qui rendra le document pertinent et pourra servir de référence sur les définitions et le fonctionnement technique.

Merci

1 Like