<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6227778315761961844</id><updated>2012-01-13T02:17:53.369-08:00</updated><category term='one-time-password'/><category term='public-key-cryptography'/><category term='yubikey'/><category term='about'/><category term='authentication'/><category term='u4jsp'/><title type='text'>Java Security Programming</title><subtitle type='html'>Blog about Java security programming in general and the U4JSP code in particular</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://arne-javasecurity.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://arne-javasecurity.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Arne Halvorsen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-uJD4Mp3TMws/AAAAAAAAAAI/AAAAAAAAAAA/jHcjmnT3AME/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6227778315761961844.post-5191566015411156214</id><published>2008-06-28T07:02:00.000-07:00</published><updated>2008-06-28T07:20:24.442-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yubikey'/><title type='text'>Roughing a YubiKey</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.ggpht.com/arne.halvorsen/SGY_QHIIrHI/AAAAAAAAAGs/oknK9EVhFwA/28062008-716373.jpg?imgmax=640"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://lh3.ggpht.com/arne.halvorsen/SGY_QHIIrHI/AAAAAAAAAGs/oknK9EVhFwA/28062008-716373.jpg?imgmax=640" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;How tough is the YubiKey? Suppose to tough... Since I got my static password one I have put it on my key ring where it is flanked by hard steel keys hitting it all the time I would imagine spending most of its time in my pockets.&lt;br /&gt;&lt;br /&gt;Doing fine so fare...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6227778315761961844-5191566015411156214?l=arne-javasecurity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arne-javasecurity.blogspot.com/feeds/5191566015411156214/comments/default' title='Legg inn kommentarer'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6227778315761961844&amp;postID=5191566015411156214' title='0 Kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/5191566015411156214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/5191566015411156214'/><link rel='alternate' type='text/html' href='http://arne-javasecurity.blogspot.com/2008/06/hi-by.html' title='Roughing a YubiKey'/><author><name>Arne Halvorsen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-uJD4Mp3TMws/AAAAAAAAAAI/AAAAAAAAAAA/jHcjmnT3AME/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/arne.halvorsen/SGY_QHIIrHI/AAAAAAAAAGs/oknK9EVhFwA/s72-c/28062008-716373.jpg?imgmax=640' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6227778315761961844.post-3236678450276425130</id><published>2008-06-18T16:29:00.000-07:00</published><updated>2008-11-13T00:18:21.689-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yubikey'/><title type='text'>YubiKey 1.3.0 and Static YubiKey Passwords Review</title><content type='html'>There is a new firmware for the YubiKey being beta tested, &lt;a href="http://forum.yubico.com/viewtopic.php?f=2&amp;amp;t=79"&gt;here is the forum thread&lt;/a&gt; about it. They wanted to give out keys to known YubiKey users (those that can produce an OTP) so testing will happen. Natural I signed up and today I got two keys:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PBTeHmUPYU8/SFmelHeAXFI/AAAAAAAAAFo/u5wpABLqID8/s1600-h/19062008.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_PBTeHmUPYU8/SFmelHeAXFI/AAAAAAAAAFo/u5wpABLqID8/s320/19062008.jpg" alt="" id="BLOGGER_PHOTO_ID_5213372404155309138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The left one is special: It produces a static password, same character sequence every time. While it can not be used to give the strong client authentication of an OTP it absolute has it uses. For example how many characters do you use for your personal computer login (&gt;0 I hope ;-)?&lt;br /&gt;&lt;br /&gt;Well, I just made an new user in my old XP environment with a very long password...&lt;br /&gt;&lt;br /&gt;Works great while logging in, small trick in registering the password: Since the YubiKey produces an enter after password typed I could not register the static password in the XP widget pushing the green ring since it has to be entered twice and the enter event triggers the completion of the registration, so never got the second chance... What I had to do was to capture the password in notepad and do copy and paste.&lt;br /&gt;&lt;br /&gt;Mind you, the robotic enter is a feature: it makes logging in to computer realy smooth once you have registred the password. One think I found after been trying it a few time was that it really is faster to log in this way then typing in a long for human strong password.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arne-javasecurity.blogspot.com/2008/05/one-time-password-otp-usb-keyboard.html"&gt;My resource post on the YubiKey&lt;/a&gt;&lt;br /&gt;&lt;a href="http://arne-javasecurity.blogspot.com/2008/06/yubikey-review.html"&gt;My YubiKey review&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6227778315761961844-3236678450276425130?l=arne-javasecurity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arne-javasecurity.blogspot.com/feeds/3236678450276425130/comments/default' title='Legg inn kommentarer'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6227778315761961844&amp;postID=3236678450276425130' title='0 Kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/3236678450276425130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/3236678450276425130'/><link rel='alternate' type='text/html' href='http://arne-javasecurity.blogspot.com/2008/06/yubikey-130-and-static-yubikey.html' title='YubiKey 1.3.0 and Static YubiKey Passwords Review'/><author><name>Arne Halvorsen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-uJD4Mp3TMws/AAAAAAAAAAI/AAAAAAAAAAA/jHcjmnT3AME/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PBTeHmUPYU8/SFmelHeAXFI/AAAAAAAAAFo/u5wpABLqID8/s72-c/19062008.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6227778315761961844.post-1130402869169265676</id><published>2008-06-07T15:25:00.000-07:00</published><updated>2008-06-08T03:15:39.071-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yubikey'/><title type='text'>YubiKey review</title><content type='html'>Here is a review of the &lt;a href="http://www.yubico.com/products/yubikey/"&gt;YubiKey&lt;/a&gt; after I have been playing around with one a few days.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Using th&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;e YubiKey to log into a Web Application&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;There is one application you can start experience the use of a YubiKey as a tool to authenticate yourself on the Web right away: The Yubico &lt;a href="http://forum.yubico.com/index.php"&gt;forum&lt;/a&gt;. There you need a YubiKey to log in as a user for posting. When you register you have a choice to also define a pin code to be used when logging in. I did choose to define a pin code so I would be in the typical two factor authentication situation where such devices as the YubiKey are used. Glad I did, because that gave me an interesting observation:&lt;br /&gt;&lt;br /&gt;When I log into the forum I am presented with a form not much unlike the form to log into my online bank: One field to type something I know (here that is the pin, for the bank it is a password) and one field to type in a one time password (OTP) proving I possess something (here that is the YubiKey, for the bank it is a dongle giving me an OTP to read of a small LCD display when pushing a button after inserting my smart bank card into it (phu...)).&lt;br /&gt;&lt;br /&gt;Now, here is the difference: In the bank log in situation it does not matter in what order I do enter information as long as I have provided both password and OTP when I push the form's OK button. But in the forum log in scenario I must enter the OTP last because the device will do an 'enter button push' after the OTP has been feed into the field. And an enter button push normally means &lt;span style="font-style: italic;"&gt;'I am done, send the request to the server'&lt;/span&gt;. Of course it does not &lt;span style="font-style: italic;"&gt;have&lt;/span&gt; to mean that, but it normally does, and it does so in the forum's log in form. So if I happen to do the OTP first with my YubiKey before entering my pin I will send a request missing my pin information and be rewarded with a pin missing error message.&lt;br /&gt;&lt;br /&gt;Now, my point is that this way of operating is a &lt;span style="font-style: italic;"&gt;feature&lt;/span&gt; of the YubiKey, and a very cool feature I think. But a feature user friendly interface designers need to relate to and &lt;span style="font-style: italic;"&gt;take advantage &lt;/span&gt;of. At the very least you should have text informing end user that the OTP is to be provided last in the form, but better probably having the user interface work like that the&lt;span style="font-style: italic;"&gt; &lt;/span&gt;OTP &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; entered last. That could be by activating the OTP field when ready or working in some kind of wizard fashion.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Giving the key to a coworker&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I walked over to my unsuspecting colleague, gave him the YubiKey saying it was some cool Swedish technology that goes into his USB port, watched him mount it and had us focus on the tray area because the first thing I was going to point out was the message that pops up showing it being seen as an USB keyboard. Nothing happened. He had put it in with the wrong side up! You can do that with this USB gadget! The lighting condition happen to be a bit challenging at his station: bright sunshine through windows and the side of his laptop with USB ports in the shades so the ring on the up side where hard to see. Not a big problem because users will learn after use that the golden contact strip are also signs of the up side. Still, I think future key design may consider making the up side more explicit.&lt;br /&gt;&lt;br /&gt;But when we got the thing put in correctly he jumped straight to the nearest field (his browser's address field) to generate an OTP, I quickly explained to not push, just rest the finger on the circle of cool green light and he had no problem confusing firefox.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Capturing the OTP in a Java desktop application&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The company I work for, we develop desktop clients using the java &lt;a href="http://en.wikipedia.org/wiki/Swing_%28Java%29"&gt;Swing API&lt;/a&gt;. So one thing I was interested in right away was how easy it would be to get the OTP in a Java/Swing program. So I simply made a dialog having a text field (the JTextField class to be accurate) and wrote some callback code similar to:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;otpField.addActionListener&lt;br /&gt;(&lt;br /&gt;  new ActionListener()&lt;br /&gt;  {&lt;br /&gt;    public void actionPerformed(ActionEvent e)&lt;br /&gt;    {&lt;br /&gt;      System.out.println(otpField.getText());&lt;br /&gt;      // In a real app. here would be code to do &lt;br /&gt;      // authentication sending the OTP to a server.&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;When does this callback method get called? Well, the &lt;span style="font-style: italic;"&gt;actionPerformed&lt;/span&gt; method is one you can register to wide range of widgets. If registered to a button it is invoked when user push the button. On a JTextField it is invoked when the user hit the enter key when the field has focus...&lt;br /&gt;&lt;br /&gt;Thats right, the YubiKey invokes my &lt;span style="font-style: italic;"&gt;actionPerformed&lt;/span&gt; callback method when the OTP has been populated in the field! It could not possible be any easier to integrate in our solutions! The automatic enter feature is one that beside it 'being a USB keyboard'  does this easy.&lt;br /&gt;&lt;br /&gt;I think it is likely hat similar ease of integration will be found using other well designed GUI toolkits also.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Wrap Up&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I liked the concept of the YubiKey once I learned about it on the web but now that I have experienced it first hand I do like it even more!&lt;br /&gt;&lt;br /&gt;Developer of services and applications that are going to utilize the device will need to take into account the nature of the gadget I think. But then it seems to offer the possibility of a more user friendly authentication process than many of todays two factor authentication solutions.&lt;br /&gt;&lt;br /&gt;I also like the goal of Yubico of wanting to be the &lt;a href="http://en.wikipedia.org/wiki/IKEA"&gt;IKEA&lt;/a&gt; of authentication solutions, from the Yubico welcome page:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Yubico's mission is to make Internet identification secure, easy and affordable for everyone. Inspired by IKEA and Amazon.com we deliver flat packages of do-it-yourself tools: We sell the YubiKey hardware online and provide you the basic SDK for free, no license cost included. And you can take the basic SDK to build your own full-fledged, customized strong authentication service."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Coming from small company developing niche solution in need of security I like that and hope they manages to stay true to that vision.&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arne-javasecurity.blogspot.com/2008/05/one-time-password-otp-usb-keyboard.html"&gt;&lt;br /&gt;&lt;br /&gt;My resource post on the YubiKey&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6227778315761961844-1130402869169265676?l=arne-javasecurity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arne-javasecurity.blogspot.com/feeds/1130402869169265676/comments/default' title='Legg inn kommentarer'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6227778315761961844&amp;postID=1130402869169265676' title='1 Kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/1130402869169265676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/1130402869169265676'/><link rel='alternate' type='text/html' href='http://arne-javasecurity.blogspot.com/2008/06/yubikey-review.html' title='YubiKey review'/><author><name>Arne Halvorsen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-uJD4Mp3TMws/AAAAAAAAAAI/AAAAAAAAAAA/jHcjmnT3AME/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6227778315761961844.post-5255755966112990435</id><published>2008-06-04T11:57:00.000-07:00</published><updated>2008-11-13T00:18:21.714-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yubikey'/><title type='text'>Got my first YubiKey!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PBTeHmUPYU8/SEbmJEZGy9I/AAAAAAAAAFQ/cSR-96SLcuc/s1600-h/04062008%28004%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_PBTeHmUPYU8/SEbmJEZGy9I/AAAAAAAAAFQ/cSR-96SLcuc/s320/04062008%28004%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5208103062572813266" border="0" /&gt;&lt;/a&gt;Got the device from "Søta Bror"! Now on with hacking (the good type of hacking) &lt;span style="font-style: italic;"&gt;with&lt;/span&gt; it...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arne-javasecurity.blogspot.com/2008/05/one-time-password-otp-usb-keyboard.html"&gt;My resource post on the YubiKey&lt;/a&gt;&lt;br /&gt;&lt;a href="http://arne-javasecurity.blogspot.com/2008/06/yubikey-review.html"&gt;My YubiKey review&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6227778315761961844-5255755966112990435?l=arne-javasecurity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arne-javasecurity.blogspot.com/feeds/5255755966112990435/comments/default' title='Legg inn kommentarer'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6227778315761961844&amp;postID=5255755966112990435' title='0 Kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/5255755966112990435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/5255755966112990435'/><link rel='alternate' type='text/html' href='http://arne-javasecurity.blogspot.com/2008/06/got-my-first-yubikey.html' title='Got my first YubiKey!'/><author><name>Arne Halvorsen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-uJD4Mp3TMws/AAAAAAAAAAI/AAAAAAAAAAA/jHcjmnT3AME/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PBTeHmUPYU8/SEbmJEZGy9I/AAAAAAAAAFQ/cSR-96SLcuc/s72-c/04062008%28004%29.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6227778315761961844.post-8867050925353985976</id><published>2008-05-31T07:25:00.000-07:00</published><updated>2008-06-08T03:04:49.582-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yubikey'/><title type='text'>A YubiKey Simulator</title><content type='html'>Still no YubiKey :-(.&lt;br /&gt;&lt;br /&gt;However I can play around with a YubiKey web &lt;a href="http://zyz.dk/yk/generator_0.2/yubi_generator.php"&gt;simulator&lt;/a&gt; an early YubiKey hacker named &lt;span style="font-style: italic;"&gt;hasterguf &lt;/span&gt;has made :-).&lt;br /&gt;&lt;br /&gt;And here is it's &lt;a href="http://zyz.dk/yk/generator_0.2/yubi_generator.php.html"&gt;source code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arne-javasecurity.blogspot.com/2008/05/one-time-password-otp-usb-keyboard.html"&gt;My resource post on the YubiKey&lt;/a&gt;&lt;br /&gt;&lt;a href="http://arne-javasecurity.blogspot.com/2008/06/yubikey-review.html"&gt;My YubiKey review&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6227778315761961844-8867050925353985976?l=arne-javasecurity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arne-javasecurity.blogspot.com/feeds/8867050925353985976/comments/default' title='Legg inn kommentarer'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6227778315761961844&amp;postID=8867050925353985976' title='0 Kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/8867050925353985976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/8867050925353985976'/><link rel='alternate' type='text/html' href='http://arne-javasecurity.blogspot.com/2008/05/yubikey-simulator.html' title='A YubiKey Simulator'/><author><name>Arne Halvorsen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-uJD4Mp3TMws/AAAAAAAAAAI/AAAAAAAAAAA/jHcjmnT3AME/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6227778315761961844.post-4111600486244304661</id><published>2008-05-26T02:43:00.000-07:00</published><updated>2008-06-08T03:05:26.969-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yubikey'/><title type='text'>The Yubico Forum</title><content type='html'>I edited the resource list in my &lt;a href="http://arne-javasecurity.blogspot.com/2008/05/one-time-password-otp-usb-keyboard.html"&gt;previous post&lt;/a&gt; on &lt;a href="http://www.yubico.com/"&gt;Yubico&lt;/a&gt;'s &lt;a href="http://www.yubico.com/products/yubikey/"&gt;YubiKey&lt;/a&gt; to include a &lt;a href="http://forum.yubico.com/"&gt;forum&lt;/a&gt; they now have. I think it is clever that they uses the YubiKey to give write access to the forum: it gives developers a chance to use the key for a real web application straight out of the envelope. I would imagine any YubiKey hacker would register as a forum user anyway.&lt;br /&gt;&lt;br /&gt;A gem for developers already posted in the forum is the &lt;a href="http://forum.yubico.com/viewtopic.php?f=8&amp;amp;t=45"&gt;test vector post&lt;/a&gt;, using information here a developer can get a lot of code written and tested while waiting for mail man to show up with the device.&lt;br /&gt;&lt;br /&gt;If you have questions but yet no key it is my experience that mails to Yubico gets answered rather promptly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arne-javasecurity.blogspot.com/2008/05/one-time-password-otp-usb-keyboard.html"&gt;My resource post on the YubiKey&lt;/a&gt;&lt;br /&gt;&lt;a href="http://arne-javasecurity.blogspot.com/2008/06/yubikey-review.html"&gt;My YubiKey review&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6227778315761961844-4111600486244304661?l=arne-javasecurity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arne-javasecurity.blogspot.com/feeds/4111600486244304661/comments/default' title='Legg inn kommentarer'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6227778315761961844&amp;postID=4111600486244304661' title='0 Kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/4111600486244304661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/4111600486244304661'/><link rel='alternate' type='text/html' href='http://arne-javasecurity.blogspot.com/2008/05/i-edited-resource-list-in-my-previous.html' title='The Yubico Forum'/><author><name>Arne Halvorsen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-uJD4Mp3TMws/AAAAAAAAAAI/AAAAAAAAAAA/jHcjmnT3AME/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6227778315761961844.post-690677911460591356</id><published>2008-05-22T03:13:00.000-07:00</published><updated>2008-07-16T06:03:13.564-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='one-time-password'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='yubikey'/><title type='text'>An One Time Password (OTP) USB Keyboard Emulator Generator Device called The YubiKey</title><content type='html'>I am going to have a look at this USB authentication solution from a company named &lt;a href="http://yubico.com/"&gt;Yubico&lt;/a&gt;: The &lt;a href="http://yubico.com/products/yubikey/"&gt;YubiKey&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The big selling point with this is how platform independent it is (&lt;span style="font-weight: bold;"&gt;no&lt;/span&gt; drivers needed) and how easy it supposedly is to integrate. What it does is that it feeds the computer an one time password through your USB port acting as an USB keyboard when the end user pushes it's button. &lt;span style="font-style: italic;"&gt;So it only uses features virtual all computers used by humans must have.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Ordered one two days ago, it is just across the border (me in Norway and Yubico in Sweeden) so one could hope to have it soon, but there is an airport strike in my country now that could delay snail mail I guess and perhaps they are empty after got some fame by this &lt;a href="http://twit.tv/sn143"&gt;Security Now podcast&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;The basis of it's workings:&lt;br /&gt;&lt;br /&gt;The generated 128 bit password contains &lt;a href="http://en.wikipedia.org/wiki/Advanced_Encryption_Standard"&gt;AES&lt;/a&gt; encrypted information that allows a server (that also know the secret AES key embedded in the YubiKey) to verify that the password is indeed a &lt;span style="font-style: italic;"&gt;new&lt;/span&gt; one.&lt;br /&gt;&lt;br /&gt;Resources with meat I have found related to the device:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;a href="http://www.yubico.com/home/index/"&gt;company&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.yubico.com/products/yubikey/"&gt;key&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.yubico.com/files/YubiKey_Security_Review.pdf"&gt;A 2007 Security report&lt;/a&gt;. This was going to be an independent report, however the author then started to work for Yubico so it is not independent. Also as time passes and the YubiKey product get updated relevance may diminish.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Yubico's &lt;a href="http://forum.yubico.com/index.php"&gt;forum&lt;/a&gt; (requires a YubiKey to post).&lt;/li&gt;&lt;li&gt;Open source YubiKey projects hosted at &lt;a href="http://code.google.com/"&gt;Google Code&lt;/a&gt; listed &lt;a href="http://code.google.com/hosting/search?q=label:Yubikey"&gt;here&lt;/a&gt; and are discussed in &lt;a href="http://groups.google.com/group/yubico-devel"&gt;this google group&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Yubico's collection of external resources: &lt;a href="http://yubico.com/news/articles/"&gt;articles&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Yubico's monthly &lt;a href="http://yubico.com/news/newsletter/"&gt;newsletter&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.grc.com/sn/SN-143.pdf"&gt;Transcript of Security Now! Episode mostly about YubiKey&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://aolradio.podcast.aol.com/sn/SN-143.mp3"&gt;MP3 File of above episode&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.secureidnews.com/"&gt;Secure Id News&lt;/a&gt; interview with Yubico CEO Stina Ehrensvärd in this &lt;a href="http://www.secureidnews.com/news/2008/06/11/episode-14-looking-into-the-secure-login-using-yubikey/"&gt;podcast&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://zyz.dk/yk/generator_0.2/yubi_generator.php"&gt;A YubiKey web simulator&lt;/a&gt; with &lt;a href="http://zyz.dk/yk/generator_0.2/yubi_generator.php.html"&gt;source code&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="https://mashedlife.com/"&gt;A site that has taken it in use for authentication&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://arne-javasecurity.blogspot.com/2008/06/yubikey-review.html"&gt;My YubiKey review&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6227778315761961844-690677911460591356?l=arne-javasecurity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arne-javasecurity.blogspot.com/feeds/690677911460591356/comments/default' title='Legg inn kommentarer'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6227778315761961844&amp;postID=690677911460591356' title='0 Kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/690677911460591356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/690677911460591356'/><link rel='alternate' type='text/html' href='http://arne-javasecurity.blogspot.com/2008/05/one-time-password-otp-usb-keyboard.html' title='An One Time Password (OTP) USB Keyboard Emulator Generator Device called The YubiKey'/><author><name>Arne Halvorsen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-uJD4Mp3TMws/AAAAAAAAAAI/AAAAAAAAAAA/jHcjmnT3AME/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6227778315761961844.post-6322421684408677769</id><published>2008-03-06T04:04:00.000-08:00</published><updated>2008-06-15T04:45:24.918-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='public-key-cryptography'/><category scheme='http://www.blogger.com/atom/ns#' term='u4jsp'/><title type='text'>Public key secure communication using Diffie-Hellman key agreement</title><content type='html'>In the mid 70s a revolution happened in &lt;span style="font-style: italic;"&gt;cryptography&lt;/span&gt;: The invention of &lt;span style="font-style: italic;"&gt;public key cryptography&lt;/span&gt;. Before this revolution only &lt;span style="font-style: italic;"&gt;symmetric&lt;/span&gt; &lt;span style="font-style: italic;"&gt;ciphers&lt;/span&gt; existed to &lt;span style="font-style: italic;"&gt;encrypt&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;decrypt messages&lt;/span&gt;. They are called symmetric ciphers because the &lt;span style="font-style: italic;"&gt;same&lt;/span&gt; key is used in the encryption step and the decryption step (running the cipher in &lt;span style="font-style: italic;"&gt;reverse&lt;/span&gt;). The keys used with these ciphers are also known as &lt;span style="font-style: italic;"&gt;secret keys&lt;/span&gt; since they are secrets not to be known by the enemy.&lt;br /&gt;&lt;br /&gt;The problem is that prior to &lt;span style="font-style: italic;"&gt;secure &lt;/span&gt;communication the secret key must be distributed to all parties that needs to communicate. This can not happen over the network since we yet has no way to secure communication before the keys has been distributed...&lt;br /&gt;&lt;br /&gt;In public key cryptography the parties that are to communicate has &lt;span style="font-style: italic;"&gt;key pairs &lt;/span&gt;that consist of a &lt;span style="font-style: italic;"&gt;private&lt;/span&gt; and a &lt;span style="font-style: italic;"&gt;public key&lt;/span&gt;. The public keys are given to or fetched over an insecure channel to or by anyone that wishes to communicate securely with the owner of the public key: The public keys are for anyone to know about. The private keys are secrets known only to the owner of the key pair.&lt;br /&gt;&lt;br /&gt;After the idea of public key cryptography had been put forward several algorithms has been developed to do:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Secret (symmetric) key distribution, what is usual referred to a as &lt;span style="font-style: italic;"&gt;key exchange&lt;/span&gt; or &lt;span style="font-style: italic;"&gt;key agreement&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Public key ciphers&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Authentication&lt;/span&gt; (making sure a message is from who it claims sent it).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The very first algorithm to be developed to do secret key distribution using the concept of public keys where invented by Diffie and Helmman, and is known as &lt;span style="font-style: italic;"&gt;Diffie-Hellman key agreement&lt;/span&gt;. It provides secret key distribution but not authentication.&lt;br /&gt;&lt;br /&gt;Using this method two parties that are to communicate first compute their key pairs using some common public known data and exchanges their public key. Since the key pairs are computed using the same data the two parties will be able to compute the same secret key using it's private key and the other's  public key.  After that the secret key is used to encrypt and decrypt  messages between  the two parties.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;In a client/server model it is natural that the server is the keeper and distributor of the common data, the data can be read from disk, data base or even computed when server starts up. In the java cryptograpy API this data may be represented by objects of the type &lt;b&gt;&lt;b&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/spec/DHParameterSpec.html"&gt;DHParameterSpec&lt;/a&gt;&lt;/b&gt;&lt;/b&gt;. It is a small problem that this class is not &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html"&gt;Serializable&lt;/a&gt; because:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One may want to save this to a file for the server to load on start up, depending on how persistent data is handled it may be convenient to had this type serializable.&lt;/li&gt;&lt;li&gt;This is information that need to be distributed to client over the network, could very well be convenient to have this serializable then.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The &lt;a href="http://code.google.com/p/u4jsp/"&gt;U4JSP&lt;/a&gt; class&lt;b&gt;&lt;b&gt; &lt;a href="http://u4jsp.googlecode.com/svn/trunk/u4jsp/doc/generated/index.html"&gt;TwoPartyDhKeyAgreement&lt;/a&gt;&lt;/b&gt;&lt;/b&gt; wraps the same data as &lt;b&gt;&lt;b&gt;DHParameterSpec &lt;/b&gt;&lt;/b&gt;but is serializable and adds properties and methods to make it convenient to implement a secure communication protocol using Diffie-Hellman key agreement.&lt;br /&gt;&lt;br /&gt;Note that key agreement can be done among &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; participants of communication (see &lt;a href="http://java.sun.com/javase/6/docs/api/javax/crypto/KeyAgreement.html"&gt;&lt;b&gt;&lt;b&gt;KeyAgreement&lt;/b&gt;&lt;/b&gt;&lt;/a&gt;), &lt;b&gt;&lt;b&gt;TwoPartyDhKeyAgreement &lt;/b&gt;&lt;/b&gt;is implemented for the in network programming all important two party (i.e. client/server) case.&lt;br /&gt;&lt;br /&gt;See this &lt;b&gt;&lt;b&gt; &lt;a href="http://u4jsp.googlecode.com/svn/trunk/u4jsp/doc/generated/org/aha/u4jsp/dh/TwoPartyDhKeyAgreement.html#example"&gt;section&lt;/a&gt;&lt;/b&gt;&lt;/b&gt; of &lt;span style="font-weight: bold;"&gt;TwoPartyDhKeyAgreement&lt;/span&gt;'s java documentation on how it is used and I plan to blog more about code that uses this in client/server programming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6227778315761961844-6322421684408677769?l=arne-javasecurity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arne-javasecurity.blogspot.com/feeds/6322421684408677769/comments/default' title='Legg inn kommentarer'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6227778315761961844&amp;postID=6322421684408677769' title='0 Kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/6322421684408677769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/6322421684408677769'/><link rel='alternate' type='text/html' href='http://arne-javasecurity.blogspot.com/2008/03/public-key-secure-communication-using.html' title='Public key secure communication using Diffie-Hellman key agreement'/><author><name>Arne Halvorsen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-uJD4Mp3TMws/AAAAAAAAAAI/AAAAAAAAAAA/jHcjmnT3AME/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6227778315761961844.post-3052566259422749463</id><published>2008-03-06T03:59:00.000-08:00</published><updated>2008-03-20T08:53:42.307-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='about'/><title type='text'>About this blog</title><content type='html'>Plan to blog here about anything feel worth saying regarding security hacking in Java.&lt;br /&gt;&lt;br /&gt;Code developed will be published under the &lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;Apache License, v 2.0&lt;/a&gt; &lt;a href="http://code.google.com/p/u4jsp/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6227778315761961844-3052566259422749463?l=arne-javasecurity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arne-javasecurity.blogspot.com/feeds/3052566259422749463/comments/default' title='Legg inn kommentarer'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6227778315761961844&amp;postID=3052566259422749463' title='0 Kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/3052566259422749463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6227778315761961844/posts/default/3052566259422749463'/><link rel='alternate' type='text/html' href='http://arne-javasecurity.blogspot.com/2008/03/about-this-blog.html' title='About this blog'/><author><name>Arne Halvorsen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-uJD4Mp3TMws/AAAAAAAAAAI/AAAAAAAAAAA/jHcjmnT3AME/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
