3 ms·
This was one of the few times someone came on Schneier's blog, heard high-assurance security techniques, and actually used them. Clive Robinson and I always tal
by nickpsecurity 8y ago
This was one of the few times someone came on Schneier's blog, heard high-assurance security techniques, and actually used them. Clive Robinson and I always talked diodes and physical separation. Markus Ottela's improvements on those concepts were extremely clever. He kept coming back with questions. We'd feed in things like mitigating covert channels. He'd apply it like that or his own take. Great stuff.
Note: It wasn't a Tor-based service back then. Anyone curious about his thinking might find those searching "site:schneier.com" "markus ottella" "tinfoil chat." It also needed a port to native code given he just knew Python.
In any case, it was one of strongest designs being, with right implementation, potentially NSA-proof with simple architecture vs hardware/software architectures that cost millions done by specialists. At best, attackers would keep trying to disrupt or brick the receiver and network components. Potentially some side channel leakage to watch for.
The usability was a problem. An integrated solution could put the boards in one device that user just set up like they do consumer routers. Supplier subversion and interdiction are more threatening. Alternatively, instructions on how to do this with components that come from many suppliers. Or both: one for each audience with their threat profiles. In any case, the real brilliance is that you can have usable high-security really fast vs building a seL4-based appliance.
- srednalfden 8y agoI enjoy reading your thoughts on all things security. Why the need for a port from python?
- nickpsecurity 8y agoThanks! Over time, I put together a lot of what I read in the thousands of CompSci, FOSS, and commercial works into a short summary of techniques for assuring software. We'll start with that: https://pastebin.com/uyNfvqcp https://pastebin.com/uyNfvqcp So, there's a few concepts that apply here. You want the Trusted Computing Base, the part system depends on for security, to be as simple and easy to analyze as possible. The limit of verification that big spenders can afford is around 10,000 lines of code. You want it to be in a safe by default language (eg Ada + SPARK, Rust) or proven safe implementation (eg MISRA-C + RV-Match) that maps closely to resources of machine. Then, to catch leaks (important here), you must do a covert channel analysis of all shared resources in the system, esp memory or anything timed, to ensure an untrusted component can't acquire secrets from a trusted component. These were some basic requirements from 1980's security certification that prevented and detected problems in products from that time onward. One of biggest being cache-based, timing channels in VAX VMM in 1992. Python doesn't map closely to hardware. Its implementation language isn't safe. You can't do covert channel analysis in it. It's also likely sitting on OS that's impossible to verify with tons of bugs each year. A nice, interim step before a verified OS is one we know they'll have trouble attacking or at least few can touch like OpenBSD. Currently, Rust or statically-analyzed C on OpenBSD for sender with full, memory safety for any components on Receiver and Transport. Simplified hardware that's up to date with hardware bugs. They need the extra work cuz the attackers will be hitting those with malicious input.
- maqp 8y agoNice to see you again Nick P! Yes the use of Tor Onion Services is a brand new thing and something I've been working since the fall of 2017. Piggy-backing on Pidgin was always a temporary solution: The Snowden documents and Hayden's comment on killing people based on metadata made it clear something that's anonymous by default was the way to go. Ricochet was the biggest influencer, and after I asked about OnionShare's (that's also written on Python) Tor connectivity, Micah Lee kindly pointed me to the direction of Stem. Stem's author Damian Johnson and other members of Tor Project were really helpful and I can't thank them enough. (Note that they have not vetted the implementation in any way!) I initially implemented v2 onions and stealth authorization but with the announcement of prop224 and next gen (v3) onions I decided to wait. While working on that, new primitives were being implemented to the libraries TFC uses. So in the end, TFC got v3 onions, X448 and XChaCha20-Poly1305 at the same time which was a nice improvement. "At best, attackers would keep trying to disrupt or brick the receiver and network components." DoS is indeed one of the unsolvable problems. The hope with the (now) anonymous installation and use, as well as the support for Tails on Networked Computer (still waiting for Tails 4.0), make it harder to disrupt users on targeted basis. I've worked hard to ensure Relay Program on Networked Computer doesn't need to know anything about the user or their contacts, and with Tails, ideally the OS doesn't contain anything that could be used to identify the user.
- nickpsecurity 8y agoYou too, buddy. I've been here and on Lobste.rs mostly. All my CompSci papers are in my Lobsters stories if you want to check those out. " The Snowden documents and Hayden's comment on killing people based on metadata made it clear something that's anonymous by default was the way to go." Definitely a concern. Definitely should be an option. Just gotta remind you that the NSA and some other groups automatically classify people using Tor as folks to watch. Whereas, HTTPS at McDonald's WiFi doesn't get that designation. Avoiding Tor can help you avoid getting noticed in the first place. Depends on user's threat model. So, make sure it supports ability to not use Tor even if Tor is default. "and after I asked about OnionShare's (that's also written on Python) Tor connectivity, Micah Lee kindly pointed me to the direction of Stem. Stem's author Damian Johnson and other members of Tor Project were really helpful and I can't thank them enough." Sounds like how OSS development and communities are supposed to work! :) "DoS is indeed one of the unsolvable problems." Good thinking so far. For non-anonymous routes, perhaps investigate some setup that operates behind Cloudfare to get their DDOS resistance. They just become an extension of the untrusted, network component. Could make that part modular so users can swap out the service provider or even use their own anti-DDOS appliances in data center with big pipes. It's just hard to beat the big, centralized providers since vast majority of solving DDOS is huge pipes and the right hardware/software for detection.