<?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>Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/1942/security-feature-in-bluetooth-protocol-of-nrf-8001</link><description>Hi 
 I have a module of nrf 8001 and i am successfully communicating with nrf 8001 low energy bluetooth chip. I want to know is there any security feature defined in the protocol of this chip. As i want that whenever a user wants to connect to peripheral</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 31 Mar 2014 11:24:41 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/1942/security-feature-in-bluetooth-protocol-of-nrf-8001" /><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8344?ContentTypeID=1</link><pubDate>Mon, 31 Mar 2014 11:24:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:25d4cbaf-ed3c-44c1-9a41-20bcd9a1ec5f</guid><dc:creator>Saurabh Gulia</dc:creator><description>&lt;p&gt;Thanks Star Destroyer&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8338?ContentTypeID=1</link><pubDate>Mon, 31 Mar 2014 09:57:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1c67e036-3fcc-41e5-86cf-734ff036f971</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;For your application, I&amp;#39;d recommend you to use bonding. Once your device is initially bonded with a Central, you&amp;#39;ll receive the Bond Status Event. After this, on each reconnection to this Central, encryption will automatically started, and once it&amp;#39;s finished you&amp;#39;ll get the Pipe Status Event. I&amp;#39;d therefore recommend you to use a timeout on receiving this event after connecting, and disconnect manually, from the nRF8001 side, if you don&amp;#39;t get this event within a couple of seconds after connection. You can do a disconnect with the Disconnect command, as is explained below.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8343?ContentTypeID=1</link><pubDate>Sat, 29 Mar 2014 07:52:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1d1a85d8-b2d9-4bfe-8cf9-f35c7666a248</guid><dc:creator>David Edwin</dc:creator><description>&lt;p&gt;This is correct , If your unique ID is the address of the peripheral, the CBPeripheral suggestion is ok. CBperipheral can be a standin for the the address itself that is is not exposed to the app when it receives  advertising packets.
You would still need to check that (random static) addresses are all unique if your app absolutely requires them to be unique across all produced devices. However this is not a problem unless you are using the device address for traceability.&lt;/p&gt;
&lt;p&gt;However if you choose to have any other method of unique numbers you would need to store the uniqueness in the app in the first time connection.&lt;/p&gt;
&lt;p&gt;If you choose to use encryption using the ble_proximity_template it would detect the correct iPhone as soon as the link is encrypted, the ACI Pipe Status Event is used to detect this. This encryption is the first step the iPhone does after a connection when the phone has a bond with the device i.e. ACI Connected Event.&lt;/p&gt;
&lt;p&gt;So if you do not want other no other phones to connect, your data is secured as the ACI pipes will never become available until the link is encrypted, so you cannot send/recieve any data on a non-encrypted connection.&lt;/p&gt;
&lt;p&gt;You run a timer for a few seconds (less then 5s) that starts on receipt of ACI Connected Event so if the ACI Pipe in ACI Pipe Status Event does not become available before the timer exipres, you treat the phone as not the correct phone and send an ACI Disconnect (lib_aci_disconnect). Do this only on the connections after the device and phone have been bonded. I.e. connections after ACI Bond Status (Success) has been received.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8337?ContentTypeID=1</link><pubDate>Fri, 28 Mar 2014 19:56:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:29966cc7-ea38-47c2-876e-fecb0dd55d0d</guid><dc:creator>Saurabh Gulia</dc:creator><description>&lt;p&gt;Hi Ole&lt;/p&gt;
&lt;p&gt;Actually the problem is bigger that this.. i can save the peripheral and will always connect with that particular peripheral only.. but suppose if some third party app comes(hacker) then it can also scan my module through its own particular iPhone application and then connect with my module if mine iPhone is not connected at that time.And this can be easily done by any third party iPhone app.&lt;/p&gt;
&lt;p&gt;I am thinking about this particular case,thats why i was asking how to check in nRF 8001 Arduino sdk side that which iPhone is authentic and which is not?&lt;/p&gt;
&lt;p&gt;Can you tell me how to disconnect the connection from nRF 8001 side like in iPhone i call -cancelPeripheralConnection function and the connection b/w the iPhone and nRF 8001 is disconnected. If i can disconnect the connection b/w the above two from nRF 8001 SDK side then i can solve this problem through some logics. Can you tell how to do this or which function should i call from nRF 8001 side that can disconnects the connection?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8342?ContentTypeID=1</link><pubDate>Fri, 28 Mar 2014 16:53:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:39a3bf94-e9cc-4c72-940a-57b5e837bcdd</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;This is not actually needed. See my comment above.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8336?ContentTypeID=1</link><pubDate>Fri, 28 Mar 2014 16:53:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3418023a-cc45-482d-9bad-96610519759b</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;What you want is easiest to achieve by using a whitelist, but this is unfortunately not possible on the nRF8001. However, if another device than the one you&amp;#39;re bonded with connects, you will pretty quickly see a disconnect event with a specific error code.&lt;/p&gt;
&lt;p&gt;Also, you don&amp;#39;t have to use a unique id in the advertisement or name to achieve this. On the iOS side you can store the CBPeripheral, and then just issue a connect to this instead of doing a scan and connecting to any other device.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8341?ContentTypeID=1</link><pubDate>Fri, 28 Mar 2014 16:35:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9bfe9b3f-4ec1-4b42-8d72-fa098666630d</guid><dc:creator>David Edwin</dc:creator><description>&lt;p&gt;I guess this &lt;a href="https://devzone.nordicsemi.com/index.php/any-other-way-to-create-services-nd-characteristic-uuid-except-nrfgo-studio#reply-6332"&gt;question and its answer is related&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In short do not connect to the device until you are sure that this is the specific device you want to connect to. Identify the specific device by placing the &lt;a href="https://devzone.nordicsemi.com/index.php/any-other-way-to-create-services-and-characteristic-uuid-except-nrfgo-studio#reply-6118"&gt;unique number as stated in this discussion in the advertising/scan response&lt;/a&gt;.
Use a one time setup in the app to identify the unique device it wants to connect to using RSSI. Use the unique number of the device to identify the device for all subsequent connections by storing the unique number in the app.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8340?ContentTypeID=1</link><pubDate>Fri, 28 Mar 2014 12:08:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f66392dc-4b43-4948-b5f7-1bff04d9a581</guid><dc:creator>Saurabh Gulia</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;ble_proximity_template is not solving my problem. How can i check in nRF 8001 sdk for Arduino that this is the valid iPhone to which i have to connect? Can i send any string to peripheral before connecting it to central device(iPhone).&lt;/p&gt;
&lt;p&gt;What actually happening is that my module is advertising well and successfully interacting data with iPhone but my module gets connected to every iPhone which has my app. Now this is creating a big problem, i want my module to connect with only one iPhone in all possible cases? How can i achieve this? what i can program in nRF 8001 sdk for Arduino that it will check whether to connect with iPhone or not?
Any help is appreciated?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8339?ContentTypeID=1</link><pubDate>Mon, 24 Mar 2014 16:21:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:338906d8-fda9-46dc-adb3-8d618c4a4301</guid><dc:creator>David Edwin</dc:creator><description>&lt;p&gt;In the nRFgo studio XML file for the nRF8001, you can specify that you want to use a passkey.
nRFgo studio -&amp;gt; nRF8001 configuration -&amp;gt; Security -&amp;gt; Device Security -&amp;gt; Security Required
nRFgo studio -&amp;gt; nRF8001 configuration -&amp;gt; Security -&amp;gt; Required level of Security -&amp;gt; Authenticated (passkey)&lt;/p&gt;
&lt;p&gt;Passkey means that you need either a display or a keyboard on the nRF8001 side.
If you do not have a keyboard or display on the nRF8001 side, you should choose unauthenticated (Just Works) security.
nRFgo studio -&amp;gt; nRF8001 configuration -&amp;gt; Security -&amp;gt; Required level of Security -&amp;gt; unauthenticated (Just Works)&lt;/p&gt;
&lt;p&gt;This will allow the iPhone to pair with the nRF8001. Use the ble_proximity_template in the BLE SDK for Arduino to start with as an example.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8335?ContentTypeID=1</link><pubDate>Mon, 24 Mar 2014 07:58:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8058b1bb-0027-4b33-aa48-37862c945f7c</guid><dc:creator>Saurabh Gulia</dc:creator><description>&lt;p&gt;Actually what i want is that my module should only connect with one iPhone in every case. Suppose if any other iphone wants to connect with my peripheral(module) then it should not connect that iPhone or any other central device. How can i achieve this? How can check within nRF 8001 SDK that this is the authorised iPhone to which i can connect?&lt;/p&gt;
&lt;p&gt;I have read in pdf that you gave to me, but i can&amp;#39;t understand it fully. Can you just tell how can i address the above problem?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8333?ContentTypeID=1</link><pubDate>Fri, 21 Mar 2014 13:15:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6a70878c-9640-4616-8fd5-0a85bc0dae86</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;Sorry, I meant in the Bluetooth Core Specification. You can find that here: &lt;a target="_blank" href="https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=229737" rel="nofollow"&gt;https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=229737&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8334?ContentTypeID=1</link><pubDate>Fri, 21 Mar 2014 12:58:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:31dd3112-7e0f-424f-849b-c62435ed92b8</guid><dc:creator>Saurabh Gulia</dc:creator><description>&lt;p&gt;What volume 3, Part H, section 2.3.5.1 to see?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Security feature in Bluetooth Protocol of nrf 8001</title><link>https://devzone.nordicsemi.com/thread/8332?ContentTypeID=1</link><pubDate>Thu, 20 Mar 2014 15:57:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:00f1c986-d2bf-43d1-9647-df3d3b6dc3ae</guid><dc:creator>Ole Morten</dc:creator><description>&lt;p&gt;You can use a passkey with the nRF8001, as defined by the Core Specification. To do this, you must make sure to set the I/O capabilities to either have a Display or a Keyboard in nRFgo Studio, and then make sure that your application responds to the DisplayKeyEvent or the KeyRequestEvent.&lt;/p&gt;
&lt;p&gt;You can take a look at the &lt;a href="https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=229737"&gt;Core Specification&lt;/a&gt;, Volume 3, Part H, section 2.3.5.1 to see what kind of authentication method is used, based on the I/O capabilities of the devices bonding.&lt;/p&gt;
&lt;p&gt;Beware that even when using a passkey, it&amp;#39;s trivial for an eavesdropper listening in on the bonding to pick up the data of the packets. However, any eavesdropper that does not listen in on the bonding process will not be able to read data later, no matter if a passkey is used or not. A passkey only protects against active man-in-the-middle attacks.&lt;/p&gt;
&lt;p&gt;Edit: Clarify in which specification.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>