v0.5.2-pre.003
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/V0_5_2_KS_WALLET_RESTRUCTURING_PLAN.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 6 -->
|
||||
|
||||
# Plan `0.5.2` — restructuration de `ks-wallet`
|
||||
|
||||
@@ -132,9 +132,19 @@ Le format binaire devra au minimum permettre d'identifier sans ambiguïté :
|
||||
- le payload protégé ;
|
||||
- les informations d'intégrité/authentification nécessaires.
|
||||
|
||||
La disposition exacte des champs, l'algorithme AEAD, le KDF, les tailles de nonce/sel et leurs paramètres ne sont **pas** décidés dans `pre.001`. Ils doivent être choisis après vérification des versions réellement résolues des dépendances et des exigences de sécurité.
|
||||
`pre.003` ferme cette décision technique pour le format v1 après vérification des dépendances et des références cryptographiques :
|
||||
|
||||
`argon2`, `chacha20poly1305` et `zeroize` existent déjà dans les dépendances du workspace, mais leur présence ne suffit pas à fixer le contrat.
|
||||
- KDF : Argon2id version 19 ;
|
||||
- profil d'écriture par défaut : 64 MiB, 3 passes, 4 lanes, sel 16 octets, sortie 32 octets ;
|
||||
- AEAD : XChaCha20-Poly1305, clé 32 octets, nonce 24 octets, tag 16 octets ;
|
||||
- header fixe : 72 octets little-endian avant l'alias ;
|
||||
- plaintext v1 : exactement les 64 octets du keypair Solana ;
|
||||
- ciphertext v1 : exactement 80 octets avec le tag AEAD ;
|
||||
- taille totale v1 : 193 à 256 octets selon la longueur de l'alias ;
|
||||
- paramètres KDF acceptés : mémoire 64 à 256 MiB, 3 à 10 passes, 1 à 8 lanes, avec les relations Argon2 de mémoire validées ;
|
||||
- données authentifiées réservées pour `pre.004` : header complet + alias + sel + nonce.
|
||||
|
||||
Le layout normatif exact est documenté dans `docs/NATIVE_FORMAT.md`. `pre.003` décode et valide strictement ces champs pour le scan mais n'encode encore aucun vrai wallet persistant et n'effectue aucune dérivation de clé ni aucun chiffrement réel avec un mot de passe ; la création/écriture reste strictement dans `pre.004`.
|
||||
|
||||
## 4. Caractérisation du legacy actuel
|
||||
|
||||
@@ -480,15 +490,21 @@ Le découpage reste borné mais peut être ajusté si une tranche devient trop l
|
||||
|
||||
Le préambule d'identification introduit ici ne définit pas encore le payload protégé : le codec complet, les bornes du conteneur, KDF et AEAD restent dans `pre.003`.
|
||||
|
||||
### `0.5.2-pre.003` — codec et stockage `.kswallet`
|
||||
### `0.5.2-pre.003` — format et décodage `.kswallet`
|
||||
|
||||
- spécification binaire versionnée ;
|
||||
- sélection et justification KDF/AEAD ;
|
||||
- encode/decode stricts ;
|
||||
- bornes de taille ;
|
||||
- permissions ;
|
||||
- écriture atomique ;
|
||||
- tests corruption/version/atomicité.
|
||||
- [x] spécification binaire v1 documentée dans `docs/NATIVE_FORMAT.md` ;
|
||||
- [x] Argon2id v19 + XChaCha20-Poly1305 retenus et identifiés explicitement dans le header ;
|
||||
- [x] profil KDF par défaut 64 MiB / 3 passes / 4 lanes et bornes anti-DoS ;
|
||||
- [x] décodage/validation stricts avec rejet des versions, flags, algorithmes, réserves et longueurs inconnus ;
|
||||
- [x] plaintext keypair v1 fixé à 64 octets, ciphertext/tag à 80 octets et fichier total à 193..256 octets ;
|
||||
- [x] lecture bornée avant allocation et détection d'une croissance concurrente ;
|
||||
- [x] alias du header vérifié contre le nom `<alias>.kswallet` ;
|
||||
- [x] `WalletFileHandle` enrichi de la pubkey déclarée et de la version sans exposer le chemin ;
|
||||
- [x] validation des permissions privées à la lecture ;
|
||||
- [ ] encodage de création et publication atomique/no-clobber — `pre.004` ;
|
||||
- [x] tests du wire v1, truncation, trailing bytes, KDF hors bornes, alias mismatch et réouverture bornée.
|
||||
|
||||
Aucune vraie keypair n'est encore chiffrée par cette tranche : le password, la dérivation Argon2id, l'appel AEAD et la capacité de signature ouverte restent `pre.004`.
|
||||
|
||||
### `0.5.2-pre.004` — password et cycle de vie persistant
|
||||
|
||||
@@ -587,7 +603,7 @@ Le plan est désormais centré sur les décisions suivantes :
|
||||
14. le format keypair JSON des binaires Solana est obligatoire en import et en export dans `0.5.2` ;
|
||||
15. une matrice officielle des formats Phantom/Solflare/Backpack/Trust/Coinbase-Base et autres cibles pertinentes sera finalisée avant les adaptateurs ;
|
||||
16. un seul adaptateur wallet tiers est implémenté dans `0.5.2` comme exemple, les autres formats faisables étant reportés au TODO sans version déterminée ;
|
||||
17. les détails KDF/AEAD et le modèle runtime d'un wallet ouvert seront décidés dans leurs tranches techniques, après tests et vérification des dépendances ;
|
||||
17. le format v1 utilise Argon2id v19 et XChaCha20-Poly1305 selon `docs/NATIVE_FORMAT.md`, tandis que le modèle runtime d’un wallet ouvert reste à fermer en `pre.004` ;
|
||||
18. le scan automatique reste limité au répertoire configuré, tandis qu'un consommateur peut fournir explicitement un autre chemin `.kswallet` à `ks-wallet` sans modifier le store ni enregistrer ce fichier automatiquement.
|
||||
|
||||
Ces décisions ont permis d'ouvrir `0.5.2-pre.002`.
|
||||
|
||||
Reference in New Issue
Block a user