我正在开发一种安全密码管理器。它不会用于专业用途,而且我知道它不会像 KeePass 或其他任何东西那样安全。这只是为了我自己对如何分配安全内存、使用加密算法等的理解。
为此,我使用 libgcrypt 并使用gcry_malloc_secure
.
我现在已经到了某种程度,我需要用户输入他的密码以进行加密/解密。但正如我所见,任何控制台输入都首先缓冲在stdin
(or argv[..]
) 中,因此不在安全内存中。因此它可以“轻松”被攻击者读取。
我的程序中发生的任何与安全相关的事情都在securemem中,希望更难阅读/窃取。
所以我的问题就像标题所述:
让用户输入数据的最安全方法是什么?