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

Re: A (Low-Level) Opaque Object Proposal for R5RS



   Date: Mon, 29 Apr 1996 02:45:14 -0400
   From: Alan Bawden <Alan@lcs.mit.edu>

   Exactly what is it that you are trying to defend against?  What is
   programmer A trying to hide from programmer B?  Is this intended to be a
   method that can be used to protect trade secrets embodied in Scheme
   programs that you ship to customers?  Or to protect programmers working on
   the same project from each other somehow?  (In that case, does the security
   of the rest of the programming environment they share matter?  Does it
   matter if they have access to each other's source code?)  Or is this just
   to protect a single programmer from himself somehow?  Can you give me a
   realistic scenario in which this passkey stuff protects some realistic
   thing from some realistic threat?

In all this discussion, I don't remember seeing many real-world
examples to answer the question "what sort of data protections are
useful?"  Here is one:

 Your employer maintains a database about employees.  Each record in
 this database relates an employee's name, office telphone extension,
 home address, home telephone number, social security number, direct
 deposit bank ID, salary, etc..  This database is kept up-to-date by
 someone in the accounting department.

 It is useful to query this database in order to find a peer's
 extension.  However, employees don't want information such as salary
 and social security numbers released to just anyone in the company.

 But this isn't the only restriction desired.  Managers want to be
 able to query the database for home telephone numbers (during weekend
 emergencies); But employees don't want unsolicited calls from people
 who aren't their managers.

Desired in this example are at least two levels of access restriction
on retrieving information from database records.  Of course there must
also be restrictions on modifying information in these database
records.

In SLIB, I use Scheme to implement a relational system from more
primitive table operations.  Scheme seems well suited to this task,
especially from its ability to create unnamed procedures.  Currently,
my system does not support access restrictions; Ziggy's Opacity
proposal looks promising for this sort of capability.