A Go library that creates a secure software enclave to protect sensitive data in memory from exposure and attacks.
MemGuard is a Go library that creates a secure software enclave to protect sensitive data in memory. It encrypts data, prevents swapping to disk, and defends against memory-based attacks like cold-boot and side-channel exploits. It is designed for applications handling passwords, cryptographic keys, or other confidential information.
Go developers building security-critical applications that manage sensitive data such as password managers, cryptographic tooling, or authentication systems. It is also suitable for developers needing compliance with security standards for data protection in memory.
Developers choose MemGuard for its multi-layered security approach, including memory encryption, garbage collector bypass, and kernel-level immutability, which collectively minimize attack surfaces. It offers a pure Go implementation with cross-platform support, drawing inspiration from established libraries like libsodium for robust protection.
Software sandbox for storage of sensitive information in memory.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Encrypts and authenticates data in memory using XSalsa20Poly1305, specifically defending against cold-boot attacks as documented in the README.
Allocates memory via system calls to bypass Go's garbage collector, preventing sensitive data from being moved or collected prematurely.
Fortifies buffers with guard pages and canary values to detect overflows and spurious accesses, adding an extra layer of security.
Locks memory to prevent swapping and handles core dumps to ensure sensitive data never touches the disk, as highlighted in the features.
The API is marked as experimental and may have unstable changes, requiring version pinning and making it risky for long-term production use.
Encryption, system calls, and guard pages introduce latency and memory usage, which can impact application performance.
Requires understanding of low-level memory management and secure practices, making it harder to integrate compared to simpler libraries.