docs(android): the cache chain is verified on device
Write with no prompt, read under the device credential, cache surviving a cold start with no derivation, and a silent 304. Records the three traps that hid behind it, none of which the compiler could see. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+39
-1
@@ -57,7 +57,43 @@ retéléchargé, pas rester illisible. C'est l'autre branche de la même garde.
|
||||
|
||||
---
|
||||
|
||||
## 1 bis. La décision qui bloque le cache (constatée le 2026-08-15)
|
||||
## 1 bis. ~~La décision qui bloque le cache~~ — RÉSOLU le 2026-08-15
|
||||
|
||||
Mesuré sur appareil (schéma d'écran, aucune empreinte enrôlée) :
|
||||
|
||||
```
|
||||
cache ecrit - protege par biometrie/code (aucune invite à l'écriture)
|
||||
--- redémarrage à froid, saisie du schéma ---
|
||||
4 entrees, 2 en corbeille (aucune ligne « dechiffre en … ms »)
|
||||
HTTP 304 en 136 ms
|
||||
304 : inchange, coffre deja ouvert
|
||||
```
|
||||
|
||||
Les points §1.1, §1.2, §1.3 et §1.5 sont donc validés d'un coup : clé créée sous
|
||||
authentification, ouverture par schéma, cache survivant à un démarrage à froid
|
||||
sans dérivation, et rafraîchissement de fond silencieux.
|
||||
|
||||
**Trois pièges se cachaient derrière, aucun visible à la compilation** :
|
||||
|
||||
1. `USE_BIOMETRIC` absente de la liste par défaut de Delphi — et
|
||||
`CanAuthenticate` lève au lieu de répondre `False`.
|
||||
2. FMX n'affiche pas l'invite depuis notre activité : il lance
|
||||
`BiometricFragmentActivity`, qui doit être déclarée au manifeste.
|
||||
3. **Le digest du MGF1.** `setDigests()` n'autorise que celui du message ;
|
||||
celui du MGF1 est une autorisation distincte dont le défaut est SHA-1.
|
||||
Le chiffrement passait quand même — la clé publique reconstruite est servie
|
||||
par le fournisseur logiciel, qui accepte n'importe quel MGF1 — et produisait
|
||||
un chiffré valide que le matériel refusait de lire. Le symptôme
|
||||
n'apparaissait qu'au lancement suivant.
|
||||
|
||||
Ce qui reste de §1 : l'expiration de la fenêtre de 30 s (le cache doit
|
||||
survivre — il le fera, `LoadVault` n'efface plus jamais) et l'enrôlement d'une
|
||||
nouvelle empreinte, qui invalide la clé pour de bon.
|
||||
|
||||
<details>
|
||||
<summary>Le diagnostic d'origine, conservé pour la trace</summary>
|
||||
|
||||
## La décision qui bloquait le cache
|
||||
|
||||
Le cache ne s'écrit presque jamais. Journal sur appareil :
|
||||
|
||||
@@ -94,6 +130,8 @@ jamais.
|
||||
Retenir la 1. Les deux autres échangent une propriété de sécurité contre du
|
||||
confort, ce qui est le mauvais sens pour un gestionnaire de mots de passe.
|
||||
|
||||
</details>
|
||||
|
||||
## 2. Durcissement — petit, à faire avant tout usage réel
|
||||
|
||||
Par ordre de gravité, pas de taille.
|
||||
|
||||
Reference in New Issue
Block a user