Apple Files Patent for "Tamper-Resistant Code"
freaktheclown writes "The US Patent and Trademark Office has revealed that Apple has filed patent no. 20050246554 for a "system and method for creating tamper-resistant code." The system is presumably for use in Apple's Intel version of its Tiger operating system."
For those who are interested, link to the original application publication.
Why didn't I think of that?
Seriously, this idea sounds so silly, it will only invite more developers to hack OSx86 in their spare time. With OpenDarwin already ported to x86, unless they make serious changes to the OS X kernel, I doubt any measure of TPM will be able to keep people from homebrewing their Macs now.
Seeing how Apple's business model revolves mostly around hardware sales, I can understand why they'd go to such lengths to keep people from installing it on any computer they want.
Havoc Video
It's called "tamper-resistant" because the Titanic was unsinkable.
"Ancillary does not mean you get to rule the world." --U.S. Circuit Judge Harry Edwards, speaking to the FCC's lawyer
1. A method comprising: receiving a first object code block; translating the first object code block into a second object code block, wherein the translating includes applying tamper-resistance techniques to the first object code block or the second object code block; and executing the second object code block.
Sounds like a checksum would fall into that category.
I do believe HAL 9000's tamper resistant code kicked into high gear around hour 2 of 2001.
"I'm sorry Dave, I can't let you do that"
They didn't say tamper-proof. They said resistant. The scheme they describe would make it rather hard to alter they bytestream.
The Titanic was really sink-resitant...
What do you know I wrote a novel
My first reaction to this subject was "there is no code which cannot be cracked, given enough time and determination."
After looking over the article, the method reminds me of Synapse Software's SynCalc (and related) programs for the 8-bit Atari computers. They had some real good code obfuscation, and they managed to do it in less that 48K of RAM! I never did get as far as figuring out whether they were using more than one level of a virtual machine, code obfuscation, or what have you.
...that they just want people not to tamper with their code? I see no need for a patent. I recall a time when a patent was for something important: a novel idea or mechanism of some kind. Making a patent doesn't really do much, other than making it impossible for other people/companies to hack into osX 86. But then again, it was illegal anyway, so no one could (legally) hack osX x86 before this patent. Seems kind of redundant.
public class null extends java applet { System.out.print ("Tabula Rasa"); }
They are patenting Perl?
Wow, I never knew Microsoft was going for a complete change in their business model.
For me as an administrator in a Mac-centric company, the most interesting part of this is Apple's accomodation of Linux, Windows and the Mac OS on their intel platform while simultaneously attempting to prevent their OS from being installed on a generic intel PC. If Apple can pull it off, it will give a significant value-add to their intel boxes. That's something that Micheal Dell would give his right arm to be able to do.
20. A method comprising: receiving a system call, wherein the system call is formatted for requesting a service from a first operating system, wherein the system call is included in a first object code block, wherein the first object code block is a run-time translation of a second object code block; determining which system call services of a second operating system are needed for providing the service; determining whether system call services for servicing the system call have been disabled, wherein the determining is based on a tamper-resistance policy; servicing the system call, if the system call services for servicing the system call have not been disabled.
21. The method of claim 20, wherein the tamper-resistance policy disables system call services that access system resources.
22. The method of claim 20, wherein the first operating system is selected from the set consisting of Mac OS X, Linux, and Microsoft Windows.
23. The method of claim 20, wherein the second operating system is selected from the set consisting of Mac OS X, Linux, and Microsoft Windows.
Back in the day when memory was at a premium (64k-bytes max), self-replicating code was the bane of both "hackers" and sys admins.
(yawn)
Ignorance is curable, stupid is forever.
... kindhearted soul please translate claim 20 from Lawyer to plain English for me?
20. A method comprising: receiving a system call, wherein the system call is formatted for requesting a service from a first operating system, wherein the system call is included in a first object code block, wherein the first object code block is a run-time translation of a second object code block; determining which system call services of a second operating system are needed for providing the service; determining whether system call services for servicing the system call have been disabled, wherein the determining is based on a tamper-resistance policy; servicing the system call, if the system call services for servicing the system call have not been disabled.
Only to idiots, are orders laws.
-- Henning von Tresckow
However, the patent describes a process whereby users would be able to load one of three operating systems as their primary OS and then load a secondary operating system as their secondary OS. In the patent application, titled, System and method for creating tamper-resistant code, they describe the process as thus:
From the sound of this, Apple is indeed going to do what I had simultaneously hoped for and feared: They're going to enable people to boot into OS X and run Windows at the same time (and vice versa)-- probably very similar to the way Classic runs now.
I had hoped for this because it makes switching infinitely easier-- people can just load up Windows and their apps on their Intel-based Mac, and make a gradual transition to OS X. Those who use Windows-only vertical-market apps will have the world of the Mac opened up to them.
I had feared this because there are bound to be some cheap/lazy asshole developers who will take one look at the Windows compatibility environment, cancel the Mac versions of their products, and tell Mac users to just use the Windows versions in said compatibility environment. I'd hate to see this reverse the Mac application availability renaissance that has been going on for the last few years.
~Philly
I for one welcome our new tamper-resistant overlords.
Get your Unix fortune now!
Tamper-resistant perhaps, but not tamper-proof! Cracks to this (along with everything else developed for the mac) are readily available. As the popularity of the platform grows, so will the number of people cracking, hacking and providing patches.
Essentially, I cannot imagine how it could happen effectively. I program is a series of isntructions. We can talk about multiprocessor systems and all that all day long, but the fact is, it's code that is watching code to ensure it is authentic.
That said, someone could try to create a processor that does not but audit the code being run and that it be outside of the main system's functions. I can imagine a lot of things that could be done with a scenario like that... but again, just like a thousand other things, it'll be hackable.
Apple should just face the facts: Build on a system that is already populated with crackers and coders who are intimately familiar with hacking software systems, and you are giving them a new toy to play with. They had a good thing going when they were vending relatively unique hardware. Now they have decided to switch, ever increasingly, to less propietary hardware in order to save costs. They did it when they adopted PCI, PC style memory and IDE mass storage devices. Before long, people were upgrading their own systems with non-Apple stuff. Now the very core of the computer itself is being moved over to something more readily available on the market... they don't expect people to want to play?
They are going to spend a LOT of money to avoid the unavoidable... they are going to waste a LOT of money. At some point they are going to have to choose either to abandon the OSX86 project and go back to PowerPC or just live with the fact that some people will run their OS on PCs not made by them.
This article has been up on mac-centric news sites for a while now. The difference is that all the others pointed out the more interesting aspect of the new patents: You can select, from MacOS X, Windows, and Linux a primary OS and secondary OS.
So not only is Apple not preventing users from installing Windows or Linux along side OS X, they are going out of their way to enable them to do so.
Michael Dell is feeling a tightening of the rectum right about now.
And yet...slashdotters are still preoccupied with how Apple might someday try to prevent the OS from being installed on non-Apple hardware.
I think Arxan has significant prior art here. They specifically mention obfuscation. I unfortunately can't say much more other than that I've seen some demos of what they offer under NDA. I wish their web site had more meat (e.g. a white paper). I will say they have some bright guys, some of whom come from the NSA, working with them. Heck, even Gene Spafford's on their technical advisory board.
And for the paranoid, I've mentioned nothing above I couldn't find on Arxan's or someone else's public website.
Program Intellivision!
it's candle proof? it can't be narrowed?
That sounds hip and jaded, but it also belies a disturbing lack of faith in society. Next you'll declare that all employees care about, by definition, is their paycheck -- therefore they don't care if their job consists of beating children with baseball bats, as long as it pays the bills. And all politicians care about is getting elected, therefore they'll just put their feet up and masturbate once they get into office; and all men care about is sex, and all women care about is babies ... et cetera.
In this specific case, what's wrong with Apple developing technology to make its products hard to emulate or reverse-engineer? Aside from its potential for harassing pirates, I don't see the harm in it. And the harm to pirates is most likely illusory anyway, since pirates and crackers are a very, very resourceful demographic.
Tamper-proof code is still ultimately only as secure as the hardware at its weakest link, and that weakest link for Apple will be this: The DVD that a new OS upgrade ships on. Put it in the drive, read it off. From there, it's only a matter of a carefully developed emulation environment and a precise sequence of code patches until the software is just as redistributable as the latest RedHat image.
Still, and as has been said a million times already, Apple doesn't need to make it impossible - just inconvenient for the layman. And even if Apple ties its OS to its hardware with a zillion steel cables, ... what's the loss, for a company that refuses to license them separately? You wouldn't complain that the software operating your Honda Accord isn't portable to your Ford Taurus, would you? (Well, if you're a Linux rivethead, you'd probably point and laugh, but you still wouldn't complain.)
As for the Powerbook with strips "all over" the LCD ... call AppleCare and keep complaining until they take it back. A friend of mine (who now works for Apple, ironically) sent his 15" PowerBook back THREE TIMES before receiving a machine that didn't have white spots on the LCD, and Apple paid the postage both ways each time. (They also told him they were tracking all the returns in order to build a legal case against the supplier of their LCD screens.)
And as for "why shouldn't I just buy a Dell", ... I don't know, why shouldn't you just buy a Dell? Get the freaking system you'll be happy with. The rest is just slashdot-esque dick-measuring.
From reading it, I think it has more to do with TPM....
In one embodiment the system comprises a processor and a memory unit coupled with the processor. In the system, the memory unit includes a translator unit to translate at runtime blocks of a first object code program into a blocks of a second object code program, wherein the blocks of the second object code program are to be obfuscated as a result of the translation, and wherein the blocks of the second object code program include system calls.
TPM contains flash. and can obfuscate code at runtime. I'm not in the know, except that I have worked on some publicly available TPM spec stuff.
Using Classic (or for that matter, X) apps on OS X is certainly possible, and even fairly easy -- but it's just enough of a PITA to remind you that you're not using the OS's native environment. I suspect that any Apple-built Windows compatibility layer will be the same way. People will put up with it if they have to, but their preference will be for native OS X versions.
;)
I mean, there's probably an entire team at Apple devoted to making it just right: easy enough to claim compatibility, hard enough to act as a spur for native development. And they probably have tastefully decorated offices, too.
The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
No worries mate, it worked out pretty good for OS/2 Warp.
The more you know, the less you understand.
microsoft's aim in supporting TCPA was to make their code "tamper resistant" by encrypting parts of the OS with pgp style encryption.. and using tpm modules to store the private pgp code. thereby making only the cpu and "trusted" applications capable of running the code through disassemblers.
To see apple jumping at something like this first is scary. When i found out apple boards had TPM's i suspected, though objectively. To me.. apple is pretty much signalling their intent to join ranks with gates and his hollywood buddies and cooperate with their plans to push lock down computing. Knowing how jobs has reacted to drm in the past.. it's just shameful.
What's sad is it' was never necessary. From what i remember of my hardware courses last semester, the newest x86 cpus are basically a cisc interpreter attached to a risc chip. All apple would have to do is have intel make the chips: A. without the interpreter at all.. thus making it a different platform with added benefit of greater efficiency and cost savings to boot.. or B. work with intel to make a different microcode interpreter.
I'm glad i bought the last of the PPC generation powermacs because it looks as if apple will lose a customer. Over the past 2.5 years i've poured over 10 grand into apple because it was objectively the best by a slim margin.. guess not anymore. linux will be king now, and a lot lighter on my wallet.
VLC FOR MAC IS DYING! IF YOU DEVELOP, PLEASE SAVE IT!!
hmmm, method means a piece of code in a particular memory location executes, then in the same memory location a new piece of code executes. sounds not a lot different that something normally done by any application that wants to reuse a bit of memory to me.
22: The method of claim 20, wherein the first operating system is selected from the set consisting of Mac OS X, Linux, and Microsoft Windows.
23: The method of claim 20, wherein the second operating system is selected from the set consisting of Mac OS X, Linux, and Microsoft Windows.
29: The method of claim 24, wherein the machine includes an operating system selected from the set consisting of Microsoft Windows, Linux, and Mac OS X.
66: The machine-readable medium of claim 64, wherein the first operating system is selected from the set consisting of Microsoft Windows, Linux, and Mac OS X.
67: The machine-readable medium of claim 64, wherein the second operating system is selected from the set consisting of an Apple Macintosh Operating System, Linux, and Microsoft Windows.
Also, Slashdot seeks new software to spell-check all posts, especially those that misspell words in the topic title, which appears in the title bar while viewing the page.
I recently had a friend ask me for help in debugging a PHP extension for some CMS... Ah, Google to the rescue; it was SEF Advance, a Joomla extension that did... something, I never really bothered to find out. Anyway, issue was that the guy was trying to debug the script locally (maybe to add something) and it was saying that it "was only licensed to x and y domains", where x and y were the production servers. The code itself was a bunch of open source config variables, then a statement as follows:
:^D)
eval(gzinflate(base64_decode('7T39Vxs5k...')));
The parameter went on for ages. When I changed the eval to echo, I got another block of the same, only the data was different. Apparently the guy had just gzipped his code over and over (five times to be exact) and used that as "encryption" so nobody would be able to modify it. I got around it in around five minutes, and sure enough, the domains were simply an array in the decrypted (inflated?) code.
The point is, according to the parent, it looks like Apple is patenting object code encryption, which has been done many, many times before in many different ways. I'm sure that the rest of the patent indicates something "unique" (and I put unique in quotes because there's no way to know it hasn't been done before somewhere) but in the end it's just diminishing possible future innovations by a little bit, like all software patents.
(Does this mean I'm liable under the DMCA?
It's better to vote for what you want and not get it than to vote for what you don't want and get it.
- E. Debs
Indeed, Microsoft might be secretly happy about this scheme, since they might be less beholden to Dell.
By separating it into 2 or more inert components and storing them seperately. How is that at all like tamper-resistant code?
It's not impossible to create code that is very difficult to alter in a desirable manner, unless that desire is to have it cease functioning. The current StarForce copy protection achieves this by encrypting the executable and libraries of the program in question, and then running them on its own virtual machine which runs at the driver level. It sounds like Apple is planning to do exactly the same thing, unless I'm misinterpreting their patent. Each of their points says: But that's just how I'm reading it.. I could be wrong. At any rate, StarForce has yet to be cracked directly, but since its main purpose is to prevent copying, other weaknesses have been exploited; mainly in the area of virtual drives. Evidently it tries to identify the drives on a system, and if it successfully IDs one, it will require the disc to be placed in that drive. To ensure forward compatibility, if it cannot identify any of the drives, it will accept any drive that the disc appears to be in. It still attempts to blacklist virtual devices though, so the virtual drive software must be obfuscated. As I said, the only successful means of defeating the protection thus far have been to alter the data external to the program; the executables and DLLs themselves have not been successfully cracked, except when the publisher opted not to use encryption.
https://www.eff.org/https-everywhere
Dr. Nick: Inflammable means flammable? What a country!
This comment is guaranteed*
*not guaranteed
So patents are apparently written in a very strange way for reasons that no doubt make sense to someone. Aside from converting a tree structure into a series of numbered paragraphs (this patent describes an X being comprised of Y and Z. The Y comprises a Q, R, and S. etc.) it is also written in a bewilderingly specific and yet vague way so as to at all times make it clear that whenever they talk about something in particular, they in fact mean to include stuff that they haven't mentioned and may not even have thought of.
So, having tried to wade through all of this, here's my potted summary.
A "tamper-resistant" code block can be created *automatically* (i.e. not by hand) by translating an ordinary code block into a tamper-proof code block. The tamper proof code-block may be composed of checksummed code with extra inserted code that performs arbitrary operations (using, for example, information stored on a ROM, or taken from the computer's clock, or from the user's settings) and then is expected to produce a specific result.
E.g. multiply the current time by the user's name converted into a number and subtract the checksum of the code block and produce the number it did when the code was initially "tamper-proofed".
To verify the code has not been tampered with it can be executed in an environment (a virtual machine, say) which behaves like the real environment but where system calls have no effect so that only the ancillory results are produced. If these results aren't right, the code block is rejected.
I'm probably missing a lot, but the proposed system is AT LEAST this sophisticated, which is a heck of lot more convoluted than, say, checksumming code blocks. I think figuring this out is well beyond the script kiddies that produce the majority of malware.
That's all well and good... I trust Jobs despite his egotistical nature (unfortunately, he's often right). But...
What happens when he no longer runs Apple (succumbing to that great GC in the sky, or losing interest, etc.)? Do you trust #2 at Apple to keep this claim? And for how long?
Make sure everyone's vote counts: Verified Voting
What the (blank) department would like to see in future Intel based Macintosh computers.
1. A multi-button mouse. With the recent "Mighty Mouse" part of this need has been address. Although, this mouse could use more ergonomic feedback and improvements. A default option from the Apple Store for the "Mighty Mouse" is fine, but additional choices for a two button or three button mouse from a pull down menu choice will give customers more flexibility.
2. The HFS+ journaled filesystem must coexist with an NTFS, or any Linux filesystem like XFS or ext3 on a multi- partition harddrive.
3. Intel based Macs should have IEEE-1394 support and have Firewire target mode and netboot from EFI (the new Intel based BIOS)
4. Intel based Macs should be able to run Windows XP SP2 on it and future Windows Vista. i.e. minimize or eliminate custom ASICs on motherboard that would cause problems installing Windows. Dual booting Intel based Macs will be desirable, but what would be even better is virtualization using Intel's Vanderpool technology to run the few Windows applications that haven't been ported to Mac OS X i.e. AutoCad, Rhino 3D.
5. Intel based Macs have to support PCI Express x16 for graphics cards. Support high end professional graphics card from Nvidia Quadro and ATI FireGL with CoreImage support is absolutely critical for engineering, scientific and the visualization industry. If possible a 3rd player supporting Mac OS X, like 3DLabs Wildcat Realizm series. This would greatly benefit the Mac OS X platform as a more serious player in the CAD and high end computer graphics industries.
Last but not least for all Macs (x86 and PPC) an easy integration with Active Directory or AFS for user login. Currently both methods require work on Mac OS X.
Well - we *do* already seem to have virtually "unhackable" DRM out there right now. Anyone see a working hack for DirecTV receivers using the "P4" series cards?
remember when microsoft dropped office for the mac.
Sure don't. You must be thinking of Internet Explorer, abandoned years ago at version 5. Office is still supported on the Mac.
Well, if I was doing IT for a larger company (my small company has 15 people, adding 5 every 6 months or so, so we buy that many new Macs), and I could buy a Dell and pop in an Apple DVD, that would be my Mac stations... Basically, for anyone that wanted OS X, it would be easier and cheaper normally to buy the lowest end Dell and stick OS X in there... Sure the equivalent Dell to an Apple is about that same price as the Apple (+/- 10%), but Apple has limited selection... Sure the equivalent Dell to the Mini (including XP Pro) is about $550, but I can buy a $300 Dell... and possibly do dual-monitor for $300-$600, compared to $2000 with Apple...
Basically, Apple doesn't want people buying design workstations (dual monitor, decent RAM, etc.) buying a $1200 Dell instead of a $2000 "PowerMac," and spending $200 to get the Mac OS X, they want to sell the $2000 hardware and make their $400 in margins...
Sure, there WILL be a way to buy an off the shelf machine, or alternatively, assemble off-the-shelf parts to match what the Mac has, flash firmware or whatever to match Apple's trickiness, and run OS X... guess what, college kids will do it... but there is no way for my company I would do that...
Because if I roll out a patch (say, 10.5.3) and it breaks my machines, I'm SOL until a new "hack" comes out... or a security patch does it, etc., etc... Sure, for a hobbyist they'll do it... and I doubt Apple cares that a few Alpha geeks run hacked Macs... they get some mindshare and possibly sell some software (maybe not the OS, but maybe Pages or Quicktime Pro, or anything), and maybe when that kid makes purchase decisions he'll buy Macs...
What they DO NOT want is my small company buying 5 Dells + 5 Dell monitors + OS X DVDs, instead of 5 Mac Minis + 5 Apple monitors (the combo looks SO slick) and then buying OS X upgrades annually...
It's not about normal unsupported... it's about some OS upgrade breaking the system and leaving me fucked with an insecure machine until the upgrade happens. ALL they need to do is have the stock kernel check something in the hardware and it will accomplish 80% of their objectives. Anything ELSE they do it just gravy... my guess is something in the kernel, and something in the closed source layers... basically force you to apply a new hack every security patch/OS upgrade, and that will keep all but hobbyists from going that route... and that is ALL Apple needs.
Alex
The patent contains no interesting, new methods. Instead, Apple is attempting to patent the general idea of transforming a program into a tamper resistant form.
The USPTO will probably grant this, or many of its claims, despite its lack of novelty. But this patent is a poster child for what is wrong with the patent system.
And hey, we only needed one machine to implement this. Moreover, in our technique, the program rewrites itself, and it does so fully automatically, so no manual editing is required. Look for our paper on "Software Protection through Dynamic Code Mutation" at last week's Workshop on Information Security Applications (WISA2005), which you can download at www.elis.ugent.be/~brdsutte.
It's not that it's unhackable, it's just too much trouble to have been broken so far. The encryption engine and relevant microcode is hidden deep in an ASIC, and no one has been able to secure an e-beam slicer long enough to open it up. There are only a few of them at major universities and chip fab labs, and it's pretty hard to "borrow" time on them during your lunch hour for such a "project". Someday, it will probably be broken but it has served the purpose of any successful encryption system - to keep sensitive data from prying eyes until it's no longer sensitive.
Actually, no one ever really cracked the P3 DRM either, what was known was due to internal leaks, rumored to have been possibly deliberate, as NDC (Rupert Murdoch) owns their competitor, Dish Network! Anyway, the P3 hacks were all workarounds that still needed the real hardware DRM decryption engine to do the work. There was rumors of a soft decryptor, but I never saw one and personally I think that was vaporware.
-- You are in a maze of little, twisty passages, all different... --
Apple should not sell the OS seperately because I don't want to buy it. I want the integrated experience. Its a non-sequitur, if that's what you want, buy it. Why should it not sell to others who don't want it?
Apple is a hardware manufacturer and if it allows people to run the OS on other hardware, it will go out of business. People who argue this, then turn around and claim that Apple hardware is better cheaper and faster than anyone else's. So why will unbundling not lead to a boom in hardware sales?
Apple shouldn't lock its OS at all. Why not? Of course, its entitled to protect its investment by product activation or DRM or whatever. Everyone else does.
Finally, we have the argument, if its unbundled, people will try to run it on hardware which will not run it, and this will put off buyers and damage the reputation of the company. This is crazy. It will be shipped with a list of what is supported. And manufacturers of cards, mainboards etc will tell you what the OS requirements are. They do it now, after all. Why would they stop?
Finally we have the argument, people who buy X and run it on their Toshibas (as ZD-net seems to have done) will not be having the Apple Experience. Well, maybe not. Why do you care? If you want to have the Apple Experience, which seems to consist in looking at a particular case while using X, go ahead. But this is not a reason for selling other people the unbundled X experience, if this is what they want.
The more I hear people arguing about this, the less sense it makes. Surely the point is, sell the customer what he wants to buy. He probably really does know what he wants. Let the customer worry about value for money and the sort of experience he is having. Don't try to dictate what he is supposed to want or how he is supposed to feel.
I'm sure there are a lot of people who might do it though. People who want OS X's lack of spyware but want to be able to run some Windows software for work or play.
This is really beginning to get to me. Here I am, having used Windows almost daily for 15 years, and I still haven't been infected with any of this spyware that's supposedly so rampant.
What on earth can I be doing wrong?
You don't know Steve Jobs. What qualifies you to define his character and personality so absolutely?
You aren't on Apple's board of directors. What qualifies you to discuss his company's methods and intentions as if you are?
True, I don't know you either, but your words suggest that you're on a steady diet of Apple kool-aide.
Why is it that software patents and IP law in general is evil except when it comes to Slashdot darlings like Apple and Google? The inconsistency and hypocrisy is a sure sign that religious fanaticism has replaced reasoned thought.
And no, I'm not new here!
"Ask not what your country can do for you." --John F. Kennedy
What on earth can I be doing wrong?
You're forgetting that the plural of anecdote is still not data.
Endless arguments over trivial contradictions in books written by ignorant savages to explain thunder in the dark.
" My point is that sometimes, if you don't put up fences, you will attract fewer unwelcome visitors than if you do. We are hard-wired to "push the envelope", to attempt the unthinkable, however it may manifest itself. This is an instinctive behaviour, as much a natural function as having sex or going to the toilet, and any attempt to pretend the contrary will surely be doomed to abject failure."
I'm sorry, but this just comes of as a sorry effort at excusing the behavior of crackers. "We're just at the mercy of our primate urges! We deserve pity and sympathy! We know not what we do!"
Yet it's also an effort at self-mythologizing: "attempting the unthinkable". Wow, that's heavy. As if shoplifting is made 'unthinkable' by the existence of security cameras.
The same argument could be tried by rapists "Women shouldn't try to deny men sex, because that just drives us to take it by any means necessary".
It's bollocks for rapists, it's bollocks for shoplifters, and it's bollocks for crackers.
September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA