Reputation: 1058
I'm looking into an iPhone Application that uses iBeacon to show a distance in an App, however I don't want other users in the area to see the iBeacon or its RSSI. Only the iPhone that has been connected by the user. It needs to be secure and show the RSSI only to the specific iPhone. Can this be achieved?
Could I make it so the RSSI could suddenly give sporadic RSSI readings to others around, but the App that the user connected to the iBeacon, understand this and display the real value?
If another user running the App was to go past the iBeacon with the same UUID and Major and Minor Value configuration, would the App connect?
Upvotes: 0
Views: 171
Reputation: 1545
I'm looking into an iPhone Application that uses iBeacon to show a distance in an App
Let's set aside the issue of whether this is going to work the way you're hoping, but understand that distance estimation using iBeacon is quite approximate. See Understanding ibeacon distancing for some background.
I don't want other users in the area to see the iBeacon or its RSSI.
On the face of it, that's not possible: the iBeacon protocol defines a completely public advertising packet. All a beacon does is transmit this packet 10 times per second. Anyone can listen for it.
However, I note that you're developing for iOS. iOS doesn't expose every beacon in range at the application level. That is, using iOS, you can't do anything analogous to Wi-Fi "wardriving" and just vacuum up any beacons you get near. The application needs to provide iOS a "region" it's listening for (where a region consists of a UUID, UUID+major or UUID+major+minor parts to an identifier). So conceivably, and, again, limited to iOS, you might limit a specific user to a beacon's specific UUID, at which point it's as "secure" as you think UUIDs are guessable. (Further, if someone uses a non-iOS device to sniff your iBeacon identifiers, it's game over anyway. Unless you use a vendor-specific solution like Estimote's Secure UUID.)
Could I make it so the RSSI could suddenly give sporadic RSSI readings to others around, but the App that the user connected to the iBeacon, understand this and display the real value?
I can't imagine how you would do this.
If another user running the App was to go past the iBeacon with the same UUID and Major and Minor Value configuration, would the App connect?
Remember, there's no connection going on. Just a beacon advertising, and devices listening. In general, yes, if you know all parts of the identifier like that, you can get iOS to monitor the region that beacon creates, and range that beacon.
Upvotes: 1
Reputation: 151
iBeacon technology is not great at distance calculations, there are some threads on here about using a network of beacons along with mapping technology to get some kind of x and y estimations.
For secure, you can have a look at a more open solution such as http://altbeacon.org/ which you can bake your security protocols into yourself.
Upvotes: 0