OpenBSC: System Information + Rest Octet generation
During the flight to Bangalore I kept working on the system_information
branch of OpenBSC. This branch has been lingering in git for quite some time,
but I haven't yet felt confident enough to merge it into the official master.
In OpenBSC so far, the SYSTEM INFORMATION messages (type 1 through 6) are
not really generated by actual code. Rather, we use some templates that are
patched here and there with actual operational parameters such as the ARFCN
of the current cell. This has been easy for the very early start of the
project, but it has started to become more of a problem lately.
One example are neighbor cell lists. If you operate a network with multiple
cells, then of course you want to provide proper neighbor cell lists. At
HAR2009, we solved the problem by manually hard-coding the respective bitmasks.
That's of course not a proper solution.
Another problem is the notoriously complex encoding of the rest octets,
which culminates in the SI13 REST OCTETS describing the GPRS parameters
of a cell.
After a couple of hours in-flight hacking at the code in the sytem_information
branch, I am now confident that it provides superior quality SI messages and
rest octets than the hard-coded templates we used to have before.
Neighbor Cell lists and even SI13 rest octets are looking great when checking
them in the wireshark dissectors. I think it's ready for prime time now, and
the code should get merged into the master branch ASAP.
Now I am only left with one question: Should I consider this the first part of
the FOSS.in GSM workout? ;)
[ /gsm |
permanent link ]
Leaving for FOSS.in
I'm just about to go to the airport and leave for FOSS.in/2009. Most of my time there will again
be spent working
out on GSM protocol analysis, i.e. the airprobe project.
The workout wiki doesn't really have any content yet, and I shall fix that as
soon as I get the password for the Workout Wiki (apparently passwords from las
year don't work anymore).
It's going to be fun to meet all my Indian friends again - and at the same time
I'm happy that a large international community will be present, including
Stefan Schmidt, Holger Freyther and Andy Green of Openmoko fame, as well as people like
Milosch and Brita Meriac from projects like
OpenPCD, OpenBeacon and txtr, James Morris of netfilter/iptables and SELinux, Lennart Poettering of avahi and pulseaudio.
[ /linux/conferences |
permanent link ]
The Emperor's Codes: The Breaking of Japan's Secret Ciphers
During the last weeks, I've read the book The Emperor's Codes: The Breaking
of Japan's Secret Ciphers. As you can guess from the title, the book
relates to the various UK, American and Australian code breaker teams working
on breaking the encrypted communication of Japan during the second world war.
There have been plenty of books about the history of breaking Germany's Enigma
ciphering machine, but information on how the Japanese codes were broken so far
didn't seem to be as widespread - despite the resepective archives being opened
up during the last decades.
It has been a most interesting reading. As you can imagine, at that time almost
nobody had a sufficient understanding of the Japanese language, not even thinking
about how to encode Japanese writing into morse code.
Nonetheless, all of the Japanese merchant, diplomatic, army and navy codes have
been broken during the war. And surprisingly, the Japanese never really
assumed something is wrong with their actual encryption method. All they did
is to replace the codebook or the additive codebook.
Also, just like in today's GSM (A5/1) crypto attacks, even back then the
importance of known plaintext could not be underestimated. The verbosity
of Japanese soldiers addressing a superior officer and the stereotypical nature
of reports on weather or troop movements gave the cryptographers plenty of
known plaintext for many of their intercepted message.
What was also new to me is the fact that the British even back then demanded
that Cable+Wireless provides copies of all telegraphs through their network.
And that's some 70-80 years before data retention on communications networks
becomes a big topic ;)
Overall, definitely a very interesting book. I can recommend it to anyone with
an interest in security, secret services, WW2 history and/or cryptography.
[ /misc |
permanent link ]
Performance Enhancements in a Frequency Hopping GSM Network
Dieter Spaar had pointed out this book some months ago when I first raised some
questions regarding frequency hopping and the orthogonal nature of hopping
sequences with the same HSN but different MAIO.
Last week while David Burgess was with me, he also indicated that this book was
great and he unfortunately didn't think of bringing it along with him.
Meanwhile, I have immediately ordered the book and am already at something like
30% completion. It is a most interesting book to read, approaching GSM from an
advanced network planning angle, with a specific focus on the effects of
frequency hopping, uplink/downlink power control and DTX on the overall system
performance of a GSM network.
The theoretical foundations are always put in a GSM network simulator with
detailed channel model, but also actually implemented in a real-world GSM
network in Denmark.
Next to all the GSM specifications with their plethora of options and operator
dependent settings, this book gives a detailed (but still very technical)
background on how and why an Operator would configure his network to maximize
the service quality offered to his subscribers.
From the results, you can for example very clearly see that
- frequency hopping over a cyclic sequence gives higher gain improvement than random hopping,
especially if the number of channels in the mobile allocation is low
- frequency hopping gain is very dependent on the speed at which the MS
moves. At 3kph, the gain when hopping over 8 channels can be 7dB, while at
50kph the same hopping will only provide 1.5dB
- MAIO management (using different MAIO but same HSN) for all sectors in a
cell gives significant FER improvements
- handover algorithms differ quite a bit between non-frequency-hopping and frequency-hopping
networks
In the end, it seems, network planning is never about allocating your channels in a way they
don't overlap. That would limit the network capacity way too much. Network
planning seems to only be about averaging out the interference that cells inevitably have with
each other and ensure that the quality of the system only degrades with increasing load.
[ /gsm |
permanent link ]
Reverse engineering 16-in-1 Super SIM cards
In order to support some real cryptographic authentication in OpenBSC, we have to use SIM cards
with a known Ki (secret key). For cards that are issued by a real GSM operator, the Ki is only
stored in the SIM and in the Authentication center of the network. Since we cannot obtain it
from either of those two sources, we have to program our own SIM cards.
Unfortunately, SIM cards with privileges and/or documentation how to set Ki, IMSI and other
data are not readily available on the open market. There are a couple of other solutions, though:
- Use one of the old/cheap 6-in-1 / 16-in-1 SIM cards from the SIM cloning scene
- Implement the GSM 11.11 SIM card spec on a programmable card such as a PIC microcontroller card or Java Card
- Use something like the Bladox products to implement a SIM card or a SIM card proxy
The cheapest option with little R&D overhead is to use the so-called 16-in-1
SIM cards. They allow the user to set some of the interesting bits (Ki,
PMLNsel, ICCID, IMSI, SMSP): Sufficient for authentication, but not sufficient for
doing arbitrary tricks with the SIM.
Today I spent the better part of the day reverse engineering how both the SIM
card as well as the included SIM card reader work. The result can be found in the OpenBSC wiki.
As I've already implemented+tested general authentication and encryption
support in OpenBSC, all that is left to be done is some integration,
configuration and testing. With some luck we can soon operate OpenBSC with
full authentication and encryption support. This in turn will of course help with
cryptanalysis and other experiments in a controlled environment :)
[ /gsm |
permanent link ]
David Burgess (OpenBTS) visiting me for a couple of days in Berlin
On Friday, David Burgess of the OpenBTS project has come to visit me
in Berlin. We're working on the final preparation of the two-day Deepsec 2009 GSM Security Workshop which will
happen in Vienna next week.
David has more than 10 years experience in implementing GSM Layer 1 as well as
the higher-layer protocols, so it's always great to talk with him and tap into
his experience. Unfortunately the preparations for the workshop kept us too
busy to work on some actual code.
The more than 200 slides for the workshop will be published after the workshop
is over.
[ /gsm |
permanent link ]
India setting up service stations to program IMEI into phones
This is not really current news, as it was released much earlier this year.
However, I'm not following Indian news that closely so it has slipped my
attention:
India's COAI is setting up hundreds of service centers where end users can have an IMEI programmed into their phone.
This apparently relates to the fact that there are plenty of phones of Chinese
origin with an all-zero IMEI in India.
Since there is a government law that requires every phone to have an unique
IMEI number, operators have been ordered to refuse phones with an all-zero IMEI
onto their network.
I personally find all of this very funny:
- Firstly, what law enforcement typically cares about is the subscriber identity (the SIM). Persons are identified by their phone number. The phone number in turn is associated with the SIM. The SIM is issued by the operator and has a world-wide unique number called IMSI. So why would you care about the phone serial number? People can switch their phones much more easily than they can switch their SIM card, since the latter would always mean using a different number.
- Secondly, for most common phones (and particularly the cheaper Chinese phones), tools to program/reset the IMEI are readily available on the Internet. So what's the point for a government initiative to even create more such software, distributed widely across the country. Chances are high that software leaks.
- Finally, if I get a COAI-issued IMEI programmed into my phone, I can at any
time erase it again and go back to the COAI to have a new IMEI programmed into it.
So from a real IT security point of view, this entire exercise is nothing but
an annoyance to keep people busy and create employment for the staff operating
those IMEI programmers.
Tho those involved: Work smarter, not harder ;)
[ /gsm |
permanent link ]
German news site Spiegel Online has video of my torched car
Some 9 months after some
idiots have put my car on fire, the german news site Spiegel Online
reports on a
court trial unrelated to my car, but showing a video of my car.
Quite funny how they always dig out that footage. The court case was about
an alleged failed attempt to torch a car, so showing two completely burnt cars
in that article is not really sensible anyway.
As you can see from the article, there' already more than 250 burnt vehicles
this year in Berlin.
[ /personal |
permanent link ]
Android Mythbusters (Matt Porter)
Some weeks ago I was attending Embedded Linux Conference Europe. My personal highlight at this event
was the excellent Android Mythbusters presentation given by Matt Porter.
As you may know, Matt Porter was heavily involved in the MIPS and PPC ports of
Android, so he and his team have seen the lowest levels of Android, more and
deeper than even cellphone manufacturers ever have to look into it.
The slides of his presentation are now available for download. I would personally recommend this as mandatory reading material for everyone who has some interest in Android.
The presentation explains in detail why Android is not what most people refer
to when they say Linux. What most people mean when they say Linux is the
GNU/Linux system with it's standard userspace tools, not only the kernel.
The presentation shows how Google has simply thrown 5-10 years of
Linux userspace evolution into the trashcan and re-implemented it partially for
no reason. Things like hard-coded device lists/permissions in object code
rather than config files, the lack of support for hot-plugging devices (udev),
the lack of kernel headers. A libc that throws away System V IPC that every
unix/Linux software developer takes for granted. The lack of complete POSIX
threads. I could continue this list, but hey, you should read those slides.
now!
Just one more practical example: You cannot even plug a USB drive to an android
system, since /dev/sd* is not an expected device name in their hardcoded
hotplug management.
Executive summary: Android is a screwed, hard-coded, non-portable abomination.
I can't wait until somebody rips it apart and replaces the system layer with
a standard GNU/Linux distribution with Dalvik and some Android API simulation
layer on top. To me, that seems the only way to thoroughly fix the problem...
[ /linux/mobile |
permanent link ]
|