• @tal
    link
    English
    3
    edit-2
    3 months ago

    Well, as things stand, yeah, probably.

    So, in theory, you could have a Bluetooth device randomize its unique ID. The problem is that I believe that devices use that to identify devices that they’ve paired with, so you’d need to re-pair, as things stand.

    I don’t know if there’s a way to do Bluetooth without exposing a unique ID today. But I’d imagine that it’s possible to modify the protocol such that it’s possible.

    I think that there are two problems here (and this is without going and digging through the protocol specs, to see if anything else is exposed).

    The first is that a device type is exposed pre-authentication. That’s useful, since it lets people choose a device for initial pairing from a list of inscrutable IDs. Coupled with location, that’s likely to do a pretty good job of uniquely-identifying a number of devices. I don’t know whether that’s just done via a database based on OUI (MAC addresses get allocated across the world in “blocks” to manufacturers, so you can use this to identify devices; Ethernet devices can be identified in this way, as they also use MAC addresses) or whether the device additionally broadcasts information about what it is. But either way, that does a limited amount to expose identity on its own.

    The second is that the MAC, the unique identifier on each Bluetooth device, gets broadcast. That’s a problem.

    Laptops started randomizing the MAC on WiFi transmitters precisely because of this concern about privacy. But there are a hell of a lot more Bluetooth mobile devices out there than WiFi devices, making it even more of a privacy issue for Bluetooth. For WiFi, this isn’t an issue, because you don’t randomize the MAC on the wireless access point – which generally, aside from some cases like cars that are now an issue – but on the phone/laptop/etc side.

    One thing I suspect that might work is to randomize the MAC on Bluetooth devices – say, a pair of Bluetooth earbuds. At pairing time, have some kind of shared secret that is allocated on a device, shared with devices that pair. Then whenever the Bluetooth device broadcasts its presence, it sends out a number based on a hash of that secret and the current time, same sort of thing that time-based one-time-passwords do. A phone or laptop that has previously paired with a pair of earphones knows that secret, and can identify a device based on what the current TOTP for the device is. That’d prevent an arbitrary receiver just listening to broadcasts from uniquely-identifying the broadcasting device. It does mean that you’d need to deal with the issue of having an accurate clock on the device, and maybe re-synchronizing it periodically in some way.

    There are a couple of caveats there. One big one is that if you can pair to the device, you can get its secret, and from then on, you can uniquely identify to it…and if someone just runs around pairing with devices, they can harvest those. That’s harder, since typically Bluetooth devices don’t permit pairing with multiple things at once, but there are a lot of things that aren’t going to be paired at any point in time. Originally, I believe that Bluetooth devices tended to require authorization to pair on each end, would have some sort of shared secret that needed to travel via some other channel. For example, I have a Bluetooth keyboard. When I pair it with my phone, it requires me to type out a code provided on the phone screen on the keyboard. That avoids stuff like man-in-the-middle attacks, is really the ideal thing to do…but isn’t quite as user-friendly, and requires the device to have some form of input/output capabilities.

    Other devices devices required one to throw them into a “pairing” mode. I have some game controllers like that – they’ll only let a computer pair with them if I’ve held down the “Bluetooth pairing” button for a while. That’s not quite as good, as someone could theoretically attack them in that window, but for almost all of their life, they’re not in “pairing” mode. You can’t just travel around and pair with them.

    But a lot of devices don’t seem to do that now. Like, I have a couple pairs of Bluetooth earbuds. It’s not the case that either the phone or the earbuds give a number or anything like that and have you punch it in on the other end. They just permit anything that wants to to pair with them as long as they haven’t actually paired with the phone. That’s not great, and my guess is that for those devices, you could pair and harvest secrets and then track them the way you do existing Bluetooth devices.

    It’s actually kind of unfortunate, because it’s legitimately-useful to have things like Google Location Services. It permits obtaining a location fix rapidly, and permits doing so when GPS reception isn’t functioning, like indoors. And it helps improve location accuracy. Like, I’d be very happy if there were little, low-power radios that did broadcast unique IDs. The thing is, though, you don’t want to have them moving around with someone, because that introduces tracking problems. You want to have them only at fixed locations. In fact, one of the problems that the Google Location Services people had to solve would have been filtering out Bluetooth radios that did move around, because those mess with a phone’s location; if you’re trying to detect a smartphone’s location on the smartphone, you only want to know the strength of static, unmoving radios.

    It might be kind of nice if there were a radio protocol specifically for that, for doing nothing other than detecting location. I’d want a given device to permit regenerating its unique ID, so that you could move it. Maybe have the protocol permit broadcasting a location, so that you can bootstrap the database by initially trusting where devices say that they are. And maybe have the device also broadcast at different signal strengths periodically, less-frequently at high power, and indicating its broadcast power to receivers. Finally, it might be useful for ones with multiple receivers to do beamformed transmission and indicate to receivers the direction in which it is broadcasting. Hmm. If you mandated GPS, you could maybe just regenerate the ID automatically if the device thought that its position had dramatically changed, which would also defeat tracking attempts, even if someone moved a theoretically-static radio station. All that would be useful information to beat the existing WiFi/Bluetooth mechanisms for getting a better position fix. I mean, I’d put a small radio device like that at my place if it’d speed up location fixes for myself and other people.

    But that isn’t the situation in which we find ourselves.

    • @sugar_in_your_tea@sh.itjust.works
      link
      fedilink
      English
      13 months ago

      Bluetooth could probably use public key crypto, like the new passkey authentication websites are moving toward. Basically, you’d pair once (which gets you the public key), and then the broadcast “id” would change every time it turns on based on that internal private key.

      And yeah, I’m not a fan of devices broadcasting their type. That could make me a target for theft if someone scans for what devices I have. I haven’t read through the spec, but hopefully that info is only broadcast when pairing (and I’m fine with that since it’s opt-in).

      One big one is that if you can pair to the device, you can get its secret, and from then on, you can uniquely identify to it

      Not necessarily, they don’t need to be able to generate ids, just verify them.

      Even if it’s required for some reason, it could generate a new keypair every time you pair it, and Bluetooth devices could store some number of keys (say 3) for paired devices.

      It permits obtaining a location fix rapidly, and permits doing so when GPS reception isn’t functioning, like indoors.

      How often do you need that though? The only times I feel like I really need location are:

      • using a mapping service - need accuracy within a few meters - GPS is fine
      • looking for a lost item - I probably know where it is within a few meters (in my house, car, or workplace) - could use RFID and triangulate
      • looking for someone - a few meters or an address is fine - I can just call them, or they can go outside for better GPS signal
      • stolen item - I’m not going to go pick it up, and I doubt the police would either; insurance is a better option here

      So I really don’t see a reason why I’d need hyper-accurate location info.

      I generally disable location access in apps I use, I keep Bluetooth off unless I’m actively using a Bluetooth device, and I never get those tracking tags because I don’t want to be tracked. I haven’t had a problem where I wished I did things differently, so I’m honestly unsure what actual problem it’s solving, and the potential for abuse is way too high (e.g. more private data slurped up for advertising, like ads for a shop you recently visited).

      • @tal
        link
        English
        13 months ago

        but hopefully that info is only broadcast when pairing (and I’m fine with that since it’s opt-in).

        Even if it’s not, it’s gonna be at least roughly derivable from the OUI, given that it broadcasts the MAC address.

        That could make me a target for theft if someone scans for what devices I have.

        Yeah, that’s actually an insightful point that I hadn’t thought of.

        Especially if you throw a directional antenna on, can basically drive down a street mapping where all the valuable Bluetooth-enabled electronic devices are.

        How often do you need that though?

        I mean, I have benefited from it, though for most of what I do, the ability to reliably get a fix anywhere is the biggest draw, with rapid acquisition a second and the accuracy probably a third in terms of benefit. That doesn’t mean that I want the privacy tradeoffs that exist today, just that I’d like to be able to have something better than un-augmented GPS.

        • A GPS fix takes a while (like, can be tens of seconds) to acquire. If I’m driving and suddenly wonder whether I’ve missed my destination, sometimes I’ll want to check; I’d rather not wait 30 seconds for the mapping application to know where I am so that it can start routing.

        • Some places – cities with tall buildings are a particularly common and unfortunate example – can make it hard to get a GPS fix, and when that fix is acquired, the accuracy can be degraded by reflections.

        • I generally haven’t had a lot of luck with GPS fixes internal to offices last I tried. I mean, a lot of people do spend time in an office or a store, and the ability to just readily pull a smartphone out and access location is pretty handy. Another handy example is routing someone around an airport, even though they’re inside the terminal.

        • You just aren’t going to get a GPS fix at all some places, like underground. That’s less of an issue for me in particular, but I’d imagine that it’d be nice for someone who works in a basement level of an office or store to be able to use location data. Not common enough for me to worry, but when I’m driving through a tunnel, it’d be nice to still have navigation working.

        • Some applications, like augmented reality – and yeah, I know, we haven’t really had it take off, but I’d expect it to do so – really do legitimately-need fairly-accurate location data.

        • The more-accurate a fix – and the more software can rely on a fix being accurate – the better routing is. I’d like my navigation software to quickly know that I took the wrong offramp or the like.

        I keep Bluetooth off unless I’m actively using a Bluetooth device,

        That does require one to manually fiddle with it, but even aside from that, Bluetooth devices are really proliferating. Right now, within two feet of me, I’ve got a smart phone, tablet, laptop, and pair of earbuds that use Bluetooth. I mean, in a public area, if I pull out my phone and do a query for nearby devices, I see a lot of Bluetooth devices these days. I mean, it’s hard to even get a smartphone any more with a 1/8" TRS audio interface (though I guess one could plug in a USB-C adapter); it’s just kind of assumed that all users will use Bluetooth.

        • @sugar_in_your_tea@sh.itjust.works
          link
          fedilink
          English
          13 months ago

          can be tens of seconds

          Sure, if it’s off. But most phones already have a fix most of the time, so unless you’re coming out of a tunnel or something, it really shouldn’t be noticeable. At least, I haven’t noticed it.

          And you can still get a pretty good fix from a cell tower. I’d rather that connection be more private, but at least it’s between me and the service provider (and the cops I guess) and not some random person on the street. An attack on that would be far more sophisticated than a Bluetooth attack.

          cities with tall buildings

          Ah, I’m rarely downtown, so that’s probably why I haven’t run into it. But wouldn’t 5G triangulation largely solve this?

          As for indoors, what exactly do you need the fix for? Surely you know where you are, so you can enter that into your maps provider if the fix isn’t accurate. Seems like a big trade-off for a small inconvenience.

          And for airports, I just look at the map. They’re usually at every junction, so it only takes a few seconds to find where I need to go. Those maps are in the backs of airplane seats, so I just look it over while waiting to get off.

          augmented reality

          This seems pretty legitimate, but surely we can solve it with local AI (e.g. Google Pixel 8) instead of calling home. If I walk into a store and want a price for something, it should recognize the store I’m in and be able to recognize the product or whatever.

          I’d like my navigation software to quickly know that I took the wrong offramp or the like.

          Doesn’t it already? I get that even without Bluetooth enabled, so it’s only working off GPS and cell towers. And this is with a super crappy phone (2020 base Moto phone). I’ve never had a problem with a bad fix for driving directions.

          it’s hard to even get a smartphone any more with a 1/8" TRS audio interface

          Yeah, that annoys me to no end. I don’t care about losing the SD card slot, but I really like wearing corded headphones around the house since they sound so much better.

          I’m not some tech Luddite or anything, and I have my fair share of Bluetooth stuff (shokz headphones, keyboard, mouse, phone, 2 laptops, desktop, etc). I just don’t want my Bluetooth stuff tracked by anyone, especially not Google or Apple. In fact, the only reason I have an Android phone is because there’s no viable third option, and Android helps me feel more in-control (I have a firewall and have disabled most of the default apps). I’m getting a Pixel next to (ironically) get rid of most Google crap with a custom ROM (they’re really compatible with ROMs).

          All I want is my things to securely connect with my other things when in range, and that’s it.

          • @tal
            link
            English
            13 months ago

            But most phones already have a fix most of the time

            I can’t speak as to what everyone does, but normally on my phone, with Location Services off, normally that’s not the case. The GPS circuitry only gets powered up when I open an app that uses the location.

            And you can still get a pretty good fix from a cell tower.

            Ehh…I don’t know.

            I haven’t tried experimenting, but the range is pretty hefty on those. If you can see a given Bluetooth device at all, you have a pretty small area that you can be in. If you get a cell tower, maybe the signal is weak because you’re a long way away, or maybe it’s because there’s a reflection, and only part of the energy is coming back.

            A cell signal will put you in the right part of the world, but…

            Ah, I’m rarely downtown, so that’s probably why I haven’t run into it. But wouldn’t 5G triangulation largely solve this?

            As far as I know, cell phones have no information about the direction of cell towers that they can talk to. 5G towers might use beamforming, but as far as I know, any location information that they may derive about the phone from that are not available to the phone. The phone provider might log it themselves.

            I do recall watching a video of someone using a GNU Radio-based system, tracking down a radio station in a “fox hunt” using an antenna array on the top of their car. Basically, same thing in reverse. And based on the (limited) accuracy they got, I’m a little suspicious that the cell tower, even with beamforming data, isn’t gonna have anything like the kind of accuracy that GPS does, even outside.

            googles

            This might have been it.

            https://www.youtube.com/watch?v=OY16y1Rl86g

            indoors

            I personally generally deny access, but a number of websites now request one’s location to do things like provide nearby stores (e.g. look up an item, walmart.com will provide a list of nearby stores and the stock status of a given item). Being able to provide at least a general location is useful, which you can’t do without a GPS fix; the accuracy doesn’t have to be great for that, but you do have to be able to get it, and that’s not necessarily the case indoors.

            This seems pretty legitimate, but surely we can solve it with local AI (e.g. Google Pixel 8) instead of calling home. If I walk into a store and want a price for something, it should recognize the store I’m in and be able to recognize the product or whatever.

            Like, use the camera to identify the location? I mean, maybe. That’s a lot more passive processing that one is gonna have to do, if so. We aren’t there today. And the reduction in data would have to be pretty dramatic. If you want to do something like that locally, for just walking down a street, you’re talking about the Google Street View dataset. Are users gonna be expected to walk around with the camera recording and seed this thing?

            Doesn’t it already? I get that even without Bluetooth enabled, so it’s only working off GPS and cell towers. And this is with a super crappy phone (2020 base Moto phone). I’ve never had a problem with a bad fix for driving directions.

            I use OsmAnd, and it certainly tends to be sticky (I assume operating on the assumption that there may be error, and assumes that one is on the road that one previously was).

            All I want is my things to securely connect with my other things when in range, and that’s it.

            Yeah. I mean, I’m with you on that.

            • @sugar_in_your_tea@sh.itjust.works
              link
              fedilink
              English
              13 months ago

              cell phones have no information about the direction of cell towers that they can talk to

              That’s true of any radio, including Bluetooth, which is why triangulation is needed. It looks like 10 meters accurate should be feasible with 5G alone, which should be plenty for navigation purposes. Add GPS, and the article claims 1/10 meter precision. Maybe that’s a little worse in a city with large buildings, but it’ll probably be pretty close.

              a number of websites now request one’s location to do things like provide nearby stores

              Yeah, I just type in a nearby zip code or city, and it works fine.

              use the camera to identify the location?

              It could know what store you’re in, but not which particular branch of that store. As in, it would know you’re in a Bath and Body Works or whatever, but not the downtown mall outlet. That should cover most use cases, and the others could request temporary location access or present a list of possibilities. That way users know when they’re potentially being tracked.

              I don’t know why it would ever need to know your precise location, it should be able to be very helpful by just parsing the environment and data (e.g. email) you’ve granted it access to.

              Are users gonna be expected to walk around with the camera recording and seed this thing?

              Nah, just download it and cache it, and update it when home. Storage is cheap, I can get 1TB of NVMe storage in a tiny (M.2 2230) form factor for <$100. All OSM data is 100GB, so I highly doubt local storage would be an issue. The only limitations here are artificial (e.g. huge markups for phone storage now that SD storage is dead).

              So from my perspective, we can solve the limitations here fairly easily, it’s just Apple and Google trying to lock in customers. Maybe I’m missing something though, but avoiding most of that has gotten me pretty far.