2

I'm just trying to determine if the files on the filesystem used by Raven DB are encrypted or not? Can someone just open the files on the filesystem and convert them from binary to ASCII directly, or are they encrypted?

I am trying to convince our management to give RavenDB a shot, but they have concerns about security. They gave the example that you can't just open up an MS SQL db file, convert it from binary to ASCII, and read it. So I am trying to verify if RavenDB prevented that kind of thing as well?

2

4 Answers 4

7

Well, personally I think that your management sucks if they come up with such straw-man arguments.

To answer your question: No, you can't just open any file inside ravens data folder with Notepad and expect to see something meaningful. So, for the ones that don't know how to program, yes they are encrypted.

To convice your management you can tell them that raven uses the same encryption algorithm as Microsofts Exchange Server does. If they want to dig deeper - it's called Esent.

Sign up to request clarification or add additional context in comments.

6 Comments

Well this is a pretty big enterprise level environment, and their first answer to any new technology is "no....what did you say?" My organization has over 50,000 employees and anything new like this has to meet some pretty tough standards. I'm just hoping to be able to pilot a new project with it to show them the benefits, but I have to get approval first.
At this time, the only dbs approved by the organization for new applications are MS SQL, Oracle, and Teradata. And from what I've read, all of them support db-level encryption.
Amanda, if you want true encryption using a cryptographic algorithm (though it doesn't sound that your management actually expects this) you can easily encrypt the whole database using something like TrueCrypt at OS level, or go another approach at document level: daniellang.net/document-level-encryption-in-ravendb
Erm notepad might not show you anything, but point EseDbViewer at it (woanware.co.uk/?page_id=89) and you'll see a lot. Plus the docs are themselves stored as BSON (by default), which isn't that hard to deserialise.
@DanielLang In your answer, it's a bad use of the word "Encryption". I think you should replace it with "obfuscated" instead. Esent doesn't use an encryption algorithm by default, it's just a binary file.
|
3

RavenDb storage is not encrypted. You can open it with notepad and see some pieces of data. At the same time I do not think that MS SQL encrypts files by default either.

6 Comments

According to msdn.microsoft.com/en-us/library/cc278098%28v=sql.100%29.aspx it looks like there is some sort of encryption?
This is about MS SQL and yes you can turn it on.
Mike, that's not the case. If you open the 'Data' file under raven sdata-folder within notepad, you won't see anything human readable.
@DanielLang you do, I can send you screenshot. Open it and try to find word "Raven" this will bring you to the place with data.
@Mike, even better use EseDbViewer from woanware.co.uk/?page_id=89
|
0

RavenDB added encryption in mid-2012. Get RavenDB's “bundle:encryption” and then make sure your key is properly encrypted in the .NET config file or whatever.
http://ravendb.net/docs/article-page/3.0/csharp/server/bundles/encryption http://ayende.com/blog/157473/awesome-ravendb-feature-of-the-day-encryption

Comments

0

SQL Server 2008 does have encryption, but you need to prepare the DB instance beforehand to enable it, then create the DB with encryption enabled and then store data.

If you haven't, you could just copy the DB off the machine and open it in a tool that does have access to it.

With RavenDB, you can tick the box and off you go! (although I do not know the intricacies of moving backups to another machine and restoring them).


In relation to the point your management made, this is a relatively pointless argument.

If you had access directly to the file of a DB, it's game over. Encryption is your very last line of defence.

[I don't think hackers are going to be opening a 40GB file in Notepad .. thats just silly :-)]

So instead of ending up at the worst case, you have to look at the controls you can implement to even get to that level of concern.

You need to work out how would someone even get to that file (and the costs associated with all of the mitigation techniques):

  • What if they steal the server, or the disk inside it?
  • What if they can get to the DB via a file share?
  • What if they can log onto the DB server?
  • What if an legitimate employee syphons off the data?

Physical Access

Restricting direct access to a server mitigates stealing it. You have to think about all of the preventative controls (door locks, ID cards, iris scanners), detective controls (alarm systems, CCTV) and how much you want to spend on that.

Hence why cloud computing is so attractive!

Access Controls

You then have to get onto the machine via RDP or connect remotely to its file system via Active Directory, so that only a select few could access it - probably IT support and database administrators. Being administrators, they should be vetted and trusted within the organisation (through an Information Security Governance Framework).

If you also wanted to reduce the risk even further, maybe implement 2 Factor Authentication like banks do, so that even knowing the username and password doesn't get you to the server!

Then there's the risk of employees of your company accessing it - legitimately and illegitimately. I mean why go to all of the trouble of buying security guards, dogs and a giant fence when users can query it anyway! You would only allow certain operations on certain parts of the data.

In summary ... 'defence in depth' is how you respond to it. There is always a risk that can be identified, but you need to consider the number of controls in place, add more if the risk is too high. But adding more controls to your organisation in general makes the system less user friendly.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.