Another Crypting System

Johan Hartzenberg (JohanH@CCMA.org.za)
Fri, 18 Apr 1997 09:33:20 +0200


Hi People.

Would any of you be interested in looking at an Encryption system I
pretty much wrote myself.

I don't know much about crypting algorythms and I don't know how to
calculate the time needed to brute force crack the algorythm. Also I
don't know how to work out if it's crackable by something other than
brute force. Maybe one of you can help me.

When I ran into the problem of not being given access to DES, etc, being
outside the US/Canada, I started first to think about writing my own
encryption system. But I was going to use it mainly for things like
readable text e-mail, and all normal encryption systems get weaker if
you know what the result should look like. I don't know how a computer
can ever crack something if it's just random data in the file - how do
you know when it's cracked?

Anyways, the other thing that weakens encryption schemes is the length
of the data that was encrypted. So I thought to do something that
becomes STRONGER when you encrypt a longer text file.

I don't know if this idea is original, but I claim authorship for it.

First just translate the text using Roman Encryption or whatever you
want to call it - Replace every byte by another byte displaced from it
by a distance equal to a corresponding Key byte value.

For example a Key of 01 05 01 09
encrypting the data 05 06 07 08
Have the result 06 0b 08 11 (all hex)

If the data is longer than the key, the key simply repeats.

For example:
Key : 01 05 01 09.01 05 01 09
Data: 05 06 07 08 09 0a 0b 0c
Res : 06 0b 08 11 0a 0f 0c 15 (all hex)

This is simple, and especially if it's readable text, it can be cracked
quite easily. But:

What if I were to now mix the result around. In Afrikaans the word for
mix and the word for stir is the same word: "Skommel". It sort-of
means "scrambled"

So I'll "Skommel" the result around:
Res : 06 0b 08 11 0a 0f 0c 15 (all hex)
The first byte goes to pos 01 (Key.1)
The second Byte gets placed 05 (Key.2) places further. Wrap around when
neccesary, and skip over filled spaces: The third Byte from the result
get's placed 01 places after that in the Result Array (Key.3), wrapping
if needed to the beginning of the array and skipping over open spaces:

Now it looks like this:
New.Res = 06 .. .. .. .. ob 08 ..
Old.Res.4 goes Key.4 places further (I'm using notation Key.4 what
might in C or Pascal be implemented by Key[4].)
Old.Res.5 goes Key.1 places after that. we wrap and skip over filled
spaces as needed:

New.Res = 06 .. .. .. 11 ob 08 0a

Old.Res.6 goes Key.2 places after that

New.Res = 06 .. 0f .. 11 ob 08 0a

Old.Res.7 goes Key.3 places after that (we're basically just counting
the open spaces out and fills it in where we land up. Key.3 = 1 so it
goes int New.Res.3

New.Res = 06 .. 0f 0c 11 ob 08 0a

There is only one space left for Old.Res.8 so that's where it will go...

New.Res = 06 15 0f 0c 11 ob 08 0a
Position: 1 8 6 7 4 2 3 5 <- Where it was in the original
result.

Obviously the Longer the data to encrypt, the more complex the
decryption. Also, using numbers Close (<30% deviation) to the length of
the Data to be encrypted, in the key, creates a more out of order
result. But Something which is slightly out of order is just as hard to
crack. Except for CPU time. The algorythm needs to search through the
key all the time, jumping from location to location, to find the right
open location where to place the Data byte.

I have written a small encrypt/decrypt program that will take up to 256
byte data end encrypt/decrypt it with up-to 256 byte keys. if anyone is
interested, I'll e-mail that and the Delphi source to them.

But the problem is, encrypting any real world data will probably be
EXTREMELY slow.

The time taken to test a key for decrypting will be equal to the time it
takes to encrypt this.... Unless someone can think of a way that is not
brute force.....

Oh, and if someone Could adapt this concept to use a public Key /
private Key system.... Contact me!!!

Anyways, my opinion of my copyright on this encryption system is as
follow:
A) Anyone can use it.
B) For free.
C) Without giving me credit (unless they realy HAVE to)
D) Just DON'T claim that it's your own idea.

I think I'll call is "Skommel kripsie"
And if you don't like that I'll call it the Nicole Algorythm (Guess why)
- I don't think there's a Nicole Algorythm yet.

Anyways, have a good time,
_Johan

P.S. This is a test - I don't get my own postings. Are they getting
through?

>________________
>Support Engineer, CCMA Northern Cape, Kimberley, South Africa
> Tel: +27 (0531) 816780 Fax: +27 (0531) 815948
> e-mail JOHANH@CCMA.ORG.ZA
> Company Web page: http://www.ccma.org.za
>