Code Signing Certificate

Code Signing Certificate

Code signing is the process of digitally signing executables and scripts to confirm the software author and guarantee that the code has not been altered or corrupted since it was signed by use of a cryptographic hash.

Code signing can provide several valuable features. The most common use of code signing is to provide security when deploying; in some programming languages, it can also be used to help prevent namespace conflicts. Almost every code signing implementation will provide some sort of digital signature mechanism to verify the identity of the author or build system, and a checksum to verify that the object has not been modified. It can also be used to provide versioning information about an object or to store other meta data about an object.

Providing security

Many code signing implementations will provide a way to sign the code using a system involving a pair of keys, one public and one private, similar to the process employed by SSL or SSH. For example, in the case of .NET, the developer uses a private key to sign their libraries or executables each time they build. This key will be unique to a developer or group or sometimes per application or object. The developer can either generate this key on their own or obtain one from a trusted certificate authority (CA).

Code signing is particularly valuable in distributed environments, where the source of a given piece of code may not be immediately evident – for example Java applets, ActiveX controls and other active web and browser scripting code. Another important usage is to safely provide updates and patches to existing software. Windows, Mac OS X, and most Linux distributions provide updates using code signing to ensure that it is not possible for others to maliciously distribute code via the patch system. It allows the receiving operating system to verify that the update is legitimate, even if the update was delivered by third parties or physical media (disks).

Code signing is used on Windows and Mac OS X to authenticate software on first run, ensuring that the software has not been maliciously tampered with by a third-party distributor or download site. This form of code signing is not used on Linux because of that platform’s decentralized nature, the package manager being the predominant mode of distribution for all forms of software (not just updates and patches), as well as the open source model allowing direct inspection of the source code if desired.

Trusted identification using a certificate authority (CA)
The public key used to authenticate the code signature should be traceable back to a trusted root authority CA, preferably using a secure public key infrastructure (PKI). This does not ensure that the code itself can be trusted, only that it comes from the stated source (or more explicitly, from a particular private key). A CA provides a root trust level and is able to assign trust to others by proxy. If a user trusts a CA, then the user can presumably trust the legitimacy of code that is signed with a key generated by that CA or one of its proxies. Many operating systems and frameworks contain built-in trust for one or more existing CA’s (such as StartCom, VeriSign/Symantec, DigiCert, TC TrustCenter, Comodo, GoDaddy and GlobalSign). It is also commonplace for large organizations to implement a private CA, internal to the organization, which provides the same features as public CA’s, but it is only trusted within the organization.

Alternative to CA’s
The other model is where developers can choose to provide their own self-generated key. In this scenario, the user would normally have to obtain the public key in some fashion directly from the developer to verify the object is from them for the first time. Many code signing systems will store the public key inside the signature. Some software frameworks and OS’s that check the code’s signature before executing will allow you to choose to trust that developer from that point on after the first run. An application developer can provide a similar system by including the public keys with the installer. The key can then be used to ensure that any subsequent objects that need to run, such as upgrades, plugins, or another application, are all verified as coming from that same developer.

Time-stamping
Time-stamping was designed to circumvent the trust warning that will appear in the case of an expired certificate. In effect, time-stamping extends the code trust beyond the validity period of a certificate.In the event that a certificate has to be revoked due to a compromise, time-stamping can provide a specific date and time that the certificate will revert to.

Problems
Like any security measure, code signing can be defeated. Users can be tricked into running unsigned code, or even into running code that refuses to validate, and the system only remains secure as long as the private key remains private.

It is also important to note that code signing does not protect the end user from any malicious activity or unintentional software bugs by the software author – it merely ensures that the software has not been modified by anyone other than the author.

Text source: Wikipedia

EFTlab Code Signing (Authenticode)

-----BEGIN CERTIFICATE-----
MIIG3zCCBMegAwIBAgIQD/VHnitxUL/I7xGRdQ4HRDANBgkqhkiG9w0BAQ0FADBp
MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMT
OERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0
IDIwMjEgQ0ExMB4XDTI0MTExNDAwMDAwMFoXDTI4MDEwNjIzNTk1OVowZzELMAkG
A1UEBhMCQVUxEzARBgNVBAgTClF1ZWVuc2xhbmQxETAPBgNVBAcTCFNhbmRnYXRl
MRcwFQYDVQQKEw5FRlRsYWIgUFRZIExURDEXMBUGA1UEAxMORUZUbGFiIFBUWSBM
VEQwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDx7FY4ZcgzJW3xhNBh
n3bnsOLtgZnSmBfiWYVKPhzPdc/hECSiZtLAPN+2yTImTqdksFFizIlIxMMR1A3G
0x4+CsUtuY+7vtN4+9/SbQuVnuQho6rtEdqVKcePTnY7FSBe6jsy5xN6O5RJ/2tO
QW2XAfrmO8o20iYcg30Me3SYJn+lvYGtFemPG0sBX7YtDZpz/0f65Y+toDvfGNEF
lCrTGgr1VIJFb3oNhKbyuoSx1cvAcq6vTGnnk4xzw7qRezDDcQ/c5XbFi8DVZDKb
1JLIOwxddn/TApiUG46G9Ng6Kk1n71xiOvH/r8+k22pjHxe8bcXuYSON4Ftqd5l8
jhYSCBb2OVKn93WXAWPIqBKHJc0u0HaWsbAu89Vw0927w3Dol0Sz54vDx1yC2ce9
ulrfSr2kvpW9YJ+JWIpJXIqi21YLYPd32jqaehM68S2HzUtxdF9BRSONIo4cGbW8
1/F6EwkriF8uUD0e9JlU20aapvUMiC1ek5QA3b75Q6CitG8CAwEAAaOCAgMwggH/
MB8GA1UdIwQYMBaAFGg34Ou2O/hfEYb7/mF7CIhl9E5CMB0GA1UdDgQWBBRgBXW/
abPs5shs9nZdcQ1+hc8ZXTA+BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUF
BwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwDgYDVR0PAQH/BAQDAgeA
MBMGA1UdJQQMMAoGCCsGAQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6
Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5n
UlNBNDA5NlNIQTM4NDIwMjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5kaWdp
Y2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEz
ODQyMDIxQ0ExLmNybDCBlAYIKwYBBQUHAQEEgYcwgYQwJAYIKwYBBQUHMAGGGGh0
dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBcBggrBgEFBQcwAoZQaHR0cDovL2NhY2Vy
dHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0Q29kZVNpZ25pbmdSU0E0
MDk2U0hBMzg0MjAyMUNBMS5jcnQwCQYDVR0TBAIwADANBgkqhkiG9w0BAQ0FAAOC
AgEAGwjhzObTe6YN8lpyX3EURVH/eUXTIa/Epf8Fa/fvTnSdf/Z5GM2S1iHPqYfL
JpIGUoz+iF7ZTwaCv+GIp1+5uDQSQXrzI1/cS3FY7EFwT3bNXOjrU4h2eh1TvdtW
ij/7s71PS/jZgilpeV4AHNQ/AwwXG4XkMFbIZg3n+OlRFpKSvxqNx20uNmSnngGZ
VMBHwKxE49vsp9rVYCpupkAgaod3bn1wVAerRtAa2T1JUBY+x/i18S6X3yjQOLC7
96aA5yleNSw4cVYXDsB2e7SFFZPvKIdFyTXMZwYUykRF7v4fXwIjtKkhfkxB9mLn
zR4TwMxmnLYt6hmlZYolMBLWI3ZRCHW3tBBSsjZGoIRoF2mXN1Sxaqfy3xph3Ke0
pmYZt+Z7f4llIP2Y7iry4PPTYJcGU1alPkISmpXFCLvw+Ct6aBhrvQdTZ1Tf01z2
WdGmhgIJyFmmVn1DYX6AY2aB8dHpOQT2R6TbfdTIi+RgCX2BztmRYBrhu32luQnC
bZd9lKoAixTj+xO/BVv1NYurjQaVE32gpGdDNgYKUXz6pJ9QD4vK4lvaCZyZUC6v
EO/ohsu+Q1EDx2xZVF2FVq6Tck9cjU9a+Ch7fhkRIrZeHMp1mJm6Tnkk4SpBw6g2
X7DHpvzq7IMVEyNgN8Q8pQH/XvgVhOoMDsmEgs+9JXpjzPg=
-----END CERTIFICATE-----
SHA-256 Thumbprint:
8F26 D574 ECE8 72D7 2044 910D 3159 503F 8079 E9A0 362D 0DA0 972C E1C4 EE0F 6ECD
Serial Number:
0ff5479e2b7150bfc8ef1191750e0744
Issuer Name:
/C=US/O=DigiCert, Inc./CN=DigiCert Trusted G4 Code Signing RSA4096
Valid From / To:
2024-11-14 / 2028-01-06


EFTlab OpenPGP Signatures

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=dTpx
-----END PGP PUBLIC KEY BLOCK-----
OpenPGP Fingerprint:
23F6 B4FE 5829 80DB 989C  411D 8EAD B356 1416 5394
OpenPGP Key ID:
0x8EADB35614165394
User ID (UID):
EFTlab PTY LTD <support@eftlab.com>
Algorithm / Size:
RSA 4096
Valid From:
2024-04-16