6 ms·
You really should publish, as security through obscurity only hurts us! Out in the open, there is a chance that some measures will be taken. Concealment is a
by sinrostro 11y ago
You really should publish, as security through obscurity only hurts us! Out in the open, there is a chance that some measures will be taken. Concealment is a guarantee that bad guys will be doing bad things quietly.
- nickpsecurity 11y agoThat's a mainstream mantra but not true at all against High Strength Attackers (HSA's). They always have more resources than you do. They more they know, the more they can focus. That's why obfuscation on top of proven security techniques is the best strategy for use against HSA's. Gotta give them nothing (or false things) to aim at then have good detection or recovery measures. Proven strategy. Alternatively, I can publish my model. They can immediately move to counter the very specific things I do. Before you know it, they have a turn-key solution for compromising my devices individually or in bulk. Anyone using it is suddenly less safe. Knowing specifics will also benefit their stealth: less detection capability. Rather not publish that at least until I've developed something better. ;)
- AnthonyMouse 11y ago> That's a mainstream mantra but not true at all against High Strength Attackers (HSA's). They always have more resources than you do. That's why obscurity doesn't work. An attacker with many resources can reverse engineer whatever concealment you've concocted but the concealment is enough to deter other researchers who would have published their results from analyzing your system. So then the HSA knows of the attack and can take advantage of it but you don't so you can't counter it.
- nickpsecurity 11y agoNonsense. The attacker must expend significant effort to identify both the product- and user-specific obfuscations. That by itself does two things: (a) reduce number that can afford to attack you; (b) possibly force individual attacks instead of one size fits all. On top of this, there's a range of monitoring and tamper-resistance measures that can be employed. So, the result of such obfuscations plus strong, proven methods stops most attackers outright, helps catch some, and at least slows/limits others. Compare that to a situation where every detail is known and TCB (esp hardware & kernel) are same for all users. Find flaw easily, compromise any. That's your model. See the NSA TAO catalog and any reporting of mass hacks to see where that led. Your method simply doesnt work and is defeated even by average attackers. Whereas mine has held off many in practice with the few failures due to over-privileged, malicious insiders. Learn from the evidence. Apply strong methods, obfuscation, diversity, and detection in combination. Or High Strength Attackers own you without breaking a sweat.
- AnthonyMouse 11y agoYour argument is upside down. Unraveling obfuscation costs time and money, which means it may be able to deter amateurs (though the history of DRM implies it can't even do that). State-level attackers have nearly unlimited resources. You can't defeat them by costing them money because their money comes out of your paycheck. The only way to defend against them, if you have the hubris to think you're even capable of it, is to find and remove the vulnerabilities so there is nothing for them to exploit. Which makes obfuscation counterproductive because it makes things harder for whitehats who would otherwise help you. And diversity and obscurity are separate things so the diversity argument is a non-sequitur.
- nickpsecurity 11y agoOk, let's put your method to the test with a simple use case. There's two protocols for secure messaging: 1. The popular one that's been battle-tested, is written in C, and uses one algorithm in a specific way. 2. My method which starts with that protocol, applies a technique for protecting C code, uses 2-3 of AES candidates, has a different initial counter value, and a port-knocking scheme. Each of these are unknown and randomized on a per user-group basis. You have an encryption or protocol flaw. Your goal is to intercept these users' communications. You do not have an attack on their endpoints. Which of (1) or (2) is harder? Your argument already fails at this point. Let's continue, though. You first have to figure out the portknocking scheme. That means you must identify which part of the packet headers or data are used to do it plus how its done plus attack how its done. This is already a ridiculously hard problem evidenced by the fact that nobody's ever bypassed it when I used it: always went straight for endpoints or social engineering attempts. Using a deniable strategy like SILENTKNOCK can make it provably impossible for them to even know it's in use. Next are the ciphers. They don't know which one is in use. The non-security-critical values fed into it are randomized in such a way that they might have to try more possibilities than are in the universe just to start the attack. A weakness in any one algorithm won't help them. Unlike most SW people, I also address covert channels: no leaks to help them. What are odds your attack will work on my users? Next is the protocol engine. This is where they have a solid chance of screwing me up because mainstream loves dangerous languages, OS's, and ISA's. However, there are dozens of ways to obfuscate/immunize C code against most likely attacks and safe system languages I can reimplement it in while checking assembler. Further, if I make it static & a FSM, I can use tools like Astree for C or SPARK Ada to prove it free of errors. Without the binary and w/ limited online attacks, these guys would have to be geniuses to find an attack on it. After they beat the port-knocking scheme that was designed similarly... The use of provably strong mechanisms in layers is in NSA's own evaluation criteria as the kind of thing that stops nation-states. And stopped NSA's own red teams in the past during A1/EAL6/EAL7 evaluations. They depend on it for most critical stuff. Applying sound principles plus things easy for defender but exponentially harder for attacker makes a fence so high even nation-states have trouble jumping over it. They're forced to do one of several things: use very best attacks that might be lost during a detection; get physical, increasing odds of detection; ignore you to attack someone else for reasons of cost-effectiveness and keeping their best stuff stealthy. They usually do the latter that I see, even NSA per Snowden leaks. Of course, I'm sure you and others on your side will continue handing them your source, protocols, exact configurations, and so on to enable them to smash it. I'm sure you'll use the reference implementation without any changes so one attack affects you along with hundreds of thousands to millions. However, anyone that wants enemies to work for their system should take my approach as it provably increases their difficulty so much that almost all of them will leave you alone or try other attack vectors. This strategy should be applied from ISA to OS to client & server software. And if you have holistic security, you'll prevent or eventually detect most of their other attacks, too. Worst case, one or two of the elite groups get in while you're still safe from the others (esp most damaging). Still better than the "give it all to all of them" approach to security you're endorsing.
- sinrostro 11y agoIt is foolish to assume that HSAs don't already have access to whatever you, some guy on the Internet, know. So you can be an asshat, or do the right thing and try to 'protect the muggles' by letting information be available to all. They might feel threatened enough to pull valuables from unsafe places (such as networked computers).
- nickpsecurity 11y agoIt's not foolish if one understands high assurance security well enough that his recommendations preempted or predicted many specific things in TAO catalog. And most other stuff they did. It's easy once you understand nature of INFOSEC plus their nature. No they don't have my methodology: I never put it into digital form. Use paper is rule No 1 in high security. The only people I talked go were ideological who I vetted. It's mostly in my head and on paper hidden well in areas with tamper-evidence. They're watching my comms but no black bag jobs. So the method is safe for now. And what are you going to do with it? All of us high security engineers who arent in defense, sell-outs, etc are typically ignored by mainstream INFOSEC. People don't do shit even when we have evidence. People do less than that on open HW even with cheap FPGA's. You really think one of us is gonna burn our own security just to publish an obfuscation people won't use or give us anything for? Like hell... You want write-ups and design details on high security I got plenty of that. Keep master copies on Schneier's blog. Will send them. Not giving away something this big that you cant even afford to use. Not till I have a replacement...
- calgoo 11y agoThere is also this thing of legacy code... What if 3, 5, 10 years from now when you have moved on to your next super project, but someone has based system XYZ on your code. If they need to write a driver or similar, I'm sure they would be a lot happier to have a documentation that clearly states a design etc then a document saying: "This was hidden so big bad guys cant look!".
- nickpsecurity 11y agoHigh assurance requirements going back to Orange Book's A1 class said the source code and evaluation evidence comes with the software. Further, customers were encouraged to re-run the tests & compilation, generate the system on-site, set it up according to secure configuration guide, and report any problems back to vendor. They become part of the evaluation process although real work was to be done by security professionals at evaluation lab and NSA's pentesters. Here's an example of one from one of father's of INFOSEC that handed NSA's ass to them in 2 years of pentesting: http://www.iwia.org/2005/Schell2005.PDF http://www.iwia.org/2005/Schell2005.PDF The original was based on custom hardware and firmware because Schell etc had good foresight. :) It was put on Intel because DOD and commercial sector wanted commodity products. So, probably issues at those layers that could breach security. Nonetheless, the kernel was what was designed with high assurance and will illustrate nicely what comes out of that. Note that this was the 1980's when it was designed. Still more secure, easier to review, and easier to extend than most modern software... So, I'd have to supply customers the source to meet your requirement. I could also show them how to protect it. However, thanks to design approach, a high assurance proprietary system is easier to work with than a low assurance FOSS system. It's because the process absolutely forces that design to be a simple, modular, layered, and correct as possible. I wrote up some links on how that's done here in context of subversion and hardware: https://news.ycombinator.com/item?id=10478742 https://news.ycombinator.com/item?id=10478742
- coldtea 11y ago>as security through obscurity only hurts us! People keep saying that, but nobody proposes we all reveal our passwords. Obviously SOME obscurity is beneficial...
- mikeash 11y agoSecurity through obscurity is specifically about secrecy in the design or implementation of a system, not the specific parameters used with the system. It's not a catch-all phrase referring to any possible secrecy.
- nickpsecurity 11y agoI thought it meant that the only security came from secrecy of design or implementation. Pro's keeping a good design/implementation secret, esp hardware, provably increases difficulty for attackers. So it's a legit method we call obfuscation. I'll go further to say it's a pre-requisite against nation-states as knowing design/implementation is first step to compromise. And they usually do.
- mikeash 11y agoI think the two ideas are conflated a lot, because it's so rare to have a secret system that is actually secure. In practice, a secret design or implementation is probably insecure, even if theoretically it doesn't have to be. If the design or implementation is fixed in stone, then keeping it secret can only help, certainly. Most aren't, though, especially while they're still being developed. At that stage, if you can get smart people interested in helping, then openness will help far more than it hurts because you're far more likely to discover problems before the bad guys do.
- nickpsecurity 11y agoIt's usually true that the secret designs are insecure. I'll give you that. I only trust that which is done by pro's with review, esp with high assurance methods. Most things aren't like that. Easy to see how the interpretations would get conflated a lot. Far as help or review, there's a false dilemma that goes around between something being so open I put it in a Hacker's News comment and totally closed. In reality, there's many things between with the review being more important than openness. I tried to address it in this write-up: https://www.schneier.com/blog/archives/2014/05/friday_squid_bl_424.html#c6051639 https://www.schneier.com/blog/archives/2014/05/friday_squid_... Goal was to get people to consider proprietary, open-source models more to ensure steady flow of cash to maintain/audit security-critical software. Dual-licensing at the least. Might prevent another OpenSSL debacle. Far as actively developed, that's a good point. The trick there is to make sure you have guidelines for how to use the security-critical functionality and stick to them. The common stuff that's prone to error is done in a way that defaults to security. An example is how Ada or Rust approach memory/concurrency safety vs C. Not a guarantee by itself but raises bar considerably. The parts that are obfuscated have little risk on the security-critical aspects and are more about changing likelihood that shellcode will do its job. There's even methods in academia to do this automatically at compiler level. So, this is what I'm saying. You should definitely have pro's in-house or (if possible) externally to review the design for flaws. Just do Correct by Construction, make design as boring as possible, and obfuscate the hell out of any aspect you can without introducing risk. An example from my work when I did high security consulting was to put guards in front of any networked service. The guard blocked attacks like DMA, TCP/IP, whatever. The messages they passed along were simple, easy to parse, and landed directly in the application. The application itself had automatic checking of buffers, etc. My biggest trick, though, was to use the guard to fake a certain platform/ISA (Windows/Linux on x86) while app actually ran on different OS and ISA (eg POWER/SPARC/Alpha/MIPS). They'd hit it constantly with stuff too clever for me to even want to waste time understanding. Never executed because they couldn't see what they needed to see. And all the good security hardening, patches, monitoring, and whatnot. Strong security practices + effective obfuscation = TLA's remote attacks stood no chance. :)