Home All Groups Group Topic Archive Search About

MDE application cracking issues

Author
1 Mar 2009 11:19 PM
Zikar
I have written an application in which I have included several advanced
levels of security by VBA, Microsoft Access built-in Authentications and
permissions etc...

The last most important part of my security on my software application is
having converted it to an MDE file. My question is that would there be anyone
smart enough to be able to crack my MDE application or is this a robust
procedure?

I also would like to know if there are people out there who could be smart
enough to dis-assemble my application and get my project Code. My main
concern is someone getting hold of my code which I do want to protect with a
high level of confidence.

Can someone advise me on this issue? If this procedure that I have done is
not practical or strong enough, can I get any good advice on what is the best
procedure to protect my Project Code? I would like to know of how I can
create a (.exe) file for my application with Access if possible. I would
greatly appreciate any help and guidance. Thanks.

Author
2 Mar 2009 1:22 AM
Tony Toews [MVP]
Zikar <Zi***@discussions.microsoft.com> wrote:

>I also would like to know if there are people out there who could be smart
>enough to dis-assemble my application and get my project Code.

MDE to MDB Conversion Service for Microsoft® Access
http://www.everythingaccess.com/mdeconversion.htm

>My main
>concern is someone getting hold of my code which I do want to protect with a
>high level of confidence.

Wayne has stated that he requires copyright proof.  To what extent I
don't know.

>Can someone advise me on this issue? If this procedure that I have done is
>not practical or strong enough, can I get any good advice on what is the best
>procedure to protect my Project Code? I would like to know of how I can
>create a (.exe) file for my application with Access if possible. I would
>greatly appreciate any help and guidance.

Compiled .NET is even easier to crack.

Tony
--
Tony Toews, Microsoft Access MVP
   Please respond only in the newsgroups so that others can
read the entire thread of messages.
   Microsoft Access Links, Hints, Tips & Accounting Systems at
http://www.granite.ab.ca/accsmstr.htm
   Tony's Microsoft Access Blog - http://msmvps.com/blogs/access/
Are all your drivers up to date? click for free checkup

Author
3 Mar 2009 1:05 PM
Zikar
Thanks Tony for the reference. I guess the challenge for me now is to develop
a robust procedure which prevents anyone from being able to claim ownership
as my project is continuously being developed and therefore I cannot lock it
under a copyright. I wonder if the guys at everythingaccess have stringent
procedures to verify that their prospect contacts are genuine. Your help was
greatly appreciated.

Cheers


Show quoteHide quote
"Tony Toews [MVP]" wrote:

> Zikar <Zi***@discussions.microsoft.com> wrote:
>
> >I also would like to know if there are people out there who could be smart
> >enough to dis-assemble my application and get my project Code.
>
> MDE to MDB Conversion Service for Microsoft® Access
> http://www.everythingaccess.com/mdeconversion.htm
>
> >My main
> >concern is someone getting hold of my code which I do want to protect with a
> >high level of confidence.
>
> Wayne has stated that he requires copyright proof.  To what extent I
> don't know.
>
> >Can someone advise me on this issue? If this procedure that I have done is
> >not practical or strong enough, can I get any good advice on what is the best
> >procedure to protect my Project Code? I would like to know of how I can
> >create a (.exe) file for my application with Access if possible. I would
> >greatly appreciate any help and guidance.
>
> Compiled .NET is even easier to crack.
>
> Tony
> --
> Tony Toews, Microsoft Access MVP
>    Please respond only in the newsgroups so that others can
> read the entire thread of messages.
>    Microsoft Access Links, Hints, Tips & Accounting Systems at
> http://www.granite.ab.ca/accsmstr.htm
>    Tony's Microsoft Access Blog - http://msmvps.com/blogs/access/
>
Author
3 Mar 2009 1:59 PM
Keith Wilby
"Zikar" <Zi***@discussions.microsoft.com> wrote in message
news:9675D35D-19AB-4B97-97C4-4DE5C546D01D@microsoft.com...
> I wonder if the guys at everythingaccess have stringent
> procedures to verify that their prospect contacts are genuine.
>

I suspect that the onus is on the client to testify (rather than prove) that
they own the copyright.  I further suspect that copyrighting a wheel that
works in a slightly different way to other wheels is a whole other can 'o'
worms.

Keith.
Author
3 Mar 2009 10:56 PM
Zikar
Keith, I thank you for the highlight you provided on this issue.

Zikar

Show quoteHide quote
"Keith Wilby" wrote:

> "Zikar" <Zi***@discussions.microsoft.com> wrote in message
> news:9675D35D-19AB-4B97-97C4-4DE5C546D01D@microsoft.com...
> > I wonder if the guys at everythingaccess have stringent
> > procedures to verify that their prospect contacts are genuine.
> >
>
> I suspect that the onus is on the client to testify (rather than prove) that
> they own the copyright.  I further suspect that copyrighting a wheel that
> works in a slightly different way to other wheels is a whole other can 'o'
> worms.
>
> Keith.
>
>
Author
4 Mar 2009 4:16 AM
David W. Fenton
=?Utf-8?B?WmlrYXI=?= <Zi***@discussions.microsoft.com> wrote in
news:9675D35D-19AB-4B97-97C4-4DE5C546D01D@microsoft.com:

> I guess the challenge for me now is to develop
> a robust procedure which prevents anyone from being able to claim
> ownership as my project is continuously being developed and
> therefore I cannot lock it under a copyright. I wonder if the guys
> at everythingaccess have stringent procedures to verify that their
> prospect contacts are genuine. Your help was greatly appreciated.

Are you encrypting your MDE?

--
David W. Fenton                  http://www.dfenton.com/
usenet at dfenton dot com    http://www.dfenton.com/DFA/
Author
6 Mar 2009 2:16 AM
Zikar
No, I am not encrypting the MDE. I thought that an MDE file is an encryption
by itself of the MDB. When you say encrypt do you mean encode or is it
creating a replica? I read more about what MDE provides and I believe I need
to do more.I would appreciate if you can explain on the advantages of
encryting and what method can be best applied.

Thanks


Show quoteHide quote
"David W. Fenton" wrote:

> =?Utf-8?B?WmlrYXI=?= <Zi***@discussions.microsoft.com> wrote in
> news:9675D35D-19AB-4B97-97C4-4DE5C546D01D@microsoft.com:
>
> > I guess the challenge for me now is to develop
> > a robust procedure which prevents anyone from being able to claim
> > ownership as my project is continuously being developed and
> > therefore I cannot lock it under a copyright. I wonder if the guys
> > at everythingaccess have stringent procedures to verify that their
> > prospect contacts are genuine. Your help was greatly appreciated.
>
> Are you encrypting your MDE?
>
> --
> David W. Fenton                  http://www.dfenton.com/
> usenet at dfenton dot com    http://www.dfenton.com/DFA/
>
Author
6 Mar 2009 11:30 PM
David W. Fenton
=?Utf-8?B?WmlrYXI=?= <Zi***@discussions.microsoft.com> wrote in
news:7E3695D2-94AA-4076-A381-F19EFEF48C47@microsoft.com:

> No, I am not encrypting the MDE. I thought that an MDE file is an
> encryption by itself of the MDB. When you say encrypt do you mean
> encode or is it creating a replica? I read more about what MDE
> provides and I believe I need to do more.I would appreciate if you
> can explain on the advantages of encryting and what method can be
> best applied.

Encrypting the MDE is essential if you have an constants in your
code that would give away important information, such as usernames
and passwords. When you create an MDE, it throws away the code and
keeps only the compiled p-code, but it has to keep string values
that you type into the code literally. This means that a username or
password will show up in plain text in the middle of the binary
p-code. Because of that, you need to encrypt your MDE in order to
prevent someone from compromising it by browsing it with a hex
editor.

--
David W. Fenton                  http://www.dfenton.com/
usenet at dfenton dot com    http://www.dfenton.com/DFA/
Author
8 Mar 2009 10:03 PM
Tony Toews [MVP]
"David W. Fenton" <XXXuse***@dfenton.com.invalid> wrote:

>Encrypting the MDE is essential if you have an constants in your
>code that would give away important information, such as usernames
>and passwords. When you create an MDE, it throws away the code and
>keeps only the compiled p-code, but it has to keep string values
>that you type into the code literally. This means that a username or
>password will show up in plain text in the middle of the binary
>p-code. Because of that, you need to encrypt your MDE in order to
>prevent someone from compromising it by browsing it with a hex
>editor.

Or you encrypt those constants within the code.   And I further
obfuscate them.

Tony
--
Tony Toews, Microsoft Access MVP
   Please respond only in the newsgroups so that others can
read the entire thread of messages.
   Microsoft Access Links, Hints, Tips & Accounting Systems at
http://www.granite.ab.ca/accsmstr.htm
   Tony's Microsoft Access Blog - http://msmvps.com/blogs/access/
Author
9 Mar 2009 1:46 AM
David W. Fenton
Show quote Hide quote
"Tony Toews [MVP]" <tto***@telusplanet.net> wrote in
news:a5g8r45sejk16als6cp079vc54dltsr99p@4ax.com:

> "David W. Fenton" <XXXuse***@dfenton.com.invalid> wrote:
>
>>Encrypting the MDE is essential if you have an constants in your
>>code that would give away important information, such as usernames
>>and passwords. When you create an MDE, it throws away the code and
>>keeps only the compiled p-code, but it has to keep string values
>>that you type into the code literally. This means that a username
>>or password will show up in plain text in the middle of the binary
>>p-code. Because of that, you need to encrypt your MDE in order to
>>prevent someone from compromising it by browsing it with a hex
>>editor.
>
> Or you encrypt those constants within the code.   And I further
> obfuscate them.

Hmm. Are you suggesting that Access's encryption is not sufficient?
It's stronger in 2007 than before, in fact.

--
David W. Fenton                  http://www.dfenton.com/
usenet at dfenton dot com    http://www.dfenton.com/DFA/
Author
9 Mar 2009 2:46 AM
Tony Toews [MVP]
"David W. Fenton" <XXXuse***@dfenton.com.invalid> wrote:

>> Or you encrypt those constants within the code.   And I further
>> obfuscate them.
>
>Hmm. Are you suggesting that Access's encryption is not sufficient?
>It's stronger in 2007 than before, in fact.

No.   I just have no experience with it and don't want to bother with
it.

Tony
--
Tony Toews, Microsoft Access MVP
   Please respond only in the newsgroups so that others can
read the entire thread of messages.
   Microsoft Access Links, Hints, Tips & Accounting Systems at
http://www.granite.ab.ca/accsmstr.htm
   Tony's Microsoft Access Blog - http://msmvps.com/blogs/access/
Author
9 Mar 2009 9:01 PM
David W. Fenton
"Tony Toews [MVP]" <tto***@telusplanet.net> wrote in
news:4n09r4lk49up69u0211qqg8j9pc0d4mbq2@4ax.com:

> "David W. Fenton" <XXXuse***@dfenton.com.invalid> wrote:
>
>>> Or you encrypt those constants within the code.   And I further
>>> obfuscate them.
>>
>>Hmm. Are you suggesting that Access's encryption is not
>>sufficient? It's stronger in 2007 than before, in fact.
>
> No.   I just have no experience with it and don't want to bother
> with it.

Uh, that would suggest you've never actually use Jet ULS?

It's pretty simple, actually -- a single step on the Tools |
Security menu. And then it's completely transparent to the user --
Access decrypts it when opening, without any additional steps
required.

I just can't see the point of writing code to encrypt/decrypt
strings in your MDEs when you can just do it the built-in way.

--
David W. Fenton                  http://www.dfenton.com/
usenet at dfenton dot com    http://www.dfenton.com/DFA/
Author
9 Mar 2009 10:53 PM
Tony Toews [MVP]
Show quote Hide quote
"David W. Fenton" <XXXuse***@dfenton.com.invalid> wrote:

>>>Hmm. Are you suggesting that Access's encryption is not
>>>sufficient? It's stronger in 2007 than before, in fact.
>>
>> No.   I just have no experience with it and don't want to bother
>> with it.
>
>Uh, that would suggest you've never actually use Jet ULS?
>
>It's pretty simple, actually -- a single step on the Tools |
>Security menu. And then it's completely transparent to the user --
>Access decrypts it when opening, without any additional steps
>required.
>
>I just can't see the point of writing code to encrypt/decrypt
>strings in your MDEs when you can just do it the built-in way.

Ah, but then I suspect the MDE won't zip/compress down as much as it
did previously.  That's one minor excuse.

Tony
--
Tony Toews, Microsoft Access MVP
   Please respond only in the newsgroups so that others can
read the entire thread of messages.
   Microsoft Access Links, Hints, Tips & Accounting Systems at
http://www.granite.ab.ca/accsmstr.htm
   Tony's Microsoft Access Blog - http://msmvps.com/blogs/access/
Author
11 Mar 2009 4:44 AM
David W. Fenton
Show quote Hide quote
"Tony Toews [MVP]" <tto***@telusplanet.net> wrote in
news:je7br45m39s9eq334lettsaepkukl6em79@4ax.com:

> "David W. Fenton" <XXXuse***@dfenton.com.invalid> wrote:
>
>>>>Hmm. Are you suggesting that Access's encryption is not
>>>>sufficient? It's stronger in 2007 than before, in fact.
>>>
>>> No.   I just have no experience with it and don't want to bother
>>> with it.
>>
>>Uh, that would suggest you've never actually use Jet ULS?
>>
>>It's pretty simple, actually -- a single step on the Tools |
>>Security menu. And then it's completely transparent to the user --
>>Access decrypts it when opening, without any additional steps
>>required.
>>
>>I just can't see the point of writing code to encrypt/decrypt
>>strings in your MDEs when you can just do it the built-in way.
>
> Ah, but then I suspect the MDE won't zip/compress down as much as
> it did previously.  That's one minor excuse.

It won't compress at all.

Why would that be an issue?

--
David W. Fenton                  http://www.dfenton.com/
usenet at dfenton dot com    http://www.dfenton.com/DFA/
Author
11 Mar 2009 6:22 PM
Tony Toews [MVP]
"David W. Fenton" <XXXuse***@dfenton.com.invalid> wrote:

>> Ah, but then I suspect the MDE won't zip/compress down as much as
>> it did previously.  That's one minor excuse.
>
>It won't compress at all.
>
>Why would that be an issue?

Significantly more reliable to email a 1,355 kb zipped file than an
6,188 kb file.   Same with downloading the install package from my
website.

Tony
--
Tony Toews, Microsoft Access MVP
   Please respond only in the newsgroups so that others can
read the entire thread of messages.
   Microsoft Access Links, Hints, Tips & Accounting Systems at
http://www.granite.ab.ca/accsmstr.htm
   Tony's Microsoft Access Blog - http://msmvps.com/blogs/access/
Author
11 Mar 2009 9:08 PM
David W. Fenton
Show quote Hide quote
"Tony Toews [MVP]" <tto***@telusplanet.net> wrote in
news:580gr41kndgatsuo3574k95tcun7ofiqd2@4ax.com:

> "David W. Fenton" <XXXuse***@dfenton.com.invalid> wrote:
>
>>> Ah, but then I suspect the MDE won't zip/compress down as much
>>> as it did previously.  That's one minor excuse.
>>
>>It won't compress at all.
>>
>>Why would that be an issue?
>
> Significantly more reliable to email a 1,355 kb zipped file than
> an 6,188 kb file.   Same with downloading the install package from
> my website.

I don't email, and I have remote access to most of my clients'
networks, though in almost all of those cases, I'd be doing
development remotely so there's no file transfer needed.

In terms of email reliability, I'm not sure what you mean. Certainly
many people have limits on the size of attachments, but the limits
I've encountered are mostly in the 10MB range. It's pretty easy to
put something on your website for download and vastly more efficient
than email!

I can't see any reliability issue when downloading from a website.
Perhaps you still have clients on dialup? In that case, I can't see
a whole lot of difference between 1355K and 6188K -- both would be
horrendous.

But none of that seems to me to justify hand encrypting your
constants. I just think that any MDE with sensitive constants in it
needs to be entirely encrypted, partly because of the fact that
encrypting part of it is just going to point out what's sensitive,
and then lead the industrious cracker to try to figure out how to
decrypt those particular strings. With a fully encrypted file, not
so much.

--
David W. Fenton                  http://www.dfenton.com/
usenet at dfenton dot com    http://www.dfenton.com/DFA/
Author
11 Mar 2009 10:56 PM
Tony Toews [MVP]
Show quote Hide quote
"David W. Fenton" <XXXuse***@dfenton.com.invalid> wrote:

>> Significantly more reliable to email a 1,355 kb zipped file than
>> an 6,188 kb file.   Same with downloading the install package from
>> my website.
>
>I don't email, and I have remote access to most of my clients'
>networks, though in almost all of those cases, I'd be doing
>development remotely so there's no file transfer needed.
>
>In terms of email reliability, I'm not sure what you mean. Certainly
>many people have limits on the size of attachments, but the limits
>I've encountered are mostly in the 10MB range. It's pretty easy to
>put something on your website for download and vastly more efficient
>than email!
>
>I can't see any reliability issue when downloading from a website.
>Perhaps you still have clients on dialup? In that case, I can't see
>a whole lot of difference between 1355K and 6188K -- both would be
>horrendous.

Reliable wasn't the right word.  Convenient certainly is.   I do email
beta versions of my Granite Fleet Manager FEs to a few clients for
them to test and critique before making available on my website.

>But none of that seems to me to justify hand encrypting your
>constants. I just think that any MDE with sensitive constants in it
>needs to be entirely encrypted, partly because of the fact that
>encrypting part of it is just going to point out what's sensitive,
>and then lead the industrious cracker to try to figure out how to
>decrypt those particular strings. With a fully encrypted file, not
>so much.

Those constants have lots of ASCII symbols and unreadable characters
in them so they blend in quite nicely with the random stuff in an MDE.
And they are further scrambled anyhow.

Again we are going to agree to disagree though.  Mind you it's always
good you are questioning my practices.  I'm forced to articulate
clearly my reasons.  Which may not have been so articulate at the
time.  <smile>

Tony
--
Tony Toews, Microsoft Access MVP
   Please respond only in the newsgroups so that others can
read the entire thread of messages.
   Microsoft Access Links, Hints, Tips & Accounting Systems at
http://www.granite.ab.ca/accsmstr.htm
   Tony's Microsoft Access Blog - http://msmvps.com/blogs/access/
Author
13 Mar 2009 1:32 PM
Wayne Phillips
> I just can't see the point of writing code to encrypt/decrypt
> strings in your MDEs when you can just do it the built-in way.


Before A2007, the encryption key was stored in the MDB file header.  That
vulnerability lead to a simple (and free) tool appearing on the web that lets
you decode an encoded MDB file without needing to know anything about the ULS
that may be applied.  Remember also that ULS and Access encryption are two
seperate things - however the two are usually applied together (e.g. when you
apply ULS, encryption is automatically applied).

Given the vulnerability (by design), the Access encryption is _very_ easily
reversed and therefore offers no real protection.  Once the free tool is used
to decode the protected file, you would then be able to get in with a hex
editor and dig around freely.

In A2007 the difference is that the database password is now used as the key
to the encryption layer.  Great, however in order to use the database you
need to release the password to your users... and therefore the encryption
can be removed easily by any of your users.  Oh the irony...
Author
13 Mar 2009 11:58 PM
David W. Fenton
=?Utf-8?B?V2F5bmUgUGhpbGxpcHM=?= <Wayne
Phill***@discussions.microsoft.com> wrote in
news:E0665B09-8E96-4DC7-B079-4E0941A3E2D4@microsoft.com:

[quoting me, unattributed:]
>> I just can't see the point of writing code to encrypt/decrypt
>> strings in your MDEs when you can just do it the built-in way.
>
> Before A2007, the encryption key was stored in the MDB file
> header.

Why would Access need to store an encryption key? You seem to be
confusing password protection (introduced in A2K) with encryption
(which was always part of Access going back as far as I'm aware,
i.e., Access 2).

> That
> vulnerability lead to a simple (and free) tool appearing on the
> web that lets you decode an encoded MDB file without needing to
> know anything about the ULS that may be applied.  Remember also
> that ULS and Access encryption are two seperate things - however
> the two are usually applied together (e.g. when you apply ULS,
> encryption is automatically applied).

I think you're completelly confused.

> Given the vulnerability (by design), the Access encryption is
> _very_ easily reversed and therefore offers no real protection.

The *password* protection is very easily reversed, but not the
encryption.

>  Once the free tool is used
> to decode the protected file, you would then be able to get in
> with a hex editor and dig around freely.
>
> In A2007 the difference is that the database password is now used
> as the key to the encryption layer.  Great, however in order to
> use the database you need to release the password to your users...
> and therefore the encryption can be removed easily by any of your
> users.  Oh the irony...

Passwords have ZILCH to do with Jet encryption.

--
David W. Fenton                  http://www.dfenton.com/
usenet at dfenton dot com    http://www.dfenton.com/DFA/
Author
14 Mar 2009 6:42 AM
Wayne Phillips
"David W. Fenton" wrote:
> Why would Access need to store an encryption key? You seem to be
> confusing password protection (introduced in A2K) with encryption
> (which was always part of Access going back as far as I'm aware,
> i.e., Access 2).

No, I'm not confused at all.  You are.

ULS security is TOTALLY independant of the 'encryption' Access uses.  ULS
can be applied with or without encryption (you can remove the encryption part
with the encrypt/encode menu options after applying ULS).  Similarly
encryption can be applied with or without applying ULS.

A little test for you... use the encrypt / encode menu option in the
Tools->Security menu on a new MDB database file (pre Access 2007) - this will
encrypt your file without ULS.   Now close and open the file in Access... and
then tell me how Access decrypts the file without prompting the user for the
encryption key.   I'll tell you how...  because it stores the encryption key
in the file header.

Indeed, the encryption has been offered way back in Jet and hadn't changed
until Access 2007.  Before Access 2007, the encryption is RC4 32 bit key and
in A2007 its RC4 with a 40-bit key by default (but can be increased in A2007).

>
> I think you're completelly confused.

Erm... no, I'm not.  You are.

> The *password* protection is very easily reversed, but not the
> encryption.

You seem so convinced that you are right, yet I _know_ I'm right.

Why don't you apply your ULS and then head over to Serge Gavrilovs site:

http://accesstools.narod.ru/

Download MDB DeCryptor and decrypt your file.  Now open the file in a hex
editor... Suprise, suprise - the file no longer is encrypted.

> Passwords have ZILCH to do with Jet encryption.
>

Again you are wrong.

In Access 2007 ACCDBs the database password you set IS the RC4 encryption
key (well a hash version of it). 

You can choose to ignore me, or you can do a little more research and you'll
find everything I've said is correct.  I'm the guy that offers database
repair services, MDE to MDB conversion services etc - believe it or not, I do
know what I'm talking about. 

Wayne Phillips.
http://www.everythingaccess.com
Author
14 Mar 2009 9:53 PM
David W. Fenton
=?Utf-8?B?V2F5bmUgUGhpbGxpcHM=?=
<WaynePhill***@discussions.microsoft.com> wrote in
Show quoteHide quote
news:485D0BB1-CECF-49E6-8444-88EC8FBA7B18@microsoft.com:

> "David W. Fenton" wrote:
>> Why would Access need to store an encryption key? You seem to be
>> confusing password protection (introduced in A2K) with encryption
>> (which was always part of Access going back as far as I'm aware,
>> i.e., Access 2).
>
> No, I'm not confused at all.  You are.
>
> ULS security is TOTALLY independant of the 'encryption' Access
> uses.  ULS can be applied with or without encryption (you can
> remove the encryption part with the encrypt/encode menu options
> after applying ULS).  Similarly encryption can be applied with or
> without applying ULS.

But if you don't encrypt, you haven't fully secured your data. If
you're trying to protect information from being read, you don't just
want to block access to your data through Jet, but you also want to
prevent someone with a text editor from pulling out data by just
reading in an unencrypted form.

So, yes, you can apply ULS without encryption.

But that doesn't secure your data unless you encrypt it.

> A little test for you... use the encrypt / encode menu option in
> the Tools->Security menu on a new MDB database file (pre Access
> 2007) - this will encrypt your file without ULS.   Now close and
> open the file in Access... and then tell me how Access decrypts
> the file without prompting the user for the encryption key.   I'll
> tell you how...  because it stores the encryption key in the file
> header.

No, because the encryption key is stored in the Access executable
because it's the same for all databases.

Now, with passwords, yes, the encryption key is stored in the
database, because it *has* to be, since it's based on the password.

But for plain Jet encryption, there is no need for storing an
encryption key.

> Indeed, the encryption has been offered way back in Jet and hadn't
> changed until Access 2007.  Before Access 2007, the encryption is
> RC4 32 bit key and in A2007 its RC4 with a 40-bit key by default
> (but can be increased in A2007).

And it's not stored in the MDB.

Show quoteHide quote
>> I think you're completelly confused.
>
> Erm... no, I'm not.  You are.
>
>> The *password* protection is very easily reversed, but not the
>> encryption.
>
> You seem so convinced that you are right, yet I _know_ I'm right.
>
> Why don't you apply your ULS and then head over to Serge Gavrilovs
> site:
>
> http://accesstools.narod.ru/
>
> Download MDB DeCryptor and decrypt your file.  Now open the file
> in a hex editor... Suprise, suprise - the file no longer is
> encrypted.

An encrypted file is not going to protect you if you aren't using
ULS (unless you're only using it to encrypt strings in the code of
an MDE). But if you are, they'll have to crack the ULS (which we all
know is easily done), and then they'll have access to your data with
no additional cracking necessary.

>> Passwords have ZILCH to do with Jet encryption.
>
> Again you are wrong.

We had encryption before we had passwords. Explain how that worked,
then.

> In Access 2007 ACCDBs the database password you set IS the RC4
> encryption key (well a hash version of it). 

Yes. This is a changed, and a good change for those who find
passwords useful (I find them completely worthless).

But if you have an MDB and encrypt in A2007 without a password, the
password is not used as the encryption key, because, of course,
there *is* no password.

> You can choose to ignore me, or you can do a little more research
> and you'll find everything I've said is correct.  I'm the guy that
> offers database repair services, MDE to MDB conversion services
> etc - believe it or not, I do know what I'm talking about. 

And you don't seem to understand some very basic things about Jet,
which leads me to believe that I should never recommend your
services.

--
David W. Fenton                  http://www.dfenton.com/
usenet at dfenton dot com    http://www.dfenton.com/DFA/
Author
14 Mar 2009 11:06 PM
Wayne Phillips
"David W. Fenton" wrote:
> But if you don't encrypt, you haven't fully secured your data.

Wrong.  I've already made my point... Jet encryption does *nothing* to
protect your data as it can be completely reversed independantly of whether
you have applied ULS or not.

Did you even try out the previously mentioned tool on one of your ULS
protected files (and then looked at the file with a Hex editor)?

This is the basis of my whole argument with you here:

Stating that the encryption offers better protection when the encryption is
fundamentally flawed, is wrong.  (Note that I'm talking prior to Access 2007
ACCDB file format here, obviously).


> If you're trying to protect information from being read, you don't just
> want to block access to your data through Jet, but you also want to
> prevent someone with a text editor from pulling out data by just
> reading in an unencrypted form.

Agreed.  But Jet encryption is useless (prior to A2007 ACCDB file format)
for the reasons already explained.


> So, yes, you can apply ULS without encryption.
> But that doesn't secure your data unless you encrypt it.

But if you encrypt it (even with ULS), then it can be decrypted with ease
(using the tool aforementioned). 

So what's the point in doing that?  Jet encryption is flawed, so it's next
to useless. 

It is better to look at other methods, like Tony has.


> No, because the encryption key is stored in the Access executable
> because it's the same for all databases.

No it is not.  Stop assuming things.  The encryption key is stored in the
file header. 

The encryption key is randomly generated when you create the MDB file and on
subsequent compact & repairs. 

It's a stupid argument since the effect is the same as if the encryption key
had been constant in the EXE ( - but it is not).


> Now, with passwords, yes, the encryption key is stored in the
> database, because it *has* to be, since it's based on the password.
>
> But for plain Jet encryption, there is no need for storing an
> encryption key.
>
> And it's not stored in the MDB.

The encryption key IS stored in the file header.  Again stop making
assumptions when you obviously know nothing about what you are talking about.

You are still not understanding that ULS has _no_ effect on Jet encryption. 

Jet encryption is a completely independant layer of security and is not
affected AT ALL by ULS.


> An encrypted file is not going to protect you if you aren't using
> ULS (unless you're only using it to encrypt strings in the code of
> an MDE). But if you are, they'll have to crack the ULS (which we all
> know is easily done), and then they'll have access to your data with
> no additional cracking necessary.

An encrypted file does NOT offer better protection if combined with ULS. 
Simple.

Frankly, I'm tired of repeating myself.


> We had encryption before we had passwords. Explain how that worked,
> then.

As I have said far too many times here... the random encryption key is
stored in the file header (- did you get that?). 

Neither database passwords, nor ULS passwords affect the encryption in
anyway.  (apart from A2007 ACCDBs database passwords which I've already
explained)


> Yes. This is a changed, and a good change for those who find
> passwords useful (I find them completely worthless).

Me too.  A point I also made in my first post.  Worthless in the majority of
cases.


> But if you have an MDB and encrypt in A2007 without a password, the
> password is not used as the encryption key, because, of course,
> there *is* no password.


When I said Access 2007, I meant ACCDB files, not MDB files. 

If you use Access 2007 to encrypt an MDB file then it has the same effect as
encrypting it with Access 2003 (i.e. you do not benefit from better
protection).

It is the ACCDB file format that offers the better protection, not the
version of Access used.


> And you don't seem to understand some very basic things about Jet,


It is you that does not understand some very basic things about Jet.

As an expert in recovering Access databases, over the years I've documented
the file formats completely. 

I know exactly what every single byte of data in a Jet/ACE database is and
does.  Can you say the same?

I think that puts me in a better position to comment than your good self. 
No offence intended.


> which leads me to believe that I should never recommend your
> services.

I don't think I'll lose much sleep over that :)

Wayne Phillips
http://www.everythingaccess.com
Author
15 Mar 2009 6:41 AM
Wayne Phillips
For more detailed info, see this article I've just put up:

http://www.everythingaccess.com/tutorials.asp?ID=185


Personally I am not bothered whether you believe what I write is accurate or
not.  I know it's accurate - and that's what matters.

If you still think your approach of using ULS + encryption will stop a
determined person from reading/editing your file in a hex editor, then that's
your problem.  I can only advise.  Discussion over.

Wayne Phillips
http://www.everythingaccess.com
Author
15 Mar 2009 10:59 PM
David W. Fenton
=?Utf-8?B?V2F5bmUgUGhpbGxpcHM=?=
<WaynePhill***@discussions.microsoft.com> wrote in
news:ABAAC421-4E49-4CB8-86C6-FDEECF8DD31A@microsoft.com:

[]

<plonk>

--
David W. Fenton                  http://www.dfenton.com/
usenet at dfenton dot com    http://www.dfenton.com/DFA/
Author
9 Mar 2009 2:17 AM
Zikar
Thank you Tony again for this suggestion. As David explained, I do really
have a very important constant value within the code that would lead someone
to gain high level access permission to my project code i.e. entry level as
Database owner. I tried to look for references to help me understand how to
encrypt constants within the code but could not find one. I would greatly
appreciate if you could direct me to any documentation that explains this
with possible examples. Thanks.

Show quoteHide quote
"Tony Toews [MVP]" wrote:

> "David W. Fenton" <XXXuse***@dfenton.com.invalid> wrote:
>
> >Encrypting the MDE is essential if you have an constants in your
> >code that would give away important information, such as usernames
> >and passwords. When you create an MDE, it throws away the code and
> >keeps only the compiled p-code, but it has to keep string values
> >that you type into the code literally. This means that a username or
> >password will show up in plain text in the middle of the binary
> >p-code. Because of that, you need to encrypt your MDE in order to
> >prevent someone from compromising it by browsing it with a hex
> >editor.
>
> Or you encrypt those constants within the code.   And I further
> obfuscate them.
>
> Tony
> --
> Tony Toews, Microsoft Access MVP
>    Please respond only in the newsgroups so that others can
> read the entire thread of messages.
>    Microsoft Access Links, Hints, Tips & Accounting Systems at
> http://www.granite.ab.ca/accsmstr.htm
>    Tony's Microsoft Access Blog - http://msmvps.com/blogs/access/
>
Author
9 Mar 2009 9:02 PM
David W. Fenton
=?Utf-8?B?WmlrYXI=?= <Zi***@discussions.microsoft.com> wrote in
news:0D4C5FA1-1D34-4960-8C96-F098904512B5@microsoft.com:

> As David explained, I do really
> have a very important constant value within the code that would
> lead someone to gain high level access permission to my project
> code i.e. entry level as Database owner. I tried to look for
> references to help me understand how to encrypt constants within
> the code but could not find one. I would greatly appreciate if you
> could direct me to any documentation that explains this with
> possible examples.

I would suggest that encrypting the database via TOOLS | SECURITY
should be sufficient to your purposes. I've certainly always
considered it sufficient.

--
David W. Fenton                  http://www.dfenton.com/
usenet at dfenton dot com    http://www.dfenton.com/DFA/
Author
9 Mar 2009 1:34 AM
Zikar
Thanks David for this clarification I will apply this method and see how it
would go.

Cheers

Show quoteHide quote
"David W. Fenton" wrote:

> =?Utf-8?B?WmlrYXI=?= <Zi***@discussions.microsoft.com> wrote in
> news:7E3695D2-94AA-4076-A381-F19EFEF48C47@microsoft.com:
>
> > No, I am not encrypting the MDE. I thought that an MDE file is an
> > encryption by itself of the MDB. When you say encrypt do you mean
> > encode or is it creating a replica? I read more about what MDE
> > provides and I believe I need to do more.I would appreciate if you
> > can explain on the advantages of encryting and what method can be
> > best applied.
>
> Encrypting the MDE is essential if you have an constants in your
> code that would give away important information, such as usernames
> and passwords. When you create an MDE, it throws away the code and
> keeps only the compiled p-code, but it has to keep string values
> that you type into the code literally. This means that a username or
> password will show up in plain text in the middle of the binary
> p-code. Because of that, you need to encrypt your MDE in order to
> prevent someone from compromising it by browsing it with a hex
> editor.
>
> --
> David W. Fenton                  http://www.dfenton.com/
> usenet at dfenton dot com    http://www.dfenton.com/DFA/
>

Bookmark and Share