Mprotect() to keep stray pointers out. 
Obfuscate data kept in that memory.

You can do a lot in software and in practice that might be enough. In theory, 
true security can only be achieved through hardware based security 
modules-atleast thats what I feel, others might disagree.

Paranoid buffers do have some overhead involved but if that overhead is going 
to delay obtaining secrets from a memory dump, i'd say its worth it.




> On May 6, 2014, at 8:56 PM, Tony Arcieri <basc...@gmail.com> wrote:
> 
> Can anyone point me at some best practices for implementing buffer types for 
> storing secrets?
> 
> There are the general coding rules at cryptocoding.net for example, that say 
> you should use unsigned bytes and zero memory when you're done, but I'm more 
> curious about specific strategies, like:
> 
> - malloc/free + separate process for crypto
> - malloc/free + mlock/munlock + "secure zeroing"
> - mmap/munmap (+ mlock/munlock)
> 
> Should finalizers be explicit or implicit? (or should an implicit finalizer 
> try to make sure buffers are finalized if you don't do it yourself?)
> 
> Are paranoid buffers worth the effort? Are the threats they'd potentially 
> mitigate realistic? Are there too many other things that can go wrong (e.g. 
> rewindable VMs) for this to matter?
> 
> --
> Tony Arcieri
> _______________________________________________
> cryptography mailing list
> cryptography@randombit.net
> http://lists.randombit.net/mailman/listinfo/cryptography
_______________________________________________
cryptography mailing list
cryptography@randombit.net
http://lists.randombit.net/mailman/listinfo/cryptography

Reply via email to