A method of ensuring that an executable program has come from a valid software publisher and has not been altered by anyone in between. An EXE, CAB, driver or other executable file is digitally signed and transmitted along with a digital certificate from a certification authority (CA) such as VeriSign, Thawte or Go Daddy.
Verifying the Signed Certificate
After the code-signed executable is downloaded from a website, its certificate is extracted by the user's browser. From an internal list of CAs and their public keys, the browser uses the public key to verify the certificate's signature.
Verifying the Signed Executable
Next, the publisher's public key is used to verify the signature created from the executable's binary content. The public key decrypts the signature back into the digest, which is compared to the newly computed digest at the client side. If they match, the executable has not been tampered with. For more details, see digital certificate
and digital signature
Object and Code Signing
The terms object signing and code signing are used interchangeably; however, object signing refers to any file delivered in this manner. Code signing refers only to executables, which is the major concern when downloading from the Internet. See PKCS
The Short Version
The executable is signed with the software publisher's private key. When opened for use, its signature is verified. The details of the process are diagrammed below.
The Code Signing Process
The combination of the signed digital certificate and the signed executable file ensures that the executable has come from a valid publisher and has not been tampered with.