<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-23989220</id><updated>2008-08-05T13:50:57.466-04:00</updated><title type='text'>bbaadd.com</title><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default?start-index=26&amp;max-results=25'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml'/><author><name>Jim</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-23989220.post-3655381331732551786</id><published>2008-08-05T13:47:00.003-04:00</published><updated>2008-08-05T13:50:57.604-04:00</updated><title type='text'>Technology: Profiles in Courage</title><content type='html'>Mass High Tech brings us the amazing story of a superhuman high tech CEO who at one time worked ten hour days, six days a week, for FIFTEEN MONTHS... apparently without a break.&lt;br /&gt;&lt;br /&gt;The sacrifices those of us in high tech must make for our ambitions are under-estimated by the general public. This story proves it. Ten-hour work days, six days a week, behind a desk, sitting in meetings, making Powerpoint presentations... it's probably enough to kill or cripple an ordinary human. That's why CEOs are a different breed of Man.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.masshightech.com/stories/2008/07/21/weekly1-New-Covergence-CEO-Moran-crafts-software-biz-growth-plans.html"&gt;http://www.masshightech.com/stories/2008/07/21/weekly1-New-Covergence-CEO-Moran-crafts-software-biz-growth-plans.html&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2008/08/technology-profiles-in-courage.html' title='Technology: Profiles in Courage'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=3655381331732551786' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/3655381331732551786'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/3655381331732551786'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-4525543102397325331</id><published>2008-08-03T11:47:00.004-04:00</published><updated>2008-08-03T11:56:26.711-04:00</updated><title type='text'>CMS's say the darnedest things, #3</title><content type='html'>Sometimes the programmers or designers who code a newspaper's style into a production system (for print or online) want to be helpful, so they embed little shortcuts into the system to "save typing" or to help make the publication more consistent.&lt;br /&gt;&lt;br /&gt;In this case, someone has decided that every image that could carry a creator's credit is a photo, and that every photo is "by" some person.&lt;br /&gt;&lt;br /&gt;This is nit-picking, yes. But a commercial newspaper is presumptively a professionally-written, professionally-edited creation, and as such, should be a standard-bearer for both content and style. A newspaper should demonstrate effective communication, rather than daring readers to read &lt;span style="font-style: italic;"&gt;around&lt;/span&gt; pointless eccentricities hidden in the software that puts the paper together.&lt;br /&gt;&lt;br /&gt;For what it's worth, I first confronted this class of problem around 1986 when I naively hard-coded a similar "photo by" credit into a print-publishing system. The editors and production manager identified the problem with that approach the first time a non-photo image needed a credit...&lt;br /&gt;&lt;br /&gt;[ Boston Herald, July 14, 2008 ]&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bbaadd.com/images/cms-herald-20080714.png"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://bbaadd.com/images/cms-herald-20080714.png" alt="" border="0" /&gt;&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2008/08/cmss-say-darnedest-things-3.html' title='CMS&apos;s say the darnedest things, #3'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=4525543102397325331' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/4525543102397325331'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/4525543102397325331'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-46362622549830612</id><published>2008-08-03T11:39:00.005-04:00</published><updated>2008-08-03T11:43:15.451-04:00</updated><title type='text'>CMS's say the darnedest things, #2</title><content type='html'>The Globe turns a critical eye to the Stingray Diet Plan for kids..&lt;br /&gt;[ Boston Globe, July 7, 2008 ]&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bbaadd.com/images/cms-globe-20080707.png"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://bbaadd.com/images/cms-globe-20080707.png" alt="" border="0" /&gt;&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2008/08/cmss-say-darnedest-things-2.html' title='CMS&apos;s say the darnedest things, #2'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=46362622549830612' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/46362622549830612'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/46362622549830612'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-250615299250339966</id><published>2008-08-03T11:17:00.006-04:00</published><updated>2008-08-03T11:58:19.527-04:00</updated><title type='text'>CMS's say the darnedest things, #1</title><content type='html'>Publishers of web sites that contain lots of frequently-changing material use &lt;a href="http://en.wikipedia.org/wiki/Content_management_system" target="other"&gt;content management systems&lt;/a&gt; (CMS) to coordinate the display of all the words, pictures, links, indexes, and so on. Not surprisingly, newspapers with full online editions use CMS's behind the scenes to manage all the stories coming in from reporters and wire services, and to sync the online and print editions. Much of this happens automatically. Some of it shouldn't.&lt;br /&gt;&lt;br /&gt;I remember how much care we used to take when laying out a newspaper page. In particular, the relationships between images on a page, and headlines on a page, were always scrutinized. That probably still happens with print editions. I also remember the fuss over the first automated layout systems for print, how much concern there was about the appearance and utility of the page.&lt;br /&gt;&lt;br /&gt;No matter how much attention they may still give the print editions of their papers, it's disappointing to see how little concern is directed at the packaging of that  same material online. The Boston Globe in particular commits offenses daily. I wonder if they even look at their own "output" at the Globe.  Maybe after too many layoffs and years of decline, there's nobody left to put the house in order. If these things happened in print, at least back when I worked in newsrooms, there would have been yelling, lots of yelling. Editors used to yell a lot. Maybe they still do. And after the yelling, someone would have come away knowing never to commit this sort of offense again.&lt;br /&gt;&lt;br /&gt;Here's the first in a probably never-ending series...&lt;br /&gt;&lt;br /&gt;Hint: that's not &lt;a href="http://www.mtv.com/news/articles/1587860/20080521/aerosmith.jhtml" target="other"&gt;Steven Tyler&lt;/a&gt;.&lt;br /&gt;[ Boston Globe, June 28, 2008 ]&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bbaadd.com/images/cms-globe-20080628.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://bbaadd.com/images/cms-globe-20080628.png" alt="" border="0" /&gt;&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2008/08/cmss-say-darnedest-things-1.html' title='CMS&apos;s say the darnedest things, #1'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=250615299250339966' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/250615299250339966'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/250615299250339966'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-5112530887471683114</id><published>2008-06-01T12:50:00.056-04:00</published><updated>2008-08-03T11:17:04.263-04:00</updated><title type='text'>Technology: Macintosh WiFi disconnect problem</title><content type='html'>&lt;script type="text/javascript" src="http://reddit.com/button.js?t=2"&gt;&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;There have been many complaints about intermittent wireless connection problems with Macs running OS/X 10.4 and 10.5 with some access points. I've experienced a number of these problems myself, and have tested and documented some possible solutions.&lt;br /&gt;&lt;br /&gt;I've had problems with two systems:&lt;br /&gt;- Mac 1: Mac Mini running OS/X 10.4, whose wireless connection would fade in and out constantly (minute-by-minute or at least hourly at times); terrible throughput&lt;br /&gt;- Mac 2: MacBook running OS/X 10.5.2 or 10.5.3 that would fail to reconnect to a password-protected access point, with a "connection timeout" error&lt;br /&gt;&lt;br /&gt;.. and two access points:&lt;br /&gt;- AP1: Apple Airport Express initially configured as part of a cluster of AP's in a Wireless Distribution System (WDS)&lt;br /&gt;- AP2: U.S. Robotics Wireless MAXg Router (model USR5461) standalone&lt;br /&gt;&lt;br /&gt;I believe there are a few distinct problems.&lt;br /&gt;- when the Mini was having connection/ping/throughput problems, the MacBook's connection was rock solid.&lt;br /&gt;- when the MacBook could not re-connect to the access point, no other computer had similar issues.&lt;br /&gt;- I've configured the Macs and access points in various combinations to isolate problems&lt;br /&gt;&lt;br /&gt;The cause is&lt;span style="font-style: italic;"&gt; not&lt;/span&gt; necessarily "a bad access point" as has been suggested in many forums. Don't smash up your access point yet, until you've tried some of these suggestions.&lt;br /&gt;It may be the &lt;span style="font-style: italic;"&gt;configuration&lt;/span&gt; of the access point that is causing the trouble. Some access points allow fine-grained configuration, and some do not. If an access point does not allow changing some config settings, and you're having these problems, then the AP may need to be replaced. For those models whose wireless settings &lt;span style="font-style: italic;"&gt;can&lt;/span&gt; be configured in detail, I have some suggestions that may help.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 153, 153);"&gt;Specific issues with the Apple Airport Express&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Issue 1: Poor throughput when streaming music; dropped wireless connections from Windows clients (in particular)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Symptom: &lt;/span&gt;Airport Express throughput slows and sometimes drops connection when ANY client is streaming music through it; connection sometimes cannot be re-established w/o resetting the access point or rebooting the client&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cause: &lt;/span&gt;Airport Express has limited capacity to deal with heavy traffic. iTunes music streaming overwhelms the device&lt;br /&gt;The problem with re-establishing the connection is possibly a Windows-specific issue related to Windows' handling of wireless reconnects (but also see issue 4 below for another possible cause)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cure:&lt;/span&gt; Don't stream music through an Airport Express whose more-important function is Internet connectivity. Alternatively, pause music during big file transfers&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Discussion:&lt;/span&gt;&lt;br /&gt;The Express has some issues with heavy traffic generally. On every Airport Express I've used or heard about (models sold in 2006 and 2007), there are throughput issues when streaming music from iTunes while it's also routing Internet traffic. Specifically, when playing music from iTunes through the Express, Internet throughput slows considerably. That's not related to the two issues discussed here, but it is something to keep in mind as it's a problem that could be confused with the others.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Issue 2: Throughput and connection quality when operating in Wireless Distribution System (WDS) mode&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Symptom: &lt;/span&gt;Poor throughput; intermittent (but not constant) dropping of wireless connection to client. Connection can be re-established.&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Cause:&lt;/span&gt; Airport Express in WDS Remote Base Station mode seems to have throughput problems&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Cure: &lt;/span&gt;Don't use Airport Express as a WDS node&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Discussion:&lt;/span&gt;&lt;br /&gt;The Airport Express can operate as as standalone access point, or it can relay an Internet connection from other AP's in a cluster to cover a larger area than one Express can reach. This setting is found on the WDS tab of the Airport Utility. Running as a WDS Remote Base Station caused disconnect problems for the Mac Mini and we saw substandard throughput generally. At one point this Express had been in a network with another. It wasn't switched back to standalone mode when the second Express went away. Un-checking the box for "Enable this Airport Express as a..." (WDS Remote Base Station or Main Base Station or whatever), did seem to improve throughput for all clients.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 153, 153);"&gt;Issues for any access point, and configuration suggestions&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Issue 3: Frequent wireless disconnects&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Symptom:&lt;/span&gt; Wireless connection drops frequently; Airport icon in menu bar turns gray, eventually reconnects; poor throughput on large transfers&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cause: &lt;/span&gt;Power-save mode issue with some models, when beacon interval is long (1000ms down to some threshold)&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Cure: &lt;/span&gt;Set access point's beacon interval to 100ms, if it is configurable&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Discussion:&lt;/span&gt;&lt;br /&gt;I believe the Mac Mini's internal Airport hardware is slipping into a low power mode due to certain management traffic from the access point. Specifically,  a periodic signal called "Beacon" sends an "I am here" signal at intervals of between 1msec to 1000msec, depending on configuration.  Beacons allow wireless devices to go into a power-save mode when there is no traffic to or from the access point, but it also seems to be the root of problems with the frequent-disconnect issue, at least on the Mac Mini here.&lt;br /&gt;&lt;br /&gt;When beacons are frequent, they clutter the wireless channel with unnecessary traffic, and prevent power-saving devices from dropping into lower-power mode. So there is some motivation to impose a long interval between beacons. I had set my access point's beacon interval to the max 1000ms. Though the MacBook and other computers did not seem to have a problem with this, the Mini's connection constantly faded in and out, with the Airport icon turning gray, then coming back seconds later.&lt;br /&gt;&lt;br /&gt;I think some less-frequent disconnection problems with a Windows laptop may have been related to this issue. With the beacon interval set to 75ms or 100ms, the Mini has maintained a constant connection to the access point. So, the problem seems to be in the Mac Mini's handling of wifi power-save mode. This is not configurable on the client, so the fix requires an access point on which this value can be set manually. The Airport Express does not have a configurable setting for Beacon interval, but this may not be a problem: we did not experience this issue when using the Express with the Mini.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Issue 4: Cannot re-connect to password-protected (WPA/WPA2) base station after previous successful connection&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Symptom:&lt;/span&gt; OS/X 10.5.{2,3} client cannot reconnect to AP after previously using it and waking from sleep or even after a reboot. Rebooting the access point seems to allow connections again, for a while. Error on client is "Connection timeout" or "incorrect password"&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cause:&lt;/span&gt; I have not made a definitive diagnosis, but the problem seems to be related to WPA2 generally, and probably WPA with TKIP encryption &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Cure:&lt;br /&gt;&lt;/span&gt; Configure access point to allow both WPA2 and WPA, or WPA only.&lt;br /&gt;and... configure access point to use AES encryption only (no TKIP).&lt;br /&gt;and... configure problematic clients to use WPA, not WPA2.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Discussion:&lt;/span&gt; The above lays it all out, and there is not much more to say. I have not worked out the details of what is malfunctioning , but I have made the above changes to my access point and am now able to reliably connect/disconnect with a 10.5.x client that prior to the change was constantly failing with the "connection timeout" error message.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;To configure a Mac to use WPA rather than WPA2 when both are offered by an access point (OS/X 10.5.x):&lt;br /&gt;&lt;/span&gt;- System Preferences/Network&lt;br /&gt;- Click Airport&lt;br /&gt;- Select the acccess point you want to connect to ("Network Name:")&lt;br /&gt;- Click Advanced...&lt;br /&gt;- On the Airport tab, click on the name of the network to configure&lt;br /&gt;- Click the "edit" icon (the pencil  to the right of  "+" and "-" below the list)&lt;br /&gt;- Change Security: from WPA2 Personal to WPA Personal&lt;br /&gt;- Click Add to save the change&lt;br /&gt;- The network name should now display "WPA Personal" in the list of wireless networks&lt;br /&gt;- Click OK to exit the advanced screen, and Apply to save the new network preferences&lt;br /&gt;- Let me know if this fixes it for you. It's working well for me.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other configurable settings on my access point, and how they are set now (in case this also helps):&lt;/span&gt;&lt;br /&gt;Beacon = 100ms&lt;br /&gt;RTS = 2347 (effectively meaning "no RTS")&lt;br /&gt;Fragmentation = 1024&lt;br /&gt;DTIM = 1&lt;br /&gt;preamble = SHORT&lt;br /&gt;Security method = WPA2 and WPA&lt;br /&gt;Encryption = AES Only&lt;br /&gt;Key rotation = 180 seconds</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2008/06/technology-macintosh-wifi-disconnect.html' title='Technology: Macintosh WiFi disconnect problem'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=5112530887471683114' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/5112530887471683114'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/5112530887471683114'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-7895125522569202444</id><published>2007-10-30T13:37:00.002-04:00</published><updated>2008-05-14T10:21:26.720-04:00</updated><title type='text'>Security:First live SiteKey exploit</title><content type='html'>&lt;!-- &lt;iframe src="http://diggler.splattercast.net/http://digg.com/business_finance/First_live_SiteKey_exploit_seen_in_operation" frameborder="0" height="115" width="100" align="left"&gt;&amp;nbsp;&lt;/iframe&gt;--&gt; A PDF of this post is available, along with other related publications, at &lt;a href="http://cr-labs.com/publications/" target="other"&gt;http://cr-labs.com/publications/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;FOR IMMEDIATE RELEASE&lt;br /&gt;OCTOBER 30, 2007  12:30EDT&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;First live SiteKey exploit seen in operation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An active exploit of the SiteKey security system used by Bank of America and other financial institutions, employing the man-in-the-middle attack described by Challenge/Response Labs in our white papers of July 2006 and in subsequent work by other researchers, has been observed in a live phishing attack. We believe this is the first time a live, man-in-the-middle attack against SiteKey has been seen in the wild.&lt;br /&gt;&lt;br /&gt;The fraudulent site displays valid SiteKey images and text phrases to potential fraud victims. It apparently became active in the early morning of Oct. 30, 2007 (EDT) and was still active at 12:30 EDT Oct. 30, 2007.&lt;br /&gt;&lt;br /&gt;We have tested the fraudulent site using the credentials for both a non-existent and an actual account. The site successfully retrieved and displayed a correct SiteKey image for the valid account when given the correct answer to one security question. It also successfully detected and recovered from the error sent back from Bank of America's servers when we used a nonexistent account ID.&lt;br /&gt;&lt;br /&gt;The attack appears to use PHP scripts to relay a victim's login credentials to the attacking site, and to relay a victim's SiteKey image and phrase from Bank of America's servers back to the victim.&lt;br /&gt;&lt;br /&gt;Firefox’s built-in "Tell me if the site I'm using is a suspected forgery" feature, using a downloaded list of suspected sites, does correctly flag the fraudulent site, and warns the user away.&lt;br /&gt;&lt;br /&gt;Why today's development is significant:&lt;br /&gt;• Now that the supporting software ("scripts") has been written and debugged, the code can be expected to circulate to other attackers, so that even those lacking the skill to devise this type of attack on their own can create fake banking sites that interact fully with SiteKey.&lt;br /&gt;&lt;br /&gt;• Customers of all financial institutions that use SiteKey-style security are vulnerable to this class of attack.&lt;br /&gt;&lt;br /&gt;• Nothing more can be done to "fix" SiteKey to stop the attack, compared to what can be done about any phishing exploit (that is, banks must contact ISPs and server operators to attempt to shut the servers down).&lt;br /&gt;&lt;br /&gt;• A potential risk we noted in July 2006, and subsequently studied in depth by other researchers, is now an actual risk. Bank of America's statement that "If you recognize your SiteKey image, you'll know for sure that you are at the valid Bank of America site. Confirming your SiteKey image is also how you'll know that it's safe to enter your Passcode." may create a false sense of security, increasing the likelihood that a customer could be persuaded to enter his or her password into a fraudulent web site, when that fraudulent site shows their SiteKey image and phrase - exactly as occurs in this attack.&lt;br /&gt;&lt;br /&gt;• Because the exploit was launched through a compromised BlogSpot blog page, it was propagated by Google Alerts and potentially by RSS feeds, and may have circulated widely without requiring a mass e-mailing.&lt;br /&gt;&lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;NOTES AND CONTACT INFORMATION&lt;br /&gt;&lt;br /&gt;Challenge/Response LLC is a Cambridge, MA provider of collaborative, p2p security and e-commerce technologies that bring together the online and offline worlds.&lt;br /&gt;&lt;br /&gt;The 2006 Challenge/Response Labs publications, "Fraud Vulnerabilities in SiteKey Security at Bank of America" and "Why SiteKey Can't Save You", as well as this report, are available at: http://cr-labs.com/publications/&lt;br /&gt;&lt;br /&gt;The NIST Vulnerability Summary for this issue is CVE-2006-7201, available at http://nvd.nist.gov/nvd.cfm?cvename=CVE-2006-7201&lt;br /&gt;&lt;br /&gt;See also: The Emperor's New Security Indicators: An evaluation of website authentication and the effect of role playing on usability studies, by Stuart Schechter, Rachna Dhamija, and Andy Ozment, available at: http://usablesecurity.org/emperor/&lt;br /&gt;&lt;br /&gt;The exploit was observed and recorded by Challenge/Response, LLC on Oct. 30, 2007, 0908 to 1012 EDT.</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2007/10/security.html' title='Security:First live SiteKey exploit'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=7895125522569202444' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/7895125522569202444'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/7895125522569202444'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-7611774973692140669</id><published>2007-08-08T11:10:00.000-04:00</published><updated>2007-08-09T08:50:49.275-04:00</updated><title type='text'>Technology: Why Advertising Sucks</title><content type='html'>In an online group discussion, &lt;a href="http://thepeer.blogspot.com/" target="other"&gt;Chris Ovenden&lt;/a&gt; brought up the mess of advertising we're all immersed in right now:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;I have been wondering recently what the world would be like if it were illegal to advertise to people who don't want to be advertised at. (So if they google "fizzy drink" it's okay to send them to pepsi.com; billboards would be out.) But things are going in the opposite direction: ad-supported is about the only financial model anybody seems to be able to come up with.&lt;br /&gt;&lt;br /&gt;So what do people think? Is it time to legislate to stop this madness?&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;My thoughts:&lt;br /&gt;&lt;br /&gt;There's no way "ad supported" can pay for as many things as it's supposed to pay for, going forward from here.&lt;br /&gt;&lt;br /&gt;People make the same amount of money as always. In the US at least, they're now spending more of it for gasoline and other essentials. They're probably buying about the same amount of crap as always.&lt;br /&gt;&lt;br /&gt;There are so many ads because:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- ads are more inefficient today than ever before&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- advertisers need people to upend their budgets to buy into new categories of formerly-unknown stuff&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Inefficient mechanisms aren't valuable. They have to be operated over and over again to  have any influence at all. When the mechanism is advertising, the resulting spray of ads creates more distraction and more competition for attention, which in turn demands more advertising to overcome the ambient noise.&lt;br /&gt;&lt;br /&gt;Ads aren't just competing against same-category products (Ford vs Chevy) any more, but against all the other ads for your attention.&lt;br /&gt;&lt;br /&gt;Clutter begets clutter in a death spiral. Everyone loses.&lt;br /&gt;&lt;br /&gt;The asymmetry that's making things extra messy right now is that online ads are horribly inefficient and cheap, while traditional ads still cost a fortune to book, stage and execute. So by scratching just a couple of minutes of national TV or radio broadcast spots, an advertiser can shake loose enough cash to gum up millions of web page views, wasting zillions of user-hours.&lt;br /&gt;&lt;br /&gt;Online I use Firefox + Adblock to make the ads go away. I would be happy to instead pay the site the $0.001 that it might receive for my "viewing", in exchange for a better design whose integrity isn't wrecked by all that useless advertising.&lt;br /&gt;&lt;br /&gt;I don't think in the US or elsewhere there'd be any legal way to legislate against ads... everyday free speech is sure becoming a problem, but commercial free speech seems to be pretty well protected :-). And as practical matter, how would ya? I do favor real-world community standards for physical signage, billboards, and so on, but these are at least clearly delineated - physical signs live inside the legal boundaries of a place and can be measured, licensed, and so on.&lt;br /&gt;&lt;br /&gt;Ads often destroy the coherence of online properties.. aren't efficient... are intrusive. If an entertainment provider is no longer entertaining, or an information providers is more about ads than information, people will eventually wander away. I might be more of an early adopter/rejecter than then general population, but all come around to these conclusions eventually.&lt;br /&gt;&lt;br /&gt;The real problem is that the packaged-entertainment-products industries have been horribly wrong at interpreting and responding to the rejection of inferior goods and/or inferior experiences by consumers. By contrast, nobody's said the Oldsmobile brand folded because customers "failed" to buy &lt;a href="http://www.dillows.com/2002_oldsmobile_alero_lemon.htm" target="other"&gt;ugly, badly-built cars&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I liked &lt;a href="http://www.sukshma.net/" target="other"&gt;Santosh Dawara's&lt;/a&gt; example[1] of a moviehouse that's going after profit by maxing out the daily screenings, trying to pull in every available rupee. This is the same as not leaving factory machinery idle when it could be making stuff. It's also a market differentiator. When faced with more-or-less identical competition, a successful strategy is to offer new reasons to choose you over someone else. If everyone else is showing ads, show movies instead. And the movies themselves seem to have have crowded out advertising in this venue, which is a great triumph for movies, if it works.&lt;br /&gt;&lt;br /&gt;------&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://www.sukshma.net/" target="other"&gt;Santosh Dawara&lt;/a&gt; wrote:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;I am currently working with the number 1 Multiplex in India (in terms of avg. annual occupancy). They have decided to take a unique approach - they don't show ads. Instead, they focus on packing in as many Shows per screen per day. This approach maximizes their profit making ability on the weekends. They show an average *6* shows per screen per day. This is probably a national record. Note, these are Hindi movies with 3 hour durations. Another downside is that the intervals are as short as 5 mins. Never enough time to go grab popcorn.&lt;/blockquote&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2007/08/technology-why-advertising-sucks.html' title='Technology: Why Advertising Sucks'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=7611774973692140669' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/7611774973692140669'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/7611774973692140669'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-7758509146718478666</id><published>2007-05-29T16:16:00.000-04:00</published><updated>2007-05-29T16:45:08.487-04:00</updated><title type='text'>Life: WiFi in the Garden</title><content type='html'>Grandma's house now has cable Internet and WiFi.&lt;br /&gt;&lt;br /&gt;So it's a piece of cake (2 bars of signal) to sit on the back patio, away from the house, and connect to the net. This is the same place where 20 and 30 years ago, and to an even greater extent - before I was born - guys from the neighborhood would hang out in the summer, right there next to the garden, to play cards, drink beer and talk all day and into the evening.  We had picnics on the old picnic table, and played baseball in the small adjacent yard that wasn't planted with tomatoes and peppers.&lt;br /&gt;&lt;br /&gt;There was once a big apple tree whose shade and branches created this gathering spot (and whose green apples made messy baseballs for batting practice in late fall)... but it was too old and had to be taken down, to be replaced by a compact yellow building that extends into its old space, a workplace for gardening and a shady place to sit and enjoy the quiet. The functionality is still there. This could still be the center of the neighborhood again, if there were a neighborhood for it to be the center of. But the people have mostly gone away, and even worse, they've most likely died and the traditions went along with them. Their children and grandchildren have largely moved away, as I did.  I can't simulate the kind of friendship and activity that happened there, in AIM or Friendster or MySpace or anywhere else on the net, any better than I can conjure up the smells or sounds of the place, or any better than I can imagine what it must have been like when my grandparents were young and everything was new and there was no such thing as Me.&lt;br /&gt;&lt;br /&gt;That laptop has a built-in camera, and the extended-distance 802.11G signal reaches well into the patio and the garden beyond, but the sounds and smells of summer in a garden in a quiet corner of Ohio, and the magic of such a powerful locus of activity and friendship, just don't translate into words or bits or even clever storytelling. I know exactly what it was like. I just can't tell you.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/porchlaptop.jpg" /&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2007/05/grandmas-house-now-has-cable-internet.html' title='Life: WiFi in the Garden'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=7758509146718478666' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/7758509146718478666'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/7758509146718478666'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-4688215543607355530</id><published>2007-02-10T09:55:00.001-05:00</published><updated>2008-05-14T10:22:30.261-04:00</updated><title type='text'>Technology: Goo</title><content type='html'>&lt;!-- &lt;iframe src="http://diggler.splattercast.net/http://digg.com/mods/Technology_Goo" frameborder="0" height="115" width="100" align="left"&gt;&amp;nbsp;&lt;/iframe&gt;--&gt; This short essay was provoked by two comments in an online conversation about cellular phones, and an article in the Washington Post:&lt;br /&gt;&lt;blockquote&gt;From the conversation:&lt;br /&gt;&lt;i&gt;I believe that most US carriers will allow use of an unlocked phone. I know for a fact that T Mobile will; I don't see why anyone who travels much would get a locked phone... I personally own an unlocked cell phone. I bought it used, and had someone unlock it.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;I don't think carriers, for the most part, can tell whether your cell phone is locked or unlocked. If they can now, they couldn't always, and have surely moved on to more interesting things, such as trying to escape another Judge Green-style imposition of actual competition.&lt;br /&gt;&lt;br /&gt;The greater problem is and has always been acquiring that unlocked phone. For many people (myself included) it's plainly not worth the money to pay $400 for a phone that can be had for $50 with an agreement and a lock. Third-party unlock services apparently work much of the time, but are sketchy... so ordinary consumers (most people) are really at a loss. Due to carrier obfuscation of the truth, I'd venture that most would not even imagine that a Cingular phone could be used with T-Mobile.&lt;br /&gt;&lt;br /&gt;Carrier customer support will give up unlock codes "sometimes." Sometimes, I'm told, unlocking a phone requires a cable and a PC... or is that only required for hacking the unlock process if the carrier or phone vendor won't cooperate? It's a confusing space. The phone-makers won't tell. And what is "sometimes?" Ordinary consumers are not equipped to make requests that sometimes get you yelled at, that sometimes yield the requested information, and that most often require pushing a vendor to the point of frustration before they'll give up the information they should have given up at the first request.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;From the Washington Post &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2007/02/08/AR2007020802169.html" target="other"&gt;article&lt;/a&gt;:&lt;br /&gt;&lt;i&gt;Until federal regulators issued a landmark ruling in 1968, Americans could not own the telephones in their homes, nor attach answering machines or other devices to them. Now, a growing number of academics and consumer activists say it's time to deliver a similar groundbreaking jolt to the cellphone industry, possibly triggering a new round of... technical innovations to rival the one that produced faxes, modems and the Internet.&lt;br /&gt;&lt;br /&gt;Wireless carriers... say the move is unnecessary and potentially harmful. But... a number of researchers are asking why the companies are allowed to force consumers to buy new handsets when they change carriers, pay a specified carrier to transfer photos from a camera phone, or download ring tones or music from one provider only.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;From the conversation:&lt;br /&gt;&lt;i&gt;Unlocking phones is already an approved exemption from the DMCA.&lt;br /&gt;&lt;a href="http://www.law.com/jsp/article.jsp?id=1170410587623" target="other"&gt;http://www.law.com/jsp/article.jsp?id=1170410587623&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I think I've now moved beyond bewildered and pissed off at the state of technology and control in our everyday world, and become merely amused at the new absurdities that arrive daily.&lt;br /&gt;&lt;br /&gt;Can you even get your arms around the idea that we live in a world where a telephone - a little thing that you talk into and keep in your pocket, and apparently own, and have to pay money to use each month - would be the subject of an exemption in Federal law so that you don't go to prison for tampering with it?&lt;br /&gt;&lt;br /&gt;A friend just asked me for some advice about a security protocol - and I advised him to remove an unnecessary extra layer that he'd added atop an existing, adequate protocol. Unnecessary complexity guarantees that unanticipated states of operation will be made possible. These states will be occasionally (or frequently) entered. Chaos will follow. In any machine, process or set of policies, good overall design is impossible if the system can generate and enter unknown or chaotic states.&lt;br /&gt;&lt;br /&gt;I think we're just about at that point with consumer electronics, computers and the Internet.&lt;br /&gt;&lt;br /&gt;There's got to be a finite limit, a breaking point - after which it's just not feasible to pile on more clutter without the whole thing coming unglued... where "unglued" may mean:&lt;br /&gt;- customer frustration so that they cut back on using the stuff&lt;br /&gt;- an intolerable, unaffordable increase in support needs due to the now N x N possible interactions between things&lt;br /&gt;- or a regulation and policy stack so dense that it makes development, much less new invention - even by "authorized" developers - practically impossible.&lt;br /&gt;&lt;br /&gt;Simplicity plainly will prevail in the end. My frustration is that I've been fated to be alive during this bizarre transitional period, that's left us all - techie, insider, vendor, consumer - trapped by so much pointless, wasteful goo in our everyday devices, and our everyday activities.</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2007/02/technology-goo.html' title='Technology: Goo'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=4688215543607355530' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/4688215543607355530'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/4688215543607355530'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-3435691556678116281</id><published>2007-01-30T15:53:00.001-05:00</published><updated>2008-05-14T10:22:53.778-04:00</updated><title type='text'>Java: How to use complex objects as keys in Ehcache (and Maps generally)</title><content type='html'>&lt;!-- &lt;iframe src="http://diggler.splattercast.net/http://digg.com/programming/How_to_use_complex_Java_objects_as_keys_to_Ehcache_and_Maps_generally" frameborder="0" height="105" width="80" align="left"&gt;&amp;nbsp;&lt;/iframe&gt; --&gt;&lt;br /&gt;I've been using the open source &lt;a href="http://sourceforge.net/projects/ehcache/" target="other"&gt;Ehcache&lt;/a&gt; for some projects I'm working on.&lt;br /&gt;&lt;br /&gt;Ehcache uses Java "Map" classes to store the cache in memory. From the memory store, they can be overflowed to disk (if all the allocated memory is used) and/or persisted to disk (so that stopping and starting an application preserves cached objects between runs).&lt;br /&gt;&lt;br /&gt;I have some issues with the bumpy spots, omissions and redundancies in the new documentation, but overall this is great stuff. Finding ehcache saved me from writing my own, less-capable cache, and I am grateful to have it.&lt;br /&gt;&lt;br /&gt;There is, however, a problem storing and finding cached data with ehcache when using some kinds of objects as keys.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quick refresher&lt;br /&gt;Maps (and any cache, for that matter) have two parts&lt;/b&gt;&lt;br /&gt;(1) a key that's used for finding objects; &lt;br /&gt;(2) the stored objects&lt;br /&gt;&lt;br /&gt;So, the basic operations on a Map (or cache) are:&lt;code&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;void put (Object key, Object item); &lt;br /&gt;&amp;nbsp;&amp;nbsp;Object get (Object key);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;b&gt;The problem&lt;/b&gt;&lt;br /&gt;Specifically, if a cache key is not a String but some other kind of object (say, a custom Class with some fields in it), cache lookups may fail some of the time, even when the stuff you're looking for is right there in the cache.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EXAMPLE 1. The key is a String, and this succeeds:&lt;/b&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;WhateverObject item1 = new WhateverObject();&lt;br /&gt;Element el = new Element("Item1",item1);&lt;br /&gt;cache.put(el);&lt;br /&gt;cache.get("Item1");&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;b&gt;EXAMPLE 2. The key is not a simple String, but this succeeds:&lt;/b&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class MyKey {&lt;br /&gt;&amp;nbsp;&amp;nbsp;int a,b;&lt;br /&gt;}&lt;br /&gt;WhateverObject item1 = new WhateverObject();&lt;br /&gt;MyKey key = new MyKey(); key.a = 12; key.b = 22;&lt;br /&gt;Element el = new Element(key,item1);&lt;br /&gt;cache.put(el);&lt;br /&gt;cache.get(key);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;b&gt;EXAMPLE 3. ... but a similar lookup fails when a new MyKey object (containing the same values as the original key) is used for the lookup:&lt;/b&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class MyKey {&lt;br /&gt;&amp;nbsp;&amp;nbsp;int a,b;&lt;br /&gt;}&lt;br /&gt;WhateverObject item1 = new WhateverObject();&lt;br /&gt;MyKey key = new MyKey(); key.a = 12; key.b = 22;&lt;br /&gt;Element el = new Element(key,item1);&lt;br /&gt;cache.put(el);&lt;br /&gt;&lt;b&gt;MyKey key2 = new MyKey(); key.a = 12; key.b = 22;&lt;/b&gt;&lt;br /&gt;cache.get(&lt;b&gt;key2&lt;/b&gt;);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;b&gt;What's going on?&lt;/b&gt;&lt;br /&gt;This behaviour is consistent with the contract for Map objects, and &lt;i&gt;may&lt;/i&gt; be the desired behavior for some object persistence designs. However, it may be completely undesirable for others. With regard to the storage model and ehcache in particular, the behaviour is sometimes right and sometimes wrong for memory-only caches, but &lt;i&gt;always&lt;/i&gt; wrong for caches that persist to disk, if you buy into the presumption that a disk-persisted cache will be accessed in separate runs of an application.&lt;br /&gt;&lt;br /&gt;The crux of the problem is in the way Java's Map classes store and index the keys in a Map (and thus, the keys to ehcache objects, which use Maps). &lt;br /&gt;&lt;br /&gt;To make searches fast and straightforward to implement (internally, in Java), the keys are stored as integers in a table. The integers are &lt;i&gt;hashes&lt;/i&gt; derived from the key objects. That is, they're one-way mappings from something like "ABC" to an integer value like 64578. Integers are fast to search, fast to sort, and fast to compare.&lt;br /&gt;&lt;br /&gt;So you've probably guessed where this is going.&lt;br /&gt;&lt;br /&gt;Finding an object in a cache or in a Map requires that the caller present a key that reduces to exactly the same &lt;i&gt;hash&lt;/i&gt; as was created when put(key,item) was called to add the item to the Map in the first place.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In other words:&lt;/b&gt;&lt;br /&gt;To find an object in a Map or Map-based cache, keys with identical content must reduce to exactly the same hash every time they're converted from their usual form into hashes.&lt;br /&gt;&lt;br /&gt;Java generates these hashes by calling the &lt;b&gt;hashCode()&lt;/b&gt; method that every Object has. And it compares them by calling the &lt;b&gt;equals()&lt;/b&gt; method that's a standard method in every Object.&lt;br /&gt;&lt;br /&gt;The problem comes from the way that Java makes the hashes.&lt;br /&gt;&lt;br /&gt;Strings implement the hashCode() method in a way that is based on the content of the String, and that is repeatable every time the method is called on an identical string.&lt;br /&gt;&lt;br /&gt;For example, "ABCDE".hashCode() always returns the integer value 62061635 no matter how many times you call it.&lt;br /&gt;&lt;br /&gt;Objects that are not Strings use the default hashCode() method of the Object class. This hashCode() is &lt;i&gt;not&lt;/i&gt; based on the content of the object, but on its OID, which is different for every instance of an object, and every run of an application. That's why the code in Example 3 fails: objects 'key' and 'key2' are different objects (even though they're of the same class), so their default hashCode() values will be different.&lt;br /&gt;&lt;br /&gt;As well, the class's &lt;i&gt;equals()&lt;/i&gt; method doesn't compare object content, but OIDs, so (from Example 3):&lt;br /&gt;&lt;code&gt;key != key2&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example 2 works fine, because the object "key" that was used to put the data into the cache is the same object for both the &lt;code&gt;put&lt;/code&gt; and the &lt;code&gt;get&lt;/code&gt;... and thus the OID is the same for both operations.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The solution to this problem is to give your key objects a &lt;code&gt;hashCode()&lt;/code&gt; method that return identical hash values for identical content, and an &lt;code&gt;equals()&lt;/code&gt; method that returns true when two keys have the same content. With that change to the class that's used as a key, Map class accesses, and by extension, ehcache cache lookups, will work as expected.&lt;br /&gt;&lt;br /&gt;Here is a sample class that implements the methods using a lazy trick to just make the object's contents into a String, and then returns the hashCode() of that String (because, as mentioned, Strings return the same hash for the same String content every time). &lt;br /&gt;&lt;br /&gt;A better, more efficient implementation of hashCode() would generate a return value directly from the fields of the key class, without the String overhead... but you get the idea. This example also implements a toString() method that returns the content of the class as a String. Obviously that won't be needed if you make a hashCode() method that goes right from fields of the class to a distinct integer value.&lt;br /&gt;&lt;br /&gt;In this example, the "key" to some data is an object that has two fields, a Date and a double. Date is just a thin wrapper around a &lt;code&gt;long&lt;/code&gt;, and this example uses that &lt;code&gt;long&lt;/code&gt;. I did this to save the conversion from long to the formatted date string that would happen if the Date were used directly.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;import java.util.Date;&lt;br /&gt;&lt;br /&gt;public class CacheKey implements Serializable {&lt;br /&gt; private static final long serialVersionUID = 1L;&lt;br /&gt;&lt;br /&gt; public Date when;&lt;br /&gt; public double howMuch;&lt;br /&gt;&lt;br /&gt; public CacheKey(Date when, double howMuch) {&lt;br /&gt;  this.when = when;&lt;br /&gt;  this.howMuch = howMuch;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Generate a hashcode based on the content of the object&lt;br /&gt;  */&lt;br /&gt; public int hashCode() {&lt;br /&gt;  return this.toString().hashCode();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; /**&lt;br /&gt;  * Make a string for use by hashCode(), including all fields&lt;br /&gt;  */&lt;br /&gt; public String toString() {&lt;br /&gt;  return ""+when.getTime()+howMuch;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Compare this object with another. Note that comparisons &lt;br /&gt;  * MUST compare the values of the fields of the object that are&lt;br /&gt;  * of interest (or whatever else is of interest). You can't compare the&lt;br /&gt;  * hashes and get a good result -- hashes are allowed to collide. They just&lt;br /&gt;  * reduce the search space tremendously.&lt;br /&gt;  */&lt;br /&gt; public boolean equals(Object o) {&lt;br /&gt;    CacheKey ck = (CacheKey) o;&lt;br /&gt;    return ( (ck.when == this.when) &amp;&amp; (ck.howMuch == this.howMuch));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  return (this.hashCode() == ((CacheKey) o).hashCode() );&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;http://www.oracle.com/technology/pub/articles/maps1.html&lt;br /&gt;http://sourceforge.net/projects/ehcache/&lt;br /&gt;http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Postscript:&lt;br /&gt;Notes about the "cheap" method I used to make the hashCode()&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Someone suggested that I use Strings as keys.&lt;br /&gt;&lt;br /&gt;The problem is that I'm using a self-populating (or pull-through) cache. With this kind of cache, the cache itself calls the method that fetches things not found in the cache, by calling that method with the key value. Thus, the key must encapsulate everything that's needed to fetch the desired data. In the case of my application, that's two Date objects, and two doubles... and there's no way around it. A String just won't work. Well, not directly.&lt;br /&gt;&lt;br /&gt;Anyway, carefully overriding hashCode() to generate an integer based on the contents of the key object, and then overriding equals() so that it compares the hashCode of the current Object to the hashCode of the compared Object, is the proper solution.&lt;br /&gt;&lt;br /&gt;My example code takes a cheap shortcut, tacking the fields together in a String and returning the hashCode of that String.&lt;br /&gt;&lt;br /&gt;It shows the general idea of what needs to happen, and for that matter, I'm not totally opposed to the approach, given the kind of data I'm working with.&lt;br /&gt;&lt;br /&gt;I could generate an integer hashCode() by summing the integer values of the fields. However... (1) the Date objects will be clustered very close together so their Date.getTime() methods will return nearly identical values; (2) if using long getTime() values, I'd have to subtract a large constant to get them into integer range... &lt;br /&gt;&lt;br /&gt;... and even after all that, both overflows and collisions would remain a strong concern.&lt;br /&gt;&lt;br /&gt;Another approach would be to perform a hash operation over, say, the bytes of the values of the fields. For my money, that's not so different from making a String out of the fields and letting its hashCode() method deal with it... String conversions aren't cheap, but the base operation to fetch data takes something like 5000msec, and even with this unoptimized key-handling, cache retrievals take on the order of 25msec (from memory) to 100msec (from disk), so it's a tremendous savings.</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2007/01/java-how-to-use-complex-objects-as-keys.html' title='Java: How to use complex objects as keys in Ehcache (and Maps generally)'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=3435691556678116281' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/3435691556678116281'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/3435691556678116281'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-6529587448483632297</id><published>2007-01-12T18:09:00.000-05:00</published><updated>2007-01-16T15:49:57.363-05:00</updated><title type='text'>Diggler assists with "digg this" buttons on Blogger pages</title><content type='html'>&lt;iframe src="http://diggler.splattercast.net/http://digg.com/software/Diggler_assists_with_placing_digg_this_buttons_on_Blogger_pages" frameborder="0" height="115" width="100" align="left"&gt;&amp;nbsp;&lt;/iframe&gt;It's obviously desirable to place a "Digg This" button on a blog entry. &lt;br /&gt;&lt;br /&gt;Digg provides the script and instructions. Unfortunately these don't work on Blogger, because Blogger strips the JavaScript out of posts. Diggler makes it easier to use an iFrame workaround to get that precious "digg this" button onto a Blogger page.&lt;br /&gt;&lt;br /&gt;This page is using it :)&lt;br /&gt;&lt;br /&gt;Here's the link to &lt;a href="http://diggler.splattercast.net/"&gt;diggler.splattercast.net&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2007/01/diggler-assists-with-digg-this-buttons.html' title='Diggler assists with &quot;digg this&quot; buttons on Blogger pages'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=6529587448483632297' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/6529587448483632297'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/6529587448483632297'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-116856053251285641</id><published>2007-01-11T18:58:00.002-05:00</published><updated>2008-05-14T10:23:52.086-04:00</updated><title type='text'>Who's watching the watchers? (StopBadware blacklists a cartoon book site)</title><content type='html'>&lt;!-- &lt;iframe src="http://diggler.splattercast.net/http://digg.com/security/StopBadware_org_blacklists_a_Simpsons_fan_site_and_I_can_t_figure_out_why" frameborder="0" height="115" width="100" align="left"&gt;&amp;nbsp;&lt;/iframe&gt; --&gt; Capefeare.com is described as "The Ultimate Life in Hell Website" and contains some scans of Matt Groening's first work, Life in Hell (I was a huge fan - these hip cartoons ran in the Village Voice and other places in the unhip 1980s).&lt;br /&gt;&lt;br /&gt;Copyright issues notwithstanding, the site seems to have no evil intentions. It's not selling software. Afaik, it didn't try to install anything on my computer. &lt;br /&gt;&lt;br /&gt;The site has a straightforward description:&lt;br /&gt;&lt;i&gt;...Here, you'll find information about Matt Groening's first work ever, Life in Hell, which started in 1980 long before the Simpsons became popular. Here, you will find Life in Hell comic strips that came from magazines or newspapers that aren't published in any Life in Hell books! There are also Life in Hell references in the Simpsons/Futurama vice versa, lists of Life in Hell books (14 of them), and even Life in Hell wallpapers! This is heaven for any Life in Hell fan!&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;That sounded pretty good to me. And yes, it could be a lie.&lt;br /&gt;&lt;br /&gt;When I found this site through Google, the Google link didn't take me to the site. Instead, it warned me that I'd be taking a great risk if I opened the page:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The search:&lt;/b&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/google-lifeinhell.png" border="0" width="400" alt="groening 'life in hell'" /&gt;&lt;br /&gt;&lt;b&gt;The response (http://www.google.com/interstitial?url=http://capefeare.com):&lt;/b&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/capefeare.com.png" border="0" width="400" alt="Warning - visiting this web site may harm your computer!" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Not listed at StopBadware.org - what's the issue?&lt;/b&gt;&lt;br /&gt;The site is &lt;i&gt;not listed&lt;/i&gt; at &lt;a href="http://stopbadware.org/" target="other"&gt;http://stopbadware.org/&lt;/a&gt;, which at this writing has 412 sites in its catalog.&lt;br /&gt;&lt;br /&gt;So, I'm confused. I didn't study the site in depth, but I did take a look at the source code of the home page and can't find anything evil there. It has a some Google Syndication stuff. There is a stats link for the tracking site "extremetracking.com" and 1 pixel web bug for "extreme-dm.com". &lt;br /&gt;&lt;br /&gt;I hate that stuff, particularly the web bug, but "everybody uses" the damned things, and the presence of a web bug definitely doesn't make a page "badware."  Most important, web bugs and stats links don't "harm" a computer - the thing that StopBadware.org is supposed to be protecting us against.&lt;br /&gt;&lt;br /&gt;The site seems to be legit. There's even a large and active Simpsons fan forum, among other cues that &lt;i&gt;suggest&lt;/i&gt; that it's on the up and up. Again, it could all be a lie, but it doesn't seem to be.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Appeal. That's the only recourse.&lt;/b&gt;&lt;br /&gt;So, many questions remain: Who's watching the watchers? Who corrects the mistakes, and who pays for lost business when a commercial site ends up in being banned? And why is this site banned if StopBadware.org doesn't seem to know anything about it?&lt;br /&gt;&lt;br /&gt;This matter has all the marks of a coordination issue between the blacklisting source (stopbadware.org) and the information provider (Google), and nobody outside that circle can probably fix it.&lt;br /&gt;&lt;br /&gt;Here's what StopBadware.org says about making "an appeal" to be removed from the listings:&lt;br /&gt;&lt;i&gt;If you are the administrator of a website or the producer of software that has appeared in a StopBadware.org report and would like to speak with us regarding the evaluation of your site/software, please contact us at appeals@stopbadware.org.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;My e-mail to the organization's contact address, asking what's up with this, yielded a canned reply saying that they're receiving too much e-mail to be able to answer e-mail.&lt;br /&gt;&lt;br /&gt;So, if updates and corrections don't happen in a timely fashion, what can a little guy do? Sue Google and StopBadware.org (at Harvard's Law School)? Not likely.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Thanks, but...&lt;/b&gt;&lt;br /&gt;I commend everyone involved for trying to solve a terrible problem.&lt;br /&gt;&lt;br /&gt;But when the &lt;i&gt;only&lt;/i&gt; recourse for a mis-listed site is to send an "appeal" to a blind e-mail drop, I'm left wondering if more must be done to guard against incorrect listings. Getting the attention of StopBadware.org creates an unremovable global ban on a web site, damaging its reputation (deservedly in most cases, to be sure).&lt;br /&gt;&lt;br /&gt;But the good done in most cases cannot excuse errors, or undo the damage they cause, particularly when the well meaning people behind StopBadware.org are also very involved in monitoring, reporting about, and railing against net censorship in China and other places.</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2007/01/whos-watching-watchers-stopbadware_11.html' title='Who&apos;s watching the watchers? (StopBadware blacklists a cartoon book site)'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=116856053251285641' title='4 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116856053251285641'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116856053251285641'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-116697354405839395</id><published>2006-12-24T10:15:00.000-05:00</published><updated>2006-12-24T10:19:04.073-05:00</updated><title type='text'>Privacy breach at Emigrant Direct?</title><content type='html'>I'm on the road and can't write in much detail, but I just noticed that I have been receiving spams since before December 8, addressed to an e-mail address that is ONLY used with Emigrant Direct Bank (http://emigrantdirect.com).&lt;br /&gt;&lt;br /&gt;When I opened an account there, I created a separate e-mail address. They've never had any other, and there's no reason for me to have ever used this e-mail address elsewhere.&lt;br /&gt;&lt;br /&gt;Barring the live capture of traffic (c'mon nobody &lt;span style="font-style:italic;"&gt;really&lt;/span&gt; does that just to get e-mail addresses)... I can't think of any means that this address would have made it into spammers' hands .... other than an inside job or some kind of break in.&lt;br /&gt;&lt;br /&gt;I hope it's not true. I'm open to hearing plausible explanations, or from anyone who has had the same experience. &lt;br /&gt;&lt;br /&gt;I'm changing the address to see if it happens again.</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/12/privacy-breach-at-emigrant-direct.html' title='Privacy breach at Emigrant Direct?'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=116697354405839395' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116697354405839395'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116697354405839395'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-116620797608114023</id><published>2006-12-15T13:21:00.000-05:00</published><updated>2007-01-12T16:34:22.834-05:00</updated><title type='text'>Technology: Friendster acting desperate and dateless</title><content type='html'>&lt;iframe src="http://diggler.splattercast.net/http://digg.com/tech_news/Friendster_acting_all_desperate_and_dateless" frameborder="0" height="115" width="100" align="left"&gt;&amp;nbsp;&lt;/iframe&gt;Friendster wants me to be excited that one of my friends has updated something about his account, even if it's something as simple as updating his bookmarks. yeah. So it sends out e-mails like this complete with the picture and name of, well, a guy I have never met and don't know:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/friendsterdd-email.png" border="0" alt="" align="top"/&gt;&lt;br /&gt;&lt;br /&gt;How did that happen? Here in Cambridge there's a place called Inman Square, and once upon a time someone made a Friendster profile for "Inman". Lots of people list "Inman" as their friend. I am a friend of Inman. The guy in the e-mail is a &lt;em&gt;friend of a friend&lt;/em&gt; of Inman. That is, he's three steps removed from me, where the most critical link is not even a person. It's like this:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/friendsterdd-connectionsto.png" border="0" alt="" align="top"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusions:&lt;/b&gt;&lt;br /&gt;1. Considering how far Friendster is willing to stretch the definition of "Friend," there must not be much going on within the Friendster "community"... I receive very few of these announcements even though Friendster is making such a amazing leap to come up with anything meaningful to say to me. It's worse than a bad date where you just have nothing to say to each other... sometimes even bad dates will buy me a drink or dessert. Friendster just sends these sad emails, searching for a connection that's just not there.&lt;br /&gt;&lt;br /&gt;2. Inert catalogs of people and the real or make believe connections between them are somewhat academically interesting right up to the instant that they're built and deployed. Then, they're not very interesting at all.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://digg.com/tech_news/Friendster_acting_all_desperate_and_dateless"&gt;&lt;img src="http://digg.com/img/badges/91x17-digg-button.gif" width="91" height="17" alt="Digg this!" /&gt;&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/12/technology-friendster-acting-desperate.html' title='Technology: Friendster acting desperate and dateless'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=116620797608114023' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116620797608114023'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116620797608114023'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-116242610985446023</id><published>2006-11-01T19:03:00.000-05:00</published><updated>2006-11-01T19:11:12.696-05:00</updated><title type='text'>Security: Unanswerable Questions, Part 1</title><content type='html'>In the course of resetting a "forgotten" password (btw every couple of months when I try to use the Capital One website, my password doesn't work until I "reset" it).. I was required to also change my "security question" (no good reason for that requirement, when you think about it). Unfortunately customers are not trusted to choose the security question, so Capital One does it for you...&lt;br /&gt;&lt;br /&gt;How many people can answer this question? I cannot. I feel inadequate. And yet, I had to provide an answer to that question in order to get into my account. So, I made something up, which is even more secure than answering the question... but personal questions like this are still weird and horrible security risks over time.&lt;br /&gt;&lt;br /&gt;Here's a screen grab of the forgotten-password screen. The question's at the bottom of the image...&lt;br /&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/youngestchild.png" width="550"&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/11/security-unanswerable-questions-part-1.html' title='Security: Unanswerable Questions, Part 1'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=116242610985446023' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116242610985446023'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116242610985446023'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-116128202451981338</id><published>2006-10-19T14:10:00.000-04:00</published><updated>2006-11-01T19:03:11.710-05:00</updated><title type='text'>Finance: It's I-Bond time again</title><content type='html'>Every May 1 and November 1 the Treasury revises the interest rates paid on &lt;a href="http://www.savingsbonds.gov/indiv/products/prod_ibonds_glance.htm"&gt;I Bonds&lt;/a&gt;, which are a kind of US Savings Bond that is indexed to the rate of inflation... after a fashion, anyway.&lt;br /&gt;&lt;br /&gt;A major component of the bond's interest rate is the rolling 6-month inflation rate. Those numbers are released in advance, and September's 6-month inflation rate (just released) is used in the computation of I bond rates for November.&lt;br /&gt;&lt;br /&gt;The 6-month inflation rate for September was 1.55%.&lt;br /&gt;&lt;br /&gt;When that's cranked through the formula for setting the inflation-indexed part of the bond rate, it comes out to a bit more than 3.10%.&lt;br /&gt;&lt;br /&gt;Then the government adds a "fixed rate" set by the Treasury, that isn't as predictable. The fixed rate has never been below 1.00%. For the current period starting last May, it's 1.40%. &lt;br /&gt;&lt;br /&gt;FYI the fixed rate also adds a smidgen to the inflation-indexed part of the bond's rate, so if the fixed rate is 1.20%, and the inflation rate is 1.55%, the bond's interest rate would be 4.32% (not 4.30% as you might guess).&lt;br /&gt;&lt;br /&gt;Anyway, the rate for November 06 through April 07 I Bonds will be: 3.10% + fixed rate&lt;br /&gt;&lt;br /&gt;We can guess that the fixed rate will be somewhere between 1.00% (the historical low) and 1.50% (just above the current 1.40%) for a total interest rate of 4.12% to 4.62%&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;When to buy I Bonds&lt;/span&gt;&lt;br /&gt;Currently, I Bonds have the worst interest rate of any government security or insured investment. There is little reason to buy them before the considerable rate increase that's assured for November.&lt;br /&gt;&lt;br /&gt;The money that would buy those I bonds should be earning interest somewhere else right now, hopefully at 4.00% or higher (&lt;a href="https://www.emigrantdirect.com"&gt;EmigrantDirect&lt;/a&gt; is paying 5.05% in an MMDA cash account, for example).&lt;br /&gt;&lt;br /&gt;An optimal strategy for moving money into I Bonds at the new rate:&lt;br /&gt;&lt;br /&gt;1. Maintain cash designated for I bonds in liquid (e.g. MMDA) accounts paying at least 4.00% until bond purchase.&lt;br /&gt;&lt;br /&gt;2. Bonds pay interest for the entire month of purchase, &lt;span style="font-style:italic;"&gt;even when purchased at the end of the month&lt;/span&gt;, so near the end of November, extract cash from the high-interest cash account and purchase I Bonds at the new rate, capturing regular interest on the money for November, AND an entire month of I Bond interest.&lt;br /&gt;&lt;br /&gt;Considering the big increase in the rate, this approach probably works whether the accounts are tax-advantage (e.g. IRA) or not.&lt;br /&gt;&lt;br /&gt;Investors who need to create or stay in a tax-advantaged investment in the very near term should consider purchasing 13-week T Bills in the interim... this pushes back the I Bond purchase date a bit, but bonds always adjust their rates at 6-month intervals, so a bond purchased in December or January will earn six months' interest at the new 4.x% rate once purchased, and will have its rate adjusted every 6 months thereafter.&lt;br /&gt;&lt;br /&gt;Remember that I Bonds can't be cashed at all for the first year, and that a penalty of the 3 most recent months' interest is assessed if the bonds are redeemed in the first five years.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Followup: 11/1 Rate Announcement&lt;/span&gt;&lt;br /&gt;The fixed rate as of 11/1 remains at 1.40%, so the new rate is 3.10% + 1.40% + (a bit more, see the formula for details) = 4.42%.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://digg.com/business_finance/Finance_It_s_I_Bond_time_again"&gt;&lt;img src="http://digg.com/img/badges/91x17-digg-button.gif" width="91" height="17" alt="Digg this!" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://investment.suite101.com/discussion.cfm/218"&gt;ongoing discussion of I Bonds&lt;/a&gt; at Suite101.com is another place to chat about this kind of investment.</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/10/finance-its-i-bond-time-again.html' title='Finance: It&apos;s I-Bond time again'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=116128202451981338' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116128202451981338'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116128202451981338'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-116057990286466127</id><published>2006-10-11T11:03:00.000-04:00</published><updated>2006-10-11T11:18:28.323-04:00</updated><title type='text'>Process: Communication is the problem to the answer, Part 1 of N</title><content type='html'>Sure to be a recurring theme... communication breakdowns in everyday life...&lt;br /&gt;&lt;br /&gt;Found on MySpace yesterday. Is this even English?&lt;br /&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/myspace-added.jpg"&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/10/process-communication-is-problem-to.html' title='Process: Communication is the problem to the answer, Part 1 of N'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=116057990286466127' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116057990286466127'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/116057990286466127'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-115999515811241762</id><published>2006-10-04T16:49:00.000-04:00</published><updated>2006-10-05T15:53:39.773-04:00</updated><title type='text'>Process: Apple's battery puzzle</title><content type='html'>Apple's exploding battery return process includes a puzzle: fit a 3.75" label into a 2.75" space, without covering any of the necessary address information:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/batterypuzzle2.jpg" width="550"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Turn page over for solution:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/apple_solution.png" width="550"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://digg.com/apple/Apple_s_battery_return_process_contains_a_hidden_puzzle"&gt;&lt;img src="http://digg.com/img/badges/91x17-digg-button.gif" width="91" height="17" alt="Digg this!" /&gt;&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/10/process-apples-battery-puzzle.html' title='Process: Apple&apos;s battery puzzle'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=115999515811241762' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/115999515811241762'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/115999515811241762'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-115979965878232959</id><published>2006-10-02T10:28:00.000-04:00</published><updated>2006-10-02T10:50:18.160-04:00</updated><title type='text'>Process: EmigrantDirect's missing "delete" button</title><content type='html'>I wanted to remove a link between my Emigrant Direct savings and another bank account that I closed several months ago. So, I signed on (username, password, last 4 digits of SSN) and didn't know exactly what to look for, but assumed it'd be along the lines of "Accounts / Funding / Delete"&lt;br /&gt;&lt;br /&gt;Here's the screen:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/emigrant_screen.png" width="550"&gt;&lt;br /&gt;&lt;br /&gt;With no "delete" option in sight, I wrote to customer service... received this reply this morning (e-mail notification of "important message", then username, password, last 4 digits of SSN to sign on):&lt;br /&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/message_from_csr.png" width="550"&gt;&lt;br /&gt;&lt;br /&gt;It feels more and more like organizations publish instructions that "seem" correct, whether or not they really &lt;span style="font-style:italic;"&gt;are&lt;/span&gt; correct. In this case, there's no delete option, but the customer service rep presumes there should be... or it's missing from my screen due to some other business rule that nobody at the back end has told the front end about. In any case, it's a process failure on the bank's part... two people spent a lot of time working their way toward ultimately useless, redundant instructions.</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/10/process-emigrantdirects-missing-delete.html' title='Process: EmigrantDirect&apos;s missing &quot;delete&quot; button'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=115979965878232959' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/115979965878232959'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/115979965878232959'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-115747038206779372</id><published>2006-09-05T11:23:00.000-04:00</published><updated>2006-09-10T12:48:09.113-04:00</updated><title type='text'>Technology: Making digital goods valuable</title><content type='html'>&lt;span style="font-style: italic;"&gt;MySpace just announced that it will begin selling music by the thousands of bands represented on the site.&lt;br /&gt;In an online forum, someone asked:&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;"... what are the chances that the apathetic teen generation will want to actually "pay" for music? They don't seem to buy it from shops, or any other download store, so why will MySpace be any different?&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;My answer:&lt;/span&gt;&lt;br /&gt;That's an easy one... a music download represents the reduction of  the music to "product" in a very uninteresting form.&lt;br /&gt;&lt;br /&gt;Vinyl albums (ignore for the moment the necessity of the medium)  presented music with a containing context, back-story, and other  features that improved the experience of the music and that enhanced  the value of &lt;span style="font-style: italic;"&gt;owning&lt;/span&gt; one's own copy. The containers that black vinyl  comes in are themselves often appreciated, sans music, as  freestanding works of art and pop culture.&lt;br /&gt;&lt;br /&gt;CD's were the start of the downfall of the valuation of music, not  because of the digital music on the CD, but because the packaging and  surrounding materials failed to evolve into some album-equivalent for  the new format, and because so many packages were (and are) stripped down to nothing but a shiny disc in a plastic box. The containing experience, the context and the backstory were taken away, and the product lost some of its substance.&lt;br /&gt;&lt;br /&gt;I do not suggest that the album aesthetic should have been literally scaled down and dropped into CD packaging, but that new forms appropriate to the medium should have evolved, and did not... with notable exceptions, of course.&lt;br /&gt;&lt;br /&gt;And now, people are asked to pay money for the right to reproduce and  decode bits... just bits. There's not even an album cover to hang on the wall.&lt;br /&gt;&lt;br /&gt;I don't expect, going forward, that "pay for music" is going to have any traction all by itself. Bits aren't very interesting, or very personal.&lt;br /&gt;&lt;br /&gt;The demand of the industry is that would-be buyers must be re-educated to "value" these ephemeral bits as the industry requires them to. But people aren't going to learn an exception for one kind of good, and won't be "trained" to value bits as they might value an album cover with lush inside graphics, or a super-thin cell phone, or a nice pair of shoes.&lt;br /&gt;&lt;br /&gt;The problem with the industry's expectations - and here it acts like a parent disappointed in a child's sloppy skills at some task - is that people simply don't seem to work as the industry wishes they would. Perhaps a change in perceived valuation might happen &lt;span style="font-style: italic;"&gt;eventually&lt;/span&gt;. But it's still the case that such a change could not be imposed by fiat into any generation that's alive right now except by force. That's DRM: imposing unintuitive, unfamiliar behaviors on people whose worlds, other than as consumers of media, don't work that way.&lt;br /&gt;&lt;br /&gt;No industry can thrive with unhappy or confused customers forced into an arbitrary model of valuation for one kind of optional good. People get bored and move on, work around, or just ignore anomalies. That's why we have file sharing.&lt;br /&gt;&lt;br /&gt;The whole story isn't really very interesting. The same issues trashed the first wave of web-hype startups that priced their goods at $0 and found "those customers who value the product at $0." There was no reason for the startups to be surprised when, once prices were raised above $0, people went away.&lt;br /&gt;&lt;br /&gt;Bottom line: the difference between $0.00 and $0.05 is much greater, in terms of consumer behaviour, than the difference between $0.05 and $1.00. The difference in perceived valuation - by humans -  of cool sunglasses and some digital bits is likewise substantial.&lt;br /&gt;&lt;br /&gt;I've been working on some models for de-commodification of digital goods that I really oughtn't blast out in public just now, but would invite anyone with an interest to write me directly if you'd care to discuss in more detail.&lt;br /&gt;&lt;br /&gt;The secret of creating valuation in digital goods is no secret - the "goods" have to be converted (or mapped, or attached) to something that has intrinsic value to normal people, acting as they do ordinarily, without imposing arbitrary exceptions. Customer perception of value cannot be changed on demand of a producer. Rather, the nature of the goods must change to engender perceived value among potential customers.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://digg.com/music/Making_digital_goods_valuable"&gt;&lt;img src="http://digg.com/img/badges/91x17-digg-button.gif" width="91" height="17" alt="Digg this!" /&gt;&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/09/technology-making-digital-goods.html' title='Technology: Making digital goods valuable'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=115747038206779372' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/115747038206779372'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/115747038206779372'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-115644393886802714</id><published>2006-08-24T14:04:00.000-04:00</published><updated>2007-02-05T11:15:36.376-05:00</updated><title type='text'>Security: Why SiteKey Can't Save You</title><content type='html'>&lt;iframe src="http://diggler.splattercast.net/http://digg.com/security/Why_SiteKey_Can_t_Save_You" frameborder="0" height="115" width="100" align="left"&gt;&lt;br /&gt;&amp;nbsp;&lt;/iframe&gt;&lt;span style="font-style:italic;"&gt;The PDF version of this document including an abstract is available from Challenge/Response, LLC Labs at  &lt;a href="http://cr-labs.com/publications/" target="other"&gt;http://cr-labs.com/publications/&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;This overview of “Fraud Vulnerabilities in SiteKey Security at Bank of America” is written for a non-technical audience. Some details have been greatly simplified, and some new material is presented. Readers seeking more depth of coverage should consult the original paper, available at the above URL.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Although this report discusses SiteKey℠ at Bank of America Corporation, the general risks discussed here apply to all SiteKey sites including ING Direct and Vanguard.com, and they apply even more generally to any security method that relies solely on server-side interventions to detect and stop online fraud.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The product and the problem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SiteKey shows web banking customers a “secret image” – a little icon of a mandolin or a coffee mug or something else – that only the customer and the bank are supposed to know. Customers of SiteKey-using banks are told that if their correct secret image appears a purported bank web page, they can be sure that they are connected to the bank’s real web site, and can safely enter passwords and other secrets. Nobody could guess a person’s secret icon chosen from a pool of hundreds of images, right?&lt;br /&gt;&lt;br /&gt;Bad guys – unless they’re psychic – definitely cannot guess secret pictures with the accuracy needed to pull off phishing frauds. Unfortunately, the design of SiteKey means they don’t have to guess. Rather than guessing, a scammer can carry out a “man in the middle” attack in which an innocent person’s true SiteKey image is retrieved directly from the bank’s own servers, then displayed to the victim on a fake web site. Criminals who can write simple server software, or who hire someone to write such software, can create fake bank web sites that look just like the real thing, and that display correct, “secret” SiteKey images to unsuspecting victims. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://bbaadd.com/images/sitekey-10steps.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Defeating SiteKey in a ten step man-in-the-middle attack: in the end, the fraudulent server has the victim’s  user name, password, question-bypassing token and SiteKey image, allowing unlimited access to the account.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What this means for online banking customers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Even if you see your personal, “secret” SiteKey image on a web page, the page may not be legitimate. When entering your password or answering a security question, picture or not, you could be giving away secrets to an overseas crime ring, rather than logging on to a bank account.&lt;br /&gt;&lt;br /&gt;Some SiteKey installations strongly promote the safety of SiteKey. For example, Bank of America tells customers: &lt;br /&gt;&lt;span style="font-style:italic;"&gt;“If you recognize your SiteKey, you’ll know for sure that you are at the valid Bank of America site. Confirming your SiteKey is also how you’ll know that it’s safe to enter your Passcode and click the Sign In button.”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But that statement is not true all the time. It’s true most of the time, because most of the time a bank’s customers are not looking at fraudulent web pages. But “most of the time” is of little use when trying to detect the one instance out of a thousand when it really is a bad guy, and not the bank, at the other end of the connection. SiteKey can’t always do that, and the process of creating a fake SiteKey page is fairly trivial.&lt;br /&gt;&lt;br /&gt;Some people may be worse off with SiteKey than without it. Marketing language like “...if you recognize your SiteKey... you’ll know that it’s safe to enter your Passcode” could unintentionally help criminals by persuading security-conscious customers that the presence of the SiteKey image is absolute proof of the safety of a web page.&lt;br /&gt;&lt;br /&gt;An additional problem is that the things SiteKey protects – user names and passwords – aren’t very good security devices. In particular, they can be reused by a bad guy in a “replay attack,” which means simply that once stolen, they can be used over and over to access a victim’s account.&lt;br /&gt;&lt;br /&gt;Although some security systems resist replay attacks, few online services offer replay-protected authentication, so this vulnerability isn’t special. But Bank of America says SiteKey does guard against replays by requiring customers to save and answer personal “challenge questions” such as “What was the name of your first pet?”&lt;br /&gt;This sounds fairly safe: a bad guy holding someone’s user name and password is not likely to guess the name of the victim’s first pet before the system locks him out for making too many incorrect guesses.&lt;br /&gt;&lt;br /&gt;But a bad guy who has stolen a user name and password using a real SiteKey image – via the method described in the full paper – doesn’t have to answer challenge questions. When an attacker fools a victim into making a single login to his or her account though a fake site, SiteKey issues a “bypass token” – a code that turns off challenge questions altogether. The token can be copied and shared among many computers.&lt;br /&gt;&lt;br /&gt;Thus, by tricking a victim just once, an attacker picks up a victim’s user name, password, SiteKey image and bypass token, granting unlimited access to the victim’s account even though the attacker cannot answer the remaining challenge questions that should still guard it. Challenge questions provide little added protection against future access to an online account, and are compromised right along with the user name and password during man-in-the-middle attacks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Limitations of single-ended security&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Security methods that try to protect everyone from the server’s end of a connection are popular right now. Customers don’t have to be involved, and it is presumed, wrongly in my view, that they cannot or will not participate in their own protection beyond looking at pictures in web browsers. SiteKey appears to involve both ends of the connection, but as explained here, when a SiteKey image is sent blindly toward an apparently customer-controlled computer, there is no assurance that the image has reached an actual customer, or that it has done so so free of “man in the middle” tampering.&lt;br /&gt;&lt;br /&gt;Server-side security does stop some attacks, and makes others difficult. But the approach has gaps that cannot be filled by adding more server-side security. Security is a process issue more than a technology issue. Fixing half a process is a bad idea generally, and it’s a terrible approach to high-stakes security.&lt;br /&gt;&lt;br /&gt;Just as a landline phone call doesn’t travel over a private wire between two phones, there are no direct connections on the Internet. A web page sent from your bank’s web server to your browser is turned into “packets” that pass through many unrelated points along the way. A bank can’t lock down the path those packets travel between itself and you, because it doesn’t control the whole path from end to end. And some indirection in online communications is perfectly normal, so it can be difficult or impossible to tease out rare cases of malicious indirection.&lt;br /&gt;&lt;br /&gt;A bank’s web server also cannot control exactly what’s displayed on your computer screen. Web browsers are not televisions that show exactly what was sent: they interpret web pages and display them a bit differently on every computer. Something could be changed en route – such as when an attacker drops a real SiteKey image onto a fake web page – and the bank probably will not know anything about it.&lt;br /&gt;&lt;br /&gt;If a victim is led far astray – say, to a fake web page that does not involve a bank’s servers at all – the bank cannot detect or interrupt the fraud. SiteKey helps with this scenario, by forcing fraudsters to retrieve a victim’s SiteKey image from their bank’s real servers. If too many inquiries were to come to those servers from one place, alarms could be raised. However, such monitoring can be foiled with “bot nets” – clusters of thousands of Internet-connected home and office computers that have been taken over by criminals without their owners’ knowledge. Fraud-related connections made through such bot nets would not come constantly from one busy server, but would arrive a few at a time from many different computers, interfering with this sort of detection.&lt;br /&gt;&lt;br /&gt;Customers of SiteKey-protected banks are also apparently still falling victim to frauds that don’t even attempt to show SiteKey images. Customers need more basic assistance in detecting those occasions when a bank’s servers are completely uninvolved in a fraud.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What can customers do to be safe? Can anything more be done by banks?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Keep in mind that a bank using SiteKey is no less secure than any other online bank – it’s just not appreciably more secure than the others. Never let your guard down just because you see your correct, personal SiteKey image.&lt;br /&gt;&lt;br /&gt;The best tactic is to observe the same safety tips that apply to all other e-commerce:&lt;br /&gt;1. Never click links in e-mail messages &lt;br /&gt;2. Always type the URL of your bank’s home page into the browser, or save the bank’s login page as a bookmark &lt;br /&gt;3. Remember that banks and e-commerce vendors don’t send alarmist “your account will be closed” messages &lt;br /&gt;&lt;br /&gt;The Federal Trade Commission offers more tips at: &lt;a href="http://www.ftc.gov/bcp/conline/pubs/alerts/phishingalrt.htm" target="other"&gt;http://www.ftc.gov/bcp/conline/pubs/alerts/phishingalrt.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Although the connection between a bank and its customers cannot be made completely safe with security that’s added only at the bank’s end, this does not mean that frauds cannot be stopped. If fraud-stopping processes are engineered properly, frauds can not only be detected, but could made a virtual non-issue in everyday e-commerce.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://challengeandresponse.com/" target="other"&gt;Challenge/Response&lt;/a&gt; and other companies are working on end-to-end security methods that make e-commerce sites and their customers partners in safe online commerce. Customers should encourage their banks and other online trading partners to let them take an active role in their personal protection by using tools like these.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Making SiteKey less risky&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A few changes could make SiteKey installations less risky for customers. Among our suggestions are these:&lt;br /&gt;1. Financial institutions must never claim that a security system will provide absolute security. Customers need and deserve frank information about risks in the security provided by the companies they do business with.&lt;br /&gt;2. Customers should be given more control over the “bypass tokens” that disable challenge questions. For example, a customer should be able to tell SiteKey to invalidate all the tokens ever issued for his or her account. Then no computer would be able to access that customer’s account without a fresh, complete theft of the customer’s secrets.&lt;br /&gt;3. The Federal Trade Commission recommends that banks use SSL for all web pages. SSL encrypts the data between a bank and a customer, and activates the “lock” icon in browsers. SSL does not prove that a web page is legitimate. However, fraudsters move their fake sites constantly as their servers are discovered and taken offline, and SSL servers are difficult to move around. For that reason, most online frauds do not use SSL and probably will not use it in the future. A missing lock symbol on a page that should be secure would definitely signal trouble if banks always used SSL. But despite the FTC’s guidance, most banks still don’t use SSL for all their web pages, so the presence or absence of the lock symbol does not help customers discover frauds by this simple method.&lt;br /&gt;4. Banks may have to stop e-mailing their customers with messages that include links back to the banks’ web pages. Fake e-mails outnumber real ones by a big margin, and it is hard to tell a real e-mail message from a fake.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Notes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- SiteKey began as a product of Menlo Park, California-based PassMark Security. Passmark Security was acquired by RSA Security in April, 2006. As of July 2006, RSA was in the process of acquisition by EMC, Inc.&lt;br /&gt;&lt;br /&gt;- The information needed to understand SiteKey or to perpetrate frauds against its users can be acquired with little more than a web browser and an HTTP or TCP monitor such as tcpdump, or from the traffic logs of a web proxy such as Squid. No privileged access to servers or other devices is needed.</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/08/security-why-sitekey-cant-save-you.html' title='Security: Why SiteKey Can&apos;t Save You'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=115644393886802714' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/115644393886802714'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/115644393886802714'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-115340442568016373</id><published>2006-07-20T09:58:00.000-04:00</published><updated>2007-02-05T11:14:17.568-05:00</updated><title type='text'>Security: SiteKey isn't as safe as you may have expected</title><content type='html'>&lt;iframe src="http://diggler.splattercast.net/http://digg.com/security/Why_SiteKey_Can_t_Save_You" frameborder="0" height="115" width="100" align="left"&gt;&lt;br /&gt;&amp;nbsp;&lt;/iframe&gt;The SiteKey anti-phishing system used by Bank of America and other financial institutions is susceptible to a real-time exploit in which an attacker can create a fake web page that includes a victim’s correct, secret SiteKey image, text phrase and challenge questions.&lt;br /&gt;&lt;br /&gt;So... if you're looking at a web page that claims to belong to your bank, and it's even showing your secret SiteKey image, it's possible the page is not coming from your bank, but from an attacker trying to steal your login secrets. Really.&lt;br /&gt;&lt;br /&gt;My new paper discusses the problem, and explains why single-ended, server-side-only authentication used by SiteKey and other systems is not and cannot be an adequate protection against phishing or other online frauds.&lt;br /&gt;&lt;br /&gt;"Fraud Vulnerabilities in SiteKey Security at Bank of America" is here (376K PDF):&lt;br /&gt;&lt;a href="http://cr-labs.com/publications/SiteKey-20060718.pdf"&gt;http://cr-labs.com/publications/SiteKey-20060718.pdf&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/07/security-sitekey-isnt-as-safe-as-you.html' title='Security: SiteKey isn&apos;t as safe as you may have expected'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=115340442568016373' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/115340442568016373'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/115340442568016373'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-114700870643965976</id><published>2006-05-07T09:28:00.000-04:00</published><updated>2006-06-04T17:43:01.063-04:00</updated><title type='text'>Process: Privacy is painful</title><content type='html'>Capital One recently sent me one of those fine-print privacy-policy mailings and "opt out" instructions. This isn't because Capital One and the rest of the banks, brokers and credit card companies want to be good guys about our privacy. They're required by Federal law to do this once a year..&lt;br /&gt;&lt;br /&gt;... and they don't make it easy to get away from the "information sharing." First (and least important) they've hired Mrs Blaster to record the voice prompts -- it's loud, grating, and painful to listen to. Hear for yourself at 1-888-817-2970.&lt;br /&gt;&lt;br /&gt;... most important, opting out requires following this fast-talkin' monotone through lengthy rants about "opportunities" and "personalized offers" -- their attempt to get the caller to NOT opt out, by persuasion or confusion. The actual opt-out process consists of pressing the number "1" several times, at just the right moment.&lt;br /&gt;&lt;br /&gt;I'm posting this because I just noticed my phone had keypress history on its display, and I'm impressed with the amount of work I had to perform to tell &lt;i&gt;my bank&lt;/i&gt; to stop giving information about me to strangers, in relation to two accounts: &lt;i&gt;(account numbers have been replaced)&lt;/i&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;1 3 2 5 2 4 6 3 1 1 0 7 #&lt;br /&gt;1 1 1 1 1 1 3 3 1 5 6 4 8 1 1 3 9 #&lt;br /&gt;1 9 1 1 1 1 9&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The call lasted 6 minutes, and I'm pretty fast. Approximately 5 1/2 of the 6 minutes consisted solely of Mrs Blaster shouting about all the great stuff I'd miss if I opted out.&lt;br /&gt;&lt;br /&gt;One of the preferences, for one of the accounts, "has already been registered" and cannot be changed over the phone. I can &lt;i&gt;write them&lt;/i&gt; at a &lt;i&gt;PO Box&lt;/i&gt; to change that specific preference. Of course the recording didn't tell me whether I'm currently opted "out" or "in" for that preference. Let's do the math: Capital One has the compute power to track my account balances, to postal-mail and e-mail me when they want to sell me stuff, plus the ability to assist "trusted business partners" by giving my credit and account records to strangers... but Capital One can't read back a one-bit value related to something that obviously matters to me.&lt;br /&gt;&lt;br /&gt;After all that, I now must go to Capital One's preferences website at http://preferences.capitalone.com/ to remove my e-mail addressses. You're not allowed to do that over the phone.&lt;br /&gt;&lt;br /&gt;Apologies to readers, cuz this /is/ a rant and I don't have a solution, except to encourage others who confront this to vote with their feet. I hope that by cataloging these insults, more palatable alternatives to the kind of existence imposed by the Capital Ones of the world will become apparent. Capital One is customer-hostile, and won't sell me anything by annoying me. I'll be leaving soon.</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/05/process-privacy-is-painful.html' title='Process: Privacy is painful'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=114700870643965976' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/114700870643965976'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/114700870643965976'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-114611607941689865</id><published>2006-04-27T01:32:00.000-04:00</published><updated>2006-04-27T02:46:06.756-04:00</updated><title type='text'>Finance: You can panic now, or panic later</title><content type='html'>TheStreet.com contributor Terry Savage is &lt;a href="http://thestreet.com/university/personalfinance/10281480.html" target="other"&gt;advising people to load up on I Bonds&lt;/a&gt; before a likely rate decrease on May 1.&lt;br /&gt;&lt;br /&gt;Her math is approximately correct, but I'm not sure she really understands why that is. She carries on too long about the "complexity" of the Fed's methods in calculating I-bond interest rates, and  not nearly long enough in explaining the justification of a panic purchase. The Fed's methods do involve multiplication and addition, but it's not "calculus" as she calls it. Most important, there are gobs of alternatives that will pay more interest than an urgent I Bond purchase... with none of the panic.&lt;br /&gt;&lt;br /&gt;Here's the deal: I Bonds pay interest based on a two-part formula. Part of the bond's interest rate is set when the bonds are issued, and part of the rate is adjusted every six months (November 1 and May 1). For example, I bonds issued between Nov. 2005 and now have a 1.0% fixed rate, and a 5.7% inflation-adjusted rate for a "composite rate" of 6.73% (the extra .03% comes from the Fed's formula - look it up below). This is a very high rate, relative to other investments. It occurred because the two sampled months had a big disparity in their Consumer Price Index figures. It's a bit of an anomaly actually... but because I bonds are designed for long-term investment, these things do average out in the end so while the Fed's methods are vulnerable to short-term blips, over the long haul, it's all rational.&lt;br /&gt;&lt;br /&gt;By the way, if you want to know more about I Bonds and rate calculations, the US Treasury publishes &lt;a href="http://www.publicdebt.treas.gov/sav/sbiinvst.htm" target="other"&gt;comprehensive online resources&lt;/a&gt; that will tell you all you need to know, so I won't fill this space with empty repetition of their work.&lt;br /&gt;&lt;br /&gt;Savage is flapping her arms yelling "buy I bonds now!" because it seems inevitable that the May 1 adjustment will see a big decrease in I bond rates. The previous rate was high because of a blip, and inflation over the recent 6 months was low. I Bonds are inflation-indexed, so... inflation goes down, I Bond interest rates go down. &lt;br /&gt;&lt;br /&gt;Savage says investors must lock in that darling 6.73% rate now.. today... Friday... Monday's too late...&lt;br /&gt;&lt;br /&gt;I'm pretty sure this is lousy advice. Savage has failed to consider alternative investment vehicles for money that would go into those I Bonds, and she isn't counting the costs of disposing of the bonds if the interest situation doesn't improve after a year.&lt;br /&gt;&lt;br /&gt;The problem is that once the rate drops to 2.0%, that 6.73% over six short months hasn't earned the investor very much money, but has created a lot of bother with rules about selling the bonds, possible interest penalties, and worst of all, a panicky "buy now" imperative.&lt;br /&gt;&lt;br /&gt;The effective interest rate on these bonds for the first year, using her figures (assuming the May 1 rate will be 2.00%) is (6.73% + 2.00%) / 2 = 4.365% or a bit lower if you sell the bond at the end of the year, due to penalties. There's an example below with real numbers filled in, to illustrate where the money comes from and goes.&lt;br /&gt;&lt;br /&gt;So, an I Bond might earn you 4.365% for year 1, free of state and local taxes.&lt;br /&gt;&lt;br /&gt;What alternatives exist to I Bonds that don't have the uncertainty and the assured low rate? That's an easy one. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Other government securities&lt;/strong&gt;&lt;br /&gt;Monday's 6-month rate for US Treasury Bills was 4.919%. T bills are state/local tax free, and the investment terminates after 6 months with no penalties or other obligations. You can also ease your way into these over several weeks if you don't want to commit to a single moment's rate -- T bills are auctioned every Monday.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Good old CDs&lt;/strong&gt;&lt;br /&gt;BankRate.com is showing &lt;a href="http://www.bankrate.com/brm/rate/high_ratehome.asp?params=US,416&amp;product=15" target="other"&gt;one year Certificates of Deposit&lt;/a&gt; paying up to 5.35% APY. Assuming a 10% tax rate on the interest and no deductions to offset it, that's an effective after-tax yield of around 4.815% in a simple, insured form that terminates after a year, and the banks will be there to take your call today, Monday, or whenever you are ready.&lt;br /&gt;&lt;br /&gt;To recap, the &lt;i&gt;best case&lt;/i&gt; for I Bonds is a 4.365% return... the &lt;i&gt;worst case&lt;/i&gt; for a simple 1-year CD considering 10% tax overhead is 4.815%, and the &lt;i&gt;worst case&lt;/i&gt; for T bills is 4.919% (give or take a few small decimals).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;There is no reason at all to buy I Bond right now&lt;/strong&gt; considering the looming rate reduction. Even those investors who want to stay in Fed securities would be better off moving into T bills or CDs for the near term, then revisiting the I Bond situation in October when the Consumer Price Index that drives the November variable rate will be known. For a tax-advantaged account such as an IRA, the interest rate is all that matters, so CDs make even more sense than T Bills or Bonds, if your IRA custodian offers high-rate CDs.&lt;br /&gt;&lt;br /&gt;I think the Fed will raise the fixed rate at least a little to get it off the 1.00% mark where it's been stuck for more than a year. They can't sell this product if it's only earning 2.0%, and the fixed rate is totally at the Fed's discretion. In the past it has dropped as much as 1.00% from one 6-month period to the next. And the fixed rate has not been bumped up since the Fed's interest rate increases began... it's overdue.&lt;br /&gt;&lt;br /&gt;Repeating... explore alternatives... take a deep breath... no need to rush into anything...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;EXAMPLES, rounded generously&lt;br /&gt;&lt;br /&gt;I Bond purchased April 27, 2006:&lt;br /&gt;$10,000 @ 6.73% for 6 months (April-Sept) = $340&lt;br /&gt;$10,340 @ 2.00% for 6 months (Oct-March 2007) = $110&lt;br /&gt;Total for first year: $10,450&lt;br /&gt;If rates don't increase, you'd want to sell this bond&lt;br /&gt;Penalty for selling after 1 year: $55 (last 3 months' interest)&lt;br /&gt;Net after 1 year: $10,395 (Sell) to $10,450 (hold) free of state and local taxes&lt;br /&gt;&lt;br /&gt;Certificate of Deposit, 1 year at 5.30% APY&lt;br /&gt;$10,000 @ 5.30% = $10,530&lt;br /&gt;10% taxes = $105&lt;br /&gt;Net after 1 year: $10,425 after 10% state and local taxes&lt;br /&gt;&lt;br /&gt;T Bill (using 4.919% rate from April 24 for 6 months, and guessing 4.5% worst case for the 2nd six months)&lt;br /&gt;$10,000 @ 4.919% for 6 months = $246&lt;br /&gt;$10,246 @ 4.500% for 6 months = $231&lt;br /&gt;Net after 1 year: $10,477 free of state and local taxes</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/04/finance-you-can-panic-now-or-panic.html' title='Finance: You can panic now, or panic later'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=114611607941689865' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/114611607941689865'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/114611607941689865'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-23989220.post-114424485318251260</id><published>2006-04-05T09:44:00.000-04:00</published><updated>2006-04-05T09:52:46.166-04:00</updated><title type='text'>Process: insecurity in Internet email-to-fax services</title><content type='html'>(This has also been submitted to &lt;a href="http://catless.ncl.ac.uk/Risks" target="other"&gt;Risks Digest&lt;/a&gt; and may appear there in edited form).&lt;br /&gt;&lt;br /&gt;Dallman Ross (&lt;a href="http://catless.ncl.ac.uk/Risks/24.23.html#subj6" target="other"&gt;RISKS-24.23&lt;/a&gt;) wrote about the possibility of "&lt;a href="http://en.wikipedia.org/wiki/Joe_job" target="other"&gt;Joe-jobbing&lt;/a&gt;" someone via the email-to-fax services that only authenticate the e-mail "from" address when sending (expensive) faxes.&lt;br /&gt;&lt;br /&gt;The risks &lt;em&gt;appear to be&lt;/em&gt; mitigated such that real financial damage to a target is impractical, but the devil is in the details as I've just confirmed in examination of a large fax/voicemail service:&lt;br /&gt;&lt;br /&gt;- This service (and JFax as well) once offered concerned customers (me) the option to place a text password inline at the top of the email body,  eg: {password="SendMyFax007"}. However, I noticed the password string sometimes leaked into the sent message, and its absence didn't always prevent a message going out. This "feature" doesn't seem to be publicly documented and was never user-configurable. I don't know if it's still available.&lt;br /&gt;&lt;br /&gt;- The service under study this morning seems to update its authentications after a huge delay, if at all. I removed all references to an account's formerly authorized email address via the web page at 8:14am and replaced it with another. At 9:17am the service is still sending faxes received from the deleted e-mail address. So, even removing a compromised address doesn't stop the attack immediately. Inexplicably, it's referencing a "free trial account" now (the account was started as a free trial years ago). But it's charging the faxes against a real account, and logging them there.&lt;br /&gt;&lt;br /&gt;- The services top-up a debit balance held at the service, then run it down before charging the credit card again. If you keep a low refill amount, this would throttle an attack, but the victim remains dependent on the company to "do the right thing" to reimburse.&lt;br /&gt;&lt;br /&gt;- There is no way to stop faxes going out, and no way to remove stored credit card data or to stop the auto-charging of same. Attempts to erase credit card details yield a "you have entered an invalid credit card number" error. The service's contract requires that it be allowed to store credit cards and auto-charge both fixed monthly fees and per-use fees.&lt;br /&gt;&lt;br /&gt;- The company cannot be easily reached by telephone, even in an emergency.&lt;br /&gt;&lt;br /&gt;- The service allows account holders to disable notification of sent faxes. Presumably large account holders (those topping up with $100 or $250 per occurrence) thus wouldn't learn about an attack quickly. Thus the most valuable accounts (with high balances) are perhaps the least likely to catch an attack quickly.&lt;br /&gt;&lt;br /&gt;- The service allows broadcast faxing on approved accounts, the fax equivalent of a spam relay.&lt;br /&gt;&lt;br /&gt;I discussed these risks in 2002 with an architect of JFax, who is also a principal at another fax service. His (anonymized) comments below shed some light on their reasoning. He, and JFax before, considered this design necessary and reasonable given the limitations of both technology and customers. He's troublingly confident about the utility of "tracing an email back to where it came from" as a means of solving the problem.&lt;br /&gt;&lt;br /&gt;Quote from fax service architect, Feb. 20, 2002:&lt;br /&gt;&lt;em&gt;"Yes, we've been through this one about a thousand times in the past. When we started (the service) back in 1996, we used to make the sender place their customer ID and password in the subject line of the email. We lost a lot of business because most folks could never figure out how to send a fax.&lt;br /&gt;&lt;br /&gt;"We do send a confirmation to your email address every time a fax is sent on your behalf, so if someone is scamming your account, you should know fairly quickly. Please inform us immediately and we'll credit your account and trace the mail trail back to find out where the email came from.&lt;br /&gt;&lt;br /&gt;"This is a small risk that we have to face in order to do business in our market. Fortunately it hasn't been too big a problem (stolen credit cards seems to be a much more real issue for us to deal with). In my dealings with J2 (JFax)... I learned that they really hadn't had any issues with this type of issue either. We'll keep our eyes open though."&lt;br /&gt;&lt;/em&gt;</content><link rel='alternate' type='text/html' href='http://bbaadd.com/blog/2006/04/process-insecurity-in-internet-email.html' title='Process: insecurity in Internet email-to-fax services'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23989220&amp;postID=114424485318251260' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://bbaadd.com/blog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/114424485318251260'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23989220/posts/default/114424485318251260'/><author><name>Jim</name><email>noreply@blogger.com</email></author></entry></feed>