zlacker

[parent] [thread] 20 comments
1. raspyb+(OP)[view] [source] 2020-06-05 02:53:44
Learn cryptography to a high level then read the source code?
replies(2): >>drdrey+w >>aeroph+b2
2. drdrey+w[view] [source] 2020-06-05 02:58:51
>>raspyb+(OP)
How do you know that the binary you run actually corresponds to the source code you read?

EDIT: and would you then also review every commit to make sure nothing bad gets introduced? No, at some point you have to place trust in the vendor, the developers, independent audits, etc.

replies(4): >>RL_Qui+K >>ciaran+21 >>shawnz+p1 >>kasey_+C1
◧◩
3. RL_Qui+K[view] [source] [discussion] 2020-06-05 03:00:32
>>drdrey+w
Determinism.

https://tests.reproducible-builds.org/debian/reproducible.ht...

We're making great strides into software being completely deterministic. The Bitcoin project for many years has had completely deterministic binaries and a ceremony process for GPG signing the output with many individual parties.

replies(2): >>drdrey+M6 >>depend+9e
◧◩
4. ciaran+21[view] [source] [discussion] 2020-06-05 03:02:45
>>drdrey+w
You can build the source locally, then compare the MD5 hash value of your build to (1) the hash value they post publicly for their build and (2) the actual hash value of their build once you download it.

Assuming all three match, you know that the binary matches the source.

Someone who is more technically inclined can probably go into more detail on this.

replies(3): >>khc+F5 >>drdrey+L5 >>bawolf+h8
◧◩
5. shawnz+p1[view] [source] [discussion] 2020-06-05 03:05:55
>>drdrey+w
How do you know the compiler actually compiles the source code to the binary you expect without injecting backdoors? How do you know that the hardware actually follows the instructions in the binary as they are specified?

How do you know you're not living in a computer simulation in which the operators can access your data without any backdoors whatsoever?

replies(6): >>gentry+82 >>ta1771+q4 >>gfosco+45 >>drdrey+T6 >>dwheel+F7 >>bawolf+N7
◧◩
6. kasey_+C1[view] [source] [discussion] 2020-06-05 03:07:22
>>drdrey+w
Just to be clear software assessment doesn’t only happen at the source level. It happens at the binary downloaded at the device.
◧◩◪
7. gentry+82[view] [source] [discussion] 2020-06-05 03:11:30
>>shawnz+p1
See Reflections on Trusting Trust [1]

[1]: https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_Ref...

8. aeroph+b2[view] [source] 2020-06-05 03:12:07
>>raspyb+(OP)
I never realized signal code was available open source... so in theory one could “build” then load the software via developer tools (assuming you have an iOS dev account).

https://github.com/signalapp/Signal-iOS

Are there any “certs”/keys you would need to talk to your contacts?

replies(1): >>AtHear+p6
◧◩◪
9. ta1771+q4[view] [source] [discussion] 2020-06-05 03:34:28
>>shawnz+p1
Build it yourself.
◧◩◪
10. gfosco+45[view] [source] [discussion] 2020-06-05 03:43:37
>>shawnz+p1
To make an apple pie from scratch, first you must create the universe. :)
◧◩◪
11. khc+F5[view] [source] [discussion] 2020-06-05 03:51:29
>>ciaran+21
we are talking about security, and you brought up... MD5?
replies(1): >>kortil+E7
◧◩◪
12. drdrey+L5[view] [source] [discussion] 2020-06-05 03:53:06
>>ciaran+21
This is actually more involved than it sounds. It is pretty easy for the compiler to introduce nondeterminism and result in slightly different binaries. I know this for a fact because I fixed a couple bugs like this in LLVM.

For the curious: we actually were intentional about finding these, by compiling many programs with the same parameters on different machines. One with a 32 bit OS and toolchain, the other one on a 64 bit machine, and we would get alerted when we produced binaries with a different checksum.

◧◩
13. AtHear+p6[view] [source] [discussion] 2020-06-05 04:01:44
>>aeroph+b2
Ya they are pretty open, their blog explains a lot of their design decisions as well.
◧◩◪
14. drdrey+M6[view] [source] [discussion] 2020-06-05 04:08:25
>>RL_Qui+K
See my other comment about determinism: https://news.ycombinator.com/item?id=23424925

Trying to get a bit-to-bit equivalent of a binary lifted from the app store sounds challenging to say the least.

replies(1): >>ryukaf+O7
◧◩◪
15. drdrey+T6[view] [source] [discussion] 2020-06-05 04:10:42
>>shawnz+p1
That's my point, you can't establish trust by checking everything yourself. So you delegate to other things as an approximation. In this case, Signal seems to be reputable, have competent developers and afaik no history of leaks or malevolence so I would rely on that rather than a half-assed source code review.
◧◩◪◨
16. kortil+E7[view] [source] [discussion] 2020-06-05 04:20:35
>>khc+F5
We’re talking about the forest, and you mention... one of the trees?
◧◩◪
17. dwheel+F7[view] [source] [discussion] 2020-06-05 04:20:52
>>shawnz+p1
For countering subverted compilers you can use diverse double-compiling (DDC), see https://dwheeler.com/trusting-trust/
◧◩◪
18. bawolf+N7[view] [source] [discussion] 2020-06-05 04:21:25
>>shawnz+p1
With electron microscopes of course!

Cartesian doubt becomes pointless at some point. If you're worried that the deep state has implanted microchips in your brain to prevent you from analyzing signal, it probably doesn't matter because at that point they wouldn't need to hack signal to get to you.

A less snarky and more realistic answer is: threat models and risk assesment. (Non-divine) adversaries generally have limited resources. The limit may be high, but its still there. You can realistically worry about a government coercing a service to hand over keys, because that's easily within their power. On the other hand, having a giant conspiracy-trusting trust style-where every compiler & microchip has a backdoor that is inserted into every tool ever compiled, is a bit unrealistic. It would take thousands of people to be in on it to pull it off, spread across many countries (who hate each other) over at least 50 years. Having that many people, especially academics, keep that type of secret for that long is basically impossible. If they could do that, it would be child's play to have most of the protestors be gov agents, so if you think this is realistic, worry about that first. Anyways, in my judgement governments don't have that kind of power, so its probably not something to worry about.

So, to conclude, estimate the level of power and influence you think your enemies have, and then take steps to rule out the possibilities that your enemies have done the things that are theoretically in their power to do. Start with the possibilities that are most likely multiplied by how bad it would be for you (liklihood*severity = risk)

◧◩◪◨
19. ryukaf+O7[view] [source] [discussion] 2020-06-05 04:21:29
>>drdrey+M6
Yes, this is more difficult than it sounds - but GP linked to the reproducible builds project which has gotten there already for a lot of software.

See also Guix, which provides tools to challenge servers providing binary packages to see if they match a locally-built version: https://guix.gnu.org/manual/en/html_node/Invoking-guix-chall...

◧◩◪
20. bawolf+h8[view] [source] [discussion] 2020-06-05 04:28:52
>>ciaran+21
MD5 is not safe for this use case. Assuming the provider is malicious, this is exactly the scenario where MD5 is broken (i.e. it is possible to make source code that compiles a certain way so that you can make another binary that has the same hash but is different. The bright side is the attack would have evidence as there would be certain patterns in the binary that could be detected if you knew how/where to look. That said, just use sha256)
◧◩◪
21. depend+9e[view] [source] [discussion] 2020-06-05 05:48:16
>>RL_Qui+K
There is https://signal.org/blog/reproducible-android/ but it is not complete.
[go to top]