zlacker

[parent] [thread] 33 comments
1. d33+(OP)[view] [source] 2017-07-11 12:35:59
If I read that right, they're allowing Intel ME, which sounds like a sad compromise to me. Given that it's a pretty big complex black box that one can't easily disable, would you agree that x86 is doomed when it comes to security? If that's the case, is there any hope we could have a CPU with competitive capabilities? (For example, is there an i7 alternative for ARM?)

What could one do to make it possible to have ME-less x86 in the future?

replies(10): >>vbezhe+t >>adrian+z >>cmiles+C >>lmm+O >>mtgx+C1 >>mozart+I1 >>zer0to+O1 >>x86ins+m3 >>cyphar+F6 >>fghtr+mE
2. vbezhe+t[view] [source] 2017-07-11 12:42:12
>>d33+(OP)
When you're running megabytes of proprietary code on numerous processors in your laptop completely out of your control, why do you focusing on Intel ME? What about your network card which runs dedicated processor with some kind of operating system, executing firmware and processing every network frame before your OS receives it, for example?
replies(3): >>_jal+m2 >>majews+vg >>hinkle+eJ1
3. adrian+z[view] [source] 2017-07-11 12:43:18
>>d33+(OP)
You can't buy a processor with comparable performance to a modern Intel without some kind of scary management engine. AMD has them too and Arm doesn't compete on performance.
replies(1): >>horust+y3
4. cmiles+C[view] [source] 2017-07-11 12:43:32
>>d33+(OP)
It seems to me that there's not much hope for an ME-less x86 compatible machine in the near future. Intel is pretty invested in the product and AMD has introduced a similar solution for their systems.

Another architecture all together, designed from the ground up to support a free and secure system, seems a better bet.

5. lmm+O[view] [source] 2017-07-11 12:45:07
>>d33+(OP)
There are open processor designs, e.g. many SPARC designs are published. You could run a reasonable webserver or what have you on those. But only the mega-corps chipmakers are going to be competitive with the current state of the art, and the mega-corp chipmakers are going to include ME or equivalent because their mega-corp clients want it.

More generally if the processor's going to have any dynamic internal logic then that has to run somewhere. Frequency scaling, wake-on-lan, microcode updates... you probably do want an ME-style embedded management processor that runs the processor's firmware just as you would for any other peripheral (hard drives, wifi controllers and so on all contain their own embedded ARM cores these days). ME itself isn't the issue - having what runs there be open and inspectable is.

6. mtgx+C1[view] [source] 2017-07-11 12:50:39
>>d33+(OP)
> is there an i7 alternative for ARM

Qualcomm will first minimize its risk going into the PC market by making its mobile chips a bit more optimized for the PC market. But if that goes well and all, it may eventually go "upmarket" with higher-end chips, which will require their own R&D and so on.

However, I don't know if that necessarily means we'll have a more open alternative to Intel. Evidence so far seems to show that Qualcomm may be an even bigger bully than Intel was or is, so I would not look up to Qualcomm to being a savior for the market, but more like the tyrant that replaces the previous tyrant.

7. mozart+I1[view] [source] 2017-07-11 12:51:31
>>d33+(OP)
The best option right now is to use Rockchip ARM devices. With a few little compromises you can run a pretty much free architecture: https://libreboot.org/docs/hardware/c201.html
8. zer0to+O1[view] [source] 2017-07-11 12:52:15
>>d33+(OP)
I think the whole point of Qubes OS is t not trust hardware because of potential BIOS or ME backdoors.

Joanna Rutkowska, Qubes founder, is the person who brought up intel ME as a problem in her paper Intel x86 considered harmful (https://blog.invisiblethings.org/papers/2015/x86_harmful.pdf).

replies(1): >>adrian+Vc
◧◩
9. _jal+m2[view] [source] [discussion] 2017-07-11 12:56:02
>>vbezhe+t
There are use cases where pulling the network card leaves a viable system. I'm unaware of a use case where pulling the CPU leaves one.

Also, the ME appears to be a nice one-stop-shop for compromise. It is the janitor's entrance; it is right there in the name.

10. x86ins+m3[view] [source] 2017-07-11 13:04:09
>>d33+(OP)
You could contact AMD and show support for open sourcing PSP (their ME equivalent) or having an option to disable it. There is hope: https://www.reddit.com/r/linux/comments/5xvn4i/update_corebo...
◧◩
11. horust+y3[view] [source] [discussion] 2017-07-11 13:05:22
>>adrian+z
When you say "performance" do you mean at or below the price point? POWER is open but seriously expensive.
replies(2): >>girvo+q4 >>adrian+u7
◧◩◪
12. girvo+q4[view] [source] [discussion] 2017-07-11 13:13:51
>>horust+y3
Yeah the POWER8 server I'm playing with is definitely competitive performance wise with Xeon, but I didn't have to pay for it, heh.
13. cyphar+F6[view] [source] 2017-07-11 13:32:56
>>d33+(OP)
OpenPOWER[1] would be a great option. There was a recent crowd-funding effort to try to make an OpenPOWER desktop a reality[2] but unfortunately it didn't get nearly enough funding (though apparently they are still developing it[3]).

[1]: https://openpowerfoundation.org/ [2]: https://www.crowdsupply.com/raptor-computing-systems/talos-s... [3]: https://www.raptorengineering.com/TALOS/prerelease.php

replies(1): >>krylon+Qk
◧◩◪
14. adrian+u7[view] [source] [discussion] 2017-07-11 13:38:50
>>horust+y3
Oh that's true, I forgot about those. But do they fit in a laptop?
replies(1): >>xoa+YA
◧◩
15. adrian+Vc[view] [source] [discussion] 2017-07-11 14:21:22
>>zer0to+O1
You can't run trusted software on untrusted hardware. If someone has a backdoor in your ME, you can't protect yourself from it.
replies(3): >>falcol+Zh >>slayma+8i >>daxori+gq1
◧◩
16. majews+vg[view] [source] [discussion] 2017-07-11 14:47:27
>>vbezhe+t
When the network card tampers with the packets, this can be detected if the network protocols use the correct cryptographic algorithms to ensure integrity and confidentiality. Protecting against tampering on the CPU level is much harder, since this is where these algorithms are carried out.
replies(1): >>proble+Ck
◧◩◪
17. falcol+Zh[view] [source] [discussion] 2017-07-11 14:57:14
>>adrian+Vc
I'm curious: if we can solve the "trusting trust" problem - that is identifying compromised compilers, even if the other compiler is compromised - couldn't we potentially solve this problem in a similar way?
replies(2): >>jancsi+er >>nickps+Ui1
◧◩◪
18. slayma+8i[view] [source] [discussion] 2017-07-11 14:58:27
>>adrian+Vc
The point of Qubes is not perfection. It instead tries to put in barriers so that compromising one part does not compromise the whole.
replies(1): >>krylon+Ij
◧◩◪◨
19. krylon+Ij[view] [source] [discussion] 2017-07-11 15:10:48
>>slayma+8i
If I understand it correctly, ME has basically unrestricted access to RAM, bypassing the CPU and any restrictions the hypervisor and/or operating system may impose.

If I can peek and poke around in your RAM as I please, no amount of cleverness is going to save you if my intentions are malicious.

(Don't worry, though, I have no such intentions, and I don't fiddle with other people's RAM as a matter of principle, unless they ask me to. ;-))

replies(1): >>slayma+Jz9
◧◩◪
20. proble+Ck[view] [source] [discussion] 2017-07-11 15:15:14
>>majews+vg
If you think you're going to catch every possible NIC-level modification, does tampering on the CPU really matter if there's no way to store or exfiltrate the data without being detected?
◧◩
21. krylon+Qk[view] [source] [discussion] 2017-07-11 15:16:59
>>cyphar+F6
That would have been a cool machine, but unfortunately, the price was way outside my budget.

If such a machine with reasonable specs (I do not expect a 64-core 256-GB-RAM-monster) could be brought down to the 1000 $/€ price range, I would seriously look into it.

(I am not sure how realistic that price range is, though.)

What about Loongson? IIRC, Richard Stallmann uses a Notebook based on it, because it has free firmware. Performance is probably not breathtaking, but it exists. Does somebody know if there are Desktop machines built around that chip?

replies(1): >>djsumd+Wq
◧◩◪
22. djsumd+Wq[view] [source] [discussion] 2017-07-11 16:01:18
>>krylon+Qk
I have to agree. The Talon looked amazing, but the crowdfunding price was way out there.

They should have offered a bare version with just the board, ram and maybe video card (to ensure comparability). They needed the ~$1k USD hobbyist market.

It seems like the goals were way too high, like the Ubuntu Edge.

replies(1): >>wmf+Ge1
◧◩◪◨
23. jancsi+er[view] [source] [discussion] 2017-07-11 16:03:44
>>falcol+Zh
Ignoring for the moment all the indeterminism on a running laptop, the main reason is that we don't have the tooling to do that.

For example: compiler is to software as X is to hardware. What is X? And how does one go about creating their own X?

replies(3): >>BenjiW+3w >>falcol+vR >>nickps+Fu1
◧◩◪◨⬒
24. BenjiW+3w[view] [source] [discussion] 2017-07-11 16:34:35
>>jancsi+er
If X is "foundry" you probably can't create your own. And I think it is.
◧◩◪◨
25. xoa+YA[view] [source] [discussion] 2017-07-11 17:06:56
>>adrian+u7
For certain values of "laptop" probably (or "notebook" might be better since I don't know if I'd want to put one on my lap), but I don't think the tradeoffs would be generally worth it right now. As a spec sheet eyeball check, I know there are ultra high performance gaming notebooks that do ridiculous stuff, like Acer makes one IIRC with SLI 1080s and an i7 that is rated to pull up to 330W from the wall, and of course it weighs something like 8-8.5 kg (18-19 lbs). There seem to be ones that "merely" use a single 100-150W desktop class GPU and processor that are more like in the 5.5 kg/12 lbs range, but that's still no fairy (a 15" Macbook Pro for contrast is about 1.8 kg/4 lbs, and even in the mid-90s the big old PowerBooks maxed out around 3.2 kg/7 lbs IIRC) and obviously we're generally going to be talking just a few hours of battery life at best away from mains.

But at any rate it's not unfeasible or unknown right now to deal with 100-200W worth of TDP in big 17" (or even 21"(!!!)) notebooks, and there does seem to be a functional (albeit niche) market for it. So at that range it'd be feasible in principle to stick in a low end POWER8 and smallish but functional GPU and have a "notebook POWER8 system", but it'd be a compromised machine in terms of what we'd normally find desirable in a mobile system.

POWER9 (which I think is still slated to go online in the Summit & Sierra supercomputers this year?) is supposed to have improved energy efficiency and management features, which though aimed at scaleup/scaleout of course might help out a bit in other settings in theory. But even so it'd be a tougher chip to build in an SFF system around let alone a notebook. Any potential buyers would have to care a very great deal about what it brought to the table.

26. fghtr+mE[view] [source] 2017-07-11 17:30:34
>>d33+(OP)
>What could one do to make it possible to have ME-less x86 in the future?

One could lock all the devices that can store data: https://blog.invisiblethings.org/papers/2015/state_harmful.p...

"The general idea is to remove the SPI flash chip from the motherboard, and route the wiring to one of the external ports, such as either a standard SD or a USB port, or perhaps even to a custom connector. A Trusted Stick (discussed in the next chapter) would be then plugged into this port before the platform boots, and would be delivering all the required firmware requested by the processor, as well as other firmware and, optionally, all the software for the platform."

◧◩◪◨⬒
27. falcol+vR[view] [source] [discussion] 2017-07-11 18:51:48
>>jancsi+er
Ultimately a compiler is just a bit of software; one that takes inputs and produces outputs. The identification of compromise is the difference in outputs for the same inputs (simplified, of course).

So, given we can control most inputs to hardware, and most outputs, it seems possible to objectively identify when the HW is misbehaving (such as "A" produces network output that "B" does not). It wouldn't nail down which piece of hardware was compromised, but it would help identify that hardware is compromised.

It will never be _that_ easy, of course... but it seems possible.

replies(1): >>jancsi+di2
◧◩◪◨
28. wmf+Ge1[view] [source] [discussion] 2017-07-11 21:41:12
>>djsumd+Wq
They should have offered a bare version with just the board...

They did offer that, but the board alone was $3,700.

◧◩◪◨
29. nickps+Ui1[view] [source] [discussion] 2017-07-11 22:22:48
>>falcol+Zh
It's a solved problem. Paul Karger, who invented the attack and concept in the 1970's, immediately worked with others to solve it with rigorous methods called high-assurance security. Far as this problem, it's mainly a problem of people you trust reviewing it, it getting distributed to you, and you verifying you got what they reviewed. With most distro's, it boils down to that since you have to trust millions of lines of code (maybe privileged) in the first place. SCM security of a trusted repo becomes the solution. Wheeler covers SCM security here:

https://www.dwheeler.com/essays/scm-security.html

Now, let's say you want to know the compiler isn't a threat. That requires you to know that (a) it does its job correctly, (b) optimizations don't screw up programs esp removing safety checks, and (c) it doesn't add any backdoors. You essentially need a compiler whose implementation can be reviewed against stated requirements to ensure it does what it says, nothing more, nothing less. That's called a verified compiler. Here's what it takes assuming multiple, small passes for easier verification:

1. A precise specification of what each pass does. This might involve its inputs, intermediate states, and its outputs. This needs to be good enough to both spot errors in the code and drive testing.

2. An implementation of each pass done in as readable a way possible in the safest, tooling-assisted language one can find.

3. Optionally, an intermediate representation of each pass side-by-side with the high-level one that talks in terms of expressions, basic control flow (i.e. while construct), stacks, heaps, and so on. The high-level decomposed into low-level operations that still aren't quite assembly.

4. The high-level or intermediate forms side by side with assembly language for them. This will be simplified, well-structured assembly designed for readability instead of performance.

5. An assembler, linker, loader, and/or anything else I'm forgetting that the compiler depends on to produce the final executable. Each of these will be done as above with focus on simplicity. May not be feature complete so much as just enough features to build the compiler. Initial ones are done by hand optionally with helper programs that are easy to do by hand.

6. Combine the ASM of compiler manually or by any trusted applications you have so far. The output must run through assembler, linker, etc. to get the initial executable. Test that and use it to compile the high-level compiler. Now, you're set. Rest of development can be done in high-level language w/ compiler extensions or more optimizations.

7. Formal specification and verification of the above for best results. Already been done with CompCert for C and CakeML for SML. Far as trust, CakeML runs on Isabelle/HOL whose proof checker is smaller than most programs. HOL/Light will make it smaller. This route puts trust mostly in the formal specs with one, small, trusted executable instead of a pile of specs and code. Vast increase in trustworthiness.

@rain1 has a site collecting as many worked examples as possible of small, verified, or otherwise bootstrapping-related work on compilers or interpreters. I contributed a bunch on there, too. I warn it looks rough since it's a work in progress that's focused more on content than presentation. Already has many, many weekends worth of reading for people interested in Trusting Trust solutions. Here it is for your enjoyment or any contributions you might have:

https://bootstrapping.miraheze.org/wiki/Main_Page

◧◩◪
30. daxori+gq1[view] [source] [discussion] 2017-07-11 23:46:06
>>adrian+Vc
It should be noted that ME is significantly less powerful than the main CPU cores.

If performance is not a huge concern, one could (in theory of course) design software so cpu/memory-hard that the ME is simply unable to perform meaningful key material recovery for FVEY.

◧◩◪◨⬒
31. nickps+Fu1[view] [source] [discussion] 2017-07-12 00:52:14
>>jancsi+er
Once you learn digital design, you learn how tools like this works:

http://opencircuitdesign.com/qflow/

Start with a simple CPU and memories you can hand-check sent to a 0.35-0.5 micron fab that's visually inspectible. Then, after verifying random sample of those, you use the others in boards that make the rest of your hardware and software. You can even try to use them in peripherals like your keyboard or networking. Make a whole cluster of crappy, CPU boards running verified hardware each handling part of the job since it will take a while. You can use untrusted storage if the source and transport CPU's are trusted since you can just use crypto approaches to ensuring data wasn't tampered with in untrusted RAM or storage. Designs exist in CompSci for both.

So, you'll eventually be running synthesis and testing with open-source software, verification with ACL2 a la Jared Davis's work (maybe Milawa modified), visual inspection of final chips, and Beowulf-style clusters to deal with how slow they are. And then use that for each iteration of better tooling. I also considered using image recognition on the pics of the visual trained by all the people reviewing them across the world. More as an aid than replacing people. Would be helpful when transistor count went up, though.

Other links:

https://www.cs.utexas.edu/users/moore/publications/acl2-pape...

https://www.cs.utexas.edu/users/jared/milawa/Web/

http://www.vlsitechnology.org/html/libraries.html

◧◩
32. hinkle+eJ1[view] [source] [discussion] 2017-07-12 05:05:15
>>vbezhe+t
I keep hoping we'll get a decent consumer grade interconnect fabric and just run half a dozen standard SoCs for all of the peripherals.
◧◩◪◨⬒⬓
33. jancsi+di2[view] [source] [discussion] 2017-07-12 13:38:51
>>falcol+vR
> It wouldn't nail down which piece of hardware was compromised, but it would help identify that hardware is compromised.

Do TCP timings and retransmissions count as difference in outputs?

◧◩◪◨⬒
34. slayma+Jz9[view] [source] [discussion] 2017-07-16 03:53:50
>>krylon+Ij
You can prevent certain things through address randomization and by using canaries to try and detect intrusions. I think if you made the system self modifying and incorporated a true RNG, it would be theoretically possible to obfuscate it at run time to malicious observers assuming attackers haven't seen observed the complete obfuscation process.
[go to top]