# Zeroisation

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Zeroisation
> Markdown URL: https://mediated.wiki/source/Zeroisation.md
> Source: https://en.wikipedia.org/wiki/Zeroisation
> Source revision: 1304352011
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

In [cryptography](/source/Cryptography), **zeroisation** (also spelled **zeroization**) is the practice of erasing sensitive parameters (electronically stored data, [cryptographic keys](/source/Cryptographic_key), and [critical security parameters](/source/Critical_security_parameters)) from a cryptographic module to prevent their disclosure if the equipment is captured. This is generally accomplished by altering or deleting the contents to prevent recovery of the data.[1]

## Mechanical

When [encryption](/source/Encryption) was performed by [mechanical devices](/source/Rotor_machine), this would often mean changing all the machine's settings to some fixed, meaningless value, such as [zero](/source/0_(number)). On machines with letter settings rather than [numerals](/source/Numerical_digit), the letter 'O' was often used instead. Some machines had a button or lever for performing this process in a single step. Zeroisation would typically be performed at the end of an encryption session to prevent accidental disclosure of the keys, or immediately when there was a risk of capture by an adversary.[2]

## Software

In modern [software](/source/Software) based cryptographic modules, zeroisation is made considerably more complex by issues such as [virtual memory](/source/Virtual_memory), [compiler](/source/Compiler) [optimisations](/source/Optimization_(computer_science))[3] and use of [flash memory](/source/Flash_memory).[4] Also, zeroisation may need to be applied not only to the key, but also to a [plaintext](/source/Plaintext) and some intermediate values. A cryptographic software developer must have an intimate understanding of [memory management](/source/Memory_management) in a machine, and be prepared to zeroise data whenever a sensitive device might move outside the security boundary. Typically this will involve overwriting the data with zeroes, but in the case of some types of [non-volatile storage](/source/Non-volatile_storage) the process is much more complex; see *[data remanence](/source/Data_remanence)*.

As well as zeroising data due to memory management, software designers consider performing zeroisation:

- When an application changes mode (e.g. to a test mode) or user;
- When a [computer process](/source/Computer_process) changes [privileges](/source/Computer_security);
- On termination (including abnormal termination);
- On any error condition which may indicate instability or tampering;
- Upon user request;
- Immediately, the last time the parameter is required; and
- Possibly if a parameter has not been required for some time.

Informally, software developers may also use **zeroise** to mean any overwriting of sensitive data, not necessarily of a cryptographic nature.

## Tamper resistant hardware

In [tamper resistant](/source/Tamper_resistance) hardware, automatic zeroisation may be initiated when tampering is detected. Such hardware may be rated for **cold zeroisation**, the ability to zeroise itself without its normal [power supply](/source/Power_supply) enabled.

## Standards

Standards for zeroisation are specified in [ANSI](/source/American_National_Standards_Institute) X9.17 and [FIPS 140-2](/source/FIPS_140-2).

## See also

- [Crypto-shredding](/source/Crypto-shredding)

## References

1. ["FIPS PUB 140-2 - SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES"](https://web.archive.org/web/20170918045147/http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf). Archived from [the original](http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf) on 2017-09-18. Retrieved 2023-08-25.

1. [Link 16 Joint Key Management Plan, CJCSM 6520.01A, 2011, Section 6b(4)(b)](https://web.archive.org/web/20120926071443/http://www.dtic.mil/cjcs_directives/cdata/unlimit/m652001.pdf)

1. ["MEMSET"](https://web.archive.org/web/20130221133145/https://buildsecurityin.us-cert.gov/bsi/articles/knowledge/coding/771-BSI.html). Archived from [the original](https://buildsecurityin.us-cert.gov/bsi/articles/knowledge/coding/771-BSI.html) on February 21, 2013. Retrieved March 21, 2013.

1. ["Archived copy"](https://web.archive.org/web/20130307044459/http://cio.nist.gov/esd/emaildir/lists/cc-cmt/msg01706.html). Archived from [the original](http://cio.nist.gov/esd/emaildir/lists/cc-cmt/msg01706.html) on March 7, 2013. Retrieved March 21, 2013.

---
Adapted from the Wikipedia article [Zeroisation](https://en.wikipedia.org/wiki/Zeroisation) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Zeroisation?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
