[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Query on "secure databases"



Hi, Peter - here's my previous posting, with an addendum, Cc: cypherpunks
At 04:43 PM 2/11/97 -0500, Peter Swire <[email protected]> wrote:
>        Can you point me to anything I can read on "secure databases"?  I
>hadn't hit that term before.  I am curious to what extent they are secure
>due to cryptographic approaches, or to what extent you rely on other
>mechanisms for keeping out unauthorized users.

It's been a long time since I've looked much into it, since I
was getting out of phone-company-defense-contractor mode at the time the
field was developing.  I think the NCSC Rainbow Book that deals
with secure databases is the Purple Book, though it might be the Gray.
Oracle and/or Sybase have done some work trying to do databases
at the B1 or B2 level, but I don't know details.  

I'll talk about secure databases a bit, but for the real world
there's more useful stuff that isn't related to them.

=================== Begin "Secure Database" Section ==============
At the time, the Orange Book (security for standalone computers) was 
well-understood, though there weren't really any systems above B2 level,
and the Red Book was written, but nobody really had a clue how to
implement multi-level machines on a multi-level LAN, though
you could use encrypting Ethernet cards to get single-level machines
of different levels on the same LAN, if they were all administered
by the same group of people (so user-IDs and security levels
worked across the entire system.)  

At the lower security levels, Orange Book techniques mainly involve 
removing bugs and adding accounting features.  At the higher levels, 
the key is to come up with a good mathematical/logical model of
interactions in your computer system, and then design a computer system
that only does the things permitted by the model and prove it does that.
Some of these systems use cryptographic techniques, including some of
the capability-based systems - see Bill Frantz's KeyKOS work, which he's
referred to on Cypherpunks occasionally. 

The objective is to have databases that can be accessed by multiple users
with different sets of security permissions.  In the military vernacular,
this mainly means having UNCLASSIFIED, CONFIDENTIAL, SECRET, and maybe
TOP SECRET data in the database, where not all users are cleared
to the highest security level, and maybe projects X, Y, and Z,
where users of project X may not have a need to know for project Y, etc.

The easy problems are probably solved by now - either you do a good job
of verifying the design and bug-free-ness of your database software
so you can be sure that each request includes, and obeys, security levels,
or you use crypto to encrypt the data items for each security level
(e.g. everybody with a SECRET or PROJECT Z clearance shares a key 
for that data, which isn't really ideal for non-small groups of people,
the database just tries to do a good job, and you only do operations in
the database that make sense when the data is encrypted, though that's
annoyingly restrictive for many applications.)

The sticky problems are aggregation-related.  It may be ok if an uncleared
person knows that military base A has missile types 1, 3, and 5,
and if the uncleared person knows where all your military bases are.
But is it ok if the uncleared person knows about _all_ the missiles
at _all_ the bases, and can tell that nobody's using Type 2 missiles
any more, and that all the Type 4 missiles got moved to New Jersey last week?

=============== End "Secure Database" section =================
=============== Begin "Real-World and Crypto" section =========
For the average person, though, the simple military models aren't 
really useful.  You really care more about groups of people,
though the multi-level stuff is sometimes a good way to keep 
machines from being hacked.  

But the real problem is that computers are very good at correlating
information - 
if two different companies know your Social Security Number,
and they share their data with each other (maybe for a price),
then they can all tie together everything they each know about you.
And there's no way to stop it, except by limiting the information
you give people (which limits the transactions they'll do with you),
or contractually limiting what they can do with it (good luck),
or using multiple identities - and even then, computers are
often good at guessing that the John Doe at 1234 Main Street
is the related to Jane Smith at 1234 Main Street, and maybe 
the foreign car parts Jane bought on her American Express are
for the Porsche registered to John, so there's a junk-mail opportunity.

There's really only one technology that lets you avoid this,
which is crypto and its relatives - though you still have to 
get people you use business with to use it, which is an uphill game.
Some of the fundamental work on this is David Chaum's papers
on Credentials without Identity (or something about like that, from ~1985.)
For instance, you can have a voter registration number that's
cryptographically signed by the voting bureau, but uses blinded
signatures so they can't correlate the known good unique number
with the Peter Swire who walked in and showed a picture ID one day.
A driver's license smartcard could keep a pointer to your driving records,
but wouldn't give your True Name, and would only show a cop
that the person whose picture is on the front is a Licensed Driver,
and maybe could demonstrate that the bearer knows the card's PIN.

One big issue is that the government is pushing banks to demand SSNs,
and requiring employers to demand SSNs (makes them easy Employee IDs),
and pushing medical insurers and providers to use SSNs (makes it
easy to collect Medicare data.)  You can gain a lot of privacy
just by having employers use their own employee-ID numbering system,
so the travel agent subcontracting to Corporate Travel
doesn't need your SSN on every form they fill out.
But suppose the Social Security Administration and IRS issued you a bunch
of separate numbers, that were either related using a cryptographic key,
or just randomly picked and kept in a big database (maybe pointing to
your old SSN), so you could give everybody who needs a Tax ID a different
number, and only you and the IRS could correlate them.
(To some extent, you can do this yourself by creating lots of
companies, but it's a real pain and costs a certain amount of money.)

=============== addendum =====================
Of course, for many transactions, the way to reduce the privacy problems
is to use bearer certificates rather than book-entry approaches -
pay cash, or digicash, rather than credit cards, use on-line
anonymous delivery of bits, or picking up stuff in person,
rather than mailing stuff to a snail address, etc.




#			Thanks;  Bill
# Bill Stewart, +1-415-442-2215 [email protected]
# You can get PGP outside the US at ftp.ox.ac.uk/pub/crypto/pgp
#     (If this is a mailing list, please Cc: me on replies.  Thanks.)