没有中央数据库


31

我有一个客户正在寻求构建处理非常敏感的数据(比银行/卡详细信息更敏感)的网站/移动应用/桌面应用。由于数据的敏感性,他们不想将其保存在中央数据库中,但他们仍然希望其应用程序进行同步(假设我将一些数据添加到了移动应用程序中,然后我希望能够转到我的移动应用程序中。桌面应用程序并看到相同的数据)。

我想不出一种不错的,可靠的方法来做到这一点,我不确定是否有一种方法。这就是为什么我在这里。有谁知道我该如何处理这些数据?

我正在考虑的一种解决方案是在每个应用程序上都有一个客户端数据库,该数据库将以某种方式在应用程序之间进行同步,我可以看到这是非常不可靠的,而且变得混乱。


2
如果要使数据同步,它仍然必须可以在某个地方访问,因此可以将数据拉入您的应用程序。您可以将数据分配到更多数据库中,因此,如果其中一个数据库因某种原因被破坏,则不会泄漏所有数据。如果这使客户满意,只需将更多数据库连接添加到您的应用程序,然后从它们中提取数据。
安迪

2
这是点对点的问题吗?还是只有1个台式机与1台智能手机通话(针对每个数据空间)?
ebyrob 2015年

7
您可以使用仅用户知道的密钥来加密服务器上的数据,从而确保数据库的机密性。
菲利普2015年

26
这听起来像是一个不了解安全性的人想到的方案。提出此要求的人应该提出有关在Security.SE上保护数据的问题。
2015年

4
@ user2424495:如果需要通过网站提供数据,则数据必须在提供网站的位置可用-通常是中央服务器。或者,您需要编写一个提供客户端数据的浏览器插件。
Bergi 2015年

Answers:


60

大量敏感信息存储在数据库中。实际上,中央数据库可能是存储此数据的最安全方式。大型企业数据库具有大量功能,可以执行以下操作:加密敏感信息,审核访问者,限制或阻止包括DBA在内的人员查看数据等。您可以让专业的安全专家监视环境,并由专业的DBA监督备份,以便您不会丢失数据。几乎可以肯定的是,破坏存储在某个随机用户的移动设备或笔记本电脑上的数据要比渗透精心设计的安全基础架构和破坏适当的中央数据库要容易得多。

您可以使用仅存储加密数据并在用户设备上存储用户私钥的中央数据库来设计系统。这样,即使中央数据库被完全破坏,数据也只能由用户使用。当然,这意味着如果用户丢失了密钥(例如,唯一的副本在他们的手机上并且他们的手机已损坏),则无法恢复用户的数据。而且,如果有人泄露了密钥以及大概是他们的登录凭据,那么他们将能够看到数据。


24
@ user2424495-如果目标是实际的安全性,那么将数据集中存储几乎可以肯定会获胜。从营销的角度来看,如果某人的手机被黑客入侵可能不是您的错。但是,如果有消息说它相对容易被黑客入侵,那肯定会在应用程序上反映不佳(因为大多数人的系统安全性很差)。我宁愿向人们解释说,他们的数据是使用军事级安全性加密存储的,而不是希望当安全性差的手机遭到黑客入侵时,不要怪我。
贾斯汀·凯夫

27
这是迄今为止唯一能够真正解决问题并提供最佳安全结果的答案。OP给出的要求太可笑了。如果数据是如此敏感,以至于即使在公共网络上都可以使用数据的想法对用户来说都是冒犯性的,则应用程序的想法是不现实的。句号 客户端设备不安全,无法信任。
maple_shaft

2
@mharr如果数据库仅存储加密的数据(在离开设备之前已加密),那么法院的命令说什么都没关系,如果没有加密密钥(只有用户拥有),就无法对其进行物理解密。
理查德·廷格

9
@RichardTingle <tinfoil>除非说政府机构已经破坏了加密。</ tinfoil>
Bob

3
我从来没有说过这个问题不是“有趣的”,到目前为止,我发现这个问题和答案非常有趣并且令人发指。这恰恰是使该站点变得不错的一种问题。我真的在质疑有关数据的要求和某些假设。我的蜘蛛般的感觉使我感到震惊,这些关于数据重要性的要求和假设只是一家虚张声势,自我崇拜的公司的假想,该公司幻想自己见多识广,见识深刻,但实际上
仍在争辩

38

您需要备份几个步骤,并与客户协商,制定威胁模型。(是的,这是一本长达600页的书的链接;是的,我强烈建议您阅读全文。)

威胁模型首先提出以下问题

  • 为什么应用程序首先需要存储此敏感数据?
    • 您是否可以完全避免存储它?
    • 短时间后可以扔掉吗?
    • 是否确实需要多个设备访问它?
    • 如果必须在多台设备上对其进行访问,是否需要将其存储在多台设备上?
  • 允许谁查看每个用户的敏感数据的人是谁?
    • 可以将这个列表缩短吗?
  • 谁在尝试执行其工作时可能会与每个用户的敏感数据联系,但又不需要知道这些信息的人是谁?
    • 可以将这个列表缩短吗?
    • 是否可以使他们无法访问数据而又不损害他们的工作能力?
    • 如果无法访问它,至少可以使它变得不可理解吗?(抽象地讲,这就是加密的作用:它使数据难以理解。)
  • 谁是谁想要查看敏感数据但不被允许的人?
    • 他们必须获得什么机会获取数据?
    • 一旦拥有数据,他们想对数据做什么?
    • 如果他们没有得到想要的东西,他们会有多生气?
    • 他们愿意花多少钱,时间,CPU周期和人工?
    • 他们是否在乎是否有人知道自己已查看数据?
    • 他们是否要访问特定用户的敏感数据,还是任何人都愿意?
    • 他们已经知道了什么?
    • 他们已经可以访问什么?

一旦您知道了这些问题的答案,您将可以在一个更好的地方找出解决方法。

请记住,每组问题都可能有多个答案,尤其是与攻击者(那些想要敏感数据但不允许拥有这些数据的人)打交道的问题。如果您不能想到至少有六种不同的原型攻击者,动机,目标和资源不同,那么您可能会错过一些东西。

还请记住,如果攻击成功,那么造成(和/或客户)麻烦最多的攻击者最有可能在媒体上引起巨大轰动,或者造成的累计损失最大。不是攻击者,如果攻击成功,它们会对单个用户造成最大伤害。您客户的公司在理智上更关心总体损失,而用户在理智上更关心对自己的伤害。


4
这实际上并没有尝试回答问题或反驳它,但这确实是对未提出问题的绝妙答案。
maple_shaft

11
@maple_shaft:好吧,它回答了OP想要问的问题。由于可以很好地看到该问题存在XY问题,因此这似乎是一个很好的答案。
sleske

8

进行同步的一种选择是对等同步。这仍然需要一台中央服务器,但是该服务器不会处理任何数据。

设备上线时,中央服务器会收到带有用户ID的通知。当同一用户的第二个设备联机时,服务器将向两个设备发送另一个设备的IP地址。设备然后可以直接交换数据。警告:一台设备需要充当服务器,因此至少一台设备不能位于NAT路由器后面。

不要忘记,通知机制和对等交换都需要强大的身份验证和加密。


1
听起来也需要版本控制方案,以避免在两个设备之间一直来回发送所有数据……
ebyrob

如果p2p交换不是不需要不必要的设置强制最终用户的话,那将是一个很好的解决方案,我认为这会使应用程序的使用对用户不友好。然后是一个问题,客户在设置应用程序时是否要在数据漏洞和麻烦之间做出选择,这在很大程度上取决于数据的敏感程度和用户的关心程度。
安迪

1
@DavidPacker假设您设置并维护了第一台服务器,还有哪些其他设置步骤?
ebyrob 2015年

@ebyrob我可能会被误解,但我了解到,由应用程序创建者提供的服务器除了p2p同步过程外不包含任何内容。但是必须将数据从客户端的其中一台设备通过该服务器提取-客户端必须使自己或他的数据可访问-这是我一直在谈论的设置。
安迪

1
@ David,Philipp建议对等数据交换敏感数据,因此不要将其发送到中央服务器,甚至不发送到中央服务器。中央服务器仅在此处帮助一个对等方找到另一个对等方。然后它就摆脱了。
Erik Eidt

5

使别人的问题。

将数据本地存储在每个应用程序中,然后为用户提供使用自己的帐户与第三方服务(Dropbox,Google云端硬盘等)启用同步的选项。另外,请考虑对上传到第三方服务的所有数据进行加密(这样做有其优点和缺点)。

这样看来,用户拥有自己的数据,因为他们必须选择加入数据同步。它使这些应用程序对于不想进行任何共享的人很有用。而且,这使其他人(在技术上以及从法律上可能是法律上)对确保共享数据安全一直困扰着人们负责。


1

客户的担忧似乎与该数据的可见性有关。向您的客户询问的第一个问题是数据是否已加密,如何将其存储在哪里?然后,问您的客户在对数据进行解密和处理之前,他们需要什么样的访问控制-解密密钥可以存储在哪里?是每个用户单独的密钥?等等...

如果您的客户不想将数据存储在任何地方,他们是否希望用户每次都输入我的手?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.