Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Communiquer en BLE: Les pièges à éviter !

Communiquer en BLE: Les pièges à éviter !

Slides de notre Tools in Action sur Bluetooth Low Energy et Andoid à Devoxx France 2016.

Alexis DUQUE

April 20, 2016
Tweet

More Decks by Alexis DUQUE

Other Decks in Programming

Transcript

  1. #DevoxxFR #TIA_BLE @Rtone_Dev2M Communiquer en BLE : Les pièges à

    éviter ! Alexis Duque @alexis0duque Fabien Grenier @fabgrenier @Rtone_Dev2M 1
  2. #DevoxxFR #TIA_BLE @Rtone_Dev2M Qui sommes nous ? 2 Responsable de

    l’équipe Cloud&Mobile Développeur Java/Web full stack “Le handball c’est la vie.” Fabien GRENIER @fabgrenier RTONE Alexis DUQUE @alexis0duque RTONE Tech lead soft embarqué (vrai) Développeur full stack “Nan, la course à pied c’est mieux.”
  3. #DevoxxFR #TIA_BLE @Rtone_Dev2M Qui sommes nous ? 3 Just Dev

    It ! Fondé en 2007 par 3 ingénieurs Expert en conception d’objets connectés 3 équipes hard, soft embarqué et Cloud&Mobile Projets B2C et B2B De la Startup aux grands groupes Accompagnement complet du CdC à l’industrialisation
  4. #DevoxxFR #TIA_BLE @Rtone_Dev2M Roadmap 4 • Bluetooth Low Energy ?

    • Quelles différences avec le Bluetooth ? • Pourquoi tant de difficultés ? • Le BLE en Actions !
  5. #DevoxxFR #TIA_BLE @Rtone_Dev2M Bluetooth Low Energy 5 2010 : Bluetooth

    Core Specification v4.0 for low power device Mais ne remplace pas le Bluetooth : à ne pas mettre à toutes les sauces !
  6. #DevoxxFR #TIA_BLE @Rtone_Dev2M Spécificités Faible bande passante : ~50 kbps

    Faible latence (~10ms) et protocole “non connecté” Chip radio presque toujours OFF Très petits paquets : MTU de 20 octets
  7. #DevoxxFR #TIA_BLE @Rtone_Dev2M Vocabulaire Connection Interval Supervision Timeout Slave Latency

    Advertising Interval
  8. #DevoxxFR #TIA_BLE @Rtone_Dev2M Vocabulaire Master Client Centrale Scanner Initiateur

  9. #DevoxxFR #TIA_BLE @Rtone_Dev2M Vocabulaire Slave Périphérique Advertiser GATT Serveur

  10. #DevoxxFR #TIA_BLE @Rtone_Dev2M Parler à son objet 10 Valeur Client

    Read Request Server
  11. #DevoxxFR #TIA_BLE @Rtone_Dev2M Parler à son objet 11 Client Write

    Request Server Confirmation Client Write Command Server
  12. #DevoxxFR #TIA_BLE @Rtone_Dev2M Parler à son objet 12 Client Indication

    Server Confirmation Client Notification Server
  13. #DevoxxFR #TIA_BLE @Rtone_Dev2M Un problème 13

  14. #DevoxxFR #TIA_BLE @Rtone_Dev2M Un problème http://opensignal. com/reports/2015/08/android- fragmentation/ http://opensignal.com/reports/2015/08/android-fragmentation/ 14

  15. #DevoxxFR #TIA_BLE @Rtone_Dev2M 15

  16. #DevoxxFR #TIA_BLE @Rtone_Dev2M Les outils 16

  17. #DevoxxFR #TIA_BLE @Rtone_Dev2M Des Applications nRF Master Control Panel LightBlue

    17
  18. #DevoxxFR #TIA_BLE @Rtone_Dev2M Sniffer BLE Ubertooth TI CC2540 USB 18

  19. #DevoxxFR #TIA_BLE @Rtone_Dev2M Protocole Analyzer 19

  20. #DevoxxFR #TIA_BLE @Rtone_Dev2M BTSnoop HCI Log Wireshark 2.0 open-bluedroid-log.sh 20

  21. #DevoxxFR #TIA_BLE @Rtone_Dev2M 21

  22. #DevoxxFR #TIA_BLE @Rtone_Dev2M Avant de commencer, des rappels ... Scanner

    les périphériques à portée Se connecter utilisant l'adresse MAC ou l’UUID Explorer les services et caractéristiques disponibles Sauvegarder les handles, pour les réutiliser ! Ecrire, Lire ou s’abonner aux notifications Ne pas oublier de (bien) se déconnecter 22
  23. #DevoxxFR #TIA_BLE @Rtone_Dev2M Live Demo

  24. #DevoxxFR #TIA_BLE @Rtone_Dev2M Step 1 : Permissions android.permission.BLUETOOTH android.permission.BLUETOOTH_ADMIN android.permission.ACCESS_COARSE_LOCATION

    android.permission.ACCESS_FINE_LOCATION 24 android.permission.BLUETOOTH android.permission.BLUETOOTH_ADMIN
  25. #DevoxxFR #TIA_BLE @Rtone_Dev2M Step 2 : Découverte des périphériques 25

  26. #DevoxxFR #TIA_BLE @Rtone_Dev2M Step 3 : Connexion 26

  27. #DevoxxFR #TIA_BLE @Rtone_Dev2M Step 4 : Inspecter les services 27

    Battery Service 0000180F HRM Service 0000180D Battery Characterstic 00002A19 HRM Characterstic 00002A37 Sensor Characterstic N N R R W R W
  28. #DevoxxFR #TIA_BLE @Rtone_Dev2M Step 5 : Lecture / Ecriture /

    Notif. 28
  29. #DevoxxFR #TIA_BLE @Rtone_Dev2M Step 6 : Déconnexion 29

  30. #DevoxxFR #TIA_BLE @Rtone_Dev2M Step 7 : Bonding, Chiffrement, MITM 30

  31. None
  32. #DevoxxFR #TIA_BLE @Rtone_Dev2M A suivre ... Bluetooth 4.2 • Bande

    passante x2.5 • Sécurité renforcée • Retrocompatibilité Android N Web Bluetooth API & Physical Web 32
  33. #DevoxxFR #TIA_BLE @Rtone_Dev2M Les derniers tips ... Utiliser un Nexus

    pour le développement puis tester sur un maximum de marque Éviter tant que possible le bonding et chiffrement protocolaire, préférer un chiffrement applicatif cf . https://lacklustre.net/bluetooth/Ryan_Bluetooth_Low_Energy_USENIX_WOOT.pdf 33
  34. #DevoxxFR #TIA_BLE @Rtone_Dev2M Questions ? Alexis Duque - [email protected] Fabien

    Grenier - [email protected] www.rtone.fr https://github.com/alexisduque/tia-ble-devoxx16.git
  35. #DevoxxFR #TIA_BLE @Rtone_Dev2M Venez voir notre Quickie sur le VLC

    ! Des LEDs pour remplacer votre routeur WIFI ? Par Alexis Duque Vendredi 12:25 - 12:40 Salle Neuilly 253