<?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>Hide Characteristics values before Bound</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/19379/hide-characteristics-values-before-bound</link><description>Hello, 
 I am going my project with NRG51822 in SDK 11. I build a android app that can connect to my device and access vendor specific service. 
 My device dedicates one button for BLE connection, and it will trigger limited advertising on button pressed</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 03 Feb 2017 10:29:50 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/19379/hide-characteristics-values-before-bound" /><item><title>RE: Hide Characteristics values before Bound</title><link>https://devzone.nordicsemi.com/thread/75198?ContentTypeID=1</link><pubDate>Fri, 03 Feb 2017 10:29:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:aebd1c13-78b9-45c7-b03f-0db22b9e3554</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;If you have a display you could probably support LE secure connections and use numeric comparison for authentication. And if the peer doesn&amp;#39;t support LE fall back to using Legacy pairing with MITM/passkey. Or do what Roger Clark suggest.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Hide Characteristics values before Bound</title><link>https://devzone.nordicsemi.com/thread/75200?ContentTypeID=1</link><pubDate>Fri, 03 Feb 2017 04:07:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0eddde6d-3c94-4a0d-a9b1-656903ce441e</guid><dc:creator>Roger Clark</dc:creator><description>&lt;p&gt;You could use the NONCE method,  but there is problem with this on the nRF51, as the read protection hardware has a known bug, which can be exploited to read out any private keys that are in your firmware.&lt;/p&gt;
&lt;p&gt;So if you want anything to be secure you&amp;#39;d need to use the nRF52&lt;/p&gt;
&lt;p&gt;NFC is more secure but currently its not available on iOS as Apple don&amp;#39;t allow apps to use it
(Apple site security concerns about their Apple Pay system if they allow other Apps to use the NFC, but speculation is that this is a ploy to keep companies like PayPal etc from using the NFC, and reducing Apple Pay&amp;#39;s market share)&lt;/p&gt;
&lt;p&gt;So if you have to be secure, and multi platform, I&amp;#39;d suggest you go for nRF52 + public key encryption.
Especially if you do the key testing and generation on your server rather than your App and use SSL for all comms. (apps can be hacked to extract keys - e.g. on iOS JailBroken devices)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Hide Characteristics values before Bound</title><link>https://devzone.nordicsemi.com/thread/75199?ContentTypeID=1</link><pubDate>Fri, 03 Feb 2017 03:57:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8352e59f-0d92-413e-92b6-c0ba34cab72f</guid><dc:creator>code_hard</dc:creator><description>&lt;p&gt;Thank you Roger Clark and run_ar,&lt;/p&gt;
&lt;p&gt;You are right, I can&amp;#39;t not against MITM attack right now. so it means that I need using OOB procedure to pass key by LCD either change to nRF52 solution by NFC? It is a big design change, I not sure. I need to think about it.&lt;/p&gt;
&lt;p&gt;Thanks for your advice.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Hide Characteristics values before Bound</title><link>https://devzone.nordicsemi.com/thread/75195?ContentTypeID=1</link><pubDate>Thu, 02 Feb 2017 10:04:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:51285141-fba9-4abc-9bf8-8345ac2540e4</guid><dc:creator>Roger Clark</dc:creator><description>&lt;p&gt;There is a tutorial about secure paring using a NONCE and the RND, I think that may be a better way to handle your security.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Hide Characteristics values before Bound</title><link>https://devzone.nordicsemi.com/thread/75196?ContentTypeID=1</link><pubDate>Thu, 02 Feb 2017 09:48:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bbc1113f-0001-4b58-9825-47b82df826c3</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;@code_hard&lt;br /&gt;
Yes, that sounds about right. But not sure about 4. I guess you might also want to be able to reconnect to the previously known device. And as Roger Clark says you won&amp;#39;t know exactly which device is connecting to you when using just works, so you might want to consider using authentication (just works is unauthenticated).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Hide Characteristics values before Bound</title><link>https://devzone.nordicsemi.com/thread/75197?ContentTypeID=1</link><pubDate>Thu, 02 Feb 2017 04:55:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8e746f05-05cc-4a73-a9e2-931f494b47f8</guid><dc:creator>Roger Clark</dc:creator><description>&lt;p&gt;Do you want to hide a service or a Characteristic?&lt;/p&gt;
&lt;p&gt;They are not the same.&lt;/p&gt;
&lt;p&gt;Unless you are doing some sort of authenticated pairing, I&amp;#39;m not sure how this provides any more security.&lt;/p&gt;
&lt;p&gt;You initially said that your device will not advertise until the button is pressed, and hence nothing will be able to connect to the device prior to the button press as the Central device (e.g. Android phone), won&amp;#39;t know what to connect to as it will not have the mac address of the Peripheral device.&lt;/p&gt;
&lt;p&gt;When you press the button, you have to hope that your Android application detects the advertising before any other device which may be listening, otherwise the other device will connect first and go through the same process as your Android app and prevent your Android app from connecting.&lt;/p&gt;
&lt;p&gt;Because of the way BLE frequency hops, the Android app is not guaranteed to receive the first transmitted advertisement.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Hide Characteristics values before Bound</title><link>https://devzone.nordicsemi.com/thread/75194?ContentTypeID=1</link><pubDate>Thu, 02 Feb 2017 02:41:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:739c9700-de3c-417c-b5c4-6113f7615aab</guid><dc:creator>code_hard</dc:creator><description>&lt;p&gt;Dear run_ar,&lt;/p&gt;
&lt;p&gt;Thank you for reply, allow me to repeat your suggestion on list.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Android pair device with &amp;quot;Just Works&amp;quot;. Android perform service discover procedure and can not discover vendor service at that time.&lt;/li&gt;
&lt;li&gt;Android perform bond procedure successful, then device add vendor service and send SCCD indication to android.&lt;/li&gt;
&lt;li&gt;Android perform service discover procedure again and get updated service list. Now Android could manipulate vendor service.&lt;/li&gt;
&lt;li&gt;On Disconnected event occured, device reinitialize SoftDevice module and return to un-updated service and wait for next pair.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I don&amp;#39;t want to misunderstand what you mean.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;code_hard&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Hide Characteristics values before Bound</title><link>https://devzone.nordicsemi.com/thread/75193?ContentTypeID=1</link><pubDate>Wed, 01 Feb 2017 13:19:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2e5218ba-ca24-429d-a58a-34041bc16973</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;So the Android device will do service discovery and then bond if it receives an att error: insufficient authentication (unless the slave sends and SMP request prior to that). I suggest you add the vendor specific service after bonding and send a service changed indication to android to trigger a new service discovery (works as long as the android phone supports service changed indications). Note it&amp;#39;s possible to add services, but not remove them. That is you wil have to reinitialize the SD to remove services, but this should only take about 1 ms.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Hide Characteristics values before Bound</title><link>https://devzone.nordicsemi.com/thread/75192?ContentTypeID=1</link><pubDate>Wed, 01 Feb 2017 10:21:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bce8c3f8-ecbc-4d38-abfe-2e0b65080c9d</guid><dc:creator>Roger Clark</dc:creator><description>&lt;p&gt;Interesting question.&lt;/p&gt;
&lt;p&gt;AFIK. Characteristic(s) details are transferred after the connection has been made.&lt;/p&gt;
&lt;p&gt;The advertising packet just contains the service UUID number, and nothing about the characteristics.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>