2016-12-27 273 views
1

約「與RSA加密JSON網絡令牌(JWT)」雨雲JOSE JWT加密與RSA,私鑰和公鑰

名爲示例代碼應用了概念參考文獻見有此疑惑:http://connect2id.com/products/nimbus-jose-jwt/examples/jwt-with-rsa-encryption

示例代碼提供基於使用公鑰的RSAEncrypter類,以及使用相反的私鑰的RSADencrypter類。

從更實際的角度來看,我無法理解爲什麼JSON Web Token是以這種方式生成的,因爲加密信息通常會使用JWE格式發送到客戶端。同時,客戶端從共享源(如數字證書存儲或JWK存儲)提取公鑰,然後解密來自JWE數據的信息。

我的問題:爲什麼客戶端使用私鑰?爲什麼不使用Encrypter的私鑰和Decrypter類的公鑰呢?

有關此RSA示例代碼的概念方面的說明是受歡迎的。

回答

3

的加密如示例中所述的目標,是保密性:確保數據僅由預期的接收器

在公開密鑰加密的一個基本的安全性方面是,確保數據的被加密讀預期的收件人,而不是一些其他人,這可能會損害數據的機密性。

爲各方之間的身份驗證頒發的JSON Web令牌未加密,使用私鑰進行數字簽名。另一方可以用公開的公鑰驗證真實性和完整性。但內容不隱藏。觀察員可以閱讀該消息但不能對其進行修改。

使用收件人的公鑰完成加密。只有匹配私鑰的所有者才能夠解密JWT的內容。由於用RSa密鑰加密的數據的大小限制,本例中生成了AES對稱加密密鑰。該消息將使用AES密鑰進行加密,並且使用RSA公鑰對該密鑰進行加密並嵌入到JWT中。收件人將使用RSA專用密鑰解密AES密鑰

+0

感謝您澄清有關RSA密碼主體的概念視圖,即使其與JWE一起實施會帶來一些挑戰。安全地分發和存儲在RESTful對等通信的最終解密步驟中使用的私鑰。 –

+0

我可以得到整個過程的Java示例代碼嗎? – basari66

+0

查看網站的示例頁面:https://connect2id.com/products/nimbus-jose-jwt/examples – pedrofb