v0.2.4-pre.009-fix.001

This commit is contained in:
2026-08-18 23:26:17 +02:00
parent e6772c109d
commit 804b92b957
2 changed files with 671 additions and 180 deletions

View File

@@ -0,0 +1,199 @@
<!-- file: deltas/0.2.4/pre.009-fix.001.md -->
<!-- version: 1 -->
# Delta `0.2.4-pre.009-fix.001` — enrichissement du prompt `0.2.5` Wallet
## Type
Fix **documentation-only**.
Aucun changement Rust, Cargo, runtime, test, fixture HTTP ou contrat `0.2.4` n'est introduit.
Le `workspace.package.version` reste :
```text
0.2.4-pre.9
```
Le delta historique :
```text
deltas/0.2.4/pre.009.md
```
reste inchangé.
## Motif
Après validation de la candidate `0.2.4-pre.009`, le brainstorming préparatoire à `0.2.5 — Wallet foundation` a précisé des exigences importantes qui doivent être présentes dans le prompt de reprise avant l'ouverture de la nouvelle release.
Le prompt précédent couvrait déjà :
```text
audit crypto actuel
KDF / AEAD / CSPRNG
format versionné
persistence atomique
secret memory handling
signature
import/export
```
mais ne formalisait pas encore suffisamment :
```text
interopérabilité externe obligatoire du .kspwallet
threat model de bruteforce offline
absence de secret KSP/pepper propriétaire nécessaire à la récupération
Pubkey/alias/notes invisibles wallet verrouillé
alias interne indépendant du filename
notes protégées
sémantique exacte du format_version
paramètres KDF sérialisés
distinction éventuelle format_version / payload_version
deux capacités indépendantes VIEW / OWNER
architecture key slots / key wrapping
rotation indépendante des passwords sans changement de keypair
OWNER capable de recréer VIEW sans ancien password VIEW
question du read-only cryptographique de VIEW
test vectors publics pour implémentations externes
```
## Prompt mis à jour
`prompts/010-V0_2_5_START_PROMPT.md` passe :
```text
version 1 -> version 2
```
### Interopérabilité
Le `.kspwallet` doit être complètement spécifiable en dehors de `ksp-wallet-lib`.
La sécurité ne doit pas dépendre :
```text
du secret du format
d'un pepper global KSP
d'une donnée cachée dans le binaire
```
Une future spécification `KSPWALLET_V1` et des vecteurs de test publics doivent permettre l'écriture d'un déchiffreur compatible externe.
### Threat model
Le prompt impose désormais l'audit explicite de l'attaque offline :
```text
copie du fichier
-> essais de passwords sans serveur/rate-limit
-> KDF coûteux mais password faible toujours attaquable
```
et sépare les garanties apportées par :
```text
crypto du fichier
capabilities/types KSP
filesystem
éventuelle ancre de confiance externe
```
### Metadata protégée
Sans VIEW ou OWNER, le fichier ne doit pas exposer par défaut :
```text
Pubkey
alias
notes
```
L'alias reste indépendant du filename.
Les notes sont des metadata protégées, lisibles par VIEW/OWNER et administrables par OWNER.
### Versionnement
`format_version` est explicitement défini comme une version du **format**, non comme un compteur d'éditions.
Il ne change pas pour :
```text
rotation password
modification alias
modification notes
réécriture atomique sans changement de format
```
Un éventuel `payload_version` doit être séparé uniquement si le schéma protégé nécessite réellement une évolution indépendante.
### Capacités VIEW / OWNER
Le modèle cible devient :
```text
VIEW:
lire Pubkey/alias/notes
OWNER:
tout VIEW
signer
modifier alias/notes
gérer VIEW
changer OWNER
```
Invariants :
```text
VIEW et OWNER indépendants
OWNER ne dépend jamais de VIEW
VIEW compromis != secret Solana compromis
VIEW compromis != OWNER compromis
OWNER peut recréer/supprimer VIEW sans ancien VIEW password
rotation VIEW/OWNER != changement de keypair
```
Le prompt demande d'étudier une architecture de :
```text
content keys
key wrapping
key slots indépendants
```
plutôt qu'un double chiffrement naïf.
### Read-only de VIEW
L'API KSP doit obligatoirement rendre VIEW read-only.
Le gate `pre.001` doit aussi décider si V1 renforce cette propriété cryptographiquement contre un détenteur VIEW malveillant.
La préférence est de viser cette propriété si elle reste propre, interopérable et raisonnablement simple, avec une autorité metadata OWNER distincte de la keypair Solana sauf justification contraire.
Le prompt conserve explicitement la limite suivante :
```text
aucune information de confiance stockée uniquement dans le fichier
ne peut empêcher un attaquant ayant accès en écriture
de remplacer entièrement ce fichier par un autre fichier valide
```
## Fichiers
Modifié :
```text
prompts/010-V0_2_5_START_PROMPT.md
```
Ajouté :
```text
deltas/0.2.4/pre.009-fix.001.md
```
Aucun autre fichier n'est modifié.