基於http協議的加密傳輸方案

2021-09-25 16:05:06 字數 2092 閱讀 2709

不談https只談http

1、敏感資訊的不可見性

使用http協議傳輸資料很容易被抓包監聽傳輸內容,如果這些資料中存在敏感資訊的話,風險太大了。因此我們需要對我們的傳輸資料進行一定的加密處理,即使資料被預期接收方之外的其它不法分子攔截,也無法輕易的破譯此次請求的傳輸內容!最簡單的方案就是對傳輸資料使用base64方法轉碼,使得資料具備一定的不可讀性。當然啦,這種方案實際上是不可取的,因為base64方案太容易被識別然後解密了。比較常見的做法是,傳送方和接收方彼此約定金鑰,**傳送方傳送時用金鑰對資料加密,接收方用金鑰對資料解密。**比如aes128加密演算法?但是aes128加密也存在侷限性,需要定期維護。就算你認為你這方的內部人員是可信的,你也無法無法保證對方的金鑰不會洩漏吧。當然聰明的你可能會說,那我就使用非對稱加密演算法,比如rsa好了。好像是沒啥問題?但是如果資料量比較大的話,rsa加密方法對伺服器的壓力也是很大的。所以本次結合了aes和rsa來實現我們的資料傳輸。

2、防止資料被篡改

用簽名!用簽名!用簽名!重要的事情說三遍?例如:當資料被封裝好後,我們可以用md5演算法計算出待傳輸資料摘要字串作為簽名。當伺服器接受到資料後,同樣使用md5對資料做摘要,同請求報文中的簽名作比較,若不一致則說明該http請求資料已被篡改。但僅僅使用md5對資料作摘要就夠了嗎?萬一攻擊方發現了資料簽名是用md5做的,攻擊方只需要對已篡改的資料再做一次md5,同時更新請求中的簽名即可。因此如何生成可靠的簽名也需要我們仔細的斟酌。有幾點我覺得是需要注意的:**1、**無法輕易的根據簽名推反推出當前簽名所採用的演算法;**2、**簽名演算法的複雜性、可靠性;**3、**不要直接對傳輸資料作簽名,可以先對請求資料作摘要,再使用加密演算法生成簽名,既可以提公升效率也在一定程度上提高了安全性。

3、http請求的真實性

1.生成簽名:將傳輸物件轉換成json字串jsonstr -> 使用md5對json字串做摘要處理生成md5摘要 -> 使用rsa公鑰對md5資料做加密生成簽名signature(對進行md5摘要處理過的jsonstr再進行rsa加密)

2.加密請求報文:動態生成乙個aes金鑰aeskey->使用aes金鑰對jsonstr加密生成bodystr

3.加密aes金鑰:使用base64工具將金鑰aeskey轉碼為金鑰字串金鑰aeskeystr -> 使用rsa公鑰對aeskeystr加密生成aeskeysecret字串

構建http post請求

1.構造http post請求物件 -> 將簽名signature放到http請求頭的authentication中 ->將aeskeysecret放到http請求頭中的secuitrykey中 -> 將當前時間timestr放入到http請求頭的timestamp中 ->將加密生成bodystr放到http的body中。(將所有加密好的資料按照httppost請求方式放到應該放的位置上)

接收方:

1.請求真實性校驗:從http請求頭timestamp中獲取時間戳timestr,校驗timestr距離伺服器當前時間是否超過約定的時間,如果超過,則說明請求不真實,拒絕訪問。

2.獲取aeskey:從http請求頭securitykey中獲取aeskeysecret字串 -> 使用rsa金鑰對aeskeysecret做解密操作獲取aeskey

3.獲取bodystr:從httpbody中獲取請求報文主題httpbody ->使用aeskey對httpbody做解密操作取得bodystr

4.驗籤:使用md5摘要演算法對bodystr做處理生成摘要字串md5str ->獲取http請求頭authentication中的signature字串 -> 使用rsa金鑰對signature字串做解密操作獲取rsadecryptstr字串 -> 比較md5str和rsadecryptstr是否一致,如果一致則驗籤通過

業務處理:業務處理 -> 使用aeskey對返回結果做加密處理

處理http請求返回結果:接收請求返回結果 -> 使用aeskey解密返回結果

加密傳輸SSL協議3 非對稱加密

困死了,這裡對非對稱加密體系開個頭,具體的實驗明天寫 為了解決對稱加密中金鑰的傳輸的問題,一些天才的數學家就提出了非對稱式的加密體系,也稱為公鑰加密體系。加密和解密的金鑰是不同的。一把稱為公鑰,一把稱為私鑰。比如,甲 乙 丙三個人要給丁傳送資訊,但是他們都不想讓另外的兩個人知道資訊的內容。首先丁要散...

加密傳輸SSL協議6 驗證公鑰

如上圖所示,我怎麼能確定我手裡的公鑰就是我心中的接收方的公鑰呢?怎麼防止被釣魚呢?解決的辦法就是引入乙個第三方,乙個權威機構,乙個我們都相信的機構。顯然,這不是乙個用技術所能解決的問題,很好的解決辦法就是建立乙個中介,我們所有的人都相信這個中介,中介對接收方的公鑰的合法性進行認證,在接收方的公鑰上簽...

加密傳輸SSL協議1 OpenSSL的安裝

終於在自己不斷的奮鬥之後,來到科大的一波考試過去了,但是為了不使自己過於放鬆,回顧一下之前的東西,做一下筆記。所以新開乙個專題筆記 當然支援ssl協議的軟體庫很多,但是推薦一款開源的openssl,因為安全軟體嘛,你的安全要放在桌面上,讓大家看的見,不能有隱藏的漏洞。正式開始 講解實驗的環境 vmw...