Tony Arcieri is a security and cryptography engineer who writes about Rust, memory safety, password managers, blockchains, and Tether.
HN commenters cite his posts as authoritative on deterministic password managers, in-browser crypto, Tether, and Rust and Heartbleed, and call the Tether piece a great article.
In the case of LibreSSL, it's probably not going to happen very soon; the OpenBSD devs are very much C programmers (and Ted Unangst already addressed this in the case of Heartbleed, though his methodology is the subject of some contention: http://www.tedunangst.com/flak/post/heartbleed-in-rust ).
While Ted's post has been criticized by a few Rust programmers (see: http://tonyarcieri.com/would-rust-have-prevented-heartbleed-another-look ), it still brings up the argument that one's language choice isn't a magic bullet. There's an adage (I have no idea who originated it) that's along the lines of "every 'idiot-proof' system underestimates an idiot's ability to break things", and that's worth considering here. Rust prevents a lot of bugs, but it's not a guarantee of security. One needs to understand the actual problem that needs solved, and this is where the OpenBSD devs are focusing with LibreSSL (and their various other projects); their security track record stands as a good testament of that notion of understanding trumping language choice.
This isn't to say that I disagree with you. Rust is readily poised to replace C in a lot of contexts (IIRC, one of the obstacles right now is the use of a different allocator, so trying to use a Rust library from C results in some performance overhead), and it would be nice to see it used in a lot more projects. Just bear in mind that moving to Rust isn't the only step that would be required to fix these sorts of security bugs.
For those interested in security in particular, we've outlined the opinions and design decisions here: https://github.com/linuxkit/linuxkit/blob/master/docs/security.md
In short:
Kernel Security Incubator - We want to push linux kernel security as much as possible. In service of that, we want linuxkit to be a place where leading-edge linux kernel security patches can land and incubate. Feature examples are Landlock, Wiregurd, okernel, etc. We'll also incubate KSPP and container hardening improvements, like hardening the kernel eBPF JIT and namespacing the IMA subsystem.
Modern and Securely Configured Kernels - Latest kernel, following all KSPP recommendations.
Minimal Base - No extra dependences, just what's needed to run containerd. Absolutely no package manager.
Type Safe, Containerized System Daemons - many linux privescs happen due to escalations using root system daemons. These daemons should be written in typesafe language like OCaml and Rust. We have an Ocaml dchpcd and look to invite more. If you're convinced by https://tonyarcieri.com/it-s-time-for-a-memory-safety-intervention?utm_content=bufferfe480&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer, linuxkit is a place to contribute to the solution.
Built With Hardened Toolchains and Containers - uses notary signing for all dependencies and intermediate builds, uses musl libc for hardened libc implementation + hardened compiler options for building system packages.
Immutable Infrastructure -…
The problem with lists like this is they really are just a "here's 100 open source products", without any criteria or individual evaluation. It is often just parrots repeating what other parrots say.
Something which is clearly alpha-state isn't usable to regular users shouldn't have a "recommendation". Then you get sub optimal recommendations, listing some projects which are unmaintained etc.
With the cleanup at https://privacyguides.org, (since we split from PTIO) we've removed a lot of things, and gone down the part of actually providing guidance rather than "use this software to make you magically more private".
I think it's important to think privately, modify behavior rather than rely on technology to do it all for you.
Looking at this particular list there are some bad choices:
- LessPass: We explicitly removed deterministic password managers https://github.com/privacyguides/privacyguides.org/pull/323, https://tonyarcieri.com/4-fatal-flaws-in-deterministic-password-managers
- AndOTP: Uses PBKDF2 and a heap of rounds that is unbelievably slow when you have a number of OTPs. Aegis uses Argon, which doesn't have this problem, and we think it's code is developed by someone who is security conscientious.
- Qwant: https://github.com/privacyguides/privacyguides.org/pull/342#issue-1057922379, we removed due to "due to bad privacy policies data is collected and shared with third parties"
- Silence: Unmaintained, uses SS7 network, should never be recommended.
-…
4) So they can redirect all users to a non-HTTPS site. That's interesting.
What youre saying is ridiculous, it's nothing to do with "completely" trustless, you're not trustworthy at all. The "we promise we wont serve malicious code" is the same securi
Basically your users have to trust:
-You
-Your staff
-Cloudflare
-Google
-Any computer used to design, build or login to your web app
-Anyone with access to any of these computers
-Every single CA in existence (including the US and Chinese government)
-Anyone with resources to spoof a CA SHA-1 signature (anyone with ~$700,000 [0])
-The authors of the JS OTR library and any other code you use
Do you see the problem here? There are literally millions of people in your trust chain.
Libpurple sucks, but browsers are the #1 target for exploit writers, not to mention the HUGE attack surface they pose. There are just so many angles of attack for your service. Anything hosted on a shared server is not secure. The word cloud and security should not be in the same sentence. No offense, but you guys really do not seem like cryptography experts and there are so many pitfalls here that I would not recommend trying to promote this until you completely re-design everything.
As far as WebCrypto.. I'm just going to leave this here:
http://tonyarcieri.com/whats-wrong-with-webcrypto
http://matasano.com/articles/javascript-cryptography/
[0] https://www.schneier.com/blog/archives/2012/10/when_will_we_se.html
> I don't really have the technical knowledge to evaluate it myself, and I suspect 99% of the people in HN are in the same position. Therefore, if I were to say "Signal's security is excellent" I would be falling for the cult of Moxie myself, not an informed opinion.
Sure, but that's not what's happening when people whose day-to-day involve applied cryptography and/or application security are commenting on MTProto and Telegram.
Here's a good read on why Telegram's "contest", which is a challenge meant to create the illusion of resilience, is totally bogus in the context of real-world cryptography: http://www.cryptofails.com/post/70546720222/telegrams-cryptanalysis-contest
The things that the Signal Protocol does well:
1. It maximizes forward secrecy,
2. while working for mobile devices that may be offline or unreachable,
3. and uses authenticated encryption.
https://tonyarcieri.com/all-the-crypto-code-youve-ever-written-is-probably-broken
https://paragonie.com/blog/2015/05/using-encryption-and-authentication-correctly
Disclaimer: The last link (the paragonie.com one) was my writing on the subject.
I recommend considering a non-cryptocurrency startup that's doing similar work in decentralization and creating new protocols for internet architecture. See a short list here: https://decentralize.tech/
Blockchains get 80% of the conversation right -- we need fat protocols, new architectures, and new ways of doing things than traditional VC-controlled walled garden apps. But once the current Bitcoin bubble pops, I think that "blockchains" are going to sound extremely non-reputable to a lot of people and you'll likely regret the time you've put into it.
If you're serious about core Blockchain-type engineering, I recommend looking at a couple of the projects outlined in this post: https://tonyarcieri.com/on-the-dangers-of-a-blockchain-monoculture