我想在GO中使用加密标准库中的AES实现。
但据我所知,我无法控制存储扩展密钥的位置以及释放密钥的时间,因此可能会导致安全问题。
我想使用memguard(https://github.com/awnumar/memguard)库来保护密钥,但在扩展密钥后我无法访问密钥。
任何想法如何安全地存储和管理密钥?
答案 0 :(得分:1)
在我看来,它只是垃圾收集,并且没有试图破坏密钥材料。
source只是显示子键是派生的,然后在指向结构的指针中返回。似乎没有任何方法可以销毁扩展的密钥材料。
答案 1 :(得分:1)
memguard是此工具的正确库,但必须通过调用make([]byte)
来调用memguard.New...
的调用来手动将其删除到AES代码中
通过将加密/解密扩展密钥计划更改为memguard LockedBuffer
,您可以控制它们在内存中的位置。此外,在完成AES块的使用后,您可以销毁基础LockedBuffer
s
我正在研究同样的问题,我相信我已经在这里解决了它:https://github.com/anitgandhi/aesguard