Crates.io | shush-rs |
lib.rs | shush-rs |
version | 0.1.11 |
source | src |
created_at | 2024-09-08 21:57:49.258297 |
updated_at | 2024-11-18 05:53:25.818365 |
description | A Rust crate designed to manage sensitive data securely by leveraging memory protection mechanisms. |
homepage | |
repository | https://github.com/Eyob94/shush-rs |
max_upload_size | |
id | 1368565 |
size | 17,745 |
A Rust crate designed to manage sensitive data securely by leveraging memory protection mechanisms. It extends the functionality of the secrecy crate to provide enhanced security features using memory locking and protection techniques. Specifically, shush-rs
ensures that secrets are kept safe from unauthorized access and are properly zeroized when no longer needed.
mlock
: this is a system call that locks a specified range of memory into RAM, preventing it from being swapped out to disk.mprotect
: is a system call that changes the access protections (read, write, execute) for a specified range of memory.SecretBox
: A secure container for sensitive data. It locks the memory of the contained secret and ensures it is zeroized on drop.CloneableSecret
: A trait for secrets that can be cloned, while ensuring the original is zeroized after cloning.ExposeSecret
and ExposeSecretMut
: Traits that provide controlled access to secrets, allowing read-only or mutable access while maintaining security.fn protect_secret(){
let secret = Box::new(String::from("Encrypted"));
let mut secret_box = SecretBox::new(secret); // Secret's memory page is mlocked
println!("Secret: {:?}", secret_box); // Prints "Secret: SecretBox<alloc::string::String>([REDACTED])"
let exposed_secret = secret_box.expose_secret();
println!("Exposed Secret:{:?}", exposed_secret); // Prints "ExposedSecret: SecretGuardMut { data: "Encrypted" }"
} // Memory page is munlocked when it's dropped