Clés et signatures

Ce qui signe nos preuves

Une preuve vaut ce que vaut la clé qui la signe. Voici laquelle, comment elle est protégée, et ce qui se passerait si elle était volée.

Le trousseau

Nos clés, telles qu'elles sont publiées

Lu à l'instant dans le trousseau officiel : cette page ne peut pas le contredire.

Lecture du trousseau…

Vos questions

Six questions, six réponses

Où trouver la clé publique ?

Dans notre trousseau public, à l'adresse foxytrace.com/.well-known/ftvs-keys.json. Il est servi en HTTPS sur notre domaine : c'est ce qui atteste qu'il vient bien de nous. Chaque certificat indique l'identifiant de la clé qui l'a signé, par exemple key-prod-1 ; on la retrouve dans le tableau ci-dessus.

Quel algorithme ?

Ed25519 (RFC 8032), une signature sur courbe elliptique d'un niveau de sécurité d'environ 128 bits, utilisée notamment par SSH et Signal. Le contenu est d'abord résumé en une empreinte SHA-256 : c'est cette empreinte qui est signée. N'importe quel outil standard peut vérifier la signature, sans passer par nous.

Quelle durée de validité ?

Une clé signe tant qu'elle est en service. Sa date de mise en service est publiée, et sa date de retrait l'est dès qu'elle est remplacée. Une clé retirée ne signe plus rien, mais elle reste publiée pour toujours : c'est elle qui permet de vérifier les preuves qu'elle a signées.

Comment les clés sont-elles renouvelées ?

La nouvelle clé est générée sur notre serveur, puis publiée dans le trousseau avant de signer quoi que ce soit. L'ancienne passe au statut « retirée », avec sa date. Aucune clé n'est jamais supprimée du trousseau.

Une ancienne preuve reste-t-elle vérifiable ?

Oui. Chaque preuve, et chaque étape de son journal (envoi, identification, acceptation…), porte l'identifiant de la clé qui l'a signée. Un message envoyé avec une clé et accepté après son remplacement se vérifie donc étape par étape, chacune avec sa propre clé.

Comment la clé privée est-elle protégée ?

Elle est conservée sur notre serveur, hébergé en France, dans un fichier lisible uniquement par le service FoxyTrace. Elle n'est jamais enregistrée en base de données ni transmise : seule la clé publique sort. Elle n'est copiée que dans nos sauvegardes, chiffrées en AES-256 — sans elle, une restauration ne pourrait plus rien signer. Le serveur n'est administrable que par un réseau privé, avec une clé d'accès et jamais par mot de passe. Elle n'est pas encore dans un module matériel sécurisé (HSM) : c'est une limite que nous préférons écrire ici plutôt que taire.

Et si une clé est volée ?

Les anciennes preuves restent debout

C'est le scénario que tout le reste de cette page prépare. Voici, dans l'ordre, ce que nous ferions.

  1. La clé est déclarée compromiseAvec la date du premier instant où elle a pu fuiter. Dans le doute, nous remontons plus tôt : mieux vaut perdre la présomption sur quelques preuves que d'en couvrir une fausse.
  2. Le trousseau public l'annonceLa clé y apparaît « compromise », avec cette date. Tout vérificateur, y compris hors ligne, en tient compte.
  3. Les preuves horodatées avant le vol restent validesChaque preuve est datée par une autorité d'horodatage indépendante (RFC 3161). Un voleur peut signer à notre place, il ne peut pas obtenir de cette autorité un jeton daté d'avant son vol.
  4. Les autres sont déclarées non fiablesUne signature de la clé tombée, sans horodatage antérieur, est affichée comme non fiable par notre page de vérification. Notre service refuse ensuite de signer avec elle.
  5. Une nouvelle clé prend le relaisPubliée dans le trousseau, puis annoncée ici avec les explications de l'incident.

Nos horodatages sont aujourd'hui délivrés par DigiCert, une autorité d'horodatage RFC 3161. Nous prévoyons de passer à une autorité française.

Vérifier une preuve →