JWT令牌的最佳密码/加密建议

问题描述:

我最近在我们的服务器上运行了一些负载测试,并注意到我们的JWT令牌序列化/反序列化似乎是一个相当严重的瓶颈。这可能是由于我们使用的是2048自签密钥。我想知道什么密码和加密大小可以接受安全明智,但也减少负载?JWT令牌的最佳密码/加密建议

所有针对我们的API的交易都已经是SSL'd,所以我正在做一个基本的假设,即一个较弱的密钥不会有问题。我们也经常过期令牌。

建议将不胜感激。

+0

security.stackexchange.com可能是一个更好的网站来问这个问题。除此之外,SSL只能防止在传输过程中嗅探或修改,这只是几种攻击媒介之一。 –

+0

啊,谢谢你,好点=) – pilotguy

+0

我猜你正在使用不对称的RSA密钥对。 RSA签名比HMAC慢。如果您不需要客户端验证令牌(可能因为使用SSL而客户端已在检查服务器证书),为了提高性能,您可以用HMAC替换RSA而不影响安全性。请注意,JWT已签名,未加密 – pedrofb

我猜你正在使用不对称的RSA密钥对。 RSA签名比HMAC慢。如果您不需要客户端验证令牌(可能因为您使用SSL而客户端已在检查服务器证书),您可以使用来提高性能,您可以用HMAC替换RSA而不影响安全


请注意,JWT通常是签名的,而不是加密的。有效负载是base64编码的,因此任何拥有JWT的人都可以读取其内容。

签名确保发行人的身份并保护令牌免受更改。如果您想隐藏内容,则可以将JWE加密应用于智威汤逊,但您的性能会降低。检查你的库是否支持它。

+0

确实RSA签名的性能很高,但如果真的需要,我们建议将jwt令牌缓存为有效期限。如果数据是加密的,那么你不能做太多的事情,性能是安全性的代价。问题是,如果你需要加密整个消息,如果TLS/SSL足够的话。 – gusto2

+0

Hmac比RSA快得多,但如你所说,增加加密将增加生成和解密操作。我认为JWT缓存不是一个好主意,因为它失去了它的优势:无状态和不需要服务器存储。如果性能是瓶颈并且必须隐藏某些内容,那么在JWT中根本不能包含这些属性,或者甚至在服务器会话中使用不透明的令牌 – pedrofb