我即将开发处理非常有价值数据的应用程序。为用户丢失这些数据会非常昂贵,所以我有兴趣根据我们的需求找到更多有关最佳架构设计的信息。
用户每天都会在iPhone中输入这些数据。使用此应用程序的替代方法是携带一张纸,上面有这些敏感信息。因此,虽然我知道我们可以比一张纸更安全,但我想确保我们还覆盖用户故事,例如“我把手机冲下马桶”或“我的儿子删除了应用程序,我的数据在哪里?” / p>
我想到像Dropbox这样的服务,但我不想要求我们的用户拥有Dropbox帐户;同步体系结构必须对用户透明。 iCloud已经推出,因为网络和Android版本可能会出现。
任何人都可以建议一些关于这个主题的好读物,或者一些好的框架来看待吗?我希望使用node.js后端,当我们首先定位iPhone时,Android会跟随。
数据本身由2个表组成,每个表都有少量字段,具有多对多的关系。用户每天都会创建一些新行,但数据量很小且高度可压缩。
答案 0 :(得分:4)
原来这是一个非常棘手的问题。在数据保证中(这还不是一种安全类型的情况,但由于保证方面可能会成为一种情况),总是存在时间因素。作为一个简单的例子,如果您的使用本地更新了某些数据,会发生什么。就在您能够将数据完全推送到某些云服务等之前......他/她将其转储到厕所中。即使有好的信号用于传输数据,也需要时间进行传输,并且云服务器必须有时间回复说数据是否正确到达。
通常在数据保证方面,您必须尽力做到最好。您将永远无法解决所有问题,因为没有数据中心,也没有链接到数据中心等......这是完美的。总是有数据丢失的可能性。您可以做的最好的事情是,SYNC与数据更改一样快,如果连接丢失,只要连接再次变为活动状态,就可以了。
现在,为了安全起见。安全本身并不能保证。如果数据本身是客户不想丢失的东西,这是他唯一的要求,那么安全性是不必要的。如果他/她也担心其他人掌握他的数据,那么你必须担心传输中的数据(在同步期间上下)以及设备本身。为了获得最佳的潜在安全性,请在推送云之前在设备上本地加密数据。有许多已知的攻击,即使使用SSL或其他服务,也可以获取数据。如果您愿意,可以在本地加密文件,那么您可以为某些增加的安全性仍使用SSL(此时您将对数据进行双重加密)。您还希望对数据进行签名,以便在传输过程中对其进行操作的可能性很小,或者由云服务器本身进行操作(如果黑客攻击了云服务器)。通常,在设备上保护数据的方式,您可以选择让用户输入密码,并对密码的形成方式做一些相当严格的规则,以及在不允许30分钟左右的尝试之前允许的尝试次数。
您可能还希望以加密形式在本地存储数据。这样,如果有人获取设备,他们仍然需要拥有密码才能获取数据(除非他们当然可以破解您用来从密码生成对称密钥的算法)。
在在线数据服务方面,您可以使用iCloud等...我实际上并不是任何云的粉丝。我认为这是SO柜台企业/专有数据,它甚至都不好笑。我认为这些手机/设备制造商中的很多都是以SOOOOO为基础的,这实际上几乎是可笑的。我认为他们正在放弃大公司,因为我知道没有大公司想要将他们的专有数据放在他们无法控制的云服务器上。无论如何,我认为只要你在发送数据之前有一个好的本地加密方案,那么你应该没问题。我会从保证的角度来看看服务器在语言环境中的位置。原因在于,如果数据的保证是主要关注点,那么大多数大型IT设备都喜欢在国家/世界的对立面上复制数据中心等......原因是如果地震将数据中心放在一个数据中心上在这个国家的一边,它很可能不会同时取消该国另一边的那个。如果iCloud的数据中心或您能找到的任何数据中心基本上都在一个区域,那么您可以考虑与西海岸的一个数据中心同步,并选择一个完全不同的数据中心(在这种情况下为公司)与中心同步在东海岸。
这都是非常高的水平,你将如何在iPhone上实现这一点,我们也可以谈谈,我希望至少开始帮助铺平道路。