Cryptovirology is a field that studies how to use cryptography to design powerful malicious software. The field was born with the observation that public key cryptography can be used to break the symmetry between what an antivirus analyst sees regarding a virus and what the virus writer sees. The former only sees a public key whereas the latter sees a public key and corresponding private key. The first attack that was identified in the field is called "cryptoviral extortion"^{[1]}. In this attack a virus, worm, or trojan hybrid encrypts the victim's files and the user must pay the malware author to receive the needed session key (which is encrypted under the author's public key that is contained in the malware) if the user does not have backups and needs the files back.
The field also encompasses covert attacks in which the attacker secretly steals private information such as private keys. An example of the latter type of attack are asymmetric backdoors. An asymmetric backdoor is a backdoor (e.g., in a cryptosystem) that can be used only by the attacker, even after it is found. This contrasts with the traditional backdoor that is symmetric, i.e., anyone that finds it can use it. Kleptography, a subfield of cryptovirology, is concerned with the study of asymmetric back doors in key generation algorithms, digital signature algorithms, key exchanges, and so on.
Contents 
Cryptovirology was born in academia^{[1]}^{[2]}. However, practitioners have recently expanded the scope of the field to include the analysis of cryptographic algorithms used by malware writers, attacks on these algorithms using automated methods (such as Xraying^{[3]}) and analysis of viruses' and packers' encryptors. Also included is the study of cryptographybased techniques (such as "delayed code"^{[4]}) developed by malware writers to hamper malware analysis.
A "questionable encryption scheme", which was introduced by Young and Yung, is an attack tool in cryptovirology. Informally speaking, a questionable encryption scheme is a public key cryptosystem (3tuple of algorithms) with two supplementary algorithms, forming a 5tuple of algorithms. It includes a deliberately bogus yet carefully designed key pair generation algorithm that produces a "fake" public key. The corresponding private key (witness of nonencryption) cannot be used to decipher data "encrypted" using the fake public key. By supplying the key pair to an efficient verification predicate (the 5th algorithm in the 5tuple) it is proven whether the public key is real or fake. When the public key is fake, it follows that no one can decipher data "enciphered" using the fake public key. A questionable encryption scheme has the property that real public keys are computationally indistinguishable from fake public keys when the private key is not available. The private key forms a polysized witness of decipherability or indecipherability, whichever may be the case.
An application of a questionable encryption scheme is a trojan that gathers plaintext from the host, "encrypts" it using the trojan's own public key (which may be real or fake), and then exfiltrates the resulting "ciphertext". In this attack it is thoroughly intractable to prove that data theft has occurred. This holds even when all core dumps of the trojan and all the information that it broadcasts is entered into evidence. An analyst that jumps to the conclusion that the trojan "encrypts" data risks being proven wrong by the malware author (e.g., anonymously).
When the public key is fake, the attacker gets no plaintext from the trojan. So what's the use? A spoofing attack is possible in which some trojans are released that use real public keys and steal data and some trojans are released that use fake public keys and do not steal data. Many months after the trojans are discovered and analayzed, the attacker anonymously posts the witnesses of nonencryption for the fake public keys. This proves that those trojans never in fact exfiltrated data. This casts doubt on the true nature of future strains of malware that contain such "public keys", since the keys could be real or fake. This attack implies a fundamental limitation on proving data theft.
There are many other attacks in the field of cryptovirology that are not mentioned here.
While viruses in the wild have used cryptography in the past,
the only purpose of such usage of cryptography was to avoid
detection by antivirus software. For e.g., the
tremor virus^{[5]} used
polymorphism as a defensive technique in an attempt to avoid
detection by antivirus software. Though cryptography does assist
in such cases to enhance the longevity of a virus, the capabilities
of cryptography are not used in the payload. The Onehalf virus^{[6]} was
amongst the first viruses known to have encrypted affected files.
However, the One_half virus was not ransomware, that is it did not
demand any ransom for decrypting the files that it has encrypted.
It also did not use public key cryptography. An example of a virus
that informs the owner of the infected machine to pay a ransom is
the virus nicknamed Tro_Ransom.A ^{[7]}. This
virus asks the owner of the infected machine to send $10.99 to a
given account through Western Union.
Virus.Win32.Gpcode.ag is a classic
cryptovirus ^{[8]}. This
virus partially uses a version of 660bit RSA and encrypts files with many different
extensions. It instructs the owner of the machine to email a given
mail ID if the owner desires the decryptor. If contacted by email,
the user will be asked to pay a certain amount as ransom in return
for the decryptor.
To successfully write a cryptovirus, a thorough knowledge of the various cryptographic primitives such as random number generators, proper recommended cipher text chaining modes etc are necessary. Wrong choices can lead to poor cryptographic strength. So, usage of preexisting routines would be ideal. Microsoft's Cryptographic API (CAPI), is a possible tool for the same. It has been demonstrated that using just 8 different calls to this API, a cryptovirus can satisfy all its encryption needs^{[9]}.
Apart from cryptoviral extortion, there are other potential uses^{[2]} of cryptoviruses. They are used in deniable password snatching, used with cryptocounters, used with private information retrieval and used in secure communication between different instances of a distributed cryptovirus.
