3 ms·
I don't think this fully appreciates the consequences of revoking a Developer ID code signing certificate. If a Developer ID cert is revoked, then all software
by _qulr 6y ago
I don't think this fully appreciates the consequences of revoking a Developer ID code signing certificate.
If a Developer ID cert is revoked, then all software ever signed with that cert is disabled on every Mac in the world, as soon as the Mac checks OCSP, which is likely to be the next time the software is launched. Revoking a Developer ID cert is a death sentence for signed software.
Thus, basic housekeeping is not a justified reason for revoking a certificate. The express purpose of the Developer ID program was for security, and security is the only reason to revoke a Developer ID certificate. It's an extreme measure, to be taken only in the worst case scenario.
Apple has a remote kill switch for all signed software on the Mac. They need to be extremely careful about when, if ever, they flip that switch. Almost all known cases of a Developer ID cert getting revoked is when the owner of the cert was a malware author.
- olliej 6y agoSoftware developers have the remote kill switch as well, and they used it this time. Apple did nothing wrong, unless you’re of the opinion that Apple should be auditing other company’s internal policies and controls.
- _qulr 6y ago> Software developers have the remote kill switch as well, and they used it this time. How so? They can't unilaterally revoke a Developer ID cert, they can only request that Apple revoke it. > Apple did nothing wrong, unless you’re of the opinion that Apple should be auditing other company’s internal policies and controls. This is missing the point of Developer ID. It's a program created by Apple and imposed as a requirement on Mac developers. The purpose of the Developer ID cert is to prevent malware. That's why it has a remote kill switch, to stop malware from running. The purpose was not to give Mac developers a remote kill switch to use however they please. Why in the world would Apple do that? Developer ID is not an "internal policy" for third party developers. There's nothing to audit. Developer ID is Apple's program, designed for Apple's purposes, and Apple makes the decision whether or not to revoke the certs. Almost all known Developer ID certificate revocations are not the result of the developer's own request but rather the result of Apple discovering malware in the wild and revoking the certs of the malware authors.
- olliej 6y ago> How so? They can't unilaterally revoke a Developer ID cert, they can only request that Apple revoke it. That is literally how revocation works. There is no magic "make this key no longer work" function. Revocation of a cert means telling the CA to revoke the cert. It is no different when the CA is Apple, than if it were Thawte, or Google, or LetsEncrypt. Revocation means telling the CA to add your certificate to the list they publish of no longer valid certificates. Managing your certs if absolutely the responsibility of the developer. It is no different from any other cert - TLS certs, S/MIME, etc are all the same. The only difference is the usage flags included in the cert. > Almost all known Developer ID certificate revocations are not the result of the developer's own request but rather the result of Apple discovering malware in the wild and revoking the certs of the malware authors. That is, apple has found evidence of key compromise, and so revoked the cert. For WebPKI CAs there is a hard requirement that the moment they receive any evidence of a key being compromised they are required to revoke within 24 hours, or risk penalization. Again, Apple is acting no differently from any other CA.
- _qulr 6y ago> It is no different from any other cert - TLS certs, S/MIME, etc are all the same. No, this is where the argument is fatally flawed. The usage of code signing certs and web certs is completely different. At any time, you can put a new web cert on your server, and web traffic can continue as if nothing happened. Revoking a web cert that's no longer in active use does not affect current web traffic. On the other hand, that's not the way it works with code signing. Users download and install signed software. That software is expected to run indefinitely, essentially forever as long as the software itself works. The expiration date for code signing certs only affects the ability to sign new software, it does not affect the ability of old signed software to continue running. Code signing certs expire, but the signed software does not. However, when a code signing cert is revoked, it immediately (on the next OCSP check) kills the old, installed software. That's a total disaster, unless that installed software happens to be malware. This is why revoking a code signing cert is so much worse than revoking a web cert. > Revocation means telling the CA to add your certificate to the list they publish of no longer valid certificates. To be pedantic, Developer ID doesn't actually use a CRL, only OCSP: https://images.apple.com/certificateauthority/pdf/Apple_Developer_ID_CPS_v3.0.pdf https://images.apple.com/certificateauthority/pdf/Apple_Deve...