Hello Army RL,

Sunday, October 24, 2004, 14:58:59, you wrote:

(snip)

h>> But, here, we must draw the line. If the user succeeds in finding out
h>> the missing intermediate roots, and adds them to the base, then
h>> everything is OK, and life goes on. Otherwise -- i.e. there are still
h>> missing intermediate roots --, then TB! *HAS* to refuse using the
h>> certificate. If this is not an option for the user, then I humbly
h>> suggest the user to stop using SSL (or other schema in the same line).

AR> Here is where you lose me.  You say it's ok to add the incomplete cert
AR> to the base earlier then here you say TB! has to refuse using the
AR> incomplete cert and even user, such as I, should stop using the
AR> security/privacy afforded by an encrypted session to transport email to
AR> and from the mail server?

OK. Let me rephrase this. First of all you can add a rootless public
certificate in the base. The expectation is that you will, eventually
(and before actually using this certificate) add in the missing roots.

Secondly, the security/privacy attained by the use of encryption is
also dependent on guaranteeing the integrity of the certificate (and,
by extension, of the public/private key pair it uses).

On a production environment, the risks of using a rootless public
certificate are unacceptable. The reason here is you cannot distinghish
a 100% real-honest-I-swear-over-whichever-grave-you-want-me-to-use BUT
rootless  from a counterfeit, identical in the identification data, one.

Encryption has many issues, but one of them, a very important one, is:

  *Key managament & distribution*  This is the part of "using
  encryption" that worries about storing encryption keys, and
  safely distributing them.

An encryption algorithm can be the best out there in the market but,
if the key is compromised... it does not really matter if you are
using encryption or not! TLS/SSL adresses the key M&D by using a
public key algorithm. The TLS/SSL certificate is actually composed of
two parts -- the private key, which is never distributed, and the
public key. The public key is encapsulated in what is, by abuse of
language, called the "certificate" and, more strictly, the public
certificate. It's the public certificate that gets send over the wire
when a TLS/SSL session is being negotiated.

Now, TLS/SSL will negotiate one symmetric encryption key at every
start of session (and, probably more during the session), by using the
asymmetric keys (the private and public ones) to establish an
ephemeral encrypted session. When the symmetric encryption key has
been generated, the ephemeral session is ended, and both parties start
using the newly-generated symmetric key. THIS is the key that is used
to encrypt the session data -- in our case, to download/upload e-mails
to the server.

If you cannot safely confirm the public certificate, it follows that
you cannot trust the resulting generated symmetric keys, and encrypted
sessions using them.

h>> When you receive a certificate (on SSL negotiation) you do NOT trust
h>> this certificate. What you "trust", want it or not, is that it's
h>> signature can be verified by a "known" authority -- known to you, and
h>> accepted as such by you. This "known" authority is represented by the
h>> root certificates you accepted to use. Your trust on the certificate
h>> you received is transitive: you trust it because a know root confirms
h>> it. And *THIS* root is trusted by you not to mess up. As such, if
h>> there are missing intermediate root certificates, then there is no
h>> trust transitivity, and the certificate you received is, by default,
h>> tainted.

AR> This is not *always* so. If I was concerned with the entire PKI or
AR> hierarchy of it- then yes. If all I want to do is communicate via secure
AR> transport with a mail service and can verify the "servers" cert, as well
AR> other factors like the IP of the server, published info about the cert
AR> on the website, etc then I can be satisfied. My personal standard has
AR> been met in this case- and it may not always *require* having placed my
AR> trust completely in the CA or Intermediaries.  Why must I trust them
AR> anyways?

Please let me give you an example of an issue here. Let's say your
mail server is at address 10.10.10.10, and it's fully qualified name
is "mail.dummyserver.info". This means that you could query DNS on
10.10.10.10, and would get "mail.dummyserver.info" as a response, or
query DNS on "mail.dummyserver.info", and get an IP address of
10.10.10.10.

So far, so good.

Now, in comes a bad guy. This bad guy can: (a) poison the DNS to
re-route all your sessions requests to a different server; (b)
physically cut the wire and insert his system in between you and your
connection, or between your mail server and your connection.

In both ways, it is easy to set up things such as the bad guy has a
session to your mail server (using the real mailserver certificate),
and another session to you, using a fake mailserver certificate
(for which, guess what: no root is available...).

So,you go get your mails, and it's the bad guy that answers you. All
mails you send up/downaload  are received by the bad guy (in clear
text) and immediately uploaded to the mail server/downloaded to you.
This is possible because the bad guy is posing as YOU, with your
account, password, lock, stock, and all barrels)! After all, YOU sent
him your account, password, SecureId, whatever...

Also, I fail to understand a site that publishes it's public
certificate, but does not provide pointers to the roots (i.e., to
where you can get the roots, and it better be a completely different
place!).

AR> My trust is in the server. The certificate is there to afford me the
AR> opportunity to establish the security and privacy provided by an
AR> encrypted transport with this trusted server...

As shown above, you cannot trust your "server". And... you cannot
trust a rootless certificate. You can swallow it, but not trust.

AR> Nothing can force me to trust the entire chain in a formal PKI and
AR> certainly shouldn't be a forced requirement when my trust is established
AR> in the server only, in some cases.

No. nothing can force you to. The whole idea of root certificates on
TLS/SSL is to allow you to *confirm* that a public certificate
received has been verified by someone. And... this someone survives
only because he will never, ever, sign a fake certificate. Yeah, yeah,
I know, iffy. See below for a failure :-).

The idea here is similar to the web of trust in PGP/GNUPG. You do not
know me, but you know someone that signed my PGP key stating I am who
I say I am. You do not actually, really, know your server's
certificate, or any other certificate you receive when opening a
TLS/SSL session, but... down the line, there's a root certificate you
decided to trust. This is why I said that trust is transitive.

But... you are correct: why should we trust a CA?

AR> As you mention below, self signed certs will always be a factor. Simply
AR> due to the cost associated with the mainstream CA's, especially with
AR> those roots included in OS and browsers. Once my standards heve been
AR> met then I should be the decision maker, imnsho, not TB!.

OK. OK. I accept it. The *final* user should have a *final* say on
whether the rootless certificate will be accepted or not. On further
thinking, I consider your approach valid, albeit the result is a
potentially compromised session.

But, the user assumes all risks. Caveat emptor.

h>> This is not paranoia (although, I have to say, I *am* paranoid). This
h>> is simply the rules of the game.

AR> I am interested in where you have read these "rules of the game",
AR> falling under the broad umbrella of paranoid myself.

See (for start) ftp://ftp.rfc-editor.org/in-notes/rfc2246.txt, which
is the TLS RFC.

At page 39 it states:

"   certificate_list
       This is a sequence (chain) of X.509v3 certificates. The sender's
       certificate must come first in the list. Each following
       certificate must directly certify the one preceding it.
       * my markings here - hggdh *
       *Because  certificate validation REQUIRES that root keys be
       distributed  independently*,
       * my markings here -hggdh *
       the self-signed certificate which specifies the
       root certificate authority may optionally be omitted from the
       chain, under the assumption that the remote end must already
       possess it in order to validate it in any case."

And, then, the rest of RFCs, and the PKIX IETF work group.

(snip)

h>> Allie, you are absolutely correct when you wonder about the security
h>> of this. There is none.

AR> I beg to differ.  The user, regardless of what any one entity says, is
AR> the *final* approving authority on what is acceptable in regards to what
AR> level of security and privacy that user desires.

Which does not change my point above. There is no gained security. At
all. But this is a risk that YOU, as the final user, has to have the
rigth to accept.

AR> There is no security afforded, whatsoever, when TB! refuses to allow me
AR> to even view an incomplete certificate chain. All I am permitted to do
AR> is say OK or Cancel...

TB! is being strict here. I personally like this. But, as I said
above, I now do agree with you (in that the final user has to have
the final say, even if this means throwing out all theoretical
security and privacy).

(snip)

AR> Thanks for the feedback, looking forward to more- and hopefully
AR> (eventually) even get entertained by the development powers that be.

Indeed, this is fun. I suggest you to open a formal wish (I do not
know how to do it, but certainly someone in here will).

I will sign down on it (given that a stern warning is issued prior to
acceptance of the rootless public certificate).

On using a hash, or equivalent, to verify if the newly received
certificate is identical to one stored: this is already available. All
TLS/SSL public certificates have such a hash. So, what would be needed
is to warn the user that the just-received certificate does *NOT*
match the one stored.

Now for a short story: some years ago a major CA issued some
certificates to Microsoft. So far, so good, they had issued other
certificates to Microsoft. The problem... it was NOT Microsoft that
requested it :-)! Oh boy...

-- 

 ..hggdh..

Using The Bat! v3.0.1.33 and BayesIt! 0.7.3 on Windows 2000 5.0 Build  2195
Service Pack 4

Attachment: pgp4QiZn8sY5k.pgp
Description: PGP signature

________________________________________________________
 Current beta is 3.0.2.1 Beta/1 | 'Using TBBETA' information:
http://www.silverstones.com/thebat/TBUDLInfo.html
IMPORTANT: To register as a Beta tester, use this link first -
http://www.ritlabs.com/en/partners/testers/

Reply via email to