Skip to content

docs(bible) : WP-D.1, conception du chemin par BLE pour la revue G4 - #251

Merged
Medboy224 merged 2 commits into
mainfrom
docs/ble-design
Nov 2, 2026
Merged

Medboy224 merged 2 commits into
mainfrom
docs/ble-design

Conversation

@Medboy224

Copy link
Copy Markdown
Owner

À fusionner après #250 (la sonde BLE, sur laquelle cette branche s'appuie).

Lot WP-D.1 du plan J6d : la conception du chemin par BLE, écrite dans la bible et prête pour la revue G4. Pas de code : il vient en WP-D.2 (cœur) et WP-D.3 (plateformes).

Ce que dit la conception (bible §6.6)

BLE ne sert qu'à mettre deux appareils sur un même réseau. L'un crée le réseau, l'autre en reçoit le nom et le mot de passe, chiffrés, et le rejoint. La session s'ouvre ensuite en TLS sur ce réseau, avec les règles habituelles. Aucune cryptographie nouvelle : CPace (déjà dans pkg/pake), HMAC-SHA-256, HKDF-SHA-256 et AES-256-GCM de la bibliothèque standard de Go.

  • Annonce : l'UUID du service, rien d'autre (seul possible sous Windows, d'après la sonde).
  • Reconnaissance : un défi frais, et en réponse 16 étiquettes, toujours 16 et dans un ordre aléatoire. Un appareil de confiance s'y reconnaît ; un inconnu ne voit que des valeurs aléatoires, et ne peut même pas compter les appareils de confiance.
  • Appareil de confiance mutuelle : clés tirées par HKDF de la clé de la paire (DISC-11) et des deux défis. Un message enregistré ne peut pas être rejoué.
  • Appareil inconnu : CPace avec le PIN, sans TLS. Le sid est fait des deux nonces (brouillon §10.9), et la clé tirée de l'ISK chiffre le réseau. Un seul PIN, un seul compteur d'essais, partagés avec le PIN sur TLS : la borne de 18 essais ne change pas. Sur le Wi-Fi, la connexion TLS épingle ensuite les empreintes authentifiées par BLE (pair_ble).
  • Qui crée le réseau : celui qui peut le créer à 5 GHz, sinon à 2,4 GHz ; à égalité, l'appareil touché. Seul circule un réseau créé par medXfer, au mot de passe tiré à chaque démarrage, jamais le Wi-Fi de l'utilisateur.
  • Jamais en clair sur BLE : une empreinte, un alias, un nom, un mot de passe.

Exigences BLE-01 à BLE-12. La bible gagne aussi :

  • l'adversaire A7, à portée radio hors du réseau (§2) ;
  • CHAN-04 complétée ;
  • les secrets interdits dans les journaux (§13) ;
  • 7 tests de sécurité (§14.1) ;
  • les sources (annexe B), dont ce qui n'a pas été revérifié en ligne.

Trois écarts avec le plan

  • Les empreintes ne sont pas dans le CI, contrairement au PIN sur TLS. Il aurait fallu les envoyer en clair avant l'échange, et une empreinte ne change jamais : n'importe qui à portée radio aurait pu suivre un appareil d'un lieu à l'autre en lui demandant un PIN. Elles passent chiffrées juste après la confirmation.
  • Le code de pays ne circule pas : chaque côté dit seulement les bandes qu'il peut créer et rejoindre.
  • D6, proposée : la demande d'un inconnu s'affiche avec le PIN et « Refuser », sans « Accepter » à part. Taper le bon PIN vaut accord, puisque seul celui qui voit l'écran le connaît. Aucun réseau n'est créé avant la vérification du PIN.

Dossier G4

  • §3.7 : le chemin par BLE ;
  • A7 dans le modèle de menace ;
  • un nouvel usage de l'ISK, la seule modification de pkg/pake à venir ;
  • questions 12 à 17 : empreintes hors du CI, séparation des clés, pas de confidentialité persistante sur le chemin de confiance (X25519 ?), nonce compté, suivi par BLE, demande de PIN par radio.

🤖 Generated with Claude Code

Medboy224 and others added 2 commits November 2, 2026 13:50
La sonde du plan J6d, avec les API des systèmes : BleProbe.kt (Android,
commandes ble-… par adb, versions de débogage seulement) et
scripts/ble-probe (Windows, C++/WinRT). Les résultats sont dans le plan :

- les deux rôles à la fois partout où il y a BLE ; Zorin n'en a pas
  (Bluetooth 2.1) ;
- un PC Windows ne peut porter que l'UUID dans son annonce connectable :
  la reconnaissance passera par un échange GATT (décision D2) ;
- en mode caché, Windows n'annonce ni le nom du PC ni d'adresse stable ;
- 200 octets en un envoi, 0,4 à 2 s par échange une fois le premier passé.

Les permissions Bluetooth sont ajoutées au manifeste. Une version de
débogage s'installe désormais à côté de la version normale
(dev.medxfer.app.debug) : signée d'une autre clé, elle ne pouvait la
remplacer qu'en la supprimant, avec l'identité et les appareils de
confiance du téléphone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bible §6.6 : annonce sans identifiant, reconnaissance par défi et 16
étiquettes, chemin de confiance par la clé de la paire, CPace sans TLS
pour un inconnu (sid fait des deux nonces, empreintes chiffrées après la
confirmation), un seul PIN et un seul compteur, épinglage sur le Wi-Fi.
Exigences BLE-01 à BLE-12, adversaire A7, tests de sécurité, sources.

Dossier G4 : §3.7 et questions 12 à 17. Plan J6d : WP-D.1 fait, D6 proposée.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Medboy224
Medboy224 merged commit 6ce6532 into main Nov 2, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant