30 comments

[ 3.2 ms ] story [ 77.7 ms ] thread
That's true. But I think a big reason this story is newsworthy is because the author connects it to what might be a much broader threat:

The scientists who conducted the experiment — done with permission of the yacht’s owners — say their ability to broadcast counterfeit GPS signals that triggered no alarms within the ship’s navigation system highlights a serious flaw in transportation networks on land and sea. Some 90 percent of the world’s freight moves by sea.

Except that the "bad guys" had to put serious effort/money into acquiring a stolen private key to do that.
Even with the mil spec transmissions (which by my understanding have un-broken encryption) you could theoretically somehow block 100% data to a receiver, and forward data with timings you want. So long as you are controlling all of the information you don't need to truly understand the cypher text, you are just interfering with the latency.

However this is based on what I can remember from 12 years ago, before I'd had any formal electronics/signals education so I might have some massive miss-conceptions.

> using GPS alone

Yes, I'm sure that pilots routinely ignore the altimeter, air speed indicator, climb rate indicator, compass ....

GPS is useful, but no competent pilot ignores all of the other sensors and uses GPS alone.

Have you seen the "Homemade GPS Receiver" project?[1]

I imagine it'd be a whole lot easier if you already have gear to receive and sample the RF side, but still an interesting challenge.

Don't forget to implement CoCom restrictions :)

[1] http://www.holmea.demon.co.uk/GPS/Main.htm

Yeah that project is right at, or perhaps very slightly beyond, my abilities at this time. Which is what makes it such a good project!

My favorite part of this implementation is it shows the cutting edge of modern FPGA development style, where you have soft cores and smart peripherals and the boundary is extremely fluid and blurry between them. Is that in the softcore or "discrete" logic in the FPGA? Well it depends which version of the bitstream you load into the FPGA... In the future this is how all microcontroller and video card and motherboard and such development will be done... you want a different ratio of shaders to anti-aliasing tech, or a new "hardware" supported codec, well just upload a different bitstream... May as well get used to the future of hardware development now rather than waiting.

Speaking of OMEGA, there's a Navy training film from 1969 on Youtube[1] which explains some of the theory and is helpful in understanding where GPS came from.

[1] https://www.youtube.com/watch?v=7mFAemn1pSw

Wow, that is a really elegant, quite low-tech way of positioning!
So.. if you can squirt out that C/A stream from your python code at 1.023 megabits/sec all you really are asking for is a COTS BPSK modulator (minicircuits ZFAS-2000?) and a COTS L1 signal around 1.5 GHz to drive the mod.

I have built N5AC microwave synth kits and I did not find it hard, but I've been doing this stuff since the 80s, so... I believe you can buy a COTS ApolLO-I board for your L1 signal. I donno if 1575.50 would be close enough. The smaller the .. forget the name but it boils down to the "tuning step" ... the worse the phase noise. So generating an exact 1575.42 will have MUCH ickier phase noise possibly impacting the PSK data itself. So is it better to have a noisy signal or be somewhat off frequency? I donno. COTS it'll probably have the VFO tuned to be "ideal" for ham radio guys around 1152 MHz but you'll want it a little higher, which it can do with a different smd 0204 sized inductor, but its going to take some soldering not just literally COTS.

There's more than one way to skin a cat and there's certainly a zillion ways to generate a stable-ish microwave signal. For that matter a BPSK mod is not exactly exotic material, but if there's a containerized COTS model for $65 its hard to find the motivation to hack up my own. Maybe you could trade time for money and build one out of 10 cents of junk parts, but it'll take time and gear to align and tune just right.

Note signal levels... You probably can't feed any ole LO directly into any ole modulator and expect the power levels to magically match up. And the levels the mod wants are probably not the levels of "whatever" your P/N code generator is outputing.

Do testing in a shielded cage to avoid an unfortunate appearance on the TV news.

Don't forget that you've just built a C/A generator but without a nav code (at like all of 50 bps, so slow even an arduino could do it...) all you're going to do is confuse the heck out of a RX.... I think... Which might be interesting to watch all in itself. The wikipedia article is hilarious because its kinda disinfo. As if you need to wander around asking weird questions like where to buy a "modulo 2 adder"... umm hint thats a pretty basic logic gate but if you can't figure that out, well... as if an actual devoted adversary would be slowed down by kinda intentionally weird terminology.

I think a harder problem that generating "a" more or less valid C/A stream and "a" more or less valid nav message, is generating them with actual reasonable real world data to simulate being over 15 km altitude or whatever, and them scale it up to do at least 4 of those signals at once.

Probably an interesting noob-level RX countermeasure would be you need at least 4 to get a fix, so lazy people are just going to generate 4, probably in idea geometry with weird unlikely visibility (like the four you hear are all over the sky but just bad luck you can't see another eight, yeah right) Another one would be watching signal strengths, which will vary "twinkle like stars" for real satellites but lazy synthesizers will not vary. Finally unless you go GPSDO (OH the IRONY) synth route, the homemade clocks the RX hears will probably be driftier than the real satellites.

Wow, awesome post! I like COTS but I also like soldering and being cheap. =)

I think my main confusion is how do I add the 4 channels together before I spit the signal out to the RF side? If they are all in phase, would it weird out the receiver because you're not going to see that in the real world? Would I have to have 4 output levels corresponding to how many channels are outputting a high level (1) during that chip/clock cycle? If them being in phase freaks out the receiver, maybe I could output the signal at 4.092 MHz and phase shift each channel by 1/4 chip/clock cycle? I was CompE so my RF/signal skills are almost zilch. =)

Good point about the cage, with the crazy low power of GPS signals, it is probably a lot easier to cause interference than with other signals.

And yes, "modulo 2 adder" is a bit verbose! =P

They're not going to be in phase. Note that if phase relationship is important, at those frequencies cable length being identical is rather important. But its not relevant to this problem.

One big confusion in the electrical world is people use the same noun for audio "mixers" which are as linear as possible, and RF "mixers" which are as non-linear as possible. They do different things. linear mixers you could say superimpose signals without changing them. Much like pumping up the gain on a CD should not distort the sound on a mic at a "DJ" mixer. nonlinear mixers add and subtract signal frequencies from each other and what came in shouldn't come out at all. in fact a BPSK mod is a kind of balanced mixer, with peculiar TTL compatible (or 3.3v or whatever) levels of course.

You want a 4-port combiner. Most passives have a reciprocal path, a 4-port splitter usually makes a decent 4-port combiner. Think of the gadget that probably splits you cable TV signal in your house. They're electrically and mechanically simple. And relatively cheap. Also they are somewhat lossy. Good luck passively splitting a signal 4 ways with less than 6 dB of loss. And something is warming the resistors in there, so its going to be worse. Conversely yes you combine multiple signals there will be internal loss but the aggregate output will be higher. This is kind of the whole point of a class B or class AB amplifier... what if you took two perfectly good signals, 180 degrees out of phase, and (sorta) mixed them (using baluns), well you get very near twice the power out. Think of putting the whole works in a calorimeter... 4 zero dBm sources will heat it up just as fast combined or separate.

Aviation GPS "around 1.5 GHz" works pretty well despite being feet/inches away from a couple watt radar transponder around 1090 MHz or whatever it is exactly for ADS-B. Physically zorching it sounds unlikely. Distortion to the point of un demod ability is however possible. If you generate enough signal to overload it, attenuators are cheap. High power is expensive. If you're screwing around at "workbench range" you're not going to pay $XXX to generate multiple watts of power so you're not going to need multiple watt rated attenuators to reduce the sig level to something reasonable. Cost scales WAY beyond quadratically, like exponential at microwave freqs for a given tech type. Stuff working around a hundredth of a watt aka 10 dBm is going to be very cheap compared to stuff rated for old fashioned weather radars at kilowatts.

My suggestion is make what amounts to exactly one working satellite. Then make three more.

I don't think you can feed all four digital signals into the same BPSK mod by doing weird things with the clock rate, modulation does not work that way.

What you're building is vaguely reminiscent of a cable TV headend. Both in block diagram and actual wiring. Of course its been a long time since BPSK was cutting edge in CATV. If you think of BPSK as no amplitude modulation and either 180 or 0 degree phase modulation depending on 0 or 1 being input, well, a 256QAM signal is just 16 equally spaced levels of amplitude modulation and 16 equally spaced levels of phase modulation, sorta kinda a grown up cousin of the BPSK modulation in GPS signals. And 256QAM is sort of cutting edge for CATV. Anyway you could do worse than looking at a wiring diagram of a CATV headend WRT mods and digital sources and combiners and such.

Find your local ham radio VHF/UHF microwave club / community. Don't bother with the 160meter low band guys (well, not for this particular individual project, I mean) By the time you're done you'll know quite a bit about RF and might gain a new interesting hobby. Reading several "microwave handbook/project" ham radio books at the library would probably be as good a place to start as any. You could do worse than some chapters of the ARRL handbook to start.

Ana...

Is this symmetric or asymmetric? Seems the keys would only be sensitive if it's the former, given that there (AFAIK) isn't much difference in accuracy between the encrypted and civilian signals anymore. Although, given the very old hardware in the GPS sattelites maybe asymmetric would require too much processing power.
Okay folks, "just do it manually" is not a solution. This is technology designed to make doing it manually obsolete. We're trying to design systems that can eventually run without human interaction, so saying a solution to this problem is to have a human just do it isn't viable and doesn't make sense and is fairly obvious, to boot.

The story here is that we thought we had designed a system which can do this without human interaction, and now/whenever it was discovered we're realizing we're not done yet. That this can be done by a person with a compass and a map is not a comment worth the text it's written with.

Thats a terrible system design, because all single points of failure eventually fail. Curl up and die is not a valid response to failure. The only valid solution always must end with "do it manually", that can never be removed. Doesn't matter if its a plane, ship, refinery/chem plant, or reactor control rod.

People who don't know much about GPS think the satellites are eternally autonomous but that is not the case. There are precisely two uplink control points on the planet which control them. Both in the USA as I recall.

Another interesting problem is lifetime mismatch. It would be foolish to create a system which depends on and could outlive the current GPS constellation.

Also being in the USA we tend to assume the fedgov is on our side and our side is everyone's side, but the rest of the world has found out the hard way many times over to never assume that is or will always be the case. So absolute best case is you should never deploy a worldwide system with a SPOF controlled by a foreign power.

"The story here is that we thought we had designed a system which can do this without human interaction"

No it was designed for humans (mostly US soldiers) to geolocate themselves, so they could help orient themselves on paper maps. This whole idea of pasting a navigation system, or even worse, an autonomous navigation system, on top is a good example of feature creep resulting in systemic failure.

You probably could design a redundant, tough, reliable, world wide (or at least, wide range) autonomous navigation system. It would not look anything like GPS. It would probably look a heck of a lot like a weird cross between the VOR system and authenticated LORAN. It would take a lot longer than a HN post to nail it down exactly, but I'm sure that whatever it optimized down to, it wouldn't resemble GPS very closely. In the grand tradition of all copier machines being called Xerox machines, I'm sure that whatever this successor system is called, the general unwashed masses will continue to call it a "GPS" to the immense confusion of people who actually know what they're talking about.

A planetary scale authenticated mostly decentralized web of trust mesh network of millions of stationary beacons and mobile inertial navigation systems with computational countermeasures to fight intentional bad actors? Probably providing global internet access via the mesh while you're at it, because it's there?

Just because something is complicated doesn't mean we can't automate it. That's the "curl up and die" solution that you yourself say is not an acceptable response to failure.

And GPS isn't what I was talking about, the automatic navigation system on the $80 million yacht was the system we designed which we thought could be run without human interaction.

And your paranoid delusion that the US can/would use its GPS satellites offensively is just that - paranoid delusion.

I am wearing paper bag for the rest of the day. Not enough caffeine in the morning.
True, it could be. If they went to the trouble to integrate the two and develop the solution. But that begs the question: why use GPS? Use the same map information with the non-GPS location calculations that could be automated. GPS is just too convenient...
GPS is convenient, but it has other advantages as well. It's almost always available, it's highly accurate, has a quick time-to-fix, etc.

Inertial navigation systems require finicky setup and drift over time. (Ask the passengers of KAL 007 about that one.) However, the setup can easily be automated using GPS inputs, and the drift can also be corrected that way. This way, you have two systems which help keep tabs on each other. The INS can't be spoofed, and so can tell you when your GPS goes out of whack. The GPS won't drift, and so can keep your INS up to date when it's not being spoofed. Cost aside, two systems are better than one.

You don't need to fake it. You just need to know the location of the satellites and delay the signals appropriately.
You can hijack it, but there are monitoring systems in place to detect if something is out of place. Also, ATC will usually notice flight path deviations quite quickly, at least on manned airports with radar coverage.
On the topic of not being aware of the "spoofability" of GPS, it is interesting to note that many of the older Inertial Navigation Systems (GPS + IMU) use GPS to check against the accelerometers and gyroscopes in the IMU. Effectively, they would throw out the results from the internal dead-reckoning system if it didn't agree with GPS, instead of the other way around!

I guess it has more to do with the fact that unless you have a great Kalmann filter design, your IMU will likely drift off course rather rapidly, whereas GPS spoofing wasn't as easy or as popular as it is today (and I would say it really isn't that popular outside of major areas today, as it stands). Either way, you're right, the GPS coordinates should definitely be checked against the internal dead-reckoning. However, then you have to ask yourself how you know the internal dead-reckoning is still on course. It's a tricky problem, and hopefully the solution doesn't just tend towards "add more sensors."

EDIT: changed an "isn't" to "wasn't"

In such a system, what's the point of having the IMU at all? Is it just for the case when GPS becomes completely unavailable?

If I were designing such a system (and I'm sure I've overlooked about a million subtleties), I imagine I would make it so that the GPS corrects the IMU for small perturbations that lie roughly within the IMU's predicted error budget, and that the IMU causes the GPS to be ignored if the GPS coordinates suddenly diverge greatly.

In other words, the IMU is going to be saying something like, "our position is X, to within 5km". If the GPS disagrees with X by 1km or perhaps even 10km, correct the IMU's current state using the GPS. If the GPS disagrees with X by 100km, ignore the GPS until it gets its act together.

Seems like a decent first pass, at least.

The difference between the boat and a cell phone is that the boat is automatically steering a course based on the GPS. It's also relevant that it's a boat because the open ocean provides 2-dimensional movement without obstacles.

Let's say a captain enters a course to stay 500nm offshore of a pirate-infested coast (btw, after Somalia, West Africa is now a pirate hotspot[1]). By interfering with the GPS, the ship could be turned imperceptibly towards shore, and after a day be within range of pirate boats. The GPS display on the electronic charts would still show the intended course, because the GPS thinks it's on the right track. And without any land for reference, the captain or crew might not notice. If GPS is the sole position-finder, the fake coordinates would also endanger the reliability of ship-to-ship collision detection such as AIS[2].

With a cell phone or any consumer device, the user has to constantly read the GPS output and then react to it based on the roads or other physical landmarks. You couldn't just "steer" a person to the wrong place by making the GPS believe it's in a different location. And then I can't think of any other "exploit" that you could do with the GPS on a phone.

As mentioned elsewhere in this thread, the solution to the boat navigation problem is to have alternate sources of position info (Loran, GLONASS, etc.). Alternatively, the error introduced by the fake GPS could also be detected by weather info. Any deviation from the dead-reckoning course (heading and speed) can only be accounted for by wind and current. I believe wind and current forecasts are fairly common for all areas of the globe now, so the calculated values could be compared to the expected values and raise an alarm if they are far off.

[1] http://gcaptain.com/tag/piracy/ [2] http://en.wikipedia.org/wiki/Automatic_Identification_System

There are commercial products for less than $100 that do this for the L1 C/A signal - such as [1].

You can rebroadcast at substantially higher power than the signal coming directly from the satellite, so the direct signal gets drowned out. After all, the satellite has to broadcast to cover half the world, while you only have to cover a few square meters.

Now, I'll grant the receiver may see a change in signal strength, some cycle slips, and an increase in clock skew. But you get those in normal GPS operation anyway. If you're going to detect GPS attacks and self-destruct your drone you'll want a very low false-positive rate, and I'm not sure that's feasible.

[1] http://www.diplomat.co.uk/products/hardware-products/active-...

I imagine if signal was jammed and only C/A codes were rebroadcast the drone would use those instead of nothing.

edit: Assuming that navigation was relying only on GPS