Security Golang加密接口和易失性存储器
如何安全地管理存储在接口中/接口后面的加密机密 我的问题如下: 我有一个长期运行的应用程序,它使用cipher.AEAD接口的实现进行加密。 获取接口实例(chacha20poly1305)的唯一方法是通过以下方法: func New([]字节)(cipher.AEAD,错误) 我创建并使用该实例一段时间,然后“删除”该实例,并希望确保以后无法恢复密钥。 出于这个原因,我希望避免将密钥材料交换到磁盘 使用反射和不安全,我可以:Security Golang加密接口和易失性存储器,security,go,cryptography,Security,Go,Cryptography,如何安全地管理存储在接口中/接口后面的加密机密 我的问题如下: 我有一个长期运行的应用程序,它使用cipher.AEAD接口的实现进行加密。 获取接口实例(chacha20poly1305)的唯一方法是通过以下方法: func New([]字节)(cipher.AEAD,错误) 我创建并使用该实例一段时间,然后“删除”该实例,并希望确保以后无法恢复密钥。 出于这个原因,我希望避免将密钥材料交换到磁盘 使用反射和不安全,我可以: 获取基本内存的大小和指针 Do mlock(避免内容被交换到磁盘)
或者,通过某种方式将内存(比如分配使用)强制转换到接口的特定实现(未公开)中,然后手动设置结构(而不是使用新的([]字节)->cipher.AEAD)有什么理由不使用它将整个进程的内存锁定在RAM中吗?该程序太大,无法容纳大多数系统上的“ulimit-l”页面(我的系统atm上的64 x 4096字节)有没有理由不将整个进程的内存锁定在RAM中?该程序太大,无法容纳大多数系统上的“ulimit-l”页面(我的系统atm上的64 x 4096字节)