CRYPTO_WIPE(3MONOCYPHER) | 3MONOCYPHER | CRYPTO_WIPE(3MONOCYPHER) |
NAME
wipe data from memorySYNOPSIS
#include
<monocypher.h>
void
crypto_wipe
(void *secret,
size_t secret_size);
DESCRIPTION
crypto_wipe
()
securely erases sensitive data in memory.
Sensitive data (such as cryptographic keys or secret plaintexts) should be erased from memory as early as possible to minimise the window in which it can be leaked. Standard functions like memset and bzero are not safe to use as the compiler may decide they have no effect and optimise them out.
The arguments are:
- secret
- The buffer to erase.
- secret_size
- The number of bytes to erase from the buffer. This is normally the size of the entire buffer.
Monocypher will wipe its context structs when finalizing an operation such as signing or decrypting. When using direct interfaces like crypto_aead_lock(), these context structs are invisible to you. However, they are exposed in incremental interfaces like crypto_blake2b_init(). The original key buffer does not get automatically wiped. When using incremental interfaces, you may want to wipe the original key buffers immediately after calling the respective init function.
Using
crypto_wipe
()
alone may not be enough for security. It is recommended to lock down
relevant memory regions as well. Refer to
intro() for instructions on how to
lock down memory on common operating systems.
RETURN VALUES
This function returns nothing.
SEE ALSO
HISTORY
The crypto_wipe
() function first appeared
in Monocypher 1.1.0.
CAVEATS
Monocypher does not perform any input validation. Any deviation from the specified input and output length ranges results in undefined behaviour. Make sure your inputs are correct.
December 12, 2019 | Debian |