从stdin读取加密密钥是否是不良的安全做法?

博萨克

我正在开发一个新的加密实用程序,并且想知道从另一个进程中输入加密密钥是否是不良的安全做法,还是应该通过共享内存或其他类似系统在进程之间发送密钥。换一种说法; 当内核在进程之间传递缓冲的信息时,密钥是否有可能“泄漏”到另一个未经授权的进程?换一种说法; 这里可能发生不好的事情吗?

//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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

传递 CryptoJS AES 加密密钥的静态值是否安全?

来自分类Dev

存储加密密钥的 MD5 哈希值是否安全?

来自分类Dev

如何在安全(C ++)中存储加密密钥?

来自分类Dev

在Android上安全地存储加密密钥

来自分类Dev

如何使用加密密钥进行安全的ldap连接?

来自分类Dev

生成 AES 加密密钥的安全性

来自分类Dev

了解加密密钥

来自分类Dev

DES加密密钥

来自分类Dev

是否备份Reporting Server或Reporting加密密钥TFS 2013?

来自分类Dev

如何存储加密密钥?

来自分类Dev

如何保护加密密钥

来自分类Dev

Android AES加密密钥

来自分类Dev

如何使用加密密钥加密消息

来自分类Dev

安全性:将加密密钥保存在web.config或代码中

来自分类Dev

从ifstream读取stdin / cin是否安全?

来自分类Dev

当读取加密文件时,Vim不再提示输入加密密钥。为什么不呢,如何恢复呢?

来自分类Dev

Sugar ORM指定加密密钥

来自分类Dev

在Laravel中设置加密密钥以注销

来自分类Dev

更新/更改领域加密密钥

来自分类Dev

MySQL加密密钥存储在文件上

来自分类Dev

Django加密密钥完整性

来自分类Dev

OpenPGP加密密钥-isValidForEncrypting()吗?

来自分类Dev

密码/加密密钥程序中的密码

来自分类Dev

找不到领域文件的加密密钥

来自分类Dev

密码/加密密钥程序中的密码

来自分类Dev

如何导出对称加密密钥?

来自分类Dev

MySQL加密密钥存储在文件上

来自分类Dev

如何设置默认的GPG加密密钥?

来自分类Dev

加密密钥计算器