<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/10772/irk-as-the-only-security-perimeter</link><description>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</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Sat, 12 Dec 2015 14:19:44 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/10772/irk-as-the-only-security-perimeter" /><item><title>RE: irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/thread/40260?ContentTypeID=1</link><pubDate>Sat, 12 Dec 2015 14:19:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ae19a4c5-ce94-4eb1-ba46-543820c2369d</guid><dc:creator>Stanislav Silnitskiy</dc:creator><description>&lt;p&gt;Is it possible to distinguish which IRK the address from recent received adv. packet belongs to?
For the scenario, there are a several IRKs in use be infrastructure of beacons?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/thread/40259?ContentTypeID=1</link><pubDate>Fri, 11 Dec 2015 12:12:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:844f8271-67b5-41a4-9527-72fdc6db7a68</guid><dc:creator>Stanislav Silnitskiy</dc:creator><description>&lt;p&gt;Hi Hung, do I understand right, that IRK infrastructure implemented at hardware level?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/thread/40258?ContentTypeID=1</link><pubDate>Fri, 11 Dec 2015 12:03:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b75ee0a0-2869-4d06-b56d-45c7f39258a8</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stan,
Yes, it&amp;#39;s possible to use the IRK as the whitelist for the scanner (with the limit of 8 IRK at a time as mentioned).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/thread/40257?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 16:44:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:09b2ffe4-420e-4c36-80fc-276c715621d1</guid><dc:creator>Stanislav Silnitskiy</dc:creator><description>&lt;p&gt;OK! thank you very much for opposing my ideas, I will consider it in implementation!
Indeed, the answer for initial question (is using IRK fits proposed scenario?) has to be negative, I suppose.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/thread/40256?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 16:20:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f2a4906c-0464-4687-87c4-44dd69b93e22</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stan,&lt;/p&gt;
&lt;p&gt;You can apply a white list when doing scanning. It&amp;#39;s inside ble_gap_scan_params_t when calling sd_ble_gap_scan_start.&lt;/p&gt;
&lt;p&gt;But we don&amp;#39;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.&lt;/p&gt;
&lt;p&gt;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&amp;#39;t receive) and advertise with modified data, then you may have a trouble.&lt;/p&gt;
&lt;p&gt;What about keeping the address fixed, but encrypting your advertising data instead of the address ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/thread/40255?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 13:41:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5bbed3bd-006e-47db-adca-060e8a605cdb</guid><dc:creator>Stanislav Silnitskiy</dc:creator><description>&lt;p&gt;...
So, from client&amp;#39;s point of view, it will receive broadcasts with incremental &amp;quot;random&amp;quot; part and will keep track of expired addresses pretty straightforward.
Every 1000th address periph. takes the next IRK from available (and pre-shared with clients) list and generates next 1000 addresses using a new IRK.
The client sees, that &amp;quot;random&amp;quot; part of address has reached 1000 and expires previously used IRK.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/thread/40254?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 13:34:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b73a8115-a855-49bb-9ff7-b98fb082feaa</guid><dc:creator>Stanislav Silnitskiy</dc:creator><description>&lt;p&gt;Yes, I understand that I need to extract the address from received advert. packet. I mean how to check this address?&lt;/p&gt;
&lt;p&gt;As for spoofing I see the following infrastructure:&lt;/p&gt;
&lt;p&gt;Each peripheral has an array of IRKs, those shared with all clients (centrals).
All IRKs are uniq across all perihps.
When periph. starts advertising, it generates next address (the hash, as per spec.) from its first IRK and 0x1 in place of random part, so the broadcasted address has a form (24bit hash) || (0x1). The next address will be generated with 0x2 as a random part and so on...
The new address will be generated for every Nth second of operation or, if not a performance issue, for every advert. packet.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/thread/40253?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 13:14:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:679fb767-7c11-494a-a464-30cf076f278a</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;@Stan: No, you can get the device address when you receive the advertising packet (BLE_GAP_EVT_ADV_REPORT event) . It&amp;#39;s in peer_addr in ble_gap_evt_adv_report_t struct.&lt;/p&gt;
&lt;p&gt;I still don&amp;#39;t know how you can avoid address spoofing with the IRK. Note that 2 devices with same address can still advertise at the same time without causing interference.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/thread/40252?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 12:33:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4942e99a-c7e8-4a05-819d-b52f884ac222</guid><dc:creator>Stanislav Silnitskiy</dc:creator><description>&lt;p&gt;right question! I think to replace a random salt by incremental space, keeping track of lastly used address on central device. As soon as the solution is intended to be used limited time (2-3 hours session), it may work... I realize, that this decreases the security, though.&lt;/p&gt;
&lt;p&gt;Again, to balance drawback of above, an array of per-peripherial IRK could be used, those changed every 1000 address or so...&lt;/p&gt;
&lt;p&gt;Do I understand it right, that to check received address in central, I will use consequent calls of sd_ble_gap_address_set and sd_ble_gap_address_get for every pre-shared IPK?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: irk as the only security perimeter</title><link>https://devzone.nordicsemi.com/thread/40251?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 10:33:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4db920f9-679f-4713-b76d-3e48769038be</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stan,&lt;/p&gt;
&lt;p&gt;It&amp;#39;s possible to distribute the IRKs in advance and use the IRK to generate Random resolvable private address on each of the advertiser. It&amp;#39;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 -&amp;gt;ble_gap_opt_privacy_t) to know how to set the IRK.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Some little more on the security requirement and the implementation of your application would give better understanding.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>