A software taggant is a cryptographic signature added to software that enables positive origin identification and integrity of programs. Software taggants are using standard PKI techniques (see Public key infrastructure) and were introduced by the Industry Connections Security Group of IEEE in an attempt to control proliferation of malware obfuscated via executable compression (runtime packer).
The concept of a PKI-based system to mitigate runtime packer abuse was introduced in 2010 and described in a Black Hat Briefings presentation by Mark Kennedy and Igor Muttik. The software taggant term was proposed by Arun Lakhotia (due to its similarities with chemical taggants) who also analyzed the economics of a packer ecosystem.
A software taggant is a form of code signing somewhat similar to Authenticode (which is used for programs operating under Microsoft Windows). The key differences between a software taggant and Authenticode are:
- the transparent and free addition of a software taggant for the end user of a runtime packer
- a software taggant may cover small critical areas of the program to minimize the cost of software integrity checking (Authenticode always covers nearly the entire file so the cost of checking linearly depends on the file size)
The software taggant project is run by IEEE ICSG and has open-source nature - it is hosted on GitHub and relies on OpenSSL. Software taggant also helps differentiate many legitimate software from malware which also utilize similar and/or the same anti-tamper technology.