fix: migrate PIN hashing from SHA-256 to Argon2id #54

Closed
opened 2026-04-09 01:55:38 +00:00 by maximus · 0 comments
Owner

Contexte

Vulnérabilité pré-existante identifiée lors de la review du spec-monetisation.
Le PIN hashing dans profile_commands.rs utilise SHA-256 salé (hash rapide). Un PIN de 4-6 chiffres avec SHA-256 est brute-forceable trivialement (~1M combinaisons).
Ref : CWE-916 (Use of Password Hash With Insufficient Computational Effort)

Tâches

  • Migrer hash_pin/verify_pin de SHA-256 vers Argon2id (le crate argon2 est déjà une dépendance via export_import_commands.rs)
  • Rester compatible avec les PINs existants : détecter l'ancien format (salt:hash) et re-hasher en Argon2id à la prochaine vérification réussie
  • Tests unitaires : ancien format reconnu, nouveau format utilisé pour les nouveaux PINs, migration transparente

Impact

Critique pour la sécurité locale, surtout avec l'ajout de tokens OAuth en Phase 2.

## Contexte Vulnérabilité pré-existante identifiée lors de la review du spec-monetisation. Le PIN hashing dans `profile_commands.rs` utilise SHA-256 salé (hash rapide). Un PIN de 4-6 chiffres avec SHA-256 est brute-forceable trivialement (~1M combinaisons). Ref : CWE-916 (Use of Password Hash With Insufficient Computational Effort) ## Tâches - [ ] Migrer `hash_pin`/`verify_pin` de SHA-256 vers Argon2id (le crate `argon2` est déjà une dépendance via export_import_commands.rs) - [ ] Rester compatible avec les PINs existants : détecter l'ancien format (`salt:hash`) et re-hasher en Argon2id à la prochaine vérification réussie - [ ] Tests unitaires : ancien format reconnu, nouveau format utilisé pour les nouveaux PINs, migration transparente ## Impact Critique pour la sécurité locale, surtout avec l'ajout de tokens OAuth en Phase 2.
maximus added this to the spec-monetisation milestone 2026-04-09 01:55:38 +00:00
maximus added the
status:ready
type:security
source:human
labels 2026-04-09 01:55:38 +00:00
maximus added
status:in-progress
and removed
status:ready
labels 2026-04-09 04:00:13 +00:00
maximus added
status:review
and removed
status:in-progress
labels 2026-04-09 04:03:15 +00:00
maximus added
status:needs-fix
and removed
status:review
labels 2026-04-09 05:00:35 +00:00
maximus added
status:in-progress
and removed
status:needs-fix
labels 2026-04-09 06:00:12 +00:00
maximus added
status:review
and removed
status:in-progress
labels 2026-04-09 06:05:21 +00:00
maximus added
status:needs-fix
and removed
status:review
labels 2026-04-09 09:02:31 +00:00
maximus added
status:in-progress
and removed
status:needs-fix
labels 2026-04-09 10:00:20 +00:00
maximus added
status:review
and removed
status:in-progress
labels 2026-04-09 10:02:39 +00:00
maximus added
status:needs-fix
and removed
status:review
labels 2026-04-09 11:01:00 +00:00
maximus added
status:in-progress
and removed
status:needs-fix
labels 2026-04-09 12:00:14 +00:00
maximus added
status:review
and removed
status:in-progress
labels 2026-04-09 12:01:23 +00:00
maximus added
status:approved
and removed
status:review
labels 2026-04-09 12:29:03 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#54
No description provided.