Certificate is not just a public key, it has extensions well defined and standardized in RFC's, please educate your self with them, how and when they should handled and what actions they might trigger, and remember this: implementation of such handling is something can't be controlled and let me list few facts :

1_ OpenSSL heartbleed went undetected for almost 2 years.

2_ Hackers managed to jailbreak Apple iPhone by simply opening a pdf file ( handcrafted file with bad intentions) , imagine yourself opening a pdf file and losing the warranty of your phone .( though many people used that pdf intentionally )

3_ Many client software's like browsers or email clients like Thunderbird will add every CA certificate automatically to their store ( their own store or the system store ) , MitM can issue CA certificate to a client which is in this case SMTP server and this server will use that certificate and help distribute this "compromised without losing the privatekey" certificate to everyone comes in contacting with that SMTP server.

4_ Keeping private key secret is a MUST, but this doesn't means you should trust the certificate from unknown sources, as they might be targeting your clients not you.( handcrafted with bad intentions)

5_ What if a company like Samsung wanted to issue certificates to its devices to make the connections between phones and TV secure, and it don't want to ask Apple and Microsoft to add Samsung root certificate to theirs system store, then Samsung can't use acme protocol or it can ? and i am here not pointing the monopoly in such addition but we are in 2018 and that root store should be more secure and obtained online from the source in secure way, should you accept and install such root certificate manually from every device or simply go to Samsung site and import the their root and store and you are good to go with all their devices, is that doable ? is that practical and safer for the average user of the internet ?


The question is so simple if A asked B for certificate how A can be sure there is no M in the middle issued the certificate ? if the answer by depending on TLS layer then that is not a solution, as all will come to validates a root self-signed certificate, so that question will become how A obtain the root certificate from B to validates the issued certificate ?

This draft can ignore this issue, and that is OK, but it can do better and resolve what really needs resolving the root issue, and help internet become more safe and secure, not for this specific protocol but as a seed for other protocols to follow, how many RFC's been used by this draft and how many in the future will depends on this draft ( soon to be RFC).


That been said ,and i really don't want to discuss attacks because it is useless and endless discussion, so please Alan first forgive my English (may be i wasn't clear) and pretty please don't steer the this thread/subject away from its topic.


Best reagrds,

K. Obaideen


On 10/24/2018 2:13 AM, Alan Doherty wrote:

At 18:14 23/10/2018  Tuesday, Kas wrote:
Can MitM impersonate acme server and walk the client through the whole process 
and issue a certificate to the client ? yes it can.

If your understanding to 'compromised' certificate is leaked private key, then 
this certificate is not 'compromised', only MitM issued it for his own 
intentions and the last thing he care about is making the client secure or any 
party will connect to that client. Right ?

Client ask acme server for a certificate and get a certificate issued by MitM 
not the real and right acme server, do you consider such certificate 
'compromised' or not ? (while private key is still secret)
if the cert is usable then it is no more/less secure than the one from the CA 
direct
(the cert being a signature from a widely trusted CA verifying the public key 
the client provided, is authentically from the client)

if the cert is unuasable (untrusted) the client/user/etc can detect this
What if this MitM issued certificate and supplied a chain to self-signed 
certificate to the false ( compromised without leaking private key but issued 
for bad intentions ) certificate , then client should validate the chain, that 
is easy and understandable, when reaching to that self-signed certificate how 
to trust it ?
?? i think you again miss what a cert is and how x509 works
issued for bad intentions?  the acme-client is the only one who can use the 
cert (as the only one with the private key)
the CA has no input or control over the use of the cert (so their intent 
affects nothing)


by design only public information is transmitted between the acme-client and 
acme-server
How to authenticate acme-server ? no need
and how to authenticate such server in cloud based service lets say acme server 
is using service like CloudFlare ? again no need
an acme client gives not one jot of care about if they are talking to their CA 
or another (well they do but only insofar as getting a cert that works)
only that the cert they get is valid/invalid

if a rouge CA can somehow miraculously issue valid certs, ones trusted by 
others and me then its as i said no concern

they could cause outage by refusing service long enough for my valid certs to 
expire, they cannot cause outage/compromise or any other issue by issuing valid 
certs
issuing invalid certs is the same as refusing service but more costly effort 
wise for the mitm thus pointless


i have a private key, i have a public key, i the acme-client-owner created both
a cert is just
((my public key)+a cryptographic signature vouching for its authenticity from 
my-CA)<<varies client to client
+(my-CAs public key)+a cryptographic signature vouching for its authenticity from 
their CA)<<invariant for however many CAs till root
+(their CAs public key)+.....till a trusted root

i give my CA my public key, and the identity(s) i wish to use, they require i 
prove im who i claim to be, i do so
they send back the varient part of the cert, the invariant part i can obtain 
publicly or from my CA (the copy of the chain)
i can then verify all against as many/few trusted root stores of browsers i 
want (or just simpler/faster compare the current chain against previous, as 
they do not vary often)

(only generate-able by the owner of my CAs private key(my CA)
publicly verifiable by being signed by my-CAs public key (verifiable by looking 
at their CA etc)

so to issue a valid cert a mitm can only possibly direct my cert request to 
myCA or another-trustedCA but cannot possibly generate a cert themselves 
without first compromising a trusted (by me) CAs private key
if they have achieved this then they already have ownership of the CA and thus 
have no need to mitm

their only job is to assure the browser that my public key is valid
if the browser trusts me (if cert untrusted/self signed) or my cert they then 
send me data/receive data from me and encrypt/decrypt with this public key
(and i can send/receive using my private key for same)

either way the data they send/receive is no more/less secure due to the x509 
cert
my users would be as secure with me if i used self signed certs to talk to me, 
the use of a trusted CA is just to assure strangers (those that have not 
otherwise verified my authenticity) that mysite.com is not an imposter

but everyone has mysite.com's cert (its public) only mysite.com can use it to 
talk as only mysite has the private key necessary to send people data that can 
be decrypted by the public key embedded in that public cert




_______________________________________________
Acme mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/acme

Reply via email to