Never Use Pixelation to Hide Sensitive Text (2014)

(dheera.net)

67 points | by basilikum 7 days ago

9 comments

  • petters 55 minutes ago
    Paedophile Used 'Swirl' Effect To Hide. How Interpol 'Unswirled' Him: https://www.ndtv.com/world-news/christopher-paul-neil-paedop...
    • croes 13 minutes ago
      So there are cases where I would recommend using such obfuscation techniques.
      • hinkley 10 minutes ago
        Maybe we should use whistle blowers and freedom fighters as examples though and not predators.
  • alright2565 40 minutes ago
    The Flameshot screenshot tool uses an interesting variant of pixelation that does protect the text from unredaction: https://github.com/flameshot-org/flameshot/commit/533a1b7d55...

    > Since pixelation does not protect the contents of the pixelated area (see e.g. https://github.com/bishopfox/unredacter), _pseudo-pixelation_ is used:

    > Only colors from the fringe of the selected area are used to generate a pixelation-like effect. The interior of the selected area is not used as an input at all and hence can not be recovered.

    The edges of the pixelated area are used the generate a color palette, and then each pixel is generated by randomly sampling from that pallete's gradient.

  • KronisLV 2 hours ago
    To make it more fun for the maths nerds and to keep them guessing, replace the underlying contents with mostly random garbage (probably not full on obvious white noise) and then pixelize that: https://imgur.com/a/CTM4Zlv :)

    Not serious advice.

    • MadameMinty 2 hours ago
      I remember a protocol which required the text to be replaced with random-length output of a Markov chain text generator, and only then pixelizing.

      Oh, you've spent hours on unpixelizing my secrets? Well congratulations, is the last telescope that, nor drink from shrinking nothing out and this and shutting.

      • 0_____0 59 minutes ago
        if you fully control the text and layout, you could just replace the redacted text with [redacted]
      • pfortuny 2 hours ago
        Only names are allowed, of long-dead people.
    • ErroneousBosh 1 hour ago
      Oooh oooh I know, I know! Replace the text with strings of all-caps five-letter groups that look just like oldschool CW encrypted messages, and that'll keep the MXGJD SWLTW UODIB guessing until AMEJX OYKWJ SKYOW LKLLW MYNNE XTWLK!
      • Dwedit 14 minutes ago
        SATOR AREPO TENET OPERA ROTAS
  • jedberg 36 minutes ago
    Or, you do the equivalent of adding a hash, and apply mosaic to it twice, with two slightly different size regions. Or apply both mosaic and swirl in random order. Or put a piece of random text over it before you mosaic it.

    The main point here stands -- using something with a fixed algorithm for hashing and a knowable starting text is not secure. But there are a ton of easy fixes to add randomness to make it secure.

    • dheera 15 minutes ago
      Surprised to see my article float up again so many years later.

      I wouldn't consider a mosaic + swirl to be fully secure either though, especially considering both of these operations may preserve the sum of all pixels, which may still be enough entropy to dictionary attack a small number of digits.

      • jedberg 6 minutes ago
        It's probably the least secure of the ones I mentioned, yes. But even so, it massively increases the search space for a dictionary attack because the attacker doesn't know which algorithm was applied first.

        But yes, at the end of the day, the best bet is to just take a mosaic of a random text and place it over the text you're trying to obscure. The reason people use mosaic is because it is more aesthetic than a black box, but there is no reason it has to be a mosaic of the actual text.

  • vunderba 2 hours ago
    Good article - one takeaway is that any redaction process which follows a fixed algorithmic sequence (convolutions, transformation filters, etc) is potentially vulnerable to a dictionary attack.
    • dahart 1 hour ago
      I see what you mean, but FWIW “fixed” doesn’t sufficiently constrain or describe it. For example, filling a rectangle with black or random pixels is a fixed algorithmic sequence, same might go for in-painting from the background. The redaction output simply should not be a function of the sensitive region’s pixels. The information should be replaced, not modified.
  • Havoc 2 hours ago
    Or put simply - remove the info don't transform the info
  • tom1337 2 hours ago
  • hyperific 1 hour ago
  • MadameMinty 2 hours ago
    You should be blacking out information, to be sure, but credit card numbers are one of the very few examples where cracking makes sense, given that otherwise you don't know the pattern nor the font. Assuming it's text at all.
    • fwip 2 hours ago
      Or the common case of redacting a name, address, or other sensitive text in a screenshot of a web page, word doc or PDF. In those, getting the font is very straightforward.

      You also don't need to match the whole redacted text at once - depending on the size of the pixels, you can probably do just a few characters at a time.