This weekly roundup thread is intended for all culture war posts. 'Culture war' is vaguely defined, but it basically means controversial issues that fall along set tribal lines. Arguments over culture war issues generate a lot of heat and little light, and few deeply entrenched people ever change their minds. This thread is for voicing opinions and analyzing the state of the discussion while trying to optimize for light over heat.
Optimistically, we think that engaging with people you disagree with is worth your time, and so is being nice! Pessimistically, there are many dynamics that can lead discussions on Culture War topics to become unproductive. There's a human tendency to divide along tribal lines, praising your ingroup and vilifying your outgroup - and if you think you find it easy to criticize your ingroup, then it may be that your outgroup is not who you think it is. Extremists with opposing positions can feed off each other, highlighting each other's worst points to justify their own angry rhetoric, which becomes in turn a new example of bad behavior for the other side to highlight.
We would like to avoid these negative dynamics. Accordingly, we ask that you do not use this thread for waging the Culture War. Examples of waging the Culture War:
-
Shaming.
-
Attempting to 'build consensus' or enforce ideological conformity.
-
Making sweeping generalizations to vilify a group you dislike.
-
Recruiting for a cause.
-
Posting links that could be summarized as 'Boo outgroup!' Basically, if your content is 'Can you believe what Those People did this week?' then you should either refrain from posting, or do some very patient work to contextualize and/or steel-man the relevant viewpoint.
In general, you should argue to understand, not to win. This thread is not territory to be claimed by one group or another; indeed, the aim is to have many different viewpoints represented here. Thus, we also ask that you follow some guidelines:
-
Speak plainly. Avoid sarcasm and mockery. When disagreeing with someone, state your objections explicitly.
-
Be as precise and charitable as you can. Don't paraphrase unflatteringly.
-
Don't imply that someone said something they did not say, even if you think it follows from what they said.
-
Write like everyone is reading and you want them to be included in the discussion.
On an ad hoc basis, the mods will try to compile a list of the best posts/comments from the previous week, posted in Quality Contribution threads and archived at /r/TheThread. You may nominate a comment for this list by clicking on 'report' at the bottom of the post and typing 'Actually a quality contribution' as the report reason.

Jump in the discussion.
No email address required.
Notes -
Certificates are free nowadays from any issuer worth your trust. I get the backlash against forcing HTTPS everywhere, but it is a genuine improvement over "walk into a coffee shop and pwn people's bank accounts/social media/email with them have no recourse or knowledge"
The benefit of the CA model is that it can assume that nation-states are, they themselves, a threat, and moreso than the browser developers. Sure you might not trust the preloaded list of certs, but you can always change that if you want (or ship your own browser with your own preloaded certs)
Obviously nation states are a threat, the problem is that CAs are not a very good way to mitigate that threat.
I am sure that the NSA can freely generate whatever certificates they want for at least half the CAs in my browser, but I am also assuming that they would prefer to just use the genuine private keys of the server instead. They can just hit google with a national security letter and make them cough up their keys. Much cleaner, because if you use a non-standard cert chain, there is always a chance your victim will publish it, which will embarrass your CAs.
The number of places where businesses will feel that defying the local government on matters of national security will best serve the interests of their shareholders is likely to be small.
For the record, I am not against SSL, I think it is pretty great actually. I just don't like the CA model where some 60 organizations have the authority to certify arbitrary domains.
Per Claude, about 5-8 CAs offer free certificates. That leaves some 50 certificates whom my browser trusts which you claim are not worth my trust. Trouble is, if I remove these, a good fraction of websites will not work any more.
If your point is that we should get rid of all the CAs other than Let's Encrypt, I think that this might actually be am improvement. Though I would also take crowdsourced validation. Let the website display its in-org certificate chain (with one of the root certs on top, if it must), but then let me query whatever third party I trust to see if that certificate is commonly used for that particular domain. (Though that would require judgement, which is not something one can expect of most internet users, sadly.)
At the nation-state things are on an entirely different level.
The frontier of things is resting on developments in adversarial machine learning. If you look at a lot of polymorphic variants of attacks from threat actors (the basic premise being that you want your code to change form without changing function), don’t imagine it as a rigid block of code but as a melody. If a system is trained on data to search for something like “Beethoven’s Fifth,” it’ll trigger an alarm whenever it hears those four notes. The “melody” itself is the logical flow of data; the way variables are manipulated and syscalls are invoked. The “instruments” are the specific CPU registers and the “tempo” is the sequence of junk instructions (e.g. NOP-sleds or opaque predicates).
The most sophisticated engines nation-states are working on involve heavily leveraging AST Rewriting. What it does is at the time of compilation, its first parsed into an abstract syntax tree (AST). The engine then intercepts the process and applies several layers of transformation:
It’ll swap registers. If a routine uses a register like
eax, ebxandecx, it’ll swap them foredi, esi, andedxthroughout the block, which changes the binary encoding of every instruction without altering its logic.Substituting instructions like replacing
add eax, 1withinc eaxor more complex substitutions like replacingxor eax, eaxwithsub eax, eax.Transpositioning code by reordering the blocks using
JMPinstructions maintain the original execution flow, which changes the physical layout.Inserting dead/junk instructions that don’t have any impact on the program state into the execution path.
So a basic register shuffling may look something like this:
B8 01 00 00 00 05 02 00 00 00 (mov eax, 1; add eax, 2). That’s a simple routine that moves a value into a register and then performs an addition. And so a security stack may go in and look for the standard signature of that hex pattern. So then what happens is the code will rewrite that sequence using opaque predicates, which is just a conditional branch where the same outcome is mathematically fixed but computationally difficult or expensive for a static analysis to determine. So for instance,if (x^2 + 1 > 0) (…)will always be true for real numbers; and by wrapping the payload in these logical constructs, you’re forcing the defender to execute the code in order to understand it and in doing so, you’re turning the defender’s own security stack against itself by getting it to run. Because by the time the EDR’s analyzed the payload of the current iteration, it’s already moved on, re-coded and now presented a new, unrecognized face to the next layer of defense. It doesn’t hide from the light, it changes what the light reveals. This is why a lot of vendors like CrowdStrike predicate the heart of their stack on behavioral-heuristic driven conflict and not signature analysis. The only constant is change itself.More options
Context Copy link
More options
Context Copy link
More options
Context Copy link