Home Page

Home page

 

Gecko Architecture

 

Modes: CBC, CTR, ECB, PCBC, CFB, OFB

 

Test Harnesses and Sample programs

 

Downloads

Building the Software

About Gecko

GECKO encryption.

Faster, smaller, and with better diffusion than AES

 

 

Test Results for GKO vs AES Encryption

 

 

 

 

Speed Test 18[i], operating in 256bit CBC mode[ii]

Test Description

 

TEST18: Speed Test: Gecko vs AES BIG BLOCK (4096 bytes) test...

Running AES BIG BLOCK Speed Test (0x7FFF encryption/decryption passes)...

Speed Test complete, AES took 26.562000 seconds to execute

----------------

Running Gecko BIG BLOCK Speed Test (0x7FFF encryption/decryption passes)...

Speed Test complete, Gecko took 15.332000 seconds to execute

----------------

TEST18 RESULTS: Gecko vs AES.

The difference between Gecko and AES is 53.611496%

Gecko wins!

0x7FFF encryption/decryption passes, each pass processing 4096 bytes of random data, or 134,213,632 total bytes processed.

 

In each pass, both AES and GKO receive a new randomly generated[iii] encryption key and IV.

 

 

 

 

Internals Test 4, object code size in CBC mode

Test Description

 

TEST4: Object code size in CBC mode: Gecko vs AES

AES obj size: 4.46 KB

Gecko obj size: 4.14 KB[iv]

Gecko_Individual_Modes/AES_vs_GKO_Size/Size/gecko.obj is 7.44% smaller

As is the case with all the other tests, both Gecko and AES were included in the harness in source form, so both enjoyed the same compiler optimizations.

Other compilers and module implementations are likely to achieve better/worse footprints.

This test is to show the relative size of Gecko vs AES, not the best size that can be achieved.

 

 

 

 

Internals Test 5, Avalanche/Diffusion test in both CBC and ECB modes[v]

Test Description

 

TEST5: Avalanche/Diffusion test: Gecko vs AES CBC

GKO results in 49.891% diffusion: 149097141 changed of 298844160 bits

AES results in 49.890% diffusion: 149094537 changed of 298844160 bits

TEST5 RESULTS: Gecko vs AES CBC.

 

The difference between Gecko and AES is 0.001747%

Gecko wins!

**********************************

 

TEST5: Avalanche/Diffusion test: Gecko vs AES ECB

GKO results in 49.998% diffusion: 65533951 changed of 131072000 bits

AES results in 49.993% diffusion: 65527193 changed of 131072000 bits

TEST5 RESULTS: Gecko vs AES ECB.

 

The difference between Gecko and AES is 0.010313%

Gecko wins!

The CBC test was performed on the story of Little Red Riding Hood, by Charles Perrault. 3,628 bytes (padded to the nearest 16 byte boundary.)

 

0x2800 encryption passes.

In each pass, both AES and GKO receive a new randomly generated encryption key and IV.

 

In each pass, the text is encrypted and the ciphertext saved. Then one randomly selected bit in the plaintext is changed, and the plaintext is again encrypted. The ciphertexts are then compared and the number of changed bits calculated. This is the percentage you see here.

 

The ECB test works the same except that the plaintext is “Hello World!” padded to 16 bytes, and the number of passes is 0xFA000.

 

 

 

 

Internals Test 6, Confusion test in both CBC and ECB modes

Test Description

 

TEST6: Confusion test: Gecko vs AES CBC

GKO results in 50.002% confusion: 149427435 changed of 298844160 bits

AES results in 50.000% confusion: 149421963 changed of 298844160 bits

TEST6 RESULTS: Gecko vs AES CBC.

 

The difference between Gecko and AES is 0.003662%

Gecko wins!

**********************************

 

TEST6: Confusion test: Gecko vs AES ECB

GKO results in 50.000% confusion: 65536324 changed of 131072000 bits

AES results in 49.997% confusion: 65532202 changed of 131072000 bits

TEST6 RESULTS: Gecko vs AES ECB.

 

The difference between Gecko and AES is 0.006290%

Gecko wins!

The confusion test is quite similar to the diffusion test. With the difference being that one bit is changed in the encryption key as opposed to the plaintext between encryption passes.

 

The CBC test was performed on the story of Little Red Riding Hood, by Charles Perrault. 3,628 bytes (padded to the nearest 16 byte boundary.)

 

0x2800 encryption passes.

In each pass, both AES and GKO receive a new randomly generated encryption key and IV.

 

In each pass, the text is encrypted and the ciphertext saved. Then one randomly selected bit in the cipher key is changed, and the plaintext is again encrypted. The ciphertexts are then compared and the number of changed bits calculated. This is the percentage you see here.

 

The ECB test works the same except that the plaintext is “Hello World!” padded to 16 bytes, and the number of passes is 0xFA000.

 

 

 

 

Internals Test 1, Expanded Key Distribution Test operating in 192bit mode

Test Description

 

TEST1: Check expanded key distribution: Gecko vs AES

On average, AES has 2 key duplicates out of 208 keys, or 1.1892%

On average, GKO has 2 key duplicates out of 208 keys, or 1.1890%

GKO has 0.01% fewer expanded key duplicates than AES

0x100000 key expansion passes, each pass getting a randomly generated encryption key.

 

This test provided as a datapoint only.

 

 

 

 

Internals Test 2, Round Key Distribution Test operating in 192bit mode

Test Description

 

TEST2: Check round key distribution: Gecko vs AES

On average, AES has 2 key duplicates out of 208 keys, or 1.1890%

On average, GKO has 2 key duplicates out of 208 keys, or 1.1862%

GKO has 0.24% fewer round key duplicates than AES

0x2000 round key generation passes, each pass getting a randomly generated encryption key and encrypting 4096 bytes of random data.

 

This test provided as a datapoint only.

 



[i] The GKO test harness contains many AES vs GKO speed tests, including  CBC, CTR, and ECB.

With the exception of CTR mode, GKO handily beats AES in all tests.

GKO has a slower/more involved Key Schedule which narrows the gap between AES and GKO when processing a small amount of data.

Conversely, GKO’s lead over AES grows as the amount of data to encrypt/decrypt increases.

[ii] It should be appreciated that when comparing two encryption algorithms, you are also comparing the implementations.

The AES implementation used in all tests is kokke/tiny-AES C implementation.

In addition to the implementation, the compiler and optimization settings have massive impact on test results.

In all cases, both GKO and AES are included in source form to the test harness so that they share the same optimizations.

All test results were collected from Microsoft’s Visual Studio 2019.

Test harnesses and complete source code are included in this distribution.

[iii] All pseudorandom numbers are a product of the Mersenne Twister.

[iv] Object code size will vary greatly depending on many things, including compiler and optimizations.

Sizes reported here were achieved with Microsoft’s Visual Studio 2019 compiler on a Windows desktop, optimized for size.

[v] When performing diffusion/confusion tests, I prefer the results of ECB mode over the other modes since ECB is pure cipher.

Other modes like CBC (while stronger encryption,) mix in things like an IV and chain-block the results which often distort the  diffusion/confusion results from the cipher.