c ++密码处理安全实践?

c++ password handling security practices?

我正在创建一个处理用户名和密码的 C++ class。

我正在尝试对一些基本但有效的实践进行研究,以在 C++ 中处理这些信息,因此某人不容易找到它,例如,扫描内存和变量以确定信息。

基本的,我的意思是不需要很多工作的东西;我不想编写整个密码学库、随机寻址系统,甚至散列函数。

此外,我假设最好不要将这些信息保存在变量中,并在我不需要时立即删除它?

编辑:

不,我不会将此信息保存到磁盘,只会将其保存在内存中的变量中。

编辑 2:

class 与平台无关并使用 boost。

编辑 3:

这里是函数的声明:

void authenticate(const std::string & user, const std::string & pass);

没有任何基本技术可以保护密码免受拥有调试器并可以访问内存的人的侵害!

因此,最安全的方法是不存储密码,而只存储密码的哈希值。有许多可用的实现,例如 this 来自可信来源的开源实现。

是的,当您不再需要变量时,请将其删除。 I.E:覆盖值,而不仅仅是销毁变量(如果你真的想安全起见,你会在上面写随机值,但这里太过分了):

如果是字符串,值得一提的是VoidStars的建议:

 string pwd; 
 ....
 std::fill_n(&pwd[0], pwd.capacity()-1, 0xff);  // really overwrite