+++UPDATE+++UPDATE+++UPDATE
The website is being moved to its new home. Information is this website may be outdated. The mailing list is still this one. Please use the redmine facilities to file bug reports.
+++END+++UPDATE
A5/1 Security Project
This project aims at publicizing cryptographic weaknesses found in today's cellular networks. We are not advocating to exploit these weaknesses but rather want to inform about the fact that GSM calls are already being intercepted and decrypted using commercial tools.
Latest News
We presented the current state of the project ( Slides) at the 26C3 conference in Berlin. The main take-aways were:
- The community has computed a large number of rainbow tables (Thank you!)
- We found new sources of known plaintext which allows decryption with a smaller subset of the codebook than previously thought
- A full GSM interceptor to collect GSM data could hypothetically be built from open source components. We have not done so as it may be illegal in some countries.
The latest updates are communicated through the mailing list.
Stay up to date with the NewsAndChanges, and find a common answers in the FAQ
Sorting and Sharing Rainbow Tables
If you already computed rainbow tables using the tools provided below, then it is time to make your tables usable through sorting them. Please also share the tables through Bittorrent. The sort process is explained in this quick tutorial (and requires this program). Currently there is no working source code to compile to other architectures. We are working on this.
Technical Background
The attack on the A5/1 cipher this project implements, is a reimplementation of the THC work THC, which was done in early 2008 but never released.
The Time/Memory Trade-off framework is still in its early stage of development. Comments and bug reports through the mailing list are greatly appreciated.
Our approach differs slightly in that we use more common hardware to generate the tables, namely, NVidia and ATI graphics cards with GPGPU capability, and attempt to build a distributed infrastructure of nodes. In this distributed effort each node donates computing power for the generation and disk spacefor the storage of a piece of the rainbow table code book. The combined distributed code book can be used to decrypt GSM voice calls and text messages in seconds.
For information on generating the data needed for decryption please visit http://airprobe.org.
Creating A5/1 Rainbow Tables
Announcement: In case you are using a software revision earlier than September, please upgrade to increase the efficiency of the table generation
To start contributing computing time, please get unique table parameters here.
Get a working copy of the table generator by either:
A) Downloading binaries (linux 32bit) (linux 64bit) (windows 32bit) (windows 64bit). (revision 58 from October 25 2009) -or-
B) CompilingTheProgram (Code available through: svn co https://svn.reflextor.com/tmto-svn )
Then, RunningTheProgram
Setting Options
Important note: The only way that the software should be used at this point is to run with a fixed set of options without deviation. As it is still alpha software, other uses to certainly reveal bugs. Some of the documented features are not actually implemented but will be in the near future. The only reason for giving out incomplete software is the fact that table generation takes a lot of time and should be started as soon as possible.
These are the options that should be used now to generate tables. Every table that is generated needs to have a different initial seed for the round function generator, which is given as the arguments to the advance sub option of the --roundfunc:generator option. As you can see the seed is zero in the example. Use the cgi above to request a tabled. At this stage of deployment, the developers will answer all your questions and check small portions of your generated tables against a reference implementation (set the --chains option of the generate command to something like 1024 and send in the generated table, for example by creating a trac ticket).
With the build-in default configuration file, the invocation looks like this:
$ a51table --advance XXX --consume file:prefix=data:append --network nickname=<your_name>:password=<your_passwd>:host=reflextor.com:port=80 --operations 512 generate
Written in full detail that amounts to:
--condition rounds:rounds=32 --roundfunc xor:condition=distinguished_point::bits=15:generator=lfsr::tablesize=32::advance=0 --network nickname=your_name:password=<your_passwd>:host=reflextor.com:port=80 --implementation sharedmem --algorithm A51 --device cuda:operations=512 --work random:prefix=11,0 --consume file:prefix=data:append --logger normal generate --chains 270000000 --chainlength 3000000 --intermediate filter:runlength=512
PublicSpace? - create your own pages here
