Thank John! Sounds like the best way is to compile a key into a binary and decrypt partitions or files that way.
I'm certain obfuscation is my only real option without manual intervention, and I'm OK with that. I know it won't actually be secure. Mostly I just want to stop curious eyes, I don't need to stop someone really determined. I just want to make sure there isn't some standard way to obfuscate partitions/data in VMs used as appliances. On Tue, Dec 9, 2014 at 11:38 AM, John Merriam <j...@johnmerriam.net> wrote: > On Tue, 9 Dec 2014, Nathan Wheeler wrote: > >> Hi everyone, >> >> We use OpenBSD currently on physical hardware and manage it in our >> customers location. We want the option to give out VMs to host on >> customer premises and we'll still manage the VM (but not the VM >> platform). >> >> The problem is not letting the customer access to our proprietary data >> as they could easily mount the virtual hard drive somewhere else. The >> obvious answer is disk encryption, but we can't require manual >> intervention to enter a passphrase or to provide a key. >> >> I'm sure I'll have to settle with obfuscation, which I'm OK with, but >> I'm curious if there is a good/best way to go about that. >> >> Is the only option to change things we need to hide into binaries? >> Compile the kernel with a key to decrypt? >> >> I've taken a look at how other vendors do it like Juniper. With their >> VM I can mount the boot partitions, but they only have boot >> information and the kernel. I can't mount the extended partitions, >> they don't even seem to be formatted with a filesystem. My guess is >> they compile the kernel with a key or something, but its just a guess. >> >> Thanks for any advice! >> >> Nate >> > > You said that you are already letting your proprietary data out in the > wild since you have machines on customer premises with this data in > unencrypted form. If it moves from a physical machine to a virtual one it > is true that it makes it easier for someone to access it but not that much > easier. > > Anyway, the way I see it, the only way to keep someone from accessing your > data is encryption. Obfuscation alone will make it harder but not > impossible. > > To avoid manual intervention when using encryption you need a way to get > the key/passphrase to the machine/application. If you were using > application/file level encryption, you could compile the key in to a > binary application that would then work with the data. That is still > obfucation to an extent because they could still decompile the binary and > find your key. > > Another option I just thought of is if you coded your application that > accesses the data to download (over an encrypted connection of course...) > the key from a server that you control at your location that the > application would then use to decrypt the data. > > If you wanted to use FDE without manual intervention you would need to > modify the OS source to find the key somewhere (unallocated sectors at the > end of the disk or between partitions?) that it could access before it > tries to decrypt the partition. Obfuscation again. But pretty well > obfuscated. > > Another thing you could do is have a separate partition that is not the > boot partition (like /data) that is encrypted and have the boot scripts > decrypt and mount the partition. You would need to cary around the > passphrase/key on the unencrypted boot partition though. Obfuscaction > again (but maybe you could combine this with downloading the key/pass > from a server of yours?). > > The only thing I mentioned that doesn't involve obfuscation or manual > intervention is coding an/your application that will download the key from > a server to decrypt the data that has been encrypted. You would need to > use something like HTTPS with username/password or SCP to transfer the > key. The server serving the key should have access to it restricted by > IP. Oh, but wait, they could still get the key if they decompile the > program that downloads the key and do exactly what it does. Hmmm, still > obfuscation I guess. > > Oh, and no matter what you do, they could always dump the RAM from your VM > instance and get your data from there after it's been decrypted. > > So, yeah, no really good answer that I know of. I'm not an expert in > areas such as this, but this is the way I see it. Your best bet is > probably encryption combined with some good obfuscation as to what the key > is/where to get it. Not moving your data to a VM would make some of these > attacks harder but not impossible for a determined attacker. > > -- > > John Merriam