Prouver le controle d'une clé privée à l'aide d'Openssl
Il est possible de prouver cryptographiquement que l'on possède une clé privée, sans la divulguer, a l'aide d'Openssl et d'un encodeur/décodeur base64.Terminologie
Ces termes seront utilisés de manière consistante afin de lever toute ambiguïté.- Demandeur : La personne demandant la preuve
- Démonstrateur : La personne démontrant qu'elle possède la clé privée
Procédure
Étape 1 : Le demandeur génère un message aléatoire
Il est très important que ce soit le demandeur qui génère le message et non le démonstrateur, afin de pouvoir limiter les risques de "tricherie", par exemple par répétition de preuve.
Il est également important que le message soit de taille importante, dans cet exemple 512 octets.
openssl rand -base64 512 > messagetbs
Étape 2 : le démonstrateur fait la signature
Le démonstrateur utilise le message messagetbs et sa clé privée proofCert.pkey pour générer la signature messagetbs.sig.
base64 -d messagetbs | openssl dgst -sha256 -sign proofCert.pkey | base64 > messagetbs.sig
Étape 3 : Le demandeur vérifie la signature
base64 -d messagetbs.sig > messagetbs.sig.bin openssl x509 -in proofCert.cer -pubkey -noout > proofCert.pubkey base64 -d messagetbs | openssl dgst -sha256 -verify proofCert.pubkey -signature messagetbs.sig.bin
Openssl indiquera alors si la signature est valide.
Verified OK