繁体   English   中英

如何在iOS中保护SQLite数据库?

[英]How Should I Secure a SQLite Database in iOS?

我正在开发医疗iOS应用。 我希望对用户的数据进行加密,因此,如果他们的iPhone被盗,小偷将无法访问其健康信息。 合法所有者应该能够访问其信息(与该问题有所不同)。

我正在考虑使用SQLCipher加密整个数据库,并将SQLCipher密码放入钥匙串中。

这是个好技术吗?

另外,我是否正确理解(既然一切都在设备上了),那么坚定的黑客无论如何都能闯入?

旨在进行两因素加密:您应该按照说明对数据库进行加密,但是要求用户在每次启动应用程序时都输入密码。 数据库的密钥将是密码的哈希值,并带有一个随机数。 将密码盐存储在钥匙串中。

坚定的黑客可以通过文件系统访问来访问加密的SQLite数据库。 如果他们能够破坏钥匙串加密,那么他们很容易就能破解数据库,但是通过要求用户提供密码(或密码),它有助于抵御这种攻击。

我认为您的解决方案很有意义。 它提供了很好的安全性,并使您的应用程序易于使用。

使用钥匙串的主要好处是用户备份是安全的,因为钥匙串的内容没有通过iphone备份。 (但是我想你已经知道了)

但是,这是巨大的安全性,因为潜在的黑客将不得不对iphone进行物理访问。 而且,如果iphone被引脚阻塞,那么获取数据的唯一快捷方法可能就是物理访问设备的闪存,这并不是最容易的事情。

老实说,如果您强迫用户输入长密码,我认为用户不会使用您的应用。 而且,如果您让他们使用自己喜欢的任何密码,黑客将能够使用字典攻击来破坏数据库加密。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM