我正在使用PHP的车队管理系统。我的位置跟踪是GPS(基于SMS):我收到一条包含坐标(Lat,Lng)的短信。
我想要的是加密那些坐标。当涉及到数据库时,它应该被加密,当我的Web应用程序想要它时,它应该转换(解密)到它的原始形式。我想保护坐标不被非法访问。
现在,我应该如何以及在何处对该数据进行加密和解密?我需要你的意见 - 我搜索了很多但没有成功。
答案 0 :(得分:3)
加密这些坐标可能毫无意义 - 任何有权访问您数据库的人,例如数据库管理员可能还可以访问Web服务器上的解密密钥(假设您正在考虑使用对称加密)。因此,您应该弄清楚您要防范的威胁类型,然后看看您的方法是否会这样做。
如果您担心黑客,同样的规则适用于流氓员工:可以窃取数据库副本的黑客很可能能够从网络服务器上窃取文件。
如果您的位置数据不需要经常解密,或者某人必须输入密码才能看到它,那么这可能更容易实现。您可以使用公钥加密坐标,然后仅使用受密码保护的私钥对其进行解密。获取公钥的攻击者将无法使用它来解密。
还值得考虑的是,这些数据是否如此有价值和私密,以至于值得加密:您可以将您在此项目上花费的资金投入到代码的第三方安全审核中。
最后,如果出于数据保护原因将此数据视为私有,请考虑对数据进行模糊测试(即引入少量随机不准确性),而不是加密数据。如果您不需要车辆的精确坐标,这只是一个选项。这是一种在健康试验中使用匿名数据的数据保护技术,其中确切的位置数据会产生隐私风险。当然,准确的位置数据对于盗窃时的车辆跟踪非常有用,因此您需要确定您的优先事项。
进一步阅读:您可能对一本名为Translucent Databases的书感兴趣,该书考虑了在构建受数据保护的数据库系统的环境中加密,散列和模糊测试。这是一篇非常发人深省的读物。
答案 1 :(得分:3)
我建议的是获得HSM(硬件安全模块) - 类似YubiHSM并将其安装在单个服务器上。围绕它构建API以加密和解密数据。
然后,没有钥匙偷。对于攻击者来解密数据,他们需要窃取该HSM。没有物理芯片(无法复制),数据无用。
答案 2 :(得分:0)
为了完全安全,他们应该加密,因为他们是通过短信发送的。这样,没有人可以尝试获取短信并阅读其中的电线。其次,您可以检查加密是否正确,以确保您通过SMS获得的数据是有效的。所有这些都可以使用加密密钥完成。但那些需要了解发件人和响应者。
当数据存储在DB中时,可以加密。但随着这一切到数据库是不安全的,可以用于攻击。
我最大的担忧是,有人抓住没有阅读的短信,或者甚至穿着有人发送带有错误数据或注射的损坏的短信。
答案 3 :(得分:0)
您可以在输入数据库中的坐标之前使用mcrypt_encrypt
函数,并在从数据库检索后使用mcrypt_decrypt
解密它们。