複製鏈接
請複製以下鏈接發送給好友

安全數據傳輸

鎖定
安全數據傳輸是由易衞峯發明,適用於各種網絡協議數據傳輸加密等。
中文名
安全數據傳輸
外文名
Secure data transmission
版本歷史
Version: 1.0 Date: 2010/9/18
作    者
易衞峯
適應領域
各種網絡協議數據傳輸加密等

安全數據傳輸通用方案

安全數據傳輸 安全數據傳輸
目的:
使數據安全保密傳輸,例如防止明文數據傳輸時,被黑客截獲,所帶來的安全隱患。
適應領域:
適合各種網絡協議數據傳輸加密(如身份認證,交易接口,數據加密等)各種網絡協議(如http, ftp, smtp等)。尤其適合使用在互聯網用户登錄認證交易接口
現階段常用的方案:
  1. 使用ssh加密
  2. 建立傳輸隧道
優點:
實現簡潔,基於當前傳輸協議數據安全傳輸。不增加任何端口,所以也不要修改當前的防火牆規則。
缺點:
增加網絡傳輸量,系統客户端和服務端的開銷,但很幸運的是開銷很小,也是任何一種安全措施不可避免的問題。

安全數據傳輸身份認證實現機制

1. 客户端請求動態密鑰(DynamicKey),客户端向服務器端請求動態密鑰(DKey)。服務器端生成動態密鑰發送給客户端。動態密鑰內容格式根據需要自己設計,例如雙方支持的加密算法(MD5)、隨機碼和密鑰有效期等,並且在服務器保存該動態密鑰保持形式可以是Session(推薦)、數據庫或文件等,例如動態密鑰格式為(MD5 + 123456 + 2010/9/23/12:00:00),最簡單的形式只有一個隨機碼
2. 客户端提交數據, 客户端獲得動態密鑰後,用動態密鑰中的加密算法加密需要發送到服務器的數據(如:賬號和密碼)和隨機碼客户端把加密好的數據發送給服務器:
3. 服務器驗證應答, 服務器把收到的加密好的客户端數據和服務器端用動態密鑰中的加密算法對服務器端數據(如保證在數據庫的密碼)和隨機碼進行加密,生成加密好的服務器端數據(Server encrypted data)進行比較,相等則認證成功, 服務器刪除動態密鑰(DKey)。一個完整的數據安全傳輸結束。

安全數據傳輸應用實例

例如WEB用户登錄認證步驟:客户端瀏覽器用ajax向服務器端WEB Server發生請求動態密鑰(DKey), WEB Server 生成DKey(隨機碼)發送給客户端,客户端用特殊的加密方法加密輸入的用户名和隨機碼得到加密信息Client_enc_name,用MD5加密輸入的用户密碼和隨機碼得到加密信息Client_enc_pwd,然後提交給服務器驗證。 服務器用特殊的解密方法解密出用户名input_name與數據庫中的用户名db_name比較;用MD5加密數碼數據庫中的用户密碼db_password得到加密信息Server_enc_pwd 與客户端提交的得到加密信息Client_enc_pwd比較,比較相等則登錄成功,同時刪除動態密鑰(DKey)
注:這裏用户名也可以不加密直接明文傳輸,但最好在客户端用特殊的加密方法加密,在服務器端用特殊的解密方法解密; 而用户密碼一定要加密而且最好用MD5之類不可逆轉加密方法。
Client: Request Dynamic_key
Server: Reply and Save Dynamic_key (random_num)
Client:
Client_enc_name = myencode (input_name + random_num)
Client_enc_pwd = md5 (input_password + random_num)
Server:
Input_name = mydecode (Client_enc_name + random_num)
Server_enc_pwd = md5 (db_password + random_num)
If (Input_name == db_name and Client_enc_pwd== Server_enc_pwd)
Returntrue
Else
Returnfalse
EndIf
Delete Dynamic_key
注: 每種方法都有各自的優缺點,有興趣可以參考其他方式,例如Kerberos, X.509. 本人從事多年WEB開發、Unix/Linux系統開發及用户身份認證,希望能和大家交流探討。