Increasing Security in Cryptography

FLTed
Encryption and
Hashing

Click Here to Go Directly to Programs Downloads

The Purpose of this Website

Testing, Education and Research Only

This is a static website that provides downloadable sample C programs of FLT modified cryptographic applications. Its purpose is to provide interested parties the opportunity to test FLTed cryptographic methods, like encryption and hashing, at very fast processing rates.

Generally, one would post programs like these on sites like Github. However, the novel subject matter of the Finite Lab-Transform or FLT in machine cryptography is protected by issued and pending US Patents. A very limited license, to use these programs strictly for private use, education, testing and research, is provided herewith. You have absolutely no license and no permission to sell, distribute, export, or incorporate the patent protected aspects of the software in another computer program.

Furthermore, the programs are provided “as is”, with no warranty whatsoever that they will work. The provided C programs are modifications of previously posted C programs. These previously posted programs are implementations of public cryptographic methods such as AES-GCM, Chacha20, MD5 and SHA-256. The initial working of the FLTed C Programs has been tested on Dell and HP Windows machines. There is no warranty that it will even work on any other machine.

Also, a novel encryption method, based on “forever” secret maximum-length keystreams, is provided in a C program and as an executable application.

One is cautioned that the herein provided FLTed encryptions are extremely powerful. At least as powerful as its unmodified base methods. Be aware that there is no way for me to recover data that is encrypted by any of the herein provided programs. I cannot help you if you lose, misplace or overwrite critical encryption parameters. Be aware: you are on your own!

You can access/download the C source code and Window executable applications, further below. I also provided links to presentations and Matlab/Octave programs.

The Limited License to Use the Programs

You have a very limited license to use these programs. The programs are strictly for private use or education, testing and/or research. You have absolutely no license and no permission to sell, distribute, export, or incorporate the patent protected aspects of the software in another computer program. You may install each downloaded program on a single machine. Each machine should obtain the programs from this website. You are not allowed to use the programs for creating any type of secure storage and/or communication and/or authentication.

The fact of the matter is that I cannot prevent you from doing so. I have deliberately limited the numbers of accessible inverters and thus FLTs in the C programs. This already limits the increased security.

A Paid Single User License

If you would like to use the programs for security purposes or to conduct further stress tests, besides merely testing out, you can obtain a paid single user license from me, which includes a set of at least 1000 256-state inverters and a full license to all our FLT IP. I have modified the licensed programs to randomly access the inverters. Both the set of inverters, as well the order of inverters in a list is unique to each license. Contact me at info@labcipher.com for purchasing such a full single user license for $249 and the new set of programs. Once I have completed the whole set of high security applications, all programs will be placed behind a paywall.

Some may see an opportunity to apply the FLT in other cryptographic applications. I am all for it, if you obtain a license from us. Contact us at info@labcipher.com if you want to discuss. You should be aware that the limitations of allowed use are well defined herein and fairly narrow and that all the software is marked in accordance with 35 U.S.C. 287(a). While it may seem related to bragging rights, provable infringement may cause nasty results that I don’t want and that you don’t want. The intent is to give you a broad opportunity for reviewing and testing while protecting our Intellectual Property Rights. When in doubt, contact us. Really!

The Finite Lab-Transform (FLT) in Cryptography

The Finite Lab-Transform or FLT was invented and patented by Peter Lablans. The FLT is a transformation of a multi-operand computer operation that leaves the meta-properties of the operation after transformation unchanged.

For instance, in machine cryptographic operations, such as encryption and hashing, the computer operations often include a bitwise XOR operation on words of bits, such as 8-bit bytes. The bitwise XORing of words of bits is an “involution.” This means that the operation reverses itself.

The FLT, which applies reversible n-state inverters, transforms an involution, like the bitwise XOR operation, into another, different but also self-reversing involution.

Understanding the FLT, requires additional description and characterization of the computer operation. One may describe a bitwise XORing of words of 8 bits, or bytes, as a 256-state operation. One may describe each 8-bit word by its 256-state representation, such that word= [1 1 1 0 0 0 1 1] for instance may be represented by the decimal 227. The whole byte-wise XORing may be represented by a 256-by-256 elements matrix of 256-state elements. This matrix can be modified by the FLT to create another and totally different 256-by-256 matrix which also represents an involution and may be used to encrypt and decrypt bytes.

An important aspect of the n-state FLT is the application of n-state reversible inverters and their corresponding reversing inverters.

One may call the original 256-state byte-wise XORing matrix “sc256” and the FLTed version “sn256”. Both can be used to encrypt a plaintext byte against a secret keyword byte to generate a ciphertext byte. And then use the same keyword byte against the ciphertext byte to generate the decrypted byte, which is identical to the plaintext byte. However, application of “sc256” provides different results compared to “sn256”. By keeping the FLT secret, one can increase the security of the cryptographic operation.

The advantage of the FLT is that an n-state FLT can create (depending on certain circumstances) at least in the order of (n-2)! (factorial of n-2) different versions of the operation. For even a relatively small size, like byte-size operations, this means over 10^500 (10 to the power 500) different involution operations.

The FLT can be used to transform any multi-operand computer operation. Including multiplication-like operations and power computations as used in RSA and Diffie-Hellman key exchange and is elliptic-curve operations. The bitwise XOR operation is by far the most widely used operation in cryptography and will be a main focus on the herein provided C programs.

The FLT and the application of n-state inverters is described in detail on the LabTransform website.

Invention or Mathematical Theorem?

The Finite Lab-Transform (FLT) is an invention by me to achieve a controlled modification of a computer machine functionality, especially as applied in error-correction and machine cryptography. It finds its start in my work on non-binary Feedback Shift Register (FSR) devices. I basically apply the insights of Prof. Dr. Gerrit Blaauw on computer machine design, by focusing on the implementation or logic design of these devices. This involved the design and re-design of involution type functionality. As an engineer, it is my intention to create new computer machines. It was not my intent to develop or discover a mathematical theorem.

By working on machine cryptography it is inevitable that one eventually runs into number theory, especially as it relates to finite fields. Machine cryptography has a strong connection to number theory. As a consequence what is taught in the literature as the mathematical background of cryptography may limit the machine implementation of functionality. This is because the mathematical description often leads, guides and determines the implementation and thus the machine realization. An example is the creation of devices based on extensions of finite fields. These are strictly taught in the context of irreducible polynomials over a base field. I found that most of the FLT based designs are not captured by known number theory, and offer a much greater range and possibility of novel machine designs.

I have done extensive searches on prior art related to the Finite Lab-Transform (FLT). I assumed (incorrectly it turned out) that theoretical work must have been done earlier on these aspects of what I call alternate finite fields. I could not find anything that is meaningful to the FLT. In hindsight that seems reasonable, because besides in recent fields like machine cryptography, there was/is no need for the FLT.

I am an engineer and not a mathematician. I use what works. The FLT practically works. I have a feel or intuition for why the FLT works. That is, why the FLT leaves meta-properties of operations over a finite field unchanged, while it may modify numerical properties. So, an FLTed multiplication over a finite field still has a multiplicative inverse, even though the multiplicative inverse is now defined to a neutral element that is not 1. I describe technically how an FLT is achieved. And I provide convincing evidence that the FLT of specific functions (such as involution) preserves the mission critical properties. I have not provided a general overall mathematical proof why the FLT as such works in preserving meta-properties of all functions. It is an interesting mathematical problem, but more or less irrelevant to the subject matter at hand.

I explain the FLT in terms of computer operations, and not in mathematical symbolic terms. For that reason, I have been unable to get a publication of the FLT in a peer-reviewed journal. It is a valid mathematical problem. Feel free to give it a shot.

For the above reasons, the FLT is an invention, a technical invention. A modification of circuitry that performs computer instructions. It is not a proven mathematical theorem. If it becomes that, it will be a mathematical description of a physical modification after the fact.

The C Programs

Machine cryptography on computers is supposed to work correctly and work fast. One of the fastest implementations of cryptographic operations such as encryption/decryption, hashing and key exchange is in compiled C programs. Compiled C will provide one of the fastest ways to run computation-heavy programs. Machine coded software is even faster, but very difficult to analyze for most of us.

C programs are somewhat difficult to read and are not really the best way to create pseudo-code. For that reason, I have created “proof-of-concept” programs in Matlab and Octave, which you can find on Youtube. I will list the URLs of the Matlab programs at the bottom of this page. You will find out that these programs are slow and in case of Octave even very slow.

Cryptographic programs, even on a conceptual level, are usually published in C as a test or reference implementation. Most of the cryptographic standards have such reference implementation and are accompanied by, what are often called, test vectors. In order to compare standard or published cryptographic applications against the herein provided applications, the downloadable software also runs under C and should be comparable in speed and allows comparison of generated results.

The approach has been to clone a published C program of a public and well defined cryptographic method, mainly from Github, and modify certain aspects. One modification is applying the FLT to an operation. Another aspect of the programs is to make the applications ready for testing.

Due to the structure of C, compilation may take place as command line instructions. I have created main() applications that work in compiled form as a user controlled application within a Command Window.

The programs have been modified where needed and compiled with Code::Blocks. My purpose is to demonstrate that the FLT works. No efforts have been made for now to optimize the code or to improve program security by preventing or limiting data leakage. In that sense, the current programs may be insecure and SHOULD NOT be used in production type operation. No license or permission is provided for such types of usage and operation.

The 256-state Inverter

Most current cryptographic applications, including encryption and hashing, use bitwise XORing. This can easily be changed by FLT using byte-wise or 256-state inverters. Furthermore, 256-state inverters are easy to generate, easy to store and easy to retrieve. Furthermore, 256-state functions such as additions and/or multiplications over GF(256) are relatively small and easy to generate and to manage as look-up tables. Applications such as AES are often described in terms of GF(256). And most importantly, the number of possible 256-state reversible inverters is for computational purposes almost infinite. (well larger than 10^500, at least).

In many cases, binary words may be processed in chunks larger than 8 bits, like 32-bit words for instance. This poses a problem in generating the full 2^32-state inverter as 2^32 is about 4 billion. It is impractical to create and store a 4 billion state reversible inverter, let alone a 4 billion-state 2 operand look-up table.

In the cases, wherein operations take more than 8-bit words of operations, one may take the following actions:
A) 1. split the operands into words of 8-bits; 2. invert each 8-bit word with a 256-state inverter; 3. reconstruct the larger word by concatenating the 8-bit words. 3. perform the operation on the reconstructed word (like a mod 2^32 addition) to generate a large binary word; 4. split the result again in 8-bit words; 5. reverse invert each of the 8-bit words with the reversing 256-state inverter; and 6. reconstruct a larger word by concatenating the inverted words.

This creates a valid and secure FLT of an k-bit (such as 32-bit) operation. The number of possible 256-state inverters is big enough that this FLT is computationally unbreakable. For n=2^32 factorial(n) is some insane large number. In practice more than 10^500 different inverters should be enough.

However, if one really wants to apply 2^32 state inverters, we have created a program that quickly computes such inverters. In fact it allows to create much larger size inverters, for instance ones represented by 1600 or 2000 bits. AES in FIPS-197 defines input, state and output arrays of 16 bytes. This is a sequence of 128 bits. SHA256 uses message blocks of 512 bits. Chacha20 uses a standard array of 64 bytes or 512 bits. SHA-3 applies a state array of 1600 bits. To further modify these operations a complete data block or array may be reversibly modified with a large k-state inverter. This may happen once, for instance in a pre-determined round and operation. It may also be applied in multiple rounds and at different moments.

This additional aspect of super large k-state reversible inverters has not been included in the programs. Shoot me an e-mail at info@labcipher.com if you want to learn more. The aspect is captured in a pending patent application.

The Applications

The following applications are provided. Clicking on the related button will bring you to the detailed description and the downloadable Zip-file. Each ZIP-file has a description, the C-code source files, any required data files, and the compiled .exe file.

Required User Name and Password

When you hit the below buttons, you will download the related .zip file.
Open the .zip file in its own folder. A password is required to unzip the file.

Password: I agree with the terms and conditions
With that you confirm that you have read the above and that you agree with the terms and conditions of downloading, installing and using the programs.


The pdf document with the terms and conditions may be downloaded separately.

1. AES-GCM

Advanced Encryption Standard in Galois Counter Mode (AES-GCM) in encryption and decryption. The provide program modifies the byte-wise XOR step wherein the keystream is combined with the plaintext stream. The keystream generation by AES in forward mode is left unmodified.

2. Chacha20

The Chacha20 encryption is modified in 2 aspects. First: the XORing in the Quarter Rounds has been FLTed and Second: the final step wherein the generated keystream is combined with the plaintext stream by word XORing has been FLTed with a different FLT.

3. LabCipher m-Seq Encryption (LC-mS)

This is a novel and fast encryption scheme that generates a secret FLTed maximum-length sequence of virtually unlimited length and an FLTed XORing function to generate the ciphertext.

4. MD5 Hash

MD5 is a 128 bit hashing application that is now considered insecure. A secret FLT is applied and makes the modified MD5 secure against certain attacks.

5. SHA-256 Hash

SHA-256 is currently the most widely used hashing application. It is used for authentication, digital signatures and encryption applications. The FLT is applied to customize/privatize SHA-256. It can only be successfully applied by machines that are programmed with the specific FLT.

the patents

The FLT aspects of the machine cryptographic applications provided in the C programs herein are protected by US Patents and, so far, unpublished patent applications.

You may and should consider this paragraph a marking notice under patent marking statute, 35 U.S.C. § 287.

You are free to download the C programs from URLs that are part of the URL of the present page. You are free to compile and use the programs strictly for personal use only for testing, research and/or education. Explicitly NO PERMISSION is granted for distribution, copying, selling, exporting and/or incorporation of patent protected code.

What does this practically mean? It means that for personal individual or classroom use, you can use and modify the programs. If anyone else desires to have the code they should download from this site. The provided programs rely on a file with a very small number of 256-state inverters. Everyone who downloads the programs has the same file. For that reason, there is limited additional security. In production one would use at least 100 and likely over 1000 different and unique and secret 256-state inverters. Contact me at info@labcipher.com if you are interested in a greater set of FLTs. 

If you are unsure on what this means for you then please shoot me an e-mail at info@labcipher.com  .

Here are the mastheads of three of my patents that cover the FLT in machine cryptography. 

The matlab/octave programs

I created Youtube presentations of cryptographic applications of the FLT. Links to slides and Matlab/Octave programs are provided in the Youtube description. These programs are relatively slow and very slow compared to the C-programs. They may also have slightly different implementations and thus may generate different results compared to the C programs. One way to test is to apply, when selected, the Identity Inverter.

1. AES-GCM encryption/decryption FLT applied to bitwise XOR of plaintext with AES forward keystream

2. ChaCha20 FLTed keystream production and FLT applied to key generation and bitwise XOR

3. The FLTed FSR Transition Matrix in Encryption. A novel encryption method using unpredictable forever m-sequences.

4. MD5 Collision Free Hashing by applying FLT

5. SHA256 hash, upgraded by FLT for private and confidential message digest