May 30, 2011

Fisher Random Chess

Over the weekend, I've had the opportunity to play a lot of online chess, and many of those games are still ongoing. I've been fortunate to win 12 out of 12 of my first games, but know that my streak will end soon. I have had great fun playing these particular games, because they are of a strain known as Fisher Random Chess or Chess960. The pieces on the back row are randomly placed (ensuring only that there is one bishop of each color). It appears that many of my opponents were caught off guard by the games, as comments bear out. However, it is spelled out in the game invites, so it's not like I was hiding anything from them. I play over at chess.com, which is also reachable through Facebook. If you'd like to play a game, send a challenge over to rgautier.
What I really enjoyed about these games is the absence of preplanned openings. The games are extremely tactical in nature, and the spirit of the fight is well preserved in this version of the game. You are on your guard from the first move, and find yourself constantly searching for the kill. The games are exciting with plenty of gotchas waiting around the corner. Focus too much on strategic movement and the quick tactic will take you out quickly. If you play chess and you haven't played this variation of the game, I strongly urge you to try it. And if you have an iPod or iPhone or iPad, download the free app from chess.com and invite me to a game. I'd love to play you.

May 20, 2011

Success and the CEO

There are some corporations in the world that are destined for success. Others flounder to even make a dent. What makes the difference between these companies? Is it their products, their opportunities, or their personality?

The CEO of an organization is CRITICAL in establishing the personality of a company. It is this personality that makes all of the difference in how the company acts, whether the company succeeds, and whether the company is a star. And that personality is usually linked to what job the CEO is doing (no, not how good of a job...WHICH job).

Let's take some examples for discussion:

Apple Corp - Steve Jobs is primarily a usability tester and product visionary. Think about what Apple is...the results of user-focused device development.

Facebook - a company with thousands of function points and in constant growth...the product of the fanatical software developer that leads it - Mark Zuckerberg

Microsoft - what it used to be vs what it is now - great example of a company that used to be driven by madman software developer Bill Gates. Now being driven (to its grave?) by Steve Ballmer - no longer focused on generating software to meet business needs - now focused on what? Ray Ozzie is probably asking that question as he reinvents himself. Exactly - you have no idea, because neither do they. Steve seems more worried about being the consultant than what kind of company they are.

IBM - Stuffy and exacting - definitely a company led by college-trained engineers.. Too bad that's not what the general population wants or needs or they'd have a more complete market share. With open source biting into their marketshare more and more every day, they're turning into consultants rather than tech leadership...just like MS.


May 05, 2011

Draft Position: Is Possession 9/10ths of the Law?

I have had debates with friends before about 'Who owns your data?' I would like to think it out and document my own position here (in my blog). The position leads from the hypothetical situation wherein a user (you) uses a shared public infrastructure (the Internet) to communicate with an associate. The question is whether the government has the right to request that communication from the third party, whether or not they need a warrant to do so, and whether the third party has the right to release this information without your permission (or notification).

In the 'old' days, telephone companies were given something called common carrier status. Effectively, they were defined as an infrastructure that provides a common good to the governed populace, and with this definition, they received a limitation of liability for the information carried over their wires. In return, the good of the populace was protected by giving the government certain rights, including the right to judicially reviewed wiretaps. There's a lot more to the story, but one of the important tenets of this service was that the phone company disavowed any control over the communication being carried over their wires. Anyone would be permitted to call anyone else, and use that electrical connection to transmit anything they wanted as long as it fit into the provided capability of the phone line. In my opinion, the giving of common carrier status effectively made the information that was carried over the Public Telephone Network (PTN) 'community property'. With the way the wiretapping laws were configured, there was a judicial process for law enforcement to gain access to the community property in order to protect the common good. In the end, everybody wins.

In the old telephone networks (at least prior to Electronic Switching Systems [ESS]), when you were connected to the party to whom you were speaking, you had a direct connected wave channel from your equipment to their equipment. Analog switching gear channeled and/or amplified the energy waves created by your microphone and delivered it out the other end to a speaker on the other end of the transmission. Transmission of this energy wave was not stored to be forwarded later. Equipment in between had no memory of your communication and, unless your line was tapped, could not reproduce the transmission. ESS changed this by digitizing communications between parties so that it could be digitally multiplexed with time, but the 'store and forward' in ESS was effectively nanoseconds of storage. While this may have offered technical challenges or even eased the mechanism by which wiretapping was done, it wasn't enough of a difference to say that any line was crossed.

Enter 'the Internet' - The Internet is more than a 'series of tubes'. It is a complex inter-relationship between millions of pieces of computer equipment over publicly and privately funded switched networks. The very way in which these networks operate provide a fundamental difference in the way they connect from the old PTN. One of the most basic changes is that the communications between two endpoints is not 'immediate'. Packets are stored and forwarded all along the communications path for a variety of purposes, such as routing, multiplexing and even at layers above the individual sessions (news servers, email servers, etc) we store more than just packets. Where previously all communications took place in singular sessions between parties, now communications involve multiple channels of connectivity, and even more store and forward of whole sessions and data sets from multiple sessions. Obviously, the rules have to change to meet this new architecture.

Because users don't normally think about the difference between, say, email and a telephone conversation, it is easy enough for them to have an opinion that these should both be treated similarly. After all, they are both a 'private chat' with a colleague, right? While that opinion may be far flung, as a technical user I must disagree with it. The email systems that most people utilize involve a store and forward mechanism in which we place our private thoughts in electronic form, and then deliver them, along with some addressing information, to a third party - normally a for-profit business, but your email may vary depending on who you work for and how you get email services. The email is not (normally) wrapped in any encoding that would hide it from casual sight. If someone were to ask for an analogy, I would have to give it the analogy of a postcard, mailed through the USPS - with the exception that their Internet email service is not provided by a government agency sworn to secrecy.

Technically, any network maintenance operations that may be ongoing at your provider or troubleshooting of the system, could innocently run across your 'private communication'. And here's the rub. That email server that you've entrusted the communication to, is owned and operated by a party that has not yet been removed from liability. In fact, I believe it is legally plausible to think that if you were to transmit illegal materials over the wire (such as child pornography), the provider in question has a duty and liability requirement by law, to report the illegal materials. If they do not, they could be legally responsible for the consequences of continuing to store and deliver that material. Because of this liability, and until this liability is removed, it is my opinion that your 'private communication' is no longer private as soon as you entrust it to the provider for delivery.

Common Carrier status carried with it the lifting of liability from the telephone companies. Yet, that same status has NOT been granted to providers of electronic services, such as email, ftp, or web services. Information that is stored 'in the cloud' for any period of time to permit its transfer between two parties puts the ownership of that information clearly in the hands of the provider, and that ownership is tied to their liability for the information. But, can a company disavow liability and grant privacy to the user? Does it have to?

How much liability there is can be a grey area. Before 'the Internet', we had bulletin board systems, both corporate and private. Some famous corporate ones were Compuserve, Q-Link (later AOL), and a little company called Prodigy. Prodigy attempted to market itself as a 'family-friendly' service, and actively participated in the culling and monitoring of their bulletin board services. Each board had an active administrative staff who was responsible for monitoring and editing the content of the boards through deletion of articles they felt were not in line with their Terms of Service (TOS). This 'active participation' put the company directly in the line of fire in a libel case (Stratton Oakmont vs. Prodigy) when a user made libelous comments that were not removed by the provider. In two different cases (Cubby vs. Compuserve; Blumenthal vs. Drudge), the providers (Compuserve and AOL) were not held liable, with the main argument being that Compuserve and AOL do not actively cull content.

Does this mean that Compuserve would NOT be held liable if it found child pornography on its servers and failed to report and/or remove it? Certainly not. Active liability for all content is not the same as due care (or passive liability). Law is (or should be) based upon common sense, after all.

So this gets back to the original question - does the provider have the right to share your data with the government without your permission? With liability out of the way, let's discuss distribution rights. For store and forward communications such as email, you've delivered the content to the provider for delivery at a later time. (We should probably separate emails from packets/sessions where communication is intended to be party-party in a session [such as a web session or telnet session].) You have effectively granted your ISP some distribution rights, arguably distribution rights to the intended party, and through use of the communication channel, rights to view the communication in the course of that delivery, including standard operations and maintenance.

If the ISP is not an active participant or editing publisher (such as Prodigy or say, a republisher like The Huffington Post or Associated Press), then do you own the distribution rights or did you give those up when you transmitted the data to the ISP?

A distribution right is defined as "Exclusive right of a copyright owner to distribute copies of the original work (book, illustration, photograph, record, software, etc.) to the public by sale, lease, or rental." Let's examine your communication under the guise of copyright. According to bitlaw, distribution rights have a limitation called "first sale doctrine": "... However, the distribution right is limited by the "first sale doctrine", which states that after the first sale or distribution of a copy, the copyright holder can no longer control what happens to that copy..." When software came along, Congress had to limit this doctrine to allow the owner to control rental of computer software because of the nature of how software is used (In many cases, it involves copying the software onto the target computer for installation). Does distributing a copyrighted email to someone grant them the right to distribute however they please? If so, then without reproduction rights, they would have to ensure that the original copy of your email were deleted, and never delivered to the recipient, if it were to be delivered to, say, the government.

While I am not a lawyer, it certainly seems that there may be something to this argument that, at least by copyright laws, the provider has your permission only to deliver (AND THEN DELETE!) your email message. Of course, you entrust that they will deliver it to the intended party. However, by making secondary copies for delivery to other parties, they may be in breach of your reproductive rights under copyright. Those same rights probably extend to your 'Sent Items' folder, wherein you are the author, and copyright holder of those works. By enabling your sent items folder, you are agreeing to a single reproductive right for the limited purpose of delivery back to yourself.

So, in conclusion, I think it should be argued that while the providers have limited liability scope to report illegal activity when uncovered, they do not have the rights to distribute or copy your communications to be shared with law enforcement agencies. In fact, I might argue that a valid warrant would be necessary for them to do so without incurring responsibility and liability for damages to you. I would also argue that they do not have the rights to give up the information that is being seized without deleting their copies of the materials without being liable for reproductive rights of materials they do not own.

Interestingly, when I began this discussion with myself, I probably swung the other way in my opinion. I'd be very interested in arguments for and against this position. Feel free to share it (and link to it) with others.

May 01, 2011

Next Up for the Mac - Fixing the Mouse

Ok - the next thing to do with the Mac Mini - fix the damned mouse acceleration. The default mouse sensitivity for Snow Leopard is 'dog slow' - and the Mac Os X Settings panel doesn't let you adjust the sensitivity. I was getting hand cramps trying to move the mouse where I wanted, even with the mouse speed set to very high settings. So I did a little research and ended up with a program called USB-Overdrive. If you're going to get a mac and you have a mouse from the last two decades, you're going to want this program to adjust your sensitivity. I have it adjusted so well that yesterday I sat down at the machine, and actually forgot I was using the Mac while web browsing.

On the XCode front - I still haven't dedicated the effort I should into learning it all like I should. I've been distracted by other things. I downloaded a program from the App Store called Art Text 2 Lite which I used to make some icons for 'Chess Rep' - my target application for the iPad. I also played with the .xib file tool a little bit and compiled some test apps and ran them to get a feel for XCode, although I still haven't delved into the actual code.

April 28, 2011

More on the Mac Mini

Ok, Flash is a dog on this mini - it probably has a lot to do with it being a memory hog for the app I'm running (Cityville, yo!) - and the fact that the mini I got came with 2GB of memory - so off to order more memory - $78 later and I've got 8GB of RAM on order. It looks like Apple made the memory super easy to upgrade in the latest mini - just rotate and pop off the underside of the mini and slot in the RAM - older models look like they were designed to be NOT upgraded.

Also installed another app from the App Store - Trillian - logged in and all my IM accounts came over without a hitch. XCode 4 finished installing last night and I walked through the HelloWorld example (although I was kind of tired so I'll do that again tonight as well as look at building my first iPad app with it).

God, this monitor is huge - I really had no concept of just how big a 24" screen is - but truly, sitting this close on my desk this screen fills up my field of vision quite readily, and then some.

April 27, 2011

The Mac Adventure - installing XCode

Ok, so the XCode installation package was on the DVD under Optional Installs - installing it now but I also expect to have to upgrade it on first run. Need to figure out how to download the iPad SDK to get started without having to pay for the iOS Developer package - will pay when I'm ready to test my first app on-device. Hrm, XCode started up - going to walk through the Tutorial for workflow now.

Also, changed the damn mouse speed - This monitor is fucking HUGE when you're scrolling across it. I have a 24" 1920x1080 HDMI monitor I got for $160 at Best Buy (another open box - never buy anything new if you don't have to - saved $30 and it has maybe 2 rub/scratches in the finish that I'll never see without looking for them)

XCode appears to be version 3.2 - not only out of date for the 3.x line - but version 4 is also out - downloading and installing from the App Store now - paid the $4.99 for the new version - but it's taking its good sweet time - I understand it to be several GB in size - so this could indeed take a while. Main complaint of people is that the whole thing has to be downloaded every update and that it's a slow download. That's something Apple needs to fix. There should be some patch download capability - and maybe even some P2P - I have a pretty fast connection and it's crawling.. At this rate, I won't be up and coding tonight unless I want to use the older version already installed.

The Mac adventure - continued

Using Safari just now - realized suddenly that there were no tabs button - how the hell do you open another tab? A quick Google search shows me just where to go - whatever did we do before the hive-mind that is the indexed Internet?

Just tried to pay my Gas bill at Washington Gas's online service center - a nobrainer for all browsers on the Windows framework - but apparently Mac users are left out in the cold - downloading Chrome for Mac now....

Day...saved. Paid my gas bill with my mac - was booting up the PC just in case I didn't get it working, but I'm going to shut it off again - try to stay committed.

Silly developer - just found the system settings staring me in the face on the bottom task bar right next to where Chrome stuck its' shortcut. The display settings were right there. Yes, it will take a while to get used to all of this. Next question, do I buy xCode for 4.99 or do I go ahead and bite the bullet for the $99 iOS developer package? Probably going to bite the bullet - amazing what tax return cash does to your financial sensibilities.

Stupid 'End' button on the keyboard doesn't..Mac issue or keyboard issue? As a keyboard junkie - that's going to be ANNOYING!

The adventures of a new Mac user - Part I

Today, I purchased on open-box Mac Mini. I have never owned a Mac. I am, however, an experienced computer user. I have used, at one time or another, many operating systems from the Timex Sinclair and the TRS-80's OS to the Windows and Linux(es) of today. So, I am unafraid of different experiences. And for one use case that has been itching in my mind, I need a Mac to do it right. That use case, my friends, is iPad development.

Now, it has been a long time since I have really slung code. My last real coding (aside from some VB automation inside Office) was C code development for a MUD (one of those text games that no one plays anymore, but a few sick and devoted people still play). [FoxMUD if you care to check it out.] Any-who - the development itch is one that never really goes away, and in my current role as Enterprise Architect, I don't get to do much coding. I'm more concerned with processes, products, alignments to reference models and trying to make sure I stay ahead of the customer in the daily fire drill. So, last night I watched "The Social Network" and the itch started up again - poor Mark Zuckerberg - so misunderstood. To hell with being rich - it's not the money - it's the idea of doing something REALLY FUCKING COOL...that's what I miss about programming - doing something no one's done before with a piece of code. Introducing new capabilities in software and having the users go 'oooh, ahhh' and 'Can you make it do this....too?'

Well, as those of you who know me, know....I have a new iPad 2. And it has some apps that I like, and others I think can be improved on. And I'm impulsive...and the mac mini was on sale because it was an open box...and here I am writing this first blog post. I'm going to write about my experience changing over to the Mac OS, and my foray(s) into xCode.

So, Day 1 - Realize that the open/close window buttons are on the left, not the right. Also, pushing the red 'X' doesn't actually QUIT the application - had to restart Safari to install Flash (GOTTA HAVE MY CITYVILLE FIX) and closing it/opening it didn't work after installing the plug-in.

Am using a two-button/scrolling mouse - my favorite one - don't judge - Apple purists will tell me that it's a crutch - but I still have to use two-button mice all day long, so this will ease the transition - besides - this way I don't have to buy a second mouse - I just reuse what I've got for my laptop.

After installing Safari, was suffering from seizures due to the monitor flicker - looked up in Help how to change Display Settings - STILL have no idea how to get to Displays preferences through any normal means - because I just opened it straight from the Help - have seen this in Windows Vista help too - and I thank whoever invented the Application shortcuts built into help files....changed monitor to 1080p instead of 1080i and flicker is GRATEFULLY gone.

Next step will be to fully register for Apple Developer and get xCode....will blog later.

It's Behind a Firewall

Between my neighbor's house and mine is a firewall - an actual firewall, not a computer thing, but a wall that is designed to prevent fire from spreading from his house to mine. The wall is there to protect both of us from the cross-risk of someone having their house on fire. This is obvious by the name 'firewall'. The computer domain has taken the name of this engineering construct and uses it to describe a virtual wall used to protect one network from another. Unfortunately, it has become, to the uninitiated, a term that describes some kind of absolute security.

Just because there is a firewall between my neighbor's house and mine, I am still not free to set my house afire. I would still be liable for any damages this might cause my neighbor. Similarly, I would be remiss to install substandard electrical wiring, or (according to my HOA) have a barbecue grill that uses charcoal, rather than gas. Yet, in the parlance of computer networking, it has become vogue for some parties to address security concerns of cross-domain risk with 'It's behind a firewall, so there's no risk'. Even when the sentence is uttered without those last four words, they're usually contextually assumed.

This is just wrong. Just because you have a firewall does not mean that the system you're installing behind the firewall presents no potential risk to the Enterprise. Each and every system comes with built in risks, and not only are firewalls INTENTIONALLY porous, but they're only good at preventing very wide-ranging risk. They're of virtually no use when attacks come in through the holes you've punched in it, or when you bring the risks in with you around the side (through the back-end or through a sneaker net).

One of these days, someone is going to say 'No worries, it's behind a firewall' and I am going to physically pull out a lighter and set them on fire (ok, not really, but I'll think about it).

April 20, 2011

DropBox, Security, Encryption, FIPS 140-1 and Illusions

Lately there has been some brouhaha on the Interwebs about the lack of proper security on the DropBox application. Users are rather incensed that they were told their data was securely encrypted, only to find out later that the encryption keys themselves were store in the databases at DropBox in a recoverable manner.

One of my pet peeves is when people ask me whether a product is FIPS 140-2 compliant. The question is so specific, and means one very specific thing is implemented correctly, the algorithm that implements the AES encryption and decryption activity itself. However, the question does not touch on whether or not the implementation of that encryption is done correctly. FIPS 140-2 compliance is something I would expect any graduate programmer to be able to accomplish in an implementation of AES.

What is missing is the secure implementation and design of the product that utilizes the AES algorithm, most notably the secure implementation of the key storage. For simplicities sake, imagine that AES is a specification of lock mechanism and encasement. When you lock up your secrets in this encasement, it is protected by one thing - the key. Where do you put the key to protect it? How do you share the key with others who may need it? How do you store it in a place that you can get to it from whatever device you're accessing it from, including the web and mobile devices.

Users of Dropbox made an assumption that the security of the encryption key was secured by the password that protected their Dropbox account. I, myself, made the assumption that Dropbox uses an algorithm such as PBKDF2 to create the key to protect my files at Dropbox. Of course, there was a point that I missed - if Dropbox were to do this, my files would be unrecoverable if I ever forgot my password. And obviously, some engineer at Dropbox had figured on this as well, because Dropbox can do password resets while my data can still be recovered. And thus, the slippery slope begins....security weaknesses introduced to account for the weakness of the weakest link.....the fallibility of the user. Dropbox implemented a solution whereby they store my key for me rather than make it unrecoverable. SHOCK!! DISMAY!! There's even more to the story, because other compromises were made as well in the interest of convenience, according to other accounts I've read, including generating unique security keys for each device that allowed them to authenticate to my dropbox without even my current password. This last piece, I don't even see as 'user-convenient' because it puts the onus on the user to remember to lock out any device that they've lost control of (and they may not even know they've lost control of the device!!).

The illusion of security in products that the mainstream uses is often touted as secure and covered with all kind of marketing like 'FIPS 140-2 Compliant'!! However, the reality is that true security will always get back to the security of the key. If you want to evaluate the true security of a device or a security implementation, there's a simple checklist the consumer can ask himself when buying the device:

1. Identify the 'key' that gives you access to your stuff.
This could be a password, a 'smart card' or a SecurID token.

2. Can I store my key to allow me to access without asking me every time?
The answer needs to be NO. If your devices store your key without you having to enter it (or provide something external like a secure token), the key isn't really the key, or it's replicated in the implementation. You don't want copies of your key being stored.

3. If I lose my key, is there a mechanism for me to recover my key that does not require another, perhaps more secure, key?
The answer needs to be NO. The key needs to actually be a part of what is needed to unlock the lock. If you can lose your key but still access the data later without it, it wasn't really the key - it was a token to get your key. Key Recovery is a whole practice in and of itself. Sure, we can encrypt and store your key info - but now we need to make sure that's locked up just as tight, if not tighter than the original data.

4. Can key recovery be done without my participation (providing the more secure key)?
The answer needs to be NO!! Again, if your data can be unlocked without you providing the key or an alternate key - it's not really the key at all! It's just a laundry ticket to pick up your key.

Those four questions are a good start - and there's even more to think about for advanced users (e.g. Can the key be used on the data without the system itself?)

Don't fall for the illusion - ask yourself these questions to get a feel for how secure your 'encrypted' data is. Then ask yourself which you want, convenience or lock-it-up-and-swallow-the-key security. If history is any indication - you'll choose convenience. I may still be a DropBox user, but my truly private data is encrypted before I store it there. Let's hope I don't get Alzheimer's and lose THAT key.