Modes: CBC, CTR, ECB, PCBC, CFB, OFB
Test Harnesses and Sample programs
Building the Software
I began work on Gecko in
July of 2019 and finished in December of this same year.
Gecko, along with another
project I was working on at the time, started out as ‘fun projects’. But I quickly
began to see how Gecko’s performance and size compared favorably to other well-known
encryption algorithms. By about September of 2019, I got serious about the
design and portability of Gecko and began writing the test harnesses you
see presented here today.
Originally, while Gecko’s
size and speed compared favorably to its benchmark AES, diffusion/confusion
was still an issue. To improve Gecko’s D/C, I wrote a simulated annealing harness
(not provided,) that optimized the calling sequence of the cipher’s six functions:
GKO_SubBytes, GKO_SboxMaskBytes, GKO_CipherMaskBytes, GKO_ShuffleBits, GKO_ShuffleBytes,
After maybe three days of
continuous execution, on multiple machines, I arrived at the optimum
Similarly, a choice had
to be made for the number of bits to rotate in the GKO_ShuffleBits
function. I had originally selected (somewhat randomly) three bits to
rotate, and that yielded, along with the above mentioned optimization,
fairly good D/C, but slightly worse than AES. I then again constructed a simulated
annealing harness to capture the proper number of bits to shift which would
yield the best D/C. Coupled with the above calling sequence optimization,
the algorithm selected two bits as yielding the best D/C. At this point we were now
meeting or beating the D/C provided by AES.
I began programming in
the late 70’s on an HP 42c calculator. Fell in love with it, and when
available, rushed out to get myself a Commodore VIC 20 in about 1980.
The VIC-20 shipped with 5
KB RAM, but 1.5 KB of this was used by the system for various things. Only
3,583 bytes of BASIC program memory for code and variables was actually
available to the user of an unexpanded machine. In this 3.5K of memory, I
wrote a game and a word processor!
When the first IBM PC I
shipped, I was there to grab one. Taught myself C, and landed a job at
Personal Cad Systems or P-CAD as a professional programmer.
I spent the next 38 years
honing my skills.
Currently, I hold two US
issued software patents, one of which is issued internationally. I have 3+
decades experience as a software architect and 16 years as an intellectual property
researcher specializing in security. I've delivered 1/2 a dozen shrink-wrap
retail software packages to market and spent 3 years at Xerox's Palo Alto
Research Center (PARC).
One of my inventions was
FAXGrabber. It was the first PC software to combine the then new PC Fax
boards with Optical Character Recognition. Bill Gates thought it was so cool
he personally demoed it at COMDEX ’92 https://www.youtube.com/watch?v=95b7QrRUfBE
I welcome all
questions on Gecko and its design.
I can be reached:
Discuss on Facebook: