Duniter/Silkaj/DuniterPy & Scuttlebot - comment partager les clefs de chiffrage des crypto-applications?

En parcourant https://scuttlebot.io/

Je réalise que les mêmes outils de chiffrage que Duniter y sont mis en pratique (sha256 et ed25519)
En plus ce « réseau gossip » implémente une WOT!

Ainsi que des outils de visualisation GraphML https://handbook.scuttlebutt.nz/applications

Il m’est venue l’idée de vouloir remplacer la clef ./ssb/secret par la paire d’un G1wallet…
Mais le format n’est pas le même ;(

{
  "curve": "ed25519",
  "public": "k5N8L1o8ohUXphcnbcs5J1o4zaC+Ws+2eIQ4bPYW49M=.ed25519",
  "private": "zgMC1/P+R9qwkhodre3UL0AJQhB0PSyyPHLNu+p8Z4KTk3wvWjyiFRemFydtyzknWjjNoL5az7Z4hDhs9hbj0w==.ed25519",
  "id": "@k5N8L1o8ohUXphcnbcs5J1o4zaC+Ws+2eIQ4bPYW49M=.ed25519"
}

Cette « greffe » permettrait d’associer un « réseau social » à un portefeuille. Est-ce que qq’un voit comment rendre nos clefs compatibles?

1 J'aime

Leurs clés publiques sont encodées en base64, les notres en base58, avec un peu de chance c’est juste un changement de base a faire :wink:

1 J'aime

En ce moment je m’amuse beaucoup à mettre des clefs de portefeuille G1 un peu partout, c’est très marrant les propriétés qui en résultent :wink:

Merci @elois de m’aider à changer d’espace les clefs

echo k5N8L1o8ohUXphcnbcs5J1o4zaC+Ws+2eIQ4bPYW49M= | base64 -d | base58
 Aw5NMRJZrSoYVj79mHfK5z7RTArRvR23SD84hTWwmaZG

Ca ressemble plus à ce que je veux.

cat g1.pub.key | base58 -d | base64

fonctionne

Mais avec la clef privée ça marche pas ;(

cat authfile | base58 -d
substring not found

Il est sous quel format ton fichier authfile ? il viens d’ou ? la clé privée se trouve dedans ? Si oui sous quel format ?

La tu essaye de décoder tout le contenu du fichier comme s’il ne contenais qu’une string base58 mais forcément ça ne peut pas fonctionner je n’ai jamais vu de fichier de trousseau contenant une seule chaine de caractère base 58.
Il n’y a hélas pas de format standard pour les fichiers de trousseau de clés donc sans autre indication je ne puis t’aider :confused:

C’est celui que produit silkaj (et effectivement il ne contient qu’une string)

@Moul je n’ai pas trouvé de documentation spécifiant le format du fichier authfile généré par silkaj, ai-je mal cherchée ? Si elle n’existe pas il me semble nécessaire de la créer :slight_smile:

@Frederic_Renault A défaut de documentation j’ai été voir dans le code de silkaj (c’est très facile a lire le python) et il semble que le authfile généré par silkaj contienne la seed au format hexadecimal. il te faut donc générer toi-même le trousseau de clés a partir de la seed :stuck_out_tongue:

1 J'aime

Ah, la « seed », ça veut dire graine… Mais je ne sais pas comment lui faire pousser les racines ni les branches (priv et pub), @Moul help

Franchement la crypto c’est bien casse tête…

On se retrouve avec plein d’algo fourrés dans tous les coins, et on peut même pas interchiffrer facilement les applications entre elles… C’est dommage. Ca ferait toute la différence si on pouvait coudre avec une clef de G1Wallet dans les crypto-applications tierces compatibles.

J’ai une question pour les pro du chiffrage.
Quels sont les outils installés par défaut sur un système Debian (sans apt install supplémentaire).

Il y a seulement gpg et sha256?

En fait, c’est pour avoir un code qui fait du chiffrage, inscrit dans ipfs, et qui soit sans dépendance autre que Debian… Qui aurait le temps de m’accompagner dans cette jungle de chiffrage ?

Pour faire ça tu peut utiliser une lib de crypto en pur javascript :

Ainsi tu n’a besoin d’aucune dépendance « système » :slight_smile:

Je ne suis pas sûr que ça fonctionne… Il faudra un interpréteur js sur le système, non?

Je ne suis pas dans un navigateur. Je suis dans le shell
Mon script devra se mettre en marche comme ça:

ipfs get ./command.sh /ipns/Qm****/command.sh && chmod u+x ./command.sh && ./command.sh $pubkey ACTION ($privkey)

Cette propriété ferait beaucoup ressembler les G1Tag IPFS à Ethereum et les Zen à du Gaz (abondant et pas cher)

la seed (genre de passphrase) c’est dans le cas ou tu utilise scrypt (double mot de passe)

le couple publicKey/secretKey c’est le resultat d’un algo executé sur la seed

maintenant le fichier ~/.config/duniter/keyring.yml dans lequel tu configure ton noeud duniter (ou juniter ;)) a une public et une secret key. le secret lui est encodé en base 58. pour générer en java cela donne ca:

        var properties = yaml.getObject();
        var pub = properties.getProperty("pub");
        var sec = properties.getProperty("sec");
        return new SecretBox(pub, Crypto.decodeBase58(sec));

je te conseil de chercher le keyring plutot qu’avec la seed ou les doubles mot de passe qui sont des surcouches inutile techniquement. juste la pour faire beau.

sans scrypt ou seed, Il n’y qu’une chose importante, c’est l’alphabet de ta base58, je ne suis pas certains que ce soit standard

dans Duniter c’est
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Enfin pour y connecter d’autres outils / réseaux sociaux l’idéal serait de réaliser un OAuth car ça permet une intégration avec plein de services externe sans efforts.

Ouah, non!! Tu peux pas me dire ça. C’est la tour de Babel la crypto!!!

Alors comment je fais moi avec mon authfile (seed) que me produit silkaj? Je ne peux m’en servir qu’avec silkaj, ou bien y’a moyen de récupérer clef publique/privée dans des fichiers autrement?

quoi? tes outils en ligne de commande n’ont pas les options nécessaire ?

Adopte la programmation alors :wink:

J’ai adoré ces petites bestioles, même si maintenant je me rends compte à quel point ces ordinateurs consomment notre énergie vitale :wink:

Je n’ai plus qu’une hâte remettre tout ce fatras dans la boite, garantir que ce qui est dedans est Libre et que son exécution ne peut être altérée. Ensuite…, Freeze! Plus que ça de disponible. Le monde se fragmente en îles où les magasins et les usines auront fermé ou ne seront accessible qu’à des privilégiés pratiquant le modèle de la dette féodale.

Je sais juste que je me suis donné 6 mois pour finir un prototype qui refasse la base des interactions actuelles, puis je file distribuer ça dans les iles :heart:

Je suis rentré dans cet Univers par la carte électronique de Pong. Au centre de la carte, tu as le Noyau. Je suis à sa surface le Shell /
les autres Univers sont des bulles qui émanent du noyau (au travers de langage et bibliothèques).
A la fin, tout devra s’exécuter en binaire au coeur du silicium. Etre sur le Shell m’a permis de voir beaucoup de bulles passer…

Depuis que je vois passer toutes ces bulles chiffrées, je me rends compte que l’ensemble de cet Univers va finir cristallisé. Si on ne met pas le coeur du cristal au bon endroit (où l’individu se trouve), on va finir avec un mode foireux

En fait non, la seed n’est pas nécessairement liée a scrypt. L’algo ed22519 génère un trousseau de clés a partir d’une seed de 32 octets. Cette seed peut être générée via scrypt ,ou via tout autre moyen :slight_smile:

Ce n’est pas tout a fait vrai, pour des raisons de sécurité, la manière de générer la seed doit être difficile a bruteforcer (donc couteux ou/et temps constant a calculer), c’est à ça que sert scrypt mais il peut être remplacé par d’autres algo comme PBKDF2 ou bien d’autres.

Oui l’alphabet de base58 est standard :slight_smile:

Il te faut une lib de crypto qui vas générer ton trousseau de clés a partir de la seed, tu peut faire ça dans n’importe-quel langage, le plus simple dans ton cas est peut-être de contributer a silkaj pour y ajouter une commande de conversion du fichier authfile d’un format a un autre, tout le code nécessaire existe déjà dans silkaj, c’est surtout de l’agencement et du brodage :slight_smile:


Oui la cryptographie c’est hélas très compliqué, il y a plein de process différents et beaucoup de subtilités qui échappent même aux développeurs qui s’en servent :confused:

3 J'aimes

Comme tu as peut-être pu le comprendre, en développant des terminaux pour guichet et commerçant.

Je me trouve face à la capacité de réaliser une sorte de mix G1 / IPFS ou le Zen circule (centime de Ḡ1) qui comme j’ai pu le constater au P2P Festival est assez équivalent de ce que les autres crypto synthétisent en Gas Ethereum Bitcoin (IPFS/Filecoin?).

Et je réalise qu’à l’entrée de ces mondes reposent les clefs de chiffrage et les algo de hashage… Sujet bien neuf pour moi. Si ce n’est que je réalise que le authfile que me fourni silkaj est une seed, pour le protocole ed25519.

Donc je devrai pouvoir produire n’importe quel couple de clef dans ce même protocole? Et d’autres, ce serait top!! Je veux mettre des clefs de portefeuilles Ḡ1 partout! et il ne faut pas que je me gourre dans le trousseau de clef que je vais prendre pour cette expédition

Cette réponse conviendrait à une personne que je ne suis malheureusement pas. Parce qu’il me faudra des jours (ou des semaines quand on est papa) pour y mettre une bouze et des mois pour arriver à la maestria de celui qui code en python depuis des années et qui connaît le code!!
Je sais que nous manquons tous de temps, que nous avons tous des objectifs à atteindre… Mais si pendant les 6 prochains mois, nous arrivions à nos focaliser sur une mission commune. Comme on peut monter une maison à 5 en 5 jours ou à 1,5 et 5 ans, nous arriverions je crois à un résultat qui nous surprendrai… J’en fais le vœux

En fait les identités ScuttleBot sont des G1Wallet en puissance :wink:
Trop marrant

ssbpub=$(cat .ssb/secret | grep public\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g)
ssbpriv=$(cat .ssb/secret | grep private\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g)
g1pub=$(echo $ssbpub | base64 -d | base58)
g1priv=$(echo $ssbpriv | base64 -d | base58)

silkaj amount $g1pub

silkaj amount Aw5NMRJZrSoYVj79mHfK5z7RTArRvR23SD84hTWwmaZG
Total amount of: Aw5NMRJZrSoYVj79mHfK5z7RTArRvR23SD84hTWwmaZG

Total Relative = 0.0 UD Ğ1
Total Quantitative = 0.0 Ğ1

Si ça se trouve, y’a des user scuttlebot qui savent pas qu’ils ont de la June :wink: (peut-être même qui sont membre!!). Enfin, avant que ce type de collision arrive (qui sait?), ça signifie surtout qu’un user scuttlebot a déjà un G1Wallet et une WOT sociale… Trop bien ça

Je sèche encore sur la façon d’utliiser $ssbpriv pour activer silkaj ou duniterpy, ou Juniter peut-être… La recherche est en cours…

2 J'aimes