# Clés

La page **clés** (barre latérale sur iPad, onglet clés sur iPhone) gère vos
clés SSH. Les octets des clés privées ne vivent que
dans le trousseau iOS — Tessera ne conserve que des métadonnées publiques
(noms, empreintes, usage) dans sa propre base.

## Générer une clé

Touchez **+ générer** et choisissez un algorithme :

- **Ed25519** — « valeur par défaut rapide et moderne ». Une clé logicielle
  stockée dans le trousseau ; elle peut être exportée dans un fichier de
  récupération et déplacée d'un appareil à l'autre.
- **P-256 Enclave** — « liée à l'appareil ». Générée dans la Secure Enclave,
  elle **ne la quitte jamais** : la clé ne peut être ni exportée ni déplacée
  vers un autre appareil. Perdez l'appareil et la clé est perdue — gardez
  une seconde clé autorisée ailleurs.

La génération RSA n'est pas prise en charge ; voir
[dépannage](https://bambouville.com/docs/fr/troubleshooting/#les-clés-rsa-ne-sont-pas-prises-en-charge).

## Importer une clé

Touchez **importer** et choisissez un fichier de clé privée OpenSSH (jusqu'à
1 Mo). Si le fichier est protégé par une phrase secrète, celle-ci sert une
seule fois à le déchiffrer et n'est pas conservée.

- Seuls les imports **Ed25519** sont acceptés. L'import RSA est désactivé car
  la pile SSH actuelle ne peut proposer que la signature obsolète RSA/SHA-1 —
  utilisez Ed25519 à la place.
- La feuille d'import se masque d'elle-même (« import de clé privée masqué »)
  dès que l'écran est capturé ou que l'app passe en arrière-plan.

## Protection biométrique

Chaque clé possède un interrupteur **exiger la biométrie ou le code** :
Face ID / Touch ID ou le code de l'appareil sont alors requis chaque fois que
Tessera accède à cette clé. Pour les clés Ed25519 logicielles, c'est iOS qui
l'impose à la frontière du trousseau ; pour les clés P-256 Enclave, le matériel
de la clé ne quitte jamais la Secure Enclave et c'est Tessera qui impose
elle-même l'authentification avant chaque usage — d'où le fait que le réglage
reste modifiable. Seules les clés créées avant que ce réglage soit configurable
portent l'étiquette **imposé** verrouillée.

### Salves d'autorisation

Sous **réglages → sécurité → autoriser des salves de connexions avec la
clé**, une seule autorisation biométrique peut couvrir des connexions
répétées utilisant la même clé vers le même point de terminaison pendant
30 secondes — les onglets tmux et les transferts de fichiers ne demandent
donc pas chacun une confirmation. Passer l'app en arrière-plan invalide
toujours ces autorisations, même lorsque le
[verrouillage de l'app](https://bambouville.com/docs/fr/security/) est désactivé.

L'interrupteur est proposé lors de la génération ou de l'import d'une clé et
peut être modifié plus tard depuis le détail de la clé. L'exception, ce sont
les clés P-256 Enclave créées avant que ce réglage soit configurable : elles
portent une étiquette **imposé** verrouillée, et les modifier suppose de
générer une nouvelle clé et de la remplacer.

## Le panneau de détail de la clé

Touchez une clé pour voir son type, son **empreinte (sha256)** (compatible
OpenSSH) et sa clé publique. De là, vous pouvez :

- **copier la clé publique** — la ligne `authorized_keys`.
- **copier vers l'hôte…** — l'installer sur un serveur (ci-dessous).
- **exporter la clé privée…** — Ed25519 uniquement ; écrit un fichier de
  récupération `openssh-key-v1` chiffré par phrase secrète.
- **supprimer la clé privée locale…** — voir
  [suppression](#supprimer-une-clé).

Une section **utilisée par** liste les hôtes qui référencent la clé.

## Installer une clé sur un hôte

**copier vers l'hôte…** choisit un hôte, affiche la ligne `authorized_keys`
exacte et l'ajoute à `~/.ssh/authorized_keys` par SSH, avec des marqueurs de
vérification.

- Vous devez d'abord avoir [approuvé la clé d'hôte](https://bambouville.com/docs/fr/host-keys/) :
  connectez-vous une fois pour la vérifier, puis réessayez.
- Tessera refuse d'installer une clé sur un hôte qui utilise déjà cette clé
  pour s'authentifier.
- Les installations abouties sont suivies, et le processus de suppression les
  signale (« Installations distantes connues : N »).

## Export et récupération

La section **récupération** d'une clé suit son état de sauvegarde — s'il
existe un export de récupération vérifié (avec sa date et son empreinte) et,
pour les clés Enclave, un rappel permanent indiquant que le matériel privé de
la Secure Enclave ne peut pas quitter l'appareil.

- **protéger la clé de récupération…** — exporter avec une phrase secrète.
- **vérifier le fichier de récupération…** — contrôler qu'un fichier de
  récupération correspond toujours à la clé.
- **restaurer depuis le fichier de récupération…** — réparation, vérifiée par
  empreinte, d'un matériel de trousseau manquant ou incohérent (par exemple
  après une restauration depuis une sauvegarde).

Sauvegardez les clés logicielles avant de les installer largement — une clé
irrécupérable, c'est se bloquer soi-même dehors à mesure que les mots de
passe sont désactivés.

## Supprimer une clé

**supprimer la clé privée locale…** retire la clé du trousseau après
confirmation. La suppression locale **ne révoque pas** les entrées
`authorized_keys` de vos serveurs — lorsqu'un hôte suivi dispose d'un
identifiant alternatif, le processus de suppression propose « révoquer sur N
hôtes suivis et supprimer » pour les retirer à votre place ; sinon, retirez
vous-même les lignes correspondantes sur chaque serveur si la clé doit cesser
de fonctionner.

Les clés RSA héritées d'anciennes versions sont affichées désactivées.

## Éléments orphelins du trousseau

iOS conserve les éléments du trousseau lorsqu'on supprime puis réinstalle une
app : les métadonnées de clé et le matériel de clé peuvent donc se
désynchroniser. Une clé listée dont le matériel privé a disparu affiche un
badge **matériel privé manquant** (réparez-la avec
[restaurer depuis le fichier de récupération](#export-et-récupération)) ; du
matériel privé résiduel sans clé correspondante apparaît sous la forme
« N élément(s) orphelin(s) du trousseau », avec un processus **vérifier le
nettoyage…** — exportez d'abord un fichier de récupération en cas de doute,
puis supprimez.

## Accès à l'appareil

Lorsqu'un autre de vos appareils est inscrit sur un hôte via
[autoriser cet appareil](https://bambouville.com/docs/fr/continuity/#autoriser-cet-appareil),
l'autorisation est enregistrée ici : appareil pair, sens, hôte et empreinte
de la clé. **révoquer** retire la clé publique de cet appareil de l'hôte en
passant par votre propre accès — de la même façon qu'elle y a été installée.
Si l'hôte est injoignable, l'entrée reste marquée comme incertaine pour que
vous puissiez réessayer ou nettoyer manuellement.

## Où sont les octets

- Clés Ed25519 logicielles : trousseau iOS (sans synchronisation).
- Clés P-256 : Secure Enclave, non exportables par conception.
- Base de données propre à Tessera : clés publiques, empreintes, libellés,
  usage — jamais de matériel privé.

Pour toute l'histoire du durcissement, voir l'
[audit public de sécurité des clés privées](https://github.com/bambouville/tessera/blob/main/docs/private-key-security-audit.md).
