2013-03-19 146 views
6

我一直在閱讀JSON Web加密(JWE)規範,latest draft being 08,因爲我們正在考慮在我們的身份驗證服務器中支持JSON Web令牌(JWT)。驗證使用JSON Web Encryption(JWE)加密的安全令牌的頒發者?

使用它定義的非對稱加密方法,所述對稱密鑰(內容主密鑰)使用接收者的公鑰加密。這是有道理的,這樣只有收件人可以解密它,並且確保該標記是爲他們設計的。

通常我也希望看到一些證明是從(例如,使用發行者的私鑰創建的簽名,可以使用他們的公鑰進行驗證。但是,簽名似乎也是從內容主密鑰或接收方的公鑰中派生出來的,沒有提及發行者的私鑰。

沒有這一點,在我看來,像 - 只要該預期被稱爲令牌的格式 - 任何人誰擁有接收者的公鑰(即人)可能會產生一個有效的令牌;不只是一個可信任的認證服務器

我不是密碼學專家(遠非如此),所以我敢肯定,我在這裏失去了一些東西。接收者如何驗證非對稱加密的令牌來自可信發行者?

鑑於JSON網絡簽名(JWS)規範定義使用發行人的私鑰,並可以與他們的公共密鑰驗證簽名,我想知道這個想法是否就是JWE令牌的有效載荷應成爲JWS令牌?

回答

4

JWT當然允許嵌套有效載荷。實際上,在規範中有specific reference,其中cty(content-type)標頭參數可以設置爲JWT,以指示有效負載實際上是另一個JWT。

所以,你最有可能創造一個JWE並在JWS將它包裝,簽署了您的私鑰。這似乎也是JOSE郵件列表上的this thread的結論(或至少一個解決方案)。減少有效負載大小還有另一個related thread。一般來說,郵件列表可能值得關注,因爲它是規範背後的人們聚在一起的地方。

+1

很酷,感謝您的參考。在對規範進行更仔細的重新閱讀時,第10節似乎也涵蓋了這一點,並且還提供了一些其他指導:「雖然語法上,嵌套JWT的簽名和加密操作可以按任何順序應用,但通常發件人應該簽署消息並且然後對結果進行加密(從而對簽名進行加密),從而防止簽名被剝離的攻擊,僅留下加密的消息,併爲簽名者提供隱私。此外,加密文本的簽名在許多司法管轄區不被視爲有效。 「 – 2013-03-20 13:49:35

+0

是的,我想這是有道理的,因爲加密的消息本身通過GCM或加密然後HMAC方案完整性保護。這也與Mike Jonessuggested在郵件列表中相反。在實現這些東西的時候總會有很大的空間:)。 – 2013-03-20 14:35:17

+0

我需要解密JWE並在JAVA中提取聲明集。有沒有這樣的圖書館? – user243655 2013-06-04 06:43:54