OPIE considered insecure

Alexander Leidinger Alexander at Leidinger.net
Tue Feb 17 02:20:38 PST 2009


Quoting Benjamin Lutz <mail at maxlor.com> (from Thu, 12 Feb 2009  
11:13:58 +0100):

> Hi Alexander,

Sorry for the delay, an illness is making its rounds here and I got hit too...

> On Thursday 12 February 2009 10:41:19 Alexander Leidinger wrote:
>> - Implement something which is similar o freeauth.org, just better
>> implemented and without the "not so good" stuff / design decissions.
>>
>> Short: they need something you know (PIN) + something you have (e.g.
>> token, or mobile phone with java with some fixed key). You then enter
>> your arbitrary long PIN into the phone, and it will give you a time
>> limited key to login (so the time needs to be in sync to some extend).
>> On the machine you login you need the cleartext version of your PIN,
>> the fixed key, and ideally it saves the the PW you just used to login
>> to prevent a relogin with the same PW. If you've seen the remote login
>> tokens from RSA or similar, then you should get the idea what this is
>> about.
>
> I've stumbled accross freeauth.org while researching the subject. The reason
> I didn't consider it is because so far I've been just printing out my otps,
> and that's no longer possible with freeauth.org. And there are situations
> where I can't run a Java program on my phone, for example when I'm using
> the phone as a bluetooth modem.

Nothing prevents you to write a program in C, perl, or whatever. This  
way you can generate the PW on the system where you use the blutooth  
modem (in case it is trusted).

> I'm not saying that time-based pws wouldn't be nice to have, it just goes in
> a different direction than OPIE, so it's not what I'm looking for at the
> moment. Also, the thought of having to write programs in J2ME again
> horrifies me :)
>
>> I wrote down a while ago the algorithm somewhere (based upon my own
>> thoughts how to do it, this was before I've seen freeauth, so it's
>> independent), and also thought about the bells and whistles (some
>> security pitfalls you need to think about). If you are interested in
>> implementing this (ideally with a BSD license for inclusion into the
>> base system)
>
> While I most probably won't implement freeauth.org, I'd still like to see
> your notes; the security pitfalls you considered are likely there for other
> algorithms too.

The notes are in the direction of notifying the user if the PIN can  
hit non-volatile storage, or that the storage area of the PIN needs to  
0ed in-place after use to prevent it to appear in (provoked) crash  
dumps or just plain reading from memory. There are also notes about  
the valid character set (there should be no NUL byte or newline, but  
apart from that there should be not much restrictions (depends upon  
the device you use to enter the PIN)), that the device which prints  
out the PW should also have an indication for the lifetime of the PW,  
that the server should save the valid PWs of the current valid  
timeframe to prevent multiple logins with the same PW (also serves as  
an indicator that someone spied out the PW in case you enter the PW  
correctly and the timeframe is OK too).

The algorithm itself is not 100% finished yet. The generic part is  
done, but I haven't finished the details (important here is the format  
of the date which is passed to the hash function, which hash funtion  
to use, how long the PW can be (truncation of the hash and the  
corresponding security implications... also in the light of user  
convenience)). If someone really wants to put some amount of time/work  
into this, I can put it up on the FreeBSD wiki and hand out  
contributor access to it, but just to satisfy the curiosity of people,  
I'm not interested to invest the necessary time to polish it and put  
it up on the wiki.

Bye,
Alexander.

-- 
A sect or party is an elegant incognito devised to save a man from
the vexation of thinking.
		-- Ralph Waldo Emerson, Journals, 1831

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137


More information about the freebsd-security mailing list