This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

irk as the only security perimeter

Hello, Nordic!

In our entertainment project, nrf51 based devices exclusively utilizes either central or periph. role. All of them are headless (body mounted markers, etc). The environment is hostile (in the sense, that some cheater could spoof device address, advertising it as valid periph.) Besides, we don't need a connection at all, and wish to relay upon pre-shared set of IRKs, belonging to peripherals. What we need is just RSSI and some extra info in advert.

Is it right case to use private addresses for? If so, which API does sdk provide to hash/rehash the address in central and how IRK is being set in peripheral?

I tend to use S130 and if it is redudant for scenario explained, I'd appreciated an advice.

Stan

Parents
  • Hi Stan,

    It's possible to distribute the IRKs in advance and use the IRK to generate Random resolvable private address on each of the advertiser. It's supported by our softdevices (S110, S120, S130), please have a look in the description of the sd_ble_gap_address_set() function to know how you can tell the softdevice to use Random resolvable address, when to generate new one. And to the sd_ble_opt_set() ( and ble_gap_opt_t ->ble_gap_opt_privacy_t) to know how to set the IRK.

    I just want to know how you would deal with the attacker that can spoof the device address ? Even if you use resolvable random address and can change it periodically, the attacker can still simply copy the new address and spoof it when you update your address.

    Some little more on the security requirement and the implementation of your application would give better understanding.

  • Hi Stan,

    You can apply a white list when doing scanning. It's inside ble_gap_scan_params_t when calling sd_ble_gap_scan_start.

    But we don't support too many IRKs in the whitelist at a time, max 8 I believe. The stack will handle the resolving and only advertising packet from advertiser with correct IRK will be notify to the application. If you want more you may need to handle the address solving in the application.

    What you described may work. My only concern is that it only work if all packets are received correctly to the scanner. If the attacker jam the signal, and then use the old address(es) (that the scanner couldn't receive) and advertise with modified data, then you may have a trouble.

    What about keeping the address fixed, but encrypting your advertising data instead of the address ?

Reply
  • Hi Stan,

    You can apply a white list when doing scanning. It's inside ble_gap_scan_params_t when calling sd_ble_gap_scan_start.

    But we don't support too many IRKs in the whitelist at a time, max 8 I believe. The stack will handle the resolving and only advertising packet from advertiser with correct IRK will be notify to the application. If you want more you may need to handle the address solving in the application.

    What you described may work. My only concern is that it only work if all packets are received correctly to the scanner. If the attacker jam the signal, and then use the old address(es) (that the scanner couldn't receive) and advertise with modified data, then you may have a trouble.

    What about keeping the address fixed, but encrypting your advertising data instead of the address ?

Children
No Data
Related