我正在开发一个新的加密实用程序,并且想知道从另一个进程中输入加密密钥是否是不良的安全做法,还是应该通过共享内存或其他类似系统在进程之间发送密钥。换一种说法; 当内核在进程之间传递缓冲的信息时,密钥是否有可能“泄漏”到另一个未经授权的进程?换一种说法; 这里可能发生不好的事情吗?
//Read encryption key
unsigned char enc_key[32];
read(STDIN_FILENO,enc_key,32);
//do some encryption/decryption with the key here
memset_s(enc_key,0,32);
通过stdin传递加密密钥是一种不良的安全做法:
首选替代方案,例如:
在两个进程之间共享内存:这样一来,您就可以控制不再需要包含键的内存(如您尝试使用memset_s()
)。考虑使用会话密钥对共享内存进行加密的可能性。
使用SSL套接字。
请记住,您的密钥应该自己加密存储在内存中,并且仅在需要时才解密,并且要尽可能短。请参阅passwordsafe项目作为示例,以在代码中考虑安全性来存储密钥。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句