What is Code Signing?
Last updated: April 14, 2026
Definition
Code signing is a cryptographic security process that applies a digital signature to software executables, scripts, firmware, and other code artifacts to verify the publisher's identity and confirm the code has not been tampered with since signing. Developers use code signing to authenticate their software before distribution, enabling operating systems and security tools to validate code integrity and block unauthorized modifications.
Key Facts
- Also known as: Software signing, digital code signing, executable signing
- Category: Application Security / Cybersecurity
- Related standards/protocols: Public Key Infrastructure (PKI), SHA-256 cryptographic hashing, FIPS 140-2 Level 2 (for HSM storage), CA/Browser Forum code signing requirements
- Key implementations: Microsoft Authenticode (Windows), Apple Xcode signing (macOS/iOS), AWS Signer (Lambda functions), Google Play App Signing (Android), Debian package signing (Linux)
- First developed: 1995 (Michael Doyle, Eolas WebWish browser plug-in)
How Code Signing Works
Code signing relies on Public Key Infrastructure (PKI) to create verifiable digital signatures. The developer generates a public/private key pair and obtains a code signing certificate from a trusted Certificate Authority (CA) after identity verification. When signing code, the developer creates a cryptographic hash of the software using SHA-256, encrypts that hash with their private key to produce the digital signature, and bundles the signature and certificate with the software package.
When a user downloads or installs the signed software, their operating system uses the CA's trusted public key to verify the certificate's authenticity. The system then extracts the developer's public key from the certificate, decrypts the signature to retrieve the original hash, and recomputes the hash from the downloaded file. If both hashes match, the code is verified as authentic and unaltered. If any byte has been modified, the hashes will not match and the system displays a security warning or blocks execution. Organizations with 24/7 security monitoring infrastructure can integrate code signing validation into their threat detection workflows to catch anomalous certificate usage patterns.
Timestamping adds long-term validity to signatures. By embedding a cryptographic timestamp from a Timestamp Authority (TSA) at the moment of signing, developers ensure signatures remain valid even after the signing certificate expires. Without timestamping, code signed with an expired certificate triggers security warnings despite being legitimately signed.
Why Code Signing Matters
Without code signing, software supply chains remain vulnerable to tampering at every distribution point. The 2020 SolarWinds attack demonstrated this risk when attackers compromised signing keys and inserted malicious code into legitimate updates signed with SolarWinds' own certificates, affecting approximately 18,000 organizations (U.S. Government Accountability Office, 2021). The attack succeeded because the malware carried a valid digital signature that security tools trusted.
Code signing authenticates publisher identity, ensures code integrity during distribution, and eliminates security warning dialogs that condition users to ignore real threats. As of 2024, 54% of organizations had implemented code signing, with 87% planning further adoption. The CA/Browser Forum's June 2023 mandate requiring Hardware Security Module (HSM) storage for all code signing private keys reflects the industry's recognition that key compromise represents the single point of failure in code signing security.
For environments managing software deployments across multiple locations or supporting BYOD policies, code signing provides a verifiable chain of trust from development through deployment. Organizations protecting against ransomware and supply chain attacks use code signing as a foundational control to prevent execution of unsigned or improperly signed executables.
Code Signing vs. Digital Signatures
| Aspect | Code Signing | Digital Signatures (General) |
| Primary function | Authenticates software executables and scripts | Authenticates any digital document or message |
| Scope | Specific to executable code and software artifacts | Applies to emails, PDFs, contracts, any data |
| Used by | Software developers, DevSecOps teams, platform vendors | Anyone needing document authentication and non-repudiation |
| Key difference | Requires trusted CA certificate, platform-specific implementations | Generic cryptographic technique, implementation-agnostic |
| When to use | Distributing software, firmware, mobile apps, container images | Signing contracts, verifying email sender, document integrity |
Code signing is a specialized application of digital signature technology specifically designed for executable code. While both use PKI and cryptographic hashing, code signing includes platform-specific requirements like timestamping, certificate validation by operating systems, and mandatory HSM storage for private keys as of June 2023.
Common Misconceptions
Code signing does not prevent malware execution if the signed code itself is malicious. Code signing only verifies that the code came from the stated publisher and has not been altered since signing. It does not analyze the code's behavior or guarantee the software is safe to run.
Code signing does not make expired certificates invalidate old signatures if timestamping was used. A properly timestamped signature remains valid indefinitely because the timestamp proves the code was signed when the certificate was still valid, preserving trust in software releases even years after the certificate expires.
Frequently Asked Questions
Code signing verifies software came from a trusted publisher and has not been tampered with. When signing keys are compromised, attackers can sign malicious code with legitimate certificates, as in the SolarWinds attack where 18,000 organizations downloaded malware signed with valid certificates.
EV certificates require rigorous identity verification and mandate HSM storage for private keys, while standard certificates use basic verification. Microsoft requires EV certificates for Windows kernel-mode drivers and grants immediate SmartScreen reputation to EV-signed software.
Timestamping embeds proof the code was signed when the certificate was valid. Without timestamping, code signed with an expired certificate triggers security warnings even if legitimately signed, forcing users to download new versions or accept weakened security.