project:gsm:deka:start
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
project:gsm:deka:start [2016/02/19 05:18] – [Attack in a nutshell] jenda | project:gsm:deka:start [2017/01/31 05:04] – [Roadmap] jenda | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ~~NOTOC~~ | ||
+ | ====== Deka - an OpenCL A5/1 cracker ====== | ||
+ | |||
+ | Deka is a fast, free and portable A5/1 (that' | ||
+ | |||
+ | Deka started as an attempt to port [[https:// | ||
+ | |||
+ | ==== Pros ==== | ||
+ | |||
+ | * Deka is portable. It runs on every platform where Python, GCC and OpenCL work. | ||
+ | * Deka is fast. The kernel is fully vectorized, including the final challenge lookup, and we ship kernels for architectures supporting 128- and 256-bit vectors. The table lookup is using NCQ and stripping unnecessary syscalls to minimize computing overhead. | ||
+ | * Deka is clusterable. Work is distributed over TCP. You can run more nodes to speed cracking up. | ||
+ | * Deka is modular. You can, for example, write A5/1 chain generator in VHDL, load it to a FPGA, and you just need to change a few lines of code to make it work with deka. | ||
+ | * Deka is, we hope, easier to understand. For example you can enjoy comments in the source code :) | ||
+ | |||
+ | ==== Cons ==== | ||
+ | |||
+ | To be honest, there are some. | ||
+ | |||
+ | * Deka is more difficult to set up than Kraken, as there is no automated tool to configure tables (yet). | ||
+ | * Deka is still dependent on Kraken (with Kraken' | ||
+ | * Deka is burst-oriented, | ||
+ | |||
+ | ===== Roadmap ===== | ||
+ | |||
+ | Nice to have features: | ||
+ | * " | ||
+ | |||
+ | Bugs: | ||
+ | * delta.py does not use barriers/ | ||
+ | * paplon.py leaks memory -- reportqs are not freed when the client disconnects | ||
+ | ===== Attack in a nutshell ===== | ||
+ | |||
+ | TL;DR You can go through the A5/1 keyspace and save some " | ||
+ | |||
+ | Deka listens on a TCP socket, waits for a keystream and once you submit one, it finds a secret state that resulted in this keystream. Hence you need some GSM sniffer, keystream guesser, TCP client and secret state processor. [[: | ||
+ | |||
+ | Recommended configuration: | ||
+ | |||
+ | We need to do an equivalent of 5 billion A5/1 encryptions and read 200k pseudorandom 4KiB blocks from disk to crack a key on an insecure network (multiply with 10 on secure network). | ||
+ | |||
+ | * Computer running a recent Linux distribution (Deka has been developed on Debian Jessie with HD7970 cards, but definitely should work on other distributions and probably on other UNIX systems too), 64bit (we need a 64bit system as we allocate lots of memory) | ||
+ | * CPU power which depends on the rest of the system. For example an AMD FX-8150 can process 120 kfrag/s. | ||
+ | * 8 or better 16 GB RAM to fit the table index, track bursts and have some space for block cache | ||
+ | * OpenCL capable card, or several of them | ||
+ | * 1.7TB of fast storage - SSDs at best. And probably some SATA controller that does not have problems with lots of random reads. | ||
+ | ===== Documentation ===== | ||
+ | |||
+ | * [[attack-theory]] - a theoretical overview of the attack | ||
+ | * [[attack-implementation]] - an efficient practical implementation on real hardware | ||
+ | * [[deka-internals]] - architecture overview, protocol and data structures | ||
+ | * [[deka-admin]] - getting deka to work on your computer | ||
+ | * [[deka-test]] - test vectors to test your setup works correctly | ||
+ | |||
+ | ===== Getting deka ===== | ||
+ | |||
+ | * git clone https:// | ||
+ | * GitWeb: https:// | ||
+ | |||
+ | ===== Contacts ===== | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | * Ability to read the installation manual and comments in configuration files. | ||
+ | * Understanding the concept of " | ||
+ | * Understanding the concepts of " | ||
+ | |||
+ | Please don't take this as some meanness, I just started getting tons of emails from people who obviously don't follow. If you have found a real bug, have some improvement, | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ===== Credits ===== | ||
+ | |||
+ | * Řehoř Gölöncséryi (niekt0) and Tomash (sysop) for introducing me to GSM security and the [[project: | ||
+ | * Kraken team, as there is very few documentation available - reading their sources was a great help in understanding the attack. | ||
+ | |||
+ | ===== Etymology ===== | ||
+ | |||
+ | Deka (n.): | ||
+ | |||
+ | * blanket (cz) | ||
+ | * a method of torture particularly popular among soldiers in former Czechoslovakia | ||
+ | |||
+ | Vankúš is Slovak for a small rodent gopher; the userspace OpenCL library called oclvankus may resemble another cracker, oclhashcat. | ||
+ | |||
+ | Paplón is Slovak for goose. | ||
project/gsm/deka/start.txt · Last modified: 2022/03/25 19:42 by jenda