2017-08-27 37 views
0

我最近在我們的服務器上運行了一些負載測試,並注意到我們的JWT令牌序列化/反序列化似乎是一個相當嚴重的瓶頸。這可能是由於我們使用的是2048自籤密鑰。我想知道什麼密碼和加密大小可以接受安全明智,但也減少負載?JWT令牌的最佳密碼/加密建議

所有針對我們的API的交易都已經是SSL'd,所以我正在做一個基本的假設,即一個較弱的密鑰不會有問題。我們也經常過期令牌。

建議將不勝感激。

+0

security.stackexchange.com可能是一個更好的網站來問這個問題。除此之外,SSL只能防止在傳輸過程中嗅探或修改,這只是幾種攻擊媒介之一。 –

+0

啊,謝謝你,好點=) – pilotguy

+0

我猜你正在使用不對稱的RSA密鑰對。 RSA簽名比HMAC慢。如果您不需要客戶端驗證令牌(可能因爲使用SSL而客戶端已在檢查服務器證書),爲了提高性能,您可以用HMAC替換RSA而不影響安全性。請注意,JWT已簽名,未加密 – pedrofb

回答

0

我猜你正在使用不對稱的RSA密鑰對。 RSA簽名比HMAC慢。如果您不需要客戶端驗證令牌(可能因爲您使用SSL而客戶端已在檢查服務器證書),您可以使用來提高性能,您可以用HMAC替換RSA而不影響安全


請注意,JWT通常是簽名的,而不是加密的。有效負載是base64編碼的,因此任何擁有JWT的人都可以讀取其內容。

簽名確保發行人的身份並保護令牌免受更改。如果您想隱藏內容,則可以將JWE加密應用於智威湯遜,但您的性能會降低。檢查你的庫是否支持它。

+0

確實RSA簽名的性能很高,但如果真的需要,我們建議將jwt令牌緩存爲有效期限。如果數據是加密的,那麼你不能做太多的事情,性能是安全性的代價。問題是,如果你需要加密整個消息,如果TLS/SSL足夠的話。 – gusto2

+0

Hmac比RSA快得多,但如你所說,增加加密將增加生成和解密操作。我認爲JWT緩存不是一個好主意,因爲它失去了它的優勢:無狀態和不需要服務器存儲。如果性能是瓶頸並且必須隱藏某些內容,那麼在JWT中根本不能包含這些屬性,或者甚至在服務器會話中使用不透明的令牌 – pedrofb