谷歌应用程序引擎中的哈希密码和实例小时配额



我读了很多关于密码存储、哈希、盐析、"胡椒"、MAC等的文章,因为我即将创建一个新网站,它对我来说非常重要,但我考虑不使用谷歌身份验证(或Facebook、OpenID或任何其他)有一些原因,这些原因现在都不相关,但它让我走到了这一步。

我是谷歌应用引擎的新手,这将是我的第一个项目,我对"实例小时"以及它如何不再有"CPU时间"而是前面提到的配额感到有点困惑。最糟糕的是,我还不明白什么是实例小时免费配额。

以下是我担心配额的原因,以及这与我的安全问题有什么关系:我到处读到的一个建议是进行多次迭代并多次哈希密码,因为这会让攻击者花费更多的时间(我没有数字,但它们到处都是https://security.stackexchange.com/)。

多次迭代对CPU时间有直接影响,如果GAE有CPU时间配额,我认为每次用户登录时进行1000次迭代可能是一个问题,但是,如果他们计算的是从请求完成到15分钟后的实例小时,并且GAE配额文档上的读数是:

通常情况下,实例使用是基于实例的正常运行时间。实例开始和结束时计费开始实例关闭后十五分钟。您将只收到账单对于空闲实例,最多为中设置的最大空闲实例数管理控制台的性能设置选项卡。运行时开销为根据实例内存进行计数。

那么这意味着,如果我的用户登录(哈希1000次),那么他们继续使用该网站,实例小时数将继续相加,直到他们全部离开页面+15分钟?如果这是真的,那么让它迭代1000次不会对我的配额产生重大影响,除了用户登录所需的"额外"时间,但我知道这一点,这是我愿意付出的代价。

我将进行的迭代次数将使登录时间对用户来说是可接受和不可察觉的,所以不要担心这一点。

我的问题是:

  1. 进行MANY迭代是否会对实例小时数产生直接影响,或者我对如何汇总实例小时数的假设是否正确
  2. 我不知怎么错过了谷歌应用程序引擎上的CPU时间配额吗?它有免费配额吗
  3. 什么是实例小时自由配额

答案:

  1. 看,Moishe接受了答案和他问的另一个问题(尚未回答,但有有用的评论)应用程序引擎调度程序何时使用新线程与新实例
  2. 根据谷歌的说法,没有CPU时间配额:http://googleappengine.blogspot.com.es/2009/02/skys-almost-limit-high-cpu-is-no-more.html
  3. 在这里找到了问题3的答案:达到了谷歌应用引擎前端实例小时限制

如果处理请求需要很长时间,因为例如,您正在做一些计算密集型的事情,并且不希望其他用户等待很长时间。应用程序引擎调度程序可能会启动应用程序的另一个实例来处理传入请求。

想象一下,计算密码的哈希需要1分钟,在这一分钟内,您的应用程序会收到另一个用户的请求。该用户可以等待一分钟以获得对其请求的响应,或者应用程序引擎调度程序可以启动另一个实例来为该请求提供服务,并更快地获得响应。您可以使用管理控制台中"应用程序设置"页面上的"性能"滑块来调整是否会出现另一个实例。

基本上,您需要问的关于实例时间的问题是:您是否可能会收到重叠的请求(即,在当前请求完成之前收到新请求)。如果这种情况经常发生,并且您希望用户快速响应,则需要预算更多的实例时间。

我怀疑您需要进行的大计算将是罕见的——比如说,只在初始登录时生成cookie,而不是针对每个请求。

为了明确地回答您的问题#1,进行多次迭代只会在导致请求重叠的情况下对实例小时数产生影响。如果你每30秒只收到一个请求,你可以花30秒为每个请求提供服务(包括计算每个哈希和执行其他操作),并且不超过你的空闲实例小时配额。相反,如果你每秒收到10个请求,并且为请求服务的时间超过100毫秒,那么你会很快超过实例时间。

实例小时是指服务器正在运行、回答请求等的时间。如果您的服务器没有运行,它就无法在请求或任何事情时醒来。

想象一下,电脑开机的时间。电脑开机时你会收到账单,而不是关机时。

你可能有多个实例,所以假设你有两个实例,你燃烧的实例小时是原来的两倍。

您的密码哈希不会影响这一点,因为当实例打开时,它只会产生实例小时,而当实例关闭时,它不会产生任何实例小时,但也不会进行哈希。

密码有多种来源。你显然读过一些鼓励多次散列的文章。在最终确定此决定之前,请考虑下面的第一个链接。摘录自本页:"人们很容易忘乎所以,试图组合不同的哈希函数,希望结果更安全。然而,在实践中,这样做没有任何好处。它所做的只是造成互操作性问题,有时甚至会降低哈希的安全性。"

需要考虑的两个有价值的链接(第一个有上面的报价,第二个是好的"如何"来源):

http://crackstation.net/hashing-security.htm

http://throwingfire.com/storing-passwords-securely/?utm_source=feedburner&utm_medium=馈送&utm_campaign=馈送%3A+throwingfire+%28投掷+火焰%29#无密码散列

最新更新