当前位置:  开发笔记 > 数据库 > 正文

在iPhone OS中加密SQLite数据库文件

如何解决《在iPhoneOS中加密SQLite数据库文件》经验,为你挑选了4个好方法。

iPhone上的任何SQLite数据库都只是与应用程序捆绑在一起的文件.任何人都可以相对简单地提取此文件并进行查询.

您对加密数据库中存储的文件或数据有何建议?

编辑:该应用程序是一个将与其他用户玩的游戏.有关用户相对优势和劣势的信息将存储在DB中.我不希望用户能够在手机上破坏他们的声誉/权力等,然后赢得比赛/联赛等(注意:试图模糊,因为这个想法是在NDA下).

我不需要军事加密,我只是不想用纯文本存储东西.

编辑2:稍微澄清一下,我的主要目标是

    破解敏感数据是非常重要的

    有一个简单的方法来发现数据是否已被更改(某种校验和)

Kendall Helm.. 18

你不能相信客户,期间.如果您的独立应用程序可以解密它,那么它们也将解密.要么将数据放在服务器上,要么不要打扰,因为实际破解它以增强统计数据的人数将是微不足道的,并且他们应该因为努力而获得奖励!

在数据库中放一个字符串,上面写着"请不要作弊".



1> Kendall Helm..:

你不能相信客户,期间.如果您的独立应用程序可以解密它,那么它们也将解密.要么将数据放在服务器上,要么不要打扰,因为实际破解它以增强统计数据的人数将是微不足道的,并且他们应该因为努力而获得奖励!

在数据库中放一个字符串,上面写着"请不要作弊".



2> bradhouse..:

这里至少有两种更简单的方法(两种都是免费的)可以避免加密值或内存数据库:

#1 - ipa裂缝检测

避免加密数据库和/或内容的技术(和法律)麻烦,只是确定应用程序是否是盗版并禁用游戏的网络/评分/排名方面.有关详细信息,请参阅以下内容

http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html

#2 - 数据完整性验证

或者,在保存数据时(以及在初始sqlite数据库中),在每行中存储重要列的HMAC/salted哈希值.加载每一行时,根据HMAC/hash验证数据,如果验证失败,则相应地执行操作.

这两种方法都不会强迫您填写Apple/US政府要求的加密导出表单.

分数提交

不要忘记你需要为实际的分数提交做类似的事情,以防止来自你的应用以外的其他东西的价值.您可以在cocos2d-iphone和cocoslive框架中查看此实现,网址为http://code.google.com/p/cocos2d-iphone/和http://code.google.com/p/cocoslive/

对评论的回应

这里没有解决方案可以100%防止数据被篡改.如果这是一项要求,则客户端只需要查看,并且必须在受信任的服务器上计算所有状态和逻辑.根据应用程序,客户端将需要额外的反作弊机制.

有很多关于开发大型多人游戏的书籍都在讨论这些问题.

在代码中使用已知秘密的哈希可能是一种合理的方法(至少在考虑App Store中通常存在的应用程序类型时).



3> Billy Gray..:

像肯德尔所说,包括设备上的钥匙基本上是要求破解.但是,有些人有理由使用设备上的密钥来混淆数据.如果您决定这样做,您可以考虑使用SQLCipher进行实施.它是SQLite的一个版本,它为整个数据库提供透明的页面级加密.Mobile Orchard上有一个关于在iPhone应用程序中使用它的教程.



4> Ed Marty..:

您认为普通用户会这样做的可能性有多大?我假设您正在浏览应用程序商店,这意味着在进入用户设备之前,所有内容都已签名/加密.他们必须越狱他们的设备才能访问您的数据库.

您存储的是哪种数据需要加密?如果它包含用户输入的密码,那么您实际上并不需要加密它们; 用户无需查找自己的密码.如果它是您只希望用户通过应用程序访问的通用BLOB数据,则可能就像使用安全API存储加密的blob一样简单.

如果它是您想要保护的整个数据库,那么您仍然希望使用安全api,而是在整个文件上,并在打开之前根据需要解密文件.这里的问题是,如果应用程序在没有清理的情况下关闭,则会留下一个解密文件.

您可能需要查看内存驻留数据库或临时数据库,您可以使用模板db或程序中的硬编码模式创建这些数据库(请参阅sqlite3_open的文档).可以解密数据,将其插入临时数据库,然后删除解密的数据库.关闭连接时,请执行相反的操作.

编辑:

您可以通过一个非常简单的安全系统来确定您自己的加密方案,通过使用存储在应用程序中的值对数据进行异或,并在其他地方存储哈希以确保它不会更改,或者某些东西.


此外,如果您自己对其进行加密,则必须在appstore上传调查问卷中回答"是"并澄清对出口限制的一致性.
推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有