2014-03-13 20 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

如上所述,您的最佳選擇是加密的磁盤映像。 –