烧瓶密钥长度

Flask secret key length

可以在 python flask 应用程序中使用的最大密钥大小是多少?我在网上看到的所有示例,包括 http://flask.pocoo.org/docs/0.12/quickstart/#sessions 似乎都建议使用 192 位密钥,但我想知道是否可以使用 256 位密钥。

我相信你可以随心所欲地制作密钥,但在宏伟的计划中,安全强度仍然是主观的。您的应用不会比其他应用更安全。

我会坚持使用默认的推荐值。一定有推荐的理由。

是的,32 字节的密钥大小是可能的。

但是,来自Applied Criptography

Longer key lengths are better, but only up to a point. AES will have 128-bit, 192-bit, and 256-bit key lengths. This is far longer than needed for the foreseeable future. In fact, we cannot even imagine a world where 256-bit brute force searches are possible. It requires some fundamental breakthroughs in physics and our understanding of the universe.

所以按照文档:大小为 24 字节并随机生成它应该没问题。

另外,看看Is it possible to break a 128-bit key?。这将使您了解破解 128 位密钥需要多长时间。

Flask 使用 itsdangerous.Signer 进行会话数据签名,签名中使用的密钥不是您在 SECRET_KEY 配置选项中提供的密钥,而是 is derived with an HKDF.

默认情况下,Flask uses HMAC-SHA1 作为 HKDF 算法,你只能得到 160 位的签名密钥,SECRET_KEY 的长度没有区别。为了得到256位的session签名密钥,你可以扩展flask.sessions.SecureCookieSessionInterface,把digest_method改成SHA256,当然你还需要一个很长的随机数SECRET_KEY 足够的熵。