From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MjYah-00020a-1v for qemu-devel@nongnu.org; Fri, 04 Sep 2009 09:12:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MjYac-0001zs-GW for qemu-devel@nongnu.org; Fri, 04 Sep 2009 09:12:34 -0400 Received: from [199.232.76.173] (port=46648 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MjYac-0001zn-Bb for qemu-devel@nongnu.org; Fri, 04 Sep 2009 09:12:30 -0400 Received: from caffeine.csclub.uwaterloo.ca ([129.97.134.17]:45503) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MjYac-0005TK-2J for qemu-devel@nongnu.org; Fri, 04 Sep 2009 09:12:30 -0400 Date: Fri, 4 Sep 2009 09:12:28 -0400 Subject: Re: [Qemu-devel] QEMU as a "virtual smart card"? Message-ID: <20090904131228.GH23700@csclub.uwaterloo.ca> References: <20090831180825.6ed2ea55@bud-laptop> <20090901234716.GB1321@shareable.org> <20090903170931.1e7d5772@bud-laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090903170931.1e7d5772@bud-laptop> From: lsorense@csclub.uwaterloo.ca (Lennart Sorensen) List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Bud P. Bruegger" Cc: Blue Swirl , Forrester , John@csclub.uwaterloo.ca, qemu-devel@nongnu.org On Thu, Sep 03, 2009 at 05:09:31PM +0200, Bud P. Bruegger wrote: > First of all thanks to everyone for the replies and advice. > > As for encryption of RAM and processor, wouldn't it be necessary to > decrypt things before using it and that would be visible to the > observer on the host machine? > > While surely not bullet proof and impossible to crack, I thought that > there may be other ways of rising the hurdle quite a bit. > > Assume that I wanted to protect a secret algorithm in some C program. > Normally this is compiled into the machine code of a certain processor > and there are standard tools (disassembler, debugger) that can be used > to figure out what the secret algorithm does. > > A virtual machine has a virtual processor. Assume now that I was to > shuffle around machine instructions both in the processor of the > virtual machine and in the back-end of my c-compiler. I imagine that > it would be possible to automate this process (some refactoring tool?) > and to do some random shuffling. > > At this point, I guess before looking at the code I'd have to create my > own tools (disassembler, debugger) before even starting to look at what > is happening. > > So maybe there would even be some more room to generate a "random > virtual processor" together with a "random C compiler". Kind of like > generating a key pair :-) > > That would still leave RAM unprotected, I guess... But maybe there > could be a way of adding some "random" RAM/CPU combination with enough > entropy.. > > do you think that is a valid idea? Well if you look at intel's current wireless chips, they have some firmware that runs on them, but because the instruction set of that processor is secret and the addresses of all the devices inside the chip are secret, it would be very hard to reverse engineer the firmware and hence make changes to it. Not impossible of course, but very hard. To some extent, if you want it secret, make a custom chip, not software. Software can't be secret, only hard to get at. -- Len Sorensen