https://mp.weixin.qq.com/s/-Jb-_PpbEN5HYpueUqtxzA
網(wǎng)絡(luò)傳輸安全主要需要保證兩部分:
1.客戶端上傳信息即使被截獲也不能被別人知道:例如:登錄密碼。
2.服務(wù)端下發(fā)的信息,即使被截獲也不能被別人知道。例如:用戶信息。
保證客戶端上傳信息的安全:
? ? ? 客戶端傳輸重要的信息,例如銀行卡號,用戶名密碼給服務(wù)端時。為防止信息截獲后信息泄露,可以使用RSA的加密算法。RSA加密算法是一種非對稱加密方式。因此我們只需要在客戶端把信息用公鑰加密后,傳遞給服務(wù)端即可。這樣任何人都不會知道信息,除非它知道私鑰。然而私鑰都保存在服務(wù)端,比較安全。
? ? ?服務(wù)端收到請求后,利用私鑰對信息進(jìn)行解密即可。這樣就不會出現(xiàn)信息泄露。
保證服務(wù)端下發(fā)信息的安全:
? 當(dāng)用戶要進(jìn)行登錄的時候,服務(wù)端對用戶名和密碼進(jìn)行驗證成功后。會下發(fā)一個token給客戶端。這個token肯定要進(jìn)行加密,如果我們采用對稱加密的話。那么客戶端也必須知道對稱秘鑰才可以進(jìn)行解密。那么用戶怎樣才能拿到對稱秘鑰呢?為了傳輸安全,我們可以用私鑰對對稱秘鑰進(jìn)行加密??蛻舳耸盏叫畔⒑?,利用公鑰對信息進(jìn)行解密,即可拿到對稱秘鑰,然后利用對稱秘鑰可以對token進(jìn)行解密。然后把token保存起來就可以使用了。每次發(fā)起請求的時候,用token進(jìn)行對稱加密后,再進(jìn)行訪問。
? ?服務(wù)端收到信息后利用對稱秘鑰對信息進(jìn)行比對,符合的話就就進(jìn)行相應(yīng)的數(shù)據(jù)返回。
//注意:
1.RSA的解密速度約等于AES解密數(shù)據(jù)的100倍,因此不是核心的信息我們采用AES加密即可。這樣可以提高新能。
2.對稱秘鑰可以采取在客戶端隨機(jī)生成的方式,非對稱秘鑰可以采取固定的方式。
3.登錄時的用戶名和密碼可以采取非對稱秘鑰進(jìn)行數(shù)據(jù)庫驗證,這樣沒有安全性問題。
4.普通的驗證可以采用token加時間來進(jìn)行有效驗證。如果時間相隔太長就讓重新登陸。