<?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-6180833599810788176</id><updated>2011-07-08T05:17:42.935-05:00</updated><category term='Claims'/><category term='curiosity'/><category term='openid'/><category term='damntheman'/><category term='funny'/><category term='bug'/><category term='apple'/><category term='reputation'/><category term='passwords'/><category term='card selector'/><category term='privacy'/><category term='hacking'/><category term='stodid'/><category term='osx'/><category term='nit-picking'/><category term='hspd-12'/><category term='stupidity'/><category term='bitching'/><category term='troubleshooting'/><category term='bad explanation'/><category term='wayf'/><category term='X509V3Credential'/><category term='encryption'/><category term='iphone'/><category term='bookmarklet'/><category term='facial detection'/><category term='web-based'/><category term='pki'/><category term='java'/><category term='law'/><category term='SAML2'/><category term='aol'/><category term='security'/><category term='programming'/><category term='federation'/><category term='why?'/><category term='cardspace client'/><category term='government'/><category term='geek'/><category term='SAML'/><category term='patents'/><category term='virtual keyboard'/><category term='gripe'/><category term='pingidentity'/><category term='fixed'/><category term='mypay'/><category term='spec compliance'/><category term='digg'/><category term='drools'/><category term='design'/><category term='lightweight'/><category term='vpn'/><category term='biometrics'/><category term='infocard'/><category term='automation'/><title type='text'>Sick Of Acronyms</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.rammic.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>57</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-7114520583201632927</id><published>2009-12-19T17:19:00.008-05:00</published><updated>2009-12-20T19:47:03.784-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mypay'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='fixed'/><title type='text'>New MyPay Bookmarklet</title><content type='html'>&lt;div style="text-align: left;"&gt;MyPay Virtual Keyboard Remover v 2.0:&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="javascript:function%20substitute(pwd){%20%20%20%20%20%20%20var%20sub%20=%20&amp;quot;N0123456789$QWERTYUIOP$ASDFGHJKL$ZXCVBNM$!@#$%+^*=_&amp;quot;;%20var%20order%20=%20document.Form1.visOrder.value;%20var%20ret%20=%20&amp;quot;&amp;quot;;%20for(var%20i%20=%200;%20i%20&lt;%20pwd.length;%20i++){%20var%20pIndex;%20if(pwd[i]%20==%20'A'){%20pIndex%20=%20order.indexOf(pwd[i],%2012);%20}else%20if(pwd[i]%20==%20'B'){%20pIndex%20=%20order.indexOf(pwd[i],%2023);%20}else%20if(pwd[i]%20==%20'C'){%20pIndex%20=%20order.indexOf(pwd[i],%2033);%20}else%20{%20pIndex%20=%20order.indexOf(pwd[i]);%20}%20%20%20%20%20%20%20%20%20%20%20%20%20%20ret%20+=%20sub[pIndex];%20}%20%20%20%20%20%20%20%20return%20ret;%20%20%20};%20%20%20%20%20function%20changePin(){%20var%20pwd%20=%20document.Form1.newPin.value;%20var%20enc%20=%20substitute(pwd);%20document.Form1.newPin.value=enc;%20return%20verifyClick();%20}%20%20%20%20document.getElementById('btnSubmit').setAttribute('onclick','changePin();');%20%20%20document.getElementById('nav_vk').style.display='none';%20%20document.getElementById('virtual_keyboard').style.display='none';%20%20document.getElementById('newPin').style.backgroundColor='FFFFFF';%20%20document.getElementById('newPin').removeAttribute('readonly');%20document.Form1.removeAttribute('onkeypress');%20document.body.removeAttribute('onkeydown');"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;MyPay Simple&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Works with Firefox, Safari, and Chrome. Drag it to your bookmarks or your toolbar. You need to establish a username and change your password through the virtual keyboard first. Once you have done that, use the bookmarklet to disable the virtual keyboard on subsequent logins.&lt;/div&gt;&lt;div&gt;Before:&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_wC5IWJgdgwA/Sy7E8HrddtI/AAAAAAAAC94/vIDD1xO48WQ/s400/myPayVK.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 288px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5417483938905814738" /&gt;&lt;/div&gt;&lt;div&gt;After:&lt;/div&gt;&lt;div&gt;&lt;img src="http://3.bp.blogspot.com/_wC5IWJgdgwA/Sy7FFhXo0PI/AAAAAAAAC-A/B1fOmpnKwwI/s400/myPayVK-1.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 141px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5417484100420817138" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-7114520583201632927?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/7114520583201632927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=7114520583201632927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7114520583201632927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7114520583201632927'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/12/new-bookmarklet.html' title='New MyPay Bookmarklet'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wC5IWJgdgwA/Sy7E8HrddtI/AAAAAAAAC94/vIDD1xO48WQ/s72-c/myPayVK.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-8702346353958423150</id><published>2009-12-19T09:21:00.003-05:00</published><updated>2009-12-19T09:38:55.931-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtual keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>Wow, a New Standard for User Interaction</title><content type='html'>&lt;div style="text-align: left;"&gt;MyPay recently overhauled their interface and made it more "secure." I have my doubts, but they certainly have changed how they interact with the user.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;  &lt;div&gt;&lt;img src="http://3.bp.blogspot.com/_wC5IWJgdgwA/SyzhwIbM2NI/AAAAAAAAC9w/IxVZdMwLG30/s400/MyPay+Plead.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 394px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5416952668831406290" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was a bit speechless. Pleading with users is new, but maybe it'll work for them. Apparently it'll be the only thing working for them:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, 'Arial Narrow', Tahoma, 'Times New Roman', Helvetica, sans-serif; font-size: 11px; font-weight: 200; "&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;blockquote&gt;Although most users have established their new login credentials with no trouble, some users are calling the Central Customer Support Unit for assistance. As a result, customer support is experiencing high call volume, and many customers are waiting on hold longer than usual.&lt;br /&gt;&lt;br /&gt;We apologize for any inconvenience this may cause. We are doing everything possible to remedy this situation. &lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;I have a few doubts that "most users" had no trouble. Maybe, just maybe, it's because of your continued use of the ridiculous virtual keyboard. Yes, you've increased the password complexity requirements (which actually increased security), but slaughtered what little usability you had. I promise you that getting rid of it will "remedy this situation."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;MyPay, I think it's time that you get rid of the SSO or Admiral/General that once had a keylogger placed on his system and has perpetuated this paranoia. There is a risk/cost analysis that obviously has not been done and is probably costing the taxpayer millions in unnecessary support desk costs. Perhaps using the same standards that the rest of the DoD uses, the DISA STIG, could provide you with a more rational approach for implementing security. I'll even be happy to help you understand all of the super-secret requirements that are available on their website.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm just sayin'...&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-8702346353958423150?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/8702346353958423150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=8702346353958423150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8702346353958423150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8702346353958423150'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/12/wow-new-standard-for-user-interaction.html' title='Wow, a New Standard for User Interaction'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wC5IWJgdgwA/SyzhwIbM2NI/AAAAAAAAC9w/IxVZdMwLG30/s72-c/MyPay+Plead.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-740839148152823247</id><published>2009-11-10T00:25:00.007-05:00</published><updated>2009-12-19T17:25:02.101-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mypay'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>myPay Simple Log In</title><content type='html'>&lt;div style="text-align: left;"&gt;[Update: &lt;a href="http://blog.rammic.com/2009/12/new-bookmarklet.html"&gt;New Bookmarklet Available&lt;/a&gt;]&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;To finish my rant started in my previous post, I've put together a simple proof of concept bookmarklet to remove the myPay virtual keyboard security facade. To use it, drag the below link to your bookmark bar (works on Firefox, Chrome, and Safari).&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;a href="javascript:%20function%20substitute(pwd){%20%20%20%20%20%20var%20sub%20=%20%22N0123456789$QWERTYUIOP$ASDFGHJKL$ZXCVBNM%22;%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20order%20=%20%22%22%20+%20document.Form1.visOrder.value;%20%20%20%20%20%20%20var%20ret%20=%20%22%22;%20%20%20%20%20%20%20%20%20%20%20for(var%20i%20=%200;%20i%20%3C%20pwd.length;%20i++){%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20pIndex;%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(pwd[i]%20==%20'A'){%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pIndex%20=%20order.indexOf(pwd[i],%2012);%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}else%20if(pwd[i]%20==%20'B'){%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pIndex%20=%20order.indexOf(pwd[i],%2023);%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}else%20if(pwd[i]%20==%20'C'){%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pIndex%20=%20order.indexOf(pwd[i],%2033);%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}else%20{%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pIndex%20=%20order.indexOf(pwd[i]);%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}%20%20%20%20%20%20%20%20%20%20%20%20%20ret%20+=%20sub[pIndex];%20%20%20%20%20%20}%20%20%20%20%20%20%20return%20ret;%20%20};%20%20%20function%20changePin(){%20%20%20%20%20%20%20%20%20%20var%20pwd%20=%20document.Form1.visPin.value;%20%20%20%20%20%20%20%20%20%20var%20enc%20=%20substitute(pwd);%20%20%20%20%20%20%20%20%20document.Form1.visPin.value=enc;%20%20%20%20%20%20%20%20%20%20return%20verifyClick();%20%20}%20%20%20document.getElementById('cmdGo').setAttribute('onclick','changePin();');%20%20document.getElementById('nav_vk').style.display='none';%20document.getElementById('virtual_keyboard').style.display='none';%20document.getElementById('tblaccess').childNodes[1].getElementsByClassName('menu2')[4].style.display='none';%20document.getElementById('visPin').style.backgroundColor='FFFFFF';%20document.Form1.visPin.removeAttribute('readonly','readonly');"&gt;MyPay Simple&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Go to &lt;a href="https://mypay.dfas.mil/"&gt;https://mypay.dfas.mil&lt;/a&gt; and click the new bookmarklet. Your login dialog should remove the virtual keyboard and allow for a simple log in.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://1.bp.blogspot.com/_wC5IWJgdgwA/SvpDa6GFHgI/AAAAAAAAC9k/kbzQyxzZSp0/s400/myPay+Web+Site-1.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 250px; height: 294px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5402704832534748674" /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Just to be clear, this doesn't allow you to do anything that you couldn't already do- myPay allows you to do a simple login if your virtual keyboard login fails.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://3.bp.blogspot.com/_wC5IWJgdgwA/Svm_VUVGP9I/AAAAAAAAC9U/nKUxY2uLJUQ/s400/Pin+Validation.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 134px;" alt="" id="BLOGGER_PHOTO_ID_5402559600962977746" border="0" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-740839148152823247?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/740839148152823247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=740839148152823247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/740839148152823247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/740839148152823247'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/11/mypay-simple-log-in.html' title='myPay Simple Log In'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wC5IWJgdgwA/SvpDa6GFHgI/AAAAAAAAC9k/kbzQyxzZSp0/s72-c/myPay+Web+Site-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-2661075768538347212</id><published>2009-11-09T23:56:00.013-05:00</published><updated>2009-11-10T01:50:19.536-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>myFail Web Site</title><content type='html'>&lt;div&gt;Logging into the DFAS myPay site is frustrating. This is the gateway where DoD employees can view and change their financial data and records.&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_wC5IWJgdgwA/SvjzN3KQHVI/AAAAAAAAC9M/u5ZnxpfAGEY/s1600-h/myFail.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 211px; height: 400px;" src="http://2.bp.blogspot.com/_wC5IWJgdgwA/SvjzN3KQHVI/AAAAAAAAC9M/u5ZnxpfAGEY/s400/myFail.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5402335172501708114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;In an attempt secure the interface (namely to prevent key loggers), they have implemented a javascript-based keyboard where the user must enter their PIN using their mouse (or using the keyboard pressing tab LOTS of times). A randomization function is used to change the position of the buttons, presumably to prevent a simple click-tracking virus from simply replaying the click sequence. Numbers always appear on the upper row and the letters will appear in a random position on the same row where they exist on the keyboard (e.g. QWERTY letters will always appear on the top row, just in a random order).&lt;/div&gt;&lt;div&gt;At first glance, I assumed that there would be some server-side state that identified the position of the buttons (as to not allow the user's browser to arbitrarily choose the positions). Looking at how the button layout is generated, however, makes it clear that the position is indeed generated by the client-side alone. Javascript functions are called to randomize the locations, and the locations of these buttons are included as part of the POST parameters upon authentication. A &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;visOrder&lt;/span&gt; variable is included with a simple substitution cipher to identify button locations: 0 is represented by position 0, 1 by position 1, etc. Thus:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;VisOrder     =3601827594&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Substitution =0123456789&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Example PIN  =325476&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Encoded      =102867&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Thus any virus/program can easily mount an online guessing attack (since it defines the substitution pattern), and can quickly decipher the PIN if it has access to the POST parameters. &lt;/div&gt;&lt;div&gt;The web site's security implementation is painfully trivial, so we can conclude that the Javascript keyboard is only to prevent keyloggers. But it has a number of side effects, especially with respect to the security of the password. Given the tedious nature of PIN entry, users choose extremely simplistic passwords. MyPay actually encourages this as it does not enforce complexity requirements and limits the length of the password between 4 and 8 characters. There is no support for upper/lower case or special characters. 36 possible values over an 4-character search space is not terribly secure.&lt;/div&gt;&lt;div&gt;I think that myPay has allowed their paranoia about keyloggers to overtake reasonable design and security decisions about the rest of their system. A system infected with such a device or software has been critically compromised anyway, and will have access to at least system-level passwords and the SSN of the user logging into myPay (the SSN/LoginID field is not protected by the virtual keyboard function). It is an insight to the simplistic view of security that too many hold, and also has the unfortunate manifestation in a terribly unusable user interface.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-2661075768538347212?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/2661075768538347212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=2661075768538347212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2661075768538347212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2661075768538347212'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/11/myfail-web-site.html' title='myFail Web Site'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wC5IWJgdgwA/SvjzN3KQHVI/AAAAAAAAC9M/u5ZnxpfAGEY/s72-c/myFail.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-1981252954938688725</id><published>2009-11-09T15:41:00.003-05:00</published><updated>2009-11-09T15:49:39.998-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patents'/><category scheme='http://www.blogger.com/atom/ns#' term='law'/><title type='text'>Red Hat gets it right...</title><content type='html'>Couldn't say it better myself, so I'll simply call out their &lt;a href="http://www.abanet.org/publiced/preview/briefs/pdfs/09-10/08-964_AffirmanceAmCuRedHat.pdf"&gt;argument&lt;/a&gt; (citations removed):&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;It is, however, practically impossible to know with reasonable certainty whether a new software product could be said to infringe some prior software patent. Patents are conventionally referred to as intellectual property. However, as James Bessen and Michael Meurer have explained in detail, patents differ substantially from tangible property in that their boundaries are often fuzzy and unpredictable. If patents do not give clear notice of their limits, they create a risk of inadvertent infringement. Vague patents also enable opportunistic behavior. For example, a patentee may, based on vague language, claim ownership of a technology unknown to the inventor, but instead first conceived by someone else.&lt;/div&gt;&lt;div&gt;This problem of uncertain patent boundaries is particularly acute with software patents. Software is an abstract technology. Software algorithms can be represented in numerous different ways, and even computer scientists sometimes disagree over whether two software technologies are equivalent. Thus it is not surprising that software patents are typically framed in abstract language with uncertain boundaries. As a result, a software developer, when shown a software patent, often cannot be sure whether the patent reads on newly developed code.&lt;/div&gt;&lt;div&gt;This difficulty is multiplied hundreds or thousands of times with regard to a complex software product combining hundreds or thousands of discrete components. A separate but related problem faces all software developers—that of the impossibility of patent clearance, or determining whether there are existing patents that may be said to read on a new product. There is no reliable, economical method for searching the hundreds of thousands of existing software patents. The clearance problem is made even worse by the existence of tens of thousands of applications that for eighteen months after filing are unpublished.&lt;/div&gt;&lt;div&gt;Thus, simply by virtue of producing and marketing an innovative software product, a software developer assumes the risk of a costly patent infringement lawsuit. In the U.S., software patents are more than twice as likely to be the subject of a lawsuit than other patents and account for one quarter of all patent lawsuits. The cost of defending a patent lawsuit frequently amounts to several million dollars. Such lawsuits involve technical issues that are difficult for judges and juries to understand, and so even with a strong defense the outcome is usually far from certain. If there is a judgment of infringement, the penalty may be an injunction ending further production and enormous monetary damages. Defense costs and litigation risks are so large that in most cases defendants agree to some payment to settle such cases. Even when claims appear to have no valid basis, targets frequently agree to pay for licenses based on the mere threat of litigation. &lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-1981252954938688725?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/1981252954938688725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=1981252954938688725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/1981252954938688725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/1981252954938688725'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/11/red-hat-gets-it-right.html' title='Red Hat gets it right...'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-4057899089584906896</id><published>2009-11-09T14:58:00.008-05:00</published><updated>2009-11-09T15:51:53.588-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patents'/><category scheme='http://www.blogger.com/atom/ns#' term='law'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Software Patents (Bilski v. Kappos)</title><content type='html'>I just learned about this case while listening to CNBC, but the implications to the entirety of the software world are huge. I should preface this post with the fact that I AM NOT A LAWYER and this is simply a statement of my opinion.&lt;div&gt;&lt;br /&gt;&lt;div&gt;Bilski v. Kappos is a case currently before the Supreme Court of the United States (SCOTUS) regarding the patentability of an idea without a tangible implementation. &lt;a href="http://www.scotuswiki.com/index.php?title=Bilski_v._Kappos"&gt;Scotus wiki&lt;/a&gt; summarizes:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;"In seeking a patent, Bilski and Warsaw told the Patent Office in 1997 that their idea was a highly useful one: using complex mathematical formulas, they could tell a business how to hedge against risk due to the rising and falling of prices of raw materials that were used to produce something — say, to generate electricity. Commodities prices often fluctuate quite widely, because of market forces or even changes in the weather, so these two inventors figured out ways to manage what they called “consumption risk.” It is, they claimed, of benefit both to businesses and to their customers."&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;This hedging strategy was rejected by the patent reviewer because it was not a concrete implementation of an idea, simply a concept. Courts have long held that mathematical axioms or algorithms are not patentable, as they are part of natural law. The most recent affirmation of this by the appeals court identified that an idea must be tied to a particular machine or apparatus or be involved in the transformation of an article to a different state to be patentable. This is now referred to as the "machine-or-transformation" test when considering patentability of an idea. The appeal before the Court aims to overturn this decision.&lt;/div&gt;&lt;div&gt;This has huge implications on the software industry as a whole. In an age where companies patent the most simplistic and abstract of ideas in hopes of future infringement, often the creation of new standards and technology is painfully inhibited by attempts to avoid such Intellectual Property (IP) traps. Companies rush to artificially build an IP war chest to hedge their inevitable infringement on others' IP. The number of trivial and otherwise trite patents that exist in this realm is simply staggering, and it is nearly impossible to develop without a devil-may-care attitude regarding infringement. It is a nightmare for any software development effort and for the engineers associated with them.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;Similar, Donald E. Knuth, Professor Emeritus at Stanford University and one of the world’s most respected computer scientists, wrote in 1994, “When I think of the computer programs I require daily to get my own work done, I cannot help but realize that none of them would exist today if software patents had been prevalent in the 1960s and 1970s.” ... Dr. Knuth also stated, “I strongly believe that the recent trend to patenting algorithms is of benefit only to a very small number of attorneys and inventors, while it is seriously harmful to the vast majority of people who want to do useful things with computers.”&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;This quote, offered by the RedHat's &lt;a href="http://www.abanet.org/publiced/preview/briefs/pdfs/09-10/08-964_AffirmanceAmCuRedHat.pdf"&gt;amicus brief&lt;/a&gt; in support of affirming the decision, captures the essence of the problem. RedHat's argument is well-reasoned and is worth a read if you can ignore the painfully verbose, legalese nature of the document. Be sure to read the various arguments on the &lt;a href="http://www.scotuswiki.com/index.php?title=Bilski_v._Kappos"&gt;Scotus Wiki&lt;/a&gt; and keep track of the eventual decision from the Court. Also note who filed amicus briefs in support of the petitioner (i.e. Overturning the decision) vs. supporting the respondent (Affirming the decision). &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-4057899089584906896?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/4057899089584906896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=4057899089584906896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4057899089584906896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4057899089584906896'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/11/software-patents-bilski-v-kappos.html' title='Software Patents (Bilski v. Kappos)'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-514523123656090152</id><published>2009-11-02T09:33:00.003-05:00</published><updated>2009-11-02T09:38:01.634-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='pki'/><title type='text'>Trouble with Windows 7/Internet Explorer and CAC?</title><content type='html'>Just a quick note about something I discovered- After upgrading my Windows XP virtual machine to Windows 7 x64 Professional, I was no longer able to access sites which required a DoD Common Access Card (CAC). Tinkering with Wireshark and Google Chrome finally appeared to reveal an answer: Windows 7 x64 (and possibly other versions, I don't know for sure) doesn't want to present a client certificate over anything but SSLv3.0. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So if you're having problems, be sure to go to Internet Options -&gt; Advanced -&gt; Security (Bottom of the list) and uncheck everything but SSLv3 as supported. That should reenable CAC authentication to DoD PKI websites.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-514523123656090152?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/514523123656090152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=514523123656090152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/514523123656090152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/514523123656090152'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/11/trouble-with-windows-7internet-explorer.html' title='Trouble with Windows 7/Internet Explorer and CAC?'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-5236343505829469851</id><published>2009-09-09T20:55:00.002-05:00</published><updated>2009-09-09T21:16:14.376-05:00</updated><title type='text'>Protocol Handling in Mobile OS's</title><content type='html'>I'm rather interested in the possibility of writing an application for a popular mobile OS (i.e. Apple iPhone, Palm WebOS, Google Android) which can capture and handle links of a particular protocol within the web browser. This isn't that uncommon- this occurs every time you hit a custom protocol link, such as &lt;i&gt;mailto://&lt;/i&gt; or &lt;i&gt;vnc://&lt;/i&gt; which launch an email or VNC client, respectively. This is an important concept for inter-process communication, especially as the line between native application and web application become increasingly blurred (WebOS!).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;iPhone: Interaction between applications and mobile Safari is possible, as demonstrated by &lt;a href="http://www.mobileorchard.com/alocola-mobile-orchards-safari-helper-makes-websites-location-aware/"&gt;Alocola&lt;/a&gt;. Applications register to handle links, and can also issue GET requests through the browser.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Android: It's possible to register an &lt;i&gt;intent-handler&lt;/i&gt; within your application, though it it appears to only be relevant for non-webkit based interactions. For whatever reason, clicking custom protocol links fall flat. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;WebOS: It doesn't appear to be possible. There's a resource file that maps internal applications to protocols, but it appears to be a reference and not modifiable. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The other thing I noted about WebOS was that while the javascript capability exists for novel application development, it is absolutely no replacement for a true application development framework. Why? There's no graphics abstraction API, persistent storage capability is extremely limited, and there's no networking except AJAX calls. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-5236343505829469851?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/5236343505829469851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=5236343505829469851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5236343505829469851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5236343505829469851'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/09/protocol-handling-in-mobile-oss.html' title='Protocol Handling in Mobile OS&apos;s'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-6524203726027981097</id><published>2009-08-17T23:00:00.002-05:00</published><updated>2009-08-17T23:28:35.066-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bad explanation'/><category scheme='http://www.blogger.com/atom/ns#' term='encryption'/><title type='text'>Lots of explanation...</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;But no useful information. GPush &lt;a href="http://www.tiveriasapps.com/faq.php"&gt;FAQ&lt;/a&gt;: &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; font-size: 12px; color: rgb(69, 69, 69); line-height: 18px; "&gt;&lt;h2 style="font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; color: rgb(0, 153, 51); font-size: 14px; font-weight: bold; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;h2 style="font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; color: rgb(0, 153, 51); font-size: 14px; font-weight: bold; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Should I be concerned about providing my password to GPush?&lt;/h2&gt;&lt;p style="font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; color: rgb(69, 69, 69); font-size: 12px; font-weight: normal; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;When we created the app, we committed first and foremost to security. We are using multiple levels of encryption including SSL, obfuscation, and cipher-based encryption. SSL ensures that your credentials can be transported securely. Your login credentials are encrypted using an encryption scheme that has never been cryptographically broken, with a different 'secret key' for each user. To test these security measures, penetration tests were ran on the server with no information accessed.&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; color: rgb(69, 69, 69); font-size: 12px; font-weight: normal; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what's the problem with this explanation? Nearly everything- the use of SSL is the only really useful piece of information, since we know what ciphers GMail supports. On the other points:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Obfuscation: This could mean anything, even that they named sensitive files as &lt;span class="Apple-style-span"  style="font-family:arial;"&gt;grandmasGroceryList.txt&lt;/span&gt; to throw off hackers.&lt;/li&gt;&lt;li&gt;Encryption scheme never been broken: This, again, means nothing. It is some custom scheme that has never been analyzed? I don't want someone's ROT-13 encoder protecting my personal information.&lt;/li&gt;&lt;li&gt;Different secret key for each user: How are these keys generated and stored? How is this key repository stored to prevent unauthorized access? Is it done in such a way that this is this better (security) than having a single key for each user? Probably not. More than likely, it is just another level of indirection.&lt;/li&gt;&lt;li&gt;Penetration tests: Professional? Script kiddy? State-sponsored? Automated tools? What level of access was given, and what testing procedures were followed?&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;If we are expected to believe that the due diligence was performed in the creation of this utility (especially the server-side components), this information shouldn't be hard to provide. Identify the ciphers. Detail the encryption process and the defense measures put in place. Provide some context regarding the testing procedures.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.guardian.co.uk/technology/2009/jul/15/privacy-internet-facebook"&gt;Or don't provide that data at all&lt;/a&gt;. It may prove less troublesome in the end. Because with good encryption or not, allowing someone to have your credentials (impersonation) is potentially dangerous. You just have to weigh the benefits of the solution against the cost of having to change your GMail credentials and the relatively low possibility that someone gets access to your account.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-6524203726027981097?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/6524203726027981097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=6524203726027981097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/6524203726027981097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/6524203726027981097'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/08/lots-of-explanation.html' title='Lots of explanation...'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-4887506440174695455</id><published>2009-08-03T13:17:00.003-05:00</published><updated>2009-08-03T13:20:10.851-05:00</updated><title type='text'>iPhone Hate</title><content type='html'>Let the pain begin. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.fastcompany.com/blog/chris-dannen/techwatch/seven-more-reasons-ditch-your-iphone"&gt;http://www.fastcompany.com/blog/chris-dannen/techwatch/seven-more-reasons-ditch-your-iphone&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The last two points are a bit weak, but it does call out that there are *much* better options at this point.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And yes, I have an iPhone. Hopefully not for much longer.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-4887506440174695455?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/4887506440174695455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=4887506440174695455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4887506440174695455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4887506440174695455'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/08/iphone-hate.html' title='iPhone Hate'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-8606327074787016743</id><published>2009-07-14T13:39:00.003-05:00</published><updated>2009-07-14T13:55:00.533-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pki'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>Compromised CA</title><content type='html'>A lot of people don't realize how sensitive and delicate PKI is in practice- this is the technology behind much of internet security (e.g. SSL). Though we can theorize that it would take 100's of thousands of years to brute-force an security system, that's never the attack vector (or point of vulnerability) on such a system. This does actually happen; the German healthcare system suffered such a problem when it's CA (certificate authority) lost it's keys after a &lt;a href="http://www.h-online.com/security/Loss-of-data-has-serious-consequences-for-German-electronic-health-card--/news/113740"&gt;power outage&lt;/a&gt;. Now, they must start from scratch, reissuing over 80 million smart cards. While it may seem overzealous to reissue that many cards- after all, the CA key was lost, not stolen- it's important to realize that without the CA's key that is impossible to issue new Certificate Revocation Lists (CRLs), create new Registration Authorities (RAs), etc. The PKI system instantly become useless. You have to start over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-8606327074787016743?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/8606327074787016743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=8606327074787016743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8606327074787016743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8606327074787016743'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/07/compromised-ca.html' title='Compromised CA'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-7332046003012038919</id><published>2009-05-04T10:05:00.002-05:00</published><updated>2009-05-04T10:11:54.476-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='hacking'/><title type='text'>That's why my identity got stolen!</title><content type='html'>&lt;a href="http://tech.slashdot.org/article.pl?sid=09/05/04/0212214"&gt;Slashdot points&lt;/a&gt; at a recent &lt;a href="http://www.cs.ucsb.edu/~seclab/projects/torpig/torpig.pdf"&gt;research paper&lt;/a&gt; regarding an infiltration of the Torpig botnet. The sheer amount of data that the botnet collects from the infected nodes is staggering- Roughly 180 thousand infected nodes and enough financial information to steal up to $8.3 million. Running a secure system may not even be enough to protect you, unfortunately:&lt;div&gt;&lt;blockquote&gt;&lt;div&gt;While 86% of the victims contributed only a single card number, others offered a few more. Of particular interest is the case of a single victim from whom 30 credit card numbers were extracted. Upon manual examination, we discovered that the victim was an agent for an at-home, distributed call center. It seems that the card numbers were those of customers of the company that the agent was working for, and they were being entered into the call center’s central database for order processing.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-7332046003012038919?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/7332046003012038919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=7332046003012038919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7332046003012038919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7332046003012038919'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/05/thats-why-my-identity-got-stolen.html' title='That&apos;s why my identity got stolen!'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-2242866204274409987</id><published>2009-04-20T12:22:00.003-05:00</published><updated>2009-04-20T12:42:44.728-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='hacking'/><title type='text'>Check your SSH logs...</title><content type='html'>Cause everyone's &lt;a href="http://isc.sans.org/diary.html?storyid=6214&amp;amp;rss"&gt;trying to get in&lt;/a&gt;. From my home router logs...&lt;div&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;br /&gt;Apr 19 07:47:30 unknown authpriv.warn dropbear[6815]: login attempt for nonexistent user from 202.96.50.240:41238&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:31 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6815]: exit before auth: Disconnect received&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:31 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6816]: Child connection from 202.96.50.240:42789&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:35 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6816]: exit before auth (user 'root', 1 fails): Disconnect received&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:35 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6817]: Child connection from 202.96.50.240:44292&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:38 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6817]: exit before auth (user 'root', 1 fails): Disconnect received&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:39 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6818]: Child connection from 202.96.50.240:45872&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:42 unknown authpriv.warn dropbear[6818]: login attempt for nonexistent user from 202.96.50.240:45872&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:43 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6818]: exit before auth: Disconnect received&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:44 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6819]: Child connection from 202.96.50.240:47601&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:47 unknown authpriv.warn dropbear[6819]: login attempt for nonexistent user from 202.96.50.240:47601&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:48 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6819]: exit before auth: Disconnect received&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:51 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6820]: Child connection from 202.96.50.240:49411&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:54 unknown authpriv.warn dropbear[6820]: login attempt for nonexistent user from 202.96.50.240:49411&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Apr 19 07:47:55 unknown &lt;a href="http://authpriv.info/"&gt;&lt;span style="text-decoration: underline ; color:#0000ff;"&gt;authpriv.info&lt;/span&gt;&lt;/a&gt; dropbear[6820]: exit before auth: Disconnect received&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;And this goes on for about 10 minutes.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-2242866204274409987?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/2242866204274409987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=2242866204274409987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2242866204274409987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2242866204274409987'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/04/check-your-ssh-logs.html' title='Check your SSH logs...'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-8655633912207794303</id><published>2009-04-15T07:04:00.007-05:00</published><updated>2009-04-15T07:34:02.292-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Yet another reason not to use ATM cards...</title><content type='html'>As if you needed more reason &lt;a href="http://consumerist.com/5205926/3-atm-skimmers-found-in-one-week-at-chasewamus-+-what"&gt;not to use ATM&lt;/a&gt;s, now it's revealed even using a perfectly secure machine is still dangerous due to &lt;a href="http://blog.wired.com/27bstroke6/2009/04/pins.html"&gt;poor security practices&lt;/a&gt; on bank networks:&lt;br /&gt;&lt;blockquote&gt;According to the payment-card industry, or PCI, standards for credit card transaction security, PIN numbers are supposed to be encrypted in transit, which should theoretically protect them if someone intercepts the data. The problem, however, is that a PIN must pass through multiple [Hardware Security Modules, HSMs] across multiple bank networks en route to the customer's bank. These HSMs are configured and managed differently, some by contractors not directly related to the bank. At every switching point, the PIN must be decrypted, then re-encrypted with the proper key for the next leg in its journey, which is itself encrypted under a master key that is generally stored in the module or in the module's application programming interface, or API.&lt;br /&gt;"Essentially, the thief tricks the HSM into providing the encryption key," says Sartin. "This is possible due to poor configuration of the HSM or vulnerabilities created from having bloated functions on the device."&lt;br /&gt;Sartin says HSMs need to be able to serve many types of customers in many countries where processing standards may be different from the U.S. As a result, the devices come with enabled functions that aren't needed and can be exploited by an intruder into working to defeat the device's security measures. Once a thief captures and decrypts one PIN block, it becomes trivial to decrypt others on a network.&lt;/blockquote&gt;To be fair, the article title is unnecessarily inflammatory since this doesn't involve cracking the actual PIN, but simply exploiting flaws in the design (no one is cracking crypto in this case). There is no legitimate cause for this type of problem nor a need to decrypt at various points in the network- it's kowtowing to backward compatibility concerns that is causing a problem like this.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Either way, though, it's time to think twice before putting my ATM card into the that sketchy gas station ATM. And use the credit card feature of your check-card if you have them. Refuting an ATM transaction is so much more difficult than a fraudulent credit card transaction.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-8655633912207794303?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/8655633912207794303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=8655633912207794303' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8655633912207794303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8655633912207794303'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/04/yet-another-reason-not-to-use-atm-cards.html' title='Yet another reason not to use ATM cards...'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-6365726252911532124</id><published>2009-04-10T05:54:00.000-05:00</published><updated>2009-04-10T09:26:58.531-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bitching'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>TSP and Up(?)time</title><content type='html'>&lt;div style="text-align: left;"&gt;Okay, the &lt;a href="http://www.tsp.gov/"&gt;TSP&lt;/a&gt; site is something that is reminiscent of the late 90's with regard to site design, but it's something that has been sufficiently functional for my needs. Apparently, however, their UI isn't the only thing that is a relic:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 34px;" src="http://4.bp.blogspot.com/_wC5IWJgdgwA/Sd9VrveIAXI/AAAAAAAAC9E/Mi4kQ9pjESw/s400/TSP_+Account+Access,+Introduction%3B+2008+Dec+10.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5323067494540771698" /&gt;&lt;/div&gt;&lt;div&gt;Three days of downtime for "system maintenance?" What would the reaction be if a commercial financial site (e.g. Scottrade, BoA, etc) were down for three days?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-6365726252911532124?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/6365726252911532124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=6365726252911532124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/6365726252911532124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/6365726252911532124'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/04/tsp-and-uptime.html' title='TSP and Up(?)time'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wC5IWJgdgwA/Sd9VrveIAXI/AAAAAAAAC9E/Mi4kQ9pjESw/s72-c/TSP_+Account+Access,+Introduction%3B+2008+Dec+10.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-2694452597264917083</id><published>2009-04-09T14:53:00.006-05:00</published><updated>2009-04-13T12:07:32.239-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vpn'/><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><title type='text'>Viscosity, OpenVPN and DNS Priority</title><content type='html'>I wanted to change my DNS settings when connecting to an OpenVPN server using &lt;a href="http://www.viscosityvpn.com/"&gt;Viscosity&lt;/a&gt;. Using the &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;resolv.conf&lt;/span&gt; and other methods didn't seem to have any effect, so I put together a solution that seems to work.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, put these &lt;a href="http://developer.apple.com/DOCUMENTATION/DARWIN/Reference/ManPages/man8/scutil.8.html"&gt;scutil&lt;/a&gt; commands into a file (we'll call it &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;/usr/local/bin/changeDns.pref&lt;/span&gt;):&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;get State:/Network/Service/0/DNS&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;d.add ServerAddresses * 192.168.1.1 10.0.0.1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;set State:/Network/Service/0/DNS&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;Notice that the &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;ServerAddresses&lt;/span&gt; line has my DNS servers in order of priority. Change this to match your desired DNS resolution configuration. This settings will be automatically undone once the connection has been severed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;(Edit: The &lt;/i&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;i&gt;/Network/Service/0/DNS&lt;/i&gt;&lt;/span&gt;&lt;i&gt; line is from my configuration, but it apparently varies between computers. You may need to run the scutil command &lt;/i&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;i&gt;list State:/Network/Service/[^/]+/DNS&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt; to find the name of your DNS service. Citation &lt;/i&gt;&lt;a href="http://www.afp548.com/article.php?story=20050703052052393"&gt;&lt;i&gt;here&lt;/i&gt;&lt;/a&gt;&lt;i&gt;.)&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, we need to edit the &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;/Applications/Viscosity.app/Contents/Resources/dnsupalt.py &lt;/span&gt;file (the script which is run when Viscosity connects). Put this after the nameservers and search_domains line:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;# Viscosity DNS Support Script                                                  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;# http://www.viscosityvpn.com&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;import os, re, sys&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;nameservers = []&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;search_domains = []&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;b&gt;os.system("scutil &lt; &lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;b&gt;/usr/local/bin/changeDns.pref&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;b&gt;")&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;This tells &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;scutil&lt;/span&gt; to run the file upon connection.  Running &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;scutil --dns&lt;/span&gt; after connecting shows that the DNS servers have been updated:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;resolver #1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  nameserver[0] : 192.168.1.1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  nameserver[1] : 10.0.0.1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  order   : 200000&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Disconnect and the system goes back to the DNS server offered by DHCP:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;resolver #1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  nameserver[0] : 10.0.0.1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  order   : 200000&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-2694452597264917083?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/2694452597264917083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=2694452597264917083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2694452597264917083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2694452597264917083'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/04/viscosity-openvpn-and-dns-priority.html' title='Viscosity, OpenVPN and DNS Priority'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-3718895353825909283</id><published>2009-04-02T23:22:00.002-05:00</published><updated>2009-04-02T23:34:55.455-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>Slingplayer for the iPhone</title><content type='html'>Count me in as "disappointed." I was really looking forward to using my iPhone to access my Slingbox when the mobile application came out (and had even convinced myself that the $30 would be worth it), but that's not a concern anymore since Sling has decided that they're arbitrarily removing &lt;a href="http://www.slingcommunity.com/blog/entry/34653/Update-SlingPlayer-Mobile-for-iPhone-Only-for-Slingbox-PRO-SOLO-and-PRO-HD-Users/"&gt;support for non-pro devices.&lt;/a&gt; I miss the days when companies encouraged upgrading by adding features, not by &lt;a href="http://www.engadgethd.com/2009/04/02/older-slingboxes-wont-work-with-slingplayer-for-iphone/"&gt;simply deprecating their previous product line&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dumb move on their part, but it's at least one less thing to waste money on.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-3718895353825909283?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/3718895353825909283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=3718895353825909283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3718895353825909283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3718895353825909283'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/04/slingplayer-for-iphone.html' title='Slingplayer for the iPhone'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-4507370942475216953</id><published>2009-04-01T22:11:00.003-05:00</published><updated>2009-04-01T22:37:55.614-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Using google talk as a logging mechanism</title><content type='html'>&lt;div style="text-align: left;"&gt;So there's been an interesting side effect of using Jabber (specifically, Google Talk) to act an interface to the home automation system- logging. Google Talk allow for messages to be sent to offline contacts; these messages are saved and stored in the normal "Chat" dialog in the GMail interface. Since the automation system sends state notification to Google Talk, all of the messages are automatically archived in my account.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 388px; height: 193px;" src="http://1.bp.blogspot.com/_wC5IWJgdgwA/SdQx_Y5VwtI/AAAAAAAAC8E/e4keSgIxPg8/s400/Gmail+-+Chat+with+Automation+-+rammic%40gmail.com.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5319932024915870418" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a nice little side effect. It provides a timestamp based on the browser's time zone and nearly ubiquitous access to the information. I also imagine that it'd be rather difficult to tamper with the timestamps. I now have a record of my garage door activity for the last several weeks (and indirect proof of my lack of a social life- I don't go out much apparently). My 9:30 Taco Bell run also will live in infamy. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-4507370942475216953?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/4507370942475216953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=4507370942475216953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4507370942475216953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4507370942475216953'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/04/using-google-talk-as-logging-mechanism.html' title='Using google talk as a logging mechanism'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wC5IWJgdgwA/SdQx_Y5VwtI/AAAAAAAAC8E/e4keSgIxPg8/s72-c/Gmail+-+Chat+with+Automation+-+rammic%40gmail.com.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-4784724869052326198</id><published>2009-03-03T08:19:00.003-05:00</published><updated>2009-03-03T08:24:25.793-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drools'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><title type='text'>House rules...</title><content type='html'>&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #008000"&gt;&lt;span style="color: #960000"&gt;rule&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;"Close Garage Door"&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #960000"&gt;&lt;span style="color: #000000"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;when&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;event : TimeEvent()&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;garageDoor : GarageDoor(doorOpen  == &lt;span style="color: #960000"&gt;true&lt;/span&gt;)&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;jabber : JabberAlarm()&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #960000"&gt;&lt;span style="color: #000000"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;then&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;garageDoor.closeDoor();&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #008000"&gt;&lt;span style="color: #000000"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;log.info(&lt;/span&gt;"Closed garage door by rule on "&lt;span style="color: #000000"&gt; + &lt;/span&gt;&lt;span style="color: #960000"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; Date());&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;jabber.sendNotification(&lt;span style="color: #008000"&gt;"Closed garage door by rule on "&lt;/span&gt; + &lt;span style="color: #960000"&gt;new&lt;/span&gt; Date());&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #960000"&gt;end&lt;span style="color: #000000"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;It keeps me from letting all the riffraff in when I leave the door open at night. Thanks &lt;a href="http://www.jboss.org/drools/"&gt;drools&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-4784724869052326198?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/4784724869052326198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=4784724869052326198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4784724869052326198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4784724869052326198'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/03/house-rules.html' title='House rules...'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-7734767296322390205</id><published>2009-03-03T08:13:00.003-05:00</published><updated>2009-03-03T08:18:10.684-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><title type='text'>A conversation with my house</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_wC5IWJgdgwA/Sa0tohZbLAI/AAAAAAAAC7M/SJ9KEZ3Ub0M/s1600-h/HouseConvo.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 323px; height: 400px;" src="http://1.bp.blogspot.com/_wC5IWJgdgwA/Sa0tohZbLAI/AAAAAAAAC7M/SJ9KEZ3Ub0M/s400/HouseConvo.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5308949709922708482" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;It even cleans up after me. :) In case it's not clear, I'm the penguin. I'm just speaking in javascript.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-7734767296322390205?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/7734767296322390205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=7734767296322390205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7734767296322390205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7734767296322390205'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/03/conversation-with-my-house.html' title='A conversation with my house'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wC5IWJgdgwA/Sa0tohZbLAI/AAAAAAAAC7M/SJ9KEZ3Ub0M/s72-c/HouseConvo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-7765159446053619971</id><published>2009-02-25T10:19:00.003-05:00</published><updated>2009-02-25T10:39:10.807-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reputation'/><title type='text'>eBay and Reputation</title><content type='html'>Stories like &lt;a href="http://consumerist.com/5159479/ebay-scammer-says-pc-destroyed-in-mail-takes-500-sends-back-destroyed-pc-minus-parts?skyline=true&amp;amp;s=x#viewcomments"&gt;this&lt;/a&gt; demonstrate how broken the eBay/Paypal system is. I've been trying to think of a practical solution to fully fix the business model to no avail. Escrow services seem to be the only way to be reasonably protected but that scales poorly, is costly, and is difficult for high-tech or esoteric transactions. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;eBay is one of the first and most successful examples of a reputation-based identity system, yet is still remarkably flawed. Is it because people are naive to the concept of reputation, greed/ignorance leading them to carry out deals with people with no/poor feedback, or reputations simply not being relevant to peer-to-peer commerce? Such systems will never fully defend against someone willing to throw away their identity to score a quick buck, but the anecdotal evidence is everywhere and eBay's reputation as a scammer's haven is becoming solidified. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The above story doesn't detail buyer's feedback, but it is definitely relevant. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-7765159446053619971?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/7765159446053619971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=7765159446053619971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7765159446053619971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7765159446053619971'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/02/ebay-and-reputation.html' title='eBay and Reputation'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-3180110775061629017</id><published>2009-02-18T06:46:00.003-05:00</published><updated>2009-02-18T07:03:36.008-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='facial detection'/><category scheme='http://www.blogger.com/atom/ns#' term='biometrics'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>Facial Recognition and Biometrics</title><content type='html'>&lt;a href="http://it.slashdot.org/article.pl?sid=09/02/17/216216"&gt;Slashdot&lt;/a&gt; points to an article describing the "cracking" of facial recognition software used as an alternative login for some laptops. It may be a liberal use of the term "cracking," but it's yet another reason why biometrics should be used sparingly (if at all) and as a single factor in a multi-factor authentication system. It's just too easy to capture and reproduce human qualities that most biometric readers will believe. Try revoking those credentials.&lt;br /&gt;&lt;br /&gt;Someone in the identity movement should contact Hollywood and tell them to knock off the sci-fi authentication schemes. I'm convinced that is where much of this biometric craze originates. Isn't painful to watch a show where biometrics provide the "strong" security (which actually offer trivial protection), and the next scene has a ciphertext or firewall being cracked in seconds? I'm talking to you, &lt;a href="http://www.fox.com/24/"&gt;24&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-3180110775061629017?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/3180110775061629017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=3180110775061629017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3180110775061629017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3180110775061629017'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/02/facial-recognition-and-biometrics.html' title='Facial Recognition and Biometrics'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-8493060271740715406</id><published>2009-02-15T11:44:00.005-05:00</published><updated>2009-02-15T12:37:57.915-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='facial detection'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Face Detection and iPhone Video Streaming</title><content type='html'>I recently purchased a Linksys WVC54GCA WiFi camera. It's a wonderful little camera, but my primary reason for purchasing it was to be able to stream video to my iPhone; it uses Motion JPEG which is the only video option available in Mobile Safari. It actually works very well, though my intention is to eventually attach it to my iRobot Create to give it "vision." More on that later.&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 443px;" src="http://www.wifilab.net/wifi/images/stories/linksys-wvc54gca.jpg" border="0" alt="" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, despite the camera's strengths, there are a few limitations. First, the camera can only support 4 simultaneous clients and the performance degrades linearly with each additional client (from my anecdotal experience). Second, the only access control the camera offers is HTTP Basic Authentication backed with a 4-user list configurable from its web interface that doesn't integrate well with any other application or security system. I figured that the best and most direct way of fixing the problems was to proxy the feed through my MacPro to manage the connection and user access there instead of on the camera.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 257px; height: 320px;" src="http://1.bp.blogspot.com/_wC5IWJgdgwA/SZhRDgHQUAI/AAAAAAAAC58/5hHE5t-zF9w/s320/FaceDetectionDiagram.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5303077681830580226" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As I was imagineering this system, I also got the bright idea to go ahead and do facial detection (not recognition -yet-) on the stream. After doing some research on the technology, I decided to use the &lt;a href="http://opencv.willowgarage.com/wiki/"&gt;OpenCV&lt;/a&gt; libraries developed by Intel and subsequently open sourced. My initial prototypes were extremely slow (1-2 FPS) since the Java libraries depended on JNI calls to a non-thread-safe C library. I did more research and found the &lt;a href="http://faint.sourceforge.net/"&gt;Faint&lt;/a&gt; (Face Annotation Interface) library which did Haar in pure, multithread-able Java. (I had to take the beta code from the SVN since it wasn't released yet.) That finally got me a much more acceptable 10+ FPS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_wC5IWJgdgwA/SZhP_x2udvI/AAAAAAAAC50/1aLaQdI9mTQ/s200/FaceDetection.jpeg" border="0" alt="" id="BLOGGER_PHOTO_ID_5303076518361986802" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I have the camera stream being cached within a custom-built Tomcat webapp that does the detection and also provides security for the stream. It can support much more than the 4 users available from the camera and without a FPS hit. It's pretty cool. Right now it just draws a red rectangle around the detected face, but obviously more triggers and actions are possible and desirable. It should definitely be noted that the stream (with facial detection) is viewable from the iPhone! Now- to just get the damned thing attached to my iRobot and my little mobile sentry will be complete. :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-8493060271740715406?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/8493060271740715406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=8493060271740715406' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8493060271740715406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8493060271740715406'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/02/face-detection-and-iphone-video.html' title='Face Detection and iPhone Video Streaming'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wC5IWJgdgwA/SZhRDgHQUAI/AAAAAAAAC58/5hHE5t-zF9w/s72-c/FaceDetectionDiagram.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-4943738700764886483</id><published>2009-02-06T14:28:00.003-05:00</published><updated>2009-02-06T14:32:52.873-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><category scheme='http://www.blogger.com/atom/ns#' term='gripe'/><title type='text'>dscacheutil -flushcache</title><content type='html'>I've been needing to flush the DNS cache on my Mac a lot lately. (Possibly due to VPN hackery) Anyway, the nice little utility for OSX to flush the DNS cache (dscacheutil) is okay, but I'm pretty sure that it also flushes out any Safari cookies/sessions too. Isn't there a less destructive command for clearing the DNS cache?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-4943738700764886483?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/4943738700764886483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=4943738700764886483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4943738700764886483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4943738700764886483'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/02/dscacheutil-flushcache.html' title='dscacheutil -flushcache'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-2815364724713220411</id><published>2009-02-02T07:30:00.002-05:00</published><updated>2009-02-15T13:00:58.876-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='passwords'/><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>The weakest link</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imgs.xkcd.com/comics/security.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 220px;" src="http://imgs.xkcd.com/comics/security.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Sad but true. Probably could be have had countless other punchlines, like "let's have a hot-sounding girl call him up and ask him" or any other socially-engineered password harvesting technique.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-2815364724713220411?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/2815364724713220411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=2815364724713220411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2815364724713220411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2815364724713220411'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/02/sad-but-true.html' title='The weakest link'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-1590363001464363929</id><published>2009-02-01T12:14:00.002-05:00</published><updated>2009-02-01T12:22:46.251-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='curiosity'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Zoombak Dissection</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;I've had a lot of fun with the Zoombak GPS device. Ever wonder what's inside one of those little guys? I did, but couldn't find any images on the internet to satisfy my curiosity. So I dissected mine.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_wC5IWJgdgwA/SYXaB-_f5tI/AAAAAAAAC4k/zetEXGsV8Vw/s320/P1000144.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5297880264295311058" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It uses a 3.7V 890mAh battery, a Siemens 133851-V02 cellular chipset, and a Cirocomm 574B GPS module. As suspected, you can clearly see the holder for the T-Mobile SIM card (which I've already removed).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-1590363001464363929?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/1590363001464363929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=1590363001464363929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/1590363001464363929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/1590363001464363929'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/02/zoombak-dissection.html' title='Zoombak Dissection'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wC5IWJgdgwA/SYXaB-_f5tI/AAAAAAAAC4k/zetEXGsV8Vw/s72-c/P1000144.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-9033762933410128674</id><published>2009-01-31T10:51:00.002-05:00</published><updated>2009-01-31T10:54:30.107-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='passwords'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>Weak vs. Strong Password (On a sticky)</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 14px; line-height: 21px; "&gt;&lt;blockquote&gt;"Be sure to write down the insane password it generates for you (below), as a weak password would be far worse than a strong password jotted down on a sticky note next to your PC."&lt;/blockquote&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 14px; line-height: 21px;"&gt;Is this the logic we use now when it comes to password management?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 14px; line-height: 21px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 14px; line-height: 21px;"&gt;from : &lt;a href="http://www.appleinsider.com/articles/09/01/30/installing_windows_7_beta_on_a_mac_with_sun_virtualbox.html"&gt;AppleInsider&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 14px; line-height: 21px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-9033762933410128674?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/9033762933410128674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=9033762933410128674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/9033762933410128674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/9033762933410128674'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/01/weak-vs-strong-password-on-sticky.html' title='Weak vs. Strong Password (On a sticky)'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-2798658129040474893</id><published>2009-01-29T08:33:00.003-05:00</published><updated>2009-01-29T08:43:52.221-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='infocard'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Infocard Transaction (Becoming?) Possible on iPhone</title><content type='html'>I think this is a big step forward for identity federation on the iPhone, mainly because it's the merging of two subjects I find rather interesting. I'm not a big Objective-C developer, but reading MobileOrchard's &lt;a href="http://www.mobileorchard.com/apple-approved-iphone-inter-process-communication/"&gt;post&lt;/a&gt; on protocol handlers within the iPhone SDK gave my brain a kick-start this morning. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Imagine this: As described in previous posts, you encounter a page with an infocard:// link as the login button. That kicks off an iPhone InfoCard selector application, which retrieves the WS-Mex data from the RP page and then interacts with the chosen IDP using WS-Trust to retrieve a token. The retrieved token would ideally then be POSTed to the RP within Safari, but apparently Safari won't deliver app-formed POST data yet. So the last piece of the puzzle would be to either URL-encode the token (yuck), or do some kind of artifact retrieval (equally bad if not worse). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-2798658129040474893?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/2798658129040474893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=2798658129040474893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2798658129040474893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2798658129040474893'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/01/infocard-transaction-becoming-possible.html' title='Infocard Transaction (Becoming?) Possible on iPhone'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-502609352981368309</id><published>2009-01-26T06:48:00.001-05:00</published><updated>2009-01-26T09:04:06.940-05:00</updated><title type='text'>Monster.com Security Breach</title><content type='html'>Absolutely disgusting. A company's (lack of) security allows a data breach, and they cavalierly dismiss it as a price of doing business.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;As is the case with many companies that maintain large databases of information, Monster is the target of illegal attempts to access and extract information from its database.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;Which should have actually said: "As is the case with many companies that maintain large databases of information, we failed to take the proper precautions to secure your information against unauthorized access and theft." It's even worse they they don't intend to email users about the breach. The solution they provided offers little comfort.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;It is important to know the company continually monitors for any illicit use of information in our database, and so far, we have not detected the misuse of this information.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If the information has been accessed (and probably copied), how do they intend to detect/prevent the misuse of information? Maybe they should enter the DRM space if they've got the solution. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;(from: http://help.monster.com/besafe/jobseeker/index.asp)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-502609352981368309?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/502609352981368309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=502609352981368309' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/502609352981368309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/502609352981368309'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2009/01/monstercom-security-breach.html' title='Monster.com Security Breach'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-4225160762277935603</id><published>2008-12-18T14:17:00.004-05:00</published><updated>2008-12-18T14:28:58.905-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='damntheman'/><category scheme='http://www.blogger.com/atom/ns#' term='hacking'/><title type='text'>PPTP Tunnel and /sbin/route</title><content type='html'>My SSH tunnel was acting flaky, so I decided to use the PPTP server feature on my DD-WRT router. It was extremely straightforward, though sending all traffic through the tunnel was a non-starter. To fix it, I had to route my "naughty" sites through the VPN and around the corporate network. My router at home is configured to use &lt;span class="Apple-style-span"  style="font-family:arial;"&gt;192.168.1.0/24&lt;/span&gt;. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;#!/bin/sh&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net login.oscar.aol.com $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net talk.google.com $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net imap.gmail.com $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net smtp.gmail.com $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net facebook.com $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net ebay.com $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net me.com $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net mail.mac.com $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net gmail-imap.l.google.com $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net gmail-smtp.l.google.com $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net 205.188.0.0/16 $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/sbin/route -n add -net 64.12.0.0/16 $IPREMOTE &gt;&gt; /tmp/ppp.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This belongs in the &lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/etc/ppp/ip-up&lt;/span&gt; config file which should be set as executable. The script is run upon successful connection to the VPN. The last two entries are required to route AIM traffic through the tunnel. The background of this config can be found here: &lt;a href="http://www.easyzonecorp.net/network/view.php?ID=572"&gt;http://www.easyzonecorp.net/network/view.php?ID=572&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-4225160762277935603?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/4225160762277935603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=4225160762277935603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4225160762277935603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4225160762277935603'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2008/12/pptp-tunnel-and-sbinroute.html' title='PPTP Tunnel and /sbin/route'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-323074003953249898</id><published>2008-10-20T08:57:00.003-05:00</published><updated>2008-10-21T07:53:29.019-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Apple transcends standards!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_wC5IWJgdgwA/SPyOcJyivhI/AAAAAAAAC2w/Y68cAf9E3Zk/s1600-h/standards.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_wC5IWJgdgwA/SPyOcJyivhI/AAAAAAAAC2w/Y68cAf9E3Zk/s200/standards.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5259235079177289234" /&gt;&lt;/a&gt;Wow. If only it were that easy. "My software is completely standards compliant. No- not with accepted standards, but standards that &lt;span class="Apple-style-span" style="font-style: italic;"&gt;don't even exist yet&lt;/span&gt;!" Marketing just killed interoperability.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-323074003953249898?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/323074003953249898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=323074003953249898' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/323074003953249898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/323074003953249898'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2008/10/wow.html' title='Apple transcends standards!'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wC5IWJgdgwA/SPyOcJyivhI/AAAAAAAAC2w/Y68cAf9E3Zk/s72-c/standards.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-8377743615948956930</id><published>2008-06-13T05:46:00.000-05:00</published><updated>2008-06-13T08:49:07.259-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='why?'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>iPhone Sprinkler Control?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_wC5IWJgdgwA/SFJ6XNxDG9I/AAAAAAAACiM/fmz0EHeLxXg/s1600-h/SprinklerControl.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_wC5IWJgdgwA/SFJ6XNxDG9I/AAAAAAAACiM/fmz0EHeLxXg/s200/SprinklerControl.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5211362258072050642" /&gt;&lt;/a&gt;&lt;br /&gt;Why?! The pandemonium!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yeah, it needs to be polished a bit, but it works!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-8377743615948956930?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/8377743615948956930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=8377743615948956930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8377743615948956930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8377743615948956930'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2008/06/iphone-sprinkler-control.html' title='iPhone Sprinkler Control?'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_wC5IWJgdgwA/SFJ6XNxDG9I/AAAAAAAACiM/fmz0EHeLxXg/s72-c/SprinklerControl.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-3843775070479169162</id><published>2008-06-10T22:54:00.009-05:00</published><updated>2008-06-12T08:22:35.744-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAML'/><category scheme='http://www.blogger.com/atom/ns#' term='bookmarklet'/><category scheme='http://www.blogger.com/atom/ns#' term='wayf'/><category scheme='http://www.blogger.com/atom/ns#' term='infocard'/><category scheme='http://www.blogger.com/atom/ns#' term='federation'/><title type='text'>Solving WAYF via Bookmarklets</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The power of bookmarklets is still to be seen in many situations. Consider the "Where Are You From?" (WAYF) problem, a common issue with federation technologies. The simple question of where to send the user to complete a federated authentication is one of the more complicated and error prone issues in identity federation. The key metrics for any WAYF solution are that the user should have the opportunity to choose any relevant identity context and the process should be hard for a RP to subvert. &lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;-SAML 1 tokens can be retrieved from an IDP with a specially formed HTTP GET request and a TARGET parameter pointing back to the RP site, though a pre-existing relationship must exist in order to allow this to work since most of the request (attributes, authN) is implicit and expressed in the SAML metadata. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;-SAML2 tokens can be retrieved from an IDP with a HTTP POST request which articulates the request parameters (attributes, authN), but still requires the RP to be explicitly aware of supported IDP(s). While there are some tricks in the specification regarding the use of domain cookies, the approach is not very dynamic and is still prone to spoofing and other problems.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;-InfoCard solves the problem through the user's selection of a card. The card is indicative of the location of the target identity provider. This is the best approach thus far, though it lacks ubiquity at the moment.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;-OpenID addresses the problem by the user being prompted to input their OpenID url. This is the most straightforward approach, as the user is compelled to identify the IDP explicitly (or at least a pointer). Aside from a steeper learning curve, this approach suffers from spoofability assuming a malicious RP (as does SAML).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;While all address the problem with varying levels of success, I believe that the bookmarklet approach maintains the benefits of wide interoperability while reducing spoofability of the IDP's interface. The provisioning process would work like so:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The user logs into the IDP for the first time.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The IDP validates user's credentials, offers bookmarklet which can be stored in the user's browser. The bookmarklet has sufficient logic to parse the protocol specific parameters from the RP site required to issue a token.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The user accesses an RP site and navigates to the login page. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The user clicks the IDP's bookmarklet. The bookmarklet's Javascript parses the RP's information and redirects the browser to the IDP's site with the RP's parameters encoded into the URL.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;This approach works with all modern browsers. (except IE7, though IE8 works!) It preserves the user centricity of the interaction because the user has to choose an identity bookmarklet to log in, and it reduces spoofability since we are not depending on the RP to preform the redirection. This profile is sufficiently abstract enough that it could be used to improve existing SAML enterprises and could easily be integrated to OpenID.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The bookmarklet code itself is extremely simple. If we use Infocard as our example, we can easily search for the embedded object type of "applicationx/infocard," gather the required/optional claims, and redirect the user's browser to the IDP's site. Assuming the browser supports the "infocard://" protocol:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-style-span" style="color: rgb(142, 0, 255); "&gt;&lt;span style="color:#7f0055;"&gt;var &lt;/span&gt;&lt;span style="color:#000000;"&gt;idp=&lt;/span&gt;"infocard://"&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span style="color:#7f0055;"&gt;var &lt;/span&gt;objects = document.getElementsByTagName(&lt;span style="color:#8e00ff;"&gt;"object"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span style="color:#7f0055;"&gt;var &lt;/span&gt;infocardObject;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span style="color:#7f0055;"&gt;for&lt;/span&gt;(&lt;span style="color:#7f0055;"&gt;var &lt;/span&gt;i = 0; i &amp;lt; objects.length &amp;amp;&amp;amp; infocardObject == null; i++){&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color:#8e00ff;"&gt;&lt;span style="color:#7f0055;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;(objects[i].type == &lt;/span&gt;"application/x-informationCard"&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;infocardObject = objects[i];&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span style="color:#7f0055;"&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span style="color:#7f0055;"&gt;if&lt;/span&gt;(infocardObject == &lt;span style="color:#7f0055;"&gt;null&lt;/span&gt;)&lt;span style="color:#7f0055;"&gt;{&lt;span class="Apple-style-span" style="color: rgb(142, 0, 255); "&gt;&lt;span style="color:#7f0055;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span style="color:#7f0055;"&gt;&lt;span class="Apple-style-span" style="color: rgb(142, 0, 255); "&gt;&lt;span style="color:#7f0055;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;alert(&lt;/span&gt;"It appears there is no InfoCard login on this page."&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color:#7f0055;"&gt;}else{&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span style="color:#7f0055;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;var &lt;/span&gt;parentElement = infocardObject;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;span style="color:#7f0055;"&gt;while&lt;/span&gt;(parentElement != &lt;span style="color:#7f0055;"&gt;null &lt;/span&gt;&amp;amp;&amp;amp; !parentElement.action)&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;parentElement = parentElement.parentNode;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;span style="color:#7f0055;"&gt;var &lt;/span&gt;target = parentElement == &lt;span style="color:#7f0055;"&gt;null &lt;/span&gt;? window.location.pathname: parentElement.action;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;span style="color:#7f0055;"&gt;var &lt;/span&gt;requiredClaims=(document.getElementsByName(&lt;span style="color:#8e00ff;"&gt;"requiredClaims"&lt;/span&gt;)[0].value).replace(/\s+/g,&lt;span style="color:#8e00ff;"&gt;'%20'&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;document.location.href=idp+&lt;span style="color:#8e00ff;"&gt;"requiredClaims="&lt;/span&gt;+requiredClaims+&lt;span style="color:#8e00ff;"&gt;"&amp;amp;paramName="&lt;/span&gt;+infocardObject.name+&lt;span style="color:#8e00ff;"&gt;"&amp;amp;respondToUrl="&lt;/span&gt;+target;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span style="color:#7f0055;"&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p color="#7f0055" style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color:#7f0055;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);   "&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;If the browser isn't cooperative, then we can replace the idp variable with the hard-coded URL for the IDP, though the user is then forced to have multiple bookmarklets. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #7f0055"&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-3843775070479169162?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/3843775070479169162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=3843775070479169162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3843775070479169162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3843775070479169162'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2008/06/solving-wayf-via-bookmarklets.html' title='Solving WAYF via Bookmarklets'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-8010641791417498198</id><published>2008-06-04T15:12:00.001-05:00</published><updated>2008-06-04T15:14:53.165-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Apple Java Bug Report</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: 11px; white-space: pre-wrap; "&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Problem ID: &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(18, 18, 18); font-weight: bold; white-space: normal; "&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;5903500&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;* SUMMARY&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Java Web Start applications are not receiving file arguments for their associated file types. When an JWS application is installed to the desktop with mime-type and extension associations, the JWS Client correctly invokes the application when attempting to open a related file; it fails, however, to include the file path as a parameter to the JWS application.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; * STEPS TO REPRODUCE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;1. Install a JWS application to the desktop with a file association in the JNLP file (ex. .xyz).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;association type="application/xyzApplication" extensions="xyz"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2. Double-click a .xyz file in Finder. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;* RESULTS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Application launches without any command-line parameters. Expect the subject file to be included as application main() arguments "-open /path/to/file". &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: 11px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-8010641791417498198?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/8010641791417498198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=8010641791417498198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8010641791417498198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8010641791417498198'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2008/06/apple-java-bug-report.html' title='Apple Java Bug Report'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-5957516990865863500</id><published>2008-05-31T18:36:00.003-05:00</published><updated>2008-05-31T18:39:44.902-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web-based'/><category scheme='http://www.blogger.com/atom/ns#' term='card selector'/><title type='text'>Web-Based Lightweight Card Selector [note]</title><content type='html'>I should note that the web-based card selector can work with existing IDP's (since we're doing WS-Trust, after all) and with current RP's with Infocard web form/object login with a specially created bookmarklet. This approach opens the door to even current browsers which do not support HTML5. But more on this later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-5957516990865863500?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/5957516990865863500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=5957516990865863500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5957516990865863500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5957516990865863500'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2008/05/web-based-lightweight-card-selector_31.html' title='Web-Based Lightweight Card Selector [note]'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-4329220791308555822</id><published>2008-05-31T17:08:00.008-05:00</published><updated>2008-05-31T18:26:17.974-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lightweight'/><category scheme='http://www.blogger.com/atom/ns#' term='web-based'/><category scheme='http://www.blogger.com/atom/ns#' term='cardspace client'/><category scheme='http://www.blogger.com/atom/ns#' term='infocard'/><category scheme='http://www.blogger.com/atom/ns#' term='card selector'/><title type='text'>Web-Based Lightweight Card Selector</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_wC5IWJgdgwA/SEHYyz5xRaI/AAAAAAAAChY/1NDyJBobkJw/s1600-h/WebCardUse.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_wC5IWJgdgwA/SEHYyz5xRaI/AAAAAAAAChY/1NDyJBobkJw/s200/WebCardUse.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5206681011654575522" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_wC5IWJgdgwA/SEHYzD5xRbI/AAAAAAAAChg/OYemplq-kQk/s1600-h/WebCardProvisioning.jpg"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Something we've been working on is the ability to create a web-based card selector which will work in situations where a full card selector is not available or appropriate. Since selectors are not yet ubiquitous and inappropriate in many tactical situations, we are working on using a HTML5 based approach to enable an Infocard/CardSpace-based enterprise to work with standard web browsers.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; The major changes in HTML5 which allow for this to occur are offline caching (HTML Manifest),  the navigator.registerProtocolHandler action, and the DOM/Session storage capabilities. For more information, see &lt;/span&gt;&lt;/span&gt;&lt;a href="http://starkravingfinkle.org/blog/2008/05/firefox-3-offline-app-demo-part-2/"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Mark Finkle&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;'s excellent blog on Firefox 3's offline features and the&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.whatwg.org/specs/web-apps/current-work/"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; WHATWG HTML5 Draft Specification&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; for the rest. With these capabilities to be included in future web browsers, we can now assume that the client browser:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Can cache URL resources and seamlessly serve them when connectivity to the IDP cannot be established&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Can route particular protocol requests from arbitrary RP's to a registered IDP web app&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Can (persistently) store a user's preferences and settings locally, where information regarding trust and disclosures can be held.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;With these capabilities, one can begin to see how a web app could operate as a client card selector:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The user accesses an IDP provisioning site, where the card selector resources (HTML, Javascripts, etc) can be retrieved for later use and registered to handle a target protocol such as "infocard://" (perhaps even "openid://"?). At this point, all required Card metadata would be retrieved and stored.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;After provisioning occurs, the user access an RP with a login link which specifies the target protocol and any parameters needed for login, e.g. infocard://respondToUrl=[rpurl]&amp;amp;requiredClaims=[claims]&amp;amp;optionalClaims=[claims]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The browser prompts the user to select a registered webapp to handle the invocation, which roughly parallels card selection. Upon selection of the IDP offline app registered in step 1, the browser redirects the user to the cached application. (Note that per the WHATWG draft specification, no information necessarily goes back to the IDP at this point)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The cached web app parses the URL encoded information provided in step two and previews the requested claims to the user. This is analogous to the pre-retrieval step of the Infocard ceremony. The user may select/deselect optional attributes or cancel the transaction at this point.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;If the user chooses to continue, the cached Javascript preforms a AJAX WS-Trust RST to the IDP's endpoint specified during provisioning.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The IDP responds with an RSTR which the cached Javascript parses, displaying the display token to the user (for verification) and the security token into an embedded form with the RP's respondToUrl as the action.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;After review, the user chooses to submit the token, which is posted to the RP site in the same fashion as current card selectors (HTTP POST with a xmlToken value).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;This approach seemingly solves the problem of a lack of card selectors and lightweight clients assuming that all major browser implement HTML5 (which appears to be the case). The above approach actually works as demonstrated by our proof of concept which uses only Firefox 3 or any browser with Google Gears. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The registerProtocolHandler (and possibly even the MIME handler) seem to have a number of possibilities within the federated identity communities. As demonstrated above with the Infocard scenario, this can address the vexing "Where are you from?" problem which plagues web-based federated identity solutions including OpenID. Omitting the RP from the redirection phase via the web app selector and a carefully crafted offline web app should do wonders to reduce spoofability and increase usability.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;While this is a big step to lightweight identity selectors, it does lack a number of the nice features available in a full card selector:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Cannot provide "clues" regarding the applicability of registered web apps (such as disabling cards/webapps which are inappropriate for the required claims)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Cannot easily integrate with the OS for things such as public/private key creation, thus this is clearly aimed toward managed card with browser-friendly authentication.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Encryption in Javascript is hard. XMLEnc with the RP's certificate isn't possible with this approach, so we have to depend upon Audit mode or unencrypted tokens over HTTPS.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Below is a simple web-based card selector provisioning data flow, though I forgot to put in the card metadata exchange in step 4. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;img src="http://lh3.ggpht.com/rammic/SEHYzD5xRbI/AAAAAAAAChg/J00rNPTWfhA/WebCardProvisioning.jpg" width="400px" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The offline cache is much more useful than just for the protection of the user privacy; once offline tokens within Infocard become possible, this approach should still be very viable. I have a screencast of our demo and I'll update this post when I get around to uploading it to YouTube. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-4329220791308555822?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/4329220791308555822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=4329220791308555822' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4329220791308555822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4329220791308555822'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2008/05/web-based-lightweight-card-selector.html' title='Web-Based Lightweight Card Selector'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_wC5IWJgdgwA/SEHYyz5xRaI/AAAAAAAAChY/1NDyJBobkJw/s72-c/WebCardUse.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-5987879385085014787</id><published>2008-05-29T18:50:00.004-05:00</published><updated>2008-09-03T17:44:16.267-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><title type='text'>IPhone Garage Door Opener</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_wC5IWJgdgwA/SEBMxj5xRXI/AAAAAAAACgc/5mEoOJKTBhw/s1600-h/IphoneDoorOpener.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_wC5IWJgdgwA/SEBMxj5xRXI/AAAAAAAACgc/5mEoOJKTBhw/s320/IphoneDoorOpener.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5206245583575139698" /&gt;&lt;/a&gt;In a past life I wrote automation controllers for large facilities. Now, I'm obsessed with needlessly automating my house (since it's my first). Thus, I present to you, my latest in ridiculously over-engineered automations:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;The iPhone Garage Door Opener&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Why? Cause it's cool to be able to press a button on my phone and have my garage door open. That, and, I have a horrible habit of leaving my garage door open all night for anyone to access, and now I can create a script to remotely close the door at a given time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The stuff I bought consists of an NPort 16 port serial server (5610, if I remember) and an National Control Devices&lt;a href="http://www.controlanything.com/Merchant2/merchant.mvc?Screen=PROD&amp;amp;Product_Code=ADR45ProXR&amp;amp;Category_Code=CAT_RELAY4_RS232"&gt; ProXR&lt;/a&gt; 4 Relay, 8 Input serial controller. To sense state, I included a &lt;a href="http://www.smarthome.com/7455.html"&gt;garage door contact sensor&lt;/a&gt; with input into the ProXR. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On my MacPro, I have Tomcat running with a servlet which responds to the AJAX calls from my little iPhone-customized JSP page. The UI updates every 5 seconds, updating the door state and the current temperature in the garage (since a temperature sensor comes on the ProXR). So now I can use my iPhone to control my garage (which is almost useful)! &lt;/div&gt;&lt;div&gt;&lt;img src="http://lh6.ggpht.com/rammic/SEBQmD5xRYI/AAAAAAAACgk/n_pOTwKlGTM/dooropen.png" /&gt; &lt;img src="http://lh3.ggpht.com/rammic/SEBQ2T5xRZI/AAAAAAAACgs/htYWCXMjrfA/doorclosed.png" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-5987879385085014787?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/5987879385085014787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=5987879385085014787' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5987879385085014787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5987879385085014787'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2008/05/iphone-garage-door-opener.html' title='IPhone Garage Door Opener'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_wC5IWJgdgwA/SEBMxj5xRXI/AAAAAAAACgc/5mEoOJKTBhw/s72-c/IphoneDoorOpener.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-795585656555731579</id><published>2007-11-21T15:35:00.000-05:00</published><updated>2007-11-21T15:36:23.463-05:00</updated><title type='text'>OMG INTERNET VOTE</title><content type='html'>13949712720901ForOSX&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There. I did it. Now please make it happen, Apple.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-795585656555731579?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/795585656555731579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=795585656555731579' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/795585656555731579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/795585656555731579'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/11/omg-internet-vote.html' title='OMG INTERNET VOTE'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-7940353598338293064</id><published>2007-11-21T15:14:00.000-05:00</published><updated>2007-11-21T15:23:28.797-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAML2'/><category scheme='http://www.blogger.com/atom/ns#' term='Claims'/><title type='text'>Lots of progress, little updating</title><content type='html'>A lot has happened since the last time I've posted:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;I've got SAML 1.1 working with LifeRay Portal. This was for a demo, but the code could be used in production (IMO). It works in the same way that the existing CAS filter works, except that there's a lot more code responsible for validating SAML.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Been poking around with the OpenSSO Federation Libraries. I'm trying to find a SAML 2 implementation that I can use (quickly), and the OpenFedLib libraries seem a bit more intuitive than the upcoming OpenSAML2 implementation. (Probably because I haven't taken the time to figure out their XMLTooling) I've got SAML2 tokens shoved into the InfoCard IDP, too bad there are exactly 0 RPs that'll support it. :)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I'm really excited about the Claims-based architecture stuff that Kim's been talking about. We're been looking at such an approach for assertion translation/normalization. More on this later.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-7940353598338293064?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/7940353598338293064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=7940353598338293064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7940353598338293064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7940353598338293064'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/11/lots-of-progress-little-updating.html' title='Lots of progress, little updating'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-5844505563810869489</id><published>2007-08-20T23:02:00.000-05:00</published><updated>2007-08-20T23:23:36.330-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='government'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><title type='text'>Why can't the DoD learn from others' mistakes?</title><content type='html'>&lt;a href="http://www.military-information-technology.com/article.cfm?DocID=2025"&gt;Joint Enterprise Directory Service (JEDS)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Although there has been &lt;a href="http://www.theregister.com/2004/12/30/ms_ends_pass/"&gt;failure&lt;/a&gt; after &lt;a href="http://www.webservicessummit.com/News/UDDI2006.htm"&gt;failure&lt;/a&gt; when attempting global aggregation of information (for countless reasons), why is it that we're spending more money going down this dead-end trail? Has the case for federation not been made yet? The litany of technical and security concerns which go painfully unanswered is saddening.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-5844505563810869489?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/5844505563810869489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=5844505563810869489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5844505563810869489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5844505563810869489'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/08/why-cant-dod-learn-from-others-mistakes.html' title='Why can&apos;t the DoD learn from others&apos; mistakes?'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-7178705509316245478</id><published>2007-06-19T21:46:00.000-05:00</published><updated>2007-06-19T23:19:05.697-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hspd-12'/><category scheme='http://www.blogger.com/atom/ns#' term='privacy'/><title type='text'>HSPD-12 and Privacy</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;Stefan offers &lt;a href="http://www.idcorner.org/?p=154"&gt;some interesting points&lt;/a&gt; regarding the debated &lt;span style="font-style: italic;"&gt;anonymous credentials&lt;/span&gt;, a term which &lt;a href="http://www.identityblog.com/?p=809"&gt;Kim as sworn off&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Whenever you read about “anonymous credentials”, you should really think of these as &lt;em&gt;minimal disclosure certificates&lt;/em&gt;. “Minimal disclosure” implies &lt;strong&gt;three&lt;/strong&gt; privacy properties: (1) minimization of traceability, (2) minimization of linkability, and (3) selective disclosure: &lt;ul&gt;&lt;li&gt;&lt;em&gt;Minimization of traceability&lt;/em&gt; means that there is &lt;strong&gt;nothing&lt;/strong&gt; in a certificate &lt;em&gt;beyond any disclosed attribute data it may contain&lt;/em&gt; that can be used to link its presentation to its issuance.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Minimization of linkabilility&lt;/em&gt; means that there is &lt;strong&gt;nothing&lt;/strong&gt; in a certificate &lt;em&gt;beyond any disclosed attribute data it may contain&lt;/em&gt; that can be used to link its presentation to the presentation of &lt;em&gt;other&lt;/em&gt; certificates of the &lt;em&gt;same&lt;/em&gt; user.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Selective disclosure&lt;/em&gt; means that the user of a certificate, when &lt;em&gt;presenting&lt;/em&gt; the certificate, can (unconditionally) &lt;em&gt;hide attribute data contained in the certificate&lt;/em&gt; that does not need to be revealed. More generally, &lt;em&gt;properties&lt;/em&gt; of encoded attribute values can be disclosed while any other information remains hidden.&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;      These properties hold in the face of &lt;em&gt;collusions between relying parties and identity providers&lt;/em&gt;. What’s more, they hold unconditionally, even if relying parties and identity providers &lt;em&gt;actively&lt;/em&gt; collude from the outset and try to build in “cryptographic backdoors” in the algorithms used to digitally sign identity claims.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;    &lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;This has interesting implications with HSPD-12, the requirement for all Government activities to use strong authentication for networked systems. This has been implemented by issuing smart cards with an embedded PKI certificate to government employees (and contractors) and requiring the use mutual SSL pretty much everywhere. So rationale behind the client PKI certificates aside, we can say that linkability and traceability are foregone conclusions in these environments. There is, however, a battle to be had regarding discretionary user information release.&lt;br /&gt;&lt;br /&gt;Identity federation in such situations are less of an issue of federated authentication, but more focused upon the federation of attributes to enable authZ decisions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-7178705509316245478?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/7178705509316245478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=7178705509316245478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7178705509316245478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7178705509316245478'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/06/hspd-12-and-privacy.html' title='HSPD-12 and Privacy'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-1648162822538821316</id><published>2007-06-19T19:04:00.000-05:00</published><updated>2007-06-19T19:15:00.370-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spec compliance'/><category scheme='http://www.blogger.com/atom/ns#' term='infocard'/><title type='text'>Cardspace Quirks</title><content type='html'>I'm glad to see that I'm not the only one out there battling various Cardspace &lt;a href="http://eternaloptimist.wordpress.com/2007/06/14/fun-with-xhtml-selector-triggers/trackback/"&gt;bugs and quirks&lt;/a&gt;. I'm shocked that I hadn't see her blog earlier.&lt;br /&gt;&lt;br /&gt;As the shepherd of the Pamelaware module, maybe she can focus a bit of effort in quashing the &lt;a href="http://rammic.blogspot.com/2007/06/interop-opensaml-and-php-infocard.html"&gt;bugs in that code&lt;/a&gt; which were inherited from Kim's implementation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-1648162822538821316?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/1648162822538821316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=1648162822538821316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/1648162822538821316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/1648162822538821316'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/06/cardspace-quirks.html' title='Cardspace Quirks'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-8113096622364869243</id><published>2007-06-19T14:56:00.000-05:00</published><updated>2007-06-19T22:52:45.984-05:00</updated><title type='text'>Privacy and Need-to-know</title><content type='html'>It's rather frustrating to see &lt;a href="http://vquill.com/2007/06/kim-and-naughty-girl.html"&gt;how many people&lt;/a&gt; dismiss the concept of discretionary information release as an issue which only the tin-foil-hat and "naughty" communities are concerned. Perhaps I have too narrow a view since I tend to look at things from an enterprise/government point of view, but we're not just dealing with the commercial space, are we?&lt;br /&gt;&lt;br /&gt;I spend a great deal of my day (everyday) trying to explain the need for such concepts within the DoD. An intrinsically hierarchical group where every agency assumes they may have carte blanche access to peer and subordinate agencies, there is little true federation. To share data, it normally requires one organization or another to surrender control over their information, leading to power struggles of epic proportions.&lt;br /&gt;&lt;br /&gt;When you finally get them to sit down at the table, the concept of cooperative data exchange (rather than the forced or ransacked types) are usually foreign concepts. If not, they are typically jaded because of similar over-promises in the past which ultimately led to the above situation. Eyes cut at one another suspiciously. When they finally acquiesce (due to political or financial pressure) they instinctively demand to release as little data as possible. A desire to know and retain oversight over the data is being "surrendered" about their users when they use external resources, and to have a clear audit/accountability trail for external users who access their resource is quite common.&lt;br /&gt;&lt;br /&gt;Note that exact same things are usually demanded when most people talk about &lt;a href="http://www.identityblog.com/?p=806"&gt;privacy&lt;/a&gt;, except the here we call it "need-to-know". Need-to-know used to simply apply to release of well-defined and labeled information; within the enterprise, however, this concept has reached a new level. All information is regarded as sensitive until deemed otherwise. Sometimes it's because they have legitimate security concerns, other times it just because of stubbornness.&lt;br /&gt;&lt;br /&gt;So the issue that the Government (with a capital "G" this time) is often cited for shortfalls, cross-organization information sharing, is unfortunately tied to this problem in my opinion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-8113096622364869243?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/8113096622364869243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=8113096622364869243' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8113096622364869243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/8113096622364869243'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/06/privacy-and-need-to-know.html' title='Privacy and Need-to-know'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-3149161189179726121</id><published>2007-06-17T21:03:00.000-05:00</published><updated>2007-06-17T21:40:28.275-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><category scheme='http://www.blogger.com/atom/ns#' term='privacy'/><title type='text'>Firstrade Privacy Shenanigans</title><content type='html'>I've been with Firstrade for some time now, allowing me to invest what little extra money I occasionally find. When initially establishing the account, I faxed my life away to them (voided check, form filled with personal information, etc). I've expressed my frustration with the number of paper documents they use, littered with personal information, so I was happy when they offered an online version of the information. My shredder finally got a reprieve.&lt;br /&gt;&lt;br /&gt;Recently, however, I changed the institution with which I bank and attempted to notify Firstrade of the same. As directed on their website, I sent the updated forms via fax to them. A day later I received a notice via email stating that I needed to take the forms, a voided check, and two forms of ID and &lt;span style="font-style: italic;"&gt;mail&lt;/span&gt; the information to them. Having lost a passport in the mail recently, I was not happy with the idea of putting every piece of personal and financial information into one envelope handled by the USPS.&lt;br /&gt;&lt;br /&gt;So I inquired as to the rationale behind this demand. After all, my experience with a passport would support an argument that fax is more secure than postal mail. If their concern was regarding the reputability of facsimile documents, I believe that there is ample legal precedent to prove that such requirements are unnecessary. This was the response:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;Thank you for emailing Firstrade. Please note that currently Firstrade requires that amended ACH setup requires you to send in the actual form with the voided check. This is a risk management issue that we are working out with ADP Clearing. We apologize for any inconvenience. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Risk management". Why did that sound familiar? I deal quite a bit with management throwing the term around, so I know how it can be abused. Does the term actual have any valuable meaning in the above statement? It did not to me. It appeared as if they wanted to throw in a obtuse term which will intimidate the average customer to simply accept the assertion. I'm a bit more stubborn than that, unfortunately.&lt;br /&gt;&lt;br /&gt;The only conclusion I could draw was that, due to some dispute between them and ADP, they are placing the burden of the "risk" upon the customer. I wasn't too happy with that:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-family: arial;"&gt;I don't believe I fully understand:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-family: arial;"&gt;To cover your "risk-management" concerns, you're putting my personal information at risk by forcing me to send it through the mail? I'm going to put ID cards, a check, and account information into one envelope handled by the USPS? Your risk management is, then, to shift all of the risk onto your customers? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-family: arial;"&gt;Not going to happen.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Not that I expected to get a concession in response to the email, but I was hoping for at least a more coherent explanation of the "risk" they were trying to manage. Instead, I got an equally cavalier and patronizing email in response:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;We are writing in response to your inquiry regarding the ACH profile amendment for your account ***.  Kindly note that we are unable to process the amendment at this time, due to the fact that the required documents are not yet received.  We understand your concerns about your privacy; however, risk management measures are necessary. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Damn. And I thought that the only place I had to worry about wanton abuse of security terms was while at work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-3149161189179726121?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/3149161189179726121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=3149161189179726121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3149161189179726121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3149161189179726121'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/06/firstrade-privacy-shenanigans.html' title='Firstrade Privacy Shenanigans'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-6826179093512848410</id><published>2007-06-15T18:56:00.001-05:00</published><updated>2007-06-20T23:19:51.946-05:00</updated><title type='text'>Interop (OpenSaml and PHP Infocard)</title><content type='html'>What I've had to do so far to get the PHP RP to accept an OpenSAML-created assertion:&lt;br /&gt;&lt;br /&gt;1) Force namespace prefixes for all SAML elements. The default xmlns values are eventually processed by the PHP code, though are pushed to the end of the element (breaking c14n)&lt;br /&gt;2) Turn off the inclusive namespace prefix directives&lt;br /&gt;3) Disable all unused namespace declarations. Saml, Samlp, xsd, xsi, and a few others are declared within OpenSAML objects (presumably for flexibility)&lt;br /&gt;4) Change the xmlsec encoding of the certificate, which pretty-prints the base64 certificate with various unneeded (but not egregious) whitespace&lt;br /&gt;5) ... Eh, I started blogging too late to catch everything. 1-4 are the major changes.&lt;br /&gt;&lt;br /&gt;It finally works though. These are all bugs with the PHP code so far as I can tell. Why  change the IDP code then? Because it's pretty clear from the few RPs out there that Kim's code has made an impact and is used in many projects. The RP accepts &lt;span style="font-style: italic;"&gt;some&lt;/span&gt; SAML, and ultimately interoperability comes first.&lt;br /&gt;&lt;br /&gt;Hopefully he'll take it under advisement for the next revision.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-6826179093512848410?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/6826179093512848410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=6826179093512848410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/6826179093512848410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/6826179093512848410'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/06/interop-opensaml-and-php-infocard.html' title='Interop (OpenSaml and PHP Infocard)'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-5298608525191363766</id><published>2007-06-15T18:36:00.000-05:00</published><updated>2007-06-15T18:51:15.007-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spec compliance'/><category scheme='http://www.blogger.com/atom/ns#' term='nit-picking'/><category scheme='http://www.blogger.com/atom/ns#' term='infocard'/><title type='text'>OpenSAML and Infocard</title><content type='html'>OpenSAML (to include Apache Xmlsec) and the PHP RP seem to disagree about what to do with unused namespaces during canonicalization. Xmlsec strips out the namespace declaration, whereas the PHP keeps it in. Looking at the spec, I'm going to side with Xmlsec.&lt;br /&gt;&lt;br /&gt;Raw XML:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;attribute xsd="http://www.w3.org/2001/XMLSchema" xsi="http://www.w3.org/2001/XMLSchema-instance" attributename="surname" attributenamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"&amp;gt;&amp;lt;attributevalue&amp;gt;MyLastName&amp;lt;/attributevalue&amp;gt;&amp;lt;/attribute&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;XmlSec:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;Attribute AttributeName="surname" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"&amp;gt;&amp;lt;AttributeValue&amp;gt;MyLastName&amp;lt;/AttributeValue&amp;gt;&amp;lt;/Attribute&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PHP:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;Attribute xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" AttributeName="surname" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"&amp;gt;&amp;lt;AttributeValue&amp;gt;MyLastName&amp;lt;/AttributeValue&amp;gt;&amp;lt;/Attribute&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-5298608525191363766?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/5298608525191363766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=5298608525191363766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5298608525191363766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5298608525191363766'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/06/opensaml-and-infocard.html' title='OpenSAML and Infocard'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-7539235343618721116</id><published>2007-06-15T17:58:00.001-05:00</published><updated>2007-06-15T18:22:02.660-05:00</updated><title type='text'>Long time, no post...</title><content type='html'>Just throwing out notes before I forget.&lt;br /&gt;&lt;br /&gt;Kim's PHP Infocard implementation appears to have a problem with its canonicalization routine. To demonstrate, let's look at this example assertion element:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion" assertionid="uuid-1B045A32-5024-B4EB-93AE-0D718C87BC0D" issueinstant="2007-06-15T22:35:05.993Z" issuer="https://xxx" majorversion="1" minorversion="1"&amp;gt;...&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Which, in this case, ends up being the spec compliant. The PHP code incorrectly forms:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;assertion assertionid="uuid-1B045A32-5024-B4EB-93AE-0D718C87BC0D" issueinstant="2007-06-15T22:35:05.993Z" issuer="https://xxx" majorversion="1" minorversion="1" xmlns="urn:oasis:names:tc:SAML:1.0:assertion"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This places the namespace after the attributes, which violates the spec. There are a couple of other little quirks I'm hitting which I'll post as I find them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-7539235343618721116?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/7539235343618721116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=7539235343618721116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7539235343618721116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7539235343618721116'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/06/long-time-no-post.html' title='Long time, no post...'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-1754214105515046001</id><published>2007-02-21T00:49:00.000-05:00</published><updated>2007-02-21T01:44:34.888-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><title type='text'>OpenID and Unique IDs</title><content type='html'>George Fletcher, a really smart AOL guy, &lt;a href="http://practicalid.blogspot.com/2007/02/openid-and-reputation.html"&gt;mentions in his latest entry&lt;/a&gt;:&lt;br /&gt;&lt;blockquote style="font-family: arial;"&gt;One final thought. There should be no reason why my IdP can't provide public personal identifiers in certain instances, pseudonymous identifiers in others, and temporary identifiers with claims in still others.&lt;/blockquote&gt;I would agree that in the generic sense of an Identity Provider (IdP) that such an assertion holds. In some implementations, especially in OpenID's case, this obviously isn't true. This breaks when you depend on the user to serve a unique identifier directly to the verifying resource/service provider. Not to say that this couldn't be fixed in practice, mind you.&lt;br /&gt;&lt;br /&gt;The discussion regarding reputation in his post is a valid one. I just happen to believe that it's more of a convenient "feature" that you can't turn off. There are &lt;span style="font-style: italic;"&gt;a lot&lt;/span&gt; of situations &lt;a href="http://www.identityblog.com/?page_id=352#lawsofiden_law4"&gt;where this is bad&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-1754214105515046001?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/1754214105515046001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=1754214105515046001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/1754214105515046001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/1754214105515046001'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/02/openid-and-unique-ids.html' title='OpenID and Unique IDs'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-4142737477314385662</id><published>2007-02-21T00:28:00.000-05:00</published><updated>2007-02-21T01:15:21.837-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><category scheme='http://www.blogger.com/atom/ns#' term='aol'/><title type='text'>AOL's (Really)OpenID</title><content type='html'>Can someone please explain to me how this is going to foil a spammer's script?&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_wC5IWJgdgwA/RdvZAito1_I/AAAAAAAAAAM/td_zIZa10XU/s1600-h/aolopenid.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_wC5IWJgdgwA/RdvZAito1_I/AAAAAAAAAAM/td_zIZa10XU/s320/aolopenid.JPG" alt="" id="BLOGGER_PHOTO_ID_5033855611858114546" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Perhaps I'm just confused. I realize that it's just supposed to be a beta implementation, but it's going to be hard to sell OpenID even as a blog-spam panacea with these kinds of problems.&lt;br /&gt;&lt;br /&gt;Also, could we offer some OpenID-relevant security tips instead of the mind-numbing password length/composition suggestions? How about verifying the use of https, an aol.com address, appropriate use, etc.  This issue may lead into discussions regarding the level of exposure that the user has to the OpenID experience. How aware should the user be of the underlying technology? &lt;a href="http://conorcahill.blogspot.com/2007/02/is-it-aol-id-or-openid.html"&gt;Some have suggested&lt;/a&gt; that such exposure be minimized; I would suggest the contrary in this case.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-4142737477314385662?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/4142737477314385662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=4142737477314385662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4142737477314385662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/4142737477314385662'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/02/aols-reallyopenid.html' title='AOL&apos;s (Really)OpenID'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_wC5IWJgdgwA/RdvZAito1_I/AAAAAAAAAAM/td_zIZa10XU/s72-c/aolopenid.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-3003418522880452810</id><published>2007-02-20T23:47:00.000-05:00</published><updated>2007-02-21T00:23:37.804-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><category scheme='http://www.blogger.com/atom/ns#' term='digg'/><title type='text'>Digg and OpenID</title><content type='html'>Well, I knew it would eventually happen- a popular OpenID Digg article. I was curious, however, the form it would take. And now that Digg has thrown its support behind the initiative, the Web 2.0 community has taken notice. &lt;a href="http://www.shoemoney.com/2007/02/20/11-reasons-why-openid-rockssucks/"&gt;Here's the article&lt;/a&gt; I found:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: times new roman;"&gt;&lt;p&gt;Here are 5 reasons why I think OpenID Rocks:&lt;/p&gt; &lt;p&gt;1) 1 ring to rule them all - why wouldn’t you want the ability to have 1 sign-in across all blogs?&lt;/p&gt; &lt;p&gt;2) Bye-bye comment spam.&lt;/p&gt; &lt;p&gt;3) Verify who is actually making comments. Many fake Matt Cutts’, Jason Calacanis’ make comments and require verifying IPs or other time-consuming checks when prolific people do comment.&lt;/p&gt; &lt;p&gt;4) MyOpenID’s (inaptly-named) affiliate system is a nice tool for developers and large site owners.&lt;/p&gt; &lt;p&gt;5) De-centralized authentication leaves no single player holding all the cards.&lt;/p&gt; &lt;p&gt;Here are 6 reasons why OpenID sucks&lt;/p&gt; &lt;p&gt;1) It is (as yet) too complicated for average website owner to implement.&lt;/p&gt; &lt;p&gt;2) The security implications of this type of cross-site authentication haven’t been fully explored.&lt;/p&gt; &lt;p&gt;3) OpenID doesn’t necessarily provide trust. Theres nothing stopping a fake Mark Cuban from creating a fake OpenID, or worse, a fake identity provider. This is the chink in the armor of the decentralized system.&lt;/p&gt; &lt;p&gt;4) Too confusing to users. “OK I want an OpenID. Wait..what is myopenid? Is that different from GetOpenID? Do I need to get an OpenID on all of them?”&lt;/p&gt; &lt;p&gt;5) Hackish implementations. For example, the wordpress plugin actually creates a local wordpress users behind the scenes. In my opinion, this is an unacceptable hack.&lt;/p&gt; &lt;p&gt;6) Lack of implicit strong authentication. An OpenID login is really only as strong as the identity providers authentication. OpenID probably should never, and will never, be used for financial logons for this reason. The flip-side is that if an IDP provides strong auth, then the OpenID is as secure as that link in the chain.&lt;/p&gt;&lt;/blockquote&gt;Now, there's a variety of misconceptions as well as informed points in this piece, but it represents the common perception of OpenID by a relatively "enlightened" Digg user. Similarly, the Digg comments always make for great reading. Here, a response to the above:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt;I'm getting sick of this FUD over OpenID. It has THE SAME "TRUST" AS EMAIL BASED AUTHENTICATION. The only differences are:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; 1. You can change your provider at any time but keep your same openID (a plus)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; 2. They can't send you anything (another plus).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; YOU manage your authentication. They don't need to send you password resets etc. They don't have an email address to sell to a thrid party, or to spam you with their product "newsletters". OpenID is BETTER than email based account management.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; The only true con is that you REQUIRE a website (1 page) to use one.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; 1) It is (as yet) too complicated for average website owner to implement.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; Uh.. you paste a line of html into your index page. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; 2) The security implications of this type of cross-site authentication haven’t been fully explored.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; It's as secure as email as a login mechanism. If your webserver is compromised you lose. If you email server is compromised you lose. How is this any different? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; 3) OpenID doesn’t necessarily provide trust. Theres nothing stopping a fake Mark Cuban from creating a fake OpenID, or worse, a fake identity provider. This is the chink in the armor of the decentralized system.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; Yes there is. You don't link to the fake Mark Cuban's provider in your page. It's as simple as that. What's to stop someone from making a fake email address claiming to be you?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; 4) Too confusing to users. “OK I want an OpenID. Wait..what is myopenid? Is that different from GetOpenID? Do I need to get an OpenID on all of them?”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; This is called RTFM. Put "openid" into any search engine and there's your answer. If someone knows enough about OpenID to want one, they will be able to find out how to get one.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; 5) Hackish implementations. For example, the wordpress plugin actually creates a local wordpress users behind the scenes. In my opinion, this is an unacceptable hack.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; This has nothing to do with OpenID as a standard. Just the quality of the particular plugin you're looking at.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; 6) Lack of implicit strong authentication. An OpenID login is really only as strong as the identity providers authentication. OpenID probably should never, and will never, be used for financial logons for this reason. The flip-side is that if an IDP provides strong auth, then the OpenID is as secure as that link in the chain.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; Your "security" on financial sites is only as secure as the email address you associate with it. Your online banking security is only as secure as your email account.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; Just as with email, you can be your own provider. There is no requirement to EVER trust a third party.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt; The ONLY WAY to compromise an OpenID account is to either compromise the webserver hosting the link to the provider, or to compromise the provider. If your email server gets compromised its the SAME RESULT.&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;/blockquote&gt;While I'm not going to sit here and detail the problems with both posts, it does represent the understanding and perception problem that OpenID currently has. I believe it only goes to further my assertion that OpenID is still not ready for the limelight. Digg's adoption of the standard is certainly a boon for the OpenID community, but it may lead to a new group of users which is blindly passionate about technology they do not fully understand. (See above)&lt;br /&gt;&lt;br /&gt;I'm not posting this to disparage the Digg nor the OpenID communities, but I do believe that the OpenID guys owe it to their prospective users to discuss the pros and cons of the technology. (Some of which I described in my last post)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-3003418522880452810?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/3003418522880452810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=3003418522880452810' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3003418522880452810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3003418522880452810'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/02/digg-and-openid.html' title='Digg and OpenID'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-3423385118669111271</id><published>2007-02-16T16:01:00.000-05:00</published><updated>2007-02-21T12:00:00.645-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><category scheme='http://www.blogger.com/atom/ns#' term='aol'/><title type='text'>AOL OpenIDiocy</title><content type='html'>While the subject is intentionally inflammatory, I am simply frustrated how AOL can push a specification into the limelight which &lt;a href="http://www.links.org/?p=187"&gt;makes security worse in its current form&lt;/a&gt;. Unfortunately, the hype and ballyhoo which has ushered in the coming of OpenID has largely excluded any intelligent discussion of the security implications outside of the email lists. Now, I'm happy to hear about the integration and use non-phishable technologies with OpenID (such as Firefox 3.0 &amp; CardSpace), though AOL's decision to move ahead without addressing the array of concerns is rather careless. Even if AOL's intention for the service is as a proof-of-concept or a demonstration, it exposes very real credentials and resources.&lt;br /&gt;&lt;br /&gt;To reiterate the security concerns, here's why I won't use an AOL OpenID:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1)&lt;/span&gt; It places too much power in the hands of a potentially dangerous website. Instead of sending me to openid.aol.com/sn, I get sent to a similar looking site. In AOL's case, this is painfully easy to pull off given the simplicity of their interface. After naively providing my credentials to the site, all of my attached resources that I consider valuable are compromised. It puts any OpenID protected resource, my AIM account/email (if I used it), and any other resource where I might reuse the same credentials at risk. Now, I don't reuse passwords between resources, but how many people do?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2)&lt;/span&gt; It creates OpenID's for people who don't understand OpenID. I can now create a website that offers a login page that says,&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Don't have an OpenID? You do if you have an AIM account! Log in right here:&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;and continue with my phishing attack. Now such an attack could admittedly happen even outside of the OpenID context, but it immediately taints the (otherwise) good work that has been done in the community. Even with a non-phishing OpenID site, does the average user realize that they're revealing their screen name to the site? Not a pseudonym/unique ID, but the actual user's screen name.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3)&lt;/span&gt; AOL's OpenID login interface does not have human-in-the-loop verification. How many AIM accounts are used by spammers currently? How trivial is it now for that account to be "repurposed" into a blog spamming account for those sites which support OpenID? OpenID's best defense so far to such threats has been the high-cost, low-return of setting up a spammer-sponsored OpenID provider. AOL's easily automatable interface, complete with innumerable already established dubious accounts, are quite likely to overcome this problem for them and form a blog-spamming haven.&lt;br /&gt;&lt;br /&gt;Also, consider that the OpenID mantra has been operation in &lt;a href="http://connectid.blogspot.com/2006/12/how-can-this-be.html"&gt;full promiscuous mode&lt;/a&gt;. When blogs start getting spammed, are they going to block all of AOL? Individual users?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4)&lt;/span&gt; The concept of having a unique ID on the internet just doesn't suit me, especially when it's my AOL ID. Now, many will say that this is "tin-foil-hat land", though I think this is just as bad, if not worse than,  the&lt;a href="http://news.com.com/PIII+debuts+amid+controversy/2100-1040_3-222256.html"&gt; Intel serial number controversy&lt;/a&gt;. Is it really that much worse that you have people actively offering the ID to sites rather than hardware doing it for them? At least the processor offered an obscure ID number with it rather than my AOL screen name!&lt;br /&gt;&lt;br /&gt;And, if you think for a second that the fact that you consent to the transaction is any consolation, please refer to point #2 above.&lt;br /&gt;&lt;br /&gt;-&lt;br /&gt;&lt;br /&gt;There are further questions about the accountability between providers and websites, the ability to preform MITM attacks, and other privacy concerns, but the 4 reasons above should be enough to invoke some critical thinking. Some of these issues are with OpenID, while others are related to AOL's implementation, though all are arguably frightening.&lt;br /&gt;&lt;br /&gt;I am not an opponent of OpenID. After the phishing problem is handled, I think that it will be a highly useful tool for authentication to low-value resources (i.e. most of the sites on the internet), especially when you understand the risks and implications. But it's just not ready for the prime-time yet. But with AOL's decision and the hype from the Web 2.0 crowd, it's already on its way there.&lt;br /&gt;&lt;br /&gt;I would encourage anyone considering using this technology (either as a client or a implementer), to seriously research the security implications. Even more importantly, AOL should actively offer disclaimers regarding these issues. They're too important to allow a user to fall prey to a nefarious website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-3423385118669111271?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/3423385118669111271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=3423385118669111271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3423385118669111271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/3423385118669111271'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/02/aol-openidiots.html' title='AOL OpenIDiocy'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-2273922529489980704</id><published>2007-02-11T04:12:00.000-05:00</published><updated>2007-02-11T04:09:55.909-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X509V3Credential'/><title type='text'>Crazy?</title><content type='html'>The latest version of the InfoCard integration guide calls out a problem that I &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1179519&amp;SiteID=1"&gt;groaned about earlier&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;IMPORTANT NOTE: Notice that the URI used as the value of the ValueType attribute on &lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;the wsse:KeyIdentifier element to indicate a SHA1 thumbprint based key identifier is a &lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;slightly outdated URI value. The new prescribed value as per the WS-Security v1.1 standard &lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;should be as follows: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;&lt;br /&gt;http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbPrintSHA1&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial; font-style: italic;"&gt;Support for this newer URI will be added in a future versions of the Information Card Profile.  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So as much as I would like to think that someone out there actually listened to my complaints, I realized that this was probably documented before I said anything. Oh well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-2273922529489980704?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/2273922529489980704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=2273922529489980704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2273922529489980704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2273922529489980704'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/02/crazy.html' title='Crazy?'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-7432650775867475210</id><published>2007-02-11T03:34:00.000-05:00</published><updated>2007-02-06T12:28:13.224-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X509V3Credential'/><category scheme='http://www.blogger.com/atom/ns#' term='cardspace client'/><category scheme='http://www.blogger.com/atom/ns#' term='infocard'/><title type='text'>Success!</title><content type='html'>Ah. Sweet success. Finally.&lt;br /&gt;&lt;br /&gt;A InfoCard compliant STS which issues credentials from a LDAP backend based on X509 credentials. A pursuit which was wonderfully enlightening, painfully tedious, and maddening at times. Thanks to an idiotic obsession to complete this thing and some limited help received from a Java PingIdentity guy on the MSDN forums about proper certificate hashing (&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1034177&amp;SiteID=1"&gt;!&lt;/a&gt;), I've got a working proof of concept based on the work of the &lt;a href="http://www.xmldap.org"&gt;XMLDAP work&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As I close the compiler and take a few deep breaths (and back everything up to a DVD-R), I figured I'd have a quick reflection upon a few things I've learned.&lt;br /&gt;&lt;br /&gt;1) Microsoft hasn't seemed to dedicate the necessary support to handle developers' questions. Perhaps it was just the time of the day/week/year that I asked, but getting the ear of anybody of consequence on the MSDN forums was not possible. &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1195412&amp;amp;SiteID=1"&gt;Simple yes/no questions&lt;/a&gt; appear to languish unanswered for weeks and months. I won't rant about this subject again, but an &lt;a href="http://www.identityblog.com/?page_id=352"&gt;identity metasystem&lt;/a&gt; built upon open standards but with a closed reference implementation and no support can be just as frustrating to develop for as an all-closed solution.&lt;br /&gt;&lt;br /&gt;2) PingIdentity announcement of their intention open-source their InfoCard related code (&lt;a href="http://itickr.com/index.php/?p=56"&gt;RP&lt;/a&gt; and &lt;a href="http://itickr.com/index.php/?p=38"&gt;STS&lt;/a&gt;) is just lip-service. I defy them to prove me wrong. :)&lt;br /&gt;&lt;br /&gt;3) The CardSpace client wants WS-Security headers, but it really doesn't care what's included.&lt;br /&gt;&lt;br /&gt;4) The CardSpace client will fail with a critical fault if it cannot write to the logs. It's a bug that's been identified in the MSDN forums, but it's pretty damn frustrating when the CardSpace client fails, causing IE to fail, causing Explorer to fail, eventually requires Windows restart. (for approximately 20 iterations when I thought it was my STS cards causing the problem)&lt;br /&gt;&lt;br /&gt;5) One's progress on a given task is directly proportional to the demand for one's presence elsewhere. It is, therefore, impossible to get anything done.&lt;br /&gt;&lt;br /&gt;6) As I continue working with the technologies, the more my mind wonders regarding use cases and applicability.&lt;br /&gt;&lt;br /&gt;More to come later, but a good high-level start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-7432650775867475210?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/7432650775867475210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=7432650775867475210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7432650775867475210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/7432650775867475210'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/02/success.html' title='Success!'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-2345507563489030676</id><published>2007-02-06T12:17:00.000-05:00</published><updated>2007-02-06T12:28:13.272-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pingidentity'/><category scheme='http://www.blogger.com/atom/ns#' term='infocard'/><title type='text'>CardSpace Apache Module</title><content type='html'>Ashish Jain &lt;a href="http://itickr.com/index.php/?p=56"&gt;announced&lt;/a&gt; the release of the Apache CardSpace Module today in his blog. I'm really happy to hear that. Together with the Firefox 3.0 adoption of the spec, there should be plenty of tools to start piecing together some really interesting solutions.&lt;br /&gt;&lt;br /&gt;But where is the bigger fish (IMO), &lt;a href="http://itickr.com/index.php/?p=38"&gt;the open-source STS&lt;/a&gt;? There is apparently some interest judging from the comments on his blog, but emails requesting access have thus far been dismissed. Or maybe it's just my emails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-2345507563489030676?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/2345507563489030676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=2345507563489030676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2345507563489030676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/2345507563489030676'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/02/cardspace-apache-module.html' title='CardSpace Apache Module'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-5496602536677054180</id><published>2007-02-06T12:04:00.000-05:00</published><updated>2007-02-06T12:17:04.526-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X509V3Credential'/><category scheme='http://www.blogger.com/atom/ns#' term='cardspace client'/><category scheme='http://www.blogger.com/atom/ns#' term='infocard'/><title type='text'>My IDP Quest...</title><content type='html'>I'm still having fun in my IDP quest. I've successfully navigated the X509V3Credential issue thanks to some help from the &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1034177&amp;SiteID=1"&gt;MSDN board&lt;/a&gt; and despite some apparently bad or outdated MS &lt;a href="http://msdn2.microsoft.com/en-us/library/aa967567.aspx"&gt;doco&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;What does that mean? I'm accepting requested along with a client certificate (which I trust), which is then included into the card I issue. When the user selects the card,  the CardSpace client will retrieve the certificate from the appropriate store and use it for authentication back to the IDP. The IDP will retrieve attributes based on the certificate subjectDN from an LDAP, and send them back to the user in a SAML assertion. And then it dies.&lt;br /&gt;&lt;br /&gt;Why? I'm not including the right WS Security headers in the response, if the CardSpace logging is to be believed. Which ones do I need to include? Got me. I don't know if it's a requirement set by the CardSpace client or by WS-Trust (which I'm admittedly not terribly knowledgeable about), but I'm working on it now. I'm going to review the spec to hopefully find some insight on the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-5496602536677054180?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/5496602536677054180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=5496602536677054180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5496602536677054180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5496602536677054180'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/02/my-idp-quest.html' title='My IDP Quest...'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-1224506617474598605</id><published>2007-02-03T01:15:00.000-05:00</published><updated>2007-02-03T01:25:08.510-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><category scheme='http://www.blogger.com/atom/ns#' term='stodid'/><title type='text'>Ditto...</title><content type='html'>As a frequent listener of &lt;a href="http://stodid.libsyn.com/"&gt;STODID&lt;/a&gt;, I have to say that I'm in complete agreement with &lt;a href="http://connectid.blogspot.com/2007/01/tsooiaoboos-story-of-openid-and.html"&gt;Paul&lt;/a&gt;. Not that I'm not interested in OpenID, but let's diversify a bit...&lt;br /&gt;&lt;br /&gt;I'm glad &lt;a href="http://stodid.libsyn.com/index.php?post_id=177333"&gt;Aldo is listening&lt;/a&gt;, however. Maybe some specific discussions about these technologies in the enterprise realm (and no, not just OpenID).&lt;br /&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-1224506617474598605?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/1224506617474598605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=1224506617474598605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/1224506617474598605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/1224506617474598605'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/02/ditto.html' title='Ditto...'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6180833599810788176.post-5123124494498865761</id><published>2007-02-03T00:12:00.000-05:00</published><updated>2007-02-03T01:36:13.700-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X509V3Credential'/><category scheme='http://www.blogger.com/atom/ns#' term='infocard'/><title type='text'>(Not) Working with InfoCard</title><content type='html'>So I've got a working STS based on the work provided by the &lt;a href="http://xmldap.blogspot.com/2006/11/sts-is-finally-working.html"&gt;XMLDAP&lt;/a&gt; code-  great work by the way. Issuing card and pulling user info from an LDAP, I'm really happy about how things are coming together.&lt;br /&gt;&lt;br /&gt;Now if I can just get X509 authentication working. I've hit &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1179519&amp;SiteID=1"&gt;a few issues&lt;/a&gt; along the way, but the cards are kinda working now- they're at least importing correctly. I'm issuing cards with X509Credential identified with a SHA-1 hash of the certificate I want to use, but the Windows CardSpace client goes brain-dead when trying to find the certificate I specified. I browsed the MSDN forums looking for a solution, and &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1034177&amp;amp;SiteID=1"&gt;I'm hoping that someone can clear up why this is happening&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm a bit frustrated at the problems I've been hitting; not because I because I have any expectation of a seamless development/integration process, but because I don't have the ability to examine the CardSpace client. As the de facto reference implementation for identity selectors, not supporting it is simply not an option (my personal admiration for the XMLDAP selector aside).  Perhaps I've just been spoiled by the ability to load open source products into a debugger and figure out why things are breaking, but I &lt;span style="font-style: italic;"&gt;hate&lt;/span&gt; being hamstrung by an issue that I could likely figure out with a bit more visibility.&lt;br /&gt;&lt;br /&gt;Please, Microsoft- provide more context and detail on the client logging. A namespace error leading to an entry of "&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;span style="font-family:Courier New,Courier,Monospace;"&gt;Inner Exception: 'None' is an invalid XmlNodeType. Line 1, position 1."&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; isn't terribly helpful. I realize that this is a V1 release, but this is painful. When attempting to use the corrected card using X509, the client dies with a dialog box stating "&lt;span id="_ctl0_MainContent_PostFlatView"  style="font-family:courier new;"&gt;&lt;span&gt;The certificate associated with this card could not be found&lt;/span&gt;&lt;/span&gt;" and not so much as an log entry for an undoubtedly loggable event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6180833599810788176-5123124494498865761?l=blog.rammic.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rammic.com/feeds/5123124494498865761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6180833599810788176&amp;postID=5123124494498865761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5123124494498865761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6180833599810788176/posts/default/5123124494498865761'/><link rel='alternate' type='text/html' href='http://blog.rammic.com/2007/02/not-working-with-infocard.html' title='(Not) Working with InfoCard'/><author><name>rammic</name><uri>http://www.blogger.com/profile/10695252352917787395</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_wC5IWJgdgwA/Sd5SJpyMW0I/AAAAAAAAC8k/RM9mSoWV9yw/S220/P1000487.JPG'/></author><thr:total>0</thr:total></entry></feed>
