final php versions of fwPack and fwUnpack
Mark Brownell
gizmotron at earthlink.net
Wed Mar 3 19:07:00 EST 2004
On Tuesday, March 2, 2004, at 09:07 AM, Richard Gaskin wrote:
> As I mentioned in the article, I'm pretty ignorant on encryption, esp.
> compared to seasoned cryptohobbyists like Mark Brownell. So here's a
> question I can't answer about my own code:
>
> If one were to try to characterize the relative strength of the "MDX"
> algorithm used in fwPack/fwUnpack, what phrase would be appropriate?
This is just too juicy to pass up. How about "Don't forget to drink
your chocolate flavored Ovaltene."
> For example, we hear about 128-bit encryption, but I couldn't find a
> primer dumbed-down enough to explain what that means in lay terms.
I need to see what controls there are for the "MDX" algorithm's
passwords length before I can determine the bit level. In other words I
just started looking at it.
Blowfish uses more than 500 iterations of changes on two 32 bit blocks
at a time sending them left and right through each other. Blowfish is a
64 bit block-cypher. One very important recommendation while using
powerful block-cyphers is in not doing so in a way that all you end up
getting is a fixed code book kind of result. This fixed code book type
is referred to as EBC, Electronic Code Book. One way to avoid creating
a fixed code book is to use the first 32 bit word to XOR the next 32
bit word then use the second 32 bit XORed word to XOR the third 32 bit
word. This alone would still be a weaker form of encryption. What can
really change things is to either pass eight unrelated secret
characters to XOR the first eight characters or to pad the text to be
encrypted with eight randomly generated characters first. When
decoding takes place the additional characters can be removed before
viewing the text. This is known as CBC, Cypher Block Chaining.
If you add eight randomly chosen characters & CBC to your MDX, then it
will be much harder to crack your 32 bit (I guess) encryption level. I
need to look at it closer. It looks like you are XORing one char at a
time. This would make it an 8 bit block cypher.
Here is how Blowfish increases encryption levels. If a user uses 32 bit
level then four characters are used over and aver to encrypt with.
Other levels are 64 bit uses 8 charaters, and 128 bit uses 16
characters. All example keys for Blowfish are 56 characters long.
Example 32 bit 56 char key:
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd
Example 64 bit 56 char key:
abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh
Example 128 bit 56 char key:
abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefgh
> Also, how easy would it be to crack MDX?
>
> --
> Richard Gaskin
If a programer had the MDX algorithm then a brute force attack would
take about one minute to one hour. The 54 bit encryption level was
cracked by a brute force attack using several computers in a long
weekend. The trick is to just try every possible access key, eventually
you get the one that works. If your access key is only four characters
then there are only 256*256*256*256 (4,294,967,296) possible keys. If
your algorithm restricts characters to the first 128 ascii characters
then there are only 128*128*128*128 (68,435,456) possible keys. (This
is assuming a four char key that I saw on the list as an example.)
So one way to stop the practicality of brute force attacks is to
deliberately put a one second delay on processing the algorithm. If
your application or CGI has a password input point then this one second
delay will make a brute force attack difficult.
100,000,000 brute force attempts with a one second delay would take
more than three to four years on a single computer. It would take 1000
computers hitting your CGI continuously to get past half of the
possibilities in a single day or two. I doubt if that is even possible.
more later... i'm out RVing
Mark
More information about the use-livecode
mailing list