On 10/24/2018 4:39 PM, Alan Doherty wrote:
At 11:02 24/10/2018 Wednesday, Kas wrote:
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 :
the functional part of a cert is just the public key (
all the rest and the extentions are just wrapping to give details of who else
is vouching for it and what identities it is associated with)
Wrong and you should not look at a certificate as a public key, please
educate yourself with deeper understanding what do extensions serve and
what critical extension means, i have a Code Signing certificate can i
use it for IIS ? it has a public key ! and it been vouched by Comodo ,
do you understand what is CRL Distribution Points(2.5.29.31) and how
that certificate should be checked before considered trusted ?
1_ OpenSSL heartbleed went undetected for almost 2 years.
this had nothing to do with certs, all to do with the underlying encription
implementation
Vulnerabilities are everywhere and they are in implementations
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 )
again nothing to do with certs
Certs are ASN.1 a data structure language and can be utilized to
compromise a remote device, please search the web for "asn.1
vulnerability" every system and many software got hacked by using
handcrafted certificate, in my example how a pdf (Portable Document
Format) file compromised a system
3_ Many client software's like browsers or email clients like Thunderbird will
add every CA certificate automatically to their store
none will the entire point of the trusted root store is its involitility
a user can add roots manually but 0 software will update its root store except
by normal (to it) software update
I said CA certificate not root certificate there is difference, CA's in
most cases will be added automatically to the store as long the root in
the store, and some will add it as not trusted without root but in many
cases will be added !
( 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.
thats patently impossible, otherwise new CAs could just use this method to gain
trustinstead of the current hoop jumping amd auditing they have to go through
to get included in software root stores
(why letsencrypt for example is signed by their own and other(extant in older
sofware) roots till their own is widespread as software updates the signatures
from other older CAs are needed (to ensure at least one of the root signitures
is in potential clients root store)
There is CA certificates providers and they are sell it, an attacker can
get one from on by stealing the private key of one, it is not something
impossible or didn't happen
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)
again as long as it passes my validation (signed by 1 or more widely trused
roots) it is doing its job (passing and verifying my public key)
Read about the case of DigiNotar
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 ?
it wouldnt prevent them at all
or adding their own CAs root to the trusted roots on all future devices
Right, now how to update or revoke those certificate and keep the
devices working wouldn't be easier and safe that you bought a TV and the
paper guide instruct you to put X.com (it has by default) in settings
and apply the key YYYYYYY if that didn't work then visit X.com and get
the updated key after that it will be automated process, now to access
that device form you PC instead of accepting the root and install it (
or adding it to exclusion) you do the same use X and YYYYYY
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 ?
many do CA cert for example (widely used by many before acme) and not included
in most browser softwares root stores
but those wishing to use manually added them to their own CA root store and
advised their users/customers to do same
and some software did include them
anyone can setup a CA there is no central authority
every large enteprise tends to have their own CA to issue certs only seen/used
internally and updates all internal machines to trust this CAs signiture
to get included in mozillas root store you have to pass their audits, then you
get included
to get included in microsofts same
to get included i librayX's same etc
some root stores trust others audit process' and auto trust any root
audited/added by another
some root store maintainers will
there can (and shouldn't) be any single central authority
I know how certificates and store works,
If your store from Microsoft then your CA controlled by Microsoft ,while
FireFox on Windows has Mozilla store, so how many stores out there and
where you get them ?
This should be unified or separated and i can't care less about that,
the whole point is to define how to obtain the store/root of specific CA
online in a secure way, acme can do that staring by its server, it
already has online certificate revocation process that can be adopted by
every CA out there.
Sorry i don't feel like reading and answering the rest because i am lost
and can't understand what is your point, is it to proof i am wrong in my
suggestion ?( no need to answer that ), you keep steering the subject
away, and i don't know if the editors got my point or even will have the
mood of reading any of this,
Thank you and pretty please Alan give it rest, you proved me wrong and won !
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 ?
if the cert returned is signed by B then whoever signed it has B's private key
(thus must be B)
no mitm can see any information that is not safe to leak (by design)
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).
the issue of which roots are trusted is again nothing to do with acme
(acme can be used by private CAs, public untrusted CAs (like ca cert), and
public widely trusted CAs (like letsenrypt)
its just a means of transmitting the public key needing signed, authorising the
identities to be verified, and obtaining the signed public key (cert) back from
the CA that the acme client has chosen
the client chooses the CA based on their needs (if they want a widely trusted
one, they use one) publicly accessable webservers for instance
if they care not about its trustability because of narrow audience (https
interfaces of routers/firewalls etc) they will often use self signed or signed
by an internal/enterprise CA
*i say widely because there are infinite software developers, all with
differing lists of trusted by them roots so no CA can be assured their current
roots public key has been added to all (its why some software delegates
trust/verification to the OS or another)
its also why as time passes a CA may sign its intermediate public cert with its
expiring in a few years old-root key and its valid for many more new-roots key
(because much software wont yet have the new root key trusted, and no way to
force same) due to involitile by design trusted root store
(why when lenovo software auto-added its own root to all windows root store
computers their software ran on their was such outcry as their private key for
this root was widely known and thus anyone could easily sign certs that would
be trusted by these 'victim' computers)
found by users comparing their root stores to others
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
Acme@ietf.org
https://www.ietf.org/mailman/listinfo/acme
_______________________________________________
Acme mailing list
Acme@ietf.org
https://www.ietf.org/mailman/listinfo/acme