From: Salad on
David W. Fenton wrote:

> There is no encryption built into Access.
>
I thought there is in A2007. I don't believe you can encrypt specific
tables or fields; it's all or nothing.
From: Finn Stampe Mikkelsen on
"David W. Fenton" <XXXusenet(a)dfenton.com.invalid> skrev i meddelelsen
news:Xns9CBAD16A2770Ef99a49ed1d0c49c5bbb2(a)74.209.136.90...
> "Finn Stampe Mikkelsen" <stampe(a)city.dk> wrote in
>>
>> To specify the situation...:
>>
>> I have a database app, that presents pre-excisting data to a user.
>> This data is supplied with the app and is not ment for the user to
>> edit. Alongside this data, there is another database containing
>> the user own additions to the data.
>
> Are these different data tables? What's the purpose of this data?
> Does it like to the users' data?

The app has not yet been programmed and is planned to be written in C# when
done. The data can be in different tables or in seperate databases. Makes no
difference to the application in the end..

The purpose of the data is as basis for a lookup. See it as a phonebook. It
is not actually a phonebook, but similar. The data the user could add, could
either be additional data to the records in the supplied data or complete
records to enhance the data that can be accessed.

Either way, the initial data needs to be compiled an that takes a lot of
time so i would not like others to just be able to use that data raw with
other apps. I really can't se how this in anyway could be illegal..

>
>> What i wanted to encrypt was the data supplied with the app, to
>> prevent someone from using this data to create there own app, with
>> similar functionallity...
>
> Oh, boo hoo. What makes you think your precious data is so fabulous
> that somebody would want to "steal" it?

What kind of attitude is that. If you had a collection of data you had
assembled, would you not like to protect it. Anyway, since the application
would potentially be used by many, it would be subject to hacking. I really
don't think i need to justify this to you or any other.

>
> Or that somebody who knows what they are doing can't just look at
> your app and recreate the data and the functionality just by
> understanding what your app does?
>
>> Real life example.. Picture a digital phone directory, with the
>> option to add comments in the seperate database to every directory
>> entry. The data i want to encrypt is the actual directory supplied
>> with the program. i could'nt really care less about the data
>> created by the user..
>
> Data cannot be copyrighted, so you don't have copyright on the data.
> That's why so many reference databases are locked behind pay
> firewalls, because once it's out, it's legal for anyone to use it.

�'m quite sure that you are correct as far as the use is restricted to the
app to which it is supplied. I don't think i can rip just any data supplied
with any software and use it for my own purpose and i am sure, that if i
used that data to create a clone app with similar functions and thereby try
to steal the market of the company that released the first app, that would
not be legal..

>
>> Wether the data is in front-end or back end i have no idea of what
>> you talk about. Those concepts, datawise, are unfamiliar to me...
>
> Then you must be a novice Access programmer. No properly designed
> Access app puts the data tables and all the forms/reports/etc. into
> a single file. Instead, the user interface objects are in the
> front-end file and the data tables in a separate file, which the
> front end links to.

I never, as far as i know, stated to have any experience with Access
programming what so ever. In fact i asked here, cause i believed that i
could get some help for that very same reason. You seem to have understood,
that the app i'm intending to write, will be written in Access itself. This
is not the case. It will be a DOT.NET C# app, standalone but using accdb
files... The reason for that is besides the point. I could use SQLExpress or
SQL Server, but the choice has been made to make it with an accdb database.
>
>
>> Besides that, this debate is off-topic in relation to the original
>> posting, concerning built-in ways to secure data in an accdb file.
>> It seems not to be a feature available...
>
> There is no encryption built into Access.
>
> But if you need encryption, I don't think you should be using an
> ACCDB to store your data.

That may very well be true. But SQL Server is not an option and i opted to
not use SQLExpress for reasons not important to this thread...


>
> --
> David W. Fenton http://www.dfenton.com/
> usenet at dfenton dot com http://www.dfenton.com/DFA/

From: The Frog on
If your final application is going to be written in c# then store your
data in sql server compact file (they are typesafe). This then just
becomes another file that is shipped with the application. You can
then store the data any way you wish inside the data tables.

I would suggest that you integrate the encryption of the data table(s)
with the generation of your license key. You could use a combination
of public/private key pairs and a symmetric cipher like AES on the
data itself. Anyone tries to 'read' the data will just see garbage
output.

Try this as an idea:
Encrypt the data in the table(s) with an AES or similar cipher. Keep
the AES key very long, and implement the decryption of the data as a
function in the app - inline if you like. This way the data only ever
lives unencrypted in memory and never on the hdd.

The AES key itself stays with you at all times.

Generate a public / private keypair, a really strong one, say 4096bit.
Keep the private key private :-)

What you want to do now is to generate a unique public / private
keypair for each client / copy that uses the application.

Sign (Encrypt) the AES key with your private key
Encrypt the 'Signed Key' with the customers public key

Ship the resulting key to the client, as well as their private key
(keep a copy of both public / private keys of the client for yourself
for later use and license re-issuing).

The client now has their unique private key as well as your public key
(safe to do), and a uniquely encrypted (the clients public key) and
signed (by your private key) AES key. This way the key to the data is
tied to their license.

Now it would be possible to extract the AES key from this if the
programmer were clever enough to disassemble the process and layer by
layer strip away the keys to get to the AES key. If this process is
compiled into your application as a 'standard' component, the data can
stay encrypted except in memory (or even in memory if you load the
encrypted data as a recordset into ram unchanged from the source). The
user can 'use' the data but never really see the data.

If your base data changes over time, like a phonebook will for
example, you can issue another database file with a different AES key
and ship it with the new license key(s) to the clients.

If you are still worried about theft of the information then you need
to work with a software house that specialises in these things. You
could always place a 'marker' record in the data file that is unique
to each customer but looks normal to the rest of the data. You might
at least be able to tell where the leak came from!

Hope this helps

The Frog
From: David W. Fenton on
Salad <oil(a)vinegar.com> wrote in
news:75ednehyvMB0Hm7XnZ2dnUVZ_qZi4p2d(a)earthlink.com:

> David W. Fenton wrote:
>
>> There is no encryption built into Access.
>>
> I thought there is in A2007. I don't believe you can encrypt
> specific tables or fields; it's all or nothing.

Well, yes. There was that form of encryption built into all previous
versions of Jet that I know of (encryption was one of the parts of
securing with Jet ULS, since otherwise, your data and code is
viewable with a hex file viewer).

But it doesn't encrypt data in data fields, which is what I
understood the OP to be seeking.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
From: David W. Fenton on
"Tony Toews [MVP]" <ttoews(a)telusplanet.net> wrote in
news:4ai7f5p0bnqh6ak1q6nb4a2ptj9e2tn54s(a)4ax.com:

> If under oh, say, 50 Mb, why not supply some sort of
> encrypted text file and read the entire file into RAM into an
> Enum. And see if it even needs to be sorted with a binary lookup
> or not. Maybe running down 100K array sequentially is fast enough
> for your requirements.

He seems to be fixated on using ACCDB as his data store.

And really doesn't want any actual advice, seems to me.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/