200 lines
4.5 KiB
Markdown
200 lines
4.5 KiB
Markdown
<!-- 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é.
|