我们有一个(多操作系统)应用程序,它使用libcurl与https服务器进行通信并使用SSL客户端认证。当客户端认证受密码保护时,应用程序必须要求用户输入密码。应用程序向服务器发送数百个不同的https请求,因此每次创建新连接时我们都不会要求用户输入密码。现在我们只需提示用户在应用程序启动时输入一次密码,然后通过“CURLOPT_KEYPASSWD”选项将密码设置为curllib。但是我担心恶意用户很容易侵入正在运行的进程并读取客户端认证密码。无论如何,我可以缓存客户端认证密码,并防止从内存中轻松读取密码?如何使用libcurl在客户端应用程序中缓存SSL客户端证书密码
2
A
回答
3
在现实生活中,你不应该担心太多。如果您担心这种攻击,可以查看智能卡中基于硬件的密钥和证书。
一些建议,以争取交换和冷启动攻击:
- 锁定持有密码的记忆,不要让它被换出(m锁+的mprotect和POSIX,Windows还具有类似功能)
- 可能会加密保存密码的内存,并且只能在使用密码时对其解密。
在现实生活中,如果您的机器是拥有的,以至于有人可能侵入他/她不应该访问的进程 - 您已经妥协了,并不想让它变得模糊。
如果您认为您控制了缓存 - 再想一想 - 在某些情况下,您永远无法知道卷曲例如是否使用密码复制并泄漏内存。
如果您认真对待SSL和安全性,请使用硬件令牌或智能卡。否则,希望一旦主机遭到入侵,您的软件和通过该主机运行的任何访问代码都会受到威胁。
相关问题
- 1. 如何使用ldap_sasl_bind_s()与SSL,DN,密码(无客户端证书)
- 2. 客户端的SSL证书
- 3. 使用Zend_Http_Client的客户端SSL证书
- 4. SSL证书客户端验证 - 如何?
- 5. 在一个应用程序池中将SSL与客户端证书混合并且没有客户端证书
- 6. 如何使用Mozilla的CA证书的SSL客户端证书
- 7. 如何使用HTTP客户端传递客户端证书?
- 8. 如何使用AutoRest客户端传递客户端证书
- 9. 在公共Web应用程序中使用客户端证书代替密码
- 10. 如何使用Ssl Stream获取/存储客户端证书?
- 11. https客户端与cpp-netlib使用客户端证书和密码获取
- 12. Tomcat作为一个客户端。在Tomcat Web应用程序不使用SSL客户端证书
- 13. 在Enterprise iOS应用程序中使用.mobileconfig的客户端SSL证书
- 14. SSL客户端证书认证
- 15. SSL客户端证书验证优化
- 16. 如何使用boost :: asio SSL验证客户端证书?
- 17. 客户端证书
- 18. 客户端证书
- 19. Apigee客户端应用程序客户端身份验证
- 20. 如何在Apache HttpClient上使用SSL客户端证书?
- 21. 如何在SSL客户端证书上使用frisby.js?
- 22. 如何从iPhone应用程序中删除客户端证书?
- 23. 将密码存储在客户端应用程序中C
- 24. SSL证书:否客户端证书密钥传出
- 25. 使用RavenDB客户端API发送客户端证书
- 26. 如何在iOS应用程序中使用客户端证书身份验证
- 27. 在证书存储区中使用客户端证书
- 28. 如何在Android中使用p12证书(客户端证书)
- 29. Elixir SOAP(Detergentex)与客户端SSL证书
- 30. Web服务客户端的SSL证书