×
you are viewing a single comment's thread.

view the rest of the comments →

[–]gwern 102 points103 points  (28 children)

Mirrored to https://gwern.net/Turing-complete#on-seeing-through-and-unseeing


I analogize 'Nakatomi space' to 'weird machines', and I think what they/OP/security/speedrunning/hacking/social-engineering all have in common is that they show that the much-ballyhooed 'hacker mindset' is, fundamentally, a sort of reductionism run amok, 'seeing through' abstractions to a manipulable reality. ('Thinking outside the box' can be this, but often isn't. This is a very specific pattern of reductionism, and many instances of 'thinking outside the box' are other patterns, like putting on another layer, or eliminating the systems in question entirely.)

In each case, the fundamental principle is that the hacker asks: "here I have a system W, which pretends to be made out of a few Xs; however, it is really made out of many Ys, which form an entirely different system, Z; I will now proceed to ignore the Xs and understand how Z works, so I may change some Ys to thereby change W however I like". The abstractions always leak. This is in some sense the opposite of a mathematician; a mathematician tries to 'see through' a complex system to a simpler more abstract more true version which can be better understood & manipulated, but the hacker is instead trying to unsee the simple abstract system to a more complex less abstract (but more true) version. (A mathematician might try to transform a program up into successively more abstract representations to eventually show it is trivially correct; a hacker would prefer to compile a program down into its most concrete representation to brute force all execution paths & find an exploit trivially proving it incorrect.)

It's all 'atoms and void':

  • In hacking, a computer pretends to be made out of things like 'buffers' and 'lists' and 'objects' with rich meaningful semantics, but really, it's just made out of bits which mean nothing and only accidentally can be interpreted as things like 'web browsers' or 'passwords', and if you move some bits around and rewrite these other bits in a particular order and read one string of bits in a different way, now you have bypassed the password.
  • In speed running, a video game pretends to be made out of things like 'walls' and 'speed limits' and 'levels which must be completed in a particular order', but it's really again just made out of bits and memory locations, and messing with them in particular ways can give you infinite 'velocity' or send you to the 'end' of the game.
  • In robbing a hotel room, people see 'doors' and 'locks' and 'walls', but really, they are just made out of atoms arranged in a particular order, and you can move some atoms around more easily than others, and instead of going through a 'door' you can just cut a hole in the wall (or ceiling) and obtain access to a space. (That example reminds me of the Carr & Adey anatomy of locked room murder mysteries, laying out a taxonomy of all the possible solutions which, like a magician's trick, violate one's assumptions about the locked room: whether it was always locked, locked at the right time, the murder done while in the room, murder rather than suicide, the room having a ceiling etc, which inspired Umineko, although there a lot of them just turn out to involve conspirators/lying.)
  • In weird machines, you have a 'protocol' like SSL or X86 machine code which appear to do simple things like 'check a cryptographic signature' or 'add one number in a register to another register', but in reality, it's again processor states and widgets and things like reading other parts of memory and then quickly erasing it, and these can be pasted together to execute operations and reveal secrets without ever running 'code'.

    Similarly, in finding hidden examples of Turing completeness, one says, 'this system appears to be a bunch of dominoes or whatever, but actually, each one is a computational element which has unusual inputs/outputs; I will now proceed to wire a large number of them together to form a Turing machine so I can play Tetris in Conway's Game of Life or use heart muscle cells to implement Boolean logic or run arbitrary computations in a game of Magic The Gathering'.

    Or in side channels, you go below bits and say, 'these bits are only approximations to the actual flow of electricity and heat in a system; I will now proceed to measure the physical system' etc.

  • In social engineering/pen testing, people see social norms and imaginary things like 'permission' and 'authority' and 'managers' which 'forbid access to facilities', but in reality, all there is is a piece of laminated plastic or certain magic jargon words spoken with people being elaborate ways of implementing simple rules like 'if laminated plastic, allow in', and if you put on a blue piece of plastic to your shirt and you incant certain words at the right time, you can walk right past the guards or a person will speak back to you more magic jargon words (which are a password or something else).

  • and while we're at it, why are puns so irresistible to hackers? Computers are nothing but puns on bits, and languages are nothing but puns on letters. Puns force one to drop down from the abstract semantic level to the raw syntactic level of subwords or characters, and back up again to achieve some semantic twist.

And so on. These sorts of things can seem magical ("how‽'), shocking ('but - but - that's cheating!'), or hilarious (in the 'violation of expectations followed by understanding' theory of humor) because the abstract system W & our verbalizations are so familiar and useful that we quickly get trapped in our dreams of abstractions, and forget that it is merely a map and not the territory, while inevitably the map has made gross simplifications and it fails to document various paths from one point to another point which we don't want to exist. Perversely, the more educated you are, and the more of the map you know, the worse this effect can be, because you have more to unsee. This is why atheoretical optimization processes like animals (eg cats) or SMT solvers or AI can be so good at surprising us and finding 'unreasonable' inputs or hacks: being unable to understand the map, they can't overvalue it, and must explore the territory directly to get what they want.

[–]jedavNot a clever man 12 points13 points  (0 children)

I've been reading Gods of the Word and one of the things I like about it is that she links poetry to this abstraction-breaking as well, where it's not just about what the words mean on the surface, but about the actual sounds (rhymes, alliteration, meter), so a poem operates on two levels of abstraction at once, much like a weird-machine program that has to validate as normal input but achieves effect by operating outside the abstraction.

She doesn't say it quite like that, but the author is a programmer so I think she was thinking something like it.

I'm dubious of the rest of the book, but she had that one interesting point at least.

[–]Moreauverthedag 16 points17 points  (4 children)

Oh man, hearing “map and not the territory” is giving me flashbacks to studying Baudrillard.

This hyper-reductionist mindset is a lot like the concept of ostranenie, a property recognised by Russian Formalists. Is all lateral thinking possible due to people rejecting and defamiliarizing the structures by which people normally think?

[–]gwern 24 points25 points  (3 children)

Defamiliarization is a great word in this context. I was wondering whether to elaborate on that and point out that a lot of ways to avoid errors inherently rely on defamiliarization to break our semantic illusions. For example, you can't find typos in your own writing without a great deal of effort because you know what it's supposed to say; so copyediting advice runs like 'read it out loud' or 'print it out and read it' or 'wait a week' or even 'read it upside down' (easier than it sounds). That's the sort of thing it takes to force you to read what you actually wrote, and not what you thought you wrote. Similar tricks are used for learning drawing: a face is too familiar, so instead you can flip it in a mirror and try to copy it. Literary criticism is susceptible to this too, like Ted Chiang's "Story Of Your Life" - quite obviously not a time travel story if you simply read it straightforwardly and don't simply run roughshod over it because you expect it to be a time travel story.

[–]NacatlGoneWildNMDA receptor 12 points13 points  (1 child)

This is also how many meditation techniques work: by repeatedly observing a simple action (e.g. breathing) in as much detail as possible, the equivalent of semantic satiation occurs. What would otherwise be bundled together as a single thing or event is instead observed as a collection of correlated thoughts, perceptions, and actions. By observing how this bundling process occurs (or doesn't occur), it becomes possible to notice its general properties.

[–]fuboso we read and we watched all the specially selected news 6 points7 points  (0 children)

... oh. Huh.

You know, I really hope that isn't one of those things that stops working when someone points out how it works.

But it's probably not; after all, people have been pointing out things about meditation for many centuries now and most of those folks seem to have thought that it was still worth doing.

Edited to add: I checked. It keeps working.

[–]Lykurg480The error that can be bounded is not the true error 2 points3 points  (0 children)

I think often these dont just rely on removing a system from your brain, but also add an alternative. Not always, the architecture thing for example you really just need to unlearn and use your normal understanding of physics. But "the computer is just bits" actually requires you to learn more. Yes, in terms of physics, the bits are "lower level", but in terms of human understanding, you still access them through the level of programms (mostly. sometimes you just hold magnets against the hard drive). Similar with the turing machine in MTG.

[–]daermonnan upside-down Prophet, an inside-out God 6 points7 points  (0 children)

I haven't read that "Trying to see through" essay in such a long time, but it's a great read.

Are you familiar with any formal or philosophical treatments of abstraction? What's the relationship between the underlying system and the abstract system? How do we translate between them in each direction? What makes an abstraction better or worse (leak more/less?)? &c.

It's always been a keen interest of mine, but I'm not really familiar with anything dealing with it explicitly, maybe something like this/info-compression or something like hierarchical bayesian networks is the best model I have. Your comment here is a fantastic illustration of it, by the way.

[–]Shadowex3 5 points6 points  (5 children)

Is it going up or down in abstraction to cut through the verbosity and vocabulary and sum that up as "Trying to look at things with as few assumptions about what they 'are' and how they're 'supposed' to work as possible"?

Because imho that's really the fundamental operation at work.

Or in side channels, you go below bits and say, 'these bits are only approximations to the actual flow of electricity and heat in a system; I will now proceed to measure the physical system' etc.

Incidentally this was actually one of the ways that airgapping was defeated. Some clever hackers realised that a computer gives out an enormous amount of "information" in various ways just by operating. The noise of its capacitors, the sound of fans at work, even various forms of radiation given off by patterns in operation and power consumption. They just needed to find a way to deliberately encode information in one of those that didn't draw too much unwanted attention and could be reliably read by the intended recipient.

[–]gwern 2 points3 points  (4 children)

Is it going up or down in abstraction to cut through the verbosity and vocabulary and sum that up as "Trying to look at things with as few assumptions about what they 'are' and how they're 'supposed' to work as possible"?

It's going up, because you are eliminating all of the concrete examples and explanations for why the movement is difficult & unnatural and people are shocked by actual instances where this empty-sounding summary manifests in real life.

Saying "Try to look at things with as few assumptions as possible" is about as useful as saying, "the secret to successful trading is to buy low and sell high", or "to not be fooled by a stage magician, make as few assumptions as possible", or "to write secure programs, think about all the possibilities". If those summaries mean the same thing & teach you everything a longer treatment does, then I apologize for wasting your time by explaining the obvious while you slum it with us mortals.

[–]Shadowex3 2 points3 points  (3 children)

I don't think examples are in the same category as changing the level of abstraction you're working at, otherwise you could continually go down in abstraction by just adding on more examples endlessly. Yes they help illustrate the intention of the point being made but it doesn't change the actual substance of the statement.

[–]gwern 1 point2 points  (2 children)

otherwise you could continually go down in abstraction by just adding on more examples endlessly.

You certainly could by adding on examples inside each example, explaining on a lower more concrete level why they had the behavior being summarized on the higher level by things like 'walls' or 'bits'.

(And if you really want to push it, I think your summary is, aside from being uselessly vague, actually a lousy one, because it misses the essence of systems being on multiple levels. The problem is not making 'assumptions'. Those assumptions are good and how we get anything done. The problem is their limits. But with your version, you could have a 1 level system where the Xs are in fact all that there is, there is no Z/Y, and you simply poorly understand the Xs, which your summary would apply equally well to. Discovering an error in your assumptions of Xs is laudable, but it is not what is distinctive about the hacker/security mindset.)

[–]Shadowex3 2 points3 points  (1 child)

I never said they were a problem, I just said that the entire exercise in onanistic jargon can be simplified by saying in plain english that someone is trying to consciously think their way through something with as few of them as possible.

The original submission for example is simply a thief realizing that everybody (included him at first) assumed he was going to go through doors or some other conventional means of entry and nobody considered the idea of cutting through the wall.

[–]gwern 2 points3 points  (0 children)

It can't be simplified without losing the entire point of writing it, as I already explained. Your simplification is both wrong and useless.

[–]redrick_schuhart 4 points5 points  (0 children)

Outstanding comment. I read your essay many years ago the same week that I watched a video on YouTube, long since gone, called The Psychogeography of The Shining, which explores how the architecture of the hotel has a deep effect on the mood of the characters and the story.

[–]ansible 3 points4 points  (1 child)

... I will now proceed to ignore the Ys and understand how Z works ...

Small typo:

I think you meant "... I will now proceed to ignore the Xs and understand how Z works ...

[–]gwern 2 points3 points  (0 children)

Yes.

[–]appropriate-username 2 points3 points  (2 children)

why are puns so irresistible to hackers?

Is there any basis to your assumption that hackers value puns more than any other random group?

[–]gwern 5 points6 points  (0 children)

Hackers are famous for it. Have you never noticed? It's highlighted in pretty much every work describing their predilections, like the Hacker Jargon File: look at the entry for Humor and compare it to the unseeing I've described above, and note how many of the list items are related. Or think about Godel Escher Bach or recursive acronyms or...

[–]trivial 1 point2 points  (0 children)

I figured that was just common among for lack of a better term, nerds

[–]Neighbor_ 2 points3 points  (3 children)

You sound craaaazy smart. You will do great things I am sure.

[–]underhunter 2 points3 points  (2 children)

I have no idea what this dude is talking about. Jesus

[–]Neighbor_ 1 point2 points  (1 child)

I am pretty sure this guy is the next Einstein or Djikstra, his thinking is on another level.

[–]underhunter 3 points4 points  (0 children)

His website is fucking bonkers dude

[–]TotesMessengerharbinger of doom 4 points5 points  (0 children)

I'm a bot, bleep, bloop. Someone has linked to this thread from another place on reddit:

 If you follow any of the above links, please respect the rules of reddit and don't vote in the other threads. (Info / Contact)

[–]Golden_Lynel 1 point2 points  (0 children)

This is gold worthy. Too bad I'm broke lol

[–]NationalGeographics 0 points1 point  (0 children)

I think one of the greatest names for something so absolute is "Assembly Language". The grail of nothing but the register and bit allocation languange. Talking to the metal.

[–]EastPoleVault 0 points1 point  (0 children)

There is also a case of skilled tinkerers/repairmen, who see that Machine A only pretends to be made of Parts of Machine A; he/she sees a tube, a cable, a flywheel, a thingamajig with certain qualities - very similar to the part he seen inside a potential donor, entirely different Machine B.

Heck, somewhere down the line one of our ancestors seen seemingly large and dangerous beast as composed of: eyes with certain field of view, weak spots and long list of conditions affectng its mobility. Down it went.

Way of thinking as old as humanity, it seems.