OpenSSL plutôt que GPG!

Suite aux problèmes pour exploiter gpg2, et après quelques essais avec openssl, décision est prise de basculer vers ce dernier.

Ci-dessous, quelques opérations de base nécessaires au bon fonctionnement de nebule, et notamment pour l’expérience 3.

Entité

Générer une clé privée :
openssl genpkey -algorithm RSA -outform PEM -pkeyopt rsa_keygen_bits:2048 -aes-128-cbc -out dendievel_stephane.sec.pem -pass stdin

Extraire la clé publique correspondante, qui est l’objet d’une entité :
openssl rsa -in dendievel_stephane.sec.pem -pubout -out dendievel_stephane.pub.pem

Vérifier la clé privée :
openssl rsa -in dendievel_stephane.sec.pem -text

Lien

Signer du texte, comme par exemple une ligne représentant un lien :
echo -n "lien" | openssl dgst -hex -sha256 -sign dendievel_stephane.sec.pem | cut -d ' ' -f 2
La valeur retournée est en hexadécimal et peut être concaténée avec le reste du lien.

Vérifier une ligne, par exemple un lien signé ci-dessus :
cat sign.hex | xxd -r -p > sign.bin
echo -n "lien" | openssl dgst -sha256 -verify dendievel_stephane.pub.pem -signature sign.bin

Pour une raison obscure, en gros les développeurs n’ont pas terminé le travail, on peut calculer une empreinte signée et la sortir au format binaire ou hexadécimal, mais on ne peut la vérifier que en binaire… raison de la présence de cette première ligne de commande qui permet de convertir les valeurs affichées en hexadécimal vers leur représentation binaire.

Objet chiffré

Pour le chiffrement, c’est un peu plus complexe. On ne peut pas directement chiffrer l’objet avec une clé publique. Première raison assez classique, c’est beaucoup trop gourmand en ressources et en temps. On chiffre d’abord l’objet avec un algorithme symétrique et une clé suffisamment grande et aléatoire. c’est aussi sûr et beaucoup plus performant. Deuxième raison, en chiffrant directement avec une clé publique, une seule entité peut utiliser cet objet, alors que l’on doit peut-être le partager à plusieurs entités.

Donc, l’objet à protéger est chiffré avec une clé aléatoire via un algorithme symétrique. Puis cette clé aléatoire est chiffrée avec chaqu’une des clés publiques des destinataires, générant ainsi autant de liens que de destinataires avec comme HashMeta cette clé aléatoire chiffrée. Tout le monde, via le lien qui le concerne, a ainsi accès à la clé, et donc au contenu de l’objet.

A mettre en place…

Tags: ,

Comments are closed.