我的一个应用程序中有一组二进制数据文件,出于安全考虑,每次使用时我都应该加密和解密文件。这很好,但过程很麻烦。我使用 Blowfish 进行加密,但两个功能都很慢。我可以理解,如果有人想从二进制文件中提取我的数据,他/她应该对我的文件模式有所了解,但我担心这很难猜到。
有没有办法使用加密或其他方式来锁定用户读取二进制文件的权限?
答案1
一般规则是,您提供给用户的任何东西都不再属于您。当您加密数据时,您会将加密密钥保留在您的应用程序中,并且可以提取密钥。唯一相对可靠的解决方案是将密钥放在硬件设备(USB 加密令牌)上,但这在许多情况下是不可接受的。而且这只是相对可靠的,因为数据可以被捕获,并且存在对某些 USB 令牌的攻击。
如果您只想保护数据不被普通人获取,您可以使用加密的 ZIP 作为容器(双重加密会赶走更多用户)。而且您需要替换算法 - Blowfish 确实非常慢。AES 会更快。
如果数据量很大,那么最好使用即时加密-解密,即您应该只加密或解密使用的数据块,而不是整个数据流。这使任务更加复杂。或者您可以使用支持较低级别加密的虚拟文件系统(我们的 Solid File System 就是其中一个例子,还有其他一些例子)。