Skip to content

Fortifying Your Software Supply Chain: Safeguarding Against Next-Generation Attacks

In recent years, the software industry has witnessed a surge in code signing attacks. Hackers have been exploiting vulnerabilities in code signing certificates to launch sophisticated attacks on software supply chains, leaving organizations with significant financial and reputational damages. Recent cyberattacks, such as the SolarWinds and Codecov breaches, have highlighted the devastating effects of code signing attacks, causing governments and industry experts to take notice.

The US government, for instance, has issued alerts and advisories warning against the risks of code signing attacks, urging software developers to secure their software supply chains with robust security measures. The need for code signing tools has never been more critical, as they can provide a reliable defence against the potential harm of these attacks.

According to early data from Sonatype’s 8th annual State of the Software Supply Chain Report, released on October 18, 2022, Sonatype has recorded an average 700% jump in repository attacks over the last three years. These figures are massive and what’s more concerning is the threat it poses to customers. 

In this blog, we’ll delve deeper into the rise of code signing attacks, explore recent attacks and their consequences, examine reports from government organizations, and discuss the importance of code signing tools in safeguarding software supply chains. By the end of this blog, you’ll have a better understanding of the current threat landscape and what measures you can take to secure your software supply chain against code signing attacks.

Enterprise Code-Signing Solution

Get One solution for all your software code-signing cryptographic needs with our code-signing solution.

Modern Attacks used by APTs

Through time not only our defenses are fortified with cutting-edge technology, but the attacks used by APTs are also getting smart. Hackers are getting swifter in their movements.   

Some types of code signing attacks that modern APTs use are listed here:-

  • Code Signature Spoofing

    Attackers can steal legitimate code-signing certificates and use them to sign their malware, bypassing antivirus and other security measures.

  • Compiler Backdoors

    Attackers can plant backdoors in compilers, which are then used to inject malicious code into legitimate software programs during the compilation process.

  • Man-in-the-Middle Attacks

    Attackers can intercept and modify software packages as they are being downloaded, injecting malicious code, or manipulating the code’s behaviour to cause harm.

  • Dependency Confusion Attacks

    In this type of attack, attackers take advantage of vulnerabilities in the software development process to inject malicious code into the software supply chain by exploiting dependencies that have the same name as legitimate ones.

But who shoulders the security factor?

Any successful cybersecurity program requires a comprehensive strategy that involves both humans and machines. However, in recent years, APT groups have exploited vulnerabilities in the human factor by leveraging social engineering tactics to penetrate the system undetected. Such attackers exploit security teams’ assumptions about adware and other seemingly harmless applications to move laterally within the network and avoid detection by security solutions.

They can even use legitimate tools already present in the system to their advantage. To mitigate these risks, it is crucial to not only invest in cutting-edge technology but also to educate employees on best practices. A comprehensive approach that combines advanced technology with employee training is necessary to ensure that the human factor is not a weak link in the security chain. By doing so, organizations can better protect themselves from APT groups and other sophisticated threats that target the human psyche.

What leads to certificate compromise?

Code-signing certificates are critical to ensuring software security. However, they are also susceptible to compromise by hackers. Attackers can obtain these certificates in various ways, such as by exploiting three key vulnerabilities.

  • The first is key theft, where code-signing certificates and their private keys are often stored in unprotected locations, such as signing servers or developer workstations. A breach in these systems can provide easy access for hackers.
  • The second vulnerability is internal misuse, where developers inadvertently make it easy for attackers to obtain code-signing certificates. An example of this is when D-Link accidentally published four code-signing keys in open-source firmware back in 2015.
  • The third and most concerning is a signing compromise, where attackers target the signing infrastructure itself. By compromising the infrastructure, attackers can sign malware and distribute it as legitimate software, without detection. In 2019, for instance, hackers compromised ASUS’ Live Update Utility, enabling them to distribute malware to thousands of users undetected.

CodeSign secure 

Here we come into the picture, CodeSign secure is our technology that helps reduce the risk of compromise to a large extent. We directly address the issues related to the factors which ultimately lead to compromise. 

Compromise not only cost extravagant money but also user distrust. Breaches are synonymous with chaos for any organization. Patching the vulnerability as soon as possible is the top priority but nobody knows how much time it may take to fix it.  

CodeSign Secure is the shield that safeguards you from this chaos.

CodeSign Secure addresses the problems with:

  • Virus scanning

    CodeSign Secure starts with virus scanning before commencing any type of signing process. It searches for any viruses or malware that may have been injected into the file before sending it away for the signing process.

  • Client-side Hashing

    CodeSign secure uses client-side hashing, providing you with that extra layer of security for customers. Hashing a file at its origin helps maintain its integrity at its peak and gives the customer a clear view of the file and what comes after signing.

  • Key-pair Handling

    CodeSign Secure never exposing the key while signing the file/code. The file is signed inside the HSM, and the keys are never exposed to the outside world.

  • Role-based access control

    Our organization provides Role-based access control for code/file signing providing correct access and privileges to the user. Ensuring only those with proper roles can access certificates, and keys within the tool.

  • Revoking compromised certificates

    When a certificate expires, it will automatically be renewed, but in the case that a certificate or key is found to have been compromised, the key can be revoked and thus the signing process cannot occur with that key and certificate.

  • Timestamp your signed code

    Avoid the risks of software expiring unexpectedly when the code signing certificate expires. When a code signing certificate expires, the validity of the software that was signed will also expire unless the software was timestamped when it was signed.

  • Monitor and audit key signing workflows

    Certificates and keys are associated with specific applications, and whoever is signing anything gets recorded in the logs of our tool, so we have the IP and the username of anyone attempting to sign. They will be blocked if they do not have valid credentials, or if the key or certificate has expired.

Conclusion

The Internet is going to be more chaotic in the upcoming time. These cyber-attacks are not halting anywhere soon, on the contrary they are going exponentially increase. Protecting our data must be done by us and proper precautions and measures are required to do so.

Not only do we need to use cutting-edge technology but general awareness among the masses. Regular audit policies and proper role-based authentication and access control system are needed to be in place.

Bearing all the responsibility of protecting your product is very heavy and you can always find a shoulder to rely on. We would be more than happy to be that shoulder and help to protect what truly matters to you.  

How to Integrate a Jenkins CI CD Pipeline with CodeSigning

Jenkins is an open-source automation tool that is widely used for continuous integration and continuous delivery (CI/CD) of software applications. Jenkins provides a web-based user interface that makes it easy to configure and manage jobs, which are automated tasks that can be scheduled to run at specific times or triggered by specific events. These jobs can be used to compile code, run tests, deploy applications, and perform many other tasks related to software development.

Some of the key features of Jenkins include:

  • Easy installation and setup

    Jenkins is easy to install and configure and can be set up on a wide range of operating systems and platforms.

  • Powerful job management

    Jenkins allows you to create and manage jobs, which are automated tasks that can be scheduled to run at specific times or triggered by specific events. Jobs can be used to compile code, run tests, deploy applications, and perform many other tasks related to software development.

  • Wide range of plugins and integrations

    Jenkins has a large number of plugins and integrations available, which allows it to work with many different tools and technologies. This makes it highly customizable and flexible.

  • Support for pipelines

    Jenkins provides strong support for pipelines, which are sets of stages that define a software development workflow. Pipelines can be defined using code, which makes them highly customizable and easy to version control.

  • Built-in testing support

    Jenkins provides built-in support for many different types of tests, including unit tests, integration tests, and functional tests. This makes it easy to run tests as part of a continuous integration workflow, ensuring that any code changes are thoroughly tested before being deployed to production.

  • Scalability

    Jenkins can be easily scaled to support large development teams and complex software development workflows.

  • Open-source

    Jenkins is open-source software, which means that it is free to use and can be customized to meet the specific needs of your development team.

Codesigning Using Jenkins

Code signing is a procedure that verifies the legitimacy of the author and the originality and authenticity of digital information, particularly software code. It also ensures that the information is not malicious code. Additionally, it guarantees that this information has not been altered, falsified, or canceled after being digitally signed.

To perform codesigning using Jenkins go through the steps below.

Prerequisites for performing this task includes:

  1. Jenkins Setup and Configured in your device
  2. Signtool installed and configured
  3. ECSigning KSP installed and configured.

To Setup and Configure Jenkins go through the link.

Enterprise Code-Signing Solution

Get One solution for all your software code-signing cryptographic needs with our code-signing solution.

To Setup and Configure Signtool follow the steps below:

Signtool can be downloaded as part of the Windows SDK. Download Windows SDK: (developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/)

You can choose to install only the Windows SDK Signing Tools for Desktop Apps.

Open the winsdksetup.exe file. Remember the default path shown in the install path, as this will be helpful with running these commands from the command prompt.

windows sdk home

On the Windows Kits Privacy page, either option for allowing Microsoft to collect insights is okay. Click next.

windows sdk privacy

Accept the license agreement

windows sdk license agreeement

Deselect every feature except for Windows SDK Signing Tools for Desktop Apps, then select install.

windows sdk feature

When prompted if you want to allow this app to make changes, select yes.

wndows user account control
windows sdk final

Click on windows search bar on task bar and type “Edit the system environment variables” and select the control panel option of the same name.

edit system environment variable

Click environment variables.

environmental variables modal

Before editing the variable list, navigate to where the Windows SDK is installed to using file explorer, you must copy the path of the folder which contains the signtool application, the default path is C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64, refer to the below screenshot. Make sure to right click and copy the path as shown. You can also see the signtool application at the bottom of the file list, this is the command you will run.

signtool installation path

In the System Variables list, click new. Then type Path as the variable name, and copy and paste the aforementioned path. Then click OK on the environment variables window and system properties window.

add new system variable

To test the installation, open command prompt, and type signtool, and the output should be as shown below.

signtool command prompt

The default signtool installation location is, for example: C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64

To set up KSP follow the steps below:

Encryption Consulting provides you with this solution, CodeSignSecure. This solution can help you with tamper-proof storage for the keys and complete visibility and control of Code Signing activities. The private keys of the code-signing certificate can be stored in an HSM to eliminate the risks associated with stolen, corrupted, or misused keys.

If you’re using our solution you can download the KSP using the steps below:

  • Sign in to Code Sign Secure.
  • Navigate to: Signing tools repository.

    codesign secure signing tools page
  • Download “Encryption Consulting CNG-SigningKSP”
  • Install the client tools using the .MSI installer. The .MSI installer automates much of the configuration. Navigate to where the downloaded file is saved and launch the installer.

    msi installer
  • Click next when the installation wizard appears.

    ec signing ksp setup home
  • Click next.

    ec signing ksp setup folder installation
  • In the Username field, type admin.
  • In the Code field, copy the code from the Postman API Repository. Click on the GetLoginToken api and copy the code from the Body.

    Download PostMan from this link. Once downloaded, click the skip button at the bottom of the window. Once on dashboard, add a new collection using the plus sign button next to collections.

    GetLoginToken API (http://codesignsecureapi.encryptionconsulting.com/api/auth/GetLoginToken): This is the most important API, as this gives you a Bearer Token to use with the rest of the APIs, What should be in the body is shown below. The code serves as a password in order to get a the Bearer Token, the user field is the username, and the identity type field specifices the user type. Click Send to generate an output which has the Bearer Token listed at the bottom. Copy this token for use.

    postman bearer token api
  • Change the Identity Type to 1.
  • Leave API BaseURL the same.
  • Click next.

    ec signing ksp setup user authentication info
  • Click next.

    ec signing ksp setup installation confirm
  • You will then be notified that this program will make changes to your pc, click yes.

    msi setup user account control
  • Installation is now complete.

    ec signing ksp setup installation complete

Once Jenkins is setup, we will require administrative privilege to run the command for signtool. To see we have set the administrative privilege for Jenkins, and if we haven’t, to set those

  • Go to services on your system (You can just search for it)
  • Scroll down to Jenkins. There in the “Log on As” column, you can see the user account set up for Jenkins. If it’s set to anything (Local Service/System, Network Service/System) other than “.\Administrator”, then we have to set it for Administrator.
  • Double Click on Jenkins or Right Click > Properties to open Properties. Go to Log On.

    Select “This Account”

    Set it as “.\Administrator”. Give a password, preferably administrator password. Click on Apply once done.

    jenkins properties

Once we have set this we’ll now head to Jenkins. Whichever URL/hostname you specified earlier while setting up, navigating to that from your browser will lead you to Jenkins. In my system I have set it up as http://localhost:8080/ (It is also default).

In your Dashboard follow the steps below:

  • From Dashboard click on New Item.

    jenkins dashboard
  • Enter any item name and click on pipeline and click ok.

    jenkins enter item name
  • In configuration page, under General put up a description as your wish.

    jenkins general configure
  • Scroll down to the bottom to find Pipeline.

    jenkins configure pipeline
  • Write the script in the script box and click on save. You’ll need to edit your environment variable as per your setup

    pipeline {
        agent any
        environment {
            SM_KEY_NAME='evcodesigning'
            SM_CLIENT_CERT_FILE='C:\\Users\\Administrator\\Desktop\\ForTesting\\evcodesigning.pem'
            SM_HASHING_ALGORITHM='SHA256'
            SM_TIME_STAMP_SERVER="http://timestamp.digicert.com"
            SM_FILEPATH="C:\\Users\\Administrator\\Desktop\\ForTesting\\AgentService.exe"
        }
        stages {
            stage('Code Signing') {
                steps {
                    dir('C:\\Users\\Administrator\\Desktop\\ForTesting'){
                    bat 'signtool sign /csp "Encryption Consulting Key Storage provider"
    /kc %SM_KEY_NAME% /fd
     %SM_HASHING_ALGORITHM% /f %SM_CLIENT_CERT_FILE% /tr %SM_TIME_STAMP_SERVER% /td SHA256 %SM_FILEPATH%'
                    }
                }
            }
        }
    }
    
  • Click on build now and you’ll see a build number running on the screen.

    jenkins build
  • If you click on the build number and go for console output you’ll see that your file has been signed.

    jenkins successfully signed file

How CertSecure Manager Enhanced Certificate Management for the Healthcare Industry

Company Overview 

One of the leading healthcare companies in the US found itself grappling with a complicated and manual approach to certificate management. This organization was known for its focus on preventive care, electronic health records, and efforts to reduce healthcare costs while improving outcomes. It pioneered the development of comprehensive health information systems and was an early adopter of telemedicine technology. As health information is extremely sensitive in nature, the organization had strong data security measures in place along with compliance with healthcare regulations such as the HIPPA. However, as discussed, it was already grappling with the manual approach to certificate management. 

The Challenges 

  1. Manual Certificate Management

    Manual processes in certificate lifecycle management create many painful areas, especially considering the expansion of certificates organizations require to run their operations securely and reliably. Using spreadsheets to track certificates and search through thousands of rows can be time-consuming.

    In addition, manual certificate management is unreliable and error-prone. Furthermore, how can you enforce an enterprise-wide policy if you fail to understand and control who issues keys and certificates? How can you audit that this particular policy is adequate? Blurred visibility can be considered another drawback of manual certificate management.

  2. Inefficient Certificate Discovery

    Certificate discovery refers to identifying and cataloging SSL/TLS certificates deployed across an organization’s infrastructure.

    These certificates can be scattered throughout various domains, servers, devices, and cloud services, making it challenging for organizations to track them manually. An inefficient certificate discovery can lead to a deteriorating security posture. Certificate expirations are one of the leading causes of certificate-related outages, which leads to disruptions in secure connections and potential service downtime. It may also lead to compliance issues with industry standards and regulations.

  3. Lack of Proper Certificate Enrollment

    Certificate Enrollment is the process by which an entity, such as an individual or an organization, requests and obtains a digital certificate from a Certificate Authority (CA). Digital certificates are used to secure communications and authenticate the identity of a server, client, or user in various secure protocols like SSL/TLS (for securing websites), S/MIME (for email encryption and signing), and more.

    The lack of proper certificate enrollment can lead to an erosion of trust in the organization. It can also turn off secure communications within and outside the organization. Furthermore, it can lead to non-compliance with security standards and regulations.

  4. Certificate outages

    The organization faced certificate-related outages due to its poor certificate management system. A certificate outage, also known as a certificate failure, refers to an SSL/TLS certificate becoming invalid, expired, or revoked, rendering it unusable for establishing secure connections. During such an outage, websites and online services relying on these certificates may experience disruptions, leaving them vulnerable to cyberattacks and data breaches. This type of incident can lead to a domino effect of problems, affecting user trust, reputation, and financial well-being of the impacted entities.

  5. Limited Integration

    Existing tools couldn’t deploy certificates within their CI/CD pipeline, making integration work with existing or new applications in the development process near impossible.

Certificate Management

Prevent certificate outages, streamline IT operations, and achieve agility with our certificate management solution.

Solution

  1. CertSecure Manager enabled a centralized certificate inventory control, in which the institution automated and centralized digital certificate management in their inventory. It enabled the maintenance of security and compliance across the certificate lifecycle by automating the revocation, monitoring, and renewal processes.

  2. CertSecure Manager offered an automated approach to the certificate lifecycle management process, which reduced the risks of outages caused by expired or invalid certificates while improving overall security.

  3. It also enabled efficient certificate discovery, improved the institution’s security and compliance by removing unused or expired certificates, and ensured critical certificates were not allowed to expire while enhancing the overall PKI infrastructure of the institution.

  4. The CertSecure Manager streamlined the certificate enrollment of the organization. It helped reduce management costs, enforced controls and policies for authentic users, and enabled quick certificate acquisition. This enhanced the overall security and efficiency of the organization.

  5. Simplification of report generation was also done, along with automated alerts for the organization using the tool. It enabled the report generation based on expiration dates, templates, key length and so on.

  6. CertSecure Manager efficiently eliminated certificate outages by creating a distinct alert system for expiration or revocation. It implemented a centralized certificate management solution to keep track of certificate expiration dates, which allowed administrators to take timely action. It even established notifications or reminders for certificate renewals to ensure they are not missed or overlooked.

Impact 

CertSecure Manager’s ability to streamline certificate issuance and renewal enhanced the organization’s operational efficiency while reducing certificate provisioning time by 70-80%. 

In addition to that, CertSecure Manager’s seamless integration with NESSUS and other certificate discovery tools, along with intelligent environment monitoring and vulnerability identification, helped eliminate certificate blind spots while automated monitoring and maintenance of certificates. 

Moreover, CertSecure Manager enhanced certificate ownership visibility through detailed inventory records, enabling enhanced accountability and simplified ownership transfer. Furthermore, CertSecure Manager’s unified certificate inventory dashboard enhanced control and insight into certificates and increased flexibility in certificate report customization. 

Conclusion

CertSecure Manager helped the organization overcome the intricate challenges of certificate management. With solutions like certificate discovery, automation, detailed inventory, and intelligent monitoring, this tool enhanced operational efficiency and security. 

How to overcome code signing risks?

In today’s digital age, where almost everything is interconnected, cybersecurity has become more important than ever before. One of the most critical aspects of software security is code signing. It ensures that the software being installed on a system is genuine and has not been tampered with. However, as the use of code signing has increased, so have the risks associated with it. Hackers are getting better at stealing code-signing machine identities, which poses a significant threat to the security of software systems.

What is Code Signing, and How Does It Work?

Code signing is a process that involves digitally signing software with a certificate to prove its authenticity. A code signing certificate is essentially a digital ID that is issued by a trusted third party, such as a certificate authority (CA). The certificate includes information about the software vendor, the software’s hash value, and the digital signature. When the software is installed, the operating system checks the signature against the certificate to ensure that the software is genuine and has not been tampered with.

Code signing provides several benefits, such as ensuring the integrity of the software, protecting against malware, and establishing trust between the software vendor and the end user.

The Risks Associated with Code Signing:

One of the most significant risks associated with code signing is the theft of code-signing machine identities. If a hacker gains access to the code signing keys, they can steal and use them to insert malware. This can allow the malware to bypass antivirus software and other security measures, making it much harder to detect and remove.

Another risk associated with code signing is the misuse of certificates by insiders. Insiders, such as developers or system administrators, may have access to code-signing certificates and can misuse them to sign malicious software. This can happen accidentally or deliberately, which can be challenging to detect and prevent.

Finally, code signing can also be vulnerable to phishing attacks. Hackers can send phishing emails to developers or system administrators, tricking them into revealing their credentials or downloading malware. This allows the attacker to sign malicious software with a legitimate code signing certificate, making it much harder to detect and remove.

Enterprise Code-Signing Solution

Get One solution for all your software code-signing cryptographic needs with our code-signing solution.

The Consequences of Code Signing Identity Theft:

The consequences of code-signing identity theft can be severe. This can result in a range of negative consequences, such as:

  • Loss of trust

    If software vendors’ code signing certificates are compromised, it can lead to a loss of trust between the vendor and the end-user. This can result in a loss of business and a damaged reputation.

  • Financial loss

    Malware signed with a legitimate code signing certificate can result in significant financial losses for both the software vendor and the end user.

  • Legal issues

    If a software vendor’s code signing certificate is stolen and used to sign malware, the vendor may face legal issues, such as lawsuits or regulatory fines.

 Preventing Code Signing Identity Theft:

  • Using code signing best practices

    Software vendors should follow code signing best practices, such as using the latest certificate technologies, validating certificate chains, and verifying the certificate’s revocation status. This can help prevent code signing identity theft and ensure the integrity of the software.

  • Monitoring for suspicious activity

    Software vendors should monitor code signing machines for suspicious activity, such as unauthorized access attempts or unusual signing patterns. This can help detect code signing identity theft early and prevent further damage.

  • Implementing strong security policies

    Software vendors should implement strong security policies that cover all aspects of code signing, such as password management, access control, and incident response. This can help prevent code signing identity theft and minimize the impact of any security incidents.

Conclusion

Code signing is a critical component of software security that ensures software integrity and establishes trust between the vendor and the end user. Preventing code-signing identity theft requires a multi-layered approach, including securing code-signing machines, limiting access to code-signing certificates, storing the keys in a safe environment, educating employees, following code-signing best practices, monitoring for suspicious activity, and implementing strong security policies. By taking these steps, software vendors can help prevent code signing identity theft and ensure the integrity of their software systems.

How does CodeSign Secure provide Security Measures?

Organizations spend huge amounts of money protecting users’ digital identity and access management, like their usernames and passwords. More resources are needed to manage code signing keys, machine identities, and certificates because the global digital economy depends on secure infrastructure and software. Digital transformation has made businesses transform their operations to digital and do their software businesses. Thus, the need arises to protect these critical infrastructures using the code-signing machine, which makes identity management more critical than ever.

What is Code Signing?

Code signing is a way or method of adding a digital signature to a piece of the digital file or software such that its authenticity can be verified when used, including the integrity of the software. It helps guarantees that the recipient knows who the sender or author is and that it hasn’t been tampered with after signing it. Earlier, code signing software was mainly used for verifying the authenticity of the software executables like – software updates, programs, and shell scripts to verify the authenticity and integrity of these end-users.

How Code Signing Works?

When a valid machine identity is used to sign software — such as a code signing certificate and encryption key—computing devices will implicitly trust and unconditionally run the software. The valid code signature indicates that the code comes from the trusted source that signed it and hasn’t been tampered with by a third party.

When this process is compromised, cybercriminals can misuse code-signing machine identities to sneak malware that appears to come from your organization into your software. However, with the recent flurry of software supply chain attacks where hackers insert malware before the final software gets signed, code signing is now also used to protect intermediate software artifacts such as source code, build scripts, software libraries, execution containers like Docker, and the tools that are used by the software team to build their software.

After signing software with a valid machine identity – such as an encryption key and a code signing certificate – computing devices implicitly trust and run the software unconditionally. The valid code signature indicates that the code comes from the trusted source that signed it and hasn’t been tampered with or damaged by a third party. When this process is compromised, cybercriminals can misuse code-signing machine identities to sneak malware that appears to come from your organization into your software.

Enterprise Code-Signing Solution

Get One solution for all your software code-signing cryptographic needs with our code-signing solution.

How does code-signing machine identity impact Security?

While doing an online transaction, users prefer to be sure that when they log into their bank account, they are providing their credentials to the intended banks and not any attacker. Similarly, it’s best to be sure that the software programs and updates a user intends to download are safe and from authentic senders or publishers. To achieve this, the user must use the same Public Key Infrastructure (PKI) used to secure the HTTPS connection. The process of code signing is defined as the signing and verification of software using machine identities.

When software files such as – a program, document, driver, firmware, file, mobile application, container, or even a script are signed digitally to show that it has been sent from an authenticated source and the data hasn’t been tampered with or altered after it was signed. The three necessary items required in a code signing operation are:

  • The code which is to be signed upon.
  • A Certificate Authority (CA) previously issued a public code signing certificate.
  • A private code signing key is to be used for encrypting.

After an organization has the code signing certificate and private/public PKI key pair, developers or users can sign their code. This process varies depending on what types of code are being signed and how often they’re being released.

How does EC’s CodeSign Secure provide security?

Encryption Consulting’s CodeSign Secure product stores the private keys of the Code-signing certificates in an HSM to eliminate all kinds of risks associated with corrupted, stolen, or misused keys. We have validated of code against up-to-date antivirus definitions for malware and virus before digitally signing any malicious code. On the client side, hashing has been enabled to ensure the build performance and avoid unnecessary movement of files for greater security.

Conclusion

EC’s CodeSign Secure provides a command line signing tool that helps in faster bulk sign requests, i.e., multiple files can be signed, each file taking less than 0.2 seconds. Also, robust access control systems can be integrated with LDAP and customizable workflows for mitigating risks associated with granting wrong access to unauthorized users and allowing them to sign code with malicious certificates. Thus, CodeSign Secure helps to confirm the authenticity and originality of digital information, such as a piece of software code.

Microsoft Active Directory Certificate Services (AD CS) with CDP/AIA on Amazon Web Services

Deploying an Active Directory Certificate Services is a straightforward way for enterprises to build their PKI infrastructure. But it does have its shortcomings, such as

  • Lack of deployment in multiple regions
  • High latency on CDP and AIA points

In this article, we will be showing you how your own PKI architecture while you host your CDP/AIA points on AWS.

Note: If this is your first time deploying a PKI, I recommend following ADCS Two Tier PKI Hierarchy Deployment as it is a more straightforward approach and also touches the basics.

Prerequisites

  • An AWS account where we will create S3 bucket.
  • A custom domain name
  • An offline Windows Server VM, which will be our Root CA

[NOTE: This is a test scenario. As such, CDP and AIA points may not match your requirements. Do use values that are appropriate as per your requirements.]

Preparing CDP & AIA Points

We will create S3 Bucket that will act as our CDP/AIA points for our PKI infrastructure. We will also associate it with our custom domain to redirect it to our AWS.

Creating Amazon S3 Bucket

  1. First, we need to log in to Amazon Web Services and navigate to Amazon S3.
  2. Then on the right side of the pane, click on Create Bucket.
    1. In bucket name include your custom domain name (eg:bucketname.encryptionconsulting.com)
  3. Click on ACLs enabled.
  4. Uncheck the public access block and click on the acknowledge box.
  5. Make sure all remaining settings must be a default.
  6. Open the bucket > Under Permissions-> under bucket policy, click on Edit button -> click on Policy Generator
  7. Under select policy type, select S3 Bucket Policy. Under Add Statement -> under principal use * -> Under Actions select Get Object -> Under Amazon Resource Name (ARN) copy Bucket ARN URL from the bucket policy & add /*at the end of ARN URL in Amazon Resource Name (ARN). Click on Add Statement.
  8. Click on generate Policy.
  9. Copy the text under the policy. Click on Save Changes.
  10. Under Bucket -> right side of the pane, click on Upload. It might be a png/pdf/word doc for the testing.
  11. Open the testing file. Copy the object URL and paste it into chrome. Then you can see your file

Binding AWS with a custom domain

  1. Using one.com or a similar hosting service, In DNS settings, navigate to DNS records. Now, we need to retrieve the hostname for our AWS account. Select Web alias -> Ensure that hostname must be our bucket name -> Under will redirect to paste the URL from the testing file & remove the file name from the URL. Click on Create Record.
  2. Now, we can fetch our file from our custom domain. Type http://<hostname>/<file name > in chrome.
    1. Be sure to remove s from https: to prevent issues.

Configuration of CDP & AIA Points on Root CA

Enterprise PKI Services

Get complete end-to-end consultation support for all your PKI requirements!

Run the following commands on the command prompt of Root CA

AIA:

certutil -setreg CA\CACertPublicationURLs “1: C:\Windows\system32\CertSrv\CertEnroll\%1_%3%4.crt\n2: ldap:///CN=%7,CN=AIA,CN=Public Key Services, CN=Services, %6%11\n2:http:////%1_%3%4.crt”

CDP:

certutil -setreg CA\CRLPublicationURLs “1:C:\Windows\system32\CertSrv\CertEnroll\%3%8%9.crl\n10:ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10\n2:http:////%3%8%9.crl”

Run the following commands to restart Active Directory Certificate Services and publish the CRL.

  • net stop certsvc && net start certsvc
  • certutil -crl

Publish the Root CA Certificate and CRL

  1. Ensure you are logged on to our Issuing CA as Enterprise Admin. Copy Root CA Certificate and Root CA CRL files from the C:\Windows\System32\CertSrv\CertEnroll directory to Issuing CA.
  2. On our Issuing CA, run the following commands at an administrative command prompt to publish Root CA Certificate and CRL in Active Directory.
    • certutil -f -dspublish <Root CA Certificate Path> RootCA
    • certutil -f -dspublish <Root CA CRL Path > <Root CA Name>
  3. To add Root CA Certificate and CRL in the Certificate store in our Issuing CA, run the following command from an administrative command prompt.
    • certutil -addstore -f root <Root CA Certificate Path>
    • certutil -addstore -f root <Root CA CRL Path>
  4. Ensure you are logged on to Issuing CA as Enterprise Admin. Right-click on Issuing CA, then click on Renew Certificate.
  5. Copy the REQ file from Issuing CA to Root CA.

Submit the Request and Issue Encon Issuing CA Certificate

  1. Ensure that you are logged on to Root CA as Admin. On Root CA, open an administrative command prompt. Then, submit the request using the following command. In the Certification Authority List dialog box, ensure that Root CA is selected and then click OK.
  2. Open the Certification Authority console. In the certsrv [Certification Authority (Local)], in the console tree, expand Root CA. Click Pending Requests. In the details pane, right-click the request you just submitted, click All Tasks, and click Issue.
  3. Return to the administrative command prompt to retrieve the issued certificate by running the following command   certreq -retrieve 5 <Issuing CA Certificate Path>.crt.”

Install the Encon Issuing CA Certificate on Issuing CA

  1. Ensure you have logged into Issuing CA as Enterprise Admin. Open the Certification Authority console. In the Certification Authority console tree, right-click Encon Issuing CA, and then click Install CA Certificate. Display All Files (*.*) and click the Issuing CA Certificate. Click Open. In the console tree, right-click Encon Issuing CA, click All Tasks, and then click Start Service.

Configuration of CDP & AIA Points on Issuing CA

Run the following commands on the command prompt of Root CA

AIA:

certutil -setreg CA\CACertPublicationURLs “1: C:\Windows\system32\CertSrv\CertEnroll\%1_%3%4.crt\n2: ldap:///CN=%7,CN=AIA,CN=Public Key Services, CN=Services,%6%11\n2:http:////%1%3%4.crt”

CDP:

certutil -setreg CA\CRLPublicationURLs “1:C:\Windows\system32\CertSrv\CertEnroll\%3%8%9.crl\n79:ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10\n6:http:////%3%8%9.crl”

disable delta crls using this command.

Certutil -setreg CA\CRLDeltaPeriodUnits 0

Run the following commands to restart Active Directory Certificate Services and publish the CRL.

net stop certsvc && net start certsvc

certutil -crl

Upload Certificates and CRLs

  1. First, we need to log in to Amazon Web Services and navigate to EC2.
  2. On the pane’s right side, click Launch Instances. Ensure that name must be globally unique and must not contain spaces.
  3. Operating system should be Amazon Linux 2 AMI (HVM)-Kernal 5.10, and SSD Volume Type & Architecture must be 64-bit (x86).
  4. Instance type remains the same.
  5. Click on Create new key pair. Click on create key pair. Ensure that name must be globally unique and must not contain spaces.
  6. Make sure all remaining settings must default. On the right side of the pane, click on Launch Instances.
  7. Scroll down a bit, then click on view all instances.
  8. Now, navigate to IAM. On the right side of the pane, click on IAM.
  9. Under dashboard -> Users-> Add Users. The maximum length of a username will be up to 64 characters. Click on Next.
  10. Check the AWS management console box. Click on create an IAM user. Click on Next
  11. Click on Attach policies directly. Under Permission policies, in the search bar, type s3 and check the AmazonS3FullAccess box. Click on Next.
  12. Under Review & create, click on create the user.
  13. Under Retrieve password -> click on return to users list
  14. Select the user we have configured -> Under the user, select Security Credentials.
  15. Under Security credentials -> select Access keys -> click create an access key.
  16. Select Command Line Interface (CLI). Make sure to click on the acknowledge box. Click on Next.
  17. Maximum length of a set description tag will be up to 256 characters. Click on Create access key.
  18. Under Retrieve access keys -> click on the download .csv file.
  19. Install AWS Command Line Interface. Double click on AWS CLI set up. It will open the new wizard. In the initial screen, click Next to continue.
  20. Then, in the next window, accept the license agreement and click Next to proceed.
  21. Click on Next.
  22. On the next page, click on Install to begin the installation process.
  23. Once installation is completed, click on Finish.
  24. Open Command Prompt and run the following command to upload the CRLs & CRT :
    • aws –version
    • aws configure.

    Note: Write down the AWS Access Key, AWS Secret Access key & default region name from the downloaded .csv file. In Default output format, leave it none & press enter it.

  25. Run the following command to upload the CRLs & CRT:

    • aws s3 ls
    • aws s3 ls s3://eroot.encryptionconsulting.com
    Note: eroot.encryptionconsulting.com is our bucket name
  26. Now, it’s time to upload the certificate & CRLs from our system to AWS by running the following command:
    • aws s3 sync C:\aws-s3<Folder name > s3: \\eroot.encryptionconsuting.com <bucket name >
  27.  Now check successfully if we have uploaded the certificate & CRLs.
    • aws s3 ls s3://eroot.encryptionconsulting.com
    Note: aws-s3 is our folder name & eroot.encryptionconsulting.com is our bucket name.
  28. Now run the pkiview. msc command on Cmd, and we successfully deployed our CDP/AIA points on AWS. Note: Files may need to be renamed for cdp and aia urls to work

Conclusion

This concludes our AD CS installation with AWS Services. It is easier to manage, but we also achieve high availability using AWS. This will help organizations create PKI that can be operational worldwide with minimal latency and high performance no matter where you are.

CipherTrust Manager Web Interface Certificate Error

In this blog, we’ll discuss the issue faced while configuring the web interface on CipherTrust Manager.

Error

NET::CRR_CERT_INVALID

Description

Let’s consider that we have a CipherTrust Manager and want to configure the web interface using an external CA-generated certificate. As per the procedure, we’ll have to generate a CSR (Certificate Signing Request), upload the root and intermediate CAs on CipherTrust Manager, and then assign the externally signed certificate to the web interface.

Cause

The primary reason for this error is that the certificated signed by the external CA for the web interface of CipherTrust Manager has yet to be in an active state.

intermediate CAs on CipherTrust Manager

Implementation Services for Key Management Solutions

We provide tailored implementation services of data protection solutions that align with your organization's needs.

Solution

Let’s assume we are configuring a web interface certificate for thales01.ec.com. To resolve this error, please follow the below-mentioned steps

  1. Login to CipherTrust Manager. From the dashboard, click on CSR Tool under CA.

    CSR Tool under CA
  2. Click on + Create CSR and enter all the required information.

    CSR Info
  3. After verifying the information, click on Create.

  4. Save the private key as well as the CSR.

    RSA
  5. Send the CSR to the signing authority to create the signed certificate.

    Note: The preferred certificate format is PEM.

  6. Now, upload the Root and Intermediate CA Certificates. From the Dashboard, click External under the CA section.

    Root and Intermediate CA Certificates
  7. Click on + Add External CA.

    Add External CA
  8. Enter the Display name and paste the Root CA certificate in the box. Click on Save.

    Add External Certificate
  9. Perform similar steps for adding intermediate/issuing CA.

  10. Navigate to interfaces under admin settings.

    interfaces under admin settings
  11. Click on the … (3 dots) for web and select Edit.

    Interfaces
  12. Select “Turn off auto generation from Local CA” for Local CA for Automatic Server Certificate Generation.

    Local CA
  13. Add the Root CA and the Intermediate CA to the External Trusted CAs list.

    Root CA and the Intermediate CA
  14. Click on the arrow and expand the Upload Certificate option. Paste the entire certificate chain into the box.
  15. Select PEM on Format.
  16. Enter the Private Key Password (if required) created during the process of CSR generation.
  17. Click on Upload New Certificate. We have now successfully assigned an externally signed certificate to the web interface.
  18. Navigate to services under Admin settings.
  19. Click on System Restart

    CSR generation
  20. Once the services have been restarted, try to access the GUI of CipherTrust Manager by entering the hostname in the browser. If the error below appears, wait approximately 20-30 minutes for the certificate to get active and then refresh the page.

    intermediate CAs on CipherTrust Manager

Protect Your Software and Build User Trust: The Ultimate Code Signing Solution

Code signing has proven to be a crucial tool for ensuring software security in the modern digital environment. To ensure that software is safe and secure, code signing has become an essential aspect of software development. Code signing is the process of digitally signing software to verify the authenticity and integrity of the code.

Given the prevalence of malware and cyber-attacks, developers need to take precautions to safeguard their code and provide users with the assurance that the software they use is reliable and trustworthy. Strict security protocols, powerful cryptographic algorithms, and authentication mechanisms to confirm code accuracy are all necessary for code signing.

It’s critical to confirm that the major operating systems and browsers trust and recognize the Certificate Authority being used for code signing. Failure to comply with these requirements may compromise software, harm one’s reputation, and erode user confidence.

But the benefits of code signing, and Sign Tool are not limited to software developers alone. CISOs and CTOs can also benefit from these tools by ensuring that the software used within their organizations is secure and trustworthy. By using code signing and the Sign Tool, they can be assured that any software downloaded and used within their organization is genuine and has not been tampered with. This can prevent data breaches, malware infections, and other security threats that could harm the organization.

What’s more interesting is that the global average cost of a data breach increased 2.6% from $4.24 million in 2021 to $4.35 million in 2022 — the highest it’s been in the history of IBM Security’s “The Cost of a Data Breach Report.

Code signing provides several benefits to both software developers and end-users. It assures users that the software they are downloading is genuine and has not been tampered with by a third-party. This increases trust in the software and makes users more likely to download and use it. Code signing also protects software developers from intellectual property theft by verifying their ownership of the code. It also prevents malware and viruses from being spread through unauthorized code.

Therefore, developers should carefully consider the necessity of and prerequisites for code signing.

You might still be indecisive about using code signing. Let’s examine a cyber breach to understand the graveness of code signing.

SolarWinds cyber breach

SolarWinds which is a very prominent company in IT got hacked. It was after this breach that supply-chain attacks got more widely known. Hackers were able to access Orion, the company’s IT monitoring system, which is utilized by over 30,000 businesses, including municipal, state, and federal authorities. Through an Orion software update hackers were able to spread backdoor malware. 

Now that looks too scary for an organization, and it must not happen with any organization as organization compromise is the ultimate compromise of user data and these attacks should be mitigated at any cost.

Want to get a detailed explanation and timeline of the SolarWinds breach, follow this link to get an explanation from an expert.

How can our organization help?

Our organization has come up with the most efficient and user-friendly code signing solution “CodeSign Secure”. What makes us the best out in the market?

  • CodeSign Secure starts with virus scanning before commencing any type of signing process. It searches for any viruses or malware that may have been injected into the file before sending it away for the signing process.
  • CodeSign secure uses client-side hashing, providing you with that extra layer of security for customers. Hashing a file at its origin helps maintain its integrity at its peak and gives the customer a clear view of the file and what comes after signing.
  • Never exposing the key while signing the file/code. The file is signed inside the HSM, and the keys are never exposed to the outside world.
  • Our organization provides Role-based access control for code/file signing providing correct access and privileges to the user. Ensuring only those with proper roles can access certificates, keys within the tool.
  • Timestamp your signed code

    Avoid the risks of software expiring unexpectedly when the code signing certificate expires. When a code signing certificate expires, the validity of the software that was signed will also expire unless the software was timestamped when it was signed.

  • CodeSign Secure follows the latest NIST (National Institute of Standards and Technology) guidelines of code signing.
  • Monitor and audit key signing workflows- Certificates and keys are associated with specific applications, and whoever is signing anything gets recorded in the logs of our tool, so we have the IP and the username of anyone attempting to sign. They will be blocked if they do not have valid credentials, or if the key or certificate have expired.
  • Enable automated code signing in SDLC processes

    We have the ability to sign from a client tool, via APIs, or via the command line so it is very straightforward and simple to integrate our tool into SDLC processes, including tools like Jenkins and Bamboo.

  • Compare signing from different build servers

    our tool will check that the code being signed is the most up to date version of the code on the build servers in use by the client, ensuring an older or potentially malicious version of the code is not being signed.

  • Revoking compromised certificates

    When a certificate expires, it will automatically be renewed, but in the case that a certificate or key is found to have been compromised, the key can be revoked and thus the signing process cannot occur with that key and certificate.

Our organizations CodeSign Secure has some amazing tools inside that have made different types of signing operations simple.

But what files they can sign? Let us get some insight.

Enterprise Code-Signing Solution

Get One solution for all your software code-signing cryptographic needs with our code-signing solution.

Encryption Consulting- CodeSign Secure

Managing and using different tools for different types of file/certificate signing may prove to be a hefty task especially when submerged by a stockpile of different files that need to be signed. Obviously, one option is to buckle up and get started with the work. It may take forever to rotate between software and get the job done, or simply use our organisations top of the line solution, CodeSign Secure- a command line tool and GUI tool for code signing.

A seamless solution that empowers you to protect your code and files from getting altered and safeguarding the integrity of code. The command line tool automatically detects the file extension and proceeds with the appropriate signing method. Just by giving a few inputs CodeSign Secure returns the signed file in just a matter of time.

CodeSign Secure starts with virus scanning before commencing any type of signing process. It searches for any viruses or malware that may have been injected into the file before sending it away for the signing process. This reduces the risk of signing an infected file to zero.

Talking about CodeSign Secure command-line utility tool let us give you a comprehensive explanation of how it’s done.

  1. The user enters the file name. Our product intelligently segregates the files and finds which signing algorithm will be used
  2. Once it finds out among Windows signing, OpenSSL signing and Jar signing which signing is to be performed user need to feed certain inputs for the signing process.
  3. Like for the Windows Signing (files like .dll , .exe, .sys etc) user needs to enter the hashing algorithm, the certificate file path, time stamp server and other necessary data and you get your files signed in a matter of time.

CodeSign Secure is also capable of Macro signing. You can digitally sign any Excel workbook or Excel template. The end user’s insecurity about running code from an unidentified source is allayed when you digitally sign your macro because it links your identity to the code and displays your name in the file.

Any modifications made to the macro after the signature has been applied, such as the introduction of a virus, will render the signature invalid, safeguarding your name and reputation.

The other types of signing that we do, if we specifically see the type of file in question are

  1. Windows Signing

    The Windows Signing tool can sign all types of windows files including .exe, .dll, .sys, etc. dealing with all the windows stuff. We have our own Key Storage Provider, created specifically for our signing tool, which is used to connect to our server, authenticate the client, and sign the windows files in question.

  2. Jar Signer

    If you distribute your application as a JAR, EAR, or WAR file, we recommend using a jar signer to digitally sign the JAR file. Especially if other people are downloading the archive over the public internet

    We provide two options to the user either they can do the jar signing the geeky way, i.e., by Command Prompt or with Eclipse.

    The necessary data that you need to be fed to our command line tools are File path, key name, hashing algorithm, certificate location.

  3. Open SSL Signing

    Signs binary files (.txt, .so) with OpenSSL. It uses the open-source tool- OpenSSL to sign the binary files and software file (.so files) with the help of OpenSSL. The necessary data that you need to feed to our command line tools are File path, key name and hashing algorithm.

Conclusion

In conclusion, code signing is an essential tool for ensuring the security and integrity of software.

Code signing ensures users that the software they are using comes from a reliable source and has not been tampered with by digitally signing software code with a special digital certificate.

Our code signing tool offers a simple and efficient way to sign your code and protect your software, making sure that it complies with the standards of today’s security-conscious digital environment.

Our code-signing tool helps you increase user trust, defend against malware and online attacks, and protect your reputation as a developer by utilizing strong encryption algorithms, stringent security protocols, and authentication mechanisms. Lastly you need not worry about the authenticity of your software when you use our code-signing tool.

What are the best practices for code signing and how to implement them?

When dealing with cybersecurity and the security of an organization, it is vital to prepare for every eventuality. One of the most important forms this takes, especially with organizations creating and distributing software to customers, is code signing. At its core, code signing is a relatively simple process. A software publisher or distributor wants to create code to send out to be used by a customer, but first they must ensure that the code can be trusted by the user. This is where code signing comes in. First, a key pair is generated from a trusted, usually external, Public Key Infrastructure (PKI) using something called a Certificate Signing Request.

A Certificate Signing Request, or CSR, requests that a certificate be generated and signed by a trusted PKI and associated with a key pair. A key pair involves a public key and private key which, as the names imply, are kept publicly and privately available respectively.

The CSR and keypair are then sent to the Certificate Authority of the PKI, and the user’s identity is verified by the Certificate Authority, or CA. After this verification, the CSR itself is authenticated and the public key is bundled with the requestor’s identity, thus creating a valid code signing certificate once the CA signs the bundle. The requestor then receives the certificate and can begin signing code.

Once the code signing certificate is created, the code signing process truly begins. First, the code to be signed is hashed via a hashing algorithm. A hashing algorithm takes a file as input, and creates a hash digest.

A hash digest is a series of numbers and letters that is unique based on the contents of a file. If a file had a single letter changed, then the hash digest would be completely different. The hash and private key of the certificate are then passed into a signing algorithm and creates a signature. The signature is then attached to the code and sent to the user. Before we delve into the best practices of code signing, let us take a short look at why code signing is so important.

The Importance of Code Signing

Code signing is vital to many organizations’ security. If an attacker can steal the ability to sign code with malware in it, the reputation of your organization would be at risk. Additionally, the validity of the software and the developer of the software can be authenticated through code signing. This allows the door to big application stores to be opened as well.

The biggest application stores require the use of code signing with applications used in these app stores. This will allow many smaller application owners to get their apps onto the big app stores with the simple process of code signing. Now that we know why code signing is so important, let us take a look at the code signing best practices.

Enterprise Code-Signing Solution

Get One solution for all your software code-signing cryptographic needs with our code-signing solution.

Code Signing Best Practices

  • Virus Scanning

    An important part of any code signing should be that malware and virus scanning is in place. Virus scanning should be done when the file is uploaded to be hashed. The reason virus scanning is so vital is because if code has malware embedded into it and then is hashed, that malware may go undetected during the signing process.

    Once the code is signed and approved by your organization, with malware embedded, then a user would install that code onto their computer without hesitation since a trusted organization has approved the signed code. Once downloaded, the malware can begin infecting the user’s computer, thus giving your organization a bad name and harming users who trusted that organization. It is best to select a code signing tool that can integrate with your organization’s already in place virus and malware scanning.

  • Secure Private Key Storage

    One of the most vulnerable parts of the code signing process is the private key associated with the certificate. If this is improperly protected, then the whole process of code signing is for nothing. Once the key is stolen, an adversary can use that key to sign their own code under the organization’s name, making the users think it is a trusted piece of software when it is not.They can then send out code, said to be from your organization, filled with malware such that all users who download and use the software will become infected. In recent years, many supply chain attacks have occurred in this very way. With improper protections in place on private keys, adversaries were able to get ahold of these keys and sign code with malware in the code.

    The code was then sent to Service Providers, who each have thousands of users that use this software in multiple different companies. The malware was then able to infect all of these users, thus allowing the attackers to steal information, money, and more. Software-based storage of keys is possible, but it is much less secure than hardware based key storage. It is recommended that a code signing solution be selected based on its use of a hardware-based storage method, such as a Hardware Security Module. These store keys so securely that an attacker would need to steal the device itself before cracking into the device to steal the keys. By that point, the keys could be rotated or made useless, so that the keys are now useless.

  • Secondary Verification

    Other tools can be used with code signing to ensure that any signings are kept secure. Tools like Active Directory, Multi Factor Authentication, 2 Factor Authentication, and more are great ways to keep track of who can sign code and when. With these tools, a user would need to not only sign in with a password but also with a secondary layer of verification before accessing a webpage to create code signing key pairs and before the actual signing process. This will stop outsider attackers from signing when they shouldn’t and can also track any insider threats that may occur within an organization. Any code signing product in use by an organization should be utilizing some type of secondary verification to ensure the most security is in place to protect sent out by said organization.

  • Time Stamping

    The usage of time stamping is another important tool used in the process of code signing. Time stamping involves imprinting a specific time and date at the time of signing for the purposes of logging and tracking signing processes. This is usually done by contacting a timestamping server during the code signing process. This timestamp will help with the next best practice I will discuss, the process of logging signing operations.

  • File Logging

    One other important factor in code signing is logging each code signing operation and other related tasks. Operations like creating a key pair, creating a code signing certificate, actually signing code, and changing code signing certificates or key pairs should all be logged for future usage. Having logs stored in one location will allow auditors to view processes that have occurred to make note of what is occurring within the code signing tool.

    Additionally, if an insider or outsider threat occurs, then it is also important to have these logs. This will allow an organization to track the processes that have occurred to discover who has signed what. Logging can also be used to stop a malicious developer from signing mid process. If a signing process is not approved by the proper teams, then it can be stopped before it is too late.

  • Key & Certificate Management

    To ensure the security of your keys, it is critical to have a strong key and certificate management system.

    • Limit Repeated Key Use

      Key rotation is one practice that reduces the extent to which any given key is utilized. It is the process of retiring an existing signing key and replacing it with a freshly generated cryptographic key. Rotating your keys frequently minimizes the risk, as using a key for multiple signings creates a vulnerability.

      If compromised, all software signed with that key becomes invalid. Attackers can exploit this and make you more susceptible to a software breach by distributing malware disguised as legitimate software.

    • Revoke Compromised Certificates

      Certificate revocation is the process of stopping the usage of a certificate before its period of validity gets complete. Stopping the usage of the compromised certificate is vital, as unauthorized parties cannot continue to sign malicious code under your enterprise’s name.

      If you suspect a break in your key or certificate, action is crucial; contacting your Certificate Authority (CA) and revoking the certificate to prevent the use of this key for code-signing is a good option to consider.

  • Streamlined Signing Process

    Automation in signing should be implemented to maintain efficiency in the workflow and development so that it takes less time due to fewer human factors:

    • Test Signing and Release Signing Difference

      To avoid accidentally releasing untested code, one could differentiate between test signing and release signing. Test signing is for internal use only to check inwards in the company or organization but not for clients, while release signing is the final state deployed to clients.

      This could be achieved in many ways, like having different certificates or a well-defined name for the signings for testing and release.

    • CI/CD & Code Signing

      The CI/CD pipeline is fully automated and gets you from development to deployment. This includes the building, testing, signing, and deploying. Code signing integrated with your Software Development Lifecycle (SDLC) saves time and helps with consistency.

      Signing manually can take time and become error-prone, especially on larger projects with numerous developers. The acquisition of an automated code signing process using a CI/CD pipeline would speed up the process and reduce the risk of human error.

  • Advanced Security Measures

    Prevention is better than cure; to do that, one must be vigilant and take proactive measures against evolving security threats. The following are some advanced security measures against signing any malicious code.

    • Stay Up to Date

      Code Signing is a domain that must keep up with the times; source code must be proven trustworthy and up to date. Outdated cryptographic algorithms might be prey to new assaults, leaving your code-signing protocol inoperable.

      Regularly evaluate and upgrade your organization’s cryptographic standards to ensure they’re in sync with the most recent best practices.

    • Compare Signings

      Existing conditions and the threat of code manipulation make it necessary to verify one signing against the other, keeping the source code’s trustworthiness in front of the user. Signing’s comparison from different servers’ builds could be used to check for disparity, revealing sources of exploitation.

      Differences in signings reflect unauthorized changes or criminal attempts to populate the source with malware to extract sensitive information. The output from such checks turns into a “vote of confidence” if two or more signing builds show an equivalent result, representing a safe user environment.

Conclusion

If you are wondering where you can gain access to a code signing tool, look no further than Encryption Consulting. At Encryption Consulting, we have a code signing tool called Code Sign Secure. Our tool utilizes all the different best practices mentioned in this blog, and more. Our tool uses Hardware Security Modules to safely secure private keys relating to code signing certificates. We also utilize Active Directory to login to our website to create keys and certificates and Multi Factor Authentication which is necessary before signing any code. We also use role-based access control, so that only those with the proper permissions may use any part of our code signing product. Finally, we use virus scanning before a file is hashed, we timestamp every signature that is created, and we have centralized logging accessed via our webpage.

To find out more about Code Sign Secure, or to try our Proof of Concept, reach out to CodeSigning solution.

How do code-signing machine identities protect your network?

In today’s digital landscape, malicious code and software threats are a constant concern for organizations of all sizes. Cybercriminals use a variety of tactics to compromise networks and steal sensitive data. One of the most common ways they do this is by distributing malware and other malicious code under the guise of legitimate software.

Organizations must have a comprehensive cybersecurity strategy that includes effective policies, procedures, and technology to prevent and detect attacks to safeguard themselves against these risks. Code-signing machine identities are one of the primary technologies used to secure networks against malicious code.

What are code-signing machine identities?

The process of code signing involves affixing a digital signature to executable code, scripts, and software in order to validate its authenticity and ensure its integrity. Code-signing machine identities are digital certificates that are used to sign code and are managed by code-sign in machines. Code-signing machine identities provide a way to verify the authenticity and integrity of code running on your network. By using digital certificates to sign software, you can ensure that the code has not been tampered with or modified since it was signed.

This helps to prevent malicious code from being introduced onto your network and reduces the risk of cyber-attacks. The digital certificates contain information about the code publisher, including their location and name, as well as a public key that is used to encrypt the signature. The private key, which is stored on the code signing machine, is used to sign the code. Digital certificates used for code signing are issued by a trusted third-party Certificate Authority (CA), and each certificate is unique and includes a distinct digital signature.

During the process of code signing, a signature is added to the code by creating a hash of the code, which is then encrypted with the private key of the code signing machine identity. Once this signature is added to the code, it can be verified by anyone who receives the code. To verify the signature, the recipient uses the public key included in the digital certificate to decrypt the signature and generates a hash of the code themselves. They can then compare the decrypted signature to their own hash of the code. If the hashes match, the recipient can be assured that the code has not been altered and was genuinely signed by the trusted source specified in the digital certificates.

Furthermore, code-signing machine identities facilitate the secure distribution and delivery of software updates, enabling organizations to deploy patches and updates to their networks confidently and quickly. This is crucial because it enables organizations to promptly address any security vulnerabilities or other problems that may arise in their software.

Using code-signing machine identities, organizations can guarantee the protection of their networks against malicious code, including viruses, spyware, and other forms of malware that could cause harm to their systems and data. Moreover, code-signing machine identities can assist organizations in meeting regulatory requirements for secure software development and distribution.

How do code-signing machine identities protect your network?

Code-signing machine identities provide several key benefits that help to protect networks from malicious code and software. These include

  • Verification of code authenticity and integrity

    Code-signing machine identities provide a secure and dependable mechanism for verifying the authenticity and integrity of code. Malware can infiltrate a network via several methods, such as phishing emails or exploiting vulnerabilities in software. When malware infects a network, it can lead to various issues like data theft, system downtime, and financial losses. However, when code is signed with a code signing machine identity, the recipient can be certain that the code hasn’t been altered during distribution and that it actually originated from the trusted source denoted in the digital certificate. This mitigates the risk of malicious code being circulated as authentic software, which could compromise the network’s security.

  • Secure distribution and delivery of software updates

    Additionally, code-signing machine identities furnish a secure means of delivering and distributing software updates. When organizations require the deployment of patches and updates to their networks, they can sign the updates using their code-signing machine identity and provide them to users. By doing so, they can guarantee that the updates are authentic and have not been tampered. Consequently, organizations can swiftly and confidently resolve security vulnerabilities and other software-related concerns without malicious code infiltrating their networks.

  • Compliance with regulatory requirements

    Lastly, code-signing machine identities can aid organizations in adhering to regulatory demands for secure software development and distribution. Several industries, including healthcare and finance, have stringent regulations regarding the security of software and the methods employed to create and distribute it. BY adopting of code-signing machine identities, organizations can showcase their commitment to securing their software and conforming to these regulations.

Enterprise Code-Signing Solution

Get One solution for all your software code-signing cryptographic needs with our code-signing solution.

Some other benefits of code-signing machine identities are

  • Authentication

    By verifying that the code has been signed by a trusted source code signing machine identities enable authentication. This hinders the introduction of unauthorized or malevolent code into a network.

  • Integrity

    By validating that the code has not been altered since it was signed, code signing machine identities ensures the codes integrity. This guarantees that there is no malware or other malicious code included in the code.

  • Trust

    Code-signing machine identities help establish trust between software publishers and recipients. When a software publisher signs their code, they are essentially vouching for its authenticity and integrity. This helps recipients trust the code and reduces the risk of introducing malicious code onto the network.

  • Compliance

    Code signing machine identities can assist companies in adhering to industry standards and laws by proving that they have put in place the necessary security measures to safeguard their software.

  • User Experience

    Code signing machine identities can enhance the user experience by reducing security warnings and allowing for seamless installation and updates of software.

  • Brand Reputation

    By using code signing machine identities, organizations and developers can safeguard their brand reputation by demonstrating that their software is trustworthy and secure.

Conclusion

The possibility of harmful code and software is a constant worry for various enterprises in this digital age. Code-signing machine identities offer a crucial layer of defense against these dangers by enabling the safe and secure distribution and delivery of software updates and assisting organizations in adhering to legal requirements. They also provide a way to confirm the reliability and authenticity of the code. Organizations can improve the security of their systems and data by implementing code-signing machine identities into their overall cybersecurity strategy. This will help enterprises safeguard their networks from malicious code and applications.