我正在开发一个web应用程序,它使用这个JWT-库来实现安全。我注意到,处理令牌解密的JWT库占用了服务器的大量CPU。当前配置的定义如下所示。
JweAlgorithm.PBES2_HS512_A256KW, JweEncryption.A256CBC_HS512在测试时,对此的1000个后续调用将使用87s。我找到的最快的替代方案是:JweAlgorithm.PBES2_HS256_A128KW, JweEncryption.A128GCM,采用27s。
你能推荐比那更快的吗?
发布于 2019-05-07 20:37:57
通常,与使用公钥/密钥对(非对称)的算法相比,具有共享秘密(对称)的算法速度更快。
算法PBES2-HS512+A256KW是一个对称的算法,但是它有一个专用性:它有一个salt和一个iteration count参数,而add computational expense要故意慢下来。
RFC7518建议最小值为1000个迭代,而OWASP需要“一个数字,表示目标系统上的计算时间必须至少1秒(例如1000.000 )”。
算法的效率主要取决于您使用的JWT实现和背后的密码工具。对于PHP,一些密钥加密算法只需要400 s(例如,X25519曲线上的ECDH),而另一些算法则需要超过2.5ms (PBES2 2+ES 384-A192KW,加上512位salt和4096迭代计数)。
我建议运行基准测试,为您的用例和环境找到最合适的算法。
“最快”并不意味着“最安全”
https://stackoverflow.com/questions/56028832
复制相似问题