Tools for Experimental Algebraic Cryptanalysis
public web page by Nicolas T. Courtois and his collaborators.
The content of this page is provided without any warranty. It is subject to copyright and does contain some efficient and innovative algorithms and data structures that were never published but are fully [or sometimes tentatively] implemented. Third-party tools will also be published here.
P.S. Support can not be guaranteed.

![]()
Basic Tools.
Here is the FreeCheck.exe program that allows to know a rank (number of linearly independent equations) of a system of polynomial equations over GF(2). U nder windows open cmd.exe, type "cd c:\CurentPathWhereTheseProgramsAre\" and type the following command:
![]()
About Programs Provided Here.
Some tools found here are fairly simple, some are more complex.
All have been implemented to handle very large but quite
sparse systems of Boolean polynomial equations on a PC with
insufficient memory. Most computer algebra systems are actually
totally incapable of manipulating systems of equations
with comparable type and size on a PC. Not to say solving them.
These programs will only work if some Microsoft ms*.dll files are
present on your PC. These files are not provided here but can be found on most
PCs, they can copied by hand to your windows/system32/ directory, but
really the simplest way to install them all at once it
to install Microsoft Visual Studio.
Programs are experimental versions with no guarantee nor
support. They produce a lot of spare intermediate and log files, that can
be discarded later. They generate pop-up windows if they find a solution, the
option /quiet disables it. If this notepad
solution window is not closed, this will prevent other programs from running in
the same directory. Programs use heavily the CPU, as well as the OS core, and
in order to manage memory that is never sufficient, they continuously use the
disk drives of the computer. They may use much more RAM than showed by
Windows task manager, the showings of the Windows task manager are simply not
accurate. The system should have at least 1 Gigabyte of RAM per running process
(e.g. 4 Giga for a quad-core PC). They will work better if a particularly fast
extra hard drive (or two) are attached to the computer with a special letter
that could be i: or x: or y: or all of these:. Backup your data regularly: some
disk drives will develop faults after a few months of intensive usage.
These tools are a mix of various code developed by Nicolas T. Courtois at various occasions. To the best of our knowledge they are free of any third party intellectual property rights. The exe files (closed-source code programs) can be used freely if the user acknowledges that they use ready tools developed by Nicolas T. Courtois AND links to this page. Source code is a private property of the author and is not intended to be made public ever.
![]()
Basic Equation Solving Toolbox - ElimLin
Here is the XL0.exe program that allows to solve systems of equations by the famous ElimLin method. If and after it stops working the option /gtp is called by default, see below. Some options will only work if extra files are present on the PC. Command line reference:
![]()
Basic Equation Solving Toolbox - Conversion to SAT Techniques (and Semaev Algorithms)
The same XL0.exe program allows
to solve systems of equations with SAT solvers if and only if the option
/sat is specified. A plethora of solving and conversion
methods are implemented.
Command line reference for using xl0.exe as an entry point
for playing with SAT solvers and conversion:
![]()
Advanced Research and Experimental Tools.
Here is the GTP.exe program.
GTP.exe allows to solve systems of equations by "The Geometric
Generalised T' Method" by Courtois. This is an advanced geometric
algorithm, never published, for finding extra linearly independent
equations at a given degree, which would normally be found by Gröbner
bases techniques, but at a higher degree(!) with much higher
memory and with much higher complexity. So in practice, this
algorithm has no competitors in producing such equations on current
computers. It somewhat an amazing tool albeit, the current
implementation is very slow, waiting to be improved later. It should
be considered as a research prototype for an early
detection of exploitable algebraic vulnerabilities, and is a very powerful
tool in this respect (the number of linearly independent
equations typically grows and grows).
An additional second advanced T' method (but not yet in a
'geometric flavour', so less advanced) is also included. It starts
by lifting of arbitrary equations over GF(2)
toGF(2^k) . See
option /gtplX option described below.
Command line reference for GTP:
![]()
Examples of Systems of Equations to Solve.
Some are publicly available already: see
www.cryptosystem.net/aes/hardproblems.html.
![]()
How to Write the Equations.
Some hints:
(To see some examples of equations, run CTC2.exe or KeyLoq.exe or look here for DES.)
Maintained by Nicolas T. Courtois
Last updated in March 2010.