Blog posts

2007-03-15 – Strength of asymmetric and symmetric encryption algorithms

Yves-Alexis Perez writes a bit about Debian and crypto-containers, comparing cryptsetup and encfs. The comparison is decent enough, except that it’s fairly trivial to get cryptsetup to integrate into the whole gnome-volume-manager stack and have a dialogue pop up when you insert an encrypted USB stick or similar. Sure, it’s mounted by a root process, but I wouldn’t claim it’s any kind of insecure because of that.

What did really catch my eye was the line near the end:

[…] but this is a bruteforce attack against master password (1024 bits RSA key), not against 128bits aes key of the container.

Well, according to conventional research, a 1024 bit RSA key is about as strong as an 80 bit symmetric key. A semi-recent RSA paper confirms this too. And to the best of my knowledge, there has not been found weaknesses in AES which lower the effective key size.

2007-02-06 – Things to remember when doing hardware maintenance:

  • Plug all the power plugs back in. Not just almost all of them.

2007-01-07 – contentless_ping.pl 0.3 released

A small update of my contentless ping script has now been released. First, it’s a bit more configurable, thanks to some patches sent to me by way of Martin F. Krafft. Secondly, it now rate limits, so you can’t get people kicked off channels by pinging them repeatedly.

2007-01-02 – Locally administrated MAC addresses

Russel Coker writes about using multiple Ethernet devices in Xen and wonders about if there is something similar to RFC1918 addresses, but for Ethernet. Apparently, there is, they’re called “Locally Administered Addresses”. To make a local address, just set the seventh bit to one. You probably want to make the eigth bit a zero too, unless it’s a multicast address. Wikipedia has more, as usual.

2006-12-30 – A moderately complicated OpenWRT setup

At home, I have had a setup with a wireless router for quite a while. It’s more or less a stock OpenWRT setup, but I have split the joined all the wired ports into one virtual interface (actually, I think they’re just on one VLAN) and split off the wireless. The wireless is open to the world, but I have a fair amount of packet filters there so it doesn’t get too annoying. Some people have no shame and run bittorrent and other file sharing utilities on other people’s open wireless.

Anyway, my setup is no longer so simple. I bought a WRT54GL to provide better reception in other parts of the flat and wanted to join those two. After a little bit of reading, I found what I wanted: WDS. Due to a previous misconfiguration of the WRT54GS, the WDS connection was joined onto the br0/LAN segment and not the wireless segment. That was easily enough fixed, but it’s always a bit scary to change network settings on headless devices. (I did manage to lock myself out, but I could ssh through in from the wireless network, so I just used the WRT54GL to bounce through.) Once that bit was up, I could set up WDS, I did as the documentation told me and did it with lazywds (anyone can do WDS with you) enabled. It worked, so I turned it off and rebooted both routers (again..), and it still worked. Yay!

2006-12-13 – Initial impressions of the Samsung Z5F

I have been walking to and from work lately and have become increasingly restless over not having anything to listen to, so I bought a small media player, a Samsung Z5F. First impression is it’s tiny. Really tiny and I used a little while to get used to touch-buttons. Upgrading the firmware is trivial, both from Linux and Windows: the firmware download is a zip file, inside there’s .dat file which you place in the root directory. When you disconnect, the player says “new firmware detected. Upgrade?”, I answered yes (who wouldn’t? It gives me 30% better battery life and gapless MP3 playback), it rebooted, upgraded itself and rebooted again. After a long (probably 15-20 seconds) wait where it just displayed the Samsung logo, during which I was a bit scared it was bricked, it booted up fine.

It works well, it plays music and podcasts, but I have run into one strange problem with it. I was about 1/3 through the latest episode of Lugradio when I wanted to go ten seconds back to catch something somebody said, but it entirely failed to seek backwards. It seems like it either doesn’t support seeking in big .ogg files or doesn’t support seeking in big files or doesn’t support seeking in .ogg files. Anyway, annoying bug. I’m going to download the MP3 instead to see if it has the same problem or not.

Apart from that, it’s a lovely, tiny little player with 44 hours of battery life and 4GB storage. Nice little toy.

Update (2006-12-26): I got an email from one of the firmware developers about the problem of seeking in large Ogg Vorbis streams and this is now fixed. The fix isn’t public yet, but is somewhere in Samsung’s QA chain. And the problem is only large Ogg Vorbis files, not large MP3s, so it can be worked around in most cases. Yay!

2006-12-08 – Javascript, Greasemonkey and clipboards

One of the jobs of an archive administrator in Ubuntu processing sync requests. The job is fairly simple: read a sync request (in the form of a bug report), make sure it includes the relevant information and is either filed by or seconded by a person with the appropriate permissions. Then, it’s downloading the source, injecting it into the correct queue and marking the bug as closed.

The by far most boring bit of this is actually closing the bugs: opening the bug report, clicking on the relevant task, marking as “Fix released”, assigning to myself, pasting the update report from an editor and clicking “submit”. Rinse and repeat, today for 73 bugs.

To help this, I started looking into writing a greasemonkey script. Just add a button besides the submit button which would then be labeled DTRT or something like it, but ran into some trouble which is really obvious: Javascript run in the content’s security context can’t access your clipboard. A small hack to greasemonkey.js fixed this and I now have a shiny GM_fromClipboard function. After playing around with this for a while, I thought it wouldn’t help me at all since the javascript is called in the page content’s security context, but any event listeners I add seemingly aren’t. Nice. (This is of course due to the whole concept of closures and how Javascript works.)

Anyway, I ended up with a script that does the right thing. It needs a greasemonkey patch.

2006-11-26 – Live CD on disk

Enrico writes about putting a live CD on a removable disk. I added the support in casper for doing this almost a year ago and it has saved me lots of debugging time. Booting the live CD that way is almost as fast as booting an installed system. If you couple this with using the persistent storage support in casper, you can get the configure-on-boot support together with persistency.

In a later update, slh is quited saying that xresprobe doesn’t work on AMD64. This is wrong, I wrote that support based on code by Matthew Garret a little more than nine months ago. I wouldn’t recommend incorporating it in new-written code, but rather use libx86.

2006-11-17 – A replacement for screen. Ish.

Adrian von Bidder writes about retty, a tool to make processes reattach to your terminal. While useful, it seems mostly like a limited version of cryopid which seems even more insane and crackful, but quite cool nevertheless. I have not had a chance to actually try cryopid yet though, so if any of you have, please blog about your experiences with it. Oh, and please package it, somebody.

2006-10-19 – Releasing Ubuntu

So, the Ubuntu release candidate was released today. As a release manager, it’s a fascinating process. First the development where there is relativetly little central control: People work on their specs and my job as a relase manager is to roll new alpha/snapshot releases every couple of weeks. Those are lightly tested (does it boot and install on at least one machine?) and if a derivative or an architecture isn’t ready, well, then it isn’t ready.

Beta, the release candidate and the release are completely different beasts. We have test plans, people are assigned tests and so on. In addition, we have a freeze which in total lasts about a week for beta, two weeks for release. Every upload has to be hand-checked and approved. As the release grows nearer, the bugs have to be more severe in order for an upload to be approved and in the end it’s more or less a full commitment “we have this, we have tested this thoroughly and there is no way we can do a full test and still release on schedule”.

At some point, it gets scary. There is just one command left to run; sync-mirrors. No arguments, just the command. I pushed the button, and we are now live.