Nouvelle RFC 008 pour le chiffrement et la signature de messages avec les clefs Duniter

J’ai ajouté une nouvelle RFC pour que tous les clients utilisent le même système de chiffrement et de signature de messages avec les clefs Duniter. C’est un prérequis pour la RFC sur les Ascii Armor Messages…

Mon implémentation dans Duniterpy est normalement compatible avec les messages de Cesium+, et cette RFC aussi.

Il manque les signatures, work in progress…

@kimamila, si tu peux jeter un oeil pour voir si je ne me suis pas planté en transcrivant le code javascript en python pour le chiffrement ?

[EDIT]
Signature de message et vérification de signature ajoutés. Pour ma part, la RFC est terminée.
Mais vous pouvez proposer des correctifs. Bonne lecture !

2 Likes

Salut @vit !
Bravo pour ce démarrage de spec :slight_smile:

alors, oui, je vois quelques petits trucs :

  • Pour les conversion de clefs, pas de problème, ça semble coller ;
  • a priori, de ce que j’ai lu (vite fait) il vaut mieux utiliser un nonce. Ce que je fais dans les messages Cesium+.
  • Pour les signature, en fait, c’est plus simple du coup :
    • les boxed messages sont déjà signés à l’intérieur. En fait ils contiennent : le message chiffré afin que seule le destinatire puisse le lire, la clef de l’émétteur, et sa signature afin qu’il puisse être identifié directement.
    • C’est pour cela que je chiffre un 2ième message, pour que l’émetteur puisse relire un message qu’il a envoyé. (dans les noeuds Cesium+, il y a un document dans /message/inbox et un autre dans message/outbox).
    • Pour les message Cesium+, je chiffre séparément le titre du message, et le contenu, afin de pouvoir afficher (éventuellement) seulement le titre, pour une affichage plus rapide.
      Voilou :slight_smile:

Redis moi ce que je dois adapter ou pas.

Merci pour ta réponse !

En fait, le but est surtout de pouvoir exporter/importer des Ascii Armor Messages (voir la RFC 0007 sur sa propre branche).

Dans ceux-ci, les signatures sont séparées du message, parce qu’on est pas obligé de chiffrer un message signé et on est pas obligé de signer un message chiffré.

C’est pour cela que je suis obligé d’utiliser les seal_box pour chiffrer/déchiffrer sans signature (chiffrement avec juste la clef publique, pas de nonce).

Pour les signatures, c’est comme les documents Duniter, elle est séparée et signe le message original en clair.

Du coup, je ne sais pas si on peut vraiment être compatible finalement entre les messages internes à Cesium+ et ceux exportés (par email ou autre), mais ceci n’a peut-être aucune importance…
Du moment qu’on le fait avec les clefs Duniter…

Ça te fera juste un peux plus de boulot (désolé :blush:) pour créer ou parser des Ascii Armor Messages.

Je ferai une explication et une démo de ma première implémentation Duniterpy aux prochaines RML. Tu auras ainsi une meilleure vision de la chose.

3 Likes

OK, super. Je comprend mieux :slight_smile:
Petite question: est-ce possible de rendre le message anonyme, c’est à dire que l’émetteur reste secret ?

On pourrait par exemple mettre dans le message chiffré la clef publique de l’émetteur ?

Bien sûr, il suffit de ne pas signer le message.
Après, tu peux effectivement mettre des infos qui identifient l’émetteur uniquement pour le destinataire dans le message chiffré. Tu envoies ça avec un email jetable et hop, anonyme pour les espions ! :wink:

J’ai finalisé la RFC 0008.

J’ai éditer le lien du premier post du sujet.