* David Schwartz wrote on Sun, Sep 23, 2007 at 22:51 -0700:
> > Here is my understanding about a real CA.
> > A real CA would be an agency or like, which would have the infrastructure
> > required to sign certificate requests (say openssl toolkit, its own key
> > pair, its own root certificate etc). In addition to this, it would have
> > capabilities / mechanism to verify the information provided by
> > the requester
> > (subject) in the certificate request. Once the CA verifies that the
> > information provided in the certificate request is correct, it would sign
> > the request, and provide the signed certificate to the requester
> > (subject).
> >
> > If I am missing anything that is important to know, I will be really happy
> > to learn about it.
> 
> What you're missing is the policies they employ to protect
> their private keys. If you don't employ anywhere near that
> level of security, you should definitely not be asking people
> to add your CA certificate to their browsers for Internet use.

I would like to extend this a little. I think, a CA is almost
"only" paperwork in means of policies, auditable procedure
descriptions and contracts. Whether X.509 or asymetric
cryptography is used or not, for me goes a little bit into being
an implementation detail. Whatever cryptoscheme is used, it must
fulfill the security requirements of the policies. Trusting a CA
means trusting those policies (and that them and only them are
always applied correctly, usually verifyable/auditable,
retroactively inspectable in means of unmodifyable log records /
log books and so on).

> Whether your level of security is sufficient for non-browser
> programs or networks other than the Internet is a question only
> you can answer. But the expert consensus for browsers on the
> Internet is that this is not nearly sufficient security.

Yes, I think this is important: to determine the needed security
level for a certain purpose / application. The level of security
is given by the policies (those policies need to fulfill the
requirements specification of course, if any). 

Of course, there are common practices for policies of e.g. CAs
that make sense, such as protecting secret signing keys
effectively (dual control, not readable from hardware security
module), but theoretically everything is possible. For instance,
you could have a policy allowing certificates without personal
authentication (for instance, as cacert.org offers) or you could
protect the secrect key by nothing else that an linux crypto file
system on a regular hard disk with a single passphrase (allowing
the admin who knows this passphrase to take a backup of the
system - another cacert example).

If this would be documented in the policy and it would be applied
letter by letter, you could trust the CA (in doing so. BTW, this
is not the case for cacert, because they do not even have a
policy, so everthing is possible - different topic). However, the
security level of this trusted CA is in my personal option that
low that I never what its root certificate in my browser (or
elsewhere), because I'm afraid of accidently accepting a
certificate issued (assured) by a 12 year chinese girl agent spy
or so. You can verify as much fingerprints as you like, the
security level won't increased because it is limited by the
weakest part in the chain; this probably isn't the question
whether a RSA key has 2048 or 4096 bit but if the officiers that
work in security relevant topics (such as authentication) are
well trainined etc.

Since I wrote such a big text and already bored everyone to dead
I want to add that beside authentication of course authorisation
is important. It does not help much if you know 100% that your
communication peer is authentic if this is an attacker (who is
authenticated but not authorised to do the particular thing).

This sounds cheap, but with a today standard webbrowser and
HTTPS, a DNS name is used (referenced via some X.509 CN field) as
name for verification and the human is supposed to verify the the
displayed URL is autorised to receive the online banking account
information (or whatever). Of course, you can inspect the field
values of a certificate by clicking those key or lock symbols.
I've read that newer versions of firefox and other browsers will
improve here (or maybe even already did :)).

> > Hmm ... So are you suggesting that my clients would store the
> > certificate produced by the server, the first time they
> > connect to the server, and thereafter each time they connect
> > to the server, they check if the certificate has changed?
> 
> It depends upon what the client needs to determine. If the
> clients needs to know if it's talking to the same server it was
> talking to before, then this is the perfect way to do that.

Yes, I think this is how e.g. SSH works by default (allowing
manual fingerprint verification or preinstalling authentic keys
to the known_hosts files) and, as far as I understand, these
Windows machine key account stuff is working.

> > As I understand, a self signed certificate can be verified
> > using the public key present in the certificate iteself. So
> > how can my client detect the change in the certificate unless
> > they store the public key (or the certificate itself) the
> > first time they connect to the server, and then for every
> > successive connection attempt, check the certificate
> > presented with this stored public key / certificate ?  Am I
> > still missing something?
> 
> If they don't care if it's the same server each time, then what
> do they care about? What's the point of this entire exercise?

Storing some fingerprint of a certificate or public key locally
in some trusted place (such as a local file system) seems to be
quite secure (should be the same level as having a CAs root
certificate in a file), however, I'm not sure if this works with
OpenSSL which seems to expect to be able to verifiy the whole
certificate chain up to the root certificate even if intermediate
certificates are locally avialable. As far as I know /
understood - please correct me if I'm wrong!

> > > The problem is that anyone who has access to your installer
> > > can impersonate any server.
> 
> > Absolutely true.

Yes, if the security is bound to `the secret of the installer'
(requiring the installer to be handled like a secret key :)) but
not to cryptographic keys, why do you need certificates at all? 

> > Now the question was, how can I embed the root CA cert +
> > associated private key in the installer, such that it can not
> > be retrieved easily?  Has anyone ever done anything like this
> > before? Does anyone have any better approach to suggest?

I think in general you cannot have `fully automatic and scalable'
and `secure' in the same time. I think, `secure' usually means
not fully automatic, but only after manual authentication /
authorisation. If identities are important and a value, then of
course you need to burn a CD (or smart card, ...) for each. Same
as with passports or personal ID cards, right? :)

> It's hard to know without knowing what the threat model is. But
> I would say you could simply include several 100 certificates
> on the CD, each encrypted with a different key. You can then
> give a distinct certificate number and key to each customer and
> they can use that to decrypt their certificate.

Or maybe separating installation and personalisation (giving a
secure ID by having an individual secret key) and installing
certificate and/or key later by some user interface (config
file). Transferring the data would be out of scope and a
appropriate solution can be used: USB Stick, secure mail
(SMIME/PGP), personal or phone authentication, ...

oki,

Steffen
 
About Ingenico Throughout the world businesses rely on Ingenico for secure and 
expedient electronic transaction acceptance. Ingenico products leverage proven 
technology, established standards and unparalleled ergonomics to provide 
optimal reliability, versatility and usability. This comprehensive range of 
products is complemented by a global array of services and partnerships, 
enabling businesses in a number of vertical sectors to accept transactions 
anywhere their business takes them.
www.ingenico.com This message may contain confidential and/or privileged 
information. If you are not the addressee or authorized to receive this for the 
addressee, you must not use, copy, disclose or take any action based on this 
message or any information herein. If you have received this message in error, 
please advise the sender immediately by reply e-mail and delete this message. 
Thank you for your cooperation.
 
About Ingenico Throughout the world businesses rely on Ingenico for secure and 
expedient electronic transaction acceptance. Ingenico products leverage proven 
technology, established standards and unparalleled ergonomics to provide 
optimal reliability, versatility and usability. This comprehensive range of 
products is complemented by a global array of services and partnerships, 
enabling businesses in a number of vertical sectors to accept transactions 
anywhere their business takes them.
www.ingenico.com This message may contain confidential and/or privileged 
information. If you are not the addressee or authorized to receive this for the 
addressee, you must not use, copy, disclose or take any action based on this 
message or any information herein. If you have received this message in error, 
please advise the sender immediately by reply e-mail and delete this message. 
Thank you for your cooperation.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to