Logo by LAR2 - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Check out the originating "3d Mandelbulb" thread here
 
*
Welcome, Guest. Please login or register. April 26, 2024, 07:21:07 AM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: [1] 2   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: Encrypted Fractal Root Storage...  (Read 7791 times)
Description: Storing information inside of escape time fractals...
0 Members and 1 Guest are viewing this topic.
Chris Thomasson
Conqueror
*******
Posts: 137



« on: May 22, 2016, 01:48:30 AM »

Check this out:

-------
Original idea by Juaquin Anderson in the comments of the
following thread:

https://plus.google.com/+JuaquinAnderson/posts/L9A3Da8ju3B



FWIW, here is the content of the comment:
_________________________________________________
“This has me thinking.. All the structure, in the reverse
iteration, and the sequence of roots, as well as the structure
of the level sets with the escape time algorithim.
Someone
suggested using fractals for encryption..

A method that would
actually work would be to choose an interesting value of c,
like this one, as the key.

1) If the message has length n bits,
choose a point in the n'th level set. The point can be chosen
by taking a starting point just outside the circle delimiting
the target set, and applying inverse iteration, choosing roots
by sign according to the bits in the sequence to be encoded.

2) the result would be a point (x+yi) that is inside the nth level
set close to the Julia set.

3) encode that point accurately
enough to not confuse with points of a level deeper or further
out, and transmit that point.

4) receive that point.

5) decode
the point by applying forwards iteration with the key value c,
until the point lands in the target set. Tge decoded message
would have n bits determined by writing down the sign of the
imaginary component of the escape orbit for each iteration.



Sounds easy right?

:-)

The efficiency of the encrypted coding scheme has to do with
the fractal dimension of the Julia set, and the degree of
imbalance of the contractivity in the tree traversal of the
Julia set."
_________________________________________________


Juaquin Anderson has taken fractal encryption to another level
beyond the stuff I have been experiment with. He is basically
encoding a sequence of bytes inside a single complex number.
The reverse iteration method for a Julia set is being used to
store information. Lets say a byte. Well, a byte is made up of
a number of bits, on or off. These bits are used to decide which
root to choose for the square root of z during reverse iteration
of (z = z^2 + c). After this reverse iteration, one ends up with
an interesting point p. This point p can actually recreate the
bits of the byte when exposed to forward iteration. The number
of iterations for both forward and reverse iteration directly
corresponds to how many bits it stores. I can only do around 40
bits, but the little program I wrote just does 8 for clarity.

So, for encryption c is the secret key and the cipher text is a
list of complex numbers, or a single complex number if one uses
an arbitrary precision library to calculate both the reverse and
forward iterations.

Here is a simple proof of concept program in C++11 that encodes
a single byte:

http://pastebin.com/4Yu8uSKH

If one can encode a single byte, then one can encode multiple
bytes, and arbitrary binary files.

I know that this is going to work like a charm. I am working on
another proof of concept program that shows how to encode multiple
bytes in a single complex number, instead of the single byte
example shown here...


Any thoughts?

What do you think about the code? Is it crap?

;^)


Thank you all.


Also, I have a fractal encryption scheme that is actually compatible with this using minimal changes of incorporation:

http://www.fractalforums.com/fractals-in-nature/fractal-encryption/

What do you think of the code?
Logged
eiffie
Guest
« Reply #1 on: May 22, 2016, 10:35:33 AM »

I will look at the code now but the method sounds solid. This wasn't even an area of interest to me until yesterday I got the idea of doing the same thing with the Game Of Life (it is deterministic going forward but you can choose bits when going backward). This is MUCH more straight forward. Off to steal your code!
edit: The code seems to work fine - it would be awesome if it didn't lose precision! I will go experiment as well. Thanks for this!
« Last Edit: May 22, 2016, 11:08:12 AM by eiffie » Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #2 on: May 22, 2016, 12:58:51 PM »

nice idea!  I thought about doing something similar with external angles in the Mandelbrot set, but Julia sets are better as you can pick a secret key c.
Logged
Chris Thomasson
Conqueror
*******
Posts: 137



« Reply #3 on: May 23, 2016, 08:46:28 PM »

I will look at the code now but the method sounds solid. This wasn't even an area of interest to me until yesterday I got the idea of doing the same thing with the Game Of Life (it is deterministic going forward but you can choose bits when going backward). This is MUCH more straight forward. Off to steal your code!
edit: The code seems to work fine - it would be awesome if it didn't lose precision! I will go experiment as well. Thanks for this!

Thank you for taking a look at the rather crude code. IMHO, it does indeed show how this can work. FWIW, here is another version of it that tests all bit patterns for a byte:

http://pastebin.com/VsvH3HdE

I am thinking of doing an HTML 5 app that visually shows how this works. IMHO, it is basically like storing information in a waveform. Also, AFAICT, Juaquin Anderson's original description has an error in it. He says that the sign of the imaginary part determines the proper bits to turn on during forward iteration. The code I quickly created shows that the sign of the real part is key to recreating the bit pattern. The signs of the imaginary parts are different than the information that was encoded during reverse iteration.
Logged
Chris Thomasson
Conqueror
*******
Posts: 137



« Reply #4 on: May 23, 2016, 09:03:32 PM »

nice idea!  I thought about doing something similar with external angles in the Mandelbrot set, but Julia sets are better as you can pick a secret key c.

Agreed! FWIW, the secret key c can be expanded into multiple c's during iteration. Think of a forward iteration like:

<quick pseudo-code>
___________________________________________

c[cmax] = { (julia point 0), (julia point 1), (julia point ...) };

for (unsigned int i = 0; i < imax; ++i)
{
    z = z^2 + c[i % cmax];
}

___________________________________________

One can expand the secret key space by using multiple Julia set seed points as c. FWIW, I have created some example renderings with this:







These did not have encrypted bit storage in mind, but they are all compatible with the overall technique.

There are many ways to create a larger keyspace. The one I have for my current fractal encryption:

http://funwithfractals.atspace.cc/ffe/

Is not that big, but gives an idea of how to do it.
Logged
Chris Thomasson
Conqueror
*******
Posts: 137



« Reply #5 on: May 23, 2016, 09:11:15 PM »

Humm... Another thought. So, wrt using multiple secret key's as c. I think the bits of the plaintext can be used to select from a pool of c's. AFAICT, this would greatly expand the key space. Not only does reverse iteration store data wrt roots of the sqrt of c, but it has multiple c's to choose from. The secret key would contain an array of different c's. The bits of the plaintext determine what c to use. any thoughts? Is this a crap idea? Humm...
Logged
Chris Thomasson
Conqueror
*******
Posts: 137



« Reply #6 on: May 23, 2016, 09:39:39 PM »

I will look at the code now but the method sounds solid. This wasn't even an area of interest to me until yesterday I got the idea of doing the same thing with the Game Of Life (it is deterministic going forward but you can choose bits when going backward). This is MUCH more straight forward. Off to steal your code!
edit: The code seems to work fine - it would be awesome if it didn't lose precision! I will go experiment as well. Thanks for this!

The precision loss is the bastard wall that is limiting the number of bits I can store in a complex number with double's. I can store 32, but anything larger than 40'ish starts to die, and produce radical errors during forward iteration, some bits actually decrypt, and others fail. I think an arbitrary precision lib can be used to store N bits in a single complex number. That would be interesting. I have not tried it yet. Humm...
Logged
eiffie
Guest
« Reply #7 on: May 23, 2016, 10:41:22 PM »

Yep I hit the 40 bit limit right away as I was wondering if this can do compression. You can use arbitrary precision but the complex number will have more bits than what is encrypted. (2x32 bit floats to 40 bits) No compression there - but IF there is a formula that works with integers to create the same +/- encoding then you could compress an arbitrary length string of bits into 2 integers (no fear of losing precision). Seems impossible on the face of it, but fun to try.
« Last Edit: May 23, 2016, 11:31:16 PM by eiffie, Reason: typo » Logged
Chris Thomasson
Conqueror
*******
Posts: 137



« Reply #8 on: May 24, 2016, 05:35:50 AM »

Agreed! FWIW, the secret key c can be expanded into multiple c's during iteration.
[...]

FWIW, here is an example of using two secret keys at { -0.2, 0.0 } and { 0.3, 0.0 }:

Logged
Chris Thomasson
Conqueror
*******
Posts: 137



« Reply #9 on: May 24, 2016, 05:38:25 AM »

nice idea!  I thought about doing something similar with external angles in the Mandelbrot set, but Julia sets are better as you can pick a secret key c.

Yes. The secret key c is very interesting wrt how data can be stored. Very interesting.

 afro

Now, how to minimize precision loss!? Damn...  alien
Logged
apeirographer
Forums Freshman
**
Posts: 18


« Reply #10 on: May 24, 2016, 09:46:05 PM »

Assuming I haven't completely misunderstood this concept, my preliminary experiments make it seem like it is trivial to find points that can reliably store 8 bytes, and not much harder to find ones that can store 9 or 10 bytes.  Higher than that might be impractically rare, and I'm going to take a wild guess and suggest that we won't find points that can reliably store more than 16 bytes while still being representable by two 64 bit floating point numbers.

I'll take a bit more time to try to understand what exactly is being described... because I'm definitely missing some parts still.  But if my subsequent playing around yields anything interesting, I'll post again.

Apeirographer
Logged
Chris Thomasson
Conqueror
*******
Posts: 137



« Reply #11 on: May 25, 2016, 10:55:27 PM »

Assuming I haven't completely misunderstood this concept, my preliminary experiments make it seem like it is trivial to find points that can reliably store 8 bytes, and not much harder to find ones that can store 9 or 10 bytes.  Higher than that might be impractically rare, and I'm going to take a wild guess and suggest that we won't find points that can reliably store more than 16 bytes while still being representable by two 64 bit floating point numbers.

I'll take a bit more time to try to understand what exactly is being described... because I'm definitely missing some parts still.  But if my subsequent playing around yields anything interesting, I'll post again.

Apeirographer

So far, I cannot find a point that can reliably store around 40 bits. If you can find one, please let me know. I have used points like { -0.74543, -0.11301 }, but they still fall apart during forward iteration wrt storing large numbers of bits! They start to escape during forward iteration, even though the reverse iteration keeps all points bounded to a "close" to the border formation. AFAICT, the precision loss starts to explode.

Damn!

FWIW, I think I managed to create a BuddaBrot like formation that is compatible with basically any reverse iteration Julia set. A crude initial example:



It might be able to be used in this type of encryption. Humm... The code that produces this rendering should be posted tonight or tomorrow. BTW, thank you all your interest!

 wink

;^)
Logged
Chris Thomasson
Conqueror
*******
Posts: 137



« Reply #12 on: May 26, 2016, 09:05:45 PM »

FWIW, the code for the reverse iteration wrt the "Buddhabrot" like reverse iterations can be found here:

https://plus.google.com/101799841244447089430/posts/UPf7RKrkiYm

FWIW, I thank you all for any interest you have in this subject.

 alien
Logged
Chris Thomasson
Conqueror
*******
Posts: 137



« Reply #13 on: May 26, 2016, 11:35:02 PM »

FWIW, the code for the reverse iteration wrt the "Buddhabrot" like reverse iterations can be found here:

https://plus.google.com/101799841244447089430/posts/UPf7RKrkiYm

FWIW, I thank you all for any interest you have in this subject.

 alien

http://pastebin.com/d6L89bBZ

I forgot to mention that the (c) for the function (ct_reversex) needs to be:

complex_t c = { 0.47, 0.7 };

 undecided
Logged
eiffie
Guest
« Reply #14 on: May 27, 2016, 09:58:08 AM »

I thought you must be playing with the distance metric in that last pic because I was doing something similar s=sqrt(sqrt(x*x-y*y)) and getting similar lines. Thanks for sharing the code.
Logged
Pages: [1] 2   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
Xenon-135 Storage Facility Mandelbulb3D Gallery lenord 0 578 Last post July 22, 2011, 06:47:32 PM
by lenord
Storage Node Mandelbulb3D Gallery PO 0 753 Last post March 15, 2012, 09:57:48 AM
by PO
Propeller Storage Wildstyle ClydeFrog 0 781 Last post May 25, 2012, 12:29:22 AM
by ClydeFrog
The Root Fractal - The One Plus Times Table? (new) Theories & Research kevinmorais 0 358 Last post September 16, 2013, 05:09:08 PM
by kevinmorais
Mysterious site with encrypted messages and quasi-quasi-fuchsian fractal (?) Fractal News across the World KRAFTWERK 3 1789 Last post December 30, 2015, 08:47:54 PM
by KRAFTWERK

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.269 seconds with 24 queries. (Pretty URLs adds 0.009s, 2q)