This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

the usage of an IRK for the default setting and how to change an IRK each bonding cycle.

Hello,

Please let me check about the usage of an IRK for the default setting and how to change an IRK each bonding cycle.

We use the resolvable address for our application, and I've met an issue like the following scenario:

  1. Connect and bond the nRF device with peer A.
  2. Delete the bonding information of peer A on the nRF device.
  3. Connect and bond the nRF device with peer B.
  4. Connect the nRF device to peer A for re-bonding.
    1. At this timing, peer A acts as if it has already known the nRF device because nRF's IRK does not change. (the nRF advertises with the resolvable address for peer B, but peer A can also resolve it because IRK is the same as the last session.) So, peer A uses cached handle IDs for GATT protocols, which causes problems on the connection.

Questions which I would like to ask you are:

1. I think the soft device does not change the IRK for all time as a default. Is it correct?
2. Is it possible to renew an IRK bonding cycle?
3. Can you see any problems if we implement to change IRK for this solution?  Perhaps, I've just misunderstood privacy features.

If I could get any advice from you, it would be much appreciated.

Thanks,
Daisuke

Parents
  • Hello Einar,

    Let me ask the additional questions related with sd_ble_gap_privacy_set() function, please.

    i. sd_ble_gap_privacy_set() and sd_ble_gap_privacy_get() function does not use the flash memory, does they? (When the nRF device turns off, The IRK is gone.) Is it correct?
    ii. Do we need to store the IRK which is generated by nrf_crypto_rng() to the flash memory by our selves? What is the assumed implementation with sd_ble_gap_privacy_set() ?

    Thanks,
    Daisuke

Reply
  • Hello Einar,

    Let me ask the additional questions related with sd_ble_gap_privacy_set() function, please.

    i. sd_ble_gap_privacy_set() and sd_ble_gap_privacy_get() function does not use the flash memory, does they? (When the nRF device turns off, The IRK is gone.) Is it correct?
    ii. Do we need to store the IRK which is generated by nrf_crypto_rng() to the flash memory by our selves? What is the assumed implementation with sd_ble_gap_privacy_set() ?

    Thanks,
    Daisuke

Children
No Data
Related