如何确保不从内存中读取用户名/密码组合

时间:2009-11-03 08:30:59

标签: security authentication ssh scp

如何确保在使用我的应用程序时不从内存中读取用户名/密码组合。

我的程序是一些CYGWIN工具的GUI包装器,包括SSH和SCP。我需要确保各种主机的单点登录功能。

3 个答案:

答案 0 :(得分:1)

使用ssh-agent的SSH密钥对,但还有其他方法吗? 问题是你需要将公钥输出到远程主机,这可以在一个简单的字符串中完成,但仍然需要登录。因此,使用密码短语和将密钥添加到远程主机的密钥对的初始设置需要输入许多密码。 在初始设置之后,一切都运行良好。

想法?

答案 1 :(得分:1)

攻击者将在应用程序运行时尝试使用调试器从内存中获取密码。可以绕过任何加密的使用,因为密码在使用时必须是纯文本。任何时候使用内存,也可以使用调试器观察。

答案在于反调试: http://www.codeproject.com/KB/security/Intro_To_Win_Anti_Debug.aspx

更高级的Windows反调试:

http://www.veracode.com/blog/2008/12/anti-debugging-series-part-i/

http://www.veracode.com/blog/2008/12/anti-debugging-series-part-ii/

http://www.veracode.com/blog/2009/01/anti-debugging-series-part-iii/

http://www.veracode.com/blog/2009/02/anti-debugging-series-part-iv/

答案 2 :(得分:0)

使用authorized_keys的公钥/私钥对。