2010-11-06 54 views
1

我在IPhone开发一个新手,iphone数据安全

我有一个包含大量的安全重要数据的应用程序,许多搜索后,我意识到,SQLite的是把我的数据的最佳方式(大量), ,但我发现一些人在谈论打破密码保护SQLite文件, 我应该使我自己的数据结构与自定义搜索...或者有一种方法来安全地使用SQLite。

thanx提前;

编辑:如果我的数据加密和解密在运行时我来松松:

  • 使用SQL
  • 性能
+1

SQLite只是设备上的一个文件。如果要加密数据,请在将其放入数据库之前对其进行加密。 – Rudiger 2010-11-06 14:15:50

+0

对不起,我编辑帖子更清晰 – Badr 2010-11-06 14:46:00

回答

0

由于SQLite数据库搜索只是一个文件在您的/ Documents文件夹中 - 您可以在启动应用程序时对其进行解密,并在退出时对其进行重新加密。 iPhone中已经内置了公钥和AES功能。

您可能想要使用用户输入的密码。

一定要以原子/幂等的方式做到这一点,以便如果加密/解密/复制/移动/重命名过程中断,您不会损坏文件!

0

你看过东京内阁吗?有可能通过存储二进制对象来实现某些功能。 (......只是一个想法)

+0

thnx为你的答复,但我需要在数据使用SQL搜索,检查:http://stackoverflow.com/questions/1226539/tokyo-cabinet-vs-sqlite3 -on-iphone – Badr 2010-11-07 07:42:08

0

看看http://sqlcipher.net/它使用AES(透明地)在SQLite中存储数据 - 它应该足够强大,以满足您的使用情况。

其余取决于你的情况:

1)系统离线吗? 您将无法执行安全的持久登录 - 每次应用程序进入前台以访问数据时,用户都必须登录。 2)您的系统是否在线? 持久登录可能是可能的,因为当设备丢失时,可以为用户/设备停用服务器端认证组件。在用户输入密码并使用此令牌解锁​​数据库(具体实现由您决定,我将使用显式设备 - 服务器与公钥/私钥配对)后,只需提示服务器解锁令牌即可...

需要牢记的一个特殊情况是密码更改。可以使用数据重新导入新的加密数据库来处理它。要点:

您需要要求用户输入旧密码才能解锁当前数据库进行读取,然后为新密码创建新密码,然后将旧数据导入新数据库。当过程完成时,只需删除旧的数据库...

希望可以帮助...