http/https 數據加密傳輸的一些簡要思考

 

網絡環境,http/https 數據傳輸,有時候我們需要特別保證數據傳輸的安全性和私密性,爲了防止數據被串改和竊取,比較常見的做法,是採用https,按照ssl 協議進行加密傳輸,當然也有客戶端對請求的數據進行簽名,服務端對接收的數據進行驗籤,來達到保證數傳輸的準確性,除此之外,還有沒有其他的方案呢?

這就需要我們瞭解 非對稱加密的思想了  非對稱加密算法

基於非對稱加密的公私鑰, 客戶端可以用私鑰對傳輸的數據進行加密,服務端可以用私鑰對應的公鑰,進行解密,從而能達到要求。  JAVA實現RSA生成公私鑰/加解密/簽名驗籤 

當然在公私鑰加解密的過程中,也可以附加 簽名和驗籤,來進一步保證的傳輸數據的私密性、安全性和正確性,具體思路如下:

思路方案一:

   /** 私鑰加密-簽名  ——>  驗籤-公鑰解密
     * 客戶端操作:
     *
     * 原串:{"aa":1}
     *
     * 私鑰加密 {"context":"aaaxxx"}   aaaxxx爲 {"aa":1} 的密文
     *
     * 簽名並拼裝請求數據  {"context":"aaaxxx","signData":"xxyy"}   xxyy爲 對 {"context":"aaaxxx"} 的簽名
     *
     * 服務端操作:
     *
     * 接收參數數據:{"context":"aaaxxx","signData":"xxyy"}
     *
     * 驗籤  true
     *
     * 公鑰解密  aaaxxx ——> {"aa":1}
     *
     * 執行業務
     *
     */

思路方案二:

   /** 簽名-私鑰加密  ——> 公鑰解密-驗籤
     *
     * 客戶端:
     *
     * 原串:{"aa":1}
     *
     * 簽名 {"aa":1,"signData":"xxyy"}
     *
     * 私鑰加密  aaaxxx
     *
     *
     *
     * 服務端:
     *
     * 接收的密文: aaaxxx
     *
     * 公鑰解密 : {"aa":1,"signData":"xxyy"}
     *
     * 驗籤 true
     *
     * 執行業務
     */

方案一和方案二隻是加解密和簽名的順序不一樣,功效上差別不大,相較於方案二,方案一額外增加了非業務字段key:contex,不算太可取,個人更傾向於方案二。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章