Two factor authentication

Two factor authentication, how hard can it be?

Two factor authentication has two components: something you know, and something you have. Something you know is usually username&password and gives you the first factor. Something you have is a second factor and it isn't usually implemented.

One can argue that private/public key encryption is strong, but it's not two-factor authentication into the computer systems. An ssh key or SSL certificate can be password protected, but it's still just a file on the computer usually. And you don't want someone to compromise user's laptop, take as long as they need to decrypt the password and use that to get access to your intranet.

The criteria are:
  • two-factor authentication
  • open standard
  • vendor independent
  • free software stack available
  • secure
  • user friendly
  • low-cost
So let's start running down the systems available today for the two factor authentication:
  1. Smartcards / Tokens using PKCS #11 API & PKCS #15 standard
  2. Hardware / Software Tokens using OATH HOTP or TOTP standard
  3. Yubikey Token with Yubikey Validation standards
Smartcards, while common in everyday live are not very convenient. You need smartcard reader with you, you get authentication prompts from you browser which look different across all platforms. There is cost of buying smartcards & smartcard readers. Not sure how that would work with SSH. Can't use it on your mobile. This is probably a good solution in managed enterprise networks with single sign on implemented with Kerberos. So it's not an easy solution. And I haven't looked much into it.

OATH is Open Authentication initiative behind the one-time password (OTP) authentication using event or time based. It's a simple nice algorithm, which you can read about here. It generates 6-8 digit long one time password using a seed (initial secret) and variable. In event based form it's just a sequential counter, in time based it's the time. There are many hardware and software tokens available on the market. So it's one contender I'm looking into.

YubiKey is a battery-less USB token with touch sensitive button. It simulates a usb keyboard and "types" passwords. It can be configured to produce: 32 character yubikey OTP, 6-8 digit OATH HOTP or long static password. Later yubikeys also added challenge-response functionality as well. The cool thing is that the hardware design and yubikey OTP documentation is published. And all the software around it is Open Source. There isn't another hardware vendor though.

Now implementation details. For my use case I need: central validation server, pam authentication module, over the network authentication, authentication plugins for specific applications (e.g. OpenERP, Drupal, etc.).

For Yubikey: there are multiple opensource validation servers, multiple pam modules (including those that work against validation server over the network), multiple plugins for many applications out there. There is an investment cost for the Yubikeys ($25 each, cheaper if buying in bulk +VAT +Shipping) and you are locked to a single vendor of the keys.

For OATH: found only one validation server, which is a dead work of a dead original... there is oath-toolkit with pam module, but it means storing the secret seeds on each machine where you want to authenticate, cause it doesn't talk securely to a validation server over the network.

Underdog is yubikey-yubiserve which is OATH HOTP/YubiKey validation server using YubiKey validation protocol (REST API over SSL with client API signatures). But they aren't HOTP pam modules which know how to talk over YubiKey validation protocol.

I'm thinking to modify c-yubico-pam module to accept OATH HOTP and use yubikey-yubiserve. Then I get open source stack, vendor independence, awesome user experience with yubikey OTP, worse user experience with OATH HOTP, but at least I will be able to mix and match ;-)

ps. fedora project and CERN are using yubikeys, so maybe it's not that bad. any takers for software yubikey generators for JavaME / Android / iPhone / MeeGo / Desktop?

Thanks Ubuntu

I have first used Ubuntu in 2006 after having been burned by RedHat in 1999. It was a surprise that it worked, was much faster than my current OS and allowed me to painlessly install / use: GIMP, LaTeX, Emacs and many electronics CAD tools. Later Ubuntu allowed me to learn a lot about Linux through the ubuntuforums, ubuntu irc channels, help / wiki, developer weeks, code review, etc. I have now got an open-source job because I have these skills.

Many of the above was either directly or indirectly sponsored by Canonical. From the first CD, to fixing bugs, to code review from exceptional Canonical hackers and of course free training sessions. All interaction I had with Canonical employees was very professional and timely. Heck, I've asked for URL-shortening service for launchpad and we have now as in http://pad.lv/1.

The upstream projects I'm involved in will probably never be part of any revenue questions. And some of them explicitly do not accept donations.

I can defiantly say that Canonical has spent more money on me personally, then the revenue I have brought them. Heck, partially I have a full-time job now because of them. Speaking of which - the company I work for has a good relationship with Canonical. Some of our developers were sub-contracted for initial Ubuntu release and even today we do ad-hoc development for them.

Nothing is free (as in beer). Somebody throughout the years has been sponsoring this: parents, universities, companies, individuals, etc. Who is paying bills for all the bandwidth, disk space, buildbots, that you have ever used? Surely it wasn't yourself all the time.

Debian is a phenomenon. And has been for the past 17 years. Two of directors in my company are Debian Developers, Canonical technical board are all past/present Debian Developers. All of us do share a certain set of common values. Our priorities do shift. I want a roof above my head, food on a table, bandwidth and an OS to run on it. I want to listen to my favourite online radio station in banshee, running gnome, on Ubuntu with back ends running Linux on Amazon cloud. If you yank any of these pieces out, the domino effect kicks in. I fail to see now affiliation fee split between banshee/ubuntu/gnome/amazon can affect any of the four projects in anyway since all four are directly or indirectly inter-dependant on each other.

The moral is, it doesn't matter which part of the community you kiss, you will still get slapped for it.

This "flame war" was actually very boring... I can't wait for the Natty UI freeze to get all the juicy comments, e.g. like in the past about Maverick wallpaper and the buttons on the left and the like ;-)

I got a $job in #FLOSS!

So my last post was about me trying to find a job in Open Source. That post generated an email from Tristan Hill who told me that he recently started to work for Credativ and that they have positions open. So I've checked it out, looked lovely, but I wasn't so sure about the what type of work I would have to do. In February, I had an interview with Chris Halls and it was a dream come true. I took the job.

Thank you Tristan Hill for reading Ubuntu Planet.


Credativ is Open Source company. Job satisfies FSF open-source job definition. The company was started in Germany, by a Debian Developer - Dr. Michael Meskes. There are a few other Debian Developers.

Credativ does a lot of 3rd line support around the world. The centre in Germany is 24h, the UK office is not. In the UK we do a lot of Nagios and OpenERP development & support as well as provide OSS training. Relaxed, diverse, challenging and fun =) And you get root ;-) And our marketing manager Irenie White has cakes =) All it takes is a quick chat on jabber to get one!

It was a great feeling that yes you can run Ubuntu on your machine and yes you get root on most of the boxes you need to do your work on. It is a pleasure to come to work everyday! I'm probably easy to please. But it is a really good feeling when you come to the interview and your future manager knows what packages you are maintaining in Debian and what mailing lists you have appeared on and etc. I was also touched by the fact that all equal opportunities statements in the handbook referred to "marital or civil partnership status".

Overall - loads of development, amazing staff, challenging support tickets from sysadmins and everything is in open source.

There are currently 2 Ubuntu Desktop machines in the Office, with other desktops & servers are running Debian Squeeze. But I'm sure it will gradually change to the purple side ;-)

Are you a Debian / Ubuntu developer? Do you program? Are you into Open Source? Do you want to enjoy working with Open Source 9-5? Then apply, cause we are looking for technical people to join us. If you want to talk about Credativ you can find my IRC/email details on launchpad.

My hobby, became my full-time job. I'm a recent university graduate, I'm between 20-25 and only 3% of 200 000 jobs created last year in the UK were full-time... The odds were against me and I made it =)

How did you get your first job in open-source?

I have graduated with a 2:1 Masters of Engineering in the UK. I am now looking for recent-graduate entry level jobs. I have been involved in Ubuntu development during my spare time over the past years. My current job hunt hasn't been successful yet. So i want to ask:

How did you get your first job in open-source?

I have experience in C/Python/Gtk programming, Ubuntu/Debian Deb packaging as well as Fedora/openSUSE RPM packaging, autotools/CMake/distutils, git/bzr/svn. I am looking for internship, entry level job with prospects of future full-time employment. Ideal position is an open-source C/Python developer on Linux as part of an experienced team. Location: UK, EU, Russia.

This is my story =) Share your story with me!

attach. CV

Psychological report is in, I'm dyslexic

Bo hoo.... Got to finish dissertation and do well in GSoC.

I wonder if I shall work on my weaknesses or just ignore that in find a job where I can take full advantage of my strengths?