特别是我的系统的一部分将加密信息存储在数据库中。我编写了使用现有密码实际进行加密/解密的代码。
我应该如何确保我设计的系统是安全的?
我知道的唯一选择是聘请安全顾问或公司来审核我的安全协议。感谢您提供有关此选项的任何信息以及其他选项。
特别是我的系统的一部分将加密信息存储在数据库中。我编写了使用现有密码实际进行加密/解密的代码。
我应该如何确保我设计的系统是安全的?
我知道的唯一选择是聘请安全顾问或公司来审核我的安全协议。感谢您提供有关此选项的任何信息以及其他选项。
你可以
见:http ://en.wikipedia.org/wiki/Security_testing
审核应由未参与创建服务和基础架构的人员执行。这可能是贵公司的另一个团队或部门——或一些外部咨询。
并且:在您的设计中使用经过测试的技术和组件,这意味着:不要重新发明轮子(参见http://en.wikipedia.org/wiki/Not_invented_here)
检查您是否正确使用了密码学有点棘手,并且需要特殊的专业知识。我不希望典型的黑盒渗透测试是一种非常有效的检查方法,或者是一种善用你的钱的方法。相反,您可能需要安全审计或安全审查,最好由熟悉密码学的人进行。
降低风险的最佳方法之一是尽量减少您设计自己的加密方法的程度。用密码学家的话说:不要推出自己的 crypto。例如,您可以使用 GPG(或加密为 OpenPGP 格式的东西)加密数据。
有关进一步的建议,请参阅有关加密和密码学的经验教训和误解。不要忘记使用身份验证(例如,使用经过身份验证的加密,或先加密后身份验证)。使用良好的密钥管理(例如,生成一个真正随机的加密密钥;不要从密码短语生成您的加密密钥)。
阅读我对“渗透测试和漏洞评估有什么区别?”的回答中列出的选项。
该答案中列出的所有步骤都可能相关,具体取决于您需要从中获得什么。以下是类别,但要获得完整解释,请访问另一个问题。