Home All Groups Group Topic Archive Search About

if I encrypt key data why do I want or need SSL?

Author
28 Mar 2006 4:46 PM
Rob R. Ainscough
Just curious why people freak out about not having SSL and/or having a SQL
Server port 1433 open.

If I do the following why do I care about SSL or port 1433?

1.  40 character passwords for all SQL accounts
2.  any sensitive data written to the SQL server is encrypted (via one of
numerous encryption methods provided in .NET 2.0) in the database
3.  any sensitive data sent over http is encrypted (via one of numerous
encryption methods provided in .NET 2.0)
4.  the encryption key itself is encrypted and stored in a location that
would be hard to find even if someone had admin rights to the server and the
only DLL that can deal with the key is a signed assembly with a strong name
key file.
5.  all cookie information that is sensitive is encrypted
6.  all "user accounts" (data mining folks) only access data feeds
(databases) that do not contain sensitive data

I use SSL to communicate with external sources that require it, but they pay
for an maintain their certificates.  I do provide split tunnel VPN solutions
for the more paranoid clients, but it seems to me that we've sorta gone
overboard on security (applied too many layers).  I'm all for intelligent
security, but not for some of the wacky overkill blanket solutions I see out
there -- solutions that still have vulnerability from user accounts.  The
folks that are hacking into CC data and the like are doing so because
company X had obvious open holes (easy to guess user account, using default
passwords, etc. etc.).

What it seems the end result is, companies that are paranoid, seeking
blanket solutions, but still vulnerable to simple password/userID hacking.

In the systems I design and build, even if a userID/passsword we're hacked
(extremely unlikely with 40 character passwords on all accounts that are
meaningful) they would still be confronted with encrypted data which will be
completely useless to them.  Even if they guessed the sa account password
and deleted the database that would be a hassle (aka gotta get an offsite
backup) but still NO sensitive data was compromised.

Rob

Author
28 Mar 2006 7:23 PM
Andy
It sounds like it would still be possible for an attacker to put junk
data into your system.  Take your encrypted value, and replace it with
another encrypted value.  SSL would prevent this kind of tampering,
since the whole message is signed, not just individual fields.

Leaving port 1433 open to the internet has caused problems in the past;
perhaps you heard of the slammer worm?

Even with a strongly named assembly you are still open to some kinds of
attacks.

Finally you may need to communicate data with a web service at some
point, and I doubt you'd want to provide your key to the 3rd party.
Author
28 Mar 2006 10:13 PM
Rob R. Ainscough
How would they put junk data into my system?  Are you assuming they've been
able to hack in via an account?  Unless ADO.NET 2.0 has some fundamental
security flaws when communicating to a SQL server?  I could encrypt the
entire message also, all that SSL does for me is provide encrypted access to
external sources beyond the control of my security.

Slammer real world impact has been relatively low threat (which has been
countered via a patch a long time ago) -- in fact, it will provide zero
benefit in my situation (even if the SQL server is not patched) -- gaining
Windows Service security context (sends 376 bytes to UDP port 1434 for
buffer overflow) means nothing to the way my security is established -- the
only way they can obtain any value is if they were able to locate my strong
name DLL responsible for all security aspects, assuming they could get into
the DLL and somehow decompile it (without the public/private key pair) they
would then have to discover where in the DLL the call is to get the
encrypted key and then also have to realize that key needs to be
unencrypted.

In fact, the way my security is enforced has minimal reliance on the OS or
the SQL server -- about all a hacker could do is delete or change data and
that is assuming they have found a flaw in the OS/Service (i.e. slammer)  -- 
data changes will soon be rejected by my applications as they will not
validate and be rejected as bogus data.

Can you provide details of how you might attack a strongly named assembly?
Opening the file in binary will not be terribly helpful and you can't
decompile it to any useful context, so please explain?

Web Services use the same approach, none of my web service will do anything
if they don't get a valid encrypted key as a parameter to all and any method
made available by the service and any sensitive data passed to from a web
service is always encrypted.

Rob

Show quoteHide quote
"Andy" <ajj3***@alum.rit.edu> wrote in message
news:1143573820.754223.139480@u72g2000cwu.googlegroups.com...
> It sounds like it would still be possible for an attacker to put junk
> data into your system.  Take your encrypted value, and replace it with
> another encrypted value.  SSL would prevent this kind of tampering,
> since the whole message is signed, not just individual fields.
>
> Leaving port 1433 open to the internet has caused problems in the past;
> perhaps you heard of the slammer worm?
>
> Even with a strongly named assembly you are still open to some kinds of
> attacks.
>
> Finally you may need to communicate data with a web service at some
> point, and I doubt you'd want to provide your key to the 3rd party.
>
Author
28 Mar 2006 10:43 PM
Henning Krause [MVP]
Hello Rob,

If an attacker compromises your system somehow and gets your strong named
assembly, he can simply decompile it. A strong name doesn't protect an
assembly from being decompiled at all.

You talk about passwords with a length of 40 characters - how are they used?
Are those passwords stored somewhere? (Surely they will - there are very few
people who will remember a 40 char password which meets some complexity
requirements). How are they transferred over the wire?

You say that you are transmitting all sensitive data in an encrypted form -
what encryption do you use? Symetric? Asymetric? If you are using the first,
you must exchange the keys securely - and store them securely. If you are
using asymetric encryption, you are rebuilding https...

Talking about Slammer... yes there might be a patch - but you don't know for
sure if there is another, yet undiscovered hole. Undiscovered by the
public...  And if the attacker gains access to the SQL Server, he *might* be
able to get access to your strong named assembly. And after he decompiled
the assembly he will find the secret encryption key.

The encryption key itself - are you using one for all the encryption stuff?
How often do you change it? It looks to me like a single point of failure.

Regards,
Henning Krause

Show quoteHide quote
"Rob R. Ainscough" <roba***@pacbell.net> wrote in message
news:Oqt$gTrUGHA.5808@TK2MSFTNGP12.phx.gbl...
> How would they put junk data into my system?  Are you assuming they've
> been able to hack in via an account?  Unless ADO.NET 2.0 has some
> fundamental security flaws when communicating to a SQL server?  I could
> encrypt the entire message also, all that SSL does for me is provide
> encrypted access to external sources beyond the control of my security.
>
> Slammer real world impact has been relatively low threat (which has been
> countered via a patch a long time ago) -- in fact, it will provide zero
> benefit in my situation (even if the SQL server is not patched) -- gaining
> Windows Service security context (sends 376 bytes to UDP port 1434 for
> buffer overflow) means nothing to the way my security is established -- 
> the only way they can obtain any value is if they were able to locate my
> strong name DLL responsible for all security aspects, assuming they could
> get into the DLL and somehow decompile it (without the public/private key
> pair) they would then have to discover where in the DLL the call is to get
> the encrypted key and then also have to realize that key needs to be
> unencrypted.
>
> In fact, the way my security is enforced has minimal reliance on the OS or
> the SQL server -- about all a hacker could do is delete or change data and
> that is assuming they have found a flaw in the OS/Service (i.e.
> lammer)  --  data changes will soon be rejected by my applications as they
> will not validate and be rejected as bogus data.
>
> Can you provide details of how you might attack a strongly named assembly?
> Opening the file in binary will not be terribly helpful and you can't
> decompile it to any useful context, so please explain?
>
> Web Services use the same approach, none of my web service will do
> anything if they don't get a valid encrypted key as a parameter to all and
> any method made available by the service and any sensitive data passed to
> from a web service is always encrypted.
>
> Rob
>
> "Andy" <ajj3***@alum.rit.edu> wrote in message
> news:1143573820.754223.139480@u72g2000cwu.googlegroups.com...
>> It sounds like it would still be possible for an attacker to put junk
>> data into your system.  Take your encrypted value, and replace it with
>> another encrypted value.  SSL would prevent this kind of tampering,
>> since the whole message is signed, not just individual fields.
>>
>> Leaving port 1433 open to the internet has caused problems in the past;
>> perhaps you heard of the slammer worm?
>>
>> Even with a strongly named assembly you are still open to some kinds of
>> attacks.
>>
>> Finally you may need to communicate data with a web service at some
>> point, and I doubt you'd want to provide your key to the 3rd party.
>>
>
>
Author
28 Mar 2006 11:46 PM
Rob R. Ainscough
The Key is not contained in the assembly -- can't give you more details than
that.  But you appear to be correct, the strong name assembly can be
decompiled (I just did it).

Henning there are a lot of things I don't know for sure and hence why I've
implemented my own security.  There are a lot of things I don't know for
sure about SSL or just about any technology that has been created by someone
else.  Slammer is a classic example and I agree with you, that's why I do
NOT want to rely on someone else's "secure" implementations.  The
vulnerabilities of these are just as unknown as the security approach I'm
using to ensure a hacker moves on to a more easy target like sa "password".

And then there is TCP/IP, talk about weak on security.

I prefer my approach, because that requires a hacker to have knowledge of
how my application works even with a decompile that could take them a long
time and they'd be trying to understand a moving target and the updates come
fast and furious -- assuming of course they discovered the correct DLL
amoung thousands of DLL on a server.

Show quoteHide quote
"Henning Krause [MVP]" <newsgroups.rem***@this.infinitec.de> wrote in
message news:erwXGkrUGHA.5500@TK2MSFTNGP12.phx.gbl...
> Hello Rob,
>
> If an attacker compromises your system somehow and gets your strong named
> assembly, he can simply decompile it. A strong name doesn't protect an
> assembly from being decompiled at all.
>
> You talk about passwords with a length of 40 characters - how are they
> used? Are those passwords stored somewhere? (Surely they will - there are
> very few people who will remember a 40 char password which meets some
> complexity requirements). How are they transferred over the wire?
>
> You say that you are transmitting all sensitive data in an encrypted
> form - what encryption do you use? Symetric? Asymetric? If you are using
> the first, you must exchange the keys securely - and store them securely.
> If you are using asymetric encryption, you are rebuilding https...
>
> Talking about Slammer... yes there might be a patch - but you don't know
> for sure if there is another, yet undiscovered hole. Undiscovered by the
> public...  And if the attacker gains access to the SQL Server, he *might*
> be able to get access to your strong named assembly. And after he
> decompiled the assembly he will find the secret encryption key.
>
> The encryption key itself - are you using one for all the encryption
> stuff? How often do you change it? It looks to me like a single point of
> failure.
>
> Regards,
> Henning Krause
>
> "Rob R. Ainscough" <roba***@pacbell.net> wrote in message
> news:Oqt$gTrUGHA.5808@TK2MSFTNGP12.phx.gbl...
>> How would they put junk data into my system?  Are you assuming they've
>> been able to hack in via an account?  Unless ADO.NET 2.0 has some
>> fundamental security flaws when communicating to a SQL server?  I could
>> encrypt the entire message also, all that SSL does for me is provide
>> encrypted access to external sources beyond the control of my security.
>>
>> Slammer real world impact has been relatively low threat (which has been
>> countered via a patch a long time ago) -- in fact, it will provide zero
>> benefit in my situation (even if the SQL server is not patched) -- 
>> gaining Windows Service security context (sends 376 bytes to UDP port
>> 1434 for buffer overflow) means nothing to the way my security is
>> established --  the only way they can obtain any value is if they were
>> able to locate my strong name DLL responsible for all security aspects,
>> assuming they could get into the DLL and somehow decompile it (without
>> the public/private key pair) they would then have to discover where in
>> the DLL the call is to get the encrypted key and then also have to
>> realize that key needs to be unencrypted.
>>
>> In fact, the way my security is enforced has minimal reliance on the OS
>> or the SQL server -- about all a hacker could do is delete or change data
>> and that is assuming they have found a flaw in the OS/Service (i.e.
>> lammer)  --  data changes will soon be rejected by my applications as
>> they will not validate and be rejected as bogus data.
>>
>> Can you provide details of how you might attack a strongly named
>> assembly? Opening the file in binary will not be terribly helpful and you
>> can't decompile it to any useful context, so please explain?
>>
>> Web Services use the same approach, none of my web service will do
>> anything if they don't get a valid encrypted key as a parameter to all
>> and any method made available by the service and any sensitive data
>> passed to from a web service is always encrypted.
>>
>> Rob
>>
>> "Andy" <ajj3***@alum.rit.edu> wrote in message
>> news:1143573820.754223.139480@u72g2000cwu.googlegroups.com...
>>> It sounds like it would still be possible for an attacker to put junk
>>> data into your system.  Take your encrypted value, and replace it with
>>> another encrypted value.  SSL would prevent this kind of tampering,
>>> since the whole message is signed, not just individual fields.
>>>
>>> Leaving port 1433 open to the internet has caused problems in the past;
>>> perhaps you heard of the slammer worm?
>>>
>>> Even with a strongly named assembly you are still open to some kinds of
>>> attacks.
>>>
>>> Finally you may need to communicate data with a web service at some
>>> point, and I doubt you'd want to provide your key to the 3rd party.
>>>
>>
>>
>
>
Author
29 Mar 2006 8:54 AM
Henning Krause [MVP]
Hello,

the problem is, that it's hard to get security right - even for an security
expert.
Since you don't know for sure your design is safe, you are relying on
security by obscurity - which is not a very good solution.

SSL is a public standard - it has been reviewed by many security
specialists. Although the implementaion might have yet undiscovered flaws -
but so might yours. And the implementation in Windows has surely been
reviewed at least by a handfull of security experts at MS - and been in the
wild for quite some time now. How many "security aware" people have reviewed
your implementation?

I don't want to say that your system is not secure - it might well be.

Greetings,
Henning Krause



Show quoteHide quote
"Rob R. Ainscough" <roba***@pacbell.net> wrote in message
news:ey4URHsUGHA.1444@TK2MSFTNGP11.phx.gbl...
> The Key is not contained in the assembly -- can't give you more details
> than that.  But you appear to be correct, the strong name assembly can be
> decompiled (I just did it).
>
> Henning there are a lot of things I don't know for sure and hence why I've
> implemented my own security.  There are a lot of things I don't know for
> sure about SSL or just about any technology that has been created by
> someone else.  Slammer is a classic example and I agree with you, that's
> why I do NOT want to rely on someone else's "secure" implementations.  The
> vulnerabilities of these are just as unknown as the security approach I'm
> using to ensure a hacker moves on to a more easy target like sa
> "password".
>
> And then there is TCP/IP, talk about weak on security.
>
> I prefer my approach, because that requires a hacker to have knowledge of
> how my application works even with a decompile that could take them a long
> time and they'd be trying to understand a moving target and the updates
> come fast and furious -- assuming of course they discovered the correct
> DLL amoung thousands of DLL on a server.
>
> "Henning Krause [MVP]" <newsgroups.rem***@this.infinitec.de> wrote in
> message news:erwXGkrUGHA.5500@TK2MSFTNGP12.phx.gbl...
>> Hello Rob,
>>
>> If an attacker compromises your system somehow and gets your strong named
>> assembly, he can simply decompile it. A strong name doesn't protect an
>> assembly from being decompiled at all.
>>
>> You talk about passwords with a length of 40 characters - how are they
>> used? Are those passwords stored somewhere? (Surely they will - there are
>> very few people who will remember a 40 char password which meets some
>> complexity requirements). How are they transferred over the wire?
>>
>> You say that you are transmitting all sensitive data in an encrypted
>> form - what encryption do you use? Symetric? Asymetric? If you are using
>> the first, you must exchange the keys securely - and store them securely.
>> If you are using asymetric encryption, you are rebuilding https...
>>
>> Talking about Slammer... yes there might be a patch - but you don't know
>> for sure if there is another, yet undiscovered hole. Undiscovered by the
>> public...  And if the attacker gains access to the SQL Server, he *might*
>> be able to get access to your strong named assembly. And after he
>> decompiled the assembly he will find the secret encryption key.
>>
>> The encryption key itself - are you using one for all the encryption
>> stuff? How often do you change it? It looks to me like a single point of
>> failure.
>>
>> Regards,
>> Henning Krause
>>
>> "Rob R. Ainscough" <roba***@pacbell.net> wrote in message
>> news:Oqt$gTrUGHA.5808@TK2MSFTNGP12.phx.gbl...
>>> How would they put junk data into my system?  Are you assuming they've
>>> been able to hack in via an account?  Unless ADO.NET 2.0 has some
>>> fundamental security flaws when communicating to a SQL server?  I could
>>> encrypt the entire message also, all that SSL does for me is provide
>>> encrypted access to external sources beyond the control of my security.
>>>
>>> Slammer real world impact has been relatively low threat (which has been
>>> countered via a patch a long time ago) -- in fact, it will provide zero
>>> benefit in my situation (even if the SQL server is not patched) -- 
>>> gaining Windows Service security context (sends 376 bytes to UDP port
>>> 1434 for buffer overflow) means nothing to the way my security is
>>> established --  the only way they can obtain any value is if they were
>>> able to locate my strong name DLL responsible for all security aspects,
>>> assuming they could get into the DLL and somehow decompile it (without
>>> the public/private key pair) they would then have to discover where in
>>> the DLL the call is to get the encrypted key and then also have to
>>> realize that key needs to be unencrypted.
>>>
>>> In fact, the way my security is enforced has minimal reliance on the OS
>>> or the SQL server -- about all a hacker could do is delete or change
>>> data and that is assuming they have found a flaw in the OS/Service (i.e.
>>> lammer)  --  data changes will soon be rejected by my applications as
>>> they will not validate and be rejected as bogus data.
>>>
>>> Can you provide details of how you might attack a strongly named
>>> assembly? Opening the file in binary will not be terribly helpful and
>>> you can't decompile it to any useful context, so please explain?
>>>
>>> Web Services use the same approach, none of my web service will do
>>> anything if they don't get a valid encrypted key as a parameter to all
>>> and any method made available by the service and any sensitive data
>>> passed to from a web service is always encrypted.
>>>
>>> Rob
>>>
>>> "Andy" <ajj3***@alum.rit.edu> wrote in message
>>> news:1143573820.754223.139480@u72g2000cwu.googlegroups.com...
>>>> It sounds like it would still be possible for an attacker to put junk
>>>> data into your system.  Take your encrypted value, and replace it with
>>>> another encrypted value.  SSL would prevent this kind of tampering,
>>>> since the whole message is signed, not just individual fields.
>>>>
>>>> Leaving port 1433 open to the internet has caused problems in the past;
>>>> perhaps you heard of the slammer worm?
>>>>
>>>> Even with a strongly named assembly you are still open to some kinds of
>>>> attacks.
>>>>
>>>> Finally you may need to communicate data with a web service at some
>>>> point, and I doubt you'd want to provide your key to the 3rd party.
>>>>
>>>
>>>
>>
>>
>
>
Author
29 Mar 2006 1:28 PM
Andy
<i> There are a lot of things I don't know for
sure about SSL or just about any technology that has been created by
someone
else. </i>

The NIH syndrome.  SSL is a proven technology and had a lot of smart
people come up with it.  I'm not saying you're not a bright person as
well, but when it comes to security, you are far worse off trying to
roll your own.  Let the experts do it.  Doesn't mean they won't make
mistakes, but histroically speaking, developers that try to roll their
own end up regretting it.
Author
29 Mar 2006 1:25 PM
Andy
<i>How would they put junk data into my system?  Are you assuming
they've been
able to hack in via an account? </i>

Google for "man in the middle attack"

<i> I could encrypt the
entire message also, all that SSL does for me is provide encrypted
access to
external sources beyond the control of my security. </I>

And nothing would stop a man in the middle from discarding your message
and encrypting their own.  SSL prevents this.

<i>Slammer real world impact has been relatively low threat</i>

really?  I seem to recall several major businesses were greatly
affected, and I also recall that many people's internet connections
were slower due to the connection attempts.

<i>the
only way they can obtain any value is if they were able to locate my
strong
name DLL responsible for all security aspects, assuming they could get
into
the DLL and somehow decompile it (without the public/private key pair)
they
would then have to discover where in the DLL the call is to get the
encrypted key and then also have to realize that key needs to be
unencrypted. </i>

I'm sure it wouldn't be hard to discover wher the dll is.  And strong
naming does squat for decompliation.  Its trivial to decompile ANY .net
assembly; even the ones MS ships.  Download .Net Reflector; it can show
you source code, in your choice of 6 languages.

<i>In fact, the way my security is enforced has minimal reliance on the
OS or
the SQL server </i>

Which means as soon as your DLL is comprimised, your SOL.  You have no
other barries to stop an attacker.

<i>Can you provide details of how you might attack a strongly named
assembly?
Opening the file in binary will not be terribly helpful and you can't
decompile it to any useful context, so please explain? </i>

There are plenty of examples; just google for them.

<i>Web Services use the same approach, none of my web service will do
anything
if they don't get a valid encrypted key as a parameter to all and any
method
made available by the service and any sensitive data passed to from a
web
service is always encrypted. </i>

For someone to send your web service they have to know the key?  And
what if your web server is comprimised and your assemblies replaced?
True, SSL won't help you here, but I don't think the measures you've
taken will either.
Author
29 Mar 2006 4:19 AM
Dominick Baier [DevelopMentor]
how do you protect against data manipulation on the wire ?? i assume your
app checks every single piece of data with MAC or a digital signature?



---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com

Show quoteHide quote
> Just curious why people freak out about not having SSL and/or having a
> SQL Server port 1433 open.
>
> If I do the following why do I care about SSL or port 1433?
>
> 1.  40 character passwords for all SQL accounts
> 2.  any sensitive data written to the SQL server is encrypted (via one
> of
> numerous encryption methods provided in .NET 2.0) in the database
> 3.  any sensitive data sent over http is encrypted (via one of
> numerous
> encryption methods provided in .NET 2.0)
> 4.  the encryption key itself is encrypted and stored in a location
> that
> would be hard to find even if someone had admin rights to the server
> and the
> only DLL that can deal with the key is a signed assembly with a strong
> name
> key file.
> 5.  all cookie information that is sensitive is encrypted
> 6.  all "user accounts" (data mining folks) only access data feeds
> (databases) that do not contain sensitive data
> I use SSL to communicate with external sources that require it, but
> they pay for an maintain their certificates.  I do provide split
> tunnel VPN solutions for the more paranoid clients, but it seems to me
> that we've sorta gone overboard on security (applied too many layers).
> I'm all for intelligent security, but not for some of the wacky
> overkill blanket solutions I see out there -- solutions that still
> have vulnerability from user accounts.  The folks that are hacking
> into CC data and the like are doing so because company X had obvious
> open holes (easy to guess user account, using default passwords, etc.
> etc.).
>
> What it seems the end result is, companies that are paranoid, seeking
> blanket solutions, but still vulnerable to simple password/userID
> hacking.
>
> In the systems I design and build, even if a userID/passsword we're
> hacked (extremely unlikely with 40 character passwords on all accounts
> that are meaningful) they would still be confronted with encrypted
> data which will be completely useless to them.  Even if they guessed
> the sa account password and deleted the database that would be a
> hassle (aka gotta get an offsite backup) but still NO sensitive data
> was compromised.
>
> Rob
>
Author
29 Mar 2006 10:22 PM
Rob R. Ainscough
If some (middle man attack) extracts a chunk of my transmission (or all of
it) and that chunk of data is encrypted, how would the "middle man" even
begin to remotely understand what that chunk of data means?  Even if they
injected their own chunk of data it would be an extreme long shot (as in
your lottery odds are MUCH better) that their injected data had any useful
meaning at destination end.

I'll admit you folks have pointed out the weakness of my strong name DLL -- 
but I do have some reliance on the  OS -- the attacker would need to gain
Admin access and then really spend a lot of time hunting down my DLL(s)
(assuming they have figured out the application process) that are being used
to do the security processing, then decompile and figure out what is what.
So I'm not taking complete control of security, I do have multiple layers
some reliance on existing controls.



Show quoteHide quote
"Dominick Baier [DevelopMentor]" <dbaier@pleasepleasenospamdevelop.com>
wrote in message news:4580be63198f408c8210fe32ddf08@news.microsoft.com...
> how do you protect against data manipulation on the wire ?? i assume your
> app checks every single piece of data with MAC or a digital signature?
>
>
>
> ---------------------------------------
> Dominick Baier - DevelopMentor
> http://www.leastprivilege.com
>
>> Just curious why people freak out about not having SSL and/or having a
>> SQL Server port 1433 open.
>>
>> If I do the following why do I care about SSL or port 1433?
>>
>> 1.  40 character passwords for all SQL accounts
>> 2.  any sensitive data written to the SQL server is encrypted (via one
>> of
>> numerous encryption methods provided in .NET 2.0) in the database
>> 3.  any sensitive data sent over http is encrypted (via one of
>> numerous
>> encryption methods provided in .NET 2.0)
>> 4.  the encryption key itself is encrypted and stored in a location
>> that
>> would be hard to find even if someone had admin rights to the server
>> and the
>> only DLL that can deal with the key is a signed assembly with a strong
>> name
>> key file.
>> 5.  all cookie information that is sensitive is encrypted
>> 6.  all "user accounts" (data mining folks) only access data feeds
>> (databases) that do not contain sensitive data
>> I use SSL to communicate with external sources that require it, but
>> they pay for an maintain their certificates.  I do provide split
>> tunnel VPN solutions for the more paranoid clients, but it seems to me
>> that we've sorta gone overboard on security (applied too many layers).
>> I'm all for intelligent security, but not for some of the wacky
>> overkill blanket solutions I see out there -- solutions that still
>> have vulnerability from user accounts.  The folks that are hacking
>> into CC data and the like are doing so because company X had obvious
>> open holes (easy to guess user account, using default passwords, etc.
>> etc.).
>>
>> What it seems the end result is, companies that are paranoid, seeking
>> blanket solutions, but still vulnerable to simple password/userID
>> hacking.
>>
>> In the systems I design and build, even if a userID/passsword we're
>> hacked (extremely unlikely with 40 character passwords on all accounts
>> that are meaningful) they would still be confronted with encrypted
>> data which will be completely useless to them.  Even if they guessed
>> the sa account password and deleted the database that would be a
>> hassle (aka gotta get an offsite backup) but still NO sensitive data
>> was compromised.
>>
>> Rob
>>
>
>
Author
29 Mar 2006 10:42 PM
Dominick Baier [DevelopMentor]
> If some (middle man attack) extracts a chunk of my transmission (or
> all of it) and that chunk of data is encrypted, how would the "middle
> man" even begin to remotely understand what that chunk of data means?
> Even if they injected their own chunk of data it would be an extreme
> long shot (as in your lottery odds are MUCH better) that their
> injected data had any useful meaning at destination end.

don't underestimate the skill and patience of some people. Even if injecting
does not produce something useful from the start he

a) can learn from how the system reacts
b) can feed bogus data in your application

so still my question - what do you do for integrity protection??

---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com


Show quoteHide quote
>
> I'll admit you folks have pointed out the weakness of my strong name
> DLL --  but I do have some reliance on the  OS -- the attacker would
> need to gain Admin access and then really spend a lot of time hunting
> down my DLL(s) (assuming they have figured out the application
> process) that are being used to do the security processing, then
> decompile and figure out what is what. So I'm not taking complete
> control of security, I do have multiple layers some reliance on
> existing controls.
>
> "Dominick Baier [DevelopMentor]"
> <dbaier@pleasepleasenospamdevelop.com> wrote in message
> news:4580be63198f408c8210fe32ddf08@news.microsoft.com...
>
>> how do you protect against data manipulation on the wire ?? i assume
>> your app checks every single piece of data with MAC or a digital
>> signature?
>>
>> ---------------------------------------
>> Dominick Baier - DevelopMentor
>> http://www.leastprivilege.com
>>> Just curious why people freak out about not having SSL and/or having
>>> a SQL Server port 1433 open.
>>>
>>> If I do the following why do I care about SSL or port 1433?
>>>
>>> 1.  40 character passwords for all SQL accounts
>>> 2.  any sensitive data written to the SQL server is encrypted (via
>>> one
>>> of
>>> numerous encryption methods provided in .NET 2.0) in the database
>>> 3.  any sensitive data sent over http is encrypted (via one of
>>> numerous
>>> encryption methods provided in .NET 2.0)
>>> 4.  the encryption key itself is encrypted and stored in a location
>>> that
>>> would be hard to find even if someone had admin rights to the server
>>> and the
>>> only DLL that can deal with the key is a signed assembly with a
>>> strong
>>> name
>>> key file.
>>> 5.  all cookie information that is sensitive is encrypted
>>> 6.  all "user accounts" (data mining folks) only access data feeds
>>> (databases) that do not contain sensitive data
>>> I use SSL to communicate with external sources that require it, but
>>> they pay for an maintain their certificates.  I do provide split
>>> tunnel VPN solutions for the more paranoid clients, but it seems to
>>> me
>>> that we've sorta gone overboard on security (applied too many
>>> layers).
>>> I'm all for intelligent security, but not for some of the wacky
>>> overkill blanket solutions I see out there -- solutions that still
>>> have vulnerability from user accounts.  The folks that are hacking
>>> into CC data and the like are doing so because company X had obvious
>>> open holes (easy to guess user account, using default passwords,
>>> etc.
>>> etc.).
>>> What it seems the end result is, companies that are paranoid,
>>> seeking blanket solutions, but still vulnerable to simple
>>> password/userID hacking.
>>>
>>> In the systems I design and build, even if a userID/passsword we're
>>> hacked (extremely unlikely with 40 character passwords on all
>>> accounts that are meaningful) they would still be confronted with
>>> encrypted data which will be completely useless to them.  Even if
>>> they guessed the sa account password and deleted the database that
>>> would be a hassle (aka gotta get an offsite backup) but still NO
>>> sensitive data was compromised.
>>>
>>> Rob
>>>
Author
30 Mar 2006 1:39 PM
Andy
Rob R. Ainscough wrote:
> If some (middle man attack) extracts a chunk of my transmission (or all of
> it) and that chunk of data is encrypted, how would the "middle man" even
> begin to remotely understand what that chunk of data means?  Even if they
> injected their own chunk of data it would be an extreme long shot (as in
> your lottery odds are MUCH better) that their injected data had any useful
> meaning at destination end.

See another posters comments; how much trouble would it cause if you
suddenly discovered a large portion of data in your application is
corrupt?  And if you're only encrypted key fields, it should be easy to
narrow what the encrypted fields are.  My guess would be passwords, CC
numbers, Social security number, etc.

> I'll admit you folks have pointed out the weakness of my strong name DLL --
> but I do have some reliance on the  OS -- the attacker would need to gain
> Admin access and then really spend a lot of time hunting down my DLL(s)
> (assuming they have figured out the application process) that are being used
> to do the security processing, then decompile and figure out what is what.
> So I'm not taking complete control of security, I do have multiple layers
> some reliance on existing controls.

It wouldn't be hard to figure out which process is doing what.  Its
easy to ask which assemblies a process has loaded (which includes their
location too).  Misnaming your assembly isn't security at all.  If
someone does comprimise your server, they probably would have admin
access, and from there, game over.  Its trivial to find you assemblies,
decompile them and find your encryption key.
Author
31 Mar 2006 1:29 PM
oldbear
Hi

One point here is that you're using the same key over and over again. Anyone
monitoring network traffic could build up enough ciphertext to decrypt the
data using cryptanalysis or cribs.

SSL will give a different session key for each interaction. This means:
harder to decrypt, as less ciphertext has been encrypted with the same key
no replay attacks

Hope this is useful

Chris Seary

http://blog.searyblog.com/