{rmonocypher}
provides a simple, high-level interface for easily
encrypting R objects using strong, modern cryptographic techniques.
A typical use-case this package addresses:
I want to easily save data to a shared folder (or cloud drive) which only
I can decrypt.
decrypt()
/encrypt()
read/write encrypted R objects to fileargon2()
derives encryption keys from passwordsrbyte()
generates secure random bytes using your operating system’s CSPRNG.
- Cryptographic primitives are provided by the included
monocypher
library (v4.0.2) - Encryption method is XChaCha20-Poly1305 which combines ChaCha20 stream cipher (extended nonce variant) with Poly1305 message authentication.
- Encryption process follows RFC 8439 ‘Authenticated Encryption with Additional Data (AEAD)’
- Key derivation uses Argon2 password-based key derviation.
- Cryptographically secure pseudo-random number generators (CSPRNG) provided by the operating system are used to generate any required secure random bytes.
Install rmonocypher
from
GitHub:
# install.packages("devtools")
devtools::install_github("coolbutuseless/rmonocypher")
Encrypt any R object and save to file.
encrypt(mydata, dst = "SharedDrive/mydata.dat", key = "mykey")
decrypt( src = "SharedDrive/mydata.dat", key = "mykey")
For more details on how passwords are used to derive encryption keys, and for other ways of supplying and generating keys see the Vignette: Encryption Keys.
- Encryption
Keys
- Generating encryption keys from passwords with
argon2()
- Using random bytes as the encryption key
- Using hexadecimal string as the encryption key
- Generating encryption keys from passwords with
- Technical
Notes
- Background on the encryptiong techniques used
- Using Additional
Data
- Advanced technique which is not needed for everyday use of this package.
- Details on using additional data
- Worked example