我想构建一个基本上是短信订阅服务的应用程序。
用户通过我的网站提交电话号码。我给他们发了一个带密钥的确认文本,如果他们正确输入密钥,那么他们就会被订阅,之后每天我都会发送一个带有特定消息的文本,直到他们取消订阅为止。
问题:我希望以我(开发人员或存储层管理员)无法查看这些电话号码的方式存储这些电话号码,以保护隐私。我不能只是存储它们哈希,那么我的应用程序如何读取它们以发送短信?我该怎么做?
编辑:这是一个安全和隐私问题......我希望有人攻击我的系统无法获得任何电话号码,即使他们拥有对数据库的完全访问权限。
答案 0 :(得分:4)
当系统上的软件可以解密它们时,任何有足够访问权限的人都可以解密它们。您可以做的最好的事情是通过为实际的消息传递部分使用专用系统来降低风险。通过使消息传递成为该系统唯一可以做的事情,您可以限制黑客入侵系统的选项。然后,通过使用公钥/私钥加密,消息传递系统将是唯一需要解密密钥的系统。实际注册用户或更改电话号码的系统只需要加密密钥。
现在,如果您想要进一步保护解密密钥,您可以通过设置密码让管理员无法访问此系统,没有人知道,并且可以禁用所有登录方法。哦,确保密钥只存在于内存中,而不是光盘!
如果此消息传递系统出现故障,您将需要启动一个需要密钥的新消息传递系统。因此,您希望将密钥的副本放在多个锁定后面的安全位置,不同的人拥有密钥。然后,这些人可以监督密钥是否正确地输入到新系统中,而没有其他人制作任何密钥副本,之后所有登录都被正确禁用。
答案 1 :(得分:3)
我认为加密是你唯一的选择。您将不得不加密电话号码,但只允许软件/服务应用程序访问密钥。您可以将密钥存储在非现场系统上,并通过SSH或SSL获取应用程序,仅将密钥存储在内存中。这并不是说密钥对管理员来说是100%安全的,但它们只是电话号码无法想象有人为细胞数量花费了大量精力。