【发布时间】:2018-01-10 17:49:18
【问题描述】:
我需要为我的应用程序实现帐户管理,我宁愿不使用chpasswd子进程,或者让明文密码离开我的应用程序的内存空间。
我想将putspent 与使用crypt 生成的密码哈希一起使用,但我找不到任何标准函数来随机化crypt 的盐。在线搜索只发现了奇怪的散列函数实现,我不想复制到我的代码中。是否有标准函数可以为我生成盐?
否则,重新使用存储在我的影子文件中的当前盐是否明智?我想不出为什么它会是一个安全隐患(它不会削弱我的影子文件以抵御彩虹表攻击),它只是感觉不对,因为在系统安全中,经验法则是总是随机化一切......(用户与系统实用程序一起添加)
【问题讨论】:
-
“标准”是什么意思?如果您指的是 POSIX,则盐只是两个随机字符,但这意味着 DES 加密——这不是一个好主意。您是否打算使用
glibc的扩展名crypt(),例如允许用于 SHA-256 加密? -
肯定重复使用盐是不明智的。此外,
crypt不是syscall,因此也不是假设的new_salt。您可以在最近的 Linuxen 上使用getrandom来获取盐的随机字节 - 然后用& 63屏蔽那些无符号字符,映射到[a-zA-Z0-9./]以获得盐。 -
谢谢两位。是的,我的意思是包括 glib 在内的 POSIX/标准库。是的,我当然会使用 SHA 512。在任何标准库中是否有这样的功能?我们真的希望每次都手动编写这样的函数吗?
标签: c linux security salt crypt