About this question
I'm trying to understand how digital signing using x509 certificates works. I read a few articles and related answers on the web, but still there are a few questions left to confirm my understanding:
This great answer of PTW-105 explains how the certificate trust chain is being verified. But what is missing is how the verifying party can get the issuer's certificate which was used to sign some derived certificate. The only idea I have is that it is embedded into the derived certificate as other information. In this case certificate size would grow with each level of the certificate trust tree. This was already asked as a comment, but still left unanswered.
How do client applications such as the browser or MS Word know which certification authorities are trusted root authorities? Are they just hard-coded into every application? How big is the list of root certification authorities and who manages it? What if some application developers forget to include one of the authorities (or just a new one is registered) - their certificates won't be considered trusted, will they? So is it possible that some site is trusted in Chrome, but non-trusted using Firefox (it can be derived from here). What if an attacker manages to include his self-issued certificate into some trusted storage: it might be the victim's computer trusted root certificates list, or her enterprise domain trusted certificates. I know it's an unlikely scenario, but would it work?
Similar scenario to #3: patch a client's application such as MS Word (or share a patched version on the web for everyone to download freely) so that it considers the attacker's certificate to be the root certification authority. Would that work?