Historically, code signing has been used to protect Windows, Mac OS X, iOS, and Android computing. In the modern enterprise, it is also being used to secure containers, Internet of Things (IoT) software updates, and even software installed on airplanes. In general, code signing is used any place a developer wants a user to be sure of the authenticity of a piece of software.
Indeed, code signing is what allows users to be sure they’re downloading a file from the right author or publisher instead of an attacker who wants to take your information and data. Essentially, code signing lets you know that the code hasn’t been changed by a cybercriminal, so you know it’s safe to install and run on your machine.
Unlike Transport Layer Security (TLS) certificates, which have short expirations and are tied to specific web addresses, code signing certificates and private keys are like a passkey to your entire organization. This means that if unauthorized individuals get access to a private code signing key, they can sign anything and make it appear to come from your organization. Even if you were to revoke a code signing certificate, executables signed with it would still be trusted.
Recently, due to increased occurrences of software supply chain attacks by cybercriminals, code signing has been expanded to include the components that software developers use to build their software. These components include things like source code, third-party software libraries, open-source software, software build automation scripts, and even the tools that the developers use.
Where throughout your network are code signing machine identities being used? Read on to find out!
Securing software shipped externally
Signing software before shipping is important because it’s how customers know they can trust the software when they download it from the internet and install. They need to know that it comes from you and not some third-party masquerading as you. And they need to know that it has not been altered during its lifetime by a third party, such as having malware inserted.
A properly signed piece of software informs users whether the software they’ve downloaded and are trying to install can be trusted. It answers the question of where the software comes from and if it has been tampered with since it was signed. Figure 1-2 demonstrates this process.