2014-03-13 22 views
0

是否有任何使用加密来加密OkHttp的HttpResponseCache使用的磁盘缓存的例子?天真地说,我不认为这是一件非常艰难的事情,但我会感谢任何建议或经验,以避免安全隐患。加密OkHttp的HttpResponseCache

没有太多的细节,我试图实现:一个服务器接受用户的API密钥(通常是40个字符的随机字符串)为已建立的服务X,并代表用户进行许多API调用。服务器不会保留用户的api密钥,但可能的用例是用户会定期调用服务器,每次提供api密钥。已建立的服务X使用合理的速率限制,但支持有条件的(ETag,If-Modified-Since)请求,所以服务器端缓存服务器是有意义的。这些信息是私人的,服务器将托管在Heroku或类似的地方,所以我想加密由HttpResponseCache缓存的文件,这样如果机器受到攻击,它们不会产生任何信息。

我的计划是创建一个HttpResponseCache的包装器,它接受一个密钥 - 实际上这个密钥实际上是api-key字符串的一半。这将用于AES加密HttpResponseCache使用的缓存内容和密钥。这听起来合理吗?

回答

2

现有的缓存代码很难做到。这是一种日志记录的磁盘数据结构,不支持隐私,隐私不是您可以添加的功能。

一个选项是挂载加密磁盘映像并将缓存放在那里。例如,与Mac OS X的FileVault类似。如果你能弄清楚如何做到这一点,那你就是金。

您的其他选择是使用现有缓存作为指导实现您自己的缓存。公正的警告:OkResponseCache在下一个版本中可能会发生变化!

+0

感谢你的感谢和警告 - 是的,看过,它看起来像DiskLruCache将是我不得不攻击的地方,并可能改变处理键的位。使用加密磁盘映像并不是一个坏主意,但由于服务器可能拥有很多用户,理想情况下,每个用户数据的加密区域应该是明确的(使用基于用户api-key的散列的秘密密钥进行加密) 。 –

+0

有没有计划在okhttp中支持这个? – inder

+0

如上所述,您的最佳选择是加密的磁盘映像。 –