我们正在开发一个电子商务应用程序,我们的客户将按月付费计划使用该应用程序。
我们已经考虑过对存储在数据库中的所有个人数据进行加密,以使我们的应用程序对最终消费者来说更安全。 加密将在前端和后端完全透明地处理,并确保即使有人获得纯数据库访问,也不可能在没有加密密钥的情况下解密最终消费者的个人详细信息。
这是常识吗,还是我们采取过大的咀嚼行为与增加安全性相比,这会增加最终客户?
答案 0 :(得分:3)
我可能在这里不够深入,因为我不是安全专家,但这里有几个问题浮现在脑海中:
攻击者获取数据的可能性有多大?
数据是否包含任何机密信息?
攻击者可以从访问数据中获得什么?
如果攻击者获得了对数据的访问权限,您或您的公司会失去什么?这不仅仅是数据,也可能是你的声誉。
实施cost多少钱?
您的legal obligations有关客户数据的内容是什么?
如果使用单个全局密钥加密数据,您将如何确保密钥安全?
如果密钥真的安全,您将如何使用它来加密和解密数据?
如果使用多个密钥加密数据(每个客户登录可能有一个密钥),如果客户丢失密钥/密码,您将如何恢复数据?
如果您能够恢复客户数据,这会如何影响其安全性?
computer repair technicians,系统管理员等对您的数据库服务器有什么访问权限,以及这将如何影响数据安全性? (这不仅仅是外部黑客)。
加密和解密的性能影响是什么?
还可以采用其他机制,例如防火墙,物理安全和员工审核?
以下是英国FSA Your responsibilities for customer data security (pdf)的引用:
获取数据保护错误可以 带来商业,声誉, 监管和法律处罚。 正确的做法带来了回报 客户信任和条款 信心。
答案 1 :(得分:2)
我的回答是:有时候。我曾为一些雇用电子商务解决方案的公司工作过。安全和加密需要比信息的价值更好。姓名和地址不像信用卡号码和交易信息那样“有价值”。我最熟悉的设置是,通常以更频繁的方式获取的所有通用CRM数据(名称,地址等)都存储在服务器数据库(纯文本)上,并增加了服务器的安全性(防火墙,补丁,等等,访问数据库的脚本当然是 - 最好的开发人员知识。
信用卡,交易信息,真正的肮脏的“人们想要窃取的信息”包含在服务器上 - 加密,安全,并且只能通过本地局域网获得。加密密钥在第二台服务器上访问这些机器是由只有第三台服务器知道的旋转身份验证密钥决定的。两个密钥/数据服务器彼此不知道。当购买时,第三台服务器 - 由第四台服务器访问 - 将“神奇地”使它们全部聚集在一起完成购买。
这是一个非常复杂,可怕的答案。简而言之 - 保护/加密非常敏感的数据是您必须确保您的客户免受盗窃的必要条件 - 但所有信息对您的应用程序来说可能是不必要的开销。安全只值数据对小偷的价值。
答案 2 :(得分:2)
这样做会失去许多关系数据库优势(搜索,商业智能报告等)。
此外,如果您存储密钥,则只需添加一层“安全性”:攻击者必须获取密钥才能读取数据,但如果他具有对数据库的完全访问权限,则他可能有权访问密钥的存储库(因为必须能够访问该存储库的前端和后台应用程序)。
如果您让用户负责存储自己的密钥,则在用户丢失密钥的情况下,您将无法恢复数据。
获取真正合理的信息,将其放在单独的服务器中,尽可能多地保护它并仅在需要时访问数据。
在我看来,您的方法的主要威胁将是加密将给予的(错误的)安全感。合理的数据必须在存储过程中得到充分的谨慎对待,同时也要在精心设计和使用过程中处理:如果您的业务需要,请将您的资金投入到优秀的系统管理员,准备好的软件工程师和定期安全评估中。
答案 3 :(得分:2)
为什么它更安全?
你需要存储decrpytion密钥才能向用户提供这些数据 - 它只是在“前端”系统中保存并不真正相关 - 为了到达黑客必须通过的后端首先是前端。
您还消除了很多搜索功能。
你必须做很多编码来实现这个目标。
您对系统的要求更高(即硬件成本更高,性能更差)。
恕我直言,你的金钱和时间会更好地用于改善其他地方的安全。
℃。