在iPhone应用程序包中加密和压缩html代码,首次启动时解压缩
-
03-07-2019 - |
题
我的客户想要在iPhone套装中为他们的医学书籍加密/压缩html代码,以保护他们的IP。
什么是为应用程序包准备这个文件的好方法,我应该使用哪些补充库(C,Obj-C)在第一次启动应用程序时进行解密和解压缩?
将文件复制到〜/ Documents,然后处理它似乎是最好的解决方案。想法?
解决方案
这里有一些想法。
如果书本文本是所有字母数字数据,则不要将数据保存为ASCII - 将它们保存为您自己的二进制编码格式(例如使用5位而不是8位并打包成单词)。这会给你一些压缩,轻微的混淆和非常便宜(在时钟周期中)的解压缩。您将拥有一种可以快速访问的数据格式,并且可以让休闲好奇的黑客远离文本。时钟周期将是我的主要关注点和安全性第二。
另一个想法是在应用程序中以混淆格式存储典型Blowfish加密的解密密钥。分成两个或三个常量,需要一些奇怪的操作才能恢复。但是,当然,现在Blowfish的开销或其他任何问题都会引起您的关注。
由于您无法实现完美的安全性(完美性极其昂贵),知识产权所有者将不得不使用传统的版权和商业秘密技术来充分保护其财产。你已经让黑客变得更难了,但仍然需要律师勤奋,只需要在图书馆保留部分的书架上预定一本书(请不要复印!)。
干杯
其他提示
这非常棘手......几乎不可能让它真正牢不可破。任何有理智的人都能穿透它。你只会让它变得更难。在任何情况下,您绝对不能在包本身中存储任何密钥。您需要通过安全通道从服务器安全地获取解密密钥,并根据需要使用它。即使这样,越狱的人也许可以在你正在运行的程序上运行GDB并在RAM中提取密钥+密钥将在你的应用程序的所有用户之间共享......你本质上是在尝试实施DRM方案,这本身就是设计上的缺陷......除非你需要离线访问,否则你可能需要从安全的人那里提取数据...至少你“可以”油门信息泄漏...
如果我是你,我会保持文件加密,并根据需要解密它们。人们可以轻松地在越狱设备上访问解密文档。
请参阅“安全概述”文档和加密技术的CryptoExercise示例代码
您可能不喜欢它,但最好的方法是不使用HTML。一旦将解密的HTML传递给UIWebView,恶意用户就很容易在该级别窃取它,从而破坏了加密算法的任何目的。具有自定义绘图代码和自定义加密支持格式的UIView子类将更难以解决
您可以使用钥匙串服务 加密和存储少量的 数据(请参阅钥匙串服务参考 和钥匙串服务编程 指南)。如果你想加密或 解密Mac中的大量数据 OS X,您可以使用Common Security 服务经理(CSSM)加密 服务经理。这位经理也 具有创建和验证功能 数字签名,生成 加密密钥,并创建 密码哈希。在iPhone OS中, 证书,密钥和信任 Services API提供的功能 生成加密密钥,创建 和验证数字签名,和 加密数据块;看到 证书,密钥和信任服务 参考。
它始终是性能(加密不是免费的)和安全性(安全性和其他一切,真的)之间的选择。但还有什么是新的?如果你保持单个文件足够小,也许解密不会减慢你的速度。或者,您可以考虑使用预测性解密,以便在后台解密某些文件,比如从当前查看的文件中链接的文件,等等。但我知道,iPhone上的并发性可能相当不稳定(我不知道)因为我没有放弃现金以获得许可证)。您也可以通过仅加密那些真正需要它的文件来实现性能提升;是否真的需要加密索引/目录或其他经常访问的文件?这是否算作客户担心的IP?
对于压缩,我可以推荐QuickLZ(我看过的最快的发动机,很高的压缩比)。