android - Bluetooth Low Energy encryption and data safety -


i need send sensitive data on bluetooth low energy (ble) data connection between smartphone (ios & android) , embedded device (cc2540 chip).

since don't consider app-code on phones safe hacking, need rely on ble safety encrypted package delivered server device once , once (i must assume second attempt deliver package, must attacker).

i have been browsing net few days now, find out if data safe, , under conditions. unfortunately haven't been able come simple answer questions.

  1. is data safe if pair phone device? - suppose so, though understand pairing process flawed, theoretically possible man-in-the-middle (mitm) sniff encryption keys during pairing process , compromise connection.

  2. i need each device paired several phones (but communicating 1 @ time). what's maximum number of pairings pr. device? - unfortunately need pair rather large number of phones device(s).

  3. can perhaps pairing data (long term keys etc.) device , store on external memory, increase limit.

  4. can make safe data connection device without pairing, or maybe re-pairing when need so? - how safe procedure regards mitm attacks?

i can't seem find documents answer these questions unambiguously. ideas or pointers welcome.

here's 2 cents:

  1. afaik, ble pairing/encryption process not flawed. there 3 levels of mitm protection available encryption:

    • none, uses known key == 0, if eavesdropper catches packets in pairing process, can follow encrypted connection.
    • low mitm protection, when use user input pass key pairing, key < 1.000.000. here eavesdropper need try million keys.
    • high mitm protection, using out-of-band key. give full 128-bit strength encryption, , eavesdropper need know key follow conversation if catching whole pairing process. there no key-exchange method in ble (yet, @ least), weakest point here key distribution, same problem when having additional layer of encryption @ application level.
  2. this implementation dependant. device doesn't have bond, i.e. establish permanent relationship host. if devices don't bond, there no state telling earlier connections (other exchanged data, application domain, not ble stack). if devices not bonded, have pair again next time connect exchange protected data. if devices bonded, encrypted connection can continued without app/user interaction, same security level earlier. one-time-connect devices, bonding doesn't make sense, can have stateless implementation no restrictions on number of connected devices. multiple-times-connect, have stateless implementation, depending on how distribute/store key(s) independent of ble. availability of different options here depends on device/ble stack implementation using, though, spec allows this.

  3. if bond , exchange long term keys etc, these can, dependent on ble implementation you're building on, stored like.

  4. as said under 2., can establish secure (encrypted) connection without bonding. devices need pair again next time want establish secure connection. if don't want to/aren't able pair reason, can have plaintext communication.


Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -