The laws of Australia will trump the laws of mathematics: Turnbull

Discussion in 'privacy general' started by Minimalist, Jul 13, 2017.

  1. Minimalist

    Minimalist Registered Member

    Joined:
    Jan 6, 2014
    Posts:
    14,881
    Location:
    Slovenia, EU
    http://www.zdnet.com/article/the-laws-of-australia-will-trump-the-laws-of-mathematics-turnbull/
     
  2. Krusty

    Krusty Registered Member

    Joined:
    Feb 3, 2012
    Posts:
    10,209
    Location:
    Among the gum trees
    When is 'not a backdoor' just a backdoor? Australia's struggle with encryption
     
  3. Minimalist

    Minimalist Registered Member

    Joined:
    Jan 6, 2014
    Posts:
    14,881
    Location:
    Slovenia, EU
    When asked what is a backdoor (from my first link):
    :)
     
  4. Minimalist

    Minimalist Registered Member

    Joined:
    Jan 6, 2014
    Posts:
    14,881
    Location:
    Slovenia, EU
  5. Krusty

    Krusty Registered Member

    Joined:
    Feb 3, 2012
    Posts:
    10,209
    Location:
    Among the gum trees
  6. RockLobster

    RockLobster Registered Member

    Joined:
    Nov 8, 2007
    Posts:
    1,812
    A few years ago I started working on a project that would convert data to an image format so that encrypted data would take the form of a random abstract image that would be impossible to prove was actually encrypted data.
    This proved to be more difficult than I thought it would be and I didn't get very far with it. I think I'm going to have another go at it. If anyone has links to any resources, source code or information that may be useful please send them to me in my messages. This would be a free, open source project.
     
  7. deBoetie

    deBoetie Registered Member

    Joined:
    Aug 7, 2013
    Posts:
    1,832
    Location:
    UK
    If you're looking at steganography of some kind, I actually found the wikipedia articles on watermarking and steganography illuminating. The basic problem of course being that image sensors have their own characteristic noise patterns (and image compression if any, makes that even worse), so you have to limit your message bandwidth even if you can emulate the sensor's behavior. As you say, it's not an easy problem.

    I read an amusing tale once that, because no real-life person can look at many images of the cute pets or babies of other people and remain sane, you could apply messages to the walls of such pictures.
     
  8. RockLobster

    RockLobster Registered Member

    Joined:
    Nov 8, 2007
    Posts:
    1,812
    What I was hoping to do was write an algorithm that would literally convert encrypted data to an image format and back again.
    You're right about image sensors and identifiable pixels and compression. I think the image format would have to be BMP and as the image would undoubtably end up as something very abstract it would not need to emulate image sensor noise as it would appear to have been created in an imaging application.
     
  9. deBoetie

    deBoetie Registered Member

    Joined:
    Aug 7, 2013
    Posts:
    1,832
    Location:
    UK
    Oh, I see. Perhaps Seurat-style could do the trick, encoding in the blobs? Tiff is probably a more defensible image format than Bmp for interchange.
     
  10. Stefan Froberg

    Stefan Froberg Registered Member

    Joined:
    Jul 30, 2014
    Posts:
    747
    So you want to convert encrypted gibberish to look like image of gibberish?
    Sure, no problem. What you need to do is first determine the image width and height based of the number of encrypted bytes (and try to keep it as optimized square as possible) and also color palette that has 256 color entries because 8bit byte (values from 0 - 255).

    Idea would be that in the two nested for-loops (one for width, one for height) you use your encrypted bytes as lookup index in that color palette and then put the pixel on the screen.

    I admit that this is not the nicest or most elegant way and things were much much more easier in the 80s and 90s when using just DOS, VGA 13h mode (320x200 256 colors) and it's default color palette and putpixel() function (you just put stuff into screen with putpixel(x,y,color) and call it a day, no messing with rgb values ;) )

    Below some example php code, some clear text test data that i tested it with (does not matter if clear, would work ofcourse with encrypted cipher equally) and the result itself. How big it is depens ofcourse of the amount of clear/cipher data and how "pretty" it looks depends of the color palette you use.

    Test data:
    http://catdir.loc.gov/catdir/enhancements/fy0711/2006051179-s.html

    Actual result:
    https://www.orwell1984.today/img3.php

    Code:
    <?php
    
    header("Content-Type: image/png");
    
    $buffer = file_get_contents("text.txt");
    $buffer_length = strlen($buffer);
    $n = 0;
    
    $width = ceil(sqrt($buffer_length));
    if( (sqrt($buffer_length) % floor(sqrt($buffer_length))) == 0) {
        $height = $width;
    } else {
        $height = ceil(($buffer_length / $width));
    }
    
    
    $im = imagecreate($width, $height);
    
    
    $color = array(
    imagecolorallocate($im, 0,0,0),     // first call always set background color (black here)
    imagecolorallocate($im, 128,0,0),
    imagecolorallocate($im, 0,128,0),
    imagecolorallocate($im, 128,128,0),
    imagecolorallocate($im, 0,0,128),
    imagecolorallocate($im, 128,0,128),
    imagecolorallocate($im, 0,128,128),
    imagecolorallocate($im, 192,192,192),
    imagecolorallocate($im, 128,128,128),
    imagecolorallocate($im, 255,0,0),
    imagecolorallocate($im, 0,255,0),
    imagecolorallocate($im, 255,255,0),
    imagecolorallocate($im, 0,0,255),
    imagecolorallocate($im, 255,0,255),
    imagecolorallocate($im, 0,255,255),
    imagecolorallocate($im, 255,255,255),
    imagecolorallocate($im, 0,0,0),
    imagecolorallocate($im, 0,0,95),
    imagecolorallocate($im, 0,0,135),
    imagecolorallocate($im, 0,0,175),
    imagecolorallocate($im, 0,0,215),
    imagecolorallocate($im, 0,0,255),
    imagecolorallocate($im, 0,95,0),
    imagecolorallocate($im, 0,95,95),
    imagecolorallocate($im, 0,95,135),
    imagecolorallocate($im, 0,95,175),
    imagecolorallocate($im, 0,95,215),
    imagecolorallocate($im, 0,95,255),
    imagecolorallocate($im, 0,135,0),
    imagecolorallocate($im, 0,135,95),
    imagecolorallocate($im, 0,135,135),
    imagecolorallocate($im, 0,135,175),
    imagecolorallocate($im, 0,135,215),
    imagecolorallocate($im, 0,135,255),
    imagecolorallocate($im, 0,175,0),
    imagecolorallocate($im, 0,175,95),
    imagecolorallocate($im, 0,175,135),
    imagecolorallocate($im, 0,175,175),
    imagecolorallocate($im, 0,175,215),
    imagecolorallocate($im, 0,175,255),
    imagecolorallocate($im, 0,215,0),
    imagecolorallocate($im, 0,215,95),
    imagecolorallocate($im, 0,215,135),
    imagecolorallocate($im, 0,215,175),
    imagecolorallocate($im, 0,215,215),
    imagecolorallocate($im, 0,215,255),
    imagecolorallocate($im, 0,255,0),
    imagecolorallocate($im, 0,255,95),
    imagecolorallocate($im, 0,255,135),
    imagecolorallocate($im, 0,255,175),
    imagecolorallocate($im, 0,255,215),
    imagecolorallocate($im, 0,255,255),
    imagecolorallocate($im, 95,0,0),
    imagecolorallocate($im, 95,0,95),
    imagecolorallocate($im, 95,0,135),
    imagecolorallocate($im, 95,0,175),
    imagecolorallocate($im, 95,0,215),
    imagecolorallocate($im, 95,0,255),
    imagecolorallocate($im, 95,95,0),
    imagecolorallocate($im, 95,95,95),
    imagecolorallocate($im, 95,95,135),
    imagecolorallocate($im, 95,95,175),
    imagecolorallocate($im, 95,95,215),
    imagecolorallocate($im, 95,95,255),
    imagecolorallocate($im, 95,135,0),
    imagecolorallocate($im, 95,135,95),
    imagecolorallocate($im, 95,135,135),
    imagecolorallocate($im, 95,135,175),
    imagecolorallocate($im, 95,135,215),
    imagecolorallocate($im, 95,135,255),
    imagecolorallocate($im, 95,175,0),
    imagecolorallocate($im, 95,175,95),
    imagecolorallocate($im, 95,175,135),
    imagecolorallocate($im, 95,175,175),
    imagecolorallocate($im, 95,175,215),
    imagecolorallocate($im, 95,175,255),
    imagecolorallocate($im, 95,215,0),
    imagecolorallocate($im, 95,215,95),
    imagecolorallocate($im, 95,215,135),
    imagecolorallocate($im, 95,215,175),
    imagecolorallocate($im, 95,215,215),
    imagecolorallocate($im, 95,215,255),
    imagecolorallocate($im, 95,255,0),
    imagecolorallocate($im, 95,255,95),
    imagecolorallocate($im, 95,255,135),
    imagecolorallocate($im, 95,255,175),
    imagecolorallocate($im, 95,255,215),
    imagecolorallocate($im, 95,255,255),
    imagecolorallocate($im, 135,0,0),
    imagecolorallocate($im, 135,0,95),
    imagecolorallocate($im, 135,0,135),
    imagecolorallocate($im, 135,0,175),
    imagecolorallocate($im, 135,0,215),
    imagecolorallocate($im, 135,0,255),
    imagecolorallocate($im, 135,95,0),
    imagecolorallocate($im, 135,95,95),
    imagecolorallocate($im, 135,95,135),
    imagecolorallocate($im, 135,95,175),
    imagecolorallocate($im, 135,95,215),
    imagecolorallocate($im, 135,95,255),
    imagecolorallocate($im, 135,135,0),
    imagecolorallocate($im, 135,135,95),
    imagecolorallocate($im, 135,135,135),
    imagecolorallocate($im, 135,135,175),
    imagecolorallocate($im, 135,135,215),
    imagecolorallocate($im, 135,135,255),
    imagecolorallocate($im, 135,175,0),
    imagecolorallocate($im, 135,175,95),
    imagecolorallocate($im, 135,175,135),
    imagecolorallocate($im, 135,175,175),
    imagecolorallocate($im, 135,175,215),
    imagecolorallocate($im, 135,175,255),
    imagecolorallocate($im, 135,215,0),
    imagecolorallocate($im, 135,215,95),
    imagecolorallocate($im, 135,215,135),
    imagecolorallocate($im, 135,215,175),
    imagecolorallocate($im, 135,215,215),
    imagecolorallocate($im, 135,215,255),
    imagecolorallocate($im, 135,255,0),
    imagecolorallocate($im, 135,255,95),
    imagecolorallocate($im, 135,255,135),
    imagecolorallocate($im, 135,255,175),
    imagecolorallocate($im, 135,255,215),
    imagecolorallocate($im, 135,255,255),
    imagecolorallocate($im, 175,0,0),
    imagecolorallocate($im, 175,0,95),
    imagecolorallocate($im, 175,0,135),
    imagecolorallocate($im, 175,0,175),
    imagecolorallocate($im, 175,0,215),
    imagecolorallocate($im, 175,0,255),
    imagecolorallocate($im, 175,95,0),
    imagecolorallocate($im, 175,95,95),
    imagecolorallocate($im, 175,95,135),
    imagecolorallocate($im, 175,95,175),
    imagecolorallocate($im, 175,95,215),
    imagecolorallocate($im, 175,95,255),
    imagecolorallocate($im, 175,135,0),
    imagecolorallocate($im, 175,135,95),
    imagecolorallocate($im, 175,135,135),
    imagecolorallocate($im, 175,135,175),
    imagecolorallocate($im, 175,135,215),
    imagecolorallocate($im, 175,135,255),
    imagecolorallocate($im, 175,175,0),
    imagecolorallocate($im, 175,175,95),
    imagecolorallocate($im, 175,175,135),
    imagecolorallocate($im, 175,175,175),
    imagecolorallocate($im, 175,175,215),
    imagecolorallocate($im, 175,175,255),
    imagecolorallocate($im, 175,215,0),
    imagecolorallocate($im, 175,215,95),
    imagecolorallocate($im, 175,215,135),
    imagecolorallocate($im, 175,215,175),
    imagecolorallocate($im, 175,215,215),
    imagecolorallocate($im, 175,215,255),
    imagecolorallocate($im, 175,255,0),
    imagecolorallocate($im, 175,255,95),
    imagecolorallocate($im, 175,255,135),
    imagecolorallocate($im, 175,255,175),
    imagecolorallocate($im, 175,255,215),
    imagecolorallocate($im, 175,255,255),
    imagecolorallocate($im, 215,0,0),
    imagecolorallocate($im, 215,0,95),
    imagecolorallocate($im, 215,0,135),
    imagecolorallocate($im, 215,0,175),
    imagecolorallocate($im, 215,0,215),
    imagecolorallocate($im, 215,0,255),
    imagecolorallocate($im, 215,95,0),
    imagecolorallocate($im, 215,95,95),
    imagecolorallocate($im, 215,95,135),
    imagecolorallocate($im, 215,95,175),
    imagecolorallocate($im, 215,95,215),
    imagecolorallocate($im, 215,95,255),
    imagecolorallocate($im, 215,135,0),
    imagecolorallocate($im, 215,135,95),
    imagecolorallocate($im, 215,135,135),
    imagecolorallocate($im, 215,135,175),
    imagecolorallocate($im, 215,135,215),
    imagecolorallocate($im, 215,135,255),
    imagecolorallocate($im, 215,175,0),
    imagecolorallocate($im, 215,175,95),
    imagecolorallocate($im, 215,175,135),
    imagecolorallocate($im, 215,175,175),
    imagecolorallocate($im, 215,175,215),
    imagecolorallocate($im, 215,175,255),
    imagecolorallocate($im, 215,215,0),
    imagecolorallocate($im, 215,215,95),
    imagecolorallocate($im, 215,215,135),
    imagecolorallocate($im, 215,215,175),
    imagecolorallocate($im, 215,215,215),
    imagecolorallocate($im, 215,215,255),
    imagecolorallocate($im, 215,255,0),
    imagecolorallocate($im, 215,255,95),
    imagecolorallocate($im, 215,255,135),
    imagecolorallocate($im, 215,255,175),
    imagecolorallocate($im, 215,255,215),
    imagecolorallocate($im, 215,255,255),
    imagecolorallocate($im, 255,0,0),
    imagecolorallocate($im, 255,0,95),
    imagecolorallocate($im, 255,0,135),
    imagecolorallocate($im, 255,0,175),
    imagecolorallocate($im, 255,0,215),
    imagecolorallocate($im, 255,0,255),
    imagecolorallocate($im, 255,95,0),
    imagecolorallocate($im, 255,95,95),
    imagecolorallocate($im, 255,95,135),
    imagecolorallocate($im, 255,95,175),
    imagecolorallocate($im, 255,95,215),
    imagecolorallocate($im, 255,95,255),
    imagecolorallocate($im, 255,135,0),
    imagecolorallocate($im, 255,135,95),
    imagecolorallocate($im, 255,135,135),
    imagecolorallocate($im, 255,135,175),
    imagecolorallocate($im, 255,135,215),
    imagecolorallocate($im, 255,135,255),
    imagecolorallocate($im, 255,175,0),
    imagecolorallocate($im, 255,175,95),
    imagecolorallocate($im, 255,175,135),
    imagecolorallocate($im, 255,175,175),
    imagecolorallocate($im, 255,175,215),
    imagecolorallocate($im, 255,175,255),
    imagecolorallocate($im, 255,215,0),
    imagecolorallocate($im, 255,215,95),
    imagecolorallocate($im, 255,215,135),
    imagecolorallocate($im, 255,215,175),
    imagecolorallocate($im, 255,215,215),
    imagecolorallocate($im, 255,215,255),
    imagecolorallocate($im, 255,255,0),
    imagecolorallocate($im, 255,255,95),
    imagecolorallocate($im, 255,255,135),
    imagecolorallocate($im, 255,255,175),
    imagecolorallocate($im, 255,255,215),
    imagecolorallocate($im, 255,255,255),
    imagecolorallocate($im, 8,8,8),
    imagecolorallocate($im, 18,18,18),
    imagecolorallocate($im, 28,28,28),
    imagecolorallocate($im, 38,38,38),
    imagecolorallocate($im, 48,48,48),
    imagecolorallocate($im, 58,58,58),
    imagecolorallocate($im, 68,68,68),
    imagecolorallocate($im, 78,78,78),
    imagecolorallocate($im, 88,88,88),
    imagecolorallocate($im, 98,98,98),
    imagecolorallocate($im, 108,108,108),
    imagecolorallocate($im, 118,118,118),
    imagecolorallocate($im, 128,128,128),
    imagecolorallocate($im, 138,138,138),
    imagecolorallocate($im, 148,148,148),
    imagecolorallocate($im, 158,158,158),
    imagecolorallocate($im, 168,168,168),
    imagecolorallocate($im, 178,178,178),
    imagecolorallocate($im, 188,188,188),
    imagecolorallocate($im, 198,198,198),
    imagecolorallocate($im, 208,208,208),
    imagecolorallocate($im, 218,218,218),
    imagecolorallocate($im, 228,228,228),
    imagecolorallocate($im, 238,238,238)
    );
    
    
    
    
    for($y = 0;$y < $height;$y++) {
        for($x = 0;$x < $width;$x++) {
            // we have still data to plot? ok, splash it to screen!
            if($n < $buffer_length) {
                imagesetpixel($im,$x,$y,$color[ord($buffer[$n++])]);
            } else {
                // sorry, no more data left ...
                // do nothing, carry on and let the loops run their course
                // that is, "fill" the rest of the image with background color
                // so that it's nice even size
            }
        }
    }
    
    
    imagepng($im);
    imagedestroy($im);
    ?>
    
    EDIT:
    Here's what the test would look when zoomed (note the partial black border in the bottom, that's because the test data could not be fitted into neat, even sized square)

    upload_2017-7-29_0-24-50.png

    EDIT2: Was missing ?> from the end of the php code and also added comment about background color of the first imagecolorallocate

    EDIT3: I found that this way of doing image "encrypting/decrypting" has one very big limitation. It won't handle UTF-8 text correctly, only plain old ASCII.

    But maybe it could be made to handle UTF-8 too with some tweaking ....
    https://en.wikipedia.org/wiki/UTF-8

    Hmmm ....
     
    Last edited: Jul 29, 2017
  11. RockLobster

    RockLobster Registered Member

    Joined:
    Nov 8, 2007
    Posts:
    1,812
    Yes that's what I meant Stephan, right now I'm on my phone I can't read your code properly until I get home, the problem is how to to it so it can be reversed to get the original data back out, my approach that I couldn't get to work was to try and map hex values to color values, to be honest not knowing much about coding image formats I really didn't even know where to start I did some experimenting but at that time I was very short of time to spend learning new stuff.
     
  12. deBoetie

    deBoetie Registered Member

    Joined:
    Aug 7, 2013
    Posts:
    1,832
    Location:
    UK
    The random image has characteristics that show it is not the product of a sensor. I'm not clear what the deniability is here, or what your explanation is for exchanging such images. Obviously it a bit more difficult for mass surveillance to parse, but they probably would be doing some form of automated check on images. After all, it's routine for some cloud storage to be scanning images for flesh....

    As far as the data coding to-from the image encoding, that's just some deterministic two-way mapping, no?
     
  13. RockLobster

    RockLobster Registered Member

    Joined:
    Nov 8, 2007
    Posts:
    1,812
    Well, the point is, in the near future some people are going to find themselves in countries where the use of unapproved non state encryption is banned, and ISP's will be used to filter out encrypted data and prevent its transmission.
    So for example if you are a human rights activist and have dangerous data that could carry a prison sentence for spying if you are caught with it, or equally, a prison sentence for illegal encryption if you have encrypted it, the only chance you have, is if it is impossible to prove to a judge it is encrypted data.
    So, if you can convert encrypted data to image format, I mean pure data, no unencrypted headers or anything like that, it would be a way to create unprovable plausible deniability.
    I know what you mean about image sensor data etc but once the data is in image format it might be possible to use image manipulation techniques to add fake image sensor data that can be removed or it might be possible to combine the new image with a random existing image that already has image sensor characteristics and then subtract one from the other when decrypting. I don't know how much of that is possible it would obviously take a lot of experimentation.
    In this manner it might be possible to store encrypted data, send encrypted data, upload encrypted data as an image to any site anywhere, and only someone who can reverse the process and then decrypt the data could prove it is ever was encrypted data. That would be you and the intended recipient. Of course anyone who views the webpage with the image could be that person so it has the added benefit of potentially obscuring who the intended recipient is.
    You might say no one can prove regular encrypted data is such either, without decrypting it, but if you can't prove it is something other than encrypted data you will probably lose the argument. In this case you can claim, it is just an image.
    Consider this post a patent for my idea under which any members of the public can use it to create free software applications, free of any obligation to me whatsoever. Corporations and Government agencies, you all have to pay me ludicrous amount of money to use this idea of mine else ima sue you.
     
    Last edited: Jul 29, 2017
  14. Stefan Froberg

    Stefan Froberg Registered Member

    Joined:
    Jul 30, 2014
    Posts:
    747
    Simple. Let's say I have sended you the above image, made with the example color palette.
    Now, you would also need to have the same color palette in text file or binary file and some program that takes that color palette file and the image gibberish file as input.

    The decoding would go like this in the hypothetical image decrypt program.

    1. Read the first pixel color rgb value
    2. Check if the equivalent color rgb value is found from the color palette file you have.
    3. If it is found then the index in that color palette is the ASCII code of the character.
    So for example index value 97 would be lowercase 'a' letter.
    4. Read the next pixel and repeat steps 2-3 until all the pixels have been read.

    Now, let's say NSA agent managed to capture that image file from wire.
    How easy would it be to decrypt it without having right color palette file?

    one 8bit byte has values from 0 - 255 (256 values in all, or 255 if taking account that index 0 is always the background or "no data" value). So the color palette file would act like an key with max. length of 255 (95 if only taking account for printable ASCII characters)

    http://www.theasciicode.com.ar/asci...wercase-letter-a-minuscule-ascii-code-97.html

    And each index position in that key can have rgb values from rgb(1,1,1) (black is for background color) to rgb(255,255,255).

    So how many possible combinations would NSA agent have to check until he/she gets it right and the image shows the thing in readable plaintext?

    And how does he/she even know if it's readable plaintext?

    The original data itself could be say, AES encrypted before converting to image and he/she could have skipped it accidentally because looking for clear readable text.

    Hmmmm....I think this has lot's of potential RockLobster :)

    EDIT: Hmmmmh.... Very quick image decrypting test works otherwise okay except that source text.txt was accidentally in UTF-8 format .... :cautious:

    upload_2017-7-30_0-15-59.png

    upload_2017-7-30_0-17-44.png
     
    Last edited: Jul 29, 2017
  15. RockLobster

    RockLobster Registered Member

    Joined:
    Nov 8, 2007
    Posts:
    1,812
    Good job Stefan I looked at your code it is a great proof of concept and yes that was the idea that the original data already encrypted before conversion to image format so like you say even if they stumble on the correct color pallet, they wouldn't know it because it would look still look like random data until after it is AES decrypted.
    I think encrypted data would be different to doing it with text through because I think encrypted data files are binaries.
     
  16. Stefan Froberg

    Stefan Froberg Registered Member

    Joined:
    Jul 30, 2014
    Posts:
    747
    Yes usually they are in binary format but they can be sended in ASCII format too (for example, PGP ASCII-armor).

    Here's example how to do AES 256-bit encryption of RFC SSH text file (https://www.ietf.org/rfc/rfc4251.txt) with the addition of making it more human friendly with the base64 coding (-a switch in that command-line)

    upload_2017-7-30_15-41-43.png

    If trying to view that encrypted message.enc file it would look like this:

    upload_2017-7-30_15-42-47.png

    But if doing the AES encryption without base64 converting (the -a switch) and then trying to view the output it would look like this:

    upload_2017-7-30_15-43-51.png

    So without base64, only those bytes that have correspondence in ASCII table are human readable. Only sane choice here without base64 would be to view the whole thing in hex and forget ASCII.

    Decrypting the base64-aes256 thingy

    upload_2017-7-30_15-46-28.png

    And viewing the plaintext

    upload_2017-7-30_15-46-45.png
     

    Attached Files:

  17. deBoetie

    deBoetie Registered Member

    Joined:
    Aug 7, 2013
    Posts:
    1,832
    Location:
    UK
    Oh, I'm fully on board with requirement. I'm less comfortable with the plausible deniability part. When they come knocking, I don't see the justification for having these random images. Or are you feeling it makes the knock on the door less likely?

    What I have thought about is something like a streaming webcam in the dark, where you could pop data onto the noise of the sensor. Trouble is, those feeds are compressed video by and large, so that makes recovery harder (or lowers the data rate). But, the trick is to emulate the noise characteristics of the webcam, which might not be that hard if you use a pre-recorded stream straight off the sensor and modify that slightly.
     
  18. RockLobster

    RockLobster Registered Member

    Joined:
    Nov 8, 2007
    Posts:
    1,812
    No the purpose is to hide the fact that the encrypted data exists. Imagine the following Scenario,
    Encryption is banned so you can't transmit encrypted files, you can't post encrypted messages, it is illegal to even posses encrypted data, so how do you get around that?
    One way might be, to make your encrypted data look like it is not an encrypted data at all, it appears to be just a PNG image.
     
    Last edited: Jul 30, 2017
  19. deBoetie

    deBoetie Registered Member

    Joined:
    Aug 7, 2013
    Posts:
    1,832
    Location:
    UK
    If "they" scan images (which is done routinely for detection of copyright infringement or flesh), then it will be (or could be) very obvious that the image is unusual to the extent that it has very high entropy for instance. I think this is security by obscurity, to the extent to which you are relying on checks not being done to detect this profile of use.
     
  20. RockLobster

    RockLobster Registered Member

    Joined:
    Nov 8, 2007
    Posts:
    1,812
    If the idea was simply to convert data to image format and call it good then you would probably be right, but in reality that would be just the initial proof of concept, as Stefan showed in his posts.
    The next stages would include improving the algorithm to create more artistic looking results so the resulting image would not be so unusual. For example you can use math to create pretty geometric patterns from random data.
    Omg I'm about to have a stroke!! Whoever invented touch screen phones needs to be shot in the face!! This stupid thing is literally driving me crazy it tries to do everything EXCEPT scroll the screen when all I want to do is scroll the screen!!
    Oh you touched the screen that means you must want to copy paste something :)
    Oh, you touched the screen again that means you must want to lose everything you typed an go to another webpage :)
    Oh wait, no, you touched something else on the screen, oh dear, say bye bye website because now I'm loading the home screen!!
    Ohhh you threw me at the wall !! Just for that I'm going to dissemble myself on impact, scatter parts all ovet the floor and lose your micro sd card, goodbye :)
     
  21. deBoetie

    deBoetie Registered Member

    Joined:
    Aug 7, 2013
    Posts:
    1,832
    Location:
    UK
    Ah fine, no worries.

    There must be therapists that can help with "smart"phone traumatic stress syndrome.
     
  22. RockLobster

    RockLobster Registered Member

    Joined:
    Nov 8, 2007
    Posts:
    1,812
    There is, his name is Jack he made me feel much better.
    Anyway yeah I was thinking ahead of just making images like the one Stefan did in his initial test, there are a lot of things you could do with random Image data and math, as long as it is reversable.
     
  23. Krusty

    Krusty Registered Member

    Joined:
    Feb 3, 2012
    Posts:
    10,209
    Location:
    Among the gum trees
    Encrypted message access laws Malcolm Turnbull proposed questioned by ex-NSA boss

     
  24. Stefan Froberg

    Stefan Froberg Registered Member

    Joined:
    Jul 30, 2014
    Posts:
    747
    With the help of base64 finally managed to make the encoding/decoding pictures work.

    upload_2017-8-1_4-35-58.png

    So the encoding goes like: source data -> base64 encode -> ready gibberish image
    And decoding ofcourse: gibberish image -> base64 decode -> original data

    In theory should work with other binary files too and not just pictures but ofcourse, can only actually show pictures and text only in the viewer portions
    (no, I won't make movie viewer into this thing).

    On a plus side, if have binary file that is, say, AES encrypted but not base64 encoded, this will do it for free :) (Won't probably bother to write code that checks possibility of AES-base64 thingy so possible double base64 encoded files will be just fact of life ... *sight*)

    Not much more left to do than create a random, unique color palette generator, ability to load any color palettes from file (currently hardcoded) and yeah ... test that damn UTF-8 text.

    And oh, yeah ... and filters ... GIMP has nice filters that create nice effects like this cubism (maybe GIMP filters are reversible?)

    upload_2017-8-1_4-37-57.png upload_2017-8-1_4-38-23.png

    RockLobster, can I have your permission to add you as father/mother of this idea in the credit dialog when/if I get this ready and kick out for download ?
     
  25. RockLobster

    RockLobster Registered Member

    Joined:
    Nov 8, 2007
    Posts:
    1,812
    Yes of course you can Stefan I am very impressed with the work you put into figuring out how to do this:)
    The gimp filter is a nice touch, if that is not reversable I'm sure there are other, reversable algorithms that could be used.
    This could begin to take encryption to another level, one where it becomes impossible to determine if any encrypted data even exists.
     
    Last edited: Jul 31, 2017
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.