It does, you know. You just have to get it hot enough.

Tuesday, July 15, 2008

Spimewatch: Mass Sensor Networks

The amateur radio crowd have been doing interesting things with the Internet and its precursors for awhile now. One of my favorite examples is the proliferation of online receivers, radios that have their audio out and controls connected to a web site. You can transmit on your radio, tune into their radio, and see if your signal makes it to some remote location. The downside is that receivers can only tune to one frequency at a time, so you have to take your turn if the receiver is in an interesting location. Also, they’re typically not very portable, requiring large antenna installations and reliable Internet connections, but they’re still a remote sensor you can use to collect information.

This morning I discovered Pachube, a “service that enables people to tag and share real time environmental data from objects, devices and spaces around the world. The key aim is to facilitate interaction between remote environments, both physical and virtual.”

In the space of a few moments I looked at the river conditions in Bastrop, TX; humidity and “leaf wetness” in southern California; and data from various sensors in a home in Japan.

Ok, so poking around on a website is fun and all, but Pachube also will feed this data out. All I need to do to have my automated lights turn on and off in sync with those in the Japanese living room is pull a data feed from Pachube then use something like Arduino to drive the hardware.

What will be really interesting is when there are enough tag readers attached to something like this to track arbitrary objects through the network. Online package tracking will seem quaint by comparison.

Technorati Tags: , , ,

posted by jet at 13:42  

Sunday, October 29, 2006

Tracking Transience

Hasan Elahi, an art professor who was put under some intense scrutiny after the 9/11 attacks, has decided to let everyone know where he is at all times, what he is doing, and so on. He fashioned an electronic bracelet of sorts from a mobile phone and wears it continually while photographing and documenting details from his daily life. All of this information ends up on his website in realtime, so not only the FBI, but anyone else can track his every move.

There’s a brief article on Elahi over at worldchanging, I found this on Schneier’s blog.

Technorati Tags: ,

posted by jet at 13:23  

Friday, September 29, 2006

Science Fiction or Design?

Something one can read either as science fiction or a twisted user scenario:

I saw the best minds of my generation destroyed by Google

Los Angeles, 2026

Ted got busted because we do graffiti. Losing Ted was a big setback, as Ted was the only guy in our gang who knew how to steal aerosol spray cans. As potent instruments of teenage social networking, aerosol spray cans have “high abuse potential”. So spray cans are among the many things us teenagers can’t buy, like handguns, birth control, alcohol, cigarettes and music with curse words.

I tried hard to buy us another spray can. I’m a street poet, so really, I tried. I walked up to the mall-store register, disguised in my Dad’s business jacket, with cash in hand. They’re cheap, aerosol spray cans. Beautiful colours of paint, just screaming to get sprayed someplace public where everybody has to see what’s on our minds. The store wouldn’t sell me the can. The e-commerce system simply would not allow that transaction. The screen just went gray and stayed gray.

That creepy “differential permissioning” sure saves a lot of trouble for grown-ups. Increasing chunks of the world are just… magically off limits. It’s a weird new regime where every mall and every school and every bus and train and jet is tagged and tracked and ambient and pervasive and ubiquitous and geolocative… Jesus, I love those words… Where was I?

Full story at

Technorati Tags: , , ,

posted by jet at 09:56  

Monday, July 10, 2006

The Future of Data

[More thinking-aloud about how tags and spimes will change things. I’m also in the middle of Everyware and am trying to finish this while reading that.

I said I’d be writing about security next, but I ended up thinking about about the future of data in terms of public policy and societal issues regarding collection and ownership of data. Security is in the queue, but I need to figure out the requirements and context before I think about the implementation.]

The Future of Data

A world filled with RFID tags, smart tags, readers, and spimes reveals a vast amount of easily accessible data not previously available to the individual. A store currently has an idea of its inventory, shrinkage, and daily sales, but I as a shopper wouldn’t know any of that information. A movie theatre would know how many tickets it sold while as a guy watching a movie I can only do a rough count of empty seats and make a guess.

In the near future you or I will be able to know these things, should we choose. We will be able to wander through a public place and automatically collect vast amounts of information in a form easily used by computers instead of tediously taking notes and making spreadsheets.

Think about the world we’re about to inhabit:

  • Any object with a more than nominal monetary value has some sort of RFID-like tag used to track the object from creation thru the point of sale and afterwards into its usable lifespan. Not only will the merchant you bought a shirt from know you bought a shirt (and link that information to your customer account), they’ll know every time you wear it past or into their store. You didn’t just buy a shirt, you gave them a fair amount of useful marketing information when you used your credit card to buy the shirt and even more if you ordered it online and had it delivered. If you physically enter a store, the odds are that they’ll also be able to determine who made all the other items on your person and possibly what those items are, then tweak their sales pitch at an individualized level.
  • Your PDBD is blasting out data to any device that queries it or broadcasting in cleartext to every device in range. So is everyone else’s, and simple proximity mapping will make it trivial to plot each step by each person through public and even private spaces.
  • Readers are everywhere: every business or home has one at the entrance, and most have several inside that operate on different classes of tags using domain specific requirements. The door reader looks for all tags, the inside reader looks for local tags or those that meet a limited set of criteria. Think inventory tracking vs. employee tracking, then imagine every object worth more than a few bucks have its own unique serial number and tracking device.
  • Really, readers are everywhere: every commercial delivery vehicle with have some sort of tag reading mechanism to track packages between being picked up and delivered. Reading the contents of those packages will be trivial, and delivery firms will not just have databases of who ships how many packages and to whom, but the contents of those packages will be known.
  • Spimes and other types of smart objects (smobjects? smaarbjects?) are collecting data from their surroundings and reporting it back to their owner or the general public. “Data” is any information that can be collected and stored: location, time, temperature, number and type of other tags and spimes seen, data those smart objects have transmitted, etc.
  • Proto-spimes are doing this now: A case of expensive wine can know if its been stored at the correct temperatures, a laptop will know if it’s been dropped, a shipment of fragile goods can know if it’s been subjected to improper environments. Take a look at Maxim’s iButtons for an inexpensive, common, off-the-shelf (COTS) example of the technology required to track environments of packages or equipment.

How Your Role Will Change

The technology to collect, store and analyze vast numbers of RFID or other smart tags is about to become very accessible to the masses, very portable and very easy to hide. RFID and other inexpensive tagging mechanisms won’t have the sort of security that a full-on spime has and will be easily readable by just about anyone. (To keep things simple, I’m going to lump publicly readable data from spimes in with data from RFID, bar codes, and other insecure tagging mechanisms and refer to them all as “tags”.)

In a short time — months or a couple of years at most — it will be trivial to build an advanced tag monitoring system that not only scans all nearby tags but call also passively eavesdrop on other scanners as they communicate with tags. Your involvement in the participatory panopticon will go from one of passive participation to active engagement. You no longer have to be just another data point, you can also be a collector, analyzer and interpreter of data and a distributor of information.

What happens today if you wander in with a pad of paper and start writing down a store’s inventory and pricing based on what’s on the shelves with the intent to post it to a web site? You’ll probably get kicked out of the store because most stores have policies about what data you can collect while you’re on their premises. (Try it at your local Wal-Mart if you don’t believe me.)

But what if data collection isn’t obvious? Today, you get kicked out of a store because you are obviously collecting data they don’t want you to collect. What if it just looks like you’re idly browsing through the racks and shelves? Will they kick you out for simply browsing?

In the near future, anyone will be able to wander in to a store with a PDA in their jacket or backpack and a tag scanner up their sleeve and start reading tags on any nearby merchandise. To any human, they will look like someone idly wandering around the store — the typical bored person waiting on their spouse to finish shopping. Perhaps a nearby tag reader would throw exceptions about tag reads that they didn’t request, but would any human get notified in a reasonable amount of time?

Data as Property

Who “owns” the data you just collected with your portable tag scanner and who can do what with it? Is it yours? Does it belong to the store? Facts can be copyrighted, is the state of the store’s inventory a fact that can be somehow put under copyright? Or do you now own a database of facts that you collected in a public space for which you own the copyright?

I can stroll up and down every aisle in a small store at the mall in a matter of minutes, plenty of time to scan not only the inventory on the shelves but the overstock under the shelves and maybe what’s in the back room. If I’m lucky I’ll also get data on other customers in the store and possibly record a few purchase transactions. (One would hope that purchase transactions use some sort of strong cryptography, but I can imagine plenty of systems that use weak or no security in the interests of saving a few pennies.)

When you enter a store and a monitor at the door reads all the tags on your person, what can they do with that data? Do they own it? Do you own it? If I sit in the middle of the food court at the mall with my laptop reading data on all the passersby, what can I do with that data? How about if I monitor the reads being performed by the scanners at the doors of businesses? What if I monitor my competitor’s reader across the way? Next time you’re in a shopping mall, notice at how close together doorways and cash registers are, how many are within line of site of one another, and how many of those businesses are competitors who would benefit greatly from this sort of data.

Data as Property Today. Here’s a question to ask yourself: “Who can collect what data in my household and what can they do with it? Do you have a DVR in your house or a digital cable box? Do you have other consumer electronics devices in your entertainment center that can contact a remote server using phone or broadband? How do you know these devices aren’t recording the clickstreams of all your remotes, not just the one that each obeys? There’s no magic that says “only send my remote control infra-red beam to a specific unit”, anything in your entertainment center is going to receive an IR signal from any remote you use and could be collecting your remote presses and sending them off to a third party. If you’re concerned about the answer to this questions, read the privacy policies for the services you subscribe to or contact the companies providing you service.

Hacking the Near Future

So far we’re just talking about COTS technology and most (all?) of these things can or will be done with commercially available tag reading software and hardware. If you want to start writing your own code or hacking your own hardware your data collection and distribution options are greatly increased.

Today you can build an extended range RFID “skimmer” that can poll tags well outside the normal operational range of a few centimeters (See Kirschenbaum and Wool, “How to Build a Low-Cost, Extended-Range RFID Skimmer”.) Yes, it’s bulky and obvious, but you could probably hide one under the counter at a cash register, near a doorway in your business, or in the backseat of your car.

As you’re collecting data from tags in the world around you, you’ll probably pick up a few that are authentication mechanisms of one sort or another. These are useful for replay attacks — when someone copies an authentication token and re-uses it at a later time without the owner’s permission. In the RFID and token world, this could be anything from a toll road account to an employee door badge.

Current RFID and Smart Tag Security. WIRED has an excellent article on RFID hackers worth reading. My personal experience with tags is similar: I have worked with some physical security systems based on RFID-like technology that did everything in the clear and with no authentication. Duplicating a specific card’s ID number was simply a matter of sniffing the transaction at the door reader or using a “rogue” door reader attached to a PC to query a card. No authentication was used by the card to verify the identity of the reader making the request and the server had no way of knowing if the card ID number presented was from the original card or a physical duplicate. Imagine security based on responding with a correct answer to a simple question:
“What is your employee ID number?”
“Access granted.”Do you feel comfortable knowing that any person who said “12” could open the door to your building? Or would you prefer some sort of verification along the lines of, “Only current employees of the company who answer the question with their secret serial number” or “Only people I trust who know today’s serial number” to be used as conditions for access?

Crimes, Hacking and Pranking

A high powered tag pinger that could query all tags within a meters feet would be a handy thing for me to have if I were of a criminal bent. Instead of guessing which bag to steal from a passerby, which locker to break into at the gym, or which package to steal from a delivery truck I can just wander around scanning things until I find a likely target.

From the other side of the data equation, what’s to stop someone from making bogus tags or making a device that responds as if it were a tag but with bogus data? Someone might notice me physically replacing the bar-code on an item in a store or trying to remove a security tag, but will they notice the RFID emulator in my courier bag? Will they be able to tell that I used it to drown out the tags of any items I have with me as I go through the checkout line or walk past the security scanners at the door?

Theft is a criminal act for which I can be prosecuted, but what if I just send out bogus data with no intent to commit forgery or fraud? Me and a few dozen of my pals looked like poorly dressed people who wandered in to a high end store, looked at a bunch of expensive merchandise and walked out out without buying anything. However, the tag reader at the door logged us as well dressed individuals carrying laptops or expensive cameras. When the store owners sit down to analyze all their demographic data, they’re going to be looking at some very bogus information that will probably lead them to make improper business decisions.

If I suspect my competitor across the way at the mall is snooping on tag activity at my store, what’s to stop me from generating false tag activity? Is it (or should it be) illegal to broadcast fake transactions or other data knowing that my competitors will collect and interpret that data?

Some Questions

These aren’t new issues, but the technology that makes business more efficient makes everything else equally efficient. Hacking, crimes, invasion of privacy, &tc all become more efficient as well. We need to answer some new questions and come up with new answers for old questions:

  • What is data?
  • What data can be owned and what is in the public domain?
  • Who can own data?
  • What safeguards does an owner of data have to take to prevent that data from being exposed to the public?
  • How is ownership of data determined?
  • Who can control data collection?
  • Who should control data collection?
  • What rights are there to collect data, if those rights even exist?
  • What rights are there to prevent collection of data, if those rights even exist?

When I started writing this, I was thinking about securing tags, proto-spimes, and spimes by first determining the requirements created by their environment. I quickly realized that many of the questions I was asking were questions about public policy, laws and social agreements, not questions about technology. The security questions are important but they’re simple engineering problems and will be easily solved once we know the requirements. The questions about how public policy, legal and social agreements will change are much harder to answer than the security questions; our answers will have profound impact on what our world looks like in the coming decades.

Technorati Tags: , , ,

posted by jet at 21:24  

Tuesday, May 16, 2006

The Human Proto-Spime

[More thinking out loud about what I could do with an SRM. I haven’t started Everyware yet and might edit this after I’m finished. –jet]

So what happens if I drag around a slightly tweaked spime retrofit module and intentionally pre-load it with data and a set of data redistribution rules? As it collects and redistributes data about me over time based on rules I create, how does my life change for the better or for the worse?

More generally, “What happens when I have detailed control about a relatively large amount of my personal information and fine-tuned granularity about how I share that information with the world around me?” Humans in every cultural and temporal collection have had control of simple sets of personal information and how it is distributed via clothing, hairstyles, makeup, tattoos, &tc. These primitive coding systems change over time and require some amount of interpretation and authentication on the part of the receiver. Some subcultures have specific coding mechanisms that are highly-specialized and that don’t translate well outside the community and may not even be recognized as a code by outsiders. Flagging via the hankie code is subtle and probably not recognized (much less decoded) by anyone not familiar with the schema and symbols it uses. These subculture-specific encoding mechanisms require a shared set of interpretations between the sender and receiver and the mechanisms can easily be misinterpreted or not interpreted at all when in the incorrect context. Flagging means something in the Castro neighborhood of San Francisco, but does it mean anything in Tokyo? If I’m visiting friends in New York City or London, are there clothing colors, styles or brands I should avoid if I don’t wish to be thought a gang-banger or a chav?

So let’s say I take a SRM and tinker on it a bit to give it a few additional capabilities:

  • broadcast selected information on a routine basis
  • respond to broadcast queries (a request to any SRM within listening range) from individuals or entities with specific information
  • respond to directed queries (a request to my specific SRM) from unknown but potentially trustworthy entities
  • respond to directed queries from specific authenticated individuals or entities
  • receive and translate schemas and protocols used by other entities, SRMs and spimes to local, internal schemas and protocols

With these changes I can broadcast data and and any needed translation mechanisms or schemas to other individuals or my surrounding environment in order to correctly identify (or obscure) my identity, likes, dislikes, and needs. I can warn emergency services personnel about existing medical conditions, tell a building I enter about my preferred working environment, or broadcast a authenticated message from a local holder of power that I am under their protection. I can make my availability and orientation known in a singles bar without identifying myself and the bar can collect that information in order to allow in more of the appropriate mates and fewer of the inappropriate ones.

I don’t want everyone to automatically know everything about me or even to know my identity — I want select individuals, businesses, chartered organizations or the public to each know something specific about my patterns, personal tastes and status within the local reputation hierarchies.

My SRM has become something new — a Personal Data Broadcast Device (or PDBD, as I’m feeling a bit acronym happy) that distributes data about me of my choosing to the world around me. Design and implementation of the PDBD is probably more important in the world of The Participatory Panopticon than it is in the spime-full world, but it is built on technology and infrastructure similar to that required to develop proto-spimes.

When I turn on my PDBD, I become a proto-spime. I am now interacting with my environment in a more active and controlled fashion than a typical passive proto-spime or spime, but I still collect, process and redistribute information. In addition, I can dynamically define classes of information and who gets that information in reaction to my environment or new circumstances. (To be a proper spime I would have to have been designed (genetically engineered) from the start with the expectation I would exhibit spime-like behavior. Perhaps I would be able to provide power from my nervous system and collect and store data using my existing senses, but that’s a topic for a future entry.)

When I go to Deathguild, I want the DJs to know what songs I like and I want the bartender to know how often order drinks for groups of people and that I have a history of tipping generously. Neither the DJs nor the bartenders need to know who I am, merely that I am physically present and what my likes, dislikes and buying habits are. Knowing who I am can increase their level of trust or lead to further personalization of my experience, but it is not required for a basic level of interaction. I can make my identity known to entities that I trust or already know, but the general environment won’t have access to that information.

The data I — a proto-spime — distribute isn’t always originated by me but it is data I want to distributed. Not only will I broadcast information of my own selection, but I will also make available data about me generated by others. If you’re a bartender you shouldn’t trust me when I say I’m a great tipper, but you will probably trust other bartenders in the neighborhood. You’ll be able to verify that I didn’t generate a fake message from them about myself using a authentication and nonrepudiation mechanism.

Cryptography 101: authentication and nonrepudiation, the ability to prove that a message was created by a specific entity and prevent them from denying they created it, is an important security concept in both the physical and digital realms. In the physical realm, these tasks might involve a signature, seal or watermark on a document that is both difficult to forge and known to the recipient. In the digital realm, the electronic copy of a document is “signed” using a “signing key” and a cryptographic algorithm like ElGamal or RSA. The “signature” is then attached to the document similar to a footnote or cover-sheet being attached to a physical document. Anyone receiving the document and signature can verify that the document was created by the owner of the signing key and that the message has not been altered since its creation. See Schneier’s Applied Cryptography for more on this subject.

So while I have enough control over my PDBD to delete information I don’t like or don’t want, it is near-impossible for me to fake favorable information about me purporting to be from a known third party. An entity deciding whether or not to act upon data I provide would validate that data thru one or more trust networks that would range from ad-hoc, neighborhood level associations to government or international bodies running trust hierarchies. (Verisign and other companies currently operate trust hierarchies that use SSL certificates to authenticate web sites and web browsers.) Trust networks used by entities to validate my information would be independent of one another and each would likely operate by its own levels of trust mechanisms and standards. A trust network might be a collection of neighborhood bars that share information on good tippers, local power structures (law enforcement or street gangs) that provide identification or reputation references, a government organization or corporate body providing authentication services, or even mutual data sharing programs operated by airlines, hotels and other travel services. (More fodder for future entries: What happens when a trust mechanism requires that I allow negative data to be included in my digital reference if I want to use their service? Do I become a “blank” rather than let Trans Global Airlines note that while I’m a million-mile member I also tend to drink to excess and make trouble with the flight attendants? If I’m a blank for other reasons, will people assume I’m trying to hide negative information?)

When it comes to non-authenticated data, there’s little reason for third parties to automatically trust the data I send out about myself. The Deathguild DJs could compare my “favorite songs list” I broadcast to what I actually bother dancing to or reject the list entirely because it is too divergent from what other club members are reporting as their favorite songs.

“Broadcast” vs. “Transmit”: I’ve intentionally used the word “broadcast” instead of “transmit” in this entry for a very specific reason — the technology described here relies on radio frequency (RF) communications, and RF is by nature a “broadcast” technology. Unlike a switched TCP/IP network that can easily route data directly between two systems never to be seen by any other system, broadcast RF can be seen by any system within a given distance. This distance is determined by transmitter power, antenna size and design, and the environment in which the communication takes place. The 802.11 protocol operates in the 2.4Ghz range and can easily penetrate walls, vehicles, and other line-of-site obstacles that we humans perceive as limits on communication. Given that anyone can listen in on broadcast packets, proper encryption of communication channels is a must for Everywhere or the spime-full world.

I won’t broadcast most information without a specific, authenticated request, and I certainly don’t want to reveal sensitive personal information to untrusted sources. I don’t want a random person on the street to know my shopping preferences or how much I’m willing to spend on an item; my age, ethnicity, religion or sexual orientation; or my medical history or any physical disabilities. Who I decide to trust, what data I will share, how much certainty I require that they are who they claim to be, and the ramifications of a failure in the trust mechanism are questions we will need to answer.

entity making request type of data to be shared amount of certainty required to share costs of authentication failure
family, close friends, personal physician or legal counsel sensitive, private information about me or my family: medical records, real-time data relaying physical or emotional information possibly more than can be implemented in this mechanism; at a minimum prior personal contact massive legal, financial, or emotional damage, public humiliation or embarrassment
businesses with existing legal relationships sensitive personal buying preferences or information: size, medications taken, account number or related information prior personal contact minor to major legal, financial, or emotional damage, public humiliation or embarrassment
businesses with no existing legal relationships or prior contact personal contact information and general buying preferences: preferred colors, brands, flavors, items I’m interested in buying verification by trusted third party varies: a failure results in disclosure of data I would have given to a potential business contact but not necessarily made available to the general public.
non-commercial, chartered organizations: churches, political groups, social organizations semi-personal data related to volunteer availability, meeting schedules, religious or social affiliations or preferences prior personal contact; in some cases verification by trusted third party disclosure of religion, political or social preferences, cost depends on context in which the information is disclosed and to whom
government agencies collecting demographic or aggregate data anonymous demographic information verification by trusted third party limited, this is information someone could determine by visual inspection or other external measurement systems
emergency services, first responders medical information (if injured), useful skills (if available as a volunteer) verification by trusted third party exposure of personal medical conditions or personal information
individuals with an existing “relationship index”; friend, coworker or neighbor ranked %0-%100 depends on my personal preferences prior personal contact, no third-parties involved depends on the information shared
untrusted / unknown depends on my personal preferences depends on the information shared and who I’m sharing it with depends on the information shared

PDBDs, Spimes, and Their Security

The request, authentication and data broadcast interactions discussed so far are automatic and happen without my explicit knowledge or approval. A spime doesn’t check with an owner to verify each request, it operates under a set of rules that define how to validate a request and how to respond to valid and invalid requests. This request mechanism is the only acceptable way to move data off of a spime. Any spime (not just a PDBD) carrying truly sensitive data cannot be designed or implemented in a way that allows for direct reads under any circumstances. If my PDBD is lost, stolen, or simply not under my immediate physical control, another entity should not be able to access the information stored within unless I have previously approved of that access. That is to say, there is no “root” or “administrator” level of access that will reveal sensitive data stored on a PDBD or spime, only a query from an authorized third party (as predetermined by me) will cause information to be revealed. (I’m handwaving over the question, “How do I install rulesets that prohibit access but prevent an attacker from replacing those with rulesets that allow access?” More material for a later entry.)

The requirement that a spime be completely “locked down” requires a great amount of trust in the algorithms and implementations used, as a vulnerability would be easily exploitable without the knowledge of the owner. It is critical that every component of a spime fail safely, not operate on bad data, not have backdoors and do or not do all the things we require out of our most secure computing environments. I would suggest that only open source code and public algorithms be used to implement SRMs and spimes and that significant effort needs to be put into developing authentication mechanisms for executables and how they are installed. The OpenSSL, OpenSSH and OpenBSD projects are a fine example of how secure software for communication channels and operating systems can be developed and distributed for use by third parties.

What I, the Human Proto-Spime, Cannot Do

Based on our earlier distinction between passive collection and dissemination of data vs. active decision making, I as a human proto-spime will be limited in what actions I can perform with my PDBD. Many of the actions one assumes I’d do with a PDBD would likely be performed using a different, more personal object I carry with me or access remotely. For example, I cannot use my PDBD to:

  • vet a third party by generating a signed statement about them
  • engage in business transactions involving money or goods stored on the PDBD
  • collect, relay or transmit audio or visual streams for rebroadcast
  • view media, access the InterWeb, or perform other communication tasks

This “separation of powers” pays off in a number of ways. The simple SRM used as the basis of my PDBD will be cheaper to manufacture and will not create a security risk if lost, stolen or otherwise compromised. Anyone who finds a lost PDBD might not be able to determine the owner, even with the help of a third party or possibly the owner themselves. Rather than try and identify the owner, it would be more efficient for the finder to wipe the device and use it themselves or return it to the manufacturer to be wiped and reused.

It is quite possible that a PDBD would be embedded in some other host device I own, but unless it could be easily removed I might not be as likely to carry it around. My wristwatch or a piece of jewelry I wear every day is a more secure and dependable place than a part of my mobile phone, laptop or PDA that I have to carry in a pocket or bag; that I can lose; or that I might replace or send in for repair.

Technorati Tags: , , ,

posted by jet at 19:00  
Next Page »

Powered by WordPress