4 ms·
This is incredibly far-fetched. At best, a rogue actor within a foundry, who happens to be working on the correct process node, who happens to be on the account
by kayson 5y ago
This is incredibly far-fetched. At best, a rogue actor within a foundry, who happens to be working on the correct process node, who happens to be on the account of the customer victim, might be able to access the GDS file (the full-chip layout file submitted by the customer) or maybe even the mask files (GDS split into layers and processed by the foundry). Exfiltrating it is an entirely different story. Usually these files only reside in very, very locked-down environments. For this very reason.
Supposing they did get the full layout to an external network, they still likely wouldn't be able to do an ECO because most of the major players will be using custom standard cell libraries, and not the foundru-supplied ones. Even if it were using foundry libraries, the same rogue actor who has access to the chip layout probably wouldn't (and definitely shouldn't) even have access to the foundry's standard cell IP.
At this point it's already a virtual impossibility, but let's keep going. The next step is to actually perform the ECO, which requires a "net list", or a text equivalent of the schematic. Can you get one from the layout? Absolutely. That's how all Layout-vs-Schematic tools work. And the research paper says it's trivial, which it is. But what's not trivial is turning the transistor-level netlist to a gate-level net list. Again - standard cells aren't actually standard, especially bigger and more complex ones. Even harder still is using a netlist to figure out what those logic gates are doing. Trust me, I've tried. Is it doable? Theoretically. But with millions, or potentially even billions of logic gates, it's going to take a very, very long time.
Then you've got static timing analysis and power analysis to worry about. With the layout and a gate level netlist, you have all you need to run the tools. But again, it's going to take an extremely long time. Real designs are built hierarchically, so each team is doing timing/power closure for their own blocks and summarizing those for the parent block. If you have a massively flat structure it will be impossibly slow.
The underlying research paper makes some massive assumptions , which don't have me convinced at all. Their "trojan horse" circuit is legitimate - you create a digitally controlled oscillator tied to some critical data bus like in an AES subsytem, and the changing data modulates the current consumption of the oscillator which can be measured externally. This type of side channel attack is well known.
To me, the Trojan horse implementation is trivial, though. The much harder part is pulling off the ECO.
- ncmncm 5y ago
- digitallyfree 5y agoDoing a "regular" ECO to push a RTL change to the gate-level netlist (bypassing regular synthesis) is already a very difficult process. The hardest part is figuring out how your RTL maps to the optimized gates - and this is with full access to the RTL and netlist. I can't imagine someone being able to manage to pull this off from an unknown netlist and successfully understand, let alone modify, the design.
- a1369209993 5y ago> The software analogy I like to use is trying to reflect a change in your source code by modifying the binary directly without recompiling. Not sure about kayson, but I've done essentially that on a couple occasions (usually to some C++ abomination that refuses to compile away from the authors' build server). It's not that difficult.[0] > Unlike those pirate crackers who sometimes can pull this off, imagine you have no idea what the binary does, and even if you "run" it in simulation (super slowly) everything is gibberish. Realisticly, you usually do have a pretty good idea what the chip does[1], and may have 'extra'/'lost' stock from the previous revision to compare its behaviour against, especially if you're attacking something popular enough to be worth compromising (= probably more than one batch ordered). 0: Most off-the-top-of-head example from my notes file: fix caja(glib) wrong(decimal) unit prefixes: at libglib-2.0.so.0.4105.0:7CFB1 [... more at ...] change 4 bytes in g_format_size_full from: 41 F6 C4 02 test r12b 0x02 # if(flags&G_FORMAT_SIZE_IEC_UNITS) into: 48 83 FB 00 cmp rbx byte(+0x00) # if(size!=0) 1: Presuming 'you' are a intelligence agency, ie the kind of thing that would credibly try such a attack, not a isolated disgruntled fab employee.