NDB数据存储的快速加密,慢速解密方法

时间:2013-10-11 11:32:03

标签: python google-app-engine encryption

我有未加密的网络请求数据(不在我的管辖范围内),我希望快速保存到数据存储区中,以免降低请求流程的速度。

有时需要系统用户通过网络打开敏感数据。当用户发出此类请求时,将要求他们在解密过程开始之前完成reCAPTCHA并记录有关其行为的事件。对于10到20个字符的字符串,解密时间最长可达1分钟。

GAE上是否有可用的加密算法,解密速度比加密速度慢,适用于这种情况?

我正在考虑另一种减轻加密时间的方法:

  • 使用 MD5& amp;暂时存储温和加密的数据。 hash 快速加密方法,而预定作业迭代任何未标记为正确加密的记录,并且经济地应用非常强的加密(如果用户尝试访问加密尚未完成,则可以接受警报输入后的数据)

假设上述方法是可行的,那么我假设我可以将数据加密数分钟几分钟,如果数据被泄露但系统没有被破坏则尝试解密成本极高。

1 个答案:

答案 0 :(得分:1)

听起来传统的密码方法应该满足您的需求,例如: AES256。谈到加密,你应该尽可能少地进行创新。使用成熟且值得信赖的方法 - 何时“滚动”自己的"它很容易犯错误,你也无法从学术密码学界获得同行评审的好处。

确保在执行工作之前对使用您选择的强算法进行加密的时间进行基准测试,以解决阻止请求的加密问题。几百毫秒'延迟真的是一个问题?

如果事实证明加密速度太慢,您仍然不应该对加密算法的质量做出妥协。更好的解决方案是在后台线程中执行加密并立即继续请求。

将数据库中的ID分配给要以加密形式插入的资源,但不要打扰中间人,有意识地"温和"在"真实"之前的加密形式加密。这一层只会提供一种虚假的安全感。

如果用户尝试访问尚未加密的资源,则返回错误,指示资源仍在处理中(或加密失败,如果适用)。

确保加密过程无法以一种导致未加密数据保存的方式失败或延迟的可能性超过应有的时间。如果加密无法及时成功(因为磁盘已满/电源故障/宇宙射线),则必须简单地允许插入失败并且不得保留未加密的数据。