My assignment here asks about data security; it poses the question of how to store data on a server in a secure manner. This perplexes me somewhat. Say we use some fancy-schmancy data encryption algorithm to encrypt all the data files on the server. Then we need a key to decrypt them back again when we need them, and... where do we store that? It doesn't seem any more secure than just leaving the data plaintext; the key file could just as well be stolen by some attacker as any other file. (Or if we hard-code the key into the program, then the object code could be stolen and reverse-engineered.)

So: is it a stupid question? Is there any way of securing data on a server, or should we concentrate on not giving the attacker access to the file system in the first place?

From: [identity profile] dsky.livejournal.com


There is no method that is secure. Not really. If the machine gets compromised then the key can be compromised the next time it is used. This goes for all methods, even the kind of thing that's suggested as the future for Grid (having the key encrypted with a strong pass-phrase on a USB keychain the user keeps with them at all times). It doesn't matter. The pass-phrase can be intercepted by a key logger and the encrypted key itself lifted off the USB stick when it is inserted into the machine. It is better than having the file on the disk though.

It gets spectacularly worse when the software is engineered by idiots by the way. As a case in point, with Grid, we use a system of proxy certificates because typing in a 20-odd character pass-phrase every time you want to do anything is a real PITA. When you log in, you sign a short duration time-limited proxy certificate with your real key. This is stored somewhere and used to do all your work. This used to be in /tmp, but because another part of Globus was brain-dead and allowed this to be exploited using symlinks, they moved to storing the proxy certificate in your home directory. The proxy certificate is not encrypted, but is owned and only readable by you (and root).

Most home directories are mounted across a network (whereas /tmp is not) using something like NFS which is not encrypted, so people's proxy certificates are transmitted in the clear across ethernet. If someone were to intercept one of them (a trivial exercise), they would be able to access any machine that that person could log into with that certificate anywhere in the world for the duration of that certificate.

Let's not even go into the issue of unencrypted keys ending up in swap space (or in the case of proxy certificates) and not being securely deleted.
ext_79424: Line drawing of me, by me (Default)

From: [identity profile] spudtater.livejournal.com


That's what I thought, yes.

Having a key encrypted with a pass-phrase seems like it might provide enough security for the purposes of this practical. How would you go about doing it, and can you do it to an AES key? (Apologies for the cheeky "please help me with my homework"-style questioning!)

From: [identity profile] dsky.livejournal.com


Um. I'm not entirely sure what we use to encrypt the key. I don't see why you can't do it with/to an AES key.

I had a quick look at the documentation but it doesn't say. It's all done automagically using the tools in OpenSSL though, so I imagine it's whatever that uses.

From: [identity profile] wee0ne.livejournal.com


Security by Obscurity? Nah.
Security by Obsolescence? Not good either...

There is a dead easy way to make sure the data on a computer is secure: nick the power lead; hide the monitor; put the computer in a locked filing cabinet stuck in a disused lavatory with a sign outside the door saying "Beware of the Leopard."; take the disk out the computer.

Software wise, nothing has really got better than PGP :-(
ext_79424: Line drawing of me, by me (Default)

From: [identity profile] spudtater.livejournal.com


My favourite form of security is to set the attacker riddles to solve within a certain amount of time, thus proving my Intellectual Superiority™. Animated, pixelated graphics that mock them whenever they enter the wrong reply also help.

I am invincible.

From: [identity profile] zombywuf.livejournal.com


The question is one of the threat model. If there is the possibility of the machine/hdds being nicked the encrypting the data is a good thing(TM). If your danger is remote compromise (and the server is in a padlocked cage) then encrypting the bits on the disk is just churning your CPU, and you're better off with NIDS, stack space randomisation, minimising attack profiles, etc...
ext_79424: Line drawing of me, by me (Default)

From: [identity profile] spudtater.livejournal.com


Yeah, that's what I thought.
The assignment tells us that "This information is to be kept secure, both as stored on the server and in the SOAP messages", which implies that the lecturer things that encrypting your data is a good thing. I don't really want to risk antagonising him by contradicting his opinion...   8^P
.

Profile

spudtater: (Default)
spudtater

Most Popular Tags

Powered by Dreamwidth Studios

Style Credit

Expand Cut Tags

No cut tags