我是密碼學的新手,我想將https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-10實施到我的 spring-boot 應用程式(來自客戶端的要求)。客戶要求我實作一個像這樣的標題,
Authorization: Signature keyId="Test",algorithm="rsa-sha256",
signature="SjWJWbWN7i0wzBvtPl8rbASWz5xQW6mcJmn ibttBqtifLN7Sazz
6m79cNfwwb8DMJ5cou1s7uEGKKCs FLEEaDV5lp7q25WqS lavg7T8hc0GppauB
6hbgEKTwblDHYGEtbGmtdHgVCk9SuS13F0hZ8FD0k/5OxEPXe5WozsbM="
我不知道基于此規范的身份驗證簽名生成。任何人都可以幫助我以簡單的方式理解這些術語
- 它的 KeyId 和用法是什么?
- 什么是簽名值以及如何生成它?
我不知道幫助我理解這一點
uj5u.com熱心網友回復:
您在這里看到的是另一層保護,以防有人破壞 TLS。檔案說明它是這樣的:
對于高安全性事務,在 HTTP 標頭上有一個額外的簽名允許客戶端確保即使傳輸通道已被破壞,訊息的內容也沒有被破壞。
因此,您真正想要做的是使用某種訊息身份驗證代碼 (MAC),這樣即使主動攻擊者有能力操縱發送的訊息,MAC 也不會匹配,整個訊息將被服務器拒絕。
我已經瀏覽了檔案,實作這些東西并不是一件小事。但看起來已經存在可以幫助您實作這一目標的庫。第一次谷歌點擊:
- https://github.com/tomitribe/http-signatures-java
- https://github.com/joyent/java-http-signature
關于keyId:
該
keyId欄位是一個不透明的字串,服務器可以使用它來查找驗證簽名所需的組件。它可以是 SSH 密鑰指紋、機器可讀密鑰資料的 URL、LDAP DN 等。密鑰的管理和分配keyId超出了本檔案的范圍。
簡而言之 - 你決定它會是什么。它必須是允許您識別主題并首先能夠驗證簽名的東西。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/357708.html
上一篇:@code塊中的代碼是否已編譯并通過瀏覽器除錯可見?
下一篇:nuxt/auth如何真正安全?
