112 / 736BLIND

Blind Signature

Signer à l’aveugle : certifier un message sans en voir le contenu

Imaginez un bon que son émetteur doit valider sans relever son numéro unique. Plus tard, il pourra reconnaître un bon authentique sans identifier, grâce à la signature, la personne qui l’a retiré. Blind Signature résout cette apparente contradiction. C’est une idée fondatrice de la monnaie électronique : vérifier la validité de l’argent sans que cette vérification constitue à elle seule un historique des achats de son détenteur.

Une Blind Signature, ou signature aveugle, est un procédé cryptographique : le demandeur masque un message, fait signer sa forme masquée, puis retire le masque. Il conserve une signature utilisable du message initial. David Chaum a appliqué cette idée à la monnaie électronique. Avec un protocole correct, le signataire ne peut pas relier un jeton ultérieur à son émission à partir des échanges de signature. D’autres indices, comme l’heure, le montant ou l’adresse réseau, ne disparaissent pas pour autant.

Avec une validation ordinaire, l’émetteur peut noter le numéro du bon et son destinataire. Quand un commerçant lui rapporte ce bon, il peut rapprocher les deux informations. Chaum expliquait la signature aveugle avec une enveloppe doublée de papier carbone : le tampon posé à l’extérieur marque le papier intérieur, dont l’émetteur ne voit pas le numéro. Une fois sorti, le papier porte une validation valable. C’est une image pédagogique, pas une procédure sûre à réaliser avec du papier et un tampon. Le véritable protocole utilise des nombres et des mathématiques pour obtenir cette séparation entre ordinateurs. [7] [1]

Anna souhaite un bon numérique de 100 sats. Les sats sont de petites unités de Bitcoin. Son portefeuille, l’application qui lui permet de gérer ces bons et de payer avec, génère une valeur secrète imprévisible qui distinguera le bon, puis la masque mathématiquement à l’aide d’une autre valeur aléatoire. Cette transformation s’appelle l’aveuglement. L’émetteur reçoit le message masqué, pas le secret initial. Le portefeuille conserve les éléments nécessaires pour enlever le masque. Renommer un fichier ou retirer un nom ne suffit pas : l’aveuglement doit satisfaire des propriétés cryptographiques précises. Pour simplifier l’exemple, nous utilisons un seul bon ; un portefeuille réel peut réunir plusieurs bons de valeurs différentes pour atteindre le montant voulu. [8] [2]

Signer à l’aveugle ne signifie pas signer gratuitement n’importe quoi pour n’importe qui. L’émetteur peut vérifier le paiement d’Anna ou débiter son solde. Il connaît la valeur demandée, 100 sats, sans avoir besoin du numéro secret du bon. Une clé de signature est une valeur numérique secrète que le logiciel de l’émetteur utilise pour créer les signatures. La valeur du bon peut être liée à une clé de signature propre à chaque dénomination ; modifier un chiffre dans un fichier ne crée alors pas un bon de valeur supérieure. L’émetteur signe l’entrée masquée et renvoie le résultat. On sépare ainsi le droit d’Anna à obtenir un bon et l’identification du bon qui circulera ensuite. [7] [8]

Anna n’a pas à révéler maintenant le secret initial. Son portefeuille retire lui-même le masque aléatoire du résultat reçu : c’est l’unblinding. Un procédé bien conçu laisse une validation du message préparé au départ, sans transmettre au portefeuille la clé privée de signature de l’émetteur. Anna voit une nouvelle somme dans son portefeuille ; l’habillage mathématique se fait en arrière-plan. Ce justificatif numérique est souvent appelé jeton, ou token. Ce n’est pas un bitcoin distinct sur la blockchain, le registre partagé des transactions Bitcoin, mais une créance sur son émetteur. [2] [8]

La vérification détermine si la validation correspond au message et à la bonne clé de l’émetteur. Pour les signatures aveugles reposant sur le système cryptographique RSA, la clé publique suffit ; d’autres constructions peuvent nécessiter une preuve supplémentaire ou l’intervention de l’émetteur. Cela ne prouve ni que le bon reste non dépensé, ni que personne ne l’a copié, ni que les réserves suffisent à le rembourser. Ce sont trois autres questions. Comme un vrai billet déjà utilisé ne donne pas une seconde entrée, une preuve cryptographiquement valable peut être inutilisable pour un nouveau paiement. [2] [10]

Anna envoie le bon à Pierre. Puisqu’il s’agit de données, elle peut en garder une copie identique. La signature aveugle n’efface aucun fichier de son appareil. Dans un système en ligne courant, le portefeuille du bénéficiaire présente donc le jeton à l’émetteur. Celui-ci vérifie sa validité et si un jeton portant le même secret a déjà été dépensé. S’il l’accepte, il le marque comme utilisé et peut émettre pour Pierre un nouveau jeton selon le même procédé de signature aveugle. Anna ne connaît pas le nouveau secret de Pierre. Une nouvelle tentative de dépense de l’ancienne copie est rejetée. Réutiliser les mêmes fonds s’appelle une double dépense, ou double spend ; l’empêcher relève d’un autre mécanisme du système de paiement. [9] [8]

La protection vaut aussi dans l’autre sens : un client ne doit pas tirer des signatures autorisées de nouveaux justificatifs valides portant d’autres secrets. C’est la résistance à la contrefaçon. Pour les signatures aveugles, on étudie notamment la one-more unforgeability : après un nombre donné d’interactions de signature, un attaquant peut-il produire un couple message-signature nouveau et valide de plus ? Copier le même couple est un autre problème. La cryptographie ne remplace pas non plus les contrôles du serveur sur les droits, les montants et la structure admise des jetons. Ensemble, ces contrôles peuvent empêcher une émission de valeur non autorisée. [2] [3]

L’émetteur peut savoir quand Anna a obtenu ses jetons et pour quel montant. Lors de leur utilisation, il peut connaître l’heure, la somme ou l’adresse réseau du bénéficiaire. Ce sont des métadonnées, des informations accompagnant le justificatif. Dans un petit groupe d’utilisateurs, un montant inhabituel ou un paiement immédiatement consécutif peut faciliter les rapprochements. Les clés communes et vérifiées comptent aussi : une clé réservée à une seule personne pourrait la marquer. L’aveuglement protège un lien précis entre signature et émission, pas toutes les informations environnantes. Il ne répare pas davantage un portefeuille compromis et ne contraint pas l’émetteur à honorer sa dette. [7] [2]

L’idée de Chaum est à la base de la monnaie électronique historiquement associée à DigiCash. Cashu et Fedimint l’utilisent dans l’écosystème Bitcoin, avec des connexions à Lightning Network (un réseau pour les paiements rapides en bitcoins) pour faciliter les entrées et sorties de fonds. Leurs constructions ne sont toutefois pas RSA. Le mécanisme de base de Cashu vérifie un jeton avec la clé secrète de l’émetteur ; NUT-12 ajoute une preuve permettant de vérifier la signature avec des données publiques, sans prouver que le jeton demeure non dépensé. Fedimint répartit l’administration entre plusieurs opérateurs. Dans les deux cas, l’utilisateur détient une créance et dépend de la garde des fonds et de la disponibilité de l’émetteur. GNU Taler combine, pour sa part, confidentialité des acheteurs et traçabilité des revenus marchands. [5] [6] [10] [4]

Quelques équations donnent un aperçu simplifié. Le message est encodé de façon sûre sous forme d’un nombre m ; la clé publique contient n et e, tandis que d désigne la partie privée. Le demandeur choisit un r aléatoire possédant un inverse multiplicatif r⁻¹ modulo n et envoie m′ = m·r^e mod n. Mod n signifie que l’on calcule avec les restes de la division par n. Le signataire renvoie s′ = (m′)^d mod n ; le demandeur obtient s = s′·r⁻¹ mod n. La vérification donne s^e mod n = m. Le facteur r⁻¹ enlève le masque. Ces relations expliquent le mécanisme, pas un programme sûr complet. RFC 9474 précise aussi la préparation du message, le schéma RSA-PSS avec encodage sûr, les contrôles d’entrée et la séparation des clés de signature. L’aléatoire et le choix de la variante comptent. [2] [3]

Pour une vision complète, lisez aussi David Chaum, Chaumian eCash, DigiCash, Cashu, Fedimint, Confidentialité de Bitcoin. Cette entrée est également citée par DigiCash, Chaumian eCash, Reusable Proofs of Work, Fedimint.

DOC · 001David Chaum — Blind Signatures for Untraceable PaymentsSource primaire DOC · 002RFC 9474 — RSA Blind SignaturesSpécification DOC · 003IRTF/CFRG — RFC 9474 publication recordSpécification DOC · 004GNU Taler — PrinciplesSource primaire DOC · 005Cashu protocol specificationsSpécification DOC · 006Fedimint — How Federations WorkSource primaire DOC · 007David Chaum — Security without IdentificationSource primaire DOC · 008Cashu NUT-00 — Notation and modelsSpécification DOC · 009Cashu NUT-03 — Swapping tokensSpécification DOC · 010Cashu NUT-12 — DLEQ proofsSpécification
Révisé le: Sources d’abord · Pas un conseil financier